diff --git a/licenses/BUSL-1.1 b/licenses/BUSL-1.1 new file mode 100644 index 0000000000..95b0d28738 --- /dev/null +++ b/licenses/BUSL-1.1 @@ -0,0 +1,179 @@ +Business Source License 1.1 + +Parameters + +Licensor: Lamco Development LLC + +Licensed Work: lamco-rdp-server + The Licensed Work is (c) 2025-2026 Lamco Development LLC. + + The Licensed Work is the lamco-rdp-server desktop + remote-desktop-sharing product. The Licensed Work does + not include, and this License does not grant any rights + in, the lamco-qemu-rdp hypervisor console or any other + hypervisor, virtual-desktop, or console product, which + are licensed separately. + +Additional Use Grant: You may make production use of the Licensed Work only + if both of the following are true: + + (i) Your use does not include a Competitive Use (as + defined below); and + + (ii) at least one of the following classes applies to + Your use: + + 1. You are a non-profit organization. + + 2. Your use is limited to a single server instance. A + "server instance" means one running invocation of the + Licensed Work serving remote-desktop sessions, + counted once per operating-system environment in + which it runs, whether that environment is a physical + host, a virtual machine, or a container. Two or more + concurrently running invocations, or invocations + across two or more such environments, are two or more + server instances. + + 3. Your use is for non-commercial educational or + research purposes, including use by an educational + institution to provide remote access to its students, + faculty, or researchers. + + 4. Your use is of a Community Edition of the Licensed + Work. A "Community Edition" is a binary distribution + of the lamco-rdp-server desktop product that is + published by the Licensor and designated as + "Community Edition" in or with that distribution, + including in its embedded package metadata, in the + documentation accompanying it, or in a list of + Community Edition distributions published by the + Licensor. This class applies only to such + desktop-product distributions and to no other product; + no distribution of any hypervisor, console, or + virtual-desktop product is a Community Edition under + this License, regardless of how its documentation + describes it. + + If Your use does not satisfy both (i) and (ii) above, You + must purchase a commercial license from the Licensor. + Visit https://lamco.ai for pricing, or contact + office@lamco.io. + + A "Competitive Use" means using the Licensed Work to + create, offer, host, or distribute a Competitive + Product. A "Competitive Product" is any product or + service made available to third parties that provides + RDP server, remote desktop, virtual desktop + infrastructure (VDI), hypervisor console access, or + remote access functionality where such functionality is + substantially derived from the Licensed Work. + + The following are not Competitive Uses: + + (a) Using the Licensed Work to provide managed + services, cloud hosting, or IT infrastructure + where the Licensed Work is a tool used in + delivering those services rather than the basis + of a competing product. + (b) Using the Licensed Work for internal purposes + within Your organization, including use by Your + employees, contractors, and affiliates under + common control. + (c) Using the Licensed Work for non-commercial + education or research. + (d) Redistributing the Licensed Work in unmodified + source form with this License intact. + (e) Redistributing unmodified binary distributions of + the Licensed Work published by the Licensor, with + this License intact. + +Change Date: 2029-06-01 + +Change License: Apache License 2.0 + + Standing policy: each released version carries its own + Change Date approximately three years after that + version's first publication, so that on any version's + Change Date only that three-year-old version converts. + +Notice + +The Business Source License (this document, or the "License") is not an Open +Source license. However, the Licensed Work will eventually be made available +under an Open Source License, as stated in this License. + +For information about alternative licensing arrangements for the Licensed Work, +please visit https://lamco.ai or contact office@lamco.io. + +----------------------------------------------------------------------------- + +License text copyright (c) 2017 MariaDB Corporation Ab, All Rights Reserved. +"Business Source License" is a trademark of MariaDB Corporation Ab. + +Terms + +The Licensor hereby grants you the right to copy, modify, create derivative +works, redistribute, and make non-production use of the Licensed Work. The +Licensor may make an Additional Use Grant, above, permitting limited +production use. + +Effective on the Change Date, or the fourth anniversary of the first publicly +available distribution of a specific version of the Licensed Work under this +License, whichever comes first, the Licensor hereby grants you rights under +the terms of the Change License, and the rights granted in the paragraph +above terminate. + +If your use of the Licensed Work does not comply with the requirements +currently in effect as described in this License, you must purchase a +commercial license from the Licensor, its affiliated entities, or authorized +resellers, or you must refrain from using the Licensed Work. + +All copies of the original and modified Licensed Work, and derivative works +of the Licensed Work, are subject to this License. This License applies +separately for each version of the Licensed Work and the Change Date may vary +for each version of the Licensed Work released by Licensor. + +You must conspicuously display this License on each original or modified copy +of the Licensed Work. If you receive the Licensed Work in original or +modified form from a third party, the terms and conditions set forth in this +License apply to your use of that work. + +Any use of the Licensed Work in violation of this License will automatically +terminate your rights under this License for the current and all other +versions of the Licensed Work. + +This License does not grant you any right in any trademark or logo of +Licensor or its affiliates (provided that you may use a trademark or logo of +Licensor as expressly required by this License). + +TO THE EXTENT PERMITTED BY APPLICABLE LAW, THE LICENSED WORK IS PROVIDED ON +AN "AS IS" BASIS. LICENSOR HEREBY DISCLAIMS ALL WARRANTIES AND CONDITIONS, +EXPRESS OR IMPLIED, INCLUDING (WITHOUT LIMITATION) WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, NON-INFRINGEMENT, AND +TITLE. + +MariaDB hereby grants you permission to use this License's text to license +your works, and to refer to it using the trademark "Business Source License", +as long as you comply with the Covenants of Licensor below. + +Covenants of Licensor + +In consideration of the right to use this License's text and the "Business +Source License" name and trademark, Licensor covenants to MariaDB, and to all +other recipients of the licensed work to be provided by Licensor: + +1. To specify as the Change License the GPL Version 2.0 or any later version, + or a license that is compatible with GPL Version 2.0 or a later version, + where "compatible" means that software provided under the Change License can + be included in a program with software provided under GPL Version 2.0 or a + later version. Licensor may specify additional Change Licenses without + limitation. + +2. To either: (a) specify an additional grant of rights to use that does not + impose any additional restriction on the right granted in this License, as + the Additional Use Grant; or (b) insert the text "None". + +3. To specify a Change Date. + +4. Not to modify this License in any other way. diff --git a/net-misc/lamco-rdp-server/Manifest b/net-misc/lamco-rdp-server/Manifest new file mode 100644 index 0000000000..e02a60505c --- /dev/null +++ b/net-misc/lamco-rdp-server/Manifest @@ -0,0 +1 @@ +DIST lamco-rdp-server-1.4.4.tar.xz 85348044 BLAKE2B 456d34b0ce8e1ed22826ddc28add7288c66cd1a29b243f2471b06ed2f6952d77f818eacd526de00dbd33e1c48020eade6e3299d476f8bd4401b174b21071bb3a SHA512 93f3083786850420367c229feca3267576add14db80cad06090abe323c87824cc6a9c4ec2476d518495727aa16f8b67134f1f8fe5781858eaef16113daa4b5fa diff --git a/net-misc/lamco-rdp-server/files/cros-libva-vp9-compat.patch b/net-misc/lamco-rdp-server/files/cros-libva-vp9-compat.patch new file mode 100644 index 0000000000..0aca14930f --- /dev/null +++ b/net-misc/lamco-rdp-server/files/cros-libva-vp9-compat.patch @@ -0,0 +1,12 @@ +--- a/vendor/cros-libva/src/buffer/vp9.rs ++++ b/vendor/cros-libva/src/buffer/vp9.rs +@@ -434,7 +434,8 @@ + skip_frame_flag, + number_skip_frames, + skip_frames_size, +- va_reserved: Default::default(), ++ va_reserved: Default::default(), ++ ..Default::default() + })) + } + diff --git a/net-misc/lamco-rdp-server/lamco-rdp-server-1.4.4.ebuild b/net-misc/lamco-rdp-server/lamco-rdp-server-1.4.4.ebuild new file mode 100644 index 0000000000..722b63d458 --- /dev/null +++ b/net-misc/lamco-rdp-server/lamco-rdp-server-1.4.4.ebuild @@ -0,0 +1,103 @@ +# Copyright 2026 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +RUST_MIN_VER="1.89.0" + +inherit cargo desktop systemd xdg + +DESCRIPTION="Native Wayland RDP server for GNOME, KDE, Sway and Hyprland (H.264, VA-API)" +HOMEPAGE="https://lamco.ai/ https://github.com/lamco-admin/lamco-rdp-server" +SRC_URI="https://github.com/lamco-admin/${PN}/releases/download/v${PV}/${P}.tar.xz" + +# Business Source License 1.1 (source-available; converts to Apache-2.0 on the +# change date). The release tarball vendors every crate under vendor/ with a +# .cargo/config.toml, so the build is fully offline and CRATES is unused. +LICENSE="BUSL-1.1" +SLOT="0" +KEYWORDS="~amd64 ~arm64" +IUSE="+gui +pam +vaapi" + +RDEPEND=" + dev-libs/libei + media-video/pipewire + sys-apps/dbus + sys-apps/xdg-desktop-portal + sys-fs/fuse:3 + x11-libs/libxkbcommon + pam? ( sys-libs/pam ) + vaapi? ( media-libs/libva ) + gui? ( media-libs/vulkan-loader ) +" +DEPEND="${RDEPEND}" +BDEPEND=" + llvm-core/clang + dev-build/cmake + dev-lang/nasm + virtual/pkgconfig +" +# Soft runtime helpers: Cisco OpenH264 for software H.264, wl-clipboard for the +# Linux->Windows clipboard path. +PDEPEND=" + media-libs/openh264 + gui-apps/wl-clipboard +" + +# libva >= 2.22 added fields to VAEncPictureParameterBufferVP9 that the vendored +# cros-libva 0.0.13 does not know about; add ..Default::default() so it compiles. +PATCHES=( "${FILESDIR}/cros-libva-vp9-compat.patch" ) + +src_unpack() { + # The tarball already carries vendor/ and .cargo/config.toml, so use a plain + # unpack rather than cargo_src_unpack (which is for CRATES-fetched builds). + default +} + +src_prepare() { + default + # The patch above edits a vendored crate; clear its recorded checksum so the + # --frozen/--offline cargo build does not reject the modified file. + sed -i 's/"files":{[^}]*}/"files":{}/' vendor/cros-libva/.cargo-checksum.json || die +} + +src_compile() { + local features="h264,wayland,libei,wl-clipboard" + use gui && features+=",gui" + use pam && features+=",pam-auth" + use vaapi && features+=",vaapi" + + # rust-lld (Rust >= 1.93 default) can't link the bundled native C libraries + # (aws-lc-sys, ring, opus); force the system cc linker. Thin LTO + 4 codegen + # units keep peak memory near 4GB (fat LTO peaks 8-10GB over ~900 crates). + CARGO_HOME="${T}/cargo" \ + RUSTFLAGS="-C linker=cc ${RUSTFLAGS}" \ + CARGO_PROFILE_RELEASE_LTO=thin \ + CARGO_PROFILE_RELEASE_CODEGEN_UNITS=4 \ + cargo build --release --frozen --offline \ + --no-default-features --features "${features}" || die "cargo build failed" +} + +src_install() { + dobin target/release/lamco-rdp-server + use gui && dobin target/release/lamco-rdp-server-gui + + systemd_douserunit packaging/systemd/lamco-rdp-server.service + + insinto /usr/share/dbus-1/services + doins packaging/dbus/io.lamco.RdpServer.service + insinto /etc/dbus-1/system.d + doins packaging/dbus/io.lamco.RdpServer.System.conf + insinto /usr/share/polkit-1/actions + doins packaging/polkit/io.lamco.RdpServer.policy + + domenu data/io.lamco.rdp-server.desktop + insinto /usr/share/metainfo + doins data/io.lamco.rdp-server.metainfo.xml + + doicon -s scalable data/icons/io.lamco.rdp-server.svg + local s + for s in 32 48 64 128 256; do + newicon -s "${s}" "data/icons/io.lamco.rdp-server-${s}.png" io.lamco.rdp-server.png + done +} diff --git a/net-misc/lamco-rdp-server/metadata.xml b/net-misc/lamco-rdp-server/metadata.xml new file mode 100644 index 0000000000..b09a65fed2 --- /dev/null +++ b/net-misc/lamco-rdp-server/metadata.xml @@ -0,0 +1,25 @@ + + + + + greg@lamco.io + Greg Lamberson + + + lamco-rdp-server is a native Wayland RDP server built on IronRDP. It uses + xdg-desktop-portal for screen capture and input injection and works with + any Wayland compositor that supports the RemoteDesktop and ScreenCast + portals (GNOME, KDE, Sway, Hyprland). Features H.264 (AVC420/AVC444) + encoding with optional VA-API acceleration, a configuration GUI, + clipboard, and audio streaming. Distributed under BUSL-1.1. + + + Build the graphical configuration tool (pulls in wgpu/Vulkan) + Enable PAM authentication + Enable VA-API hardware-accelerated H.264 encoding + + + https://github.com/lamco-admin/lamco-rdp-server/issues + lamco-admin/lamco-rdp-server + +