Skip to content

Commit 6720046

Browse files
committed
Adding build systems for all platforms. Work in Progress
1 parent d5bc5d5 commit 6720046

38 files changed

+1020
-1
lines changed

building/linux/.gitignore

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
udsactor-*[1-9].*.spec
2+
*-stamp
3+
builders/**/output
4+
builders/**/build.stamp
5+
6+
debian/udsactor/
7+
debian/udsactor-unmanaged/
8+
debian/files
9+
debian/*.debhelper
10+
debian/*.substvars
11+
__pycache__/
12+
output/
13+
package/

building/linux/Makefile

Lines changed: 86 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,86 @@
1+
#!/usr/bin/make -f
2+
# -*- makefile -*-
3+
4+
.PHONY: all install-udsclient install-udsclient-unmanaged install-udsclient-common clean
5+
6+
VERSION := $(shell [ -f ../../../VERSION ] && cat ../../../VERSION || echo "devel")
7+
RELEASE := 1
8+
9+
# Distro to build for (Debian12, Fedora41, openSUSE15)
10+
DISTRO ?= Debian12
11+
DESTDIR ?= ./package/$(DISTRO)
12+
13+
# Output directory from rustbuilder
14+
OUTPUTDIR := builders/$(DISTRO)/output
15+
16+
# Install targets
17+
BINDIR := $(DESTDIR)/usr/bin
18+
SBINDIR := $(DESTDIR)/usr/sbin
19+
APPSDIR := $(DESTDIR)/usr/share/applications
20+
POLKITDIR := $(DESTDIR)/usr/share/polkit-1/actions
21+
SYSTEMDDIR := $(DESTDIR)/etc/systemd/system
22+
AUTOSTARTDIR := $(DESTDIR)/etc/xdg/autostart
23+
ICONDIR := $(DESTDIR)/usr/share/udsclient
24+
25+
# No all rule, because the build depends on the variant (managed/unmanaged), etc..
26+
27+
help:
28+
@echo "Usage:"
29+
@echo " make install-udsclient DISTRO=Debian12"
30+
@echo " make install-udsclient-unmanaged DISTRO=Debian12"
31+
@echo " make clean DISTRO=Debian12"
32+
33+
34+
# === Build binaries using rustbuilder.py ===
35+
$(OUTPUTDIR)/udsclient-client: rustbuilder.py
36+
python3 rustbuilder.py $(DISTRO)
37+
@test -f $(OUTPUTDIR)/udsclient-client || (echo "Missing udsclient-client binary" && exit 1)
38+
39+
40+
# === Common installation logic ===
41+
install-udsclient-common: $(OUTPUTDIR)/udsclient-client
42+
mkdir -p $(BINDIR) $(SBINDIR) $(APPSDIR) $(POLKITDIR) $(AUTOSTARTDIR) $(ICONDIR)
43+
44+
# Install shared Rust binaries
45+
cp $(OUTPUTDIR)/udsclient-client $(BINDIR)/
46+
cp $(OUTPUTDIR)/udsclient-service $(SBINDIR)/
47+
cp $(OUTPUTDIR)/gui-helper $(BINDIR)/
48+
49+
# Install icon
50+
cp ../../assets/img/uds-icon.png $(ICONDIR)/
51+
52+
# Install PolicyKit
53+
cp policy/org.openuds.pkexec.udsclient_config.policy $(POLKITDIR)/
54+
55+
# Install desktop entries
56+
cp desktop/udsclient_config.desktop $(APPSDIR)/
57+
cp desktop/udsclient_client.desktop $(AUTOSTARTDIR)/
58+
59+
60+
# Install systemd service for RH-based distros
61+
ifneq (,$(filter $(DISTRO),Fedora41 openSUSE15))
62+
mkdir -p $(SYSTEMDDIR)
63+
cp debian/udsclient.service $(SYSTEMDDIR)/
64+
endif
65+
66+
# Permissions
67+
chmod 755 $(BINDIR)/udsclient-client $(BINDIR)/gui-helper
68+
chmod 755 $(SBINDIR)/udsclient-service
69+
chmod 644 $(POLKITDIR)/org.openuds.pkexec.udsclient_config.policy
70+
chmod 644 $(ICONDIR)/uds-icon.png
71+
72+
# === Install managed variant ===
73+
install-udsclient: install-udsclient-common
74+
# Install managed config
75+
cp $(OUTPUTDIR)/udsclient-config $(SBINDIR)/udsclient-config
76+
77+
78+
# === Install unmanaged variant ===
79+
install-udsclient-unmanaged: install-udsclient-common
80+
# Install unmanaged config
81+
cp $(OUTPUTDIR)/udsclient-unmanaged-config $(SBINDIR)/udsclient-config
82+
83+
84+
# === Clean build artifacts ===
85+
clean:
86+
rm -rf $(DESTDIR)

building/linux/build-packages.sh

Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
#!/bin/bash
2+
3+
VERSION=$( [ -f ../../../VERSION ] && cat ../../../VERSION || echo "devel" )
4+
RELEASE=1
5+
6+
top=$(pwd)
7+
8+
# Debian based
9+
dpkg-buildpackage -b
10+
11+
for DISTRO in Fedora41 openSUSE15; do
12+
# managed an unmanaged
13+
for kind in managed unmanaged; do
14+
# convert distro for pkg name, "" if Fedora41, "suse" if openSUSE15
15+
case "$DISTRO" in
16+
Fedora41)
17+
PKG_DISTRO=""
18+
;;
19+
openSUSE15)
20+
PKG_DISTRO="-suse"
21+
;;
22+
esac
23+
case "$kind" in
24+
managed)
25+
PKGNAME="udsactor"
26+
;;
27+
unmanaged)
28+
PKGNAME="udsactor-unmanaged"
29+
;;
30+
esac
31+
PKGNAME_BASE=${PKGNAME}${PKG_DISTRO}
32+
PKGNAME=${PKGNAME}${PKG_DISTRO}-${VERSION}.spec
33+
#
34+
# Generate spec file
35+
cat udsactor-template.spec | \
36+
sed -e "s/version 0.0.0/version ${VERSION}/g" \
37+
-e "s/release 1/release ${RELEASE}/g" \
38+
-e "s/DISTRO=rh/DISTRO=${DISTRO}/g" \
39+
-e "s/%define name PKGNAME/%define name ${PKGNAME_BASE}/g" \
40+
> ${PKGNAME}
41+
42+
43+
# Prepare RPM structure
44+
rm -rf rpm
45+
for folder in SOURCES BUILD RPMS SPECS SRPMS; do
46+
mkdir -p rpm/$folder
47+
done
48+
49+
# Build RPM
50+
rpmbuild -v -bb --clean --target x86_64 ${PKGNAME} 2>&1
51+
done
52+
done
53+
54+
# Sign RPMs
55+
rpm --addsign ../*.rpm
Lines changed: 102 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,102 @@
1+
FROM debian:bookworm
2+
3+
RUN apt-get update && apt-get install -y \
4+
curl build-essential pkg-config cmake libssl-dev libgl1-mesa-dev libglu1-mesa-dev \
5+
libxft-dev libxext-dev libxinerama-dev libxcursor-dev libxfixes-dev \
6+
libpango1.0-dev libglib2.0-dev libgio-2.0-dev \
7+
libcairo2-dev libasound2-dev libpulse-dev libclang-dev git \
8+
ninja-build cmake libturbojpeg0-dev libusb-1.0.0-dev \
9+
libavcodec-dev libavutil-dev libswscale-dev libavformat-dev libswresample-dev \
10+
libopenh264-dev libkrb5-dev libcups2-dev libfuse3-dev \
11+
&& rm -rf /var/lib/apt/lists/*
12+
13+
ENV FREERDP_ROOT="/usr/local"
14+
15+
WORKDIR /freerdp-build
16+
RUN git clone https://github.com/FreeRDP/FreeRDP.git
17+
WORKDIR /freerdp-build/FreeRDP
18+
RUN cmake -Bbuild -GNinja \
19+
-DCMAKE_BUILD_TYPE=Release \
20+
-DCMAKE_INSTALL_PREFIX=${FREERDP_ROOT} \
21+
-DWITH_CLIENT_COMMON=ON \
22+
-DWITH_X11=OFF \
23+
-DWITH_XKBFILE=OFF \
24+
-DWITH_XCURSOR=OFF \
25+
-DWITH_XEXT=OFF \
26+
-DWITH_XRANDR=OFF \
27+
-DWITH_XRENDER=OFF \
28+
-DWITH_XFIXES=OFF \
29+
-DWITH_WAYLAND=OFF \
30+
-DWITH_OPENGL=OFF \
31+
-DWITH_CAIRO=OFF \
32+
-DWITH_DIRECTFB=OFF \
33+
-DWITH_GDI=ON \
34+
-DWITH_INTERNAL_MD4=ON \
35+
-DWITH_INTERNAL_MD5=ON \
36+
-DWITH_INTERNAL_RC4=ON \
37+
-DWITH_SDL=OFF \
38+
-DWITH_SERVER=OFF \
39+
-DWITH_SHADOW=OFF \
40+
-DBUILD_TESTING=OFF \
41+
-DWITH_MANPAGES=OFF \
42+
-DWITH_CHANNELS=ON \
43+
-DWITH_CLIENT_CHANNELS=ON \
44+
-DWITH_RDPSND=ON \
45+
-DWITH_AUDIN=ON \
46+
-DWITH_PULSE=ON \
47+
-DWITH_ALSA=ON \
48+
-DWITH_DSP_FFMPEG=ON \
49+
-DWITH_CLIENT_SDL=OFF \
50+
-DWITH_LIBUSB=ON \
51+
-DWITH_URBDRC=ON \
52+
-DWITH_AAD=ON \
53+
-DWITH_WINPR_JSON=ON \
54+
-DWITH_CLIENT_WINDOWS=OFF \
55+
-DWITH_VERBOSE_WINPR_ASSERT=OFF \
56+
-DWITH_OPENH264=ON \
57+
-DWITH_GFX_H264=ON \
58+
-DWITH_RDPGFX=ON \
59+
-DWITH_DYNVC=ON \
60+
-DWITH_DEBUG_ALL=OFF \
61+
-DWITH_DEBUG_CAPABILITIES=OFF \
62+
-DWITH_DEBUG_CERTIFICATE=OFF \
63+
-DWITH_DEBUG_CHANNELS=OFF \
64+
-DWITH_DEBUG_CLIPRDR=OFF \
65+
-DWITH_DEBUG_CODECS=OFF \
66+
-DWITH_DEBUG_DVC=OFF \
67+
-DWITH_DEBUG_KBD=OFF \
68+
-DWITH_DEBUG_LICENSE=OFF \
69+
-DWITH_DEBUG_MUTEX=OFF \
70+
-DWITH_DEBUG_NEGO=OFF \
71+
-DWITH_DEBUG_NLA=OFF \
72+
-DWITH_DEBUG_NTLM=OFF \
73+
-DWITH_DEBUG_RAIL=OFF \
74+
-DWITH_DEBUG_RDP=OFF \
75+
-DWITH_DEBUG_RDPDR=OFF \
76+
-DWITH_DEBUG_RDPEI=OFF \
77+
-DWITH_DEBUG_RDPGFX=OFF \
78+
-DWITH_DEBUG_REDIR=OFF \
79+
-DWITH_DEBUG_RFX=OFF \
80+
-DWITH_DEBUG_RINGBUFFER=OFF \
81+
-DWITH_DEBUG_SCARD=OFF \
82+
-DWITH_DEBUG_SDL_EVENTS=OFF \
83+
-DWITH_DEBUG_SDL_KBD_EVENTS=OFF \
84+
-DWITH_DEBUG_SND=OFF \
85+
-DWITH_DEBUG_SVC=OFF \
86+
-DWITH_DEBUG_THREADS=OFF \
87+
-DWITH_DEBUG_TIMEZONE=OFF \
88+
-DWITH_DEBUG_TRANSPORT=OFF \
89+
-DWITH_DEBUG_TSG=OFF \
90+
-DWITH_DEBUG_URBDRC=OFF \
91+
-DWITH_DEBUG_WND=OFF \
92+
-DWITH_DEBUG_X11=OFF \
93+
-DWITH_DEBUG_X11_LOCAL_MOVESIZE=OFF \
94+
-DWITH_DEBUG_XV=OFF \
95+
&& cmake --build build --parallel \
96+
&& cmake --install build
97+
98+
99+
RUN curl https://sh.rustup.rs -sSf | sh -s -- -y
100+
ENV PATH="/root/.cargo/bin:$PATH"
101+
102+
WORKDIR /
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
FROM debian:trixie
2+
3+
RUN apt-get update && apt-get install -y \
4+
curl build-essential pkg-config cmake libssl-dev libgl1-mesa-dev libglu1-mesa-dev \
5+
libxft-dev libxext-dev libxinerama-dev libxcursor-dev libxfixes-dev \
6+
libpango1.0-dev libglib2.0-dev libgio-2.0-dev \
7+
libcairo2-dev freerdp3-dev libasound2-dev libpulse-dev libclang-dev \
8+
libavcodec-dev libavutil-dev libswscale-dev libavformat-dev libswresample-dev \
9+
libkrb5-dev libopenh264-dev libcups2-dev libfuse3-dev libusb-1.0.0-dev \
10+
&& rm -rf /var/lib/apt/lists/*
11+
12+
RUN curl https://sh.rustup.rs -sSf | sh -s -- -y
13+
ENV PATH="/root/.cargo/bin:$PATH"
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
FROM fedora:41
2+
3+
RUN dnf install -y \
4+
curl gcc make pkgconf-pkg-config cmake openssl-devel mesa-libGL-devel mesa-libGLU-devel \
5+
libXft-devel libXext-devel libXinerama-devel libXcursor-devel libXfixes-devel \
6+
pango-devel cairo-devel glib2-devel gcc-c++ libstdc++-devel libstdc++-static \
7+
&& dnf clean all
8+
9+
RUN curl https://sh.rustup.rs -sSf | sh -s -- -y
10+
ENV PATH="/root/.cargo/bin:$PATH"
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
FROM opensuse/leap:15.6
2+
3+
RUN zypper refresh && zypper install -y \
4+
curl gcc make pkgconf cmake libopenssl-devel \
5+
Mesa-libGL-devel Mesa-libGLU-devel \
6+
libXft-devel libXext-devel libXinerama-devel \
7+
libXcursor-devel libXfixes-devel \
8+
pango-devel cairo-devel glib2-devel \
9+
gcc-c++ libstdc++-devel \
10+
tar gzip bzip2 xz zip unzip \
11+
&& zypper clean
12+
13+
RUN curl https://sh.rustup.rs -sSf | sh -s -- -y
14+
ENV PATH="/root/.cargo/bin:$PATH"

building/linux/debian/changelog

Lines changed: 78 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,78 @@
1+
udsactor (5.0.0) stable; urgency=medium
2+
3+
* Heavy refactor to Rust implementation
4+
* Upgraded to 5.0.0 release
5+
6+
-- Adolfo Gómez García <agomez@virtualcable.es> Fri, 1 Jul 2025 15:00:00 +0200
7+
8+
udsactor (4.0.0) stable; urgency=medium
9+
10+
* Upgraded to 4.0.0 release
11+
12+
-- Adolfo Gómez García <agomez@virtualcable.es> Fri, 1 Jul 2022 15:00:00 +0200
13+
14+
udsactor (3.6.0) stable; urgency=medium
15+
16+
* Upgraded to 3.6.0 release
17+
18+
-- Adolfo Gómez García <agomez@virtualcable.es> Fri, 1 Jul 2022 14:00:00 +0200
19+
20+
udsactor (3.5.0) stable; urgency=medium
21+
22+
* Upgraded to 3.5.0 release
23+
24+
-- Adolfo Gómez García <agomez@virtualcable.es> Fri, 23 Oct 2020 8:00:00 +0200
25+
26+
udsactor (3.0.0) stable; urgency=medium
27+
28+
* Upgraded to 3.0.0 release
29+
30+
-- Adolfo Gómez García <agomez@virtualcable.es> Wed, 10 Jul 2019 9:24:10 +0200
31+
32+
udsactor (2.2.1) stable; urgency=medium
33+
34+
* Upgraded to 2.2.1 release
35+
36+
-- Adolfo Gómez García <agomez@virtualcable.es> Thu, 2 Oct 2018 12:44:12 +0200
37+
38+
udsactor (2.2.0) stable; urgency=medium
39+
40+
* Upgraded to 2.2.0 release
41+
42+
-- Adolfo Gómez García <agomez@virtualcable.es> Thu, 19 Oct 2017 16:44:12 +0200
43+
44+
udsactor (2.1.0) stable; urgency=medium
45+
46+
* Fixes for 2.1.0 release
47+
48+
-- Adolfo Gómez García <agomez@virtualcable.es> Tue, 19 Jan 2017 08:00:22 +0200
49+
50+
udsactor (2.0.0) stable; urgency=medium
51+
52+
* Upgrade for 2.0.0
53+
54+
-- Adolfo Gómez García <agomez@virtualcable.es> Tue, 01 Mar 2016 03:39:21 +0100
55+
56+
udsactor (1.9.1) stable; urgency=medium
57+
58+
* Upgrade for 1.9.1
59+
60+
-- Adolfo Gómez García <agomez@virtualcable.es> Tue, 01 Mar 2016 03:19:21 +0100
61+
62+
udsactor (1.9.0) stable; urgency=medium
63+
64+
* Upgrade for 1.9.0 (fixed package version)
65+
66+
-- Adolfo Gómez García <agomez@virtualcable.es> Tue, 05 May 2015 07:10:27 +0200
67+
68+
udsactor (1.7.5) stable; urgency=medium
69+
70+
* Upgrade for 1.7.5
71+
72+
-- Adolfo Gómez García <agomez@virtualcable.es> Thu, 23 Apr 2015 06:08:53 +0200
73+
74+
udsactor (1.7.0) stable; urgency=medium
75+
76+
* Initial release.
77+
78+
-- Adolfo Gómez García <agomez@virtualcable.es> Mon, 17 Nov 2014 05:32:41 +0100

building/linux/debian/compat

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
10

0 commit comments

Comments
 (0)