118 lines
5.6 KiB
Docker
118 lines
5.6 KiB
Docker
FROM debian:12.10-slim AS freerdp-build
|
|
|
|
ENV DEBIAN_FRONTEND=noninteractive
|
|
|
|
RUN printf '%s\n' \
|
|
'Types: deb-src' \
|
|
'URIs: http://deb.debian.org/debian' \
|
|
'Suites: bookworm bookworm-updates' \
|
|
'Components: main' \
|
|
'Signed-By: /usr/share/keyrings/debian-archive-keyring.gpg' \
|
|
'' \
|
|
'Types: deb-src' \
|
|
'URIs: http://deb.debian.org/debian-security' \
|
|
'Suites: bookworm-security' \
|
|
'Components: main' \
|
|
'Signed-By: /usr/share/keyrings/debian-archive-keyring.gpg' \
|
|
>/etc/apt/sources.list.d/debian-src.sources
|
|
|
|
RUN apt-get update \
|
|
&& apt-get install -y --no-install-recommends \
|
|
build-essential \
|
|
binutils \
|
|
ca-certificates \
|
|
cmake \
|
|
dpkg-dev \
|
|
git \
|
|
ninja-build \
|
|
pkg-config \
|
|
&& apt-get build-dep -y freerdp2 \
|
|
&& git clone --depth 1 --branch 2.11.7 https://github.com/FreeRDP/FreeRDP.git /tmp/freerdp-src \
|
|
&& sed -i 's/add_channel_client_library(${MODULE_PREFIX} ${MODULE_NAME} ${CHANNEL_NAME} FALSE/add_channel_client_library(${MODULE_PREFIX} ${MODULE_NAME} ${CHANNEL_NAME} TRUE/' /tmp/freerdp-src/channels/cliprdr/client/CMakeLists.txt \
|
|
&& sed -i 's/add_channel_client_library(${MODULE_PREFIX} ${MODULE_NAME} ${CHANNEL_NAME} FALSE/add_channel_client_library(${MODULE_PREFIX} ${MODULE_NAME} ${CHANNEL_NAME} TRUE/' /tmp/freerdp-src/channels/drdynvc/client/CMakeLists.txt \
|
|
&& sed -i 's/add_channel_client_library(${MODULE_PREFIX} ${MODULE_NAME} ${CHANNEL_NAME} FALSE/add_channel_client_library(${MODULE_PREFIX} ${MODULE_NAME} ${CHANNEL_NAME} TRUE/' /tmp/freerdp-src/channels/rdpdr/client/CMakeLists.txt \
|
|
&& sed -i 's/add_channel_client_library(${MODULE_PREFIX} ${MODULE_NAME} ${CHANNEL_NAME} FALSE/add_channel_client_library(${MODULE_PREFIX} ${MODULE_NAME} ${CHANNEL_NAME} TRUE/' /tmp/freerdp-src/channels/rdpsnd/client/CMakeLists.txt \
|
|
&& sed -i 's/#define VirtualChannelEntryEx cliprdr_VirtualChannelEntryEx/#define VirtualChannelEntryEx FREERDP_API VirtualChannelEntryEx/' /tmp/freerdp-src/channels/cliprdr/client/cliprdr_main.c \
|
|
&& sed -i 's/#define VirtualChannelEntryEx drdynvc_VirtualChannelEntryEx/#define VirtualChannelEntryEx FREERDP_API VirtualChannelEntryEx/' /tmp/freerdp-src/channels/drdynvc/client/drdynvc_main.c \
|
|
&& sed -i 's/#define VirtualChannelEntryEx rdpdr_VirtualChannelEntryEx/#define VirtualChannelEntryEx FREERDP_API VirtualChannelEntryEx/' /tmp/freerdp-src/channels/rdpdr/client/rdpdr_main.c \
|
|
&& sed -i 's/BOOL VCAPITYPE rdpsnd_VirtualChannelEntryEx/BOOL VCAPITYPE FREERDP_API VirtualChannelEntryEx/' /tmp/freerdp-src/channels/rdpsnd/client/rdpsnd_main.c \
|
|
&& cmake -S /tmp/freerdp-src -B /tmp/freerdp-build -G Ninja \
|
|
-DCMAKE_BUILD_TYPE=Release \
|
|
-DCMAKE_INSTALL_PREFIX=/opt/freerdp \
|
|
-DCMAKE_INSTALL_LIBDIR=lib \
|
|
-DWITH_CHANNELS=ON \
|
|
-DBUILTIN_CHANNELS=OFF \
|
|
-DWITH_CLIENT=ON \
|
|
-DWITH_CLIENT_COMMON=ON \
|
|
-DWITH_SERVER=OFF \
|
|
-DWITH_SHADOW=OFF \
|
|
-DWITH_X11=OFF \
|
|
-DWITH_WAYLAND=OFF \
|
|
&& cmake --build /tmp/freerdp-build \
|
|
&& cmake --install /tmp/freerdp-build \
|
|
&& test -f /opt/freerdp/lib/freerdp2/libcliprdr-client.so \
|
|
&& test -f /opt/freerdp/lib/freerdp2/libdrdynvc-client.so \
|
|
&& test -f /opt/freerdp/lib/freerdp2/librdpgfx-client.so \
|
|
&& test -f /opt/freerdp/lib/freerdp2/librdpdr-client.so \
|
|
&& test -f /opt/freerdp/lib/freerdp2/librdpsnd-client.so \
|
|
&& readelf --dyn-syms /opt/freerdp/lib/freerdp2/libcliprdr-client.so | grep VirtualChannelEntryEx \
|
|
&& readelf --dyn-syms /opt/freerdp/lib/freerdp2/libdrdynvc-client.so | grep VirtualChannelEntryEx \
|
|
&& readelf --dyn-syms /opt/freerdp/lib/freerdp2/librdpdr-client.so | grep VirtualChannelEntryEx \
|
|
&& readelf --dyn-syms /opt/freerdp/lib/freerdp2/librdpsnd-client.so | grep VirtualChannelEntryEx \
|
|
&& rm -rf /var/lib/apt/lists/* /tmp/freerdp-src /tmp/freerdp-build
|
|
|
|
FROM debian:12.10-slim AS build
|
|
|
|
ENV DEBIAN_FRONTEND=noninteractive
|
|
ENV PKG_CONFIG_PATH=/opt/freerdp/lib/pkgconfig
|
|
ENV LD_LIBRARY_PATH=/opt/freerdp/lib
|
|
|
|
RUN apt-get update \
|
|
&& apt-get install -y --no-install-recommends \
|
|
build-essential \
|
|
ca-certificates \
|
|
cmake \
|
|
ninja-build \
|
|
pkg-config \
|
|
freerdp2-x11 \
|
|
freerdp2-dev \
|
|
libboost-dev \
|
|
libssl-dev \
|
|
libwinpr2-dev \
|
|
&& rm -rf /var/lib/apt/lists/*
|
|
|
|
WORKDIR /opt/rap-rdp-worker
|
|
|
|
COPY --from=freerdp-build /opt/freerdp /opt/freerdp
|
|
|
|
COPY . .
|
|
|
|
RUN cmake --preset dev \
|
|
&& cmake --build --preset dev \
|
|
&& cmake --install build
|
|
|
|
FROM debian:12.10-slim
|
|
|
|
ENV DEBIAN_FRONTEND=noninteractive
|
|
ENV FREERDP_PLUGIN_PATH=/opt/freerdp/lib/freerdp2
|
|
ENV LD_LIBRARY_PATH=/opt/freerdp/lib
|
|
|
|
RUN apt-get update \
|
|
&& apt-get install -y --no-install-recommends \
|
|
ca-certificates \
|
|
freerdp2-x11 \
|
|
freerdp2-dev \
|
|
libssl3 \
|
|
libwinpr2-dev \
|
|
&& rm -rf /var/lib/apt/lists/*
|
|
|
|
COPY --from=freerdp-build /opt/freerdp /opt/freerdp
|
|
COPY --from=build /usr/local/bin/rdp-worker /usr/local/bin/rdp-worker
|
|
COPY --from=build /usr/local/bin/rdp-worker-dataplane-token-probe /usr/local/bin/rdp-worker-dataplane-token-probe
|
|
COPY --from=build /usr/local/bin/rdp-worker-dataplane-bind-probe /usr/local/bin/rdp-worker-dataplane-bind-probe
|
|
COPY --from=build /usr/local/bin/rdp-worker-graphics-adapter-probe /usr/local/bin/rdp-worker-graphics-adapter-probe
|
|
COPY --from=build /usr/local/bin/rdp-worker-cursor-adapter-probe /usr/local/bin/rdp-worker-cursor-adapter-probe
|
|
COPY --from=build /usr/local/bin/rdp-worker-service-adapter-protocol-probe /usr/local/bin/rdp-worker-service-adapter-protocol-probe
|
|
|
|
CMD ["/usr/local/bin/rdp-worker"]
|