# HG changeset patch # User Alain Mazy # Date 1764234253 -3600 # Node ID fbb298dd7cdaf308a7bc1ed654631685a51040d0 # Parent 7ffc9e968b3eab45174c2131fed53be639b098c9 Added Windows builder for Python 3.14 + fix builders for Python 3.13 diff -r 7ffc9e968b3e -r fbb298dd7cda .hgignore --- a/.hgignore Wed Nov 26 15:54:16 2025 +0100 +++ b/.hgignore Thu Nov 27 10:04:13 2025 +0100 @@ -8,3 +8,5 @@ i/ *.orig CodeAnalysis/.venv/ +Resources/Builders/build/ +docker-build/ \ No newline at end of file diff -r 7ffc9e968b3e -r fbb298dd7cda NEWS --- a/NEWS Wed Nov 26 15:54:16 2025 +0100 +++ b/NEWS Thu Nov 27 10:04:13 2025 +0100 @@ -9,6 +9,7 @@ - RegisterMoveCallback3 - RegisterWorklistCallback2 - RegisterStorageCommitmentScpCallback2 +* Added Windows builder for Python 3.14 + fix builders for Python 3.13 Version 6.0 (2025-08-12) diff -r 7ffc9e968b3e -r fbb298dd7cda Resources/Builders/BuildAllWindows.sh --- a/Resources/Builders/BuildAllWindows.sh Wed Nov 26 15:54:16 2025 +0100 +++ b/Resources/Builders/BuildAllWindows.sh Thu Nov 27 10:04:13 2025 +0100 @@ -44,6 +44,12 @@ set -x +bash ${DIR}/MinGW32-Python3.14/docker-compile.sh Release +cp ${DIR}/../../docker-build/lib/libOrthancPython.dll ${TARGET}/OrthancPython-Win32-Python3.14-${VERSION}.dll + +bash ${DIR}/MinGW64-Python3.14/docker-compile.sh Release +cp ${DIR}/../../docker-build/lib/libOrthancPython.dll ${TARGET}/OrthancPython-Win64-Python3.14-${VERSION}.dll + ## Windows 32 diff -r 7ffc9e968b3e -r fbb298dd7cda Resources/Builders/MinGW32-Python3.13/docker-internal.sh --- a/Resources/Builders/MinGW32-Python3.13/docker-internal.sh Wed Nov 26 15:54:16 2025 +0100 +++ b/Resources/Builders/MinGW32-Python3.13/docker-internal.sh Thu Nov 27 10:04:13 2025 +0100 @@ -50,7 +50,7 @@ -DCMAKE_BUILD_TYPE=$1 \ -DSTATIC_BUILD=ON \ -DUSE_LEGACY_BOOST=ON \ - -DPYTHON_VERSION=3.12 \ + -DPYTHON_VERSION=3.13 \ -DPYTHON_LIBRARY_NAME=${LIBRARY_NAME} \ -DPYTHON_WINDOWS_ROOT=/tmp/build/python-3.13.2-win32/ \ -DCMAKE_TOOLCHAIN_FILE=/source/Resources/Orthanc/Toolchains/MinGW-W64-Toolchain32.cmake \ diff -r 7ffc9e968b3e -r fbb298dd7cda Resources/Builders/MinGW32-Python3.14/docker-compile.sh --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Resources/Builders/MinGW32-Python3.14/docker-compile.sh Thu Nov 27 10:04:13 2025 +0100 @@ -0,0 +1,56 @@ +#!/bin/bash + +# SPDX-FileCopyrightText: 2020-2023 Osimis S.A., 2024-2025 Orthanc Team SRL, 2021-2025 Sebastien Jodogne, ICTEAM UCLouvain +# SPDX-License-Identifier: AGPL-3.0-or-later + +## +## Python plugin for Orthanc +## Copyright (C) 2020-2023 Osimis S.A., Belgium +## Copyright (C) 2024-2025 Orthanc Team SRL, Belgium +## Copyright (C) 2021-2025 Sebastien Jodogne, ICTEAM UCLouvain, Belgium +## +## This program is free software: you can redistribute it and/or +## modify it under the terms of the GNU Affero General Public License +## as published by the Free Software Foundation, either version 3 of +## the License, or (at your option) any later version. +## +## This program is distributed in the hope that it will be useful, but +## WITHOUT ANY WARRANTY; without even the implied warranty of +## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +## Affero General Public License for more details. +## +## You should have received a copy of the GNU Affero General Public License +## along with this program. If not, see . +## + + +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 \ + --network=host \ + --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.14/docker-internal.sh $1 + +ls -lR ${ROOT_DIR}/docker-build/ diff -r 7ffc9e968b3e -r fbb298dd7cda Resources/Builders/MinGW32-Python3.14/docker-internal.sh --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Resources/Builders/MinGW32-Python3.14/docker-internal.sh Thu Nov 27 10:04:13 2025 +0100 @@ -0,0 +1,67 @@ +#!/bin/bash + +# SPDX-FileCopyrightText: 2020-2023 Osimis S.A., 2024-2025 Orthanc Team SRL, 2021-2025 Sebastien Jodogne, ICTEAM UCLouvain +# SPDX-License-Identifier: AGPL-3.0-or-later + +## +## Python plugin for Orthanc +## Copyright (C) 2020-2023 Osimis S.A., Belgium +## Copyright (C) 2024-2025 Orthanc Team SRL, Belgium +## Copyright (C) 2021-2025 Sebastien Jodogne, ICTEAM UCLouvain, Belgium +## +## This program is free software: you can redistribute it and/or +## modify it under the terms of the GNU Affero General Public License +## as published by the Free Software Foundation, either version 3 of +## the License, or (at your option) any later version. +## +## This program is distributed in the hope that it will be useful, but +## WITHOUT ANY WARRANTY; without even the implied warranty of +## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +## Affero General Public License for more details. +## +## You should have received a copy of the GNU Affero General Public License +## along with this program. If not, see . +## + + +set -ex + +mkdir /tmp/source-writeable + +cp /source/CMakeLists.txt /tmp/source-writeable/ + +cp -r /source/CodeAnalysis /tmp/source-writeable/ +cp -r /source/Resources /tmp/source-writeable/ +cp -r /source/Sources /tmp/source-writeable/ + +mkdir /tmp/build +cd /tmp/build + +wget https://orthanc.uclouvain.be/downloads/third-party-downloads/Python/python-3.14.0-win32.zip +unzip python-3.14.0-win32.zip + +if [ "$1" == "Release" ]; then + LIBRARY_NAME=python314.lib +else + LIBRARY_NAME=python314_d.lib +fi + +cmake /tmp/source-writeable/ \ + -DCMAKE_BUILD_TYPE=$1 \ + -DSTATIC_BUILD=ON \ + -DUSE_LEGACY_BOOST=ON \ + -DPYTHON_VERSION=3.14 \ + -DPYTHON_LIBRARY_NAME=${LIBRARY_NAME} \ + -DPYTHON_WINDOWS_ROOT=/tmp/build/python-3.14.0-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 + +cp ./orthanc.pyi /target diff -r 7ffc9e968b3e -r fbb298dd7cda Resources/Builders/MinGW64-Python3.13/docker-internal.sh --- a/Resources/Builders/MinGW64-Python3.13/docker-internal.sh Wed Nov 26 15:54:16 2025 +0100 +++ b/Resources/Builders/MinGW64-Python3.13/docker-internal.sh Thu Nov 27 10:04:13 2025 +0100 @@ -50,7 +50,7 @@ -DCMAKE_BUILD_TYPE=$1 \ -DSTATIC_BUILD=ON \ -DUSE_LEGACY_BOOST=ON \ - -DPYTHON_VERSION=3.12 \ + -DPYTHON_VERSION=3.13 \ -DPYTHON_LIBRARY_NAME=${LIBRARY_NAME} \ -DPYTHON_WINDOWS_ROOT=/tmp/build/python-3.13.2-win64 \ -DCMAKE_TOOLCHAIN_FILE=/source/Resources/Orthanc/Toolchains/MinGW-W64-Toolchain64.cmake \ diff -r 7ffc9e968b3e -r fbb298dd7cda Resources/Builders/MinGW64-Python3.14/docker-compile.sh --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Resources/Builders/MinGW64-Python3.14/docker-compile.sh Thu Nov 27 10:04:13 2025 +0100 @@ -0,0 +1,56 @@ +#!/bin/bash + +# SPDX-FileCopyrightText: 2020-2023 Osimis S.A., 2024-2025 Orthanc Team SRL, 2021-2025 Sebastien Jodogne, ICTEAM UCLouvain +# SPDX-License-Identifier: AGPL-3.0-or-later + +## +## Python plugin for Orthanc +## Copyright (C) 2020-2023 Osimis S.A., Belgium +## Copyright (C) 2024-2025 Orthanc Team SRL, Belgium +## Copyright (C) 2021-2025 Sebastien Jodogne, ICTEAM UCLouvain, Belgium +## +## This program is free software: you can redistribute it and/or +## modify it under the terms of the GNU Affero General Public License +## as published by the Free Software Foundation, either version 3 of +## the License, or (at your option) any later version. +## +## This program is distributed in the hope that it will be useful, but +## WITHOUT ANY WARRANTY; without even the implied warranty of +## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +## Affero General Public License for more details. +## +## You should have received a copy of the GNU Affero General Public License +## along with this program. If not, see . +## + + +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 \ + --network=host \ + --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.14/docker-internal.sh $1 + +ls -lR ${ROOT_DIR}/docker-build/ diff -r 7ffc9e968b3e -r fbb298dd7cda Resources/Builders/MinGW64-Python3.14/docker-internal.sh --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Resources/Builders/MinGW64-Python3.14/docker-internal.sh Thu Nov 27 10:04:13 2025 +0100 @@ -0,0 +1,67 @@ +#!/bin/bash + +# SPDX-FileCopyrightText: 2020-2023 Osimis S.A., 2024-2025 Orthanc Team SRL, 2021-2025 Sebastien Jodogne, ICTEAM UCLouvain +# SPDX-License-Identifier: AGPL-3.0-or-later + +## +## Python plugin for Orthanc +## Copyright (C) 2020-2023 Osimis S.A., Belgium +## Copyright (C) 2024-2025 Orthanc Team SRL, Belgium +## Copyright (C) 2021-2025 Sebastien Jodogne, ICTEAM UCLouvain, Belgium +## +## This program is free software: you can redistribute it and/or +## modify it under the terms of the GNU Affero General Public License +## as published by the Free Software Foundation, either version 3 of +## the License, or (at your option) any later version. +## +## This program is distributed in the hope that it will be useful, but +## WITHOUT ANY WARRANTY; without even the implied warranty of +## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +## Affero General Public License for more details. +## +## You should have received a copy of the GNU Affero General Public License +## along with this program. If not, see . +## + + +set -ex + +mkdir /tmp/source-writeable + +cp /source/CMakeLists.txt /tmp/source-writeable/ + +cp -r /source/CodeAnalysis /tmp/source-writeable/ +cp -r /source/Resources /tmp/source-writeable/ +cp -r /source/Sources /tmp/source-writeable/ + +mkdir /tmp/build +cd /tmp/build + +wget https://orthanc.uclouvain.be/downloads/third-party-downloads/Python/python-3.14.0-win64.zip +unzip python-3.14.0-win64.zip + +if [ "$1" == "Release" ]; then + LIBRARY_NAME=python314.lib +else + LIBRARY_NAME=python314_d.lib +fi + +cmake /tmp/source-writeable/ \ + -DCMAKE_BUILD_TYPE=$1 \ + -DSTATIC_BUILD=ON \ + -DUSE_LEGACY_BOOST=ON \ + -DPYTHON_VERSION=3.14 \ + -DPYTHON_LIBRARY_NAME=${LIBRARY_NAME} \ + -DPYTHON_WINDOWS_ROOT=/tmp/build/python-3.14.0-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 + +cp ./orthanc.pyi /target