From 30515fe4ecc538dcbfb5422ccef6ada9146ad13d Mon Sep 17 00:00:00 2001 From: Matthew McClaskey Date: Mon, 4 Nov 2024 09:25:22 +0000 Subject: [PATCH 01/73] KASM-5095 update logo and docs link --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 5efc230..ae9ceb5 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # KasmVNC - Linux Web Remote Desktop - + KasmVNC provides remote web-based access to a Desktop or application. While VNC is in the name, KasmVNC differs from other VNC variants such as TigerVNC, RealVNC, and TurboVNC. KasmVNC has broken from the RFB specification which defines VNC, in order to support modern technologies and increase security. KasmVNC is accessed by users from any modern browser and does not support legacy VNC viewer applications. KasmVNC uses a modern YAML based configuration at the server and user level, allowing for ease of management. @@ -10,7 +10,7 @@ KasmVNC provides remote web-based access to a Desktop or application. While VNC **Do not use the README from the master branch**, unless you are compiling KasmVNC yourself from the tip of master. Use the documentation for your specific release. - - [KasmVNC 1.0.0 Documentation](https://www.kasmweb.com/kasmvnc/docs/1.0.0/index.html) + - [KasmVNC Documentation](https://www.kasmweb.com/kasmvnc/docs/latest/index.html) For beta releases prior to version 1.0.0, use the README in this github project on the tagged commit for that release. From f88bcd573b165e0e2d149bdfadd19e7ad7b06afc Mon Sep 17 00:00:00 2001 From: Dmitry Maksyoma Date: Tue, 28 Jan 2025 12:16:00 +1300 Subject: [PATCH 02/73] Debian: add missing dependency on libdatetime-perl --- debian/control | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/debian/control b/debian/control index bff5f2a..11fac2f 100644 --- a/debian/control +++ b/debian/control @@ -14,7 +14,7 @@ Architecture: amd64 arm64 Depends: ${shlibs:Depends}, ${misc:Depends}, ${perl:Depends}, ssl-cert, xauth, x11-xkb-utils, xkb-data, procps, libswitch-perl, libyaml-tiny-perl, libhash-merge-simple-perl, libscalar-list-utils-perl, liblist-moreutils-perl, - libtry-tiny-perl, libdatetime-timezone-perl, libgbm1 + libtry-tiny-perl, libdatetime-perl, libdatetime-timezone-perl, libgbm1 Provides: vnc-server Description: KasmVNC provides remote web-based access to a Desktop or application. While VNC is in the name, KasmVNC differs from other VNC variants such From 0b701e6c18ac78d2344578335e3be8dac3a7c0c8 Mon Sep 17 00:00:00 2001 From: Dmitry Maksyoma Date: Fri, 31 Jan 2025 17:54:05 +1300 Subject: [PATCH 03/73] KASM-6518 Remove Bionic support --- .gitlab-ci.yml | 54 +++----------------- builder/README.md | 11 ++--- builder/dockerfile.ubuntu_bionic.build | 32 ------------ builder/dockerfile.ubuntu_bionic.deb.build | 17 ------- builder/dockerfile.ubuntu_bionic.deb.test | 57 ---------------------- builder/dockerfile.ubuntu_bionic.test | 51 ------------------- builder/dockerfile.ubuntu_focal.deb.test | 2 +- builder/dockerfile.ubuntu_jammy.deb.test | 2 +- builder/os_ver_cli.sh | 2 +- 9 files changed, 16 insertions(+), 212 deletions(-) delete mode 100644 builder/dockerfile.ubuntu_bionic.build delete mode 100644 builder/dockerfile.ubuntu_bionic.deb.build delete mode 100644 builder/dockerfile.ubuntu_bionic.deb.test delete mode 100644 builder/dockerfile.ubuntu_bionic.test diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 6dd1bf6..73fec9a 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -7,7 +7,7 @@ variables: GITLAB_SHARED_DIND_DIR: /builds/$CI_PROJECT_PATH/shared GIT_SUBMODULE_STRATEGY: normal GIT_FETCH_EXTRA_FLAGS: --tags --force - # E.g. BUILD_JOBS: build_debian_buster,build_ubuntu_bionic. This will include + # E.g. BUILD_JOBS: build_debian_buster,build_ubuntu_focal. This will include # arm builds, because build_debian_buster_arm matches build_debian_buster. # "BUILD_JOBS: none" won't build any build jobs, nor www. BUILD_JOBS: all @@ -66,44 +66,6 @@ build_www: paths: - output/ -build_ubuntu_bionic: - stage: build - allow_failure: true - tags: - - oci-fixed-amd - before_script: - - *prepare_build - - *prepare_www - after_script: - - *prepare_artfacts - script: - - bash builder/build-package ubuntu bionic - only: - variables: - - $BUILD_JOBS == 'all' || $BUILD_JOBS =~ $CI_JOB_NAME - artifacts: - paths: - - output/ - -build_ubuntu_bionic_arm: - stage: build - allow_failure: false - tags: - - oci-fixed-arm - before_script: - - *prepare_build - - *prepare_www - after_script: - - *prepare_artfacts - script: - - bash builder/build-package ubuntu bionic - only: - variables: - - $BUILD_JOBS == 'all' || $BUILD_JOBS =~ $CI_JOB_NAME - artifacts: - paths: - - output/ - build_ubuntu_focal: stage: build allow_failure: true @@ -198,7 +160,7 @@ build_ubuntu_noble: artifacts: paths: - output/ - + build_ubuntu_noble_arm: stage: build allow_failure: true @@ -209,7 +171,7 @@ build_ubuntu_noble_arm: - *prepare_www after_script: - *prepare_artfacts - script: + script: - bash builder/build-package ubuntu noble; only: variables: @@ -617,13 +579,13 @@ build_fedora_forty: artifacts: paths: - output/ - + build_fedora_forty_arm: stage: build allow_failure: true tags: - oci-fixed-arm - before_script: + before_script: - *prepare_build - *prepare_www after_script: @@ -655,18 +617,18 @@ build_fedora_fortyone: artifacts: paths: - output/ - + build_fedora_fortyone_arm: stage: build allow_failure: true tags: - oci-fixed-arm - before_script: + before_script: - *prepare_build - *prepare_www after_script: - *prepare_artfacts - script: + script: - bash builder/build-package fedora fortyone; only: variables: diff --git a/builder/README.md b/builder/README.md index ea05cc1..b5f5276 100644 --- a/builder/README.md +++ b/builder/README.md @@ -7,7 +7,7 @@ Docker CE # os_codename is what "lsb_release -c" outputs, e.g. buster, focal. # # build_tag allows building multiple versions of deb package (rpm not supported) -# targeting a single distro release (e.g. Ubuntu Bionic). If build_tag is given, +# targeting a single distro release (e.g. Ubuntu Focal). If build_tag is given, # the package name will include build_tag as part of Debian revision. For # example: # * with build_tag: kasmvncserver_0.9.1~beta-1+libjpeg-turbo-latest_amd64.deb @@ -16,7 +16,6 @@ Docker CE # # Packages will be placed under builder/build/ -builder/build-package ubuntu bionic builder/build-package ubuntu focal builder/build-package debian buster builder/build-package debian bullseye @@ -118,7 +117,7 @@ locally by doing stuff like this: ``` bash -c ' . .ci/upload.sh; -prepare_upload_filename "bionic/kasmvncserver_0.9.1~beta-1+libjpeg-turbo-latest_amd64.deb"; +prepare_upload_filename "focal/kasmvncserver_0.9.1~beta-1+libjpeg-turbo-latest_amd64.deb"; echo $upload_filename;' ``` @@ -178,7 +177,7 @@ These instructions assume KasmVNC has been cloned at $HOME and ```kasm_www.tar.g cd ~ tar -zxf kasm_www.tar.gz -C KasmVNC/builder/ cd KasmVNC -sudo builder/build-package ubuntu bionic +sudo builder/build-package ubuntu focal ``` -The resulting deb package can be found under ~/KasmVNC/builder/build/bionic -Replace ```bionic``` with ```focal``` to build for Ubuntu 20.04LTS. At this time, only Ubuntu Bionic has been tested, however, other Debian based builds we support should also work. +The resulting deb package can be found under ~/KasmVNC/builder/build/focal +Replace ```focal``` with ```noble``` to build for Ubuntu 24.04LTS. diff --git a/builder/dockerfile.ubuntu_bionic.build b/builder/dockerfile.ubuntu_bionic.build deleted file mode 100644 index c76b4eb..0000000 --- a/builder/dockerfile.ubuntu_bionic.build +++ /dev/null @@ -1,32 +0,0 @@ -FROM ubuntu:18.04 - -ENV KASMVNC_BUILD_OS ubuntu -ENV KASMVNC_BUILD_OS_CODENAME bionic -ENV XORG_VER 1.20.10 - -RUN sed -i 's$# deb-src$deb-src$' /etc/apt/sources.list - -RUN apt-get update && \ - apt-get -y install sudo - -RUN apt-get update && apt-get -y build-dep xorg-server libxfont-dev -RUN apt-get update && apt-get -y install cmake git libgnutls28-dev vim wget tightvncserver curl -RUN apt-get update && apt-get -y install libpng-dev libtiff-dev libgif-dev libavcodec-dev libssl-dev libxrandr-dev libxcursor-dev - -ENV SCRIPTS_DIR=/tmp/scripts -COPY builder/scripts $SCRIPTS_DIR -RUN $SCRIPTS_DIR/build-webp -RUN $SCRIPTS_DIR/build-libjpeg-turbo - -# Fix for older required libs -#RUN cd /tmp && wget http://launchpadlibrarian.net/347526424/libxfont1-dev_1.5.2-4ubuntu2_amd64.deb && \ -# wget http://launchpadlibrarian.net/347526425/libxfont1_1.5.2-4ubuntu2_amd64.deb && \ -# dpkg -i libxfont1_1.5.2-4ubuntu2_amd64.deb && \ -# dpkg -i libxfont1-dev_1.5.2-4ubuntu2_amd64.deb - -RUN useradd -m docker && echo "docker:docker" | chpasswd && adduser docker sudo - -COPY --chown=docker:docker . /src/ - -USER docker -ENTRYPOINT ["/src/builder/build.sh"] diff --git a/builder/dockerfile.ubuntu_bionic.deb.build b/builder/dockerfile.ubuntu_bionic.deb.build deleted file mode 100644 index a554ecb..0000000 --- a/builder/dockerfile.ubuntu_bionic.deb.build +++ /dev/null @@ -1,17 +0,0 @@ -FROM ubuntu:bionic - -RUN apt-get update && \ - apt-get -y install vim build-essential devscripts equivs - -# Install build-deps for the package. -COPY ./debian/control /tmp -RUN apt-get update && echo YYY | mk-build-deps --install --remove /tmp/control - -ARG L_UID -RUN if [ "$L_UID" -eq 0 ]; then \ - useradd -m docker; \ - else \ - useradd -m docker -u $L_UID;\ - fi - -USER docker diff --git a/builder/dockerfile.ubuntu_bionic.deb.test b/builder/dockerfile.ubuntu_bionic.deb.test deleted file mode 100644 index 8d68055..0000000 --- a/builder/dockerfile.ubuntu_bionic.deb.test +++ /dev/null @@ -1,57 +0,0 @@ -FROM ubuntu:bionic - -ENV DISPLAY=:1 \ - VNC_PORT=8443 \ - VNC_RESOLUTION=1280x720 \ - MAX_FRAME_RATE=24 \ - VNCOPTIONS="-PreferBandwidth -DynamicQualityMin=4 -DynamicQualityMax=7" \ - HOME=/home/user \ - TERM=xterm \ - STARTUPDIR=/dockerstartup \ - INST_SCRIPTS=/dockerstartup/install \ - KASM_RX_HOME=/dockerstartup/kasmrx \ - DEBIAN_FRONTEND=noninteractive \ - VNC_COL_DEPTH=24 \ - VNC_RESOLUTION=1280x1024 \ - VNC_PW=vncpassword \ - VNC_USER=user \ - VNC_VIEW_ONLY_PW=vncviewonlypassword \ - LD_LIBRARY_PATH=/usr/local/lib/ \ - OMP_WAIT_POLICY=PASSIVE \ - SHELL=/bin/bash \ - SINGLE_APPLICATION=0 \ - KASMVNC_BUILD_OS=ubuntu \ - KASMVNC_BUILD_OS_CODENAME=bionic - -EXPOSE $VNC_PORT - -WORKDIR $HOME - -### REQUIRED STUFF ### - -RUN apt-get update && apt-get install -y supervisor xfce4 xfce4-terminal xterm libnss-wrapper gettext wget -RUN apt-get purge -y pm-utils xscreensaver* -RUN apt-get update && apt-get install -y vim less -RUN apt-get update && apt-get -y install lsb-release - -RUN echo 'source $STARTUPDIR/generate_container_user' >> $HOME/.bashrc - -RUN mkdir -p $STARTUPDIR -COPY builder/startup/ $STARTUPDIR - -### START CUSTOM STUFF #### - -COPY ./builder/scripts/ /tmp/scripts/ -COPY ./debian/changelog /tmp - -ARG KASMVNC_PACKAGE_DIR -COPY $KASMVNC_PACKAGE_DIR/kasmvncserver_*.deb /tmp/ -RUN /tmp/scripts/install_kasmvncserver_package - -### END CUSTOM STUFF ### - -RUN chown -R 1000:0 $HOME -USER 1000:ssl-cert -WORKDIR $HOME - -ENTRYPOINT [ "/dockerstartup/vnc_startup.sh" ] diff --git a/builder/dockerfile.ubuntu_bionic.test b/builder/dockerfile.ubuntu_bionic.test deleted file mode 100644 index a9c2049..0000000 --- a/builder/dockerfile.ubuntu_bionic.test +++ /dev/null @@ -1,51 +0,0 @@ -FROM ubuntu:18.04 - -ENV DISPLAY=:1 \ - VNC_PORT=8443 \ - VNC_RESOLUTION=1280x720 \ - MAX_FRAME_RATE=24 \ - VNCOPTIONS="-PreferBandwidth -DynamicQualityMin=4 -DynamicQualityMax=7" \ - HOME=/home/user \ - TERM=xterm \ - STARTUPDIR=/dockerstartup \ - INST_SCRIPTS=/dockerstartup/install \ - KASM_RX_HOME=/dockerstartup/kasmrx \ - DEBIAN_FRONTEND=noninteractive \ - VNC_COL_DEPTH=24 \ - VNC_RESOLUTION=1280x1024 \ - VNC_PW=vncpassword \ - VNC_USER=user \ - VNC_VIEW_ONLY_PW=vncviewonlypassword \ - LD_LIBRARY_PATH=/usr/local/lib/ \ - OMP_WAIT_POLICY=PASSIVE \ - SHELL=/bin/bash \ - SINGLE_APPLICATION=0 \ - KASMVNC_BUILD_OS=ubuntu \ - KASMVNC_BUILD_OS_CODENAME=bionic - -EXPOSE $VNC_PORT - -WORKDIR $HOME - -### REQUIRED STUFF ### - -RUN apt-get update && apt-get install -y supervisor xfce4 xfce4-terminal xterm libnss-wrapper gettext wget -RUN apt-get purge -y pm-utils xscreensaver* - -RUN echo 'source $STARTUPDIR/generate_container_user' >> $HOME/.bashrc - -RUN mkdir -p $STARTUPDIR -COPY builder/startup/ $STARTUPDIR - -### START CUSTOM STUFF #### - -COPY build/kasmvnc.${KASMVNC_BUILD_OS}_${KASMVNC_BUILD_OS_CODENAME}.tar.gz /tmp/ -RUN tar -xzvf /tmp/kasmvnc.${KASMVNC_BUILD_OS}_${KASMVNC_BUILD_OS_CODENAME}.tar.gz --strip 1 -C / - -### END CUSTOM STUFF ### - -RUN chown -R 1000:0 $HOME -USER 1000 -WORKDIR $HOME - -ENTRYPOINT [ "/dockerstartup/vnc_startup.sh" ] diff --git a/builder/dockerfile.ubuntu_focal.deb.test b/builder/dockerfile.ubuntu_focal.deb.test index 16cd8a0..1ee3ad0 100644 --- a/builder/dockerfile.ubuntu_focal.deb.test +++ b/builder/dockerfile.ubuntu_focal.deb.test @@ -21,7 +21,7 @@ ENV DISPLAY=:1 \ SHELL=/bin/bash \ SINGLE_APPLICATION=0 \ KASMVNC_BUILD_OS=ubuntu \ - KASMVNC_BUILD_OS_CODENAME=bionic + KASMVNC_BUILD_OS_CODENAME=focal EXPOSE $VNC_PORT diff --git a/builder/dockerfile.ubuntu_jammy.deb.test b/builder/dockerfile.ubuntu_jammy.deb.test index 4e5f0dd..831a7c8 100644 --- a/builder/dockerfile.ubuntu_jammy.deb.test +++ b/builder/dockerfile.ubuntu_jammy.deb.test @@ -21,7 +21,7 @@ ENV DISPLAY=:1 \ SHELL=/bin/bash \ SINGLE_APPLICATION=0 \ KASMVNC_BUILD_OS=ubuntu \ - KASMVNC_BUILD_OS_CODENAME=bionic + KASMVNC_BUILD_OS_CODENAME=jammy EXPOSE $VNC_PORT diff --git a/builder/os_ver_cli.sh b/builder/os_ver_cli.sh index 534810d..cc19427 100644 --- a/builder/os_ver_cli.sh +++ b/builder/os_ver_cli.sh @@ -1,7 +1,7 @@ #!/bin/bash default_os=${default_os:-ubuntu} -default_os_codename=${default_os_codename:-bionic} +default_os_codename=${default_os_codename:-noble} os=${1:-$default_os} os_codename=${2:-$default_os_codename} From 18bb21671e140348bba08f5d14dd35360b91ae55 Mon Sep 17 00:00:00 2001 From: Dmitry Maksyoma Date: Fri, 31 Jan 2025 18:02:45 +1300 Subject: [PATCH 04/73] KASM-6518 Remove support for Alpine 3.17 --- .gitlab-ci.yml | 37 ----------- builder/dockerfile.alpine_317.apk.build | 7 --- builder/dockerfile.alpine_317.build | 82 ------------------------- 3 files changed, 126 deletions(-) delete mode 100644 builder/dockerfile.alpine_317.apk.build delete mode 100644 builder/dockerfile.alpine_317.build diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 73fec9a..295c93b 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -637,43 +637,6 @@ build_fedora_fortyone_arm: paths: - output/ -build_alpine_317: - stage: build - allow_failure: true - tags: - - oci-fixed-amd - before_script: - - *prepare_build - - *prepare_www - after_script: - - *prepare_artfacts - script: - - bash builder/build-package alpine 317; - only: - variables: - - $BUILD_JOBS == 'all' || $BUILD_JOBS =~ $CI_JOB_NAME - artifacts: - paths: - - output/ - -build_alpine_317_arm: - stage: build - allow_failure: true - tags: - - oci-fixed-arm - before_script: - - *prepare_build - - *prepare_www - after_script: - - *prepare_artfacts - script: - - bash builder/build-package alpine 317; - only: - variables: - - $BUILD_JOBS == 'all' || $BUILD_JOBS =~ $CI_JOB_NAME - artifacts: - paths: - - output/ test: stage: test diff --git a/builder/dockerfile.alpine_317.apk.build b/builder/dockerfile.alpine_317.apk.build deleted file mode 100644 index 732f5f0..0000000 --- a/builder/dockerfile.alpine_317.apk.build +++ /dev/null @@ -1,7 +0,0 @@ -FROM alpine:3.17 - -RUN apk add shadow bash - -RUN useradd -m docker && echo "docker:docker" | chpasswd - -USER docker diff --git a/builder/dockerfile.alpine_317.build b/builder/dockerfile.alpine_317.build deleted file mode 100644 index 0b23bcb..0000000 --- a/builder/dockerfile.alpine_317.build +++ /dev/null @@ -1,82 +0,0 @@ -FROM alpine:3.17 - -ENV KASMVNC_BUILD_OS alpine -ENV KASMVNC_BUILD_OS_CODENAME 317 -ENV XORG_VER 21.1.8 - -RUN \ - echo "**** install build deps ****" && \ - apk add \ - alpine-release \ - alpine-sdk \ - autoconf \ - automake \ - bash \ - ca-certificates \ - cmake \ - coreutils \ - curl \ - eudev-dev \ - font-cursor-misc \ - font-misc-misc \ - font-util-dev \ - git \ - grep \ - jq \ - libdrm-dev \ - libepoxy-dev \ - libjpeg-turbo-dev \ - libjpeg-turbo-static \ - libpciaccess-dev \ - libtool \ - libwebp-dev \ - libx11-dev \ - libxau-dev \ - libxcb-dev \ - libxcursor-dev \ - libxcvt-dev \ - libxdmcp-dev \ - libxext-dev \ - libxfont2-dev \ - libxkbfile-dev \ - libxrandr-dev \ - libxshmfence-dev \ - libxtst-dev \ - mesa-dev \ - mesa-dri-gallium \ - meson \ - nettle-dev \ - openssl-dev \ - pixman-dev \ - procps \ - shadow \ - tar \ - tzdata \ - wayland-dev \ - wayland-protocols \ - xcb-util-dev \ - xcb-util-image-dev \ - xcb-util-keysyms-dev \ - xcb-util-renderutil-dev \ - xcb-util-wm-dev \ - xinit \ - xkbcomp \ - xkbcomp-dev \ - xkeyboard-config \ - xorgproto \ - xorg-server-common \ - xorg-server-dev \ - xtrans - - -ENV SCRIPTS_DIR=/tmp/scripts -COPY builder/scripts $SCRIPTS_DIR -RUN $SCRIPTS_DIR/build-webp -RUN $SCRIPTS_DIR/build-libjpeg-turbo - -RUN useradd -m docker && echo "docker:docker" | chpasswd - -COPY --chown=docker:docker . /src/ - -USER docker -ENTRYPOINT ["/src/builder/build.sh"] From 0eba021bde01240edefde0d42150f43e19147c74 Mon Sep 17 00:00:00 2001 From: Dmitry Maksyoma Date: Fri, 31 Jan 2025 18:22:01 +1300 Subject: [PATCH 05/73] KASM-6518 Remove CentOS support --- BUILDING.txt | 14 +- README.md | 18 +- builder/README.md | 3 +- builder/build.sh | 12 -- builder/bump-package-version-rpm | 2 +- .../dockerfile.centos_core.barebones.rpm.test | 20 --- builder/dockerfile.centos_core.build | 35 ---- builder/dockerfile.centos_core.rpm.build | 12 -- builder/dockerfile.centos_core.rpm.test | 64 ------- builder/scripts/common.sh | 5 +- builder/test-rpm-barebones | 4 +- centos/kasmvncserver.spec | 158 ------------------ 12 files changed, 13 insertions(+), 334 deletions(-) delete mode 100644 builder/dockerfile.centos_core.barebones.rpm.test delete mode 100644 builder/dockerfile.centos_core.build delete mode 100644 builder/dockerfile.centos_core.rpm.build delete mode 100644 builder/dockerfile.centos_core.rpm.test delete mode 100644 centos/kasmvncserver.spec diff --git a/BUILDING.txt b/BUILDING.txt index b0f3782..b792555 100644 --- a/BUILDING.txt +++ b/BUILDING.txt @@ -48,7 +48,7 @@ Build Requirements (Windows) You also need the Inno Setup Preprocessor, which is available in the Inno Setup QuickStart Pack. - Add the directory containing iscc.exe (for instance, + Add the directory containing iscc.exe (for instance, C:\Program Files\Inno Setup 5) to the system or user PATH environment variable prior to building KasmVNC. @@ -90,7 +90,7 @@ but the general outline is as follows. > cp -R {xorg_source}/* unix/xserver/ (NOTE: {xorg_source} is the directory containing the Xorg source for the machine on which you are building KasmVNC. The most recent versions of - Red Hat/CentOS/Fedora, for instance, provide an RPM called + Red Hat/Fedora, for instance, provide an RPM called "xorg-x11-server-source", which installs the Xorg source under /usr/share/xorg-x11-server-source.) @@ -113,8 +113,8 @@ but the general outline is as follows. --with-serverconfig-path=/usr/lib[64]/xorg \ --with-dri-driver-path=/usr/lib[64]/dri \ {additional configure options} - (NOTE: This is merely an example that works with Red Hat Enterprise/CentOS - 6 and recent Fedora releases. You should customize it for your particular + (NOTE: This is merely an example that works with Red Hat Enterprise + and recent Fedora releases. You should customize it for your particular system. In particular, it will be necessary to customize the font, XKB, and DRI directories.) @@ -187,7 +187,7 @@ Building TLS Support ====================================== TLS requires GnuTLS, which is supplied with most Linux distributions and -with MinGW for Windows and can be built from source on OS X and other +with MinGW for Windows and can be built from source on OS X and other Unix variants. However, GnuTLS versions > 2.12.x && < 3.3.x should be avoided because of potential incompatibilities during initial handshaking. @@ -314,7 +314,7 @@ X server source (for instance, --host=i686-pc-linux-gnu). Add -DCMAKE_OSX_SYSROOT=/Developer/SDKs/MacOSX10.5.sdk \ - -DCMAKE_OSX_DEPLOYMENT_TARGET=10.5 + -DCMAKE_OSX_DEPLOYMENT_TARGET=10.5 to the CMake command line. The OS X 10.5 SDK must be installed. @@ -406,7 +406,7 @@ Distribution-Specific Packaging =============================== -RPM Packages for RHEL / CentOS +RPM Packages for RHEL ------------------------------ The RPM spec files and patches used to create the nightly builds diff --git a/README.md b/README.md index 5efc230..ccc0f50 100644 --- a/README.md +++ b/README.md @@ -46,22 +46,6 @@ sudo dnf localinstall ./kasmvncserver_*.rpm sudo usermod -a -G kasmvnc-cert $USER ``` -### CentOS 7 - -```sh -# Please choose the package for your distro here (under Assets): -# https://github.com/kasmtech/KasmVNC/releases -wget - -# Ensure KasmVNC dependencies are available -sudo yum install epel-release - -sudo yum install ./kasmvncserver_*.rpm - -# Add your user to the kasmvnc-cert group -sudo usermod -a -G kasmvnc-cert $USER -``` - ## Getting Started The following examples provide basic usage of KasmVNC with the tools provided. For full documentation on all the utilities and the runtime environment, see our [KasmVNC Documentation](https://www.kasmweb.com/kasmvnc/docs/latest/index.html) @@ -250,7 +234,7 @@ command_line: - Keyboard input rate limit - Screen region selection - Deb packages for Debian, Ubuntu, and Kali Linux included in release. - - RPM packages for CentOS, Oracle, OpenSUSE, Fedora. RPM packages are currently not updatable and not released, though you can build and install them. See build documentation. + - RPM packages for Oracle, OpenSUSE, Fedora. RPM packages are currently not updatable and not released, though you can build and install them. See build documentation. - Web [API](https://github.com/kasmtech/KasmVNC/wiki/API) added for remotely controlling and getting information from KasmVNC - Multi-User support with permissions that can be changed via the API - Web UI uses a webpack for faster load times. diff --git a/builder/README.md b/builder/README.md index b5f5276..64b8513 100644 --- a/builder/README.md +++ b/builder/README.md @@ -20,14 +20,13 @@ builder/build-package ubuntu focal builder/build-package debian buster builder/build-package debian bullseye builder/build-package kali kali-rolling -builder/build-package centos core # CentOS 7 builder/build-package fedora thirtythree ``` # Build and test a package ``` builder/build-and-test-deb ubuntu focal -builder/build-and-test-rpm centos core +builder/build-and-test-rpm oracle 8 ``` Open browser and point to https://localhost:443/ or https://\:443/ diff --git a/builder/build.sh b/builder/build.sh index cb0541b..be9d899 100755 --- a/builder/build.sh +++ b/builder/build.sh @@ -9,13 +9,6 @@ detect_quilt() { fi } -ensure_crashpad_can_fetch_line_number_by_address() { - if [ ! -f /etc/centos-release ]; then - export LDFLAGS="$LDFLAGS -no-pie" - fi -} - - fail_on_gcc_12() { if [[ -n "$CC" && -n "$CXX" ]]; then return; @@ -89,11 +82,6 @@ autoreconf -i # The distro paths start after prefix and end with the font path, # everything after that is based on BUILDING.txt to remove unneeded # components. -ensure_crashpad_can_fetch_line_number_by_address -# Centos7 is too old for dri3 -if [ ! "${KASMVNC_BUILD_OS}" == "centos" ]; then - CONFIG_OPTIONS="--enable-dri3" -fi # remove gl check for opensuse if [ "${KASMVNC_BUILD_OS}" == "opensuse" ] || ([ "${KASMVNC_BUILD_OS}" == "oracle" ] && [ "${KASMVNC_BUILD_OS_CODENAME}" == 9 ]); then sed -i 's/LIBGL="gl >= 7.1.0"/LIBGL="gl >= 1.1"/g' configure diff --git a/builder/bump-package-version-rpm b/builder/bump-package-version-rpm index fe3fc4d..2ef427d 100755 --- a/builder/bump-package-version-rpm +++ b/builder/bump-package-version-rpm @@ -3,7 +3,7 @@ set -eo pipefail new_version="$1" -spec_dirs=(centos oracle opensuse fedora) +spec_dirs=(oracle opensuse fedora) spec_files() { for d in "${spec_dirs[@]}"; do diff --git a/builder/dockerfile.centos_core.barebones.rpm.test b/builder/dockerfile.centos_core.barebones.rpm.test deleted file mode 100644 index 84dcd08..0000000 --- a/builder/dockerfile.centos_core.barebones.rpm.test +++ /dev/null @@ -1,20 +0,0 @@ -FROM centos:centos7 - -ENV STARTUPDIR=/dockerstartup - -RUN yum install -y xterm -RUN yum install -y vim less -RUN yum install -y redhat-lsb-core -RUN yum install -y epel-release - -ARG KASMVNC_PACKAGE_DIR -COPY $KASMVNC_PACKAGE_DIR/*.rpm /tmp/ -RUN yum localinstall -y /tmp/*.rpm - -RUN mkdir -p $STARTUPDIR -COPY startup/vnc_startup_barebones.sh $STARTUPDIR - -RUN useradd -m foo -USER foo:kasmvnc-cert - -ENTRYPOINT "/$STARTUPDIR/vnc_startup_barebones.sh" diff --git a/builder/dockerfile.centos_core.build b/builder/dockerfile.centos_core.build deleted file mode 100644 index cb6d4fa..0000000 --- a/builder/dockerfile.centos_core.build +++ /dev/null @@ -1,35 +0,0 @@ -FROM centos:centos7 - -ENV KASMVNC_BUILD_OS centos -ENV KASMVNC_BUILD_OS_CODENAME core - -RUN yum install -y ca-certificates -RUN yum install -y build-dep xorg-server libxfont-dev sudo -RUN yum install -y gcc cmake git libgnutls28-dev vim wget tightvncserver -RUN yum install -y libpng-dev libtiff-dev libgif-dev libavcodec-dev openssl-devel -RUN yum install -y make -RUN yum group install -y "Development Tools" -RUN yum install -y xorg-x11-server-devel zlib-devel -RUN yum install -y libxkbfile-devel libXfont2-devel xorg-x11-font-utils \ - xorg-x11-xtrans-devel xorg-x11-xkb-utils-devel libXrandr-devel pam-devel \ - gnutls-devel libX11-devel libXtst-devel libXcursor-devel -RUN yum install -y mesa-dri-drivers -RUN yum install -y ca-certificates - -# Additions for webp -RUN cd /tmp && wget https://storage.googleapis.com/downloads.webmproject.org/releases/webp/libwebp-1.0.2.tar.gz -RUN cd /tmp && tar -xzf /tmp/libwebp-* -RUN cd /tmp/libwebp-1.0.2 && \ - ./configure --enable-static --disable-shared && \ - make && make install - -ENV SCRIPTS_DIR=/tmp/scripts -COPY builder/scripts $SCRIPTS_DIR -RUN $SCRIPTS_DIR/build-libjpeg-turbo - -RUN useradd -m docker && echo "docker:docker" | chpasswd - -COPY --chown=docker:docker . /src/ - -USER docker -ENTRYPOINT ["/src/builder/build.sh"] diff --git a/builder/dockerfile.centos_core.rpm.build b/builder/dockerfile.centos_core.rpm.build deleted file mode 100644 index 7a4e208..0000000 --- a/builder/dockerfile.centos_core.rpm.build +++ /dev/null @@ -1,12 +0,0 @@ -FROM centos:centos7 - -RUN yum install -y rpm* gpg* rng-tools rpmlint -RUN yum install -y tree vim less -RUN yum install -y redhat-lsb-core - -COPY centos/*.spec /tmp -RUN yum-builddep -y /tmp/*.spec - -RUN useradd -m docker && echo "docker:docker" | chpasswd - -USER docker diff --git a/builder/dockerfile.centos_core.rpm.test b/builder/dockerfile.centos_core.rpm.test deleted file mode 100644 index 4ae4377..0000000 --- a/builder/dockerfile.centos_core.rpm.test +++ /dev/null @@ -1,64 +0,0 @@ -FROM centos:centos7 - -ENV DISPLAY=:1 \ - VNC_PORT=8443 \ - VNC_RESOLUTION=1280x720 \ - MAX_FRAME_RATE=24 \ - VNCOPTIONS="-PreferBandwidth -DynamicQualityMin=4 -DynamicQualityMax=7" \ - HOME=/home/user \ - TERM=xterm \ - STARTUPDIR=/dockerstartup \ - INST_SCRIPTS=/dockerstartup/install \ - KASM_RX_HOME=/dockerstartup/kasmrx \ - DEBIAN_FRONTEND=noninteractive \ - VNC_COL_DEPTH=24 \ - VNC_RESOLUTION=1280x1024 \ - VNC_PW=vncpassword \ - VNC_USER=user \ - VNC_VIEW_ONLY_PW=vncviewonlypassword \ - LD_LIBRARY_PATH=/usr/local/lib/ \ - OMP_WAIT_POLICY=PASSIVE \ - SHELL=/bin/bash \ - SINGLE_APPLICATION=0 \ - KASMVNC_BUILD_OS=centos \ - KASMVNC_BUILD_OS_CODENAME=core - -EXPOSE $VNC_PORT - -WORKDIR $HOME - -### REQUIRED STUFF ### - -RUN yum install -y openssl xterm gettext wget -RUN yum install -y centos-release-scl-rh && yum install -y nss_wrapper -RUN yum install -y xorg-x11-server xorg-x11-xauth xorg-x11-xkb-utils \ - xkeyboard-config xorg-x11-server-utils -RUN yum install -y epel-release && yum groupinstall xfce -y -RUN yum erase -y pm-utils xscreensaver* -RUN yum install -y redhat-lsb-core -RUN yum install -y vim less - -RUN echo 'source $STARTUPDIR/generate_container_user' >> $HOME/.bashrc - -RUN mkdir -p $STARTUPDIR -COPY builder/startup/ $STARTUPDIR - -### START CUSTOM STUFF #### - -COPY ./builder/scripts/ /tmp/scripts/ -COPY ./centos/kasmvncserver.spec /tmp - -ARG KASMVNC_PACKAGE_DIR -COPY $KASMVNC_PACKAGE_DIR/*.rpm /tmp/ -RUN /tmp/scripts/install_kasmvncserver_package - -### END CUSTOM STUFF ### - -RUN chown -R 1000:0 $HOME -USER 1000:kasmvnc-cert -WORKDIR $HOME - -RUN mkdir ~/.vnc && echo '/usr/bin/xfce4-session &' >> ~/.vnc/xstartup && \ - chmod +x ~/.vnc/xstartup - -ENTRYPOINT [ "/dockerstartup/vnc_startup.sh" ] diff --git a/builder/scripts/common.sh b/builder/scripts/common.sh index 4440b66..e22deef 100644 --- a/builder/scripts/common.sh +++ b/builder/scripts/common.sh @@ -1,9 +1,7 @@ #!/bin/bash detect_distro() { - if [ -f /etc/centos-release ]; then - DISTRO=centos - elif [ -f /etc/oracle-release ]; then + if [ -f /etc/oracle-release ]; then DISTRO=oracle elif [ -f /etc/fedora-release ]; then DISTRO=fedora @@ -20,7 +18,6 @@ install_packages() { local install_cmd=no-command-defined case "$DISTRO" in - centos) install_cmd="yum install -y" ;; oracle) install_cmd="dnf install -y" ;; fedora) install_cmd="dnf install -y" ;; opensuse) install_cmd="zypper install -y" ;; diff --git a/builder/test-rpm-barebones b/builder/test-rpm-barebones index 6318bda..ea4cae6 100755 --- a/builder/test-rpm-barebones +++ b/builder/test-rpm-barebones @@ -5,8 +5,8 @@ set -e cd "$(dirname "$0")" . ./process_test_options.sh . ./common.sh -os="${1:-centos}" -os_codename="${2:-core}" +os="${1:-oracle}" +os_codename="${2:-8}" docker build --build-arg KASMVNC_PACKAGE_DIR="build/${os}_${os_codename}" \ -t kasmvnctester_barebones_${os}:$os_codename \ diff --git a/centos/kasmvncserver.spec b/centos/kasmvncserver.spec deleted file mode 100644 index b860978..0000000 --- a/centos/kasmvncserver.spec +++ /dev/null @@ -1,158 +0,0 @@ -Name: kasmvncserver -Version: 1.3.3 -Release: 1%{?dist} -Summary: VNC server accessible from a web browser - -License: GPLv2+ -URL: https://github.com/kasmtech/KasmVNC - -BuildRequires: rsync -Requires: xorg-x11-xauth, xorg-x11-xkb-utils, xkeyboard-config, xorg-x11-server-utils, openssl, perl, perl-Switch, perl-YAML-Tiny, perl-Hash-Merge-Simple, perl-Scalar-List-Utils, perl-List-MoreUtils, perl-Try-Tiny, perl-DateTime-TimeZone -Conflicts: tigervnc-server, tigervnc-server-minimal - -%description -KasmVNC provides remote web-based access to a Desktop or application. -While VNC is in the name, KasmVNC differs from other VNC variants such -as TigerVNC, RealVNC, and TurboVNC. KasmVNC has broken from the RFB -specification which defines VNC, in order to support modern technologies -and increase security. KasmVNC is accessed by users from any modern -browser and does not support legacy VNC viewer applications. KasmVNC -uses a modern YAML based configuration at the server and user level, -allowing for ease of management. KasmVNC is maintained by Kasm -Technologies Corp, www.kasmweb.com. - -WARNING: this package requires EPEL. - -%prep - -%install -rm -rf $RPM_BUILD_ROOT - -TARGET_OS=$(lsb_release -is | tr '[:upper:]' '[:lower:]') -TARGET_OS_CODENAME=$(lsb_release -cs | tr '[:upper:]' '[:lower:]') -TARBALL=$RPM_SOURCE_DIR/kasmvnc.${TARGET_OS}_${TARGET_OS_CODENAME}.tar.gz -TAR_DATA=$(mktemp -d) -tar -xzf "$TARBALL" -C "$TAR_DATA" - -SRC=$TAR_DATA/usr/local -SRC_BIN=$SRC/bin -DESTDIR=$RPM_BUILD_ROOT -DST_MAN=$DESTDIR/usr/share/man/man1 - -mkdir -p $DESTDIR/usr/bin $DESTDIR/usr/share/man/man1 \ - $DESTDIR/usr/share/doc/kasmvncserver $DESTDIR/usr/lib \ - $DESTDIR/usr/share/perl5 $DESTDIR/etc/kasmvnc - -cp $SRC_BIN/Xvnc $DESTDIR/usr/bin; -cp $SRC_BIN/vncserver $DESTDIR/usr/bin; -cp -a $SRC_BIN/KasmVNC $DESTDIR/usr/share/perl5/ -cp $SRC_BIN/vncconfig $DESTDIR/usr/bin; -cp $SRC_BIN/kasmvncpasswd $DESTDIR/usr/bin; -cp $SRC_BIN/kasmxproxy $DESTDIR/usr/bin; -cp -r $SRC/lib/kasmvnc/ $DESTDIR/usr/lib/kasmvncserver -cd $DESTDIR/usr/bin && ln -s kasmvncpasswd vncpasswd; -cp -r $SRC/share/doc/kasmvnc*/* $DESTDIR/usr/share/doc/kasmvncserver/ -rsync -r --links --safe-links --exclude '.git*' --exclude po2js --exclude xgettext-html \ - --exclude www/utils/ --exclude .eslintrc --exclude configure \ - $SRC/share/kasmvnc $DESTDIR/usr/share - -sed -i -e 's!pem_certificate: .\+$!pem_certificate: /etc/pki/tls/private/kasmvnc.pem!' \ - $DESTDIR/usr/share/kasmvnc/kasmvnc_defaults.yaml -sed -i -e 's!pem_key: .\+$!pem_key: /etc/pki/tls/private/kasmvnc.pem!' \ - $DESTDIR/usr/share/kasmvnc/kasmvnc_defaults.yaml -sed -e 's/^\([^#]\)/# \1/' $DESTDIR/usr/share/kasmvnc/kasmvnc_defaults.yaml > \ - $DESTDIR/etc/kasmvnc/kasmvnc.yaml -cp $SRC/man/man1/Xvnc.1 $DESTDIR/usr/share/man/man1/; -cp $SRC/share/man/man1/vncserver.1 $DST_MAN; -cp $SRC/share/man/man1/vncconfig.1 $DST_MAN; -cp $SRC/share/man/man1/vncpasswd.1 $DST_MAN; -cp $SRC/share/man/man1/kasmxproxy.1 $DST_MAN; -cd $DST_MAN && ln -s vncpasswd.1 kasmvncpasswd.1; - - -%files -%config(noreplace) /etc/kasmvnc - -/usr/bin/* -/usr/lib/kasmvncserver -/usr/share/man/man1/* -/usr/share/perl5/KasmVNC -/usr/share/kasmvnc - -%license /usr/share/doc/kasmvncserver/LICENSE.TXT -%doc /usr/share/doc/kasmvncserver/README.md - -%changelog -* Fri Oct 25 2024 KasmTech - 1.3.3-1 -- Allow disabling IP blacklist -- Downloads API for detailed file downloads information -* Tue Sep 24 2024 KasmTech - 1.3.2-1 -- Disable seamless clipboard on Firefox by default, due to the Firefox overlaying a Paste menu over the canvas. -- Fixed CVE-2024-38449, directory traversal bug in built-in web server. -- Allow for larger header sizes, up to 16k. Provide better logging and handling for requests that contain HTTP headers that are larger than the 16k limit. -- Fixed memory leak in kasmproxy. -- Fixed mime types of downloads to ensure the browser interprets them as downloads. -* Tue Mar 12 2024 KasmTech - 1.3.1-1 -- Fix exception thrown on Firefox 124 and higher -- Fix artifacts on high resolution secondary screens -- Fixes for touch support on primary and secondary screens -- Fix for Oculus keyboard input -* Mon Feb 05 2024 KasmTech - 1.3.0-1 -- Multi-monitor support. -- Increased performance with watermark enabled. -- Added support for Fedora 39 and Alpine 319. -- Allow special characters in usernames. -- Better logging of client settings when client connects or changes settings. -- Add support for rotation of text-based watermark. -* Fri Aug 25 2023 KasmTech - 1.2.0-1 -- Add support for Unix relays for bidirectional communication between noVNC - and containerized applications. -- Text based watermark overlays with date and time support. -- New builds for Bookworm, Alpine 3.18, and Fedora 38. -- Multi-language support. -- Add support for rendering pixmaps via DRI3 GPU acceleration allowing - compositing and other 3d accelerated workloads in a KasmVNC session. -- Fix crash that can occur. -- Fixed tearing when compositing is enabled with DRI3 hardware acceleration. -- Fix stuck command key on MacOS clients. -* Wed Apr 05 2023 KasmTech - 1.1.0-1 -- Upstream release -* Tue Nov 29 2022 KasmTech - 1.0.0-1 -- WebRTC UDP transit support with support of STUN servers -- Lossless compression using multi-threaded WASM QOI decoder client side -- New yaml based configuration -- Significantly improved FPS through both client-side and server-side improvements. -- Support for the admin to define arbitrary http response headers for the built in web server -- Support for additional mouse buttons -- Refinement of vncserver checks and user prompts -- Added send_full_frame to developer API, forces full frame to be sent to all connected users that have at least read permission. -* Tue Mar 22 2022 KasmTech - 0.9.3~beta-1 -* Fri Feb 12 2021 KasmTech - 0.9.1~beta-1 -- Initial release of the rpm package. - -%post - kasmvnc_group="kasmvnc-cert" - - create_kasmvnc_group() { - if ! getent group "$kasmvnc_group" >/dev/null; then - groupadd --system "$kasmvnc_group" - fi - } - - make_self_signed_certificate() { - local cert_file=/etc/pki/tls/private/kasmvnc.pem - [ -f "$cert_file" ] && return 0 - - openssl req -x509 -nodes -days 3650 -newkey rsa:2048 \ - -keyout "$cert_file" \ - -out "$cert_file" -subj \ - "/C=US/ST=VA/L=None/O=None/OU=DoFu/CN=kasm/emailAddress=none@none.none" - chgrp "$kasmvnc_group" "$cert_file" - chmod 640 "$cert_file" - } - - create_kasmvnc_group - make_self_signed_certificate - -%postun - rm -f /etc/pki/tls/private/kasmvnc.pem From b69b660d738b1550ec52ce6d91a1deb0b6c1c3e2 Mon Sep 17 00:00:00 2001 From: Dmitry Maksyoma Date: Fri, 31 Jan 2025 18:25:24 +1300 Subject: [PATCH 06/73] KASM-6518 Remove support for Fedora 37, 38 --- .gitlab-ci.yml | 76 ---------------- ...file.fedora_thirtyeight.barebones.rpm.test | 19 ---- builder/dockerfile.fedora_thirtyeight.build | 86 ------------------- .../dockerfile.fedora_thirtyeight.rpm.build | 13 --- .../dockerfile.fedora_thirtyeight.rpm.test | 62 ------------- ...file.fedora_thirtyseven.barebones.rpm.test | 19 ---- builder/dockerfile.fedora_thirtyseven.build | 86 ------------------- .../dockerfile.fedora_thirtyseven.rpm.build | 13 --- .../dockerfile.fedora_thirtyseven.rpm.test | 62 ------------- 9 files changed, 436 deletions(-) delete mode 100644 builder/dockerfile.fedora_thirtyeight.barebones.rpm.test delete mode 100644 builder/dockerfile.fedora_thirtyeight.build delete mode 100644 builder/dockerfile.fedora_thirtyeight.rpm.build delete mode 100644 builder/dockerfile.fedora_thirtyeight.rpm.test delete mode 100644 builder/dockerfile.fedora_thirtyseven.barebones.rpm.test delete mode 100644 builder/dockerfile.fedora_thirtyseven.build delete mode 100644 builder/dockerfile.fedora_thirtyseven.rpm.build delete mode 100644 builder/dockerfile.fedora_thirtyseven.rpm.test diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 295c93b..f3f8a26 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -447,82 +447,6 @@ build_opensuse_15_arm: paths: - output/ -build_fedora_thirtyseven: - stage: build - allow_failure: true - tags: - - oci-fixed-amd - before_script: - - *prepare_build - - *prepare_www - after_script: - - *prepare_artfacts - script: - - bash builder/build-package fedora thirtyseven; - only: - variables: - - $BUILD_JOBS == 'all' || $BUILD_JOBS =~ $CI_JOB_NAME - artifacts: - paths: - - output/ - -build_fedora_thirtyseven_arm: - stage: build - allow_failure: true - tags: - - oci-fixed-arm - before_script: - - *prepare_build - - *prepare_www - after_script: - - *prepare_artfacts - script: - - bash builder/build-package fedora thirtyseven; - only: - variables: - - $BUILD_JOBS == 'all' || $BUILD_JOBS =~ $CI_JOB_NAME - artifacts: - paths: - - output/ - -build_fedora_thirtyeight: - stage: build - allow_failure: true - tags: - - oci-fixed-amd - before_script: - - *prepare_build - - *prepare_www - after_script: - - *prepare_artfacts - script: - - bash builder/build-package fedora thirtyeight; - only: - variables: - - $BUILD_JOBS == 'all' || $BUILD_JOBS =~ $CI_JOB_NAME - artifacts: - paths: - - output/ - -build_fedora_thirtyeight_arm: - stage: build - allow_failure: true - tags: - - oci-fixed-arm - before_script: - - *prepare_build - - *prepare_www - after_script: - - *prepare_artfacts - script: - - bash builder/build-package fedora thirtyeight; - only: - variables: - - $BUILD_JOBS == 'all' || $BUILD_JOBS =~ $CI_JOB_NAME - artifacts: - paths: - - output/ - build_fedora_thirtynine: stage: build allow_failure: true diff --git a/builder/dockerfile.fedora_thirtyeight.barebones.rpm.test b/builder/dockerfile.fedora_thirtyeight.barebones.rpm.test deleted file mode 100644 index 4252609..0000000 --- a/builder/dockerfile.fedora_thirtyeight.barebones.rpm.test +++ /dev/null @@ -1,19 +0,0 @@ -FROM fedora:38 - -ENV STARTUPDIR=/dockerstartup - -RUN dnf install -y xterm -RUN dnf install -y vim less -RUN yum install -y redhat-lsb-core - -ARG KASMVNC_PACKAGE_DIR -COPY $KASMVNC_PACKAGE_DIR/*.rpm /tmp/ -RUN dnf localinstall -y /tmp/*.rpm - -RUN mkdir -p $STARTUPDIR -COPY startup/vnc_startup_barebones.sh $STARTUPDIR - -RUN useradd -m foo -USER foo:kasmvnc-cert - -ENTRYPOINT "/$STARTUPDIR/vnc_startup_barebones.sh" diff --git a/builder/dockerfile.fedora_thirtyeight.build b/builder/dockerfile.fedora_thirtyeight.build deleted file mode 100644 index dbfae34..0000000 --- a/builder/dockerfile.fedora_thirtyeight.build +++ /dev/null @@ -1,86 +0,0 @@ -FROM fedora:38 - -ENV KASMVNC_BUILD_OS fedora -ENV KASMVNC_BUILD_OS_CODENAME thirtyeight -ENV XORG_VER 1.20.14 - -RUN \ - echo "**** install build deps ****" && \ - dnf group install -y \ - "C Development Tools and Libraries" \ - "Development Tools" && \ - dnf install -y \ - autoconf \ - automake \ - bison \ - byacc \ - bzip2 \ - cmake \ - diffutils \ - doxygen \ - file \ - flex \ - fop \ - gcc \ - gcc-c++ \ - git \ - glibc-devel \ - libdrm-devel \ - libepoxy-devel \ - libmd-devel \ - libpciaccess-devel \ - libtool \ - libwebp-devel \ - libX11-devel \ - libXau-devel \ - libxcb-devel \ - libXcursor-devel \ - libxcvt-devel \ - libXdmcp-devel \ - libXext-devel \ - libXfont2-devel \ - libxkbfile-devel \ - libXrandr-devel \ - libxshmfence-devel \ - libXtst-devel \ - mesa-libEGL-devel \ - mesa-libgbm-devel \ - mesa-libGL-devel \ - meson \ - mingw64-binutils \ - mt-st \ - nettle-devel \ - openssl-devel \ - patch \ - pixman-devel \ - wayland-devel \ - wget \ - which \ - xcb-util-devel \ - xcb-util-image-devel \ - xcb-util-keysyms-devel \ - xcb-util-renderutil-devel \ - xcb-util-wm-devel \ - xinit \ - xkbcomp \ - xkbcomp-devel \ - xkeyboard-config \ - xmlto \ - xorg-x11-font-utils \ - xorg-x11-proto-devel \ - xorg-x11-server-common \ - xorg-x11-server-devel \ - xorg-x11-xtrans-devel \ - xsltproc - -ENV SCRIPTS_DIR=/tmp/scripts -COPY builder/scripts $SCRIPTS_DIR -RUN $SCRIPTS_DIR/build-webp -RUN $SCRIPTS_DIR/build-libjpeg-turbo - -RUN useradd -m docker && echo "docker:docker" | chpasswd - -COPY --chown=docker:docker . /src/ - -USER docker -ENTRYPOINT ["/src/builder/build.sh"] diff --git a/builder/dockerfile.fedora_thirtyeight.rpm.build b/builder/dockerfile.fedora_thirtyeight.rpm.build deleted file mode 100644 index 8fc556f..0000000 --- a/builder/dockerfile.fedora_thirtyeight.rpm.build +++ /dev/null @@ -1,13 +0,0 @@ -FROM fedora:38 - -RUN dnf install -y fedora-packager fedora-review -RUN dnf install -y tree vim less -RUN dnf install -y redhat-lsb-core -RUN dnf install -y dnf-plugins-core - -COPY fedora/*.spec /tmp -RUN dnf builddep -y /tmp/*.spec - -RUN useradd -m docker && echo "docker:docker" | chpasswd - -USER docker diff --git a/builder/dockerfile.fedora_thirtyeight.rpm.test b/builder/dockerfile.fedora_thirtyeight.rpm.test deleted file mode 100644 index 16975a0..0000000 --- a/builder/dockerfile.fedora_thirtyeight.rpm.test +++ /dev/null @@ -1,62 +0,0 @@ -FROM fedora:38 - -ENV DISPLAY=:1 \ - VNC_PORT=8443 \ - VNC_RESOLUTION=1280x720 \ - MAX_FRAME_RATE=24 \ - VNCOPTIONS="-PreferBandwidth -DynamicQualityMin=4 -DynamicQualityMax=7" \ - HOME=/home/user \ - TERM=xterm \ - STARTUPDIR=/dockerstartup \ - INST_SCRIPTS=/dockerstartup/install \ - KASM_RX_HOME=/dockerstartup/kasmrx \ - DEBIAN_FRONTEND=noninteractive \ - VNC_COL_DEPTH=24 \ - VNC_RESOLUTION=1280x1024 \ - VNC_PW=vncpassword \ - VNC_USER=user \ - VNC_VIEW_ONLY_PW=vncviewonlypassword \ - LD_LIBRARY_PATH=/usr/local/lib/ \ - OMP_WAIT_POLICY=PASSIVE \ - SHELL=/bin/bash \ - SINGLE_APPLICATION=0 \ - KASMVNC_BUILD_OS=fedora \ - KASMVNC_BUILD_OS_CODENAME=thirtythree - -EXPOSE $VNC_PORT - -WORKDIR $HOME - -### REQUIRED STUFF ### - -RUN dnf install -y openssl xterm gettext wget -RUN dnf install -y nss_wrapper -RUN dnf install -y xorg-x11-xauth xkeyboard-config -# xorg-x11-server-Xorg -# RUN dnf install -y @xfce-desktop-environment -RUN dnf erase -y pm-utils xscreensaver* -RUN dnf install -y redhat-lsb-core -RUN dnf install -y vim less -RUN dnf install -y @xfce-desktop-environment - -RUN echo 'source $STARTUPDIR/generate_container_user' >> $HOME/.bashrc - -RUN mkdir -p $STARTUPDIR -COPY builder/startup/ $STARTUPDIR - -### START CUSTOM STUFF #### -COPY ./builder/scripts/ /tmp/scripts/ -COPY ./fedora/kasmvncserver.spec /tmp - -ARG KASMVNC_PACKAGE_DIR -COPY $KASMVNC_PACKAGE_DIR/*.rpm /tmp/ -# RUN dnf remove -y tigervnc-server-minimal -RUN /tmp/scripts/install_kasmvncserver_package - -### END CUSTOM STUFF ### - -RUN chown -R 1000:0 $HOME -USER 1000:kasmvnc-cert -WORKDIR $HOME - -ENTRYPOINT [ "/dockerstartup/vnc_startup.sh" ] diff --git a/builder/dockerfile.fedora_thirtyseven.barebones.rpm.test b/builder/dockerfile.fedora_thirtyseven.barebones.rpm.test deleted file mode 100644 index ba97bf8..0000000 --- a/builder/dockerfile.fedora_thirtyseven.barebones.rpm.test +++ /dev/null @@ -1,19 +0,0 @@ -FROM fedora:37 - -ENV STARTUPDIR=/dockerstartup - -RUN dnf install -y xterm -RUN dnf install -y vim less -RUN yum install -y redhat-lsb-core - -ARG KASMVNC_PACKAGE_DIR -COPY $KASMVNC_PACKAGE_DIR/*.rpm /tmp/ -RUN dnf localinstall -y /tmp/*.rpm - -RUN mkdir -p $STARTUPDIR -COPY startup/vnc_startup_barebones.sh $STARTUPDIR - -RUN useradd -m foo -USER foo:kasmvnc-cert - -ENTRYPOINT "/$STARTUPDIR/vnc_startup_barebones.sh" diff --git a/builder/dockerfile.fedora_thirtyseven.build b/builder/dockerfile.fedora_thirtyseven.build deleted file mode 100644 index 4557431..0000000 --- a/builder/dockerfile.fedora_thirtyseven.build +++ /dev/null @@ -1,86 +0,0 @@ -FROM fedora:37 - -ENV KASMVNC_BUILD_OS fedora -ENV KASMVNC_BUILD_OS_CODENAME thirtyseven -ENV XORG_VER 1.20.14 - -RUN \ - echo "**** install build deps ****" && \ - dnf group install -y \ - "C Development Tools and Libraries" \ - "Development Tools" && \ - dnf install -y \ - autoconf \ - automake \ - bison \ - byacc \ - bzip2 \ - cmake \ - diffutils \ - doxygen \ - file \ - flex \ - fop \ - gcc \ - gcc-c++ \ - git \ - glibc-devel \ - libdrm-devel \ - libepoxy-devel \ - libmd-devel \ - libpciaccess-devel \ - libtool \ - libwebp-devel \ - libX11-devel \ - libXau-devel \ - libxcb-devel \ - libXcursor-devel \ - libxcvt-devel \ - libXdmcp-devel \ - libXext-devel \ - libXfont2-devel \ - libxkbfile-devel \ - libXrandr-devel \ - libxshmfence-devel \ - libXtst-devel \ - mesa-libEGL-devel \ - mesa-libgbm-devel \ - mesa-libGL-devel \ - meson \ - mingw64-binutils \ - mt-st \ - nettle-devel \ - openssl-devel \ - patch \ - pixman-devel \ - wayland-devel \ - wget \ - which \ - xcb-util-devel \ - xcb-util-image-devel \ - xcb-util-keysyms-devel \ - xcb-util-renderutil-devel \ - xcb-util-wm-devel \ - xinit \ - xkbcomp \ - xkbcomp-devel \ - xkeyboard-config \ - xmlto \ - xorg-x11-font-utils \ - xorg-x11-proto-devel \ - xorg-x11-server-common \ - xorg-x11-server-devel \ - xorg-x11-xtrans-devel \ - xsltproc - -ENV SCRIPTS_DIR=/tmp/scripts -COPY builder/scripts $SCRIPTS_DIR -RUN $SCRIPTS_DIR/build-webp -RUN $SCRIPTS_DIR/build-libjpeg-turbo - -RUN useradd -m docker && echo "docker:docker" | chpasswd - -COPY --chown=docker:docker . /src/ - -USER docker -ENTRYPOINT ["/src/builder/build.sh"] diff --git a/builder/dockerfile.fedora_thirtyseven.rpm.build b/builder/dockerfile.fedora_thirtyseven.rpm.build deleted file mode 100644 index 8384b10..0000000 --- a/builder/dockerfile.fedora_thirtyseven.rpm.build +++ /dev/null @@ -1,13 +0,0 @@ -FROM fedora:37 - -RUN dnf install -y fedora-packager fedora-review -RUN dnf install -y tree vim less -RUN dnf install -y redhat-lsb-core -RUN dnf install -y dnf-plugins-core - -COPY fedora/*.spec /tmp -RUN dnf builddep -y /tmp/*.spec - -RUN useradd -m docker && echo "docker:docker" | chpasswd - -USER docker diff --git a/builder/dockerfile.fedora_thirtyseven.rpm.test b/builder/dockerfile.fedora_thirtyseven.rpm.test deleted file mode 100644 index 5c7dea3..0000000 --- a/builder/dockerfile.fedora_thirtyseven.rpm.test +++ /dev/null @@ -1,62 +0,0 @@ -FROM fedora:37 - -ENV DISPLAY=:1 \ - VNC_PORT=8443 \ - VNC_RESOLUTION=1280x720 \ - MAX_FRAME_RATE=24 \ - VNCOPTIONS="-PreferBandwidth -DynamicQualityMin=4 -DynamicQualityMax=7" \ - HOME=/home/user \ - TERM=xterm \ - STARTUPDIR=/dockerstartup \ - INST_SCRIPTS=/dockerstartup/install \ - KASM_RX_HOME=/dockerstartup/kasmrx \ - DEBIAN_FRONTEND=noninteractive \ - VNC_COL_DEPTH=24 \ - VNC_RESOLUTION=1280x1024 \ - VNC_PW=vncpassword \ - VNC_USER=user \ - VNC_VIEW_ONLY_PW=vncviewonlypassword \ - LD_LIBRARY_PATH=/usr/local/lib/ \ - OMP_WAIT_POLICY=PASSIVE \ - SHELL=/bin/bash \ - SINGLE_APPLICATION=0 \ - KASMVNC_BUILD_OS=fedora \ - KASMVNC_BUILD_OS_CODENAME=thirtythree - -EXPOSE $VNC_PORT - -WORKDIR $HOME - -### REQUIRED STUFF ### - -RUN dnf install -y openssl xterm gettext wget -RUN dnf install -y nss_wrapper -RUN dnf install -y xorg-x11-xauth xkeyboard-config -# xorg-x11-server-Xorg -# RUN dnf install -y @xfce-desktop-environment -RUN dnf erase -y pm-utils xscreensaver* -RUN dnf install -y redhat-lsb-core -RUN dnf install -y vim less -RUN dnf install -y @xfce-desktop-environment - -RUN echo 'source $STARTUPDIR/generate_container_user' >> $HOME/.bashrc - -RUN mkdir -p $STARTUPDIR -COPY builder/startup/ $STARTUPDIR - -### START CUSTOM STUFF #### -COPY ./builder/scripts/ /tmp/scripts/ -COPY ./fedora/kasmvncserver.spec /tmp - -ARG KASMVNC_PACKAGE_DIR -COPY $KASMVNC_PACKAGE_DIR/*.rpm /tmp/ -# RUN dnf remove -y tigervnc-server-minimal -RUN /tmp/scripts/install_kasmvncserver_package - -### END CUSTOM STUFF ### - -RUN chown -R 1000:0 $HOME -USER 1000:kasmvnc-cert -WORKDIR $HOME - -ENTRYPOINT [ "/dockerstartup/vnc_startup.sh" ] From 8f410e1887485c80ce22f0817111bc025aac132e Mon Sep 17 00:00:00 2001 From: Dmitry Maksyoma Date: Thu, 6 Feb 2025 18:37:54 +1300 Subject: [PATCH 07/73] KASM-6518 Remove Debian Buster support --- .gitlab-ci.yml | 38 -------------------------------------- 1 file changed, 38 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index f3f8a26..93d2610 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -180,44 +180,6 @@ build_ubuntu_noble_arm: paths: - output/ -build_debian_buster: - stage: build - allow_failure: true - tags: - - oci-fixed-amd - before_script: - - *prepare_build - - *prepare_www - after_script: - - *prepare_artfacts - script: - - bash builder/build-package debian buster; - only: - variables: - - $BUILD_JOBS == 'all' || $BUILD_JOBS =~ $CI_JOB_NAME - artifacts: - paths: - - output/ - -build_debian_buster_arm: - stage: build - allow_failure: true - tags: - - oci-fixed-arm - before_script: - - *prepare_build - - *prepare_www - after_script: - - *prepare_artfacts - script: - - bash builder/build-package debian buster; - only: - variables: - - $BUILD_JOBS == 'all' || $BUILD_JOBS =~ $CI_JOB_NAME - artifacts: - paths: - - output/ - build_debian_bullseye: stage: build allow_failure: true From 03d99c1456f2c704ea321fd3b83cd576f3df1243 Mon Sep 17 00:00:00 2001 From: Dmitry Maksyoma Date: Tue, 11 Feb 2025 15:51:50 +1300 Subject: [PATCH 08/73] KASM-6670 Fedora: add missing dependency on hostname --- fedora/kasmvncserver.spec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/fedora/kasmvncserver.spec b/fedora/kasmvncserver.spec index 260d5ce..739530c 100644 --- a/fedora/kasmvncserver.spec +++ b/fedora/kasmvncserver.spec @@ -7,7 +7,7 @@ License: GPLv2+ URL: https://github.com/kasmtech/KasmVNC BuildRequires: rsync -Requires: xorg-x11-xauth, xkeyboard-config, xkbcomp, openssl, perl, perl-Switch, perl-YAML-Tiny, perl-Hash-Merge-Simple, perl-Scalar-List-Utils, perl-List-MoreUtils, perl-Try-Tiny, perl-DateTime-TimeZone, mesa-libgbm, libxshmfence +Requires: xorg-x11-xauth, xkeyboard-config, xkbcomp, openssl, perl, perl-Switch, perl-YAML-Tiny, perl-Hash-Merge-Simple, perl-Scalar-List-Utils, perl-List-MoreUtils, perl-Try-Tiny, perl-DateTime-TimeZone, mesa-libgbm, libxshmfence, hostname Conflicts: tigervnc-server, tigervnc-server-minimal %description From d933dc99abddeee71f0a6baca3cf072467283a7f Mon Sep 17 00:00:00 2001 From: Dmitry Maksyoma Date: Tue, 11 Feb 2025 20:10:22 +1300 Subject: [PATCH 09/73] KASM-5204 Add config key network.udp.payload_size --- unix/kasmvnc_defaults.yaml | 1 + unix/vncserver | 18 ++++++++++++++++++ 2 files changed, 19 insertions(+) diff --git a/unix/kasmvnc_defaults.yaml b/unix/kasmvnc_defaults.yaml index 292e93d..3d0551c 100644 --- a/unix/kasmvnc_defaults.yaml +++ b/unix/kasmvnc_defaults.yaml @@ -18,6 +18,7 @@ network: udp: public_ip: auto port: auto + payload_size: auto stun_server: auto ssl: pem_certificate: /etc/ssl/certs/ssl-cert-snakeoil.pem diff --git a/unix/vncserver b/unix/vncserver index ecdec9e..41fc1be 100755 --- a/unix/vncserver +++ b/unix/vncserver @@ -2366,6 +2366,24 @@ sub DefineConfigToCLIConversion { $value; } }), + KasmVNC::CliOption->new({ + name => 'udpSize', + configKeys => [ + KasmVNC::ConfigKey->new({ + name => "network.udp.payload_size", + validator => KasmVNC::PatternValidator->new({ + pattern => qr/^(auto|\d+)$/, + errorMessage => "must be 'auto' or an integer" + }), + }) + ], + isActiveSub => sub { + $self = shift; + + my $value = $self->configValue(); + isPresent($value) && $value ne 'auto'; + } + }), KasmVNC::CliOption->new({ name => 'udpPort', configKeys => [ From fc7e77499a4cf8113e005218b17a8b5ae572d058 Mon Sep 17 00:00:00 2001 From: Dmitry Maksyoma Date: Sun, 23 Feb 2025 00:48:51 +0000 Subject: [PATCH 10/73] Resolve KASM-6894 "Feature/ remove webpack to reduce vulnerabilities" --- .gitmodules | 2 +- builder/build_www.sh | 14 +++----------- builder/dockerfile.www.build | 6 ++++-- kasmweb | 2 +- 4 files changed, 9 insertions(+), 15 deletions(-) diff --git a/.gitmodules b/.gitmodules index 95fb845..e43a13a 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,4 +1,4 @@ [submodule "kasmweb"] path = kasmweb url = https://github.com/kasmtech/noVNC.git - branch = release/1.2.2 + branch = master diff --git a/builder/build_www.sh b/builder/build_www.sh index ec54f6c..b084dcf 100755 --- a/builder/build_www.sh +++ b/builder/build_www.sh @@ -1,18 +1,10 @@ -#!/bin/bash +#!/bin/sh # clear previous build rm -rf /build/* # build webpack npm run build -# remove node stuff from directory -rm -rf node_modules/ -# copy all to build dir -cp -R ./* /build/ -# remove unneccesary files -cd /build -rm *.md -rm AUTHORS -rm vnc.html -ln -s index.html vnc.html +# copy all to build dir +cp -R ./dist/* /build/ diff --git a/builder/dockerfile.www.build b/builder/dockerfile.www.build index be30b4b..e5a1845 100644 --- a/builder/dockerfile.www.build +++ b/builder/dockerfile.www.build @@ -1,6 +1,8 @@ -FROM node:12-buster +FROM alpine -COPY kasmweb/ /src/www/ +RUN apk add npm nodejs + +COPY kasmweb/ /src/www COPY builder/build_www.sh /src/ WORKDIR /src/www diff --git a/kasmweb b/kasmweb index bce2d6a..5c46b2e 160000 --- a/kasmweb +++ b/kasmweb @@ -1 +1 @@ -Subproject commit bce2d6a7048025c6e6c05df9d98b206c23f6dbab +Subproject commit 5c46b2e13ab1dd7232b28f017fd7e49ca740f5a4 From a3fd98e73163e16a824c8c53c5bf73c3b5135360 Mon Sep 17 00:00:00 2001 From: Dmitry Maksyoma Date: Mon, 24 Feb 2025 19:31:10 +1300 Subject: [PATCH 11/73] KASM-6904 WIP --- alpine/alpine-devenv.dockerfile | 13 ++++ alpine/build | 1 + alpine/kasmvncserver/APKBUILD | 101 ++++++++++++++++++++++++++++++++ 3 files changed, 115 insertions(+) create mode 100644 alpine/alpine-devenv.dockerfile create mode 100755 alpine/build create mode 100644 alpine/kasmvncserver/APKBUILD diff --git a/alpine/alpine-devenv.dockerfile b/alpine/alpine-devenv.dockerfile new file mode 100644 index 0000000..89d42f8 --- /dev/null +++ b/alpine/alpine-devenv.dockerfile @@ -0,0 +1,13 @@ +FROM alpine:3.21 + +RUN apk add abuild sudo less +ENV HOME /src +WORKDIR /src/kasmvncserver + +RUN adduser --disabled-password docker +RUN adduser docker abuild +RUN echo "docker ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers + +RUN apk add rsync binutils + +USER docker diff --git a/alpine/build b/alpine/build new file mode 100755 index 0000000..0658148 --- /dev/null +++ b/alpine/build @@ -0,0 +1 @@ +docker build -f alpine-devenv.dockerfile -t alpine-devenv . diff --git a/alpine/kasmvncserver/APKBUILD b/alpine/kasmvncserver/APKBUILD new file mode 100644 index 0000000..f3fa72c --- /dev/null +++ b/alpine/kasmvncserver/APKBUILD @@ -0,0 +1,101 @@ +#!/bin/bash + +# Contributor: +# Maintainer: Kasm Technologies LLC +pkgname=kasmvncserver +pkgver=1.3.3 +pkgrel=0 +pkgdesc="foo" +url="https://github.com/kasmtech/KasmVNC" +arch="x86_64" +license="GPL-2.0-or-later" +depends=" + libgomp + libjpeg-turbo + libwebp + libxfont2 + libxshmfence + mesa-gbm + pciutils-libs + perl + perl-datetime + perl-hash-merge-simple + perl-list-moreutils + perl-switch + perl-try-tiny + perl-yaml-tiny + perl-datetime + perl-datetime-timezone + pixman + py3-xdg + setxkbmap + xauth + xf86-video-amdgpu + xf86-video-ati + xf86-video-nouveau + xf86-video-intel + xkbcomp + xkeyboard-config + xterm + bash + " +makedepends=" + rsync + binutils + mesa-gl + libxcursor + " +checkdepends="" +install="" +subpackages="" +source="" +builddir="$srcdir/" + + +build() { + tar -xzf ../kasmvnc.alpine_321_x86_64.tgz -C "$srcdir"; +} + +check() { + # Replace with proper check command(s). + # Remove and add !check option if there is no check command. + : +} + +package() { + export SRC="$srcdir/usr/local"; + export SRC_BIN="$SRC/bin"; + export DESTDIR="$pkgdir"; + export DST_MAN="$DESTDIR/usr/share/man/man1"; + + # Replace with proper package command(s) + echo "woo"; + echo "D: $DESTDIR"; + + echo "installing files"; + mkdir -p $pkgdir/usr/bin $pkgdir/usr/lib \ + $pkgdir/usr/share/perl5/vendor_perl $pkgdir/etc/kasmvnc; +#$pkgdir/usr/share/man/man1 \ +#$pkgdir/usr/share/doc/kasmvncserver + cp $SRC_BIN/Xvnc $pkgdir/usr/bin/Xkasmvnc; + cd $pkgdir/usr/bin/ && ln -s Xkasmvnc Xvnc; + cp $SRC_BIN/vncserver $pkgdir/usr/bin/kasmvncserver; + cd $pkgdir/usr/bin/ && ln -s kasmvncserver vncserver; + cp -r $SRC_BIN/KasmVNC $pkgdir/usr/share/perl5/vendor_perl; + cp $SRC_BIN/vncconfig $pkgdir/usr/bin/kasmvncconfig; + cp $SRC_BIN/kasmvncpasswd $pkgdir/usr/bin/; + cd $pkgdir/usr/bin/ && ln -s kasmvncpasswd vncpasswd; + cp $SRC_BIN/kasmxproxy $pkgdir/usr/bin/; + cp -r $SRC/lib/kasmvnc/ $pkgdir/usr/lib/kasmvncserver; + #cp -r $SRC/share/doc/kasmvnc*/* $pkgdir/usr/share/doc/kasmvncserver/ + rsync -r --links --safe-links --exclude '.git*' --exclude po2js \ + --exclude xgettext-html --exclude www/utils/ --exclude .eslintrc \ + $SRC/share/kasmvnc $pkgdir/usr/share; + sed -e 's/^\([^#]\)/# \1/' $SRC/share/kasmvnc/kasmvnc_defaults.yaml > \ + $pkgdir/etc/kasmvnc/kasmvnc.yaml; + # cp $SRC/man/man1/Xvnc.1 $pkgdir/usr/share/man/man1/Xkasmvnc.1 + # cp $SRC/share/man/man1/vncserver.1 $DST_MAN/kasmvncserver.1 + # cp $SRC/share/man/man1/kasmxproxy.1 $DST_MAN/kasmxproxy.1 + # cp $SRC/share/man/man1/vncpasswd.1 $DST_MAN/kasmvncpasswd.1 + # cp $SRC/share/man/man1/vncconfig.1 $DST_MAN/kasmvncconfig.1 +} From ce945d5a1deed74fb77abf4eeee66926dec760a1 Mon Sep 17 00:00:00 2001 From: Dmitry Maksyoma Date: Wed, 26 Feb 2025 17:30:04 +1300 Subject: [PATCH 12/73] KASM-6904 Alpine: add certificate support --- alpine/kasmvncserver/APKBUILD | 9 +++++-- .../kasmvncserver.post-deinstall | 3 +++ .../kasmvncserver/kasmvncserver.post-install | 26 +++++++++++++++++++ 3 files changed, 36 insertions(+), 2 deletions(-) create mode 100755 alpine/kasmvncserver/kasmvncserver.post-deinstall create mode 100755 alpine/kasmvncserver/kasmvncserver.post-install diff --git a/alpine/kasmvncserver/APKBUILD b/alpine/kasmvncserver/APKBUILD index f3fa72c..52b08c3 100644 --- a/alpine/kasmvncserver/APKBUILD +++ b/alpine/kasmvncserver/APKBUILD @@ -10,11 +10,13 @@ url="https://github.com/kasmtech/KasmVNC" arch="x86_64" license="GPL-2.0-or-later" depends=" + bash libgomp libjpeg-turbo libwebp libxfont2 libxshmfence + mcookie mesa-gbm pciutils-libs perl @@ -37,7 +39,6 @@ depends=" xkbcomp xkeyboard-config xterm - bash " makedepends=" rsync @@ -46,7 +47,7 @@ makedepends=" libxcursor " checkdepends="" -install="" +install="$pkgname.post-install $pkgname.post-deinstall" subpackages="" source="" builddir="$srcdir/" @@ -91,6 +92,10 @@ package() { rsync -r --links --safe-links --exclude '.git*' --exclude po2js \ --exclude xgettext-html --exclude www/utils/ --exclude .eslintrc \ $SRC/share/kasmvnc $pkgdir/usr/share; + sed -i -e 's!pem_certificate: .\+$!pem_certificate: /etc/ssl/private/kasmvnc.pem!' \ + $DESTDIR/usr/share/kasmvnc/kasmvnc_defaults.yaml + sed -i -e 's!pem_key: .\+$!pem_key: /etc/ssl/private/kasmvnc.pem!' \ + $DESTDIR/usr/share/kasmvnc/kasmvnc_defaults.yaml sed -e 's/^\([^#]\)/# \1/' $SRC/share/kasmvnc/kasmvnc_defaults.yaml > \ $pkgdir/etc/kasmvnc/kasmvnc.yaml; # cp $SRC/man/man1/Xvnc.1 $pkgdir/usr/share/man/man1/Xkasmvnc.1 diff --git a/alpine/kasmvncserver/kasmvncserver.post-deinstall b/alpine/kasmvncserver/kasmvncserver.post-deinstall new file mode 100755 index 0000000..b30760c --- /dev/null +++ b/alpine/kasmvncserver/kasmvncserver.post-deinstall @@ -0,0 +1,3 @@ +#!/bin/sh + +rm -f /etc/ssl/private/kasmvnc.pem diff --git a/alpine/kasmvncserver/kasmvncserver.post-install b/alpine/kasmvncserver/kasmvncserver.post-install new file mode 100755 index 0000000..1d9f546 --- /dev/null +++ b/alpine/kasmvncserver/kasmvncserver.post-install @@ -0,0 +1,26 @@ +#!/bin/bash + +set -e + +kasmvnc_group="kasmvnc-cert" + +create_kasmvnc_group() { + if ! getent group "$kasmvnc_group" >/dev/null; then + addgroup --system "$kasmvnc_group" + fi +} + +make_self_signed_certificate() { + local cert_file=/etc/ssl/private/kasmvnc.pem + [ -f "$cert_file" ] && return 0 + + openssl req -x509 -nodes -days 3650 -newkey rsa:2048 \ + -keyout "$cert_file" \ + -out "$cert_file" -subj \ + "/C=US/ST=VA/L=None/O=None/OU=DoFu/CN=kasm/emailAddress=none@none.none" + chgrp "$kasmvnc_group" "$cert_file" + chmod 640 "$cert_file" +} + +create_kasmvnc_group +make_self_signed_certificate From 44ef733f93787707003449388fd8e558aa73fd2d Mon Sep 17 00:00:00 2001 From: Dmitry Maksyoma Date: Wed, 26 Feb 2025 17:47:45 +1300 Subject: [PATCH 13/73] KASM-6904 Alpine: add -doc package --- alpine/kasmvncserver/APKBUILD | 36 ++++++++++++++++++++++------------- 1 file changed, 23 insertions(+), 13 deletions(-) diff --git a/alpine/kasmvncserver/APKBUILD b/alpine/kasmvncserver/APKBUILD index 52b08c3..b29b098 100644 --- a/alpine/kasmvncserver/APKBUILD +++ b/alpine/kasmvncserver/APKBUILD @@ -45,10 +45,11 @@ makedepends=" binutils mesa-gl libxcursor + gzip " checkdepends="" install="$pkgname.post-install $pkgname.post-deinstall" -subpackages="" +subpackages="$pkgname-doc" source="" builddir="$srcdir/" @@ -69,15 +70,9 @@ package() { export DESTDIR="$pkgdir"; export DST_MAN="$DESTDIR/usr/share/man/man1"; - # Replace with proper package command(s) - echo "woo"; - echo "D: $DESTDIR"; - echo "installing files"; mkdir -p $pkgdir/usr/bin $pkgdir/usr/lib \ $pkgdir/usr/share/perl5/vendor_perl $pkgdir/etc/kasmvnc; -#$pkgdir/usr/share/man/man1 \ -#$pkgdir/usr/share/doc/kasmvncserver cp $SRC_BIN/Xvnc $pkgdir/usr/bin/Xkasmvnc; cd $pkgdir/usr/bin/ && ln -s Xkasmvnc Xvnc; cp $SRC_BIN/vncserver $pkgdir/usr/bin/kasmvncserver; @@ -88,7 +83,6 @@ package() { cd $pkgdir/usr/bin/ && ln -s kasmvncpasswd vncpasswd; cp $SRC_BIN/kasmxproxy $pkgdir/usr/bin/; cp -r $SRC/lib/kasmvnc/ $pkgdir/usr/lib/kasmvncserver; - #cp -r $SRC/share/doc/kasmvnc*/* $pkgdir/usr/share/doc/kasmvncserver/ rsync -r --links --safe-links --exclude '.git*' --exclude po2js \ --exclude xgettext-html --exclude www/utils/ --exclude .eslintrc \ $SRC/share/kasmvnc $pkgdir/usr/share; @@ -98,9 +92,25 @@ package() { $DESTDIR/usr/share/kasmvnc/kasmvnc_defaults.yaml sed -e 's/^\([^#]\)/# \1/' $SRC/share/kasmvnc/kasmvnc_defaults.yaml > \ $pkgdir/etc/kasmvnc/kasmvnc.yaml; - # cp $SRC/man/man1/Xvnc.1 $pkgdir/usr/share/man/man1/Xkasmvnc.1 - # cp $SRC/share/man/man1/vncserver.1 $DST_MAN/kasmvncserver.1 - # cp $SRC/share/man/man1/kasmxproxy.1 $DST_MAN/kasmxproxy.1 - # cp $SRC/share/man/man1/vncpasswd.1 $DST_MAN/kasmvncpasswd.1 - # cp $SRC/share/man/man1/vncconfig.1 $DST_MAN/kasmvncconfig.1 +} + +doc() { + set -e + export SRC="$srcdir/usr/local"; + export SRC_BIN="$SRC/bin"; + export DESTDIR="$subpkgdir"; + export DST_MAN="$DESTDIR/usr/share/man/man1"; + + mkdir -p $subpkgdir/usr/share/man/man1 \ + $subpkgdir/usr/share/doc/kasmvncserver + cp -r $SRC/share/doc/kasmvnc*/* $subpkgdir/usr/share/doc/kasmvncserver/ + cp $SRC/man/man1/Xvnc.1 $subpkgdir/usr/share/man/man1/Xkasmvnc.1 + cp $SRC/share/man/man1/vncserver.1 $DST_MAN/kasmvncserver.1 + cp $SRC/share/man/man1/kasmxproxy.1 $DST_MAN/kasmxproxy.1 + cp $SRC/share/man/man1/vncpasswd.1 $DST_MAN/kasmvncpasswd.1 + cp $SRC/share/man/man1/vncconfig.1 $DST_MAN/kasmvncconfig.1 + gzip -9 $DST_MAN/* + cd $DST_MAN && ln -s Xkasmvnc.1.gz Xvnc.1.gz && \ + ln -s kasmvncserver.1.gz vncserver.1.gz && \ + ln -s kasmvncpasswd.1.gz vncpasswd.1.gz } From de99c920972b81a5b0e875bd9bc7c4b098eabfe6 Mon Sep 17 00:00:00 2001 From: Dmitry Maksyoma Date: Wed, 26 Feb 2025 17:50:14 +1300 Subject: [PATCH 14/73] KASM-6904 Alpine: add package description --- alpine/kasmvncserver/APKBUILD | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/alpine/kasmvncserver/APKBUILD b/alpine/kasmvncserver/APKBUILD index b29b098..1d4a256 100644 --- a/alpine/kasmvncserver/APKBUILD +++ b/alpine/kasmvncserver/APKBUILD @@ -5,7 +5,7 @@ pkgname=kasmvncserver pkgver=1.3.3 pkgrel=0 -pkgdesc="foo" +pkgdesc="KasmVNC provides remote web-based access to a Desktop or application." url="https://github.com/kasmtech/KasmVNC" arch="x86_64" license="GPL-2.0-or-later" From 8343f4a02a73a03e230b2a43550a79b465da94d1 Mon Sep 17 00:00:00 2001 From: Dmitry Maksyoma Date: Thu, 27 Feb 2025 15:27:37 +1300 Subject: [PATCH 15/73] KASM-6904 Alpine: add openssl dependency --- alpine/kasmvncserver/APKBUILD | 1 + 1 file changed, 1 insertion(+) diff --git a/alpine/kasmvncserver/APKBUILD b/alpine/kasmvncserver/APKBUILD index 1d4a256..bf74e65 100644 --- a/alpine/kasmvncserver/APKBUILD +++ b/alpine/kasmvncserver/APKBUILD @@ -18,6 +18,7 @@ depends=" libxshmfence mcookie mesa-gbm + openssl pciutils-libs perl perl-datetime From f062e9727a983a4a07f741f515285632df35a192 Mon Sep 17 00:00:00 2001 From: Dmitry Maksyoma Date: Thu, 27 Feb 2025 15:35:15 +1300 Subject: [PATCH 16/73] KASM-6904 Alpine: remove redundant code --- alpine/alpine-devenv.dockerfile | 2 -- 1 file changed, 2 deletions(-) diff --git a/alpine/alpine-devenv.dockerfile b/alpine/alpine-devenv.dockerfile index 89d42f8..63e2bff 100644 --- a/alpine/alpine-devenv.dockerfile +++ b/alpine/alpine-devenv.dockerfile @@ -8,6 +8,4 @@ RUN adduser --disabled-password docker RUN adduser docker abuild RUN echo "docker ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers -RUN apk add rsync binutils - USER docker From 232e97a8926567965db6ca5e8bc9aa79afa7dea6 Mon Sep 17 00:00:00 2001 From: Dmitry Maksyoma Date: Thu, 27 Feb 2025 22:35:56 +1300 Subject: [PATCH 17/73] KASM-6904 Alpine: update 3.21 pipeline to build apk --- alpine/kasmvncserver/APKBUILD | 3 ++- builder/build-apk | 2 ++ builder/build-apk-inside-docker | 6 ++++-- builder/dockerfile.alpine_321.apk.build | 6 ++++++ 4 files changed, 14 insertions(+), 3 deletions(-) diff --git a/alpine/kasmvncserver/APKBUILD b/alpine/kasmvncserver/APKBUILD index bf74e65..46135e4 100644 --- a/alpine/kasmvncserver/APKBUILD +++ b/alpine/kasmvncserver/APKBUILD @@ -56,7 +56,8 @@ builddir="$srcdir/" build() { - tar -xzf ../kasmvnc.alpine_321_x86_64.tgz -C "$srcdir"; + local alpine_version=$(cat /etc/alpine-release | awk -F. '{ print $1$2 }') + tar -xzf "/src/builder/build/kasmvnc.alpine_$alpine_version.tar.gz" -C "$srcdir"; } check() { diff --git a/builder/build-apk b/builder/build-apk index 73fa677..b790d57 100755 --- a/builder/build-apk +++ b/builder/build-apk @@ -12,6 +12,8 @@ docker build -t kasmvnc_apkbuilder_${os}:${os_codename} -f \ source_dir=$(echo $PWD) L_UID=$(id -u) L_GID=$(id -g) +ABUILD_GID=300 docker run --rm -v "$source_dir":/src --user $L_UID:$L_GID \ + --group-add $ABUILD_GID \ kasmvnc_apkbuilder_${os}:${os_codename} /bin/bash -c \ '/src/builder/build-apk-inside-docker' diff --git a/builder/build-apk-inside-docker b/builder/build-apk-inside-docker index 08617f7..ad7acc6 100755 --- a/builder/build-apk-inside-docker +++ b/builder/build-apk-inside-docker @@ -4,8 +4,10 @@ set -e os=alpine os_codename=$(cat /etc/os-release | awk '/VERSION_ID/' | grep -o '[[:digit:]]' | tr -d '\n' | head -c 3) +apkbuild_dir=/src/alpine/kasmvncserver/ + +cd "$apkbuild_dir" && abuild -r mkdir -p /src/builder/build/${os}_${os_codename} mv \ - /src/builder/build/kasmvnc.${os}_${os_codename}.tar.gz \ - /src/builder/build/${os}_${os_codename}/kasmvnc.${os}_${os_codename}_$(uname -m).tgz + /src/alpine/packages/alpine/x86_64/*.apk /src/builder/build/${os}_${os_codename}/ diff --git a/builder/dockerfile.alpine_321.apk.build b/builder/dockerfile.alpine_321.apk.build index b67ef79..a6c5867 100644 --- a/builder/dockerfile.alpine_321.apk.build +++ b/builder/dockerfile.alpine_321.apk.build @@ -1,6 +1,12 @@ FROM alpine:3.21 RUN apk add shadow bash +RUN apk add abuild sudo less + +ENV HOME /src/alpine +WORKDIR $HOME/kasmvncserver + +COPY alpine/.abuild/*.pub /etc/apk/keys/ RUN useradd -m docker && echo "docker:docker" | chpasswd From dd841cc0e636b85245dd5b187fde0e8d3d571117 Mon Sep 17 00:00:00 2001 From: Dmitry Maksyoma Date: Mon, 3 Mar 2025 12:19:17 +1300 Subject: [PATCH 18/73] KASM-6904 Alpine: add signing key via env vars --- alpine/.abuild/abuild.conf | 2 ++ builder/build-apk | 20 ++++++++++++++++---- builder/dockerfile.alpine_321.apk.build | 8 +++++++- 3 files changed, 25 insertions(+), 5 deletions(-) create mode 100644 alpine/.abuild/abuild.conf diff --git a/alpine/.abuild/abuild.conf b/alpine/.abuild/abuild.conf new file mode 100644 index 0000000..4be7a96 --- /dev/null +++ b/alpine/.abuild/abuild.conf @@ -0,0 +1,2 @@ +PACKAGER="Kasm Technologies LLC " +PACKAGER_PRIVKEY="/src/alpine/.abuild/kasmvnc_signing_key.rsa" diff --git a/builder/build-apk b/builder/build-apk index b790d57..00ead77 100755 --- a/builder/build-apk +++ b/builder/build-apk @@ -2,17 +2,29 @@ set -e +copy_signing_key_to_user_abuild_dir() { + docker run --rm -v $PWD/alpine/.abuild:/abuild --user $L_UID:$L_GID \ + $builder_image \ + cp /etc/apk/keys/kasmvnc_signing_key.rsa.pub \ + /etc/apk/keys/kasmvnc_signing_key.rsa /abuild +} + . builder/os_ver_cli.sh cd "$(dirname "$0")/.." -docker build -t kasmvnc_apkbuilder_${os}:${os_codename} -f \ - builder/dockerfile.${os}_${os_codename}.apk.build . - -source_dir=$(echo $PWD) L_UID=$(id -u) L_GID=$(id -g) ABUILD_GID=300 + +builder_image=kasmvnc_apkbuilder_${os}:${os_codename} +docker build -t $builder_image \ + --build-arg KASMVNC_ALPINE_PRIVATE_KEY \ + --build-arg KASMVNC_ALPINE_PUBLIC_KEY \ + -f builder/dockerfile.${os}_${os_codename}.apk.build . +copy_signing_key_to_user_abuild_dir + +source_dir=$(echo $PWD) docker run --rm -v "$source_dir":/src --user $L_UID:$L_GID \ --group-add $ABUILD_GID \ kasmvnc_apkbuilder_${os}:${os_codename} /bin/bash -c \ diff --git a/builder/dockerfile.alpine_321.apk.build b/builder/dockerfile.alpine_321.apk.build index a6c5867..8771f31 100644 --- a/builder/dockerfile.alpine_321.apk.build +++ b/builder/dockerfile.alpine_321.apk.build @@ -6,7 +6,13 @@ RUN apk add abuild sudo less ENV HOME /src/alpine WORKDIR $HOME/kasmvncserver -COPY alpine/.abuild/*.pub /etc/apk/keys/ +ARG KASMVNC_ALPINE_PRIVATE_KEY +ARG KASMVNC_ALPINE_PUBLIC_KEY +ENV APK_KEYS_DIR=/etc/apk/keys +RUN echo -n "$KASMVNC_ALPINE_PRIVATE_KEY" > \ + $APK_KEYS_DIR/kasmvnc_signing_key.rsa +RUN echo -n "$KASMVNC_ALPINE_PUBLIC_KEY" > \ + $APK_KEYS_DIR/kasmvnc_signing_key.rsa.pub RUN useradd -m docker && echo "docker:docker" | chpasswd From 628039aed3ea98990fdd5e5cfc69202138b9a1f7 Mon Sep 17 00:00:00 2001 From: matt Date: Mon, 3 Mar 2025 12:58:05 +0000 Subject: [PATCH 19/73] added dev container for building kasmvnc --- .gitignore | 5 +++++ BUILDING.txt | 26 ++++++++++++++++++++++++++ CMakeLists.txt | 2 +- builder/dockerfile.ubuntu_jammy.dev | 25 +++++++++++++++++++++++++ builder/scripts/build-libjpeg-turbo | 1 + builder/scripts/build-webp | 20 ++++++++++++++------ 6 files changed, 72 insertions(+), 7 deletions(-) create mode 100644 builder/dockerfile.ubuntu_jammy.dev diff --git a/.gitignore b/.gitignore index f4a278e..bc7e8b5 100644 --- a/.gitignore +++ b/.gitignore @@ -4,6 +4,7 @@ *.lo .deps .libs +*.swp CMakeFiles CMakeCache.txt @@ -12,6 +13,10 @@ Makefile Makefile.in config.h +libjpeg-turbo/ +xorg.build/ +install_manifest.txt + builder/build/ builder/www/ spec/tmp diff --git a/BUILDING.txt b/BUILDING.txt index b0f3782..45b5f3f 100644 --- a/BUILDING.txt +++ b/BUILDING.txt @@ -71,6 +71,32 @@ For in-tree builds, these directories are the same. Building KasmVNC ================= +Building the KasmVNC Server using Docker +---------------------------------------- + +```bash +git submodule init +git submodule update --remote --merge +sudo docker build -t kasmvnc:dev -f builder/dockerfile.ubuntu_jammy.dev . +sudo docker run -it -v ./:/src -p 6901:6901 kasmvnc:dev +``` + +Now from inside the container. + +```bash +kasm-user@5c2802e4cf1e:/src$ sudo builder/scripts/build-webp +kasm-user@5c2802e4cf1e:/src$ sudo builder/scripts/build-build-libjpeg-turbo +kasm-user@5c2802e4cf1e:/src$ builder/build.sh +``` + +Now run Xvnc and Xfce4 from inside the container + +```bash +/src/xorg.build/bin/Xvnc -interface 0.0.0.0 -PublicIP 127.0.0.1 -disableBasicAuth -RectThreads 0 -Log *:stdout:100 -httpd /src/kasmweb/dist -sslOnly 0 -SecurityTypes None -websocketPort 6901 :1 +/usr/bin/xfce4-session --display :1 +``` + +Now open a browser and navigate to your dev VM on port 6901. Building the KasmVNC Server on Modern Unix/Linux Systems --------------------------------------------------------- diff --git a/CMakeLists.txt b/CMakeLists.txt index 3807fc4..1c3bded 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -245,7 +245,7 @@ if(ENABLE_NLS) add_subdirectory(po) endif() -add_subdirectory(tests) +####add_subdirectory(tests) include(cmake/BuildPackages.cmake) diff --git a/builder/dockerfile.ubuntu_jammy.dev b/builder/dockerfile.ubuntu_jammy.dev new file mode 100644 index 0000000..d13638d --- /dev/null +++ b/builder/dockerfile.ubuntu_jammy.dev @@ -0,0 +1,25 @@ +FROM kasmweb/ubuntu-jammy-desktop:develop + +ENV KASMVNC_BUILD_OS ubuntu +ENV KASMVNC_BUILD_OS_CODENAME jammy +ENV XORG_VER 21.1.3 +ENV XORG_PATCH 21 +ENV DEBIAN_FRONTEND noninteractive + +EXPOSE 6901 + +USER root + +RUN sed -i 's$# deb-src$deb-src$' /etc/apt/sources.list && \ + apt update && \ + apt install -y socat sudo libxfont-dev cmake git libgnutls28-dev vim wget tightvncserver curl libpng-dev libtiff-dev libgif-dev libavcodec-dev libssl-dev libxrandr-dev libxcursor-dev pkg-config libfreetype6-dev libxtst-dev autoconf automake libtool xutils-dev libpixman-1-dev libxshmfence-dev libxcvt-dev libxkbfile-dev x11proto-dev libgbm-dev inotify-tools && \ + echo "kasm-user ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers + +RUN curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash - +RUN apt install -y nodejs + +USER 1000 + +WORKDIR /src + +ENTRYPOINT /bin/bash diff --git a/builder/scripts/build-libjpeg-turbo b/builder/scripts/build-libjpeg-turbo index 1510f24..13d1f3f 100755 --- a/builder/scripts/build-libjpeg-turbo +++ b/builder/scripts/build-libjpeg-turbo @@ -22,6 +22,7 @@ ensure_libjpeg_is_fast() { prepare_libjpeg_source() { export JPEG_TURBO_RELEASE=$(curl -sX GET "https://api.github.com/repos/libjpeg-turbo/libjpeg-turbo/releases/latest" \ | awk '/tag_name/{print $4;exit}' FS='[""]') + [ -d ./libjpeg-turbo ] && rm -rf ./libjpeg-turbo mkdir libjpeg-turbo curl -Ls "https://github.com/libjpeg-turbo/libjpeg-turbo/archive/${JPEG_TURBO_RELEASE}.tar.gz" | \ tar xzvf - -C libjpeg-turbo/ --strip-components=1 diff --git a/builder/scripts/build-webp b/builder/scripts/build-webp index 82b07ba..a6b2fd0 100755 --- a/builder/scripts/build-webp +++ b/builder/scripts/build-webp @@ -2,18 +2,25 @@ set -euo pipefail -webp_tar_url=https://storage.googleapis.com/downloads.webmproject.org/releases/webp/libwebp-1.2.4.tar.gz +WEBP_VERSION="1.2.4" +WEBP_TAR_URL="https://storage.googleapis.com/downloads.webmproject.org/releases/webp/libwebp-${WEBP_VERSION}.tar.gz" +WEBP_TAR_FILE="/tmp/libwebp-${WEBP_VERSION}.tar.gz" +WEBP_SRC_DIR="/tmp/libwebp-${WEBP_VERSION}" prepare_source() { cd /tmp - wget "$webp_tar_url" - tar -xzf /tmp/libwebp-* - rm /tmp/libwebp-*.tar.gz - cd /tmp/libwebp-* + + # Remove old files if they exist + [ -f "$WEBP_TAR_FILE" ] && rm "$WEBP_TAR_FILE" + [ -d "$WEBP_SRC_DIR" ] && rm -rf "$WEBP_SRC_DIR" + + wget "$WEBP_TAR_URL" + tar -xzf "$WEBP_TAR_FILE" + cd "$WEBP_SRC_DIR" } build_and_install() { - export MAKEFLAGS=-j`nproc` + export MAKEFLAGS=-j$(nproc) ./configure --enable-static --disable-shared make make install @@ -21,3 +28,4 @@ build_and_install() { prepare_source build_and_install + From 3182b902d2a19ab1a5e807e3f53e1e1ddf78f921 Mon Sep 17 00:00:00 2001 From: matt Date: Mon, 3 Mar 2025 13:14:11 +0000 Subject: [PATCH 20/73] updates to build instructions --- BUILDING.txt | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/BUILDING.txt b/BUILDING.txt index 45b5f3f..85918e5 100644 --- a/BUILDING.txt +++ b/BUILDING.txt @@ -84,15 +84,22 @@ sudo docker run -it -v ./:/src -p 6901:6901 kasmvnc:dev Now from inside the container. ```bash -kasm-user@5c2802e4cf1e:/src$ sudo builder/scripts/build-webp -kasm-user@5c2802e4cf1e:/src$ sudo builder/scripts/build-build-libjpeg-turbo -kasm-user@5c2802e4cf1e:/src$ builder/build.sh +# build frontend +cd kasmweb +npm install +npm run build # <-- only run this on subsequent changes to front-end code +cd .. +# build dependencies +sudo builder/scripts/build-webp +sudo builder/scripts/build-build-libjpeg-turbo +# Build KasmVNC +builder/build.sh ``` Now run Xvnc and Xfce4 from inside the container ```bash -/src/xorg.build/bin/Xvnc -interface 0.0.0.0 -PublicIP 127.0.0.1 -disableBasicAuth -RectThreads 0 -Log *:stdout:100 -httpd /src/kasmweb/dist -sslOnly 0 -SecurityTypes None -websocketPort 6901 :1 +/src/xorg.build/bin/Xvnc -interface 0.0.0.0 -PublicIP 127.0.0.1 -disableBasicAuth -RectThreads 0 -Log *:stdout:100 -httpd /src/kasmweb/dist -sslOnly 0 -SecurityTypes None -websocketPort 6901 :1 & /usr/bin/xfce4-session --display :1 ``` From c3a3d67cdf3be7712038ab0453a870b6e23fe7a9 Mon Sep 17 00:00:00 2001 From: Dmitry Maksyoma Date: Tue, 4 Mar 2025 17:58:14 +1300 Subject: [PATCH 21/73] KASM-6904 Alpine: add arm support --- alpine/kasmvncserver/APKBUILD | 2 +- builder/build-apk-inside-docker | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/alpine/kasmvncserver/APKBUILD b/alpine/kasmvncserver/APKBUILD index 46135e4..3138c47 100644 --- a/alpine/kasmvncserver/APKBUILD +++ b/alpine/kasmvncserver/APKBUILD @@ -7,7 +7,7 @@ pkgver=1.3.3 pkgrel=0 pkgdesc="KasmVNC provides remote web-based access to a Desktop or application." url="https://github.com/kasmtech/KasmVNC" -arch="x86_64" +arch="x86_64 aarch64" license="GPL-2.0-or-later" depends=" bash diff --git a/builder/build-apk-inside-docker b/builder/build-apk-inside-docker index ad7acc6..f06d9e8 100755 --- a/builder/build-apk-inside-docker +++ b/builder/build-apk-inside-docker @@ -10,4 +10,4 @@ cd "$apkbuild_dir" && abuild -r mkdir -p /src/builder/build/${os}_${os_codename} mv \ - /src/alpine/packages/alpine/x86_64/*.apk /src/builder/build/${os}_${os_codename}/ + /src/alpine/packages/alpine/$(arch)/*.apk /src/builder/build/${os}_${os_codename}/ From 45f9f8d3b32733306a302a795e5d083ae3c42db8 Mon Sep 17 00:00:00 2001 From: Dmitry Maksyoma Date: Tue, 4 Mar 2025 20:19:32 +1300 Subject: [PATCH 22/73] KASM-6904 Alpine: 3.20 apk package support --- builder/dockerfile.alpine_320.apk.build | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/builder/dockerfile.alpine_320.apk.build b/builder/dockerfile.alpine_320.apk.build index d99e67e..515d825 100644 --- a/builder/dockerfile.alpine_320.apk.build +++ b/builder/dockerfile.alpine_320.apk.build @@ -1,6 +1,18 @@ FROM alpine:3.20 RUN apk add shadow bash +RUN apk add abuild sudo less + +ENV HOME /src/alpine +WORKDIR $HOME/kasmvncserver + +ARG KASMVNC_ALPINE_PRIVATE_KEY +ARG KASMVNC_ALPINE_PUBLIC_KEY +ENV APK_KEYS_DIR=/etc/apk/keys +RUN echo -n "$KASMVNC_ALPINE_PRIVATE_KEY" > \ + $APK_KEYS_DIR/kasmvnc_signing_key.rsa +RUN echo -n "$KASMVNC_ALPINE_PUBLIC_KEY" > \ + $APK_KEYS_DIR/kasmvnc_signing_key.rsa.pub RUN useradd -m docker && echo "docker:docker" | chpasswd From 0c2e88c4597d8de14e69cdcc5893a15b2c9b3234 Mon Sep 17 00:00:00 2001 From: Dmitry Maksyoma Date: Tue, 4 Mar 2025 20:54:08 +1300 Subject: [PATCH 23/73] KASM-6904 Alpine: 3.19 apk package support --- builder/dockerfile.alpine_319.apk.build | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/builder/dockerfile.alpine_319.apk.build b/builder/dockerfile.alpine_319.apk.build index a0930b4..7771b48 100644 --- a/builder/dockerfile.alpine_319.apk.build +++ b/builder/dockerfile.alpine_319.apk.build @@ -1,6 +1,18 @@ FROM alpine:3.19 RUN apk add shadow bash +RUN apk add abuild sudo less + +ENV HOME /src/alpine +WORKDIR $HOME/kasmvncserver + +ARG KASMVNC_ALPINE_PRIVATE_KEY +ARG KASMVNC_ALPINE_PUBLIC_KEY +ENV APK_KEYS_DIR=/etc/apk/keys +RUN echo -n "$KASMVNC_ALPINE_PRIVATE_KEY" > \ + $APK_KEYS_DIR/kasmvnc_signing_key.rsa +RUN echo -n "$KASMVNC_ALPINE_PUBLIC_KEY" > \ + $APK_KEYS_DIR/kasmvnc_signing_key.rsa.pub RUN useradd -m docker && echo "docker:docker" | chpasswd From ebfe61392aa4838d23ae18841f2e7368530755a4 Mon Sep 17 00:00:00 2001 From: Dmitry Maksyoma Date: Wed, 5 Mar 2025 14:45:55 +1300 Subject: [PATCH 24/73] KASM-6904 Alpine: 3.18 apk package support --- builder/dockerfile.alpine_318.apk.build | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/builder/dockerfile.alpine_318.apk.build b/builder/dockerfile.alpine_318.apk.build index 9504897..209e142 100644 --- a/builder/dockerfile.alpine_318.apk.build +++ b/builder/dockerfile.alpine_318.apk.build @@ -1,6 +1,18 @@ FROM alpine:3.18 RUN apk add shadow bash +RUN apk add abuild sudo less + +ENV HOME /src/alpine +WORKDIR $HOME/kasmvncserver + +ARG KASMVNC_ALPINE_PRIVATE_KEY +ARG KASMVNC_ALPINE_PUBLIC_KEY +ENV APK_KEYS_DIR=/etc/apk/keys +RUN echo -n "$KASMVNC_ALPINE_PRIVATE_KEY" > \ + $APK_KEYS_DIR/kasmvnc_signing_key.rsa +RUN echo -n "$KASMVNC_ALPINE_PUBLIC_KEY" > \ + $APK_KEYS_DIR/kasmvnc_signing_key.rsa.pub RUN useradd -m docker && echo "docker:docker" | chpasswd From b6cc920ba5b39cfe1693865db7076cb1c1f8f86d Mon Sep 17 00:00:00 2001 From: Dmitry Maksyoma Date: Wed, 5 Mar 2025 15:00:49 +1300 Subject: [PATCH 25/73] KASM-6904 Alpine: 3.17 apk package support --- builder/dockerfile.alpine_317.apk.build | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/builder/dockerfile.alpine_317.apk.build b/builder/dockerfile.alpine_317.apk.build index 732f5f0..fafdecb 100644 --- a/builder/dockerfile.alpine_317.apk.build +++ b/builder/dockerfile.alpine_317.apk.build @@ -1,6 +1,18 @@ FROM alpine:3.17 RUN apk add shadow bash +RUN apk add abuild sudo less + +ENV HOME /src/alpine +WORKDIR $HOME/kasmvncserver + +ARG KASMVNC_ALPINE_PRIVATE_KEY +ARG KASMVNC_ALPINE_PUBLIC_KEY +ENV APK_KEYS_DIR=/etc/apk/keys +RUN echo -n "$KASMVNC_ALPINE_PRIVATE_KEY" > \ + $APK_KEYS_DIR/kasmvnc_signing_key.rsa +RUN echo -n "$KASMVNC_ALPINE_PUBLIC_KEY" > \ + $APK_KEYS_DIR/kasmvnc_signing_key.rsa.pub RUN useradd -m docker && echo "docker:docker" | chpasswd From 965ea7587a636b2c2b340fb5168d1ea250d1d218 Mon Sep 17 00:00:00 2001 From: Dmitry Maksyoma Date: Wed, 5 Mar 2025 15:08:06 +1300 Subject: [PATCH 26/73] KASM-6904 Fix CI: run abuild as user 1000, not root --- builder/build-apk | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/builder/build-apk b/builder/build-apk index 00ead77..e0d6d30 100755 --- a/builder/build-apk +++ b/builder/build-apk @@ -16,6 +16,10 @@ cd "$(dirname "$0")/.." L_UID=$(id -u) L_GID=$(id -g) ABUILD_GID=300 +if [ "$L_UID" = 0 ]; then + L_UID=1000 + L_GID=1000 +fi builder_image=kasmvnc_apkbuilder_${os}:${os_codename} docker build -t $builder_image \ From 2b731e170a65c00a74d4cbc407199afd5b8a132d Mon Sep 17 00:00:00 2001 From: Dmitry Maksyoma Date: Fri, 7 Mar 2025 14:50:20 +1300 Subject: [PATCH 27/73] KASM-6904 Fix CI --- .gitlab-ci.yml | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 6dd1bf6..168d21e 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -198,7 +198,7 @@ build_ubuntu_noble: artifacts: paths: - output/ - + build_ubuntu_noble_arm: stage: build allow_failure: true @@ -209,7 +209,7 @@ build_ubuntu_noble_arm: - *prepare_www after_script: - *prepare_artfacts - script: + script: - bash builder/build-package ubuntu noble; only: variables: @@ -617,13 +617,13 @@ build_fedora_forty: artifacts: paths: - output/ - + build_fedora_forty_arm: stage: build allow_failure: true tags: - oci-fixed-arm - before_script: + before_script: - *prepare_build - *prepare_www after_script: @@ -655,18 +655,18 @@ build_fedora_fortyone: artifacts: paths: - output/ - + build_fedora_fortyone_arm: stage: build allow_failure: true tags: - oci-fixed-arm - before_script: + before_script: - *prepare_build - *prepare_www after_script: - *prepare_artfacts - script: + script: - bash builder/build-package fedora fortyone; only: variables: @@ -779,6 +779,8 @@ build_alpine_319: artifacts: paths: - output/ + - alpine/.abuild/kasmvnc_signing_key.rsa + - alpine/.abuild/kasmvnc_signing_key.rsa.pub build_alpine_319_arm: stage: build From 259d8953ef619120ed14f52dbbfb464c4669bbcf Mon Sep 17 00:00:00 2001 From: Dmitry Maksyoma Date: Fri, 7 Mar 2025 15:00:56 +1300 Subject: [PATCH 28/73] Revert "KASM-6904 Fix CI" This reverts commit 2b731e170a65c00a74d4cbc407199afd5b8a132d. --- .gitlab-ci.yml | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 168d21e..6dd1bf6 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -198,7 +198,7 @@ build_ubuntu_noble: artifacts: paths: - output/ - + build_ubuntu_noble_arm: stage: build allow_failure: true @@ -209,7 +209,7 @@ build_ubuntu_noble_arm: - *prepare_www after_script: - *prepare_artfacts - script: + script: - bash builder/build-package ubuntu noble; only: variables: @@ -617,13 +617,13 @@ build_fedora_forty: artifacts: paths: - output/ - + build_fedora_forty_arm: stage: build allow_failure: true tags: - oci-fixed-arm - before_script: + before_script: - *prepare_build - *prepare_www after_script: @@ -655,18 +655,18 @@ build_fedora_fortyone: artifacts: paths: - output/ - + build_fedora_fortyone_arm: stage: build allow_failure: true tags: - oci-fixed-arm - before_script: + before_script: - *prepare_build - *prepare_www after_script: - *prepare_artfacts - script: + script: - bash builder/build-package fedora fortyone; only: variables: @@ -779,8 +779,6 @@ build_alpine_319: artifacts: paths: - output/ - - alpine/.abuild/kasmvnc_signing_key.rsa - - alpine/.abuild/kasmvnc_signing_key.rsa.pub build_alpine_319_arm: stage: build From aad8725c482c14c5f4fb8f2ac38853bee421648a Mon Sep 17 00:00:00 2001 From: Dmitry Maksyoma Date: Fri, 7 Mar 2025 15:03:20 +1300 Subject: [PATCH 29/73] KASM-6904 Fix CI --- builder/dockerfile.alpine_319.apk.build | 2 ++ 1 file changed, 2 insertions(+) diff --git a/builder/dockerfile.alpine_319.apk.build b/builder/dockerfile.alpine_319.apk.build index 7771b48..2d4dfdc 100644 --- a/builder/dockerfile.alpine_319.apk.build +++ b/builder/dockerfile.alpine_319.apk.build @@ -11,8 +11,10 @@ ARG KASMVNC_ALPINE_PUBLIC_KEY ENV APK_KEYS_DIR=/etc/apk/keys RUN echo -n "$KASMVNC_ALPINE_PRIVATE_KEY" > \ $APK_KEYS_DIR/kasmvnc_signing_key.rsa +RUN echo KASMVNC_ALPINE_PRIVATE_KEY "$KASMVNC_ALPINE_PRIVATE_KEY" RUN echo -n "$KASMVNC_ALPINE_PUBLIC_KEY" > \ $APK_KEYS_DIR/kasmvnc_signing_key.rsa.pub +RUN echo KASMVNC_ALPINE_PUBLIC_KEY "$KASMVNC_ALPINE_PUBLIC_KEY" RUN useradd -m docker && echo "docker:docker" | chpasswd From 2ca875a570185147de1304f1813282cf0959e7b4 Mon Sep 17 00:00:00 2001 From: Dmitry Maksyoma Date: Fri, 7 Mar 2025 15:05:28 +1300 Subject: [PATCH 30/73] KASM-6904 Limit build to Alpine 3.19 --- .gitlab-ci.yml | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 6dd1bf6..308e3c8 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -10,7 +10,7 @@ variables: # E.g. BUILD_JOBS: build_debian_buster,build_ubuntu_bionic. This will include # arm builds, because build_debian_buster_arm matches build_debian_buster. # "BUILD_JOBS: none" won't build any build jobs, nor www. - BUILD_JOBS: all + BUILD_JOBS: build_alpine_319 DOCKER_HOST: tcp://docker:2375 DOCKER_TLS_CERTDIR: "" @@ -198,7 +198,7 @@ build_ubuntu_noble: artifacts: paths: - output/ - + build_ubuntu_noble_arm: stage: build allow_failure: true @@ -209,7 +209,7 @@ build_ubuntu_noble_arm: - *prepare_www after_script: - *prepare_artfacts - script: + script: - bash builder/build-package ubuntu noble; only: variables: @@ -617,13 +617,13 @@ build_fedora_forty: artifacts: paths: - output/ - + build_fedora_forty_arm: stage: build allow_failure: true tags: - oci-fixed-arm - before_script: + before_script: - *prepare_build - *prepare_www after_script: @@ -655,18 +655,18 @@ build_fedora_fortyone: artifacts: paths: - output/ - + build_fedora_fortyone_arm: stage: build allow_failure: true tags: - oci-fixed-arm - before_script: + before_script: - *prepare_build - *prepare_www after_script: - *prepare_artfacts - script: + script: - bash builder/build-package fedora fortyone; only: variables: From 90351722729fcd783b79abdf45ca9a315dd9facf Mon Sep 17 00:00:00 2001 From: Dmitry Maksyoma Date: Fri, 7 Mar 2025 15:16:43 +1300 Subject: [PATCH 31/73] KASM-6904 CI: .abuild as artifacts --- .gitlab-ci.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 308e3c8..abdf519 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -779,6 +779,8 @@ build_alpine_319: artifacts: paths: - output/ + - alpine/.abuild + - when: always build_alpine_319_arm: stage: build From f0bf5fdb40aa3c9c5f0de75f94ef6429ebd5a37b Mon Sep 17 00:00:00 2001 From: Dmitry Maksyoma Date: Fri, 7 Mar 2025 15:18:45 +1300 Subject: [PATCH 32/73] KASM-6904 Fix CI --- .gitlab-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index abdf519..8a9fd92 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -780,7 +780,7 @@ build_alpine_319: paths: - output/ - alpine/.abuild - - when: always + - when: always build_alpine_319_arm: stage: build From c73142e589d358e1f3d71d915f88cc6a210fc70e Mon Sep 17 00:00:00 2001 From: Dmitry Maksyoma Date: Fri, 7 Mar 2025 15:25:48 +1300 Subject: [PATCH 33/73] KASM-6904 Fix CI --- .gitlab-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 8a9fd92..a9fbc7c 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -780,7 +780,7 @@ build_alpine_319: paths: - output/ - alpine/.abuild - - when: always + when: always build_alpine_319_arm: stage: build From 179497ddcd0acba42352d8d7db7bb72e6cb03a15 Mon Sep 17 00:00:00 2001 From: Dmitry Maksyoma Date: Fri, 7 Mar 2025 16:17:40 +1300 Subject: [PATCH 34/73] KASM-6904 CI: use masked Alpine signing key env var --- builder/dockerfile.alpine_319.apk.build | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/builder/dockerfile.alpine_319.apk.build b/builder/dockerfile.alpine_319.apk.build index 2d4dfdc..fcec8e3 100644 --- a/builder/dockerfile.alpine_319.apk.build +++ b/builder/dockerfile.alpine_319.apk.build @@ -9,8 +9,14 @@ WORKDIR $HOME/kasmvncserver ARG KASMVNC_ALPINE_PRIVATE_KEY ARG KASMVNC_ALPINE_PUBLIC_KEY ENV APK_KEYS_DIR=/etc/apk/keys -RUN echo -n "$KASMVNC_ALPINE_PRIVATE_KEY" > \ - $APK_KEYS_DIR/kasmvnc_signing_key.rsa +ENV BEGIN_PRIVATE_KEY='-----BEGIN PRIVATE KEY-----' +ENV END_PRIVATE_KEY='-----END PRIVATE KEY-----' +RUN if echo "$KASMVNC_ALPINE_PRIVATE_KEY" | grep -q -- "$BEGIN_PRIVATE_KEY"; then \ + echo "$KASMVNC_ALPINE_PRIVATE_KEY" > $APK_KEYS_DIR/kasmvnc_signing_key.rsa; \ + else \ + echo "$BEGIN_PRIVATE_KEY\n$KASMVNC_ALPINE_PRIVATE_KEY\n$END_PRIVATE_KEY" > \ + $APK_KEYS_DIR/kasmvnc_signing_key.rsa; \ + fi RUN echo KASMVNC_ALPINE_PRIVATE_KEY "$KASMVNC_ALPINE_PRIVATE_KEY" RUN echo -n "$KASMVNC_ALPINE_PUBLIC_KEY" > \ $APK_KEYS_DIR/kasmvnc_signing_key.rsa.pub From cd879fc536f7b27040880f04671b24ef1ff71bc5 Mon Sep 17 00:00:00 2001 From: Dmitry Maksyoma Date: Fri, 7 Mar 2025 16:30:59 +1300 Subject: [PATCH 35/73] KASM-6904 Use bash as docker shell in Alpine 3.19 apk build --- builder/dockerfile.alpine_319.apk.build | 2 ++ 1 file changed, 2 insertions(+) diff --git a/builder/dockerfile.alpine_319.apk.build b/builder/dockerfile.alpine_319.apk.build index fcec8e3..42e3513 100644 --- a/builder/dockerfile.alpine_319.apk.build +++ b/builder/dockerfile.alpine_319.apk.build @@ -3,6 +3,8 @@ FROM alpine:3.19 RUN apk add shadow bash RUN apk add abuild sudo less +SHELL ["/bin/bash", "-c"] + ENV HOME /src/alpine WORKDIR $HOME/kasmvncserver From a2b26eba66e0f35fc16c24735880db2b4c840f08 Mon Sep 17 00:00:00 2001 From: Dmitry Maksyoma Date: Fri, 7 Mar 2025 16:37:30 +1300 Subject: [PATCH 36/73] KASM-6904 Fix CI --- builder/dockerfile.alpine_319.apk.build | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/builder/dockerfile.alpine_319.apk.build b/builder/dockerfile.alpine_319.apk.build index 42e3513..1536c97 100644 --- a/builder/dockerfile.alpine_319.apk.build +++ b/builder/dockerfile.alpine_319.apk.build @@ -16,7 +16,7 @@ ENV END_PRIVATE_KEY='-----END PRIVATE KEY-----' RUN if echo "$KASMVNC_ALPINE_PRIVATE_KEY" | grep -q -- "$BEGIN_PRIVATE_KEY"; then \ echo "$KASMVNC_ALPINE_PRIVATE_KEY" > $APK_KEYS_DIR/kasmvnc_signing_key.rsa; \ else \ - echo "$BEGIN_PRIVATE_KEY\n$KASMVNC_ALPINE_PRIVATE_KEY\n$END_PRIVATE_KEY" > \ + echo -e "$BEGIN_PRIVATE_KEY\n$KASMVNC_ALPINE_PRIVATE_KEY\n$END_PRIVATE_KEY" > \ $APK_KEYS_DIR/kasmvnc_signing_key.rsa; \ fi RUN echo KASMVNC_ALPINE_PRIVATE_KEY "$KASMVNC_ALPINE_PRIVATE_KEY" From 5435696dc7ed9d9723dd16a6d1ab6a2033090edf Mon Sep 17 00:00:00 2001 From: Dmitry Maksyoma Date: Sat, 8 Mar 2025 17:19:11 +1300 Subject: [PATCH 37/73] KASM-6904 Print env --- builder/dockerfile.alpine_319.apk.build | 1 + 1 file changed, 1 insertion(+) diff --git a/builder/dockerfile.alpine_319.apk.build b/builder/dockerfile.alpine_319.apk.build index 1536c97..699ddbd 100644 --- a/builder/dockerfile.alpine_319.apk.build +++ b/builder/dockerfile.alpine_319.apk.build @@ -23,6 +23,7 @@ RUN echo KASMVNC_ALPINE_PRIVATE_KEY "$KASMVNC_ALPINE_PRIVATE_KEY" RUN echo -n "$KASMVNC_ALPINE_PUBLIC_KEY" > \ $APK_KEYS_DIR/kasmvnc_signing_key.rsa.pub RUN echo KASMVNC_ALPINE_PUBLIC_KEY "$KASMVNC_ALPINE_PUBLIC_KEY" +RUN env RUN useradd -m docker && echo "docker:docker" | chpasswd From be265fa9ee4396cd8ac25473341393b7eb3036ae Mon Sep 17 00:00:00 2001 From: Dmitry Maksyoma Date: Sat, 8 Mar 2025 17:25:43 +1300 Subject: [PATCH 38/73] KASM-6904 Print env --- builder/build-apk | 2 ++ 1 file changed, 2 insertions(+) diff --git a/builder/build-apk b/builder/build-apk index e0d6d30..19f8f27 100755 --- a/builder/build-apk +++ b/builder/build-apk @@ -21,6 +21,8 @@ if [ "$L_UID" = 0 ]; then L_GID=1000 fi +echo "woo" +env builder_image=kasmvnc_apkbuilder_${os}:${os_codename} docker build -t $builder_image \ --build-arg KASMVNC_ALPINE_PRIVATE_KEY \ From 950d358af9891637269a89e1a7b53505c492b4fd Mon Sep 17 00:00:00 2001 From: Dmitry Maksyoma Date: Sun, 9 Mar 2025 16:08:19 +1300 Subject: [PATCH 39/73] KASM-6904 Fix CI --- builder/dockerfile.alpine_319.apk.build | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/builder/dockerfile.alpine_319.apk.build b/builder/dockerfile.alpine_319.apk.build index 699ddbd..2c60fef 100644 --- a/builder/dockerfile.alpine_319.apk.build +++ b/builder/dockerfile.alpine_319.apk.build @@ -13,6 +13,8 @@ ARG KASMVNC_ALPINE_PUBLIC_KEY ENV APK_KEYS_DIR=/etc/apk/keys ENV BEGIN_PRIVATE_KEY='-----BEGIN PRIVATE KEY-----' ENV END_PRIVATE_KEY='-----END PRIVATE KEY-----' +ENV BEGIN_PUBLIC_KEY='-----BEGIN PUBLIC KEY-----' +ENV END_PUBLIC_KEY='-----END PUBLIC KEY-----' RUN if echo "$KASMVNC_ALPINE_PRIVATE_KEY" | grep -q -- "$BEGIN_PRIVATE_KEY"; then \ echo "$KASMVNC_ALPINE_PRIVATE_KEY" > $APK_KEYS_DIR/kasmvnc_signing_key.rsa; \ else \ @@ -20,10 +22,12 @@ RUN if echo "$KASMVNC_ALPINE_PRIVATE_KEY" | grep -q -- "$BEGIN_PRIVATE_KEY"; the $APK_KEYS_DIR/kasmvnc_signing_key.rsa; \ fi RUN echo KASMVNC_ALPINE_PRIVATE_KEY "$KASMVNC_ALPINE_PRIVATE_KEY" -RUN echo -n "$KASMVNC_ALPINE_PUBLIC_KEY" > \ - $APK_KEYS_DIR/kasmvnc_signing_key.rsa.pub -RUN echo KASMVNC_ALPINE_PUBLIC_KEY "$KASMVNC_ALPINE_PUBLIC_KEY" -RUN env +RUN if echo "$KASMVNC_ALPINE_PUBLIC_KEY" | grep -q -- "$BEGIN_PUBLIC_KEY"; then \ + echo "$KASMVNC_ALPINE_PUBLIC_KEY" > $APK_KEYS_DIR/kasmvnc_signing_key.rsa.pub; \ + else \ + echo -e "$BEGIN_PUBLIC_KEY\n$KASMVNC_ALPINE_PUBLIC_KEY\n$END_PUBLIC_KEY" > \ + $APK_KEYS_DIR/kasmvnc_signing_key.rsa.pub; \ + fi RUN useradd -m docker && echo "docker:docker" | chpasswd From 72388b390b70ad6cd39f5afbf7a07ff708ee7616 Mon Sep 17 00:00:00 2001 From: Dmitry Maksyoma Date: Sun, 9 Mar 2025 16:24:08 +1300 Subject: [PATCH 40/73] KASM-6904 Fix CI --- builder/build-apk-inside-docker | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/builder/build-apk-inside-docker b/builder/build-apk-inside-docker index f06d9e8..e221814 100755 --- a/builder/build-apk-inside-docker +++ b/builder/build-apk-inside-docker @@ -8,6 +8,7 @@ apkbuild_dir=/src/alpine/kasmvncserver/ cd "$apkbuild_dir" && abuild -r -mkdir -p /src/builder/build/${os}_${os_codename} -mv \ +[ -n "$CI" ] && sudo_cmd=sudo || sudo_cmd= +$sudo_cmd mkdir -p /src/builder/build/${os}_${os_codename} +$sudo_cmd mv \ /src/alpine/packages/alpine/$(arch)/*.apk /src/builder/build/${os}_${os_codename}/ From 2eae9d294123b4640e2468db8e7a6c1cbb7f1167 Mon Sep 17 00:00:00 2001 From: Dmitry Maksyoma Date: Sun, 9 Mar 2025 16:31:45 +1300 Subject: [PATCH 41/73] KASM-6904 Debug CI --- builder/build-apk-inside-docker | 1 + 1 file changed, 1 insertion(+) diff --git a/builder/build-apk-inside-docker b/builder/build-apk-inside-docker index e221814..6c12dcb 100755 --- a/builder/build-apk-inside-docker +++ b/builder/build-apk-inside-docker @@ -8,6 +8,7 @@ apkbuild_dir=/src/alpine/kasmvncserver/ cd "$apkbuild_dir" && abuild -r +set -x [ -n "$CI" ] && sudo_cmd=sudo || sudo_cmd= $sudo_cmd mkdir -p /src/builder/build/${os}_${os_codename} $sudo_cmd mv \ From dfa1a00ed0bcc92a73e44725ff05953fe51fecbf Mon Sep 17 00:00:00 2001 From: Dmitry Maksyoma Date: Sun, 9 Mar 2025 16:38:41 +1300 Subject: [PATCH 42/73] KASM-6904 Fix CI --- builder/build-apk | 1 + 1 file changed, 1 insertion(+) diff --git a/builder/build-apk b/builder/build-apk index 19f8f27..5b92170 100755 --- a/builder/build-apk +++ b/builder/build-apk @@ -33,5 +33,6 @@ copy_signing_key_to_user_abuild_dir source_dir=$(echo $PWD) docker run --rm -v "$source_dir":/src --user $L_UID:$L_GID \ --group-add $ABUILD_GID \ + -e CI \ kasmvnc_apkbuilder_${os}:${os_codename} /bin/bash -c \ '/src/builder/build-apk-inside-docker' From 896e66de3e8d6a5d67d73c87d8832cb8607a2028 Mon Sep 17 00:00:00 2001 From: Dmitry Maksyoma Date: Sun, 9 Mar 2025 17:15:00 +1300 Subject: [PATCH 43/73] KASM-6904 Fix CI --- builder/dockerfile.alpine_319.apk.build | 1 + 1 file changed, 1 insertion(+) diff --git a/builder/dockerfile.alpine_319.apk.build b/builder/dockerfile.alpine_319.apk.build index 2c60fef..c860e4b 100644 --- a/builder/dockerfile.alpine_319.apk.build +++ b/builder/dockerfile.alpine_319.apk.build @@ -30,5 +30,6 @@ RUN if echo "$KASMVNC_ALPINE_PUBLIC_KEY" | grep -q -- "$BEGIN_PUBLIC_KEY"; then fi RUN useradd -m docker && echo "docker:docker" | chpasswd +RUN echo 'docker ALL=(ALL) NOPASSWD: ALL' >> /etc/sudoers USER docker From fc79c216f50c82c31694df42da3049d1f87262ad Mon Sep 17 00:00:00 2001 From: Dmitry Maksyoma Date: Sun, 9 Mar 2025 17:21:47 +1300 Subject: [PATCH 44/73] Revert "KASM-6904 Print env" This reverts commit be265fa9ee4396cd8ac25473341393b7eb3036ae. --- builder/build-apk | 2 -- 1 file changed, 2 deletions(-) diff --git a/builder/build-apk b/builder/build-apk index 5b92170..8b49160 100755 --- a/builder/build-apk +++ b/builder/build-apk @@ -21,8 +21,6 @@ if [ "$L_UID" = 0 ]; then L_GID=1000 fi -echo "woo" -env builder_image=kasmvnc_apkbuilder_${os}:${os_codename} docker build -t $builder_image \ --build-arg KASMVNC_ALPINE_PRIVATE_KEY \ From 1c279c2e941ecb7083159506c7d39d54263f545f Mon Sep 17 00:00:00 2001 From: Dmitry Maksyoma Date: Sun, 9 Mar 2025 17:29:07 +1300 Subject: [PATCH 45/73] KASM-6904 Alpine: depend on xf86-video-intel only on x86 --- alpine/kasmvncserver/APKBUILD | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/alpine/kasmvncserver/APKBUILD b/alpine/kasmvncserver/APKBUILD index 3138c47..e67e4c2 100644 --- a/alpine/kasmvncserver/APKBUILD +++ b/alpine/kasmvncserver/APKBUILD @@ -36,11 +36,13 @@ depends=" xf86-video-amdgpu xf86-video-ati xf86-video-nouveau - xf86-video-intel xkbcomp xkeyboard-config xterm " +if [ $(arch) = x86_64 ]; then + depends="$depends xf86-video-intel" +fi makedepends=" rsync binutils From 5edf55ee9997c9cb2c8bbdcc30264d1dbbcdc9de Mon Sep 17 00:00:00 2001 From: Dmitry Maksyoma Date: Sun, 9 Mar 2025 17:45:27 +1300 Subject: [PATCH 46/73] KASM-6904 Refactor --- builder/dockerfile.alpine_319.apk.build | 21 +++------------ builder/scripts/install_alpine_signing_keys | 29 +++++++++++++++++++++ 2 files changed, 33 insertions(+), 17 deletions(-) create mode 100755 builder/scripts/install_alpine_signing_keys diff --git a/builder/dockerfile.alpine_319.apk.build b/builder/dockerfile.alpine_319.apk.build index c860e4b..35e0dc7 100644 --- a/builder/dockerfile.alpine_319.apk.build +++ b/builder/dockerfile.alpine_319.apk.build @@ -11,23 +11,10 @@ WORKDIR $HOME/kasmvncserver ARG KASMVNC_ALPINE_PRIVATE_KEY ARG KASMVNC_ALPINE_PUBLIC_KEY ENV APK_KEYS_DIR=/etc/apk/keys -ENV BEGIN_PRIVATE_KEY='-----BEGIN PRIVATE KEY-----' -ENV END_PRIVATE_KEY='-----END PRIVATE KEY-----' -ENV BEGIN_PUBLIC_KEY='-----BEGIN PUBLIC KEY-----' -ENV END_PUBLIC_KEY='-----END PUBLIC KEY-----' -RUN if echo "$KASMVNC_ALPINE_PRIVATE_KEY" | grep -q -- "$BEGIN_PRIVATE_KEY"; then \ - echo "$KASMVNC_ALPINE_PRIVATE_KEY" > $APK_KEYS_DIR/kasmvnc_signing_key.rsa; \ - else \ - echo -e "$BEGIN_PRIVATE_KEY\n$KASMVNC_ALPINE_PRIVATE_KEY\n$END_PRIVATE_KEY" > \ - $APK_KEYS_DIR/kasmvnc_signing_key.rsa; \ - fi -RUN echo KASMVNC_ALPINE_PRIVATE_KEY "$KASMVNC_ALPINE_PRIVATE_KEY" -RUN if echo "$KASMVNC_ALPINE_PUBLIC_KEY" | grep -q -- "$BEGIN_PUBLIC_KEY"; then \ - echo "$KASMVNC_ALPINE_PUBLIC_KEY" > $APK_KEYS_DIR/kasmvnc_signing_key.rsa.pub; \ - else \ - echo -e "$BEGIN_PUBLIC_KEY\n$KASMVNC_ALPINE_PUBLIC_KEY\n$END_PUBLIC_KEY" > \ - $APK_KEYS_DIR/kasmvnc_signing_key.rsa.pub; \ - fi + +ENV SCRIPTS_DIR=/tmp/scripts +COPY builder/scripts $SCRIPTS_DIR +RUN $SCRIPTS_DIR/install_alpine_signing_keys RUN useradd -m docker && echo "docker:docker" | chpasswd RUN echo 'docker ALL=(ALL) NOPASSWD: ALL' >> /etc/sudoers diff --git a/builder/scripts/install_alpine_signing_keys b/builder/scripts/install_alpine_signing_keys new file mode 100755 index 0000000..0fbe3da --- /dev/null +++ b/builder/scripts/install_alpine_signing_keys @@ -0,0 +1,29 @@ +#!/bin/bash + +set -e + +install_private_signing_key() { + if echo "$KASMVNC_ALPINE_PRIVATE_KEY" | grep -q -- "$BEGIN_PRIVATE_KEY"; then + echo "$KASMVNC_ALPINE_PRIVATE_KEY" > $APK_KEYS_DIR/kasmvnc_signing_key.rsa + else + echo -e "$BEGIN_PRIVATE_KEY\n$KASMVNC_ALPINE_PRIVATE_KEY\n$END_PRIVATE_KEY" > \ + $APK_KEYS_DIR/kasmvnc_signing_key.rsa + fi +} + +install_public_signing_key() { + if echo "$KASMVNC_ALPINE_PUBLIC_KEY" | grep -q -- "$BEGIN_PUBLIC_KEY"; then \ + echo "$KASMVNC_ALPINE_PUBLIC_KEY" > $APK_KEYS_DIR/kasmvnc_signing_key.rsa.pub + else + echo -e "$BEGIN_PUBLIC_KEY\n$KASMVNC_ALPINE_PUBLIC_KEY\n$END_PUBLIC_KEY" > \ + $APK_KEYS_DIR/kasmvnc_signing_key.rsa.pub + fi +} + +BEGIN_PRIVATE_KEY='-----BEGIN PRIVATE KEY-----' +END_PRIVATE_KEY='-----END PRIVATE KEY-----' +BEGIN_PUBLIC_KEY='-----BEGIN PUBLIC KEY-----' +END_PUBLIC_KEY='-----END PUBLIC KEY-----' + +install_private_signing_key +install_public_signing_key From c9ea601582e8d8375c804f2541ab192475735e76 Mon Sep 17 00:00:00 2001 From: Dmitry Maksyoma Date: Sun, 9 Mar 2025 17:51:37 +1300 Subject: [PATCH 47/73] KASM-6904 Refactor --- builder/dockerfile.alpine_319.apk.build | 1 - builder/scripts/install_alpine_signing_keys | 1 + 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/builder/dockerfile.alpine_319.apk.build b/builder/dockerfile.alpine_319.apk.build index 35e0dc7..ae0f4e8 100644 --- a/builder/dockerfile.alpine_319.apk.build +++ b/builder/dockerfile.alpine_319.apk.build @@ -10,7 +10,6 @@ WORKDIR $HOME/kasmvncserver ARG KASMVNC_ALPINE_PRIVATE_KEY ARG KASMVNC_ALPINE_PUBLIC_KEY -ENV APK_KEYS_DIR=/etc/apk/keys ENV SCRIPTS_DIR=/tmp/scripts COPY builder/scripts $SCRIPTS_DIR diff --git a/builder/scripts/install_alpine_signing_keys b/builder/scripts/install_alpine_signing_keys index 0fbe3da..63c3630 100755 --- a/builder/scripts/install_alpine_signing_keys +++ b/builder/scripts/install_alpine_signing_keys @@ -20,6 +20,7 @@ install_public_signing_key() { fi } +APK_KEYS_DIR=/etc/apk/keys BEGIN_PRIVATE_KEY='-----BEGIN PRIVATE KEY-----' END_PRIVATE_KEY='-----END PRIVATE KEY-----' BEGIN_PUBLIC_KEY='-----BEGIN PUBLIC KEY-----' From 13d1656e2f91f302d0ab6dfa566b2a07c9e6c85f Mon Sep 17 00:00:00 2001 From: Dmitry Maksyoma Date: Sun, 9 Mar 2025 17:52:52 +1300 Subject: [PATCH 48/73] KASM-6904 Refactor --- builder/dockerfile.alpine_319.apk.build | 2 -- 1 file changed, 2 deletions(-) diff --git a/builder/dockerfile.alpine_319.apk.build b/builder/dockerfile.alpine_319.apk.build index ae0f4e8..95b6bc6 100644 --- a/builder/dockerfile.alpine_319.apk.build +++ b/builder/dockerfile.alpine_319.apk.build @@ -3,8 +3,6 @@ FROM alpine:3.19 RUN apk add shadow bash RUN apk add abuild sudo less -SHELL ["/bin/bash", "-c"] - ENV HOME /src/alpine WORKDIR $HOME/kasmvncserver From ae1ec7e8d3d321b83e0e887059faaefa99044257 Mon Sep 17 00:00:00 2001 From: Dmitry Maksyoma Date: Sun, 9 Mar 2025 17:54:44 +1300 Subject: [PATCH 49/73] Revert "KASM-6904 CI: .abuild as artifacts" This reverts commit 90351722729fcd783b79abdf45ca9a315dd9facf. --- .gitlab-ci.yml | 2 -- 1 file changed, 2 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index a9fbc7c..308e3c8 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -779,8 +779,6 @@ build_alpine_319: artifacts: paths: - output/ - - alpine/.abuild - when: always build_alpine_319_arm: stage: build From cfa0fd11e756590cc4c3d17baa53ff042ceb6534 Mon Sep 17 00:00:00 2001 From: Dmitry Maksyoma Date: Sun, 9 Mar 2025 17:56:42 +1300 Subject: [PATCH 50/73] KASM-6904 Alpine 3.18 build apk package --- .gitlab-ci.yml | 2 +- builder/dockerfile.alpine_318.apk.build | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 308e3c8..6ab8318 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -10,7 +10,7 @@ variables: # E.g. BUILD_JOBS: build_debian_buster,build_ubuntu_bionic. This will include # arm builds, because build_debian_buster_arm matches build_debian_buster. # "BUILD_JOBS: none" won't build any build jobs, nor www. - BUILD_JOBS: build_alpine_319 + BUILD_JOBS: build_alpine_318 DOCKER_HOST: tcp://docker:2375 DOCKER_TLS_CERTDIR: "" diff --git a/builder/dockerfile.alpine_318.apk.build b/builder/dockerfile.alpine_318.apk.build index 209e142..f55ac41 100644 --- a/builder/dockerfile.alpine_318.apk.build +++ b/builder/dockerfile.alpine_318.apk.build @@ -8,12 +8,12 @@ WORKDIR $HOME/kasmvncserver ARG KASMVNC_ALPINE_PRIVATE_KEY ARG KASMVNC_ALPINE_PUBLIC_KEY -ENV APK_KEYS_DIR=/etc/apk/keys -RUN echo -n "$KASMVNC_ALPINE_PRIVATE_KEY" > \ - $APK_KEYS_DIR/kasmvnc_signing_key.rsa -RUN echo -n "$KASMVNC_ALPINE_PUBLIC_KEY" > \ - $APK_KEYS_DIR/kasmvnc_signing_key.rsa.pub + +ENV SCRIPTS_DIR=/tmp/scripts +COPY builder/scripts $SCRIPTS_DIR +RUN $SCRIPTS_DIR/install_alpine_signing_keys RUN useradd -m docker && echo "docker:docker" | chpasswd +RUN echo 'docker ALL=(ALL) NOPASSWD: ALL' >> /etc/sudoers USER docker From e6a805d6e14d74c34b88c5a654963a62c5e9243a Mon Sep 17 00:00:00 2001 From: Dmitry Maksyoma Date: Sun, 9 Mar 2025 17:57:35 +1300 Subject: [PATCH 51/73] KASM-6904 Remove debug code --- builder/build-apk-inside-docker | 1 - 1 file changed, 1 deletion(-) diff --git a/builder/build-apk-inside-docker b/builder/build-apk-inside-docker index 6c12dcb..e221814 100755 --- a/builder/build-apk-inside-docker +++ b/builder/build-apk-inside-docker @@ -8,7 +8,6 @@ apkbuild_dir=/src/alpine/kasmvncserver/ cd "$apkbuild_dir" && abuild -r -set -x [ -n "$CI" ] && sudo_cmd=sudo || sudo_cmd= $sudo_cmd mkdir -p /src/builder/build/${os}_${os_codename} $sudo_cmd mv \ From 7726718e1ae970f6b8c185dacdc9ff581933609d Mon Sep 17 00:00:00 2001 From: Dmitry Maksyoma Date: Sun, 9 Mar 2025 18:24:59 +1300 Subject: [PATCH 52/73] KASM-6904 Alpine 3.17 build apk package --- .gitlab-ci.yml | 2 +- builder/dockerfile.alpine_317.apk.build | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 6ab8318..4f28162 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -10,7 +10,7 @@ variables: # E.g. BUILD_JOBS: build_debian_buster,build_ubuntu_bionic. This will include # arm builds, because build_debian_buster_arm matches build_debian_buster. # "BUILD_JOBS: none" won't build any build jobs, nor www. - BUILD_JOBS: build_alpine_318 + BUILD_JOBS: build_alpine_317 DOCKER_HOST: tcp://docker:2375 DOCKER_TLS_CERTDIR: "" diff --git a/builder/dockerfile.alpine_317.apk.build b/builder/dockerfile.alpine_317.apk.build index fafdecb..c0294c0 100644 --- a/builder/dockerfile.alpine_317.apk.build +++ b/builder/dockerfile.alpine_317.apk.build @@ -8,12 +8,12 @@ WORKDIR $HOME/kasmvncserver ARG KASMVNC_ALPINE_PRIVATE_KEY ARG KASMVNC_ALPINE_PUBLIC_KEY -ENV APK_KEYS_DIR=/etc/apk/keys -RUN echo -n "$KASMVNC_ALPINE_PRIVATE_KEY" > \ - $APK_KEYS_DIR/kasmvnc_signing_key.rsa -RUN echo -n "$KASMVNC_ALPINE_PUBLIC_KEY" > \ - $APK_KEYS_DIR/kasmvnc_signing_key.rsa.pub + +ENV SCRIPTS_DIR=/tmp/scripts +COPY builder/scripts $SCRIPTS_DIR +RUN $SCRIPTS_DIR/install_alpine_signing_keys RUN useradd -m docker && echo "docker:docker" | chpasswd +RUN echo 'docker ALL=(ALL) NOPASSWD: ALL' >> /etc/sudoers USER docker From d607c2e7f78babcc31ecd35a5bd0b4857f4601c1 Mon Sep 17 00:00:00 2001 From: Dmitry Maksyoma Date: Sun, 9 Mar 2025 18:29:57 +1300 Subject: [PATCH 53/73] KASM-6904 Alpine 3.20 build apk package --- .gitlab-ci.yml | 2 +- builder/dockerfile.alpine_320.apk.build | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 4f28162..2fd3f69 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -10,7 +10,7 @@ variables: # E.g. BUILD_JOBS: build_debian_buster,build_ubuntu_bionic. This will include # arm builds, because build_debian_buster_arm matches build_debian_buster. # "BUILD_JOBS: none" won't build any build jobs, nor www. - BUILD_JOBS: build_alpine_317 + BUILD_JOBS: build_alpine_320 DOCKER_HOST: tcp://docker:2375 DOCKER_TLS_CERTDIR: "" diff --git a/builder/dockerfile.alpine_320.apk.build b/builder/dockerfile.alpine_320.apk.build index 515d825..8791c8b 100644 --- a/builder/dockerfile.alpine_320.apk.build +++ b/builder/dockerfile.alpine_320.apk.build @@ -8,12 +8,12 @@ WORKDIR $HOME/kasmvncserver ARG KASMVNC_ALPINE_PRIVATE_KEY ARG KASMVNC_ALPINE_PUBLIC_KEY -ENV APK_KEYS_DIR=/etc/apk/keys -RUN echo -n "$KASMVNC_ALPINE_PRIVATE_KEY" > \ - $APK_KEYS_DIR/kasmvnc_signing_key.rsa -RUN echo -n "$KASMVNC_ALPINE_PUBLIC_KEY" > \ - $APK_KEYS_DIR/kasmvnc_signing_key.rsa.pub + +ENV SCRIPTS_DIR=/tmp/scripts +COPY builder/scripts $SCRIPTS_DIR +RUN $SCRIPTS_DIR/install_alpine_signing_keys RUN useradd -m docker && echo "docker:docker" | chpasswd +RUN echo 'docker ALL=(ALL) NOPASSWD: ALL' >> /etc/sudoers USER docker From 15ee0f3dbeebc36dc075f2a9060de0cf676b50c5 Mon Sep 17 00:00:00 2001 From: Dmitry Maksyoma Date: Sun, 9 Mar 2025 18:31:36 +1300 Subject: [PATCH 54/73] KASM-6904 Alpine 3.21 build apk package --- .gitlab-ci.yml | 2 +- builder/dockerfile.alpine_321.apk.build | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 2fd3f69..564640b 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -10,7 +10,7 @@ variables: # E.g. BUILD_JOBS: build_debian_buster,build_ubuntu_bionic. This will include # arm builds, because build_debian_buster_arm matches build_debian_buster. # "BUILD_JOBS: none" won't build any build jobs, nor www. - BUILD_JOBS: build_alpine_320 + BUILD_JOBS: build_alpine_321 DOCKER_HOST: tcp://docker:2375 DOCKER_TLS_CERTDIR: "" diff --git a/builder/dockerfile.alpine_321.apk.build b/builder/dockerfile.alpine_321.apk.build index 8771f31..2bc1af0 100644 --- a/builder/dockerfile.alpine_321.apk.build +++ b/builder/dockerfile.alpine_321.apk.build @@ -8,12 +8,12 @@ WORKDIR $HOME/kasmvncserver ARG KASMVNC_ALPINE_PRIVATE_KEY ARG KASMVNC_ALPINE_PUBLIC_KEY -ENV APK_KEYS_DIR=/etc/apk/keys -RUN echo -n "$KASMVNC_ALPINE_PRIVATE_KEY" > \ - $APK_KEYS_DIR/kasmvnc_signing_key.rsa -RUN echo -n "$KASMVNC_ALPINE_PUBLIC_KEY" > \ - $APK_KEYS_DIR/kasmvnc_signing_key.rsa.pub + +ENV SCRIPTS_DIR=/tmp/scripts +COPY builder/scripts $SCRIPTS_DIR +RUN $SCRIPTS_DIR/install_alpine_signing_keys RUN useradd -m docker && echo "docker:docker" | chpasswd +RUN echo 'docker ALL=(ALL) NOPASSWD: ALL' >> /etc/sudoers USER docker From 8dc2dca965c8700010b3eb2ebcf1c968facff433 Mon Sep 17 00:00:00 2001 From: Dmitry Maksyoma Date: Sun, 9 Mar 2025 18:32:48 +1300 Subject: [PATCH 55/73] KASM-6904 CI: build for all distros --- .gitlab-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 564640b..3279217 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -10,7 +10,7 @@ variables: # E.g. BUILD_JOBS: build_debian_buster,build_ubuntu_bionic. This will include # arm builds, because build_debian_buster_arm matches build_debian_buster. # "BUILD_JOBS: none" won't build any build jobs, nor www. - BUILD_JOBS: build_alpine_321 + BUILD_JOBS: all DOCKER_HOST: tcp://docker:2375 DOCKER_TLS_CERTDIR: "" From 471a6813e4704ce4580f43e081d32d7a0abd61f0 Mon Sep 17 00:00:00 2001 From: Dmitry Maksyoma Date: Sun, 9 Mar 2025 19:38:01 +1300 Subject: [PATCH 56/73] KASM-6904 Alpine dev env: add apk-del-add command --- alpine/apk-del-add | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100755 alpine/apk-del-add diff --git a/alpine/apk-del-add b/alpine/apk-del-add new file mode 100755 index 0000000..f4840cd --- /dev/null +++ b/alpine/apk-del-add @@ -0,0 +1,8 @@ +#!/bin/sh + +set -e + +sudo apk del kasmvncserver || true +rm -r ../packages +abuild -r || true +sudo apk add ../packages/src/x86_64/kasmvncserver-1.3.3-r0.apk --allow-untrusted From 5eb189d8ae1e041c1cbc536f7ce72e76c4ca7094 Mon Sep 17 00:00:00 2001 From: Dmitry Maksyoma Date: Mon, 10 Mar 2025 15:42:09 +1300 Subject: [PATCH 57/73] KASM-6904 Alpine: depend on libxtst --- alpine/kasmvncserver/APKBUILD | 1 + 1 file changed, 1 insertion(+) diff --git a/alpine/kasmvncserver/APKBUILD b/alpine/kasmvncserver/APKBUILD index e67e4c2..0030b35 100644 --- a/alpine/kasmvncserver/APKBUILD +++ b/alpine/kasmvncserver/APKBUILD @@ -16,6 +16,7 @@ depends=" libwebp libxfont2 libxshmfence + libxtst mcookie mesa-gbm openssl From d932af7456132ada759db57dbaab48bcc594a6bf Mon Sep 17 00:00:00 2001 From: Dmitry Maksyoma Date: Mon, 10 Mar 2025 15:43:35 +1300 Subject: [PATCH 58/73] KASM-6904 Build only Alpine 3.21 arm --- .gitlab-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 3279217..d13eabc 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -10,7 +10,7 @@ variables: # E.g. BUILD_JOBS: build_debian_buster,build_ubuntu_bionic. This will include # arm builds, because build_debian_buster_arm matches build_debian_buster. # "BUILD_JOBS: none" won't build any build jobs, nor www. - BUILD_JOBS: all + BUILD_JOBS: build_alpine_321_arm DOCKER_HOST: tcp://docker:2375 DOCKER_TLS_CERTDIR: "" From abf4cb846c8abfd99a3eb34d6070d3bcb6f63440 Mon Sep 17 00:00:00 2001 From: Dmitry Maksyoma Date: Mon, 10 Mar 2025 15:51:00 +1300 Subject: [PATCH 59/73] Revert "KASM-6904 Build only Alpine 3.21 arm" This reverts commit d932af7456132ada759db57dbaab48bcc594a6bf. --- .gitlab-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index d13eabc..3279217 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -10,7 +10,7 @@ variables: # E.g. BUILD_JOBS: build_debian_buster,build_ubuntu_bionic. This will include # arm builds, because build_debian_buster_arm matches build_debian_buster. # "BUILD_JOBS: none" won't build any build jobs, nor www. - BUILD_JOBS: build_alpine_321_arm + BUILD_JOBS: all DOCKER_HOST: tcp://docker:2375 DOCKER_TLS_CERTDIR: "" From bfbb4fb88ffaab8d4874f5fc1f2cf354c93c70fc Mon Sep 17 00:00:00 2001 From: Dmitry Maksyoma Date: Mon, 10 Mar 2025 16:53:34 +1300 Subject: [PATCH 60/73] KASM-6904 Git ignore Alpine artifacts --- .gitignore | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.gitignore b/.gitignore index f4a278e..2fa2d43 100644 --- a/.gitignore +++ b/.gitignore @@ -23,3 +23,7 @@ debian/kasmvncserver.substvars debian/kasmvncserver/ .pc .vscode/ + +alpine/.abuild/kasmvnc_signing_key.rsa +alpine/.abuild/kasmvnc_signing_key.rsa.pub +alpine/packages/ From fe28be2dc01db621be24258001fd8c39560ad933 Mon Sep 17 00:00:00 2001 From: Dmitry Maksyoma Date: Mon, 10 Mar 2025 18:12:08 +1300 Subject: [PATCH 61/73] KASM-6904 Add arch to Alpine packages --- .ci/detect_os_arch_package_format | 2 ++ builder/build-apk-inside-docker | 7 +++++++ 2 files changed, 9 insertions(+) diff --git a/.ci/detect_os_arch_package_format b/.ci/detect_os_arch_package_format index dc76376..adf4a56 100755 --- a/.ci/detect_os_arch_package_format +++ b/.ci/detect_os_arch_package_format @@ -4,8 +4,10 @@ package_name = ARGV.first DEB_PACKAGE_REGEX = %r!(?[^/]+)/kasmvncserver_.+?_(?.+?).(?deb)! RPM_PACKAGE_REGEX = %r!(?[^/]+)/kasmvncserver-.+?\.(?[^.]+).(?rpm)! +ALPINE_PACKAGE_REGEX = %r!(?[^/]+)/kasmvncserver-.+?-r\d+_(?[^.]+)\.(?apk)! if matches = package_name.match(DEB_PACKAGE_REGEX) +elsif matches = package_name.match(ALPINE_PACKAGE_REGEX) else matches = package_name.match(RPM_PACKAGE_REGEX) end diff --git a/builder/build-apk-inside-docker b/builder/build-apk-inside-docker index e221814..75322e3 100755 --- a/builder/build-apk-inside-docker +++ b/builder/build-apk-inside-docker @@ -2,6 +2,12 @@ set -e +add_arch_to_apk_package() { + package_name=$(ls *.apk | grep -v kasmvncserver-doc) + new_package_name=$(echo "$package_name" | sed -e 's/\(-r[[:digit:]]\+\)/\1_'$(arch)/) + $sudo_cmd mv "$package_name" "$new_package_name" +} + os=alpine os_codename=$(cat /etc/os-release | awk '/VERSION_ID/' | grep -o '[[:digit:]]' | tr -d '\n' | head -c 3) apkbuild_dir=/src/alpine/kasmvncserver/ @@ -10,5 +16,6 @@ cd "$apkbuild_dir" && abuild -r [ -n "$CI" ] && sudo_cmd=sudo || sudo_cmd= $sudo_cmd mkdir -p /src/builder/build/${os}_${os_codename} +( cd /src/alpine/packages/alpine/$(arch)/ && add_arch_to_apk_package ) $sudo_cmd mv \ /src/alpine/packages/alpine/$(arch)/*.apk /src/builder/build/${os}_${os_codename}/ From 1cb0a6a3b95402ea087f1732ba494492236c6382 Mon Sep 17 00:00:00 2001 From: Dmitry Maksyoma Date: Wed, 12 Mar 2025 16:05:44 +1300 Subject: [PATCH 62/73] KASM-6904 CI: upload apk --- .gitlab-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 3279217..bb63d3b 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -900,7 +900,7 @@ upload: - export S3_BUILD_DIRECTORY="kasmvnc/${CI_COMMIT_SHA}" - export RELEASE_VERSION=$(.ci/next_release_version "$CI_COMMIT_REF_NAME") - uploaded_files=() - - for package in `find output/ -type f -name '*.deb' -or -name '*.rpm' -or -name '*.tgz'`; do + - for package in `find output/ -type f -name '*.deb' -or -name '*.rpm' -or -name '*.apk'`; do prepare_upload_filename "$package"; upload_filename="${S3_BUILD_DIRECTORY}/$upload_filename"; echo; From 71e0409e644014f50064381243b8f3fd8dd8c6c8 Mon Sep 17 00:00:00 2001 From: Dmitry Maksyoma Date: Wed, 12 Mar 2025 16:07:24 +1300 Subject: [PATCH 63/73] KASM-6904 Build only Alpine 3.21 --- .gitlab-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index bb63d3b..58bc14c 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -10,7 +10,7 @@ variables: # E.g. BUILD_JOBS: build_debian_buster,build_ubuntu_bionic. This will include # arm builds, because build_debian_buster_arm matches build_debian_buster. # "BUILD_JOBS: none" won't build any build jobs, nor www. - BUILD_JOBS: all + BUILD_JOBS: build_alpine_321 DOCKER_HOST: tcp://docker:2375 DOCKER_TLS_CERTDIR: "" From c6e84e4d8f8a603e0ce12fb4f026a28e6ef4f6d5 Mon Sep 17 00:00:00 2001 From: Dmitry Maksyoma Date: Wed, 12 Mar 2025 16:17:59 +1300 Subject: [PATCH 64/73] KASM-6904 Debug CI --- .gitlab-ci.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 58bc14c..7784673 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -900,6 +900,7 @@ upload: - export S3_BUILD_DIRECTORY="kasmvnc/${CI_COMMIT_SHA}" - export RELEASE_VERSION=$(.ci/next_release_version "$CI_COMMIT_REF_NAME") - uploaded_files=() + - set -x; find output/ -type f -name '*.deb' -or -name '*.rpm' -or -name '*.apk'`; - for package in `find output/ -type f -name '*.deb' -or -name '*.rpm' -or -name '*.apk'`; do prepare_upload_filename "$package"; upload_filename="${S3_BUILD_DIRECTORY}/$upload_filename"; From 03239db5cff7badd8133bba7d3a198c874ee0d68 Mon Sep 17 00:00:00 2001 From: Dmitry Maksyoma Date: Wed, 12 Mar 2025 16:29:00 +1300 Subject: [PATCH 65/73] KASM-6904 Debug CI --- .gitlab-ci.yml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 7784673..8cd1e80 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -22,7 +22,7 @@ workflow: stages: - www - build - - test + # - test - upload .prepare_build: &prepare_build @@ -900,7 +900,6 @@ upload: - export S3_BUILD_DIRECTORY="kasmvnc/${CI_COMMIT_SHA}" - export RELEASE_VERSION=$(.ci/next_release_version "$CI_COMMIT_REF_NAME") - uploaded_files=() - - set -x; find output/ -type f -name '*.deb' -or -name '*.rpm' -or -name '*.apk'`; - for package in `find output/ -type f -name '*.deb' -or -name '*.rpm' -or -name '*.apk'`; do prepare_upload_filename "$package"; upload_filename="${S3_BUILD_DIRECTORY}/$upload_filename"; From 2912aa653ca867c7ecc6ec0fd31f805925b2192d Mon Sep 17 00:00:00 2001 From: Dmitry Maksyoma Date: Wed, 12 Mar 2025 16:29:46 +1300 Subject: [PATCH 66/73] KASM-6904 Debug CI --- .gitlab-ci.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 8cd1e80..1020c2d 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -22,7 +22,6 @@ workflow: stages: - www - build - # - test - upload .prepare_build: &prepare_build From 2bd7e9497a8ce0958cda683e22572ec96be1c315 Mon Sep 17 00:00:00 2001 From: Dmitry Maksyoma Date: Wed, 12 Mar 2025 16:32:48 +1300 Subject: [PATCH 67/73] KASM-6904 Debug CI --- .gitlab-ci.yml | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 1020c2d..4bda2a7 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -22,6 +22,7 @@ workflow: stages: - www - build +# - test - upload .prepare_build: &prepare_build @@ -712,14 +713,14 @@ build_alpine_317_arm: paths: - output/ -test: - stage: test - tags: - - oci-fixed-amd - before_script: - - *prepare_build - script: - - bash builder/test-vncserver +# test: +# stage: test +# tags: +# - oci-fixed-amd +# before_script: +# - *prepare_build +# script: +# - bash builder/test-vncserver build_alpine_318: From 47b95c4659170b14c9ee120d42031ab9646b3a97 Mon Sep 17 00:00:00 2001 From: Dmitry Maksyoma Date: Thu, 13 Mar 2025 16:18:39 +1300 Subject: [PATCH 68/73] KASM-6904 Restore CI test stage --- .gitlab-ci.yml | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 4bda2a7..bb63d3b 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -10,7 +10,7 @@ variables: # E.g. BUILD_JOBS: build_debian_buster,build_ubuntu_bionic. This will include # arm builds, because build_debian_buster_arm matches build_debian_buster. # "BUILD_JOBS: none" won't build any build jobs, nor www. - BUILD_JOBS: build_alpine_321 + BUILD_JOBS: all DOCKER_HOST: tcp://docker:2375 DOCKER_TLS_CERTDIR: "" @@ -22,7 +22,7 @@ workflow: stages: - www - build -# - test + - test - upload .prepare_build: &prepare_build @@ -713,14 +713,14 @@ build_alpine_317_arm: paths: - output/ -# test: -# stage: test -# tags: -# - oci-fixed-amd -# before_script: -# - *prepare_build -# script: -# - bash builder/test-vncserver +test: + stage: test + tags: + - oci-fixed-amd + before_script: + - *prepare_build + script: + - bash builder/test-vncserver build_alpine_318: From 254f4d38f0ecb80889a4a43dcd820fdeab7b0f73 Mon Sep 17 00:00:00 2001 From: Dmitry Maksyoma Date: Thu, 13 Mar 2025 17:19:38 +1300 Subject: [PATCH 69/73] KASM-6904 bump-package-version: support Alpine --- builder/bump-package-version | 6 ++++++ builder/bump-package-version-apk | 14 ++++++++++++++ 2 files changed, 20 insertions(+) create mode 100755 builder/bump-package-version-apk diff --git a/builder/bump-package-version b/builder/bump-package-version index 4e09e42..6f6824e 100755 --- a/builder/bump-package-version +++ b/builder/bump-package-version @@ -7,6 +7,11 @@ update_version_to_meet_packaging_standards() { sed -e 's/\([0-9]\)-\([a-zA-Z]\)/\1~\2/') } +bump_apk() { + builder/bump-package-version-apk "$new_version" +} + + bump_rpm() { builder/bump-package-version-rpm "$new_version" } @@ -33,3 +38,4 @@ update_version_to_meet_packaging_standards bump_xvnc_binary bump_rpm bump_deb +bump_apk diff --git a/builder/bump-package-version-apk b/builder/bump-package-version-apk new file mode 100755 index 0000000..60e778b --- /dev/null +++ b/builder/bump-package-version-apk @@ -0,0 +1,14 @@ +#!/bin/bash + +set -eo pipefail +set -x + +new_version="$1" +spec_file=alpine/kasmvncserver/APKBUILD + +bump_version() { + sed -i "s/^pkgver=.\+/pkgver=$new_version/" "$1" + sed -i "s/^pkgrel=.\+/pkgver=0/" "$1" +} + +bump_version $spec_file From 7f52b7ffc2d27b98ef978ac09972bfce39445a7d Mon Sep 17 00:00:00 2001 From: Dmitry Maksyoma Date: Thu, 13 Mar 2025 20:19:55 +1300 Subject: [PATCH 70/73] KASM-6904 Alpine: use common naming for kasmvncserver-doc package --- .ci/detect_os_arch_package_format | 2 +- .ci/upload.sh | 2 +- builder/build-apk-inside-docker | 11 +++++++++-- 3 files changed, 11 insertions(+), 4 deletions(-) diff --git a/.ci/detect_os_arch_package_format b/.ci/detect_os_arch_package_format index adf4a56..6b12647 100755 --- a/.ci/detect_os_arch_package_format +++ b/.ci/detect_os_arch_package_format @@ -4,7 +4,7 @@ package_name = ARGV.first DEB_PACKAGE_REGEX = %r!(?[^/]+)/kasmvncserver_.+?_(?.+?).(?deb)! RPM_PACKAGE_REGEX = %r!(?[^/]+)/kasmvncserver-.+?\.(?[^.]+).(?rpm)! -ALPINE_PACKAGE_REGEX = %r!(?[^/]+)/kasmvncserver-.+?-r\d+_(?[^.]+)\.(?apk)! +ALPINE_PACKAGE_REGEX = %r!(?[^/]+)/kasmvncserver-(doc-)?.+?-r\d+_(?[^.]+)\.(?apk)! if matches = package_name.match(DEB_PACKAGE_REGEX) elsif matches = package_name.match(ALPINE_PACKAGE_REGEX) diff --git a/.ci/upload.sh b/.ci/upload.sh index fc6aeb1..9200c8e 100644 --- a/.ci/upload.sh +++ b/.ci/upload.sh @@ -3,7 +3,7 @@ is_kasmvnc() { local package="$1"; - echo "$package" | grep -qP 'kasmvncserver(_|-)[0-9]' + echo "$package" | grep -qP 'kasmvncserver(_|-)(doc-)?[0-9]' } detect_deb_package_arch() { diff --git a/builder/build-apk-inside-docker b/builder/build-apk-inside-docker index 75322e3..4d7841b 100755 --- a/builder/build-apk-inside-docker +++ b/builder/build-apk-inside-docker @@ -3,11 +3,18 @@ set -e add_arch_to_apk_package() { - package_name=$(ls *.apk | grep -v kasmvncserver-doc) + local package_name="$1" + new_package_name=$(echo "$package_name" | sed -e 's/\(-r[[:digit:]]\+\)/\1_'$(arch)/) $sudo_cmd mv "$package_name" "$new_package_name" } +add_arch_to_apk_packages() { + for package_name in $(ls *.apk); do + add_arch_to_apk_package "$package_name" + done +} + os=alpine os_codename=$(cat /etc/os-release | awk '/VERSION_ID/' | grep -o '[[:digit:]]' | tr -d '\n' | head -c 3) apkbuild_dir=/src/alpine/kasmvncserver/ @@ -16,6 +23,6 @@ cd "$apkbuild_dir" && abuild -r [ -n "$CI" ] && sudo_cmd=sudo || sudo_cmd= $sudo_cmd mkdir -p /src/builder/build/${os}_${os_codename} -( cd /src/alpine/packages/alpine/$(arch)/ && add_arch_to_apk_package ) +( cd /src/alpine/packages/alpine/$(arch)/ && add_arch_to_apk_packages ) $sudo_cmd mv \ /src/alpine/packages/alpine/$(arch)/*.apk /src/builder/build/${os}_${os_codename}/ From ebe5855d6df981652e29f6dc74f1a860809f9cb8 Mon Sep 17 00:00:00 2001 From: Dmitry Maksyoma Date: Fri, 14 Mar 2025 15:23:30 +1300 Subject: [PATCH 71/73] KASM-6901 Alpine: upload doc package --- .ci/upload.sh | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/.ci/upload.sh b/.ci/upload.sh index 9200c8e..cc51e50 100644 --- a/.ci/upload.sh +++ b/.ci/upload.sh @@ -27,6 +27,13 @@ fetch_xvnc_md5sum() { cat DEBIAN/md5sums | grep bin/Xkasmvnc | cut -d' ' -f 1 } +detect_alpine_doc_package() { + is_alpine_doc_package= + if [[ $package =~ kasmvncserver-doc ]]; then + is_alpine_doc_package=1 + fi +} + function prepare_upload_filename() { local package="$1"; @@ -44,11 +51,13 @@ function prepare_upload_filename() { REVISION="_${REVISION}" fi + detect_alpine_doc_package + if [ -n "$RELEASE_BRANCH" ]; then - export upload_filename="kasmvncserver_${PACKAGE_OS}_${RELEASE_VERSION}${REVISION}_${OS_ARCH}.${PACKAGE_FORMAT}"; + export upload_filename="kasmvncserver${is_alpine_doc_package:+_doc}_${PACKAGE_OS}_${RELEASE_VERSION}${REVISION}_${OS_ARCH}.${PACKAGE_FORMAT}"; else export SANITIZED_BRANCH="$(echo $CI_COMMIT_REF_NAME | sed 's/\//_/g')"; - export upload_filename="kasmvncserver_${PACKAGE_OS}_${RELEASE_VERSION}_${SANITIZED_BRANCH}_${CI_COMMIT_SHA:0:6}${REVISION}_${OS_ARCH}.${PACKAGE_FORMAT}"; + export upload_filename="kasmvncserver${is_alpine_doc_package:+_doc}_${PACKAGE_OS}_${RELEASE_VERSION}_${SANITIZED_BRANCH}_${CI_COMMIT_SHA:0:6}${REVISION}_${OS_ARCH}.${PACKAGE_FORMAT}"; fi }; From 035709529668bb27607f20fab473b1010aad92d6 Mon Sep 17 00:00:00 2001 From: Dmitry Maksyoma Date: Fri, 14 Mar 2025 16:22:19 +1300 Subject: [PATCH 72/73] KASM-6904 Refactor --- alpine/kasmvncserver/APKBUILD | 37 +++++++++++++++++------------------ 1 file changed, 18 insertions(+), 19 deletions(-) diff --git a/alpine/kasmvncserver/APKBUILD b/alpine/kasmvncserver/APKBUILD index 0030b35..b98d00b 100644 --- a/alpine/kasmvncserver/APKBUILD +++ b/alpine/kasmvncserver/APKBUILD @@ -73,30 +73,29 @@ package() { export SRC="$srcdir/usr/local"; export SRC_BIN="$SRC/bin"; export DESTDIR="$pkgdir"; - export DST_MAN="$DESTDIR/usr/share/man/man1"; echo "installing files"; - mkdir -p $pkgdir/usr/bin $pkgdir/usr/lib \ - $pkgdir/usr/share/perl5/vendor_perl $pkgdir/etc/kasmvnc; - cp $SRC_BIN/Xvnc $pkgdir/usr/bin/Xkasmvnc; - cd $pkgdir/usr/bin/ && ln -s Xkasmvnc Xvnc; - cp $SRC_BIN/vncserver $pkgdir/usr/bin/kasmvncserver; - cd $pkgdir/usr/bin/ && ln -s kasmvncserver vncserver; - cp -r $SRC_BIN/KasmVNC $pkgdir/usr/share/perl5/vendor_perl; - cp $SRC_BIN/vncconfig $pkgdir/usr/bin/kasmvncconfig; - cp $SRC_BIN/kasmvncpasswd $pkgdir/usr/bin/; - cd $pkgdir/usr/bin/ && ln -s kasmvncpasswd vncpasswd; - cp $SRC_BIN/kasmxproxy $pkgdir/usr/bin/; - cp -r $SRC/lib/kasmvnc/ $pkgdir/usr/lib/kasmvncserver; + mkdir -p $DESTDIR/usr/bin $DESTDIR/usr/lib \ + $DESTDIR/usr/share/perl5/vendor_perl $DESTDIR/etc/kasmvnc; + cp $SRC_BIN/Xvnc $DESTDIR/usr/bin/Xkasmvnc; + cd $DESTDIR/usr/bin/ && ln -s Xkasmvnc Xvnc; + cp $SRC_BIN/vncserver $DESTDIR/usr/bin/kasmvncserver; + cd $DESTDIR/usr/bin/ && ln -s kasmvncserver vncserver; + cp -r $SRC_BIN/KasmVNC $DESTDIR/usr/share/perl5/vendor_perl; + cp $SRC_BIN/vncconfig $DESTDIR/usr/bin/kasmvncconfig; + cp $SRC_BIN/kasmvncpasswd $DESTDIR/usr/bin/; + cd $DESTDIR/usr/bin/ && ln -s kasmvncpasswd vncpasswd; + cp $SRC_BIN/kasmxproxy $DESTDIR/usr/bin/; + cp -r $SRC/lib/kasmvnc/ $DESTDIR/usr/lib/kasmvncserver; rsync -r --links --safe-links --exclude '.git*' --exclude po2js \ --exclude xgettext-html --exclude www/utils/ --exclude .eslintrc \ - $SRC/share/kasmvnc $pkgdir/usr/share; + $SRC/share/kasmvnc $DESTDIR/usr/share; sed -i -e 's!pem_certificate: .\+$!pem_certificate: /etc/ssl/private/kasmvnc.pem!' \ $DESTDIR/usr/share/kasmvnc/kasmvnc_defaults.yaml sed -i -e 's!pem_key: .\+$!pem_key: /etc/ssl/private/kasmvnc.pem!' \ $DESTDIR/usr/share/kasmvnc/kasmvnc_defaults.yaml sed -e 's/^\([^#]\)/# \1/' $SRC/share/kasmvnc/kasmvnc_defaults.yaml > \ - $pkgdir/etc/kasmvnc/kasmvnc.yaml; + $DESTDIR/etc/kasmvnc/kasmvnc.yaml; } doc() { @@ -106,10 +105,10 @@ doc() { export DESTDIR="$subpkgdir"; export DST_MAN="$DESTDIR/usr/share/man/man1"; - mkdir -p $subpkgdir/usr/share/man/man1 \ - $subpkgdir/usr/share/doc/kasmvncserver - cp -r $SRC/share/doc/kasmvnc*/* $subpkgdir/usr/share/doc/kasmvncserver/ - cp $SRC/man/man1/Xvnc.1 $subpkgdir/usr/share/man/man1/Xkasmvnc.1 + mkdir -p $DESTDIR/usr/share/man/man1 \ + $DESTDIR/usr/share/doc/kasmvncserver + cp -r $SRC/share/doc/kasmvnc*/* $DESTDIR/usr/share/doc/kasmvncserver/ + cp $SRC/man/man1/Xvnc.1 $DESTDIR/usr/share/man/man1/Xkasmvnc.1 cp $SRC/share/man/man1/vncserver.1 $DST_MAN/kasmvncserver.1 cp $SRC/share/man/man1/kasmxproxy.1 $DST_MAN/kasmxproxy.1 cp $SRC/share/man/man1/vncpasswd.1 $DST_MAN/kasmvncpasswd.1 From d9131dc9886f0013987cdc711857f77cf012898f Mon Sep 17 00:00:00 2001 From: Dmitry Maksyoma Date: Fri, 14 Mar 2025 16:27:22 +1300 Subject: [PATCH 73/73] KASM-6904 bump-package-version-apk: disable debug output --- builder/bump-package-version-apk | 1 - 1 file changed, 1 deletion(-) diff --git a/builder/bump-package-version-apk b/builder/bump-package-version-apk index 60e778b..adf77fe 100755 --- a/builder/bump-package-version-apk +++ b/builder/bump-package-version-apk @@ -1,7 +1,6 @@ #!/bin/bash set -eo pipefail -set -x new_version="$1" spec_file=alpine/kasmvncserver/APKBUILD