diff --git a/Dockerfile b/Dockerfile index a75f734..a700ecb 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,9 +1,6 @@ -# Alpine 3.17 provides OpenSSL 3.x+ instead of 1.1.x+ which Mumble currently uses. -# Alpine 3.16 provides OpenSSL 1.1.1t-r2 which causes SSL.c build error. -# see: https://github.com/mumble-voip/mumble/issues/5968 -FROM alpine:3.15 as builder +FROM alpine:3.18 as builder -ARG VERSION=1.4.287 +ARG VERSION=1.5.517 LABEL \ org.label-schema.vendor="Alexey Skobkin - skobkin-ru@ya.ru" \ @@ -26,19 +23,29 @@ RUN \ tar -zxf /tmp/mumble.tar.gz --strip-components=1 -C /tmp/murmur RUN \ - apk add -q --no-cache --no-progress boost-dev build-base cmake libcap-dev protobuf-dev qt5-qtbase-dev + apk add -q --no-cache --no-progress \ + boost-dev \ + build-base \ + cmake \ + libcap-dev \ + protobuf-dev \ + qt5-qtbase-dev + +COPY patches/implicit_bool_cast.patch /tmp/murmur/ RUN \ cd /tmp/murmur && \ mkdir build && \ cd build && \ + # https://bugs.gentoo.org/863452 \ + patch ../src/SSL.cpp < ../implicit_bool_cast.patch && \ # static build is currently unavailable # see https://github.com/mumble-voip/mumble/issues/5693#issuecomment-1132069719 # -Dstatic=ON - cmake -Dclient=OFF -Ddbus=OFF -Dice=OFF -Dzeroconf=OFF .. && \ + cmake -Dclient=OFF -Ddbus=OFF -Dice=OFF -Dzeroconf=OFF -Dlto=ON .. && \ make -j $(nproc) -FROM alpine:3 +FROM alpine:3.18 RUN \ apk update -q --no-cache && \ diff --git a/patches/implicit_bool_cast.patch b/patches/implicit_bool_cast.patch new file mode 100644 index 0000000..ef20337 --- /dev/null +++ b/patches/implicit_bool_cast.patch @@ -0,0 +1,14 @@ +CRYPTO_get_locking_callback is defined as null in openssl +so this is always true, but it fails to compile on musl 1.2.3 +as casting from null to bool is invalid +--- a/src/SSL.cpp ++++ b/src/SSL.cpp +@@ -33,7 +33,7 @@ + // If we detect that no locking callback is configured, we + // have to set it up ourselves to allow multi-threaded use + // of OpenSSL. +- if (!CRYPTO_get_locking_callback()) { ++ if (true) { + SSLLocks::initialize(); + } + }