# HG changeset patch # User Sebastien Jodogne # Date 1715893749 -7200 # Node ID 519e285ce6270a4763f9e1d1e71f9efc05ef47c5 # Parent 5adf2e1186ab2c0a6676e0b072d102ac2598136e hotfix to add Windows builders for Python 3.12 diff -r 5adf2e1186ab -r 519e285ce627 Resources/Builders/MinGW32-Python3.12/docker-compile.sh --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Resources/Builders/MinGW32-Python3.12/docker-compile.sh Thu May 16 23:09:09 2024 +0200 @@ -0,0 +1,31 @@ +#!/bin/bash + +set -ex + +if [ "$1" != "Debug" -a "$1" != "Release" ]; then + echo "Please provide build type: Debug or Release" + exit -1 +fi + +if [ -t 1 ]; then + # TTY is available => use interactive mode + DOCKER_FLAGS='-i' +fi + +ROOT_DIR=`dirname $(readlink -f $0)`/../../.. + +mkdir -p ${ROOT_DIR}/docker-build/ + +( cd ${ROOT_DIR}/Resources/Builders/ && \ + docker build \ + -f ./Dockerfile-MinGW-BuildEnvironment \ + -t mingw-python-build . ) + +docker run -t ${DOCKER_FLAGS} --rm \ + --user $(id -u):$(id -g) \ + -v ${ROOT_DIR}:/source:ro \ + -v ${ROOT_DIR}/docker-build:/target:rw \ + mingw-python-build \ + bash /source/Resources/Builders/MinGW32-Python3.12/docker-internal.sh $1 + +ls -lR ${ROOT_DIR}/docker-build/ diff -r 5adf2e1186ab -r 519e285ce627 Resources/Builders/MinGW32-Python3.12/docker-internal.sh --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Resources/Builders/MinGW32-Python3.12/docker-internal.sh Thu May 16 23:09:09 2024 +0200 @@ -0,0 +1,38 @@ +#!/bin/bash +set -ex + +mkdir /tmp/source-writeable + +cp -r /source/CMakeLists.txt /tmp/source-writeable/ +cp -r /source/Sources /tmp/source-writeable/ +cp -r /source/Resources /tmp/source-writeable/ + +mkdir /tmp/build +cd /tmp/build + +wget https://orthanc.uclouvain.be/downloads/third-party-downloads/Python/python-3.12.3-win32.zip +unzip python-3.12.3-win32.zip + +if [ "$1" == "Release" ]; then + LIBRARY_NAME=python312.lib +else + LIBRARY_NAME=python312_d.lib +fi + +cmake /tmp/source-writeable/ \ + -DCMAKE_BUILD_TYPE=$1 \ + -DSTATIC_BUILD=ON \ + -DUSE_LEGACY_BOOST=ON \ + -DPYTHON_VERSION=3.12 \ + -DPYTHON_LIBRARY_NAME=${LIBRARY_NAME} \ + -DPYTHON_WINDOWS_ROOT=/tmp/build/python-3.12.3-win32/ \ + -DCMAKE_TOOLCHAIN_FILE=/source/Resources/Orthanc/Toolchains/MinGW-W64-Toolchain32.cmake \ + -DCMAKE_INSTALL_PREFIX=/target + +make -j`nproc` + +if [ "$1" == "Release" ]; then + i686-w64-mingw32-strip ./libOrthancPython.dll +fi + +make install diff -r 5adf2e1186ab -r 519e285ce627 Resources/Builders/MinGW64-Python3.12/docker-compile.sh --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Resources/Builders/MinGW64-Python3.12/docker-compile.sh Thu May 16 23:09:09 2024 +0200 @@ -0,0 +1,31 @@ +#!/bin/bash + +set -ex + +if [ "$1" != "Debug" -a "$1" != "Release" ]; then + echo "Please provide build type: Debug or Release" + exit -1 +fi + +if [ -t 1 ]; then + # TTY is available => use interactive mode + DOCKER_FLAGS='-i' +fi + +ROOT_DIR=`dirname $(readlink -f $0)`/../../.. + +mkdir -p ${ROOT_DIR}/docker-build/ + +( cd ${ROOT_DIR}/Resources/Builders/ && \ + docker build \ + -f ./Dockerfile-MinGW-BuildEnvironment \ + -t mingw-python-build . ) + +docker run -t ${DOCKER_FLAGS} --rm \ + --user $(id -u):$(id -g) \ + -v ${ROOT_DIR}:/source:ro \ + -v ${ROOT_DIR}/docker-build:/target:rw \ + mingw-python-build \ + bash /source/Resources/Builders/MinGW64-Python3.12/docker-internal.sh $1 + +ls -lR ${ROOT_DIR}/docker-build/ diff -r 5adf2e1186ab -r 519e285ce627 Resources/Builders/MinGW64-Python3.12/docker-internal.sh --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Resources/Builders/MinGW64-Python3.12/docker-internal.sh Thu May 16 23:09:09 2024 +0200 @@ -0,0 +1,38 @@ +#!/bin/bash +set -ex + +mkdir /tmp/source-writeable + +cp -r /source/CMakeLists.txt /tmp/source-writeable/ +cp -r /source/Sources /tmp/source-writeable/ +cp -r /source/Resources /tmp/source-writeable/ + +mkdir /tmp/build +cd /tmp/build + +wget https://orthanc.uclouvain.be/downloads/third-party-downloads/Python/python-3.12.3-win64.zip +unzip python-3.12.3-win64.zip + +if [ "$1" == "Release" ]; then + LIBRARY_NAME=python312.lib +else + LIBRARY_NAME=python312_d.lib +fi + +cmake /tmp/source-writeable/ \ + -DCMAKE_BUILD_TYPE=$1 \ + -DSTATIC_BUILD=ON \ + -DUSE_LEGACY_BOOST=ON \ + -DPYTHON_VERSION=3.12 \ + -DPYTHON_LIBRARY_NAME=${LIBRARY_NAME} \ + -DPYTHON_WINDOWS_ROOT=/tmp/build/python-3.12.3-win64 \ + -DCMAKE_TOOLCHAIN_FILE=/source/Resources/Orthanc/Toolchains/MinGW-W64-Toolchain64.cmake \ + -DCMAKE_INSTALL_PREFIX=/target + +make -j`nproc` + +if [ "$1" == "Release" ]; then + x86_64-w64-mingw32-strip ./libOrthancPython.dll +fi + +make install