changeset 306:61cd6c2c5e0d

merge
author Alain Mazy <am@orthanc.team>
date Thu, 27 Nov 2025 10:07:55 +0100
parents c526ed276ebc (diff) a3af4f9f6b99 (current diff)
children fc75b27b018e
files NEWS
diffstat 9 files changed, 257 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/.hgignore	Wed Nov 26 19:58:16 2025 +0100
+++ b/.hgignore	Thu Nov 27 10:07:55 2025 +0100
@@ -8,3 +8,5 @@
 i/
 *.orig
 CodeAnalysis/.venv/
+Resources/Builders/build/
+docker-build/
\ No newline at end of file
--- a/NEWS	Wed Nov 26 19:58:16 2025 +0100
+++ b/NEWS	Thu Nov 27 10:07:55 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)
--- a/Resources/Builders/BuildAllWindows.sh	Wed Nov 26 19:58:16 2025 +0100
+++ b/Resources/Builders/BuildAllWindows.sh	Thu Nov 27 10:07:55 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
 
--- a/Resources/Builders/MinGW32-Python3.13/docker-internal.sh	Wed Nov 26 19:58:16 2025 +0100
+++ b/Resources/Builders/MinGW32-Python3.13/docker-internal.sh	Thu Nov 27 10:07:55 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 \
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Resources/Builders/MinGW32-Python3.14/docker-compile.sh	Thu Nov 27 10:07:55 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 <http://www.gnu.org/licenses/>.
+##
+
+
+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/
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Resources/Builders/MinGW32-Python3.14/docker-internal.sh	Thu Nov 27 10:07:55 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 <http://www.gnu.org/licenses/>.
+##
+
+
+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
--- a/Resources/Builders/MinGW64-Python3.13/docker-internal.sh	Wed Nov 26 19:58:16 2025 +0100
+++ b/Resources/Builders/MinGW64-Python3.13/docker-internal.sh	Thu Nov 27 10:07:55 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 \
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Resources/Builders/MinGW64-Python3.14/docker-compile.sh	Thu Nov 27 10:07:55 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 <http://www.gnu.org/licenses/>.
+##
+
+
+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/
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Resources/Builders/MinGW64-Python3.14/docker-internal.sh	Thu Nov 27 10:07:55 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 <http://www.gnu.org/licenses/>.
+##
+
+
+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