From 50c95039c43cd68c623d5d235790acf39b71abcb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bojan=20=C4=8Cekrli=C4=87?= Date: Sat, 1 Mar 2025 09:14:07 +0100 Subject: [PATCH] Fix for installation of msal library This will create a python venv and point sasl-xoauth2-tool to use this venv. This way, when the user executes the command, it will "automagically" work instead of failing. --- Dockerfile | 2 - build-scripts/sasl-build.sh | 71 +++++++++++++++++------------ build-scripts/sasl-xoauth2-03.patch | 7 +++ 3 files changed, 49 insertions(+), 31 deletions(-) create mode 100644 build-scripts/sasl-xoauth2-03.patch diff --git a/Dockerfile b/Dockerfile index b1f52f5..f260c10 100644 --- a/Dockerfile +++ b/Dockerfile @@ -34,8 +34,6 @@ ARG TARGETPLATFORM ARG SASL_XOAUTH2_REPO_URL=https://github.com/tarickb/sasl-xoauth2.git ARG SASL_XOAUTH2_GIT_REF=release-0.25 -# --mount=type=cache,target=/var/cache/apk,sharing=locked,id=var-cache-apk-$TARGETPLATFORM \ -# --mount=type=cache,target=/etc/apk/cache,sharing=locked,id=etc-apk-cache-$TARGETPLATFORM \ RUN --mount=type=cache,target=/var/cache/apt,sharing=locked,id=var-cache-apt-$TARGETPLATFORM \ --mount=type=cache,target=/var/lib/apt,sharing=locked,id=var-lib-apt-$TARGETPLATFORM \ --mount=type=tmpfs,target=/etc/apk/cache \ diff --git a/build-scripts/sasl-build.sh b/build-scripts/sasl-build.sh index 4b36e18..cc3d73d 100644 --- a/build-scripts/sasl-build.sh +++ b/build-scripts/sasl-build.sh @@ -1,40 +1,53 @@ -#!/bin/sh +#!/usr/bin/env bash set -e build_sasl2() { - git clone --depth 1 --branch ${SASL_XOAUTH2_GIT_REF} ${SASL_XOAUTH2_REPO_URL} /sasl-xoauth2 - cd /sasl-xoauth2 - mkdir build - cd build - # Documentation build (now) requires pandoc, which is not available on multiple - # architectures. Since we're are building an image that we want it to be as slim as possible, - # we're removing the build of documentation instead of complicating things with pandoc. - patch -p1 -d .. < /build-scripts/sasl-xoauth2-01.patch - if [ -f /etc/alpine-release ]; then - patch -p1 -d .. < /build-scripts/sasl-xoauth2-02.patch - cmake -DCMAKE_INSTALL_PREFIX=/ .. - else - cmake -DCMAKE_INSTALL_PREFIX=/usr .. - fi - make - make install - install ../scripts/postfix-sasl-xoauth2-update-ca-certs /etc/ca-certificates/update.d - update-ca-certificates + git clone --depth 1 --branch ${SASL_XOAUTH2_GIT_REF} ${SASL_XOAUTH2_REPO_URL} /sasl-xoauth2 + cd /sasl-xoauth2 + mkdir build + cd build + # Documentation build (now) requires pandoc, which is not available on multiple + # architectures. Since we're are building an image that we want it to be as slim as possible, + # we're removing the build of documentation instead of complicating things with pandoc. + patch -p1 -d .. < /build-scripts/sasl-xoauth2-01.patch + + # Ensure that the sasl-xoauth2-tool uses python from the virtual environment into which we + # installed the msal library. + patch -p1 -d .. < /build-scripts/sasl-xoauth2-03.patch + + if [ -f /etc/alpine-release ]; then + patch -p1 -d .. < /build-scripts/sasl-xoauth2-02.patch + cmake -DCMAKE_INSTALL_PREFIX=/ .. + else + cmake -DCMAKE_INSTALL_PREFIX=/usr .. + fi + make + make install + install ../scripts/postfix-sasl-xoauth2-update-ca-certs /etc/ca-certificates/update.d + update-ca-certificates +} + +setup_python_venv() { + python3 -m venv /sasl + . /sasl/bin/activate + pip3 install msal } [ -f /etc/lsb-release ] && . /etc/lsb-release [ -f /etc/os-release ] && . /etc/os-release if [ -f /etc/alpine-release ]; then - apk add --upgrade --virtual .build-deps git cmake clang make gcc g++ libc-dev pkgconfig curl-dev jsoncpp-dev cyrus-sasl-dev patch - build_sasl2 - apk del .build-deps; + apk add --upgrade --virtual .build-deps git cmake clang make gcc g++ libc-dev pkgconfig curl-dev jsoncpp-dev cyrus-sasl-dev patch + setup_python_venv + build_sasl2 + apk del .build-deps; else - apt-get update -y -qq - LIBS="git build-essential cmake pkg-config libcurl4-openssl-dev libssl-dev libjsoncpp-dev libsasl2-dev" - apt-get install -y --no-install-recommends ${LIBS} - build_sasl2 - apt-get remove --purge -y ${LIBS} - apt-get autoremove --yes - apt-get clean autoclean + apt-get update -y -qq + LIBS="git build-essential cmake pkg-config libcurl4-openssl-dev libssl-dev libjsoncpp-dev libsasl2-dev python3-venv" + apt-get install -y --no-install-recommends ${LIBS} + setup_python_venv + build_sasl2 + apt-get remove --purge -y ${LIBS} + apt-get autoremove --yes + apt-get clean autoclean fi diff --git a/build-scripts/sasl-xoauth2-03.patch b/build-scripts/sasl-xoauth2-03.patch new file mode 100644 index 0000000..b0cae7c --- /dev/null +++ b/build-scripts/sasl-xoauth2-03.patch @@ -0,0 +1,7 @@ +--- sasl-xoauth2-orig/scripts/sasl-xoauth2-tool.in 2025-03-01 08:38:07 ++++ sasl-xoauth2/scripts/sasl-xoauth2-tool.in 2025-03-01 08:38:12 +@@ -1,4 +1,4 @@ +-#!/usr/bin/python3 ++#!/sasl/bin/python3 + # PYTHON_ARGCOMPLETE_OK + # -*- coding: utf-8 -*-