From 907e32187ce91b7c66261e2ce238b960e81359cd Mon Sep 17 00:00:00 2001 From: Dmitry Maksyoma Date: Wed, 18 Jan 2023 19:35:15 +1300 Subject: [PATCH 01/31] Staticly link libjpeg-turbo in Ubuntu Focal --- CMakeLists.txt | 2 ++ builder/dockerfile.ubuntu_focal.build | 6 +++++- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index ab5725d..56f6336 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -151,6 +151,8 @@ find_package(ZLIB REQUIRED) # Check for libjpeg find_package(JPEG REQUIRED) +# Staticly link libjpeg-turbo +set(JPEG_LIBRARIES "-Wl,-Bstatic -lturbojpeg -Wl,-Bdynamic") # Warn if it doesn't seem to be the accelerated libjpeg that's found set(CMAKE_REQUIRED_LIBRARIES ${JPEG_LIBRARIES}) set(CMAKE_REQUIRED_FLAGS -I${JPEG_INCLUDE_DIR}) diff --git a/builder/dockerfile.ubuntu_focal.build b/builder/dockerfile.ubuntu_focal.build index 5925c92..0645c0d 100644 --- a/builder/dockerfile.ubuntu_focal.build +++ b/builder/dockerfile.ubuntu_focal.build @@ -12,7 +12,7 @@ RUN apt-get update && \ RUN apt-get update && apt-get install -y --no-install-recommends tzdata RUN apt-get update && apt-get -y build-dep xorg-server libxfont-dev -RUN apt-get update && apt-get -y install cmake git libjpeg-dev vim wget +RUN apt-get update && apt-get -y install cmake git vim wget RUN apt-get update && apt-get -y install libpng-dev libtiff-dev libgif-dev libavcodec-dev libssl-dev libxrandr-dev libxcursor-dev # Additions for webp @@ -22,6 +22,10 @@ RUN cd /tmp/libwebp-1.0.2 && \ ./configure --enable-static --disable-shared && \ make && make install +RUN apt-get update && apt-get install -y cmake nasm gcc +RUN git clone https://github.com/libjpeg-turbo/libjpeg-turbo.git +RUN export MAKEFLAGS=-j`nproc`; export CFLAGS="-fno-semantic-interposition -fpic -flto"; cd libjpeg-turbo && cmake -DCMAKE_INSTALL_PREFIX=/usr/ -G"Unix Makefiles" && make && make install + RUN useradd -m docker && echo "docker:docker" | chpasswd && adduser docker sudo COPY --chown=docker:docker . /src/ From cac80a22a3279382d696c38da2ec61d04743441e Mon Sep 17 00:00:00 2001 From: Dmitry Maksyoma Date: Wed, 18 Jan 2023 20:01:19 +1300 Subject: [PATCH 02/31] Refactor --- builder/dockerfile.ubuntu_focal.build | 5 ++--- builder/scripts/build-libjpeg-turbo | 30 +++++++++++++++++++++++++++ 2 files changed, 32 insertions(+), 3 deletions(-) create mode 100755 builder/scripts/build-libjpeg-turbo diff --git a/builder/dockerfile.ubuntu_focal.build b/builder/dockerfile.ubuntu_focal.build index 0645c0d..33fc74a 100644 --- a/builder/dockerfile.ubuntu_focal.build +++ b/builder/dockerfile.ubuntu_focal.build @@ -22,9 +22,8 @@ RUN cd /tmp/libwebp-1.0.2 && \ ./configure --enable-static --disable-shared && \ make && make install -RUN apt-get update && apt-get install -y cmake nasm gcc -RUN git clone https://github.com/libjpeg-turbo/libjpeg-turbo.git -RUN export MAKEFLAGS=-j`nproc`; export CFLAGS="-fno-semantic-interposition -fpic -flto"; cd libjpeg-turbo && cmake -DCMAKE_INSTALL_PREFIX=/usr/ -G"Unix Makefiles" && make && make install +COPY builder/scripts /scripts +RUN /scripts/build-libjpeg-turbo RUN useradd -m docker && echo "docker:docker" | chpasswd && adduser docker sudo diff --git a/builder/scripts/build-libjpeg-turbo b/builder/scripts/build-libjpeg-turbo new file mode 100755 index 0000000..dc5bff8 --- /dev/null +++ b/builder/scripts/build-libjpeg-turbo @@ -0,0 +1,30 @@ +#!/usr/bin/env bash + +set -euo pipefail + +build_and_install() { + export MAKEFLAGS=-j`nproc` + export CFLAGS="-fno-semantic-interposition -fpic -flto" + cmake -DCMAKE_INSTALL_PREFIX=/usr/local -G"Unix Makefiles" + make + make install +} + +install_build_dependencies() { + apt-get update + apt-get install -y cmake gcc + ensure_libjpeg_is_fast +} + +ensure_libjpeg_is_fast() { + apt-get install -y nasm +} + +prepare_libjpeg_source() { + git clone --depth=1 https://github.com/libjpeg-turbo/libjpeg-turbo.git + cd libjpeg-turbo +} + +install_build_dependencies +prepare_libjpeg_source +build_and_install From d1cc18f75150fc7d289d66535d6f746a5a5e7503 Mon Sep 17 00:00:00 2001 From: Dmitry Maksyoma Date: Wed, 18 Jan 2023 20:09:40 +1300 Subject: [PATCH 03/31] Refactor --- builder/dockerfile.ubuntu_focal.build | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/builder/dockerfile.ubuntu_focal.build b/builder/dockerfile.ubuntu_focal.build index 33fc74a..3571ebc 100644 --- a/builder/dockerfile.ubuntu_focal.build +++ b/builder/dockerfile.ubuntu_focal.build @@ -22,8 +22,9 @@ RUN cd /tmp/libwebp-1.0.2 && \ ./configure --enable-static --disable-shared && \ make && make install -COPY builder/scripts /scripts -RUN /scripts/build-libjpeg-turbo +ENV SCRIPTS_DIR=/tmp/scripts +COPY builder/scripts $SCRIPTS_DIR +RUN $SCRIPTS_DIR/build-libjpeg-turbo RUN useradd -m docker && echo "docker:docker" | chpasswd && adduser docker sudo From 23676ab3b3928e5e7bde3162e24fd58369d7a25e Mon Sep 17 00:00:00 2001 From: Dmitry Maksyoma Date: Thu, 19 Jan 2023 01:35:36 +1300 Subject: [PATCH 04/31] Support newest libjpeg-turbo on Centos --- builder/dockerfile.centos_core.build | 10 +++++++--- builder/scripts/build-libjpeg-turbo | 16 +++++++++++++++- builder/scripts/common.sh | 13 +++++++++++++ 3 files changed, 35 insertions(+), 4 deletions(-) create mode 100644 builder/scripts/common.sh diff --git a/builder/dockerfile.centos_core.build b/builder/dockerfile.centos_core.build index 476c1e4..cb6d4fa 100644 --- a/builder/dockerfile.centos_core.build +++ b/builder/dockerfile.centos_core.build @@ -5,11 +5,11 @@ 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 libjpeg-dev libgnutls28-dev vim wget tightvncserver -RUN yum install -y libjpeg-dev libpng-dev libtiff-dev libgif-dev libavcodec-dev openssl-devel +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 libjpeg-turbo-devel +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 @@ -23,6 +23,10 @@ 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/ diff --git a/builder/scripts/build-libjpeg-turbo b/builder/scripts/build-libjpeg-turbo index dc5bff8..49d7871 100755 --- a/builder/scripts/build-libjpeg-turbo +++ b/builder/scripts/build-libjpeg-turbo @@ -4,19 +4,30 @@ set -euo pipefail build_and_install() { export MAKEFLAGS=-j`nproc` - export CFLAGS="-fno-semantic-interposition -fpic -flto" + export CFLAGS="-fpic -flto" cmake -DCMAKE_INSTALL_PREFIX=/usr/local -G"Unix Makefiles" make make install } install_build_dependencies() { + if [ "$DISTRO" = centos ]; then + yum install -y cmake gcc + ensure_libjpeg_is_fast + return + fi + apt-get update apt-get install -y cmake gcc ensure_libjpeg_is_fast } ensure_libjpeg_is_fast() { + if [ "$DISTRO" = centos ]; then + yum install -y nasm + return + fi + apt-get install -y nasm } @@ -25,6 +36,9 @@ prepare_libjpeg_source() { cd libjpeg-turbo } +source_dir=$(dirname "$0") +. "$source_dir/common.sh" + install_build_dependencies prepare_libjpeg_source build_and_install diff --git a/builder/scripts/common.sh b/builder/scripts/common.sh new file mode 100644 index 0000000..1196a1b --- /dev/null +++ b/builder/scripts/common.sh @@ -0,0 +1,13 @@ +detect_distro() { + if [ -f /etc/centos-release ]; then + DISTRO=centos + elif [ -f /etc/oracle-release ]; then + DISTRO=oracle7 + elif [ -f /usr/bin/zypper ]; then + DISTRO=opensuse + else + DISTRO=debian + fi +} + +detect_distro From 8cd57a612d3cc8297877d10bbf707acbc6cdf721 Mon Sep 17 00:00:00 2001 From: Dmitry Maksyoma Date: Thu, 19 Jan 2023 01:47:04 +1300 Subject: [PATCH 05/31] Refactor --- builder/scripts/build-libjpeg-turbo | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/builder/scripts/build-libjpeg-turbo b/builder/scripts/build-libjpeg-turbo index 49d7871..e00384f 100755 --- a/builder/scripts/build-libjpeg-turbo +++ b/builder/scripts/build-libjpeg-turbo @@ -11,15 +11,15 @@ build_and_install() { } install_build_dependencies() { + ensure_libjpeg_is_fast + if [ "$DISTRO" = centos ]; then yum install -y cmake gcc - ensure_libjpeg_is_fast return fi apt-get update apt-get install -y cmake gcc - ensure_libjpeg_is_fast } ensure_libjpeg_is_fast() { @@ -28,6 +28,7 @@ ensure_libjpeg_is_fast() { return fi + apt-get update apt-get install -y nasm } From c34724f4211442b4668245c8495c45ccbcd10dd5 Mon Sep 17 00:00:00 2001 From: Dmitry Maksyoma Date: Tue, 24 Jan 2023 21:29:05 +1300 Subject: [PATCH 06/31] Support newest libjpeg-turbo on Oracle --- builder/dockerfile.oracle_8.build | 5 ++++- builder/scripts/build-libjpeg-turbo | 10 +++++++++- builder/scripts/common.sh | 4 +++- 3 files changed, 16 insertions(+), 3 deletions(-) diff --git a/builder/dockerfile.oracle_8.build b/builder/dockerfile.oracle_8.build index 60fc801..feec400 100644 --- a/builder/dockerfile.oracle_8.build +++ b/builder/dockerfile.oracle_8.build @@ -14,7 +14,6 @@ RUN dnf install -y \ gcc-c++ \ git \ gnutls-devel \ - libjpeg-turbo-devel \ libpng-devel \ libtiff-devel \ make \ @@ -53,6 +52,10 @@ 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/ diff --git a/builder/scripts/build-libjpeg-turbo b/builder/scripts/build-libjpeg-turbo index e00384f..a60f5d5 100755 --- a/builder/scripts/build-libjpeg-turbo +++ b/builder/scripts/build-libjpeg-turbo @@ -4,7 +4,7 @@ set -euo pipefail build_and_install() { export MAKEFLAGS=-j`nproc` - export CFLAGS="-fpic -flto" + export CFLAGS="-fpic" cmake -DCMAKE_INSTALL_PREFIX=/usr/local -G"Unix Makefiles" make make install @@ -17,6 +17,10 @@ install_build_dependencies() { yum install -y cmake gcc return fi + if [ "$DISTRO" = oracle ]; then + dnf install -y cmake gcc + return + fi apt-get update apt-get install -y cmake gcc @@ -27,6 +31,10 @@ ensure_libjpeg_is_fast() { yum install -y nasm return fi + if [ "$DISTRO" = oracle ]; then + dnf install -y nasm + return + fi apt-get update apt-get install -y nasm diff --git a/builder/scripts/common.sh b/builder/scripts/common.sh index 1196a1b..9a2d6be 100644 --- a/builder/scripts/common.sh +++ b/builder/scripts/common.sh @@ -1,8 +1,10 @@ +#!/bin/bash + detect_distro() { if [ -f /etc/centos-release ]; then DISTRO=centos elif [ -f /etc/oracle-release ]; then - DISTRO=oracle7 + DISTRO=oracle elif [ -f /usr/bin/zypper ]; then DISTRO=opensuse else From 40401ef38088994037c648878baf1bcad6ea2e35 Mon Sep 17 00:00:00 2001 From: Dmitry Maksyoma Date: Tue, 24 Jan 2023 21:40:09 +1300 Subject: [PATCH 07/31] Support newest libjpeg-turbo on OpenSuse --- builder/dockerfile.opensuse_15.build | 5 ++++- builder/scripts/build-libjpeg-turbo | 8 ++++++++ 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/builder/dockerfile.opensuse_15.build b/builder/dockerfile.opensuse_15.build index b3d5e56..245c90c 100644 --- a/builder/dockerfile.opensuse_15.build +++ b/builder/dockerfile.opensuse_15.build @@ -21,7 +21,6 @@ RUN zypper install -ny \ libbz2-devel \ libGLw-devel \ libgnutls-devel \ - libjpeg8-devel \ libopenssl-devel \ libpng16-devel \ libtiff-devel \ @@ -48,6 +47,10 @@ 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 -u 1000 docker && \ groupadd -g 1000 docker && \ usermod -a -G docker docker diff --git a/builder/scripts/build-libjpeg-turbo b/builder/scripts/build-libjpeg-turbo index a60f5d5..c6c2a03 100755 --- a/builder/scripts/build-libjpeg-turbo +++ b/builder/scripts/build-libjpeg-turbo @@ -21,6 +21,10 @@ install_build_dependencies() { dnf install -y cmake gcc return fi + if [ "$DISTRO" = opensuse ]; then + zypper install -y cmake gcc + return + fi apt-get update apt-get install -y cmake gcc @@ -35,6 +39,10 @@ ensure_libjpeg_is_fast() { dnf install -y nasm return fi + if [ "$DISTRO" = opensuse ]; then + zypper install -y nasm + return + fi apt-get update apt-get install -y nasm From 4bf7097dc997e25640f877f015c58099b44c5382 Mon Sep 17 00:00:00 2001 From: Dmitry Maksyoma Date: Tue, 24 Jan 2023 21:43:36 +1300 Subject: [PATCH 08/31] Support newest libjpeg-turbo on Debian Bullseye --- builder/dockerfile.debian_bullseye.build | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/builder/dockerfile.debian_bullseye.build b/builder/dockerfile.debian_bullseye.build index b1a1908..9248a6e 100644 --- a/builder/dockerfile.debian_bullseye.build +++ b/builder/dockerfile.debian_bullseye.build @@ -12,7 +12,7 @@ RUN apt-get update && \ RUN DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends tzdata RUN apt-get update && apt-get -y build-dep xorg-server libxfont-dev -RUN apt-get update && apt-get -y install cmake git libjpeg-dev libgnutls28-dev vim wget tightvncserver +RUN apt-get update && apt-get -y install cmake git libgnutls28-dev vim wget tightvncserver RUN apt-get update && apt-get -y install libpng-dev libtiff-dev libgif-dev libavcodec-dev libssl-dev libxrandr-dev libxcursor-dev # Additions for webp @@ -22,6 +22,10 @@ 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 && adduser docker sudo COPY --chown=docker:docker . /src/ From 5fcff79967a85edbc605aae4ee67858245cf8042 Mon Sep 17 00:00:00 2001 From: Dmitry Maksyoma Date: Tue, 24 Jan 2023 21:43:54 +1300 Subject: [PATCH 09/31] Support newest libjpeg-turbo on Ubuntu Jammy --- builder/dockerfile.ubuntu_jammy.build | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/builder/dockerfile.ubuntu_jammy.build b/builder/dockerfile.ubuntu_jammy.build index 4ca442f..f9d5206 100644 --- a/builder/dockerfile.ubuntu_jammy.build +++ b/builder/dockerfile.ubuntu_jammy.build @@ -12,7 +12,7 @@ RUN apt-get update && \ RUN apt-get update && apt-get install -y --no-install-recommends tzdata RUN apt-get update && apt-get -y build-dep xorg-server libxfont-dev -RUN apt-get update && apt-get -y install cmake git libjpeg-dev libgnutls28-dev vim wget tightvncserver +RUN apt-get update && apt-get -y install cmake git libgnutls28-dev vim wget tightvncserver RUN apt-get update && apt-get -y install libpng-dev libtiff-dev libgif-dev libavcodec-dev libssl-dev libxrandr-dev libxcursor-dev # Additions for webp @@ -22,6 +22,10 @@ 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 && adduser docker sudo COPY --chown=docker:docker . /src/ From 0206686ce0083d9e1a2a69bcd0eaadcd877f8898 Mon Sep 17 00:00:00 2001 From: Dmitry Maksyoma Date: Tue, 24 Jan 2023 21:44:37 +1300 Subject: [PATCH 10/31] Support newest libjpeg-turbo on Debian Buster --- builder/dockerfile.debian_buster.build | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/builder/dockerfile.debian_buster.build b/builder/dockerfile.debian_buster.build index 9849856..0bbe862 100644 --- a/builder/dockerfile.debian_buster.build +++ b/builder/dockerfile.debian_buster.build @@ -12,7 +12,7 @@ RUN apt-get update && \ RUN DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends tzdata RUN apt-get update && apt-get -y build-dep xorg-server libxfont-dev -RUN apt-get update && apt-get -y install cmake git libjpeg-dev libgnutls28-dev vim wget tightvncserver +RUN apt-get update && apt-get -y install cmake git libgnutls28-dev vim wget tightvncserver RUN apt-get update && apt-get -y install libpng-dev libtiff-dev libgif-dev libavcodec-dev libssl-dev libxrandr-dev libxcursor-dev # Additions for webp @@ -22,6 +22,10 @@ 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 && adduser docker sudo COPY --chown=docker:docker . /src/ From 07ef0566126333c473487826069d53fc5d6bd93b Mon Sep 17 00:00:00 2001 From: Dmitry Maksyoma Date: Tue, 24 Jan 2023 21:45:30 +1300 Subject: [PATCH 11/31] Support newest libjpeg-turbo on Kali Linux --- builder/dockerfile.kali_kali-rolling.build | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/builder/dockerfile.kali_kali-rolling.build b/builder/dockerfile.kali_kali-rolling.build index 2123440..ec97ae6 100644 --- a/builder/dockerfile.kali_kali-rolling.build +++ b/builder/dockerfile.kali_kali-rolling.build @@ -15,7 +15,7 @@ RUN apt-get update && \ RUN DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends tzdata RUN apt-get update && apt-get -y build-dep xorg-server libxfont-dev RUN apt-get update && apt-get -y install gcc-11 g++-11 -RUN apt-get update && apt-get -y install cmake git libjpeg-dev libgnutls28-dev vim wget tightvncserver +RUN apt-get update && apt-get -y install cmake git libgnutls28-dev vim wget tightvncserver RUN apt-get update && apt-get -y install libpng-dev libtiff-dev libgif-dev libavcodec-dev libssl-dev libxrandr-dev libxcursor-dev # Additions for webp @@ -25,6 +25,10 @@ RUN cd /tmp/libwebp-1.0.2 && \ ./configure --enable-static --disable-shared && \ make -j$(nproc) && 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 && adduser docker sudo COPY --chown=docker:docker . /src/ From 546814266ddd75764e14e100e25acfe0aa8da5e1 Mon Sep 17 00:00:00 2001 From: Dmitry Maksyoma Date: Tue, 24 Jan 2023 21:46:53 +1300 Subject: [PATCH 12/31] Support newest libjpeg-turbo on Ubuntu Bionic --- builder/dockerfile.ubuntu_bionic.build | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/builder/dockerfile.ubuntu_bionic.build b/builder/dockerfile.ubuntu_bionic.build index f54123b..25246f8 100644 --- a/builder/dockerfile.ubuntu_bionic.build +++ b/builder/dockerfile.ubuntu_bionic.build @@ -10,7 +10,7 @@ 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 libjpeg-dev libgnutls28-dev vim wget tightvncserver +RUN apt-get update && apt-get -y install cmake git libgnutls28-dev vim wget tightvncserver RUN apt-get update && apt-get -y install libpng-dev libtiff-dev libgif-dev libavcodec-dev libssl-dev libxrandr-dev libxcursor-dev # Additions for webp @@ -20,6 +20,10 @@ 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 + # 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 && \ From 956f83dda24939262913485d17481c1fa83a04b5 Mon Sep 17 00:00:00 2001 From: Dmitry Maksyoma Date: Tue, 24 Jan 2023 22:09:35 +1300 Subject: [PATCH 13/31] Remove special Bionic libjpeg-turbo build --- .gitlab-ci.yml | 17 ------ ...e.ubuntu_bionic+libjpeg-turbo_latest.build | 39 ------------ ...untu_bionic+libjpeg-turbo_latest.deb.build | 23 ------- ...buntu_bionic+libjpeg-turbo_latest.deb.test | 60 ------------------- 4 files changed, 139 deletions(-) delete mode 100644 builder/dockerfile.ubuntu_bionic+libjpeg-turbo_latest.build delete mode 100644 builder/dockerfile.ubuntu_bionic+libjpeg-turbo_latest.deb.build delete mode 100644 builder/dockerfile.ubuntu_bionic+libjpeg-turbo_latest.deb.test diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 9f99342..dd54aab 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -91,23 +91,6 @@ build_ubuntu_bionic_arm: paths: - output/ -build_ubuntu_bionic_libjpeg_turbo: - stage: build - allow_failure: false - before_script: - - *prepare_build - - *prepare_www - after_script: - - *prepare_artfacts - script: - - bash builder/build-package ubuntu bionic +libjpeg-turbo_latest - only: - variables: - - $BUILD_JOBS == 'all' || $BUILD_JOBS =~ $CI_JOB_NAME - artifacts: - paths: - - output/ - build_ubuntu_focal: stage: build allow_failure: true diff --git a/builder/dockerfile.ubuntu_bionic+libjpeg-turbo_latest.build b/builder/dockerfile.ubuntu_bionic+libjpeg-turbo_latest.build deleted file mode 100644 index 2615bff..0000000 --- a/builder/dockerfile.ubuntu_bionic+libjpeg-turbo_latest.build +++ /dev/null @@ -1,39 +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 -RUN apt-get update && apt-get -y install libpng-dev libtiff-dev libgif-dev libavcodec-dev libssl-dev libxrandr-dev libxcursor-dev - -RUN apt-get update && apt-get install -y cmake nasm gcc -RUN git clone https://github.com/libjpeg-turbo/libjpeg-turbo.git -RUN export MAKEFLAGS=-j`nproc`; cd libjpeg-turbo && cmake -G"Unix Makefiles" && make deb -RUN export MAKEFLAGS=-j`nproc`; cd libjpeg-turbo && cmake -DCMAKE_INSTALL_PREFIX=/usr/local -G"Unix Makefiles" && make && make install - -# 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 - -# 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+libjpeg-turbo_latest.deb.build b/builder/dockerfile.ubuntu_bionic+libjpeg-turbo_latest.deb.build deleted file mode 100644 index 7782f10..0000000 --- a/builder/dockerfile.ubuntu_bionic+libjpeg-turbo_latest.deb.build +++ /dev/null @@ -1,23 +0,0 @@ -FROM ubuntu:bionic - -RUN apt-get update && \ - apt-get -y install vim build-essential devscripts equivs - -ARG KASMVNC_PACKAGE_DIR -COPY $KASMVNC_PACKAGE_DIR/libjpeg-turbo*deb /tmp/ -RUN apt-get install /tmp/libjpeg-turbo*deb - -# Install build-deps for the package. -COPY ./debian/control /tmp -RUN apt-get update && echo YYY | mk-build-deps --install --remove /tmp/control - -ENV LD_LIBRARY_PATH="/opt/libjpeg-turbo/lib64/:$LD_LIBRARY_PATH" - -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+libjpeg-turbo_latest.deb.test b/builder/dockerfile.ubuntu_bionic+libjpeg-turbo_latest.deb.test deleted file mode 100644 index 635ee0f..0000000 --- a/builder/dockerfile.ubuntu_bionic+libjpeg-turbo_latest.deb.test +++ /dev/null @@ -1,60 +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=/opt/libjpeg-turbo/lib64/:/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/libjpeg-turbo_*.deb /tmp/ -RUN apt-get install /tmp/libjpeg-turbo*deb - -ARG BUILD_DEBIAN_REVISION -COPY $KASMVNC_PACKAGE_DIR/kasmvncserver_*$BUILD_DEBIAN_REVISION*.deb /tmp/ -RUN /tmp/scripts/install_kasmvncserver_package "$BUILD_DEBIAN_REVISION" - -### END CUSTOM STUFF ### - -RUN chown -R 1000:0 $HOME -USER 1000:ssl-cert -WORKDIR $HOME - -ENTRYPOINT [ "/dockerstartup/vnc_startup.sh" ] From 503784a4aa549e1fe984e61786974a2b0bf46b08 Mon Sep 17 00:00:00 2001 From: Dmitry Maksyoma Date: Tue, 24 Jan 2023 22:15:03 +1300 Subject: [PATCH 14/31] Refactor --- builder/scripts/build-libjpeg-turbo | 33 ++--------------------------- builder/scripts/common.sh | 13 ++++++++++++ 2 files changed, 15 insertions(+), 31 deletions(-) diff --git a/builder/scripts/build-libjpeg-turbo b/builder/scripts/build-libjpeg-turbo index c6c2a03..49134ba 100755 --- a/builder/scripts/build-libjpeg-turbo +++ b/builder/scripts/build-libjpeg-turbo @@ -11,41 +11,12 @@ build_and_install() { } install_build_dependencies() { + install_packages cmake gcc ensure_libjpeg_is_fast - - if [ "$DISTRO" = centos ]; then - yum install -y cmake gcc - return - fi - if [ "$DISTRO" = oracle ]; then - dnf install -y cmake gcc - return - fi - if [ "$DISTRO" = opensuse ]; then - zypper install -y cmake gcc - return - fi - - apt-get update - apt-get install -y cmake gcc } ensure_libjpeg_is_fast() { - if [ "$DISTRO" = centos ]; then - yum install -y nasm - return - fi - if [ "$DISTRO" = oracle ]; then - dnf install -y nasm - return - fi - if [ "$DISTRO" = opensuse ]; then - zypper install -y nasm - return - fi - - apt-get update - apt-get install -y nasm + install_packages nasm } prepare_libjpeg_source() { diff --git a/builder/scripts/common.sh b/builder/scripts/common.sh index 9a2d6be..c066d73 100644 --- a/builder/scripts/common.sh +++ b/builder/scripts/common.sh @@ -12,4 +12,17 @@ detect_distro() { fi } +install_packages() { + local install_cmd=no-command-defined + + case "$DISTRO" in + centos) install_cmd="yum install -y" ;; + oracle) install_cmd="dnf install -y" ;; + opensuse) install_cmd="zypper install -y" ;; + *) install_cmd="apt-get update && apt-get install -y" + esac + + eval "$install_cmd $*" +} + detect_distro From a5193e240a39434dc8b6dd0a4309e22c0ee020ca Mon Sep 17 00:00:00 2001 From: Dmitry Maksyoma Date: Tue, 24 Jan 2023 22:16:11 +1300 Subject: [PATCH 15/31] Remove cruft --- builder/dockerfile.ubuntu1604.build | 21 --------------------- 1 file changed, 21 deletions(-) delete mode 100644 builder/dockerfile.ubuntu1604.build diff --git a/builder/dockerfile.ubuntu1604.build b/builder/dockerfile.ubuntu1604.build deleted file mode 100644 index 8ca3260..0000000 --- a/builder/dockerfile.ubuntu1604.build +++ /dev/null @@ -1,21 +0,0 @@ -FROM ubuntu:16.04 - -RUN sed -i 's$# deb-src$deb-src$' /etc/apt/sources.list - -RUN apt-get update && \ - apt-get -y install sudo - -RUN apt-get -y build-dep xorg-server -RUN apt-get -y install cmake git libjpeg-dev libgnutls-dev vim wget tightvncserver -RUN apt-get -y install libjpeg-dev libpng-dev libtiff-dev libgif-dev -RUN cd /tmp && wget https://storage.googleapis.com/downloads.webmproject.org/releases/webp/libwebp-1.0.2.tar.gz -RUN cd /tmp && tar -xzvf /tmp/libwebp-* -RUN cd /tmp/libwebp-1.0.2 && ./configure && make && make install - -RUN useradd -m docker && echo "docker:docker" | chpasswd && adduser docker sudo - -COPY --chown=docker:docker . /src/ - - -USER docker -ENTRYPOINT ["/src/builder/build.sh"] From 55c8c1e80e4a21e527f8c2ebde28f80a5b581515 Mon Sep 17 00:00:00 2001 From: Dmitry Maksyoma Date: Wed, 25 Jan 2023 17:27:10 +1300 Subject: [PATCH 16/31] Support newest libjpeg-turbo on Fedora 33 --- builder/dockerfile.fedora_thirtythree.build | 8 ++++++-- builder/scripts/common.sh | 3 +++ 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/builder/dockerfile.fedora_thirtythree.build b/builder/dockerfile.fedora_thirtythree.build index b9f5720..6aaff72 100644 --- a/builder/dockerfile.fedora_thirtythree.build +++ b/builder/dockerfile.fedora_thirtythree.build @@ -7,7 +7,7 @@ ENV XORG_VER 1.20.10 # RUN dnf install -y build-dep xorg-server libxfont-dev sudo RUN dnf install -y gcc cmake git gnutls-devel vim wget #tightvncserver -RUN dnf install -y libjpeg-turbo-devel libpng-devel libtiff-devel giflib-devel openssl-devel +RUN dnf install -y libpng-devel libtiff-devel giflib-devel openssl-devel #libavcodec-dev RUN dnf -y install https://download1.rpmfusion.org/free/fedora/rpmfusion-free-release-$(rpm -E %fedora).noarch.rpm @@ -16,7 +16,7 @@ RUN dnf -y install ffmpeg-devel RUN dnf install -y make RUN dnf group install -y "Development Tools" -RUN dnf install -y xorg-x11-server-devel zlib-devel libjpeg-turbo-devel +RUN dnf install -y xorg-x11-server-devel zlib-devel RUN dnf install -y libxkbfile-devel libXfont2-devel xorg-x11-font-utils \ xorg-x11-xtrans-devel xorg-x11-xkb-utils-devel libXrandr-devel libXtst-devel \ libXcursor-devel @@ -30,6 +30,10 @@ 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/ diff --git a/builder/scripts/common.sh b/builder/scripts/common.sh index c066d73..4ed44b5 100644 --- a/builder/scripts/common.sh +++ b/builder/scripts/common.sh @@ -5,6 +5,8 @@ detect_distro() { DISTRO=centos elif [ -f /etc/oracle-release ]; then DISTRO=oracle + elif [ -f /etc/fedora-release ]; then + DISTRO=fedora elif [ -f /usr/bin/zypper ]; then DISTRO=opensuse else @@ -18,6 +20,7 @@ install_packages() { 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" ;; *) install_cmd="apt-get update && apt-get install -y" esac From 8d49eed7f0a3fb6f605adb93a7e51d29610338d9 Mon Sep 17 00:00:00 2001 From: Dmitry Maksyoma Date: Wed, 25 Jan 2023 17:51:58 +1300 Subject: [PATCH 17/31] Support --perf-test, --shell in test-deb, test-rpm --- builder/os_ver_cli.sh | 2 ++ builder/process_test_options.sh | 49 +++++++++++++++++++++++++++++++++ builder/test-deb | 6 +++- builder/test-rpm | 5 +++- 4 files changed, 60 insertions(+), 2 deletions(-) create mode 100644 builder/process_test_options.sh diff --git a/builder/os_ver_cli.sh b/builder/os_ver_cli.sh index f23fb9e..534810d 100644 --- a/builder/os_ver_cli.sh +++ b/builder/os_ver_cli.sh @@ -1,3 +1,5 @@ +#!/bin/bash + default_os=${default_os:-ubuntu} default_os_codename=${default_os_codename:-bionic} diff --git a/builder/process_test_options.sh b/builder/process_test_options.sh new file mode 100644 index 0000000..da8b55c --- /dev/null +++ b/builder/process_test_options.sh @@ -0,0 +1,49 @@ +#!/bin/bash + +usage() { + echo >&2 "Usage: $(basename "$0") [-s|--shell] [-p|--perf-test] [-h|--help] " + exit +} + +process_options() { + local sorted_options=$(getopt -o psh --long perf-test --long shell --long help -- "$@") + eval set -- $sorted_options + + while : ; do + case "$1" in + -p|--perf-test) + entrypoint_args='-interface 0.0.0.0 -selfBench :1' + entrypoint_executable="--entrypoint=/usr/bin/Xvnc" + shift + ;; + -s|--shell) + entrypoint_executable="--entrypoint=bash" + shift + ;; + -h|--help) + print_usage=1 + ;; + --) + shift + break + ;; + esac + done + + leftover_options=("$@") +} + +declare -a leftover_options + +if [ "$#" -eq 0 ]; then + usage + exit +fi + +process_options "$@" +set -- "${leftover_options[@]}" + +if [ -n "$print_usage" ]; then + usage + exit +fi diff --git a/builder/test-deb b/builder/test-deb index 50accfa..9a8c11d 100755 --- a/builder/test-deb +++ b/builder/test-deb @@ -3,6 +3,7 @@ set -e cd "$(dirname "$0")/.." +. ./builder/process_test_options.sh . ./builder/os_ver_cli.sh . ./builder/common.sh @@ -11,8 +12,11 @@ docker build --build-arg KASMVNC_PACKAGE_DIR="builder/build/${os_codename}" \ --build-arg BUILD_DEBIAN_REVISION="$build_debian_revision" \ -t "$tester_image" \ -f "builder/dockerfile.${os}_${os_codename}${build_tag}.deb.test" . + docker run -it -p "443:$VNC_PORT" --rm \ -e KASMVNC_VERBOSE_LOGGING=$KASMVNC_VERBOSE_LOGGING \ -e "VNC_USER=foo" -e "VNC_PW=foobar" \ -e "VNC_PORT=$VNC_PORT" \ - "$tester_image" + $entrypoint_executable \ + "$tester_image" \ + $entrypoint_args diff --git a/builder/test-rpm b/builder/test-rpm index fbf731e..aed8652 100755 --- a/builder/test-rpm +++ b/builder/test-rpm @@ -3,6 +3,7 @@ set -e cd "$(dirname "$0")/.." +. ./builder/process_test_options.sh . ./builder/os_ver_cli.sh . ./builder/common.sh @@ -16,4 +17,6 @@ docker run -it -p "443:$VNC_PORT" --rm \ -e KASMVNC_VERBOSE_LOGGING=$KASMVNC_VERBOSE_LOGGING \ -e "VNC_USER=foo" -e "VNC_PW=foobar" \ -e "VNC_PORT=$VNC_PORT" \ - kasmvnctester_${os}:$os_codename + $entrypoint_executable \ + kasmvnctester_${os}:$os_codename \ + $entrypoint_args From 2017ac01f5cf7a0f23e036dee1cbd33919209120 Mon Sep 17 00:00:00 2001 From: Dmitry Maksyoma Date: Wed, 25 Jan 2023 18:30:56 +1300 Subject: [PATCH 18/31] Support --perf-test, --shell in barebones test scripts --- builder/dockerfile.ubuntu_focal.barebones.deb.test | 6 +++++- builder/test-deb-barebones | 5 ++++- builder/test-rpm-barebones | 5 ++++- 3 files changed, 13 insertions(+), 3 deletions(-) diff --git a/builder/dockerfile.ubuntu_focal.barebones.deb.test b/builder/dockerfile.ubuntu_focal.barebones.deb.test index 9b16154..d9effe0 100644 --- a/builder/dockerfile.ubuntu_focal.barebones.deb.test +++ b/builder/dockerfile.ubuntu_focal.barebones.deb.test @@ -2,9 +2,13 @@ FROM ubuntu:focal ENV STARTUPDIR=/dockerstartup +COPY ./builder/scripts/ /tmp/scripts/ +COPY ./debian/changelog /tmp + ARG KASMVNC_PACKAGE_DIR COPY $KASMVNC_PACKAGE_DIR/kasmvncserver_*.deb /tmp/ -RUN rm -f /tmp/kasmvncserver_*+*.deb; apt-get update && dpkg -i /tmp/*.deb; apt-get -yf install +RUN /tmp/scripts/install_kasmvncserver_package + RUN apt-get update && apt-get -y install xterm lsb-release RUN mkdir -p $STARTUPDIR diff --git a/builder/test-deb-barebones b/builder/test-deb-barebones index d29978e..9ffdb5d 100755 --- a/builder/test-deb-barebones +++ b/builder/test-deb-barebones @@ -3,6 +3,7 @@ set -e cd "$(dirname "$0")/.." +. ./builder/process_test_options.sh . ./builder/common.sh os="${1:-debian}" os_codename="${2:-buster}" @@ -13,4 +14,6 @@ docker build --build-arg KASMVNC_PACKAGE_DIR="builder/build/${os_codename}" \ echo docker run -it -p "443:$VNC_PORT" --rm -e "VNC_USER=foo" -e "VNC_PW=foobar" \ -e "VNC_PORT=$VNC_PORT" \ - kasmvnctester_barebones_${os}:$os_codename + $entrypoint_executable \ + kasmvnctester_barebones_${os}:$os_codename \ + $entrypoint_args diff --git a/builder/test-rpm-barebones b/builder/test-rpm-barebones index b804a75..6318bda 100755 --- a/builder/test-rpm-barebones +++ b/builder/test-rpm-barebones @@ -3,6 +3,7 @@ set -e cd "$(dirname "$0")" +. ./process_test_options.sh . ./common.sh os="${1:-centos}" os_codename="${2:-core}" @@ -12,4 +13,6 @@ docker build --build-arg KASMVNC_PACKAGE_DIR="build/${os}_${os_codename}" \ -f dockerfile.${os}_${os_codename}.barebones.rpm.test . docker run -it -p "443:$VNC_PORT" --rm -e "VNC_USER=foo" -e "VNC_PW=foobar" \ -e "VNC_PORT=$VNC_PORT" \ - kasmvnctester_barebones_${os}:$os_codename + $entrypoint_executable \ + kasmvnctester_barebones_${os}:$os_codename \ + $entrypoint_args From a5a36d96b670b111e0ec83ac9fdaf9a48bcee431 Mon Sep 17 00:00:00 2001 From: Dmitry Maksyoma Date: Thu, 26 Jan 2023 17:18:17 +1300 Subject: [PATCH 19/31] Extract WebP building into a script --- builder/dockerfile.debian_bullseye.build | 8 +------ builder/dockerfile.debian_buster.build | 8 +------ builder/dockerfile.fedora_thirtythree.build | 8 +------ builder/dockerfile.kali_kali-rolling.build | 8 +------ builder/dockerfile.opensuse_15.build | 8 +------ builder/dockerfile.oracle_8.build | 8 +------ builder/dockerfile.ubuntu_bionic.build | 8 +------ builder/dockerfile.ubuntu_focal.build | 8 +------ builder/dockerfile.ubuntu_jammy.build | 8 +------ builder/scripts/build-webp | 23 +++++++++++++++++++++ 10 files changed, 32 insertions(+), 63 deletions(-) create mode 100755 builder/scripts/build-webp diff --git a/builder/dockerfile.debian_bullseye.build b/builder/dockerfile.debian_bullseye.build index 9248a6e..4f0a970 100644 --- a/builder/dockerfile.debian_bullseye.build +++ b/builder/dockerfile.debian_bullseye.build @@ -15,15 +15,9 @@ 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 RUN apt-get update && apt-get -y install libpng-dev libtiff-dev libgif-dev libavcodec-dev libssl-dev libxrandr-dev libxcursor-dev -# 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-webp RUN $SCRIPTS_DIR/build-libjpeg-turbo RUN useradd -m docker && echo "docker:docker" | chpasswd && adduser docker sudo diff --git a/builder/dockerfile.debian_buster.build b/builder/dockerfile.debian_buster.build index 0bbe862..8c8fc7b 100644 --- a/builder/dockerfile.debian_buster.build +++ b/builder/dockerfile.debian_buster.build @@ -15,15 +15,9 @@ 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 RUN apt-get update && apt-get -y install libpng-dev libtiff-dev libgif-dev libavcodec-dev libssl-dev libxrandr-dev libxcursor-dev -# 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-webp RUN $SCRIPTS_DIR/build-libjpeg-turbo RUN useradd -m docker && echo "docker:docker" | chpasswd && adduser docker sudo diff --git a/builder/dockerfile.fedora_thirtythree.build b/builder/dockerfile.fedora_thirtythree.build index 6aaff72..d35a98f 100644 --- a/builder/dockerfile.fedora_thirtythree.build +++ b/builder/dockerfile.fedora_thirtythree.build @@ -23,15 +23,9 @@ RUN dnf install -y libxkbfile-devel libXfont2-devel xorg-x11-font-utils \ RUN dnf install -y mesa-dri-drivers RUN dnf install -y bzip2 redhat-lsb-core -# 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-webp RUN $SCRIPTS_DIR/build-libjpeg-turbo RUN useradd -m docker && echo "docker:docker" | chpasswd diff --git a/builder/dockerfile.kali_kali-rolling.build b/builder/dockerfile.kali_kali-rolling.build index ec97ae6..23346d5 100644 --- a/builder/dockerfile.kali_kali-rolling.build +++ b/builder/dockerfile.kali_kali-rolling.build @@ -18,15 +18,9 @@ RUN apt-get update && apt-get -y install gcc-11 g++-11 RUN apt-get update && apt-get -y install cmake git libgnutls28-dev vim wget tightvncserver RUN apt-get update && apt-get -y install libpng-dev libtiff-dev libgif-dev libavcodec-dev libssl-dev libxrandr-dev libxcursor-dev -# 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 -j$(nproc) && make install - 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 && adduser docker sudo diff --git a/builder/dockerfile.opensuse_15.build b/builder/dockerfile.opensuse_15.build index 245c90c..3bc522d 100644 --- a/builder/dockerfile.opensuse_15.build +++ b/builder/dockerfile.opensuse_15.build @@ -40,15 +40,9 @@ RUN zypper install -ny \ xorg-x11-util-devel \ zlib-devel -# 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-webp RUN $SCRIPTS_DIR/build-libjpeg-turbo RUN useradd -u 1000 docker && \ diff --git a/builder/dockerfile.oracle_8.build b/builder/dockerfile.oracle_8.build index feec400..2f407bd 100644 --- a/builder/dockerfile.oracle_8.build +++ b/builder/dockerfile.oracle_8.build @@ -45,15 +45,9 @@ RUN dnf install -y \ libXtst-devel \ libXcursor-devel -# 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-webp RUN $SCRIPTS_DIR/build-libjpeg-turbo RUN useradd -m docker && echo "docker:docker" | chpasswd diff --git a/builder/dockerfile.ubuntu_bionic.build b/builder/dockerfile.ubuntu_bionic.build index 25246f8..4095901 100644 --- a/builder/dockerfile.ubuntu_bionic.build +++ b/builder/dockerfile.ubuntu_bionic.build @@ -13,15 +13,9 @@ 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 RUN apt-get update && apt-get -y install libpng-dev libtiff-dev libgif-dev libavcodec-dev libssl-dev libxrandr-dev libxcursor-dev -# 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-webp RUN $SCRIPTS_DIR/build-libjpeg-turbo # Fix for older required libs diff --git a/builder/dockerfile.ubuntu_focal.build b/builder/dockerfile.ubuntu_focal.build index 3571ebc..43094ed 100644 --- a/builder/dockerfile.ubuntu_focal.build +++ b/builder/dockerfile.ubuntu_focal.build @@ -15,15 +15,9 @@ RUN apt-get update && apt-get -y build-dep xorg-server libxfont-dev RUN apt-get update && apt-get -y install cmake git vim wget RUN apt-get update && apt-get -y install libpng-dev libtiff-dev libgif-dev libavcodec-dev libssl-dev libxrandr-dev libxcursor-dev -# 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-webp RUN $SCRIPTS_DIR/build-libjpeg-turbo RUN useradd -m docker && echo "docker:docker" | chpasswd && adduser docker sudo diff --git a/builder/dockerfile.ubuntu_jammy.build b/builder/dockerfile.ubuntu_jammy.build index f9d5206..33a3709 100644 --- a/builder/dockerfile.ubuntu_jammy.build +++ b/builder/dockerfile.ubuntu_jammy.build @@ -15,15 +15,9 @@ 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 RUN apt-get update && apt-get -y install libpng-dev libtiff-dev libgif-dev libavcodec-dev libssl-dev libxrandr-dev libxcursor-dev -# 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-webp RUN $SCRIPTS_DIR/build-libjpeg-turbo RUN useradd -m docker && echo "docker:docker" | chpasswd && adduser docker sudo diff --git a/builder/scripts/build-webp b/builder/scripts/build-webp new file mode 100755 index 0000000..1393b47 --- /dev/null +++ b/builder/scripts/build-webp @@ -0,0 +1,23 @@ +#!/usr/bin/env bash + +set -euo pipefail + +webp_tar_url=https://storage.googleapis.com/downloads.webmproject.org/releases/webp/libwebp-1.0.2.tar.gz + +prepare_source() { + cd /tmp + wget "$webp_tar_url" + tar -xzf /tmp/libwebp-* + rm /tmp/libwebp-*.tar.gz + cd /tmp/libwebp-* +} + +build_and_install() { + export MAKEFLAGS=-j`nproc` + ./configure --enable-static --disable-shared + make + make install +} + +prepare_source +build_and_install From 6d791eb0591f800bab066150eafa953b472505a7 Mon Sep 17 00:00:00 2001 From: Dmitry Maksyoma Date: Thu, 26 Jan 2023 18:52:02 +1300 Subject: [PATCH 20/31] Refactor --- builder/dockerfile.debian_buster.deb.test | 8 -------- 1 file changed, 8 deletions(-) diff --git a/builder/dockerfile.debian_buster.deb.test b/builder/dockerfile.debian_buster.deb.test index 7193650..416e9fc 100644 --- a/builder/dockerfile.debian_buster.deb.test +++ b/builder/dockerfile.debian_buster.deb.test @@ -34,14 +34,6 @@ 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 apt-get update && apt-get install -y task-cinnamon-desktop -RUN apt-get update && apt-get install -y task-gnome-desktop -RUN mkdir -p /usr/share/man/man1 -RUN apt-get update && apt-get install -y apt-utils openjdk-11-jre -RUN apt-get update && apt-get install -y task-lxde-desktop -RUN apt-get update && apt-get install -y task-mate-desktop -RUN apt-get update && apt-get install -y task-kde-desktop - RUN echo 'source $STARTUPDIR/generate_container_user' >> $HOME/.bashrc RUN mkdir -p $STARTUPDIR From 33018e7b828b96a2c6847f1f6389e18e913a641f Mon Sep 17 00:00:00 2001 From: Dmitry Maksyoma Date: Thu, 26 Jan 2023 18:56:39 +1300 Subject: [PATCH 21/31] Remove package dependencies on libjpeg --- debian/control | 20 ++++++++++---------- opensuse/kasmvncserver.spec | 18 +++++++++--------- 2 files changed, 19 insertions(+), 19 deletions(-) diff --git a/debian/control b/debian/control index 55bba16..1373fde 100644 --- a/debian/control +++ b/debian/control @@ -2,7 +2,7 @@ Source: kasmvnc Section: x11 Priority: optional Maintainer: Kasm Technologies LLC -Build-Depends: debhelper (>= 11), rsync, libjpeg-dev, libjpeg-dev, libpng-dev, +Build-Depends: debhelper (>= 11), rsync, libpng-dev, libtiff-dev, libgif-dev, libavcodec-dev, libssl-dev, libgl1, libxfont2, libsm6, libxext-dev, libxrandr-dev, libxtst-dev, libxcursor-dev, libunwind8 Standards-Version: 4.1.3 Homepage: https://github.com/kasmtech/KasmVNC @@ -16,12 +16,12 @@ Depends: ${shlibs:Depends}, ${misc:Depends}, ${perl:Depends}, ssl-cert, xauth, libhash-merge-simple-perl, libscalar-list-utils-perl, liblist-moreutils-perl, libtry-tiny-perl 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 - 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. +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. diff --git a/opensuse/kasmvncserver.spec b/opensuse/kasmvncserver.spec index 97bcaac..6d22b2b 100644 --- a/opensuse/kasmvncserver.spec +++ b/opensuse/kasmvncserver.spec @@ -7,18 +7,18 @@ License: GPLv2+ URL: https://github.com/kasmtech/KasmVNC BuildRequires: rsync -Requires: xauth, hostname, libxkbcommon-x11-0, xkeyboard-config, x11-tools, openssl, perl, libpixman-1-0, libjpeg8, libgomp1, libXfont2-2, libXdmcp6, libglvnd, xkbcomp, perl-Switch, perl-YAML-Tiny, perl-Hash-Merge-Simple, perl-Scalar-List-Utils, perl-List-MoreUtils, perl-Try-Tiny +Requires: xauth, hostname, libxkbcommon-x11-0, xkeyboard-config, x11-tools, openssl, perl, libpixman-1-0, libgomp1, libXfont2-2, libXdmcp6, libglvnd, xkbcomp, perl-Switch, perl-YAML-Tiny, perl-Hash-Merge-Simple, perl-Scalar-List-Utils, perl-List-MoreUtils, perl-Try-Tiny Conflicts: tigervnc, tigervnc-x11vnc %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 +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. %prep From 3104465f62fb22d6639e92af59530850336578c8 Mon Sep 17 00:00:00 2001 From: Dmitry Maksyoma Date: Thu, 26 Jan 2023 19:51:36 +1300 Subject: [PATCH 22/31] Remove cruft --- builder/dockerfile.ubuntu_bionic.test | 2 +- builder/dockerfile.ubuntu_focal.test | 2 +- builder/dockerfile.ubuntu_jammy.test | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/builder/dockerfile.ubuntu_bionic.test b/builder/dockerfile.ubuntu_bionic.test index de10bd1..a9c2049 100644 --- a/builder/dockerfile.ubuntu_bionic.test +++ b/builder/dockerfile.ubuntu_bionic.test @@ -29,7 +29,7 @@ WORKDIR $HOME ### REQUIRED STUFF ### -RUN apt-get update && apt-get install -y supervisor xfce4 xfce4-terminal xterm libnss-wrapper gettext libjpeg-dev wget +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 diff --git a/builder/dockerfile.ubuntu_focal.test b/builder/dockerfile.ubuntu_focal.test index 7cf307b..3002fb5 100644 --- a/builder/dockerfile.ubuntu_focal.test +++ b/builder/dockerfile.ubuntu_focal.test @@ -29,7 +29,7 @@ WORKDIR $HOME ### REQUIRED STUFF ### -RUN apt-get update && apt-get install -y supervisor xfce4 xfce4-terminal xterm libnss-wrapper gettext libjpeg-dev wget +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 diff --git a/builder/dockerfile.ubuntu_jammy.test b/builder/dockerfile.ubuntu_jammy.test index 9adc1b5..a4fb5d7 100644 --- a/builder/dockerfile.ubuntu_jammy.test +++ b/builder/dockerfile.ubuntu_jammy.test @@ -29,7 +29,7 @@ WORKDIR $HOME ### REQUIRED STUFF ### -RUN apt-get update && apt-get install -y supervisor xfce4 xfce4-terminal xterm libnss-wrapper gettext libjpeg-dev wget +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 From 1116642e62bfc57da21d5a521ee1472af22dd10a Mon Sep 17 00:00:00 2001 From: Dmitry Maksyoma Date: Thu, 26 Jan 2023 20:56:25 +1300 Subject: [PATCH 23/31] Update README --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index cec0a57..22822a8 100644 --- a/README.md +++ b/README.md @@ -228,6 +228,7 @@ command_line: # New Features! + - Faster jpeg compression (via statically linked libjpeg-turbo) - Webp image compression for better bandwidth usage - Automatic mixing of webp and jpeg based on CPU availability on server - Multi-threaded image encoding for smoother frame rate for servers with more cores From a1cd6569103d9831af110503239b622559152f8c Mon Sep 17 00:00:00 2001 From: Dmitry Maksyoma Date: Thu, 26 Jan 2023 21:05:07 +1300 Subject: [PATCH 24/31] Update `test-deb` and `test-rpm` docs --- builder/README.md | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/builder/README.md b/builder/README.md index 2687777..ea05cc1 100644 --- a/builder/README.md +++ b/builder/README.md @@ -48,6 +48,18 @@ It will install the package inside a new container and run KasmVNC. Open browser and point to https://localhost:443/ or https://\:443/ +## Debugging + +To debug a test container, run `test-deb ubuntu focal -s` or `test-deb ubuntu +focal --shell`. It runs a shell instead of starting KasmVNC. + +## Testing performance + +To run a performance test, add `-p` option: +``` +builder/test-deb ubuntu focal -p +``` + # Package development ## deb/rpm package building and testing From a1b138e5e187cc519043b36c2699c04a3de6cd49 Mon Sep 17 00:00:00 2001 From: Dmitry Maksyoma Date: Thu, 23 Feb 2023 05:39:12 +1300 Subject: [PATCH 25/31] vncserver: support Logger debug level --- unix/KasmVNC/Logger.pm | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/unix/KasmVNC/Logger.pm b/unix/KasmVNC/Logger.pm index b8e64af..e5ab497 100644 --- a/unix/KasmVNC/Logger.pm +++ b/unix/KasmVNC/Logger.pm @@ -8,9 +8,18 @@ use Data::Dumper; sub new { my ($class, $args) = @_; my $self = bless { + level => $args->{level} // "warn" }, $class; } +sub debug { + my $self = shift; + + return unless ($self->{level} eq "debug"); + + say { *STDERR } @_; +} + sub warn { my $self = shift; From 797c57121a409af19bbcaf5261e8211810748184 Mon Sep 17 00:00:00 2001 From: Dmitry Maksyoma Date: Thu, 23 Feb 2023 05:40:12 +1300 Subject: [PATCH 26/31] vncserver: add debug output on config load --- unix/KasmVNC/Config.pm | 3 +++ unix/vncserver | 6 ++++-- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/unix/KasmVNC/Config.pm b/unix/KasmVNC/Config.pm index 7bcfdc2..2b199e4 100644 --- a/unix/KasmVNC/Config.pm +++ b/unix/KasmVNC/Config.pm @@ -8,6 +8,8 @@ use Data::Dumper; use Hash::Merge::Simple; use KasmVNC::Utils; +our $logger; + sub merge { my @configsToMerge = map { $_->{data} } @_; my $mergedConfig = Hash::Merge::Simple::merge(@configsToMerge) // {}; @@ -31,6 +33,7 @@ sub load { failIfConfigNotReadable($self->{filename}); + $logger->debug("Loading config " . $self->{filename}); $self->{data} = YAML::Tiny->read($self->{filename})->[0]; } diff --git a/unix/vncserver b/unix/vncserver index cae50ac..e2d84bc 100755 --- a/unix/vncserver +++ b/unix/vncserver @@ -1171,6 +1171,7 @@ sub DefineFilePathsAndStuff { $KasmVNC::Users::vncPasswdBin = $exedir . "kasmvncpasswd"; $KasmVNC::Users::logger = $logger; + $KasmVNC::Config::logger = $logger; $vncSystemConfigDir = "/etc/kasmvnc"; if ($ENV{KASMVNC_DEVELOPMENT}) { @@ -1979,7 +1980,7 @@ sub DefineConfigToCLIConversion { $self = shift; my @values = @{ listify($self->configValues()) }; - + my $valuesStr = ""; foreach $value (@values) { $valuesStr = $valuesStr . "-http-header '$value' " @@ -2754,5 +2755,6 @@ sub SetAppSettingsFromConfigAndCli { } sub InitLogger { - $logger = KasmVNC::Logger->new(); + my $debugEnabled = any { $_ eq "-debug" } @ARGV; + $logger = KasmVNC::Logger->new({ level => $debugEnabled ? "debug" : "warn" }); } From 16bf937bfab5ff00d64a2e3d99e0eaded473a77b Mon Sep 17 00:00:00 2001 From: Dmitry Maksyoma Date: Thu, 23 Feb 2023 06:19:42 +1300 Subject: [PATCH 27/31] vncserver: die if config wasn't loaded --- unix/KasmVNC/Config.pm | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/unix/KasmVNC/Config.pm b/unix/KasmVNC/Config.pm index 2b199e4..7a5644a 100644 --- a/unix/KasmVNC/Config.pm +++ b/unix/KasmVNC/Config.pm @@ -34,7 +34,12 @@ sub load { failIfConfigNotReadable($self->{filename}); $logger->debug("Loading config " . $self->{filename}); - $self->{data} = YAML::Tiny->read($self->{filename})->[0]; + my $yamlDocuments = YAML::Tiny->read($self->{filename}); + unless (defined $yamlDocuments) { + die "Couldn't load config: $self-{filename}. Probable reason: No newline at end of file"; + } + + $self->{data} = $yamlDocuments->[0]; } sub get { From e5056eaeea2d8f8aa4a9d7a0703f70ed980a19d7 Mon Sep 17 00:00:00 2001 From: Dmitry Maksyoma Date: Thu, 23 Feb 2023 07:01:42 +1300 Subject: [PATCH 28/31] vncserver: fix debug output --- unix/KasmVNC/Config.pm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/unix/KasmVNC/Config.pm b/unix/KasmVNC/Config.pm index 7a5644a..d194c78 100644 --- a/unix/KasmVNC/Config.pm +++ b/unix/KasmVNC/Config.pm @@ -36,7 +36,7 @@ sub load { $logger->debug("Loading config " . $self->{filename}); my $yamlDocuments = YAML::Tiny->read($self->{filename}); unless (defined $yamlDocuments) { - die "Couldn't load config: $self-{filename}. Probable reason: No newline at end of file"; + die "Couldn't load config: $self->{filename}. Probable reason: No newline at end of file"; } $self->{data} = $yamlDocuments->[0]; From 8a9fd18228f7f381996633bac93d23e78dfb7190 Mon Sep 17 00:00:00 2001 From: Dmitry Maksyoma Date: Thu, 23 Feb 2023 07:40:00 +1300 Subject: [PATCH 29/31] vncserver: die without printing source code line --- unix/KasmVNC/Config.pm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/unix/KasmVNC/Config.pm b/unix/KasmVNC/Config.pm index d194c78..78d49d3 100644 --- a/unix/KasmVNC/Config.pm +++ b/unix/KasmVNC/Config.pm @@ -36,7 +36,7 @@ sub load { $logger->debug("Loading config " . $self->{filename}); my $yamlDocuments = YAML::Tiny->read($self->{filename}); unless (defined $yamlDocuments) { - die "Couldn't load config: $self->{filename}. Probable reason: No newline at end of file"; + die "Couldn't load config: $self->{filename}. Probable reason: No newline at end of file\n"; } $self->{data} = $yamlDocuments->[0]; From ec347f5b469f22faa6c70ac62c519ac006df8fb3 Mon Sep 17 00:00:00 2001 From: Dmitry Maksyoma Date: Thu, 9 Mar 2023 23:20:18 +1300 Subject: [PATCH 30/31] Support newest libjpeg-turbo on Fedora 37 --- builder/dockerfile.fedora_thirtyseven.build | 7 +++++-- builder/dockerfile.fedora_thirtyseven.rpm.test | 3 +-- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/builder/dockerfile.fedora_thirtyseven.build b/builder/dockerfile.fedora_thirtyseven.build index e3c75b4..4557431 100644 --- a/builder/dockerfile.fedora_thirtyseven.build +++ b/builder/dockerfile.fedora_thirtyseven.build @@ -27,8 +27,6 @@ RUN \ glibc-devel \ libdrm-devel \ libepoxy-devel \ - libjpeg-turbo-devel \ - libjpeg-turbo-static \ libmd-devel \ libpciaccess-devel \ libtool \ @@ -75,6 +73,11 @@ RUN \ 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/ diff --git a/builder/dockerfile.fedora_thirtyseven.rpm.test b/builder/dockerfile.fedora_thirtyseven.rpm.test index 2bce89f..5c7dea3 100644 --- a/builder/dockerfile.fedora_thirtyseven.rpm.test +++ b/builder/dockerfile.fedora_thirtyseven.rpm.test @@ -31,8 +31,7 @@ WORKDIR $HOME RUN dnf install -y openssl xterm gettext wget RUN dnf install -y nss_wrapper -RUN dnf install -y xorg-x11-xauth xorg-x11-xkb-utils \ - xkeyboard-config xorg-x11-server-utils +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* From ba399efc3fac327e7fed9942ca79f3ef5025d7fd Mon Sep 17 00:00:00 2001 From: mattmcclaskey Date: Mon, 13 Mar 2023 15:57:24 -0400 Subject: [PATCH 31/31] Alpine and Oracle 9 build fixes --- builder/dockerfile.alpine_317.build | 6 ++++++ builder/dockerfile.oracle_9.build | 11 +++++------ builder/scripts/common.sh | 3 +++ 3 files changed, 14 insertions(+), 6 deletions(-) diff --git a/builder/dockerfile.alpine_317.build b/builder/dockerfile.alpine_317.build index 6e44049..2fdecd3 100644 --- a/builder/dockerfile.alpine_317.build +++ b/builder/dockerfile.alpine_317.build @@ -68,6 +68,12 @@ RUN \ 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/ diff --git a/builder/dockerfile.oracle_9.build b/builder/dockerfile.oracle_9.build index 9c3c544..2b4a102 100644 --- a/builder/dockerfile.oracle_9.build +++ b/builder/dockerfile.oracle_9.build @@ -49,12 +49,11 @@ RUN dnf install -y \ libXtst-devel \ libXcursor-devel -# 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-webp +RUN $SCRIPTS_DIR/build-libjpeg-turbo RUN useradd -m docker && echo "docker:docker" | chpasswd diff --git a/builder/scripts/common.sh b/builder/scripts/common.sh index 4ed44b5..4440b66 100644 --- a/builder/scripts/common.sh +++ b/builder/scripts/common.sh @@ -9,6 +9,8 @@ detect_distro() { DISTRO=fedora elif [ -f /usr/bin/zypper ]; then DISTRO=opensuse + elif [ -f /etc/alpine-release ]; then + DISTRO=alpine else DISTRO=debian fi @@ -22,6 +24,7 @@ install_packages() { oracle) install_cmd="dnf install -y" ;; fedora) install_cmd="dnf install -y" ;; opensuse) install_cmd="zypper install -y" ;; + alpine) install_cmd="apk add" ;; *) install_cmd="apt-get update && apt-get install -y" esac