Merge branch 'feature/KASM-3870-statically-link-libjpeg' into 'master'
Resolve KASM-3870 "Feature/ statically link libjpeg" Closes KASM-3870 See merge request kasm-technologies/internal/KasmVNC!87release/1.1.0
						commit
						cc606d0c00
					
				@ -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"]
 | 
					 | 
				
			||||||
@ -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"]
 | 
					 | 
				
			||||||
@ -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
 | 
					 | 
				
			||||||
@ -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" ]
 | 
					 | 
				
			||||||
@ -0,0 +1,49 @@
 | 
				
			|||||||
 | 
					#!/bin/bash
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					usage() {
 | 
				
			||||||
 | 
					  echo >&2 "Usage: $(basename "$0") [-s|--shell] [-p|--perf-test] [-h|--help] <distro> <distro_version>"
 | 
				
			||||||
 | 
					  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
 | 
				
			||||||
@ -0,0 +1,32 @@
 | 
				
			|||||||
 | 
					#!/usr/bin/env bash
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					set -euo pipefail
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					build_and_install() {
 | 
				
			||||||
 | 
					  export MAKEFLAGS=-j`nproc`
 | 
				
			||||||
 | 
					  export CFLAGS="-fpic"
 | 
				
			||||||
 | 
					  cmake -DCMAKE_INSTALL_PREFIX=/usr/local -G"Unix Makefiles"
 | 
				
			||||||
 | 
					  make
 | 
				
			||||||
 | 
					  make install
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					install_build_dependencies() {
 | 
				
			||||||
 | 
					  install_packages cmake gcc
 | 
				
			||||||
 | 
					  ensure_libjpeg_is_fast
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					ensure_libjpeg_is_fast() {
 | 
				
			||||||
 | 
					  install_packages nasm
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					prepare_libjpeg_source() {
 | 
				
			||||||
 | 
					  git clone --depth=1 https://github.com/libjpeg-turbo/libjpeg-turbo.git
 | 
				
			||||||
 | 
					  cd libjpeg-turbo
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					source_dir=$(dirname "$0")
 | 
				
			||||||
 | 
					. "$source_dir/common.sh"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					install_build_dependencies
 | 
				
			||||||
 | 
					prepare_libjpeg_source
 | 
				
			||||||
 | 
					build_and_install
 | 
				
			||||||
@ -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
 | 
				
			||||||
@ -0,0 +1,34 @@
 | 
				
			|||||||
 | 
					#!/bin/bash
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					detect_distro() {
 | 
				
			||||||
 | 
					  if [ -f /etc/centos-release ]; then
 | 
				
			||||||
 | 
					    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
 | 
				
			||||||
 | 
					  elif [ -f /etc/alpine-release ]; then
 | 
				
			||||||
 | 
					    DISTRO=alpine
 | 
				
			||||||
 | 
					  else
 | 
				
			||||||
 | 
					    DISTRO=debian
 | 
				
			||||||
 | 
					  fi
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					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" ;;
 | 
				
			||||||
 | 
					    alpine) install_cmd="apk add" ;;
 | 
				
			||||||
 | 
					    *) install_cmd="apt-get update && apt-get install -y"
 | 
				
			||||||
 | 
					  esac
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  eval "$install_cmd $*"
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					detect_distro
 | 
				
			||||||
					Loading…
					
					
				
		Reference in New Issue