[ https://issues.apache.org/jira/browse/GUACAMOLE-1945?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
wuxiaobai updated GUACAMOLE-1945: --------------------------------- Description: Build OpenSSL from source code to adapt to newer operating systems. - https://github.com/apache/guacamole-server/pull/510 {code:java} diff --git a/Dockerfile b/Dockerfile index 5f1e824c..6cea233e 100644 --- a/Dockerfile +++ b/Dockerfile @@ -22,9 +22,7 @@ # # The Alpine Linux image that should be used as the basis for the guacd image -# NOTE: Using 3.18 because the required openssl1.1-compat-dev package was -# removed in more recent versions. -ARG ALPINE_BASE_IMAGE=3.18 +ARG ALPINE_BASE_IMAGE=latest FROM alpine:${ALPINE_BASE_IMAGE} AS builder # Install build dependencies @@ -42,7 +40,6 @@ RUN apk add --no-cache \ libtool \ libwebp-dev \ make \ - openssl1.1-compat-dev \ pango-dev \ pulseaudio-dev \ util-linux-dev @@ -64,6 +61,7 @@ ARG PREFIX_DIR=/opt/guacamole # library (these can be overridden at build time if a specific version is # needed) # +ARG WITH_OPENSSL='OpenSSL_1(\_\d+\w*)+' ARG WITH_FREERDP='2(\.\d+)+' ARG WITH_LIBSSH2='libssh2-\d+(\.\d+)+' ARG WITH_LIBTELNET='\d+(\.\d+)+' @@ -76,6 +74,8 @@ ARG WITH_LIBWEBSOCKETS='v\d+(\.\d+)+' # options are needed) #+ARG OPENSSL_OPTS="" + ARG FREERDP_OPTS="\ -DBUILTIN_CHANNELS=OFF \ -DCHANNEL_URBDRC=OFF \ @@ -101,7 +101,6 @@ ARG FREERDP_OPTS="\ -DWITH_SERVER_INTERFACE=OFF \ -DWITH_SHADOW_MAC=OFF \ -DWITH_SHADOW_X11=OFF \ - -DWITH_SSE2=ON \ -DWITH_WAYLAND=OFF \ -DWITH_X11=OFF \ -DWITH_X264=OFF \ diff --git a/src/guacd-docker/bin/build-all.sh b/src/guacd-docker/bin/build-all.sh index b8c33b8f..a559babb 100755 --- a/src/guacd-docker/bin/build-all.sh +++ b/src/guacd-docker/bin/build-all.sh @@ -28,7 +28,7 @@ # Pre-populate build control variables such that the custom build prefix is # used for C headers, locating libraries, etc. export CFLAGS="-I${PREFIX_DIR}/include" -export LDFLAGS="-L${PREFIX_DIR}/lib" +export LDFLAGS="-Wl,-rpath,${PREFIX_DIR}/lib -L${PREFIX_DIR}/lib" export PKG_CONFIG_PATH="${PREFIX_DIR}/lib/pkgconfig" # Ensure thread stack size will be 8 MB (glibc's default on Linux) rather than @@ -85,6 +85,8 @@ install_from_git() { # used by the library being built if [ -e CMakeLists.txt ]; then cmake -DCMAKE_INSTALL_PREFIX:PATH="$PREFIX_DIR" "$@" . + elif [ -e config ]; then + ./config --prefix="$PREFIX_DIR" "$@" else [ -e configure ] || autoreconf -fi ./configure --prefix="$PREFIX_DIR" "$@" @@ -103,11 +105,11 @@ export BUILD_ARCHITECTURE="$(arch)" # Determine architecture building on echo "Build architecture: $BUILD_ARCHITECTURE" case $BUILD_ARCHITECTURE in - armv6l|armv7l|aarch64) - export FREERDP_OPTS_OVERRIDES="-DWITH_SSE2=OFF" # Disable SSE2 on ARM + x86_64) + export FREERDP_OPTS_OVERRIDES="-DWITH_SSE2=ON" # Enable SSE2 on x86_64 ;; *) - export FREERDP_OPTS_OVERRIDES="" + export FREERDP_OPTS_OVERRIDES="-DWITH_SSE2=OFF" ;; esac@@ -115,6 +117,7 @@ esac # Build and install core protocol library dependencies #+install_from_git "https://github.com/openssl/openssl" "$WITH_OPENSSL" $OPENSSL_OPTS install_from_git "https://github.com/FreeRDP/FreeRDP" "$WITH_FREERDP" $FREERDP_OPTS $FREERDP_OPTS_OVERRIDES install_from_git "https://github.com/libssh2/libssh2" "$WITH_LIBSSH2" $LIBSSH2_OPTS install_from_git "https://github.com/seanmiddleditch/libtelnet" "$WITH_LIBTELNET" $LIBTELNET_OPTS{code} was: - https://github.com/apache/guacamole-server/pull/510 Build OpenSSL from source code to adapt to newer operating systems. {code:java} diff --git a/Dockerfile b/Dockerfile index 5f1e824c..6cea233e 100644 --- a/Dockerfile +++ b/Dockerfile @@ -22,9 +22,7 @@ # # The Alpine Linux image that should be used as the basis for the guacd image -# NOTE: Using 3.18 because the required openssl1.1-compat-dev package was -# removed in more recent versions. -ARG ALPINE_BASE_IMAGE=3.18 +ARG ALPINE_BASE_IMAGE=latest FROM alpine:${ALPINE_BASE_IMAGE} AS builder # Install build dependencies @@ -42,7 +40,6 @@ RUN apk add --no-cache \ libtool \ libwebp-dev \ make \ - openssl1.1-compat-dev \ pango-dev \ pulseaudio-dev \ util-linux-dev @@ -64,6 +61,7 @@ ARG PREFIX_DIR=/opt/guacamole # library (these can be overridden at build time if a specific version is # needed) # +ARG WITH_OPENSSL='OpenSSL_1(\_\d+\w*)+' ARG WITH_FREERDP='2(\.\d+)+' ARG WITH_LIBSSH2='libssh2-\d+(\.\d+)+' ARG WITH_LIBTELNET='\d+(\.\d+)+' @@ -76,6 +74,8 @@ ARG WITH_LIBWEBSOCKETS='v\d+(\.\d+)+' # options are needed) #+ARG OPENSSL_OPTS="" + ARG FREERDP_OPTS="\ -DBUILTIN_CHANNELS=OFF \ -DCHANNEL_URBDRC=OFF \ @@ -101,7 +101,6 @@ ARG FREERDP_OPTS="\ -DWITH_SERVER_INTERFACE=OFF \ -DWITH_SHADOW_MAC=OFF \ -DWITH_SHADOW_X11=OFF \ - -DWITH_SSE2=ON \ -DWITH_WAYLAND=OFF \ -DWITH_X11=OFF \ -DWITH_X264=OFF \ diff --git a/src/guacd-docker/bin/build-all.sh b/src/guacd-docker/bin/build-all.sh index b8c33b8f..a559babb 100755 --- a/src/guacd-docker/bin/build-all.sh +++ b/src/guacd-docker/bin/build-all.sh @@ -28,7 +28,7 @@ # Pre-populate build control variables such that the custom build prefix is # used for C headers, locating libraries, etc. export CFLAGS="-I${PREFIX_DIR}/include" -export LDFLAGS="-L${PREFIX_DIR}/lib" +export LDFLAGS="-Wl,-rpath,${PREFIX_DIR}/lib -L${PREFIX_DIR}/lib" export PKG_CONFIG_PATH="${PREFIX_DIR}/lib/pkgconfig" # Ensure thread stack size will be 8 MB (glibc's default on Linux) rather than @@ -85,6 +85,8 @@ install_from_git() { # used by the library being built if [ -e CMakeLists.txt ]; then cmake -DCMAKE_INSTALL_PREFIX:PATH="$PREFIX_DIR" "$@" . + elif [ -e config ]; then + ./config --prefix="$PREFIX_DIR" "$@" else [ -e configure ] || autoreconf -fi ./configure --prefix="$PREFIX_DIR" "$@" @@ -103,11 +105,11 @@ export BUILD_ARCHITECTURE="$(arch)" # Determine architecture building on echo "Build architecture: $BUILD_ARCHITECTURE" case $BUILD_ARCHITECTURE in - armv6l|armv7l|aarch64) - export FREERDP_OPTS_OVERRIDES="-DWITH_SSE2=OFF" # Disable SSE2 on ARM + x86_64) + export FREERDP_OPTS_OVERRIDES="-DWITH_SSE2=ON" # Enable SSE2 on x86_64 ;; *) - export FREERDP_OPTS_OVERRIDES="" + export FREERDP_OPTS_OVERRIDES="-DWITH_SSE2=OFF" ;; esac@@ -115,6 +117,7 @@ esac # Build and install core protocol library dependencies #+install_from_git "https://github.com/openssl/openssl" "$WITH_OPENSSL" $OPENSSL_OPTS install_from_git "https://github.com/FreeRDP/FreeRDP" "$WITH_FREERDP" $FREERDP_OPTS $FREERDP_OPTS_OVERRIDES install_from_git "https://github.com/libssh2/libssh2" "$WITH_LIBSSH2" $LIBSSH2_OPTS install_from_git "https://github.com/seanmiddleditch/libtelnet" "$WITH_LIBTELNET" $LIBTELNET_OPTS{code} > Changed OpenSSL to build using source code > ------------------------------------------ > > Key: GUACAMOLE-1945 > URL: https://issues.apache.org/jira/browse/GUACAMOLE-1945 > Project: Guacamole > Issue Type: Improvement > Components: guacamole-server > Reporter: wuxiaobai > Priority: Minor > > Build OpenSSL from source code to adapt to newer operating systems. > - https://github.com/apache/guacamole-server/pull/510 > > {code:java} > diff --git a/Dockerfile b/Dockerfile > index 5f1e824c..6cea233e 100644 > --- a/Dockerfile > +++ b/Dockerfile > @@ -22,9 +22,7 @@ > # # The Alpine Linux image that should be used as the basis for the guacd > image > -# NOTE: Using 3.18 because the required openssl1.1-compat-dev package was > -# removed in more recent versions. > -ARG ALPINE_BASE_IMAGE=3.18 > +ARG ALPINE_BASE_IMAGE=latest > FROM alpine:${ALPINE_BASE_IMAGE} AS builder # Install build dependencies > @@ -42,7 +40,6 @@ RUN apk add --no-cache \ > libtool \ > libwebp-dev \ > make \ > - openssl1.1-compat-dev \ > pango-dev \ > pulseaudio-dev \ > util-linux-dev > @@ -64,6 +61,7 @@ ARG PREFIX_DIR=/opt/guacamole > # library (these can be overridden at build time if a specific version is > # needed) > # > +ARG WITH_OPENSSL='OpenSSL_1(\_\d+\w*)+' > ARG WITH_FREERDP='2(\.\d+)+' > ARG WITH_LIBSSH2='libssh2-\d+(\.\d+)+' > ARG WITH_LIBTELNET='\d+(\.\d+)+' > @@ -76,6 +74,8 @@ ARG WITH_LIBWEBSOCKETS='v\d+(\.\d+)+' > # options are needed) > #+ARG OPENSSL_OPTS="" > + > ARG FREERDP_OPTS="\ > -DBUILTIN_CHANNELS=OFF \ > -DCHANNEL_URBDRC=OFF \ > @@ -101,7 +101,6 @@ ARG FREERDP_OPTS="\ > -DWITH_SERVER_INTERFACE=OFF \ > -DWITH_SHADOW_MAC=OFF \ > -DWITH_SHADOW_X11=OFF \ > - -DWITH_SSE2=ON \ > -DWITH_WAYLAND=OFF \ > -DWITH_X11=OFF \ > -DWITH_X264=OFF \ > diff --git a/src/guacd-docker/bin/build-all.sh > b/src/guacd-docker/bin/build-all.sh > index b8c33b8f..a559babb 100755 > --- a/src/guacd-docker/bin/build-all.sh > +++ b/src/guacd-docker/bin/build-all.sh > @@ -28,7 +28,7 @@ > # Pre-populate build control variables such that the custom build prefix is > # used for C headers, locating libraries, etc. > export CFLAGS="-I${PREFIX_DIR}/include" > -export LDFLAGS="-L${PREFIX_DIR}/lib" > +export LDFLAGS="-Wl,-rpath,${PREFIX_DIR}/lib -L${PREFIX_DIR}/lib" > export PKG_CONFIG_PATH="${PREFIX_DIR}/lib/pkgconfig" # Ensure thread stack > size will be 8 MB (glibc's default on Linux) rather than > @@ -85,6 +85,8 @@ install_from_git() { > # used by the library being built > if [ -e CMakeLists.txt ]; then > cmake -DCMAKE_INSTALL_PREFIX:PATH="$PREFIX_DIR" "$@" . > + elif [ -e config ]; then > + ./config --prefix="$PREFIX_DIR" "$@" > else > [ -e configure ] || autoreconf -fi > ./configure --prefix="$PREFIX_DIR" "$@" > @@ -103,11 +105,11 @@ export BUILD_ARCHITECTURE="$(arch)" # Determine > architecture building on > echo "Build architecture: $BUILD_ARCHITECTURE" case $BUILD_ARCHITECTURE in > - armv6l|armv7l|aarch64) > - export FREERDP_OPTS_OVERRIDES="-DWITH_SSE2=OFF" # Disable SSE2 on ARM > + x86_64) > + export FREERDP_OPTS_OVERRIDES="-DWITH_SSE2=ON" # Enable SSE2 on > x86_64 > ;; > *) > - export FREERDP_OPTS_OVERRIDES="" > + export FREERDP_OPTS_OVERRIDES="-DWITH_SSE2=OFF" > ;; > esac@@ -115,6 +117,7 @@ esac > # Build and install core protocol library dependencies > #+install_from_git "https://github.com/openssl/openssl" "$WITH_OPENSSL" > $OPENSSL_OPTS > install_from_git "https://github.com/FreeRDP/FreeRDP" "$WITH_FREERDP" > $FREERDP_OPTS $FREERDP_OPTS_OVERRIDES > install_from_git "https://github.com/libssh2/libssh2" "$WITH_LIBSSH2" > $LIBSSH2_OPTS > install_from_git "https://github.com/seanmiddleditch/libtelnet" > "$WITH_LIBTELNET" $LIBTELNET_OPTS{code} > > -- This message was sent by Atlassian Jira (v8.20.10#820010)