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