@@ -76,73 +76,95 @@ if [ ! -d "${DASHBOARD_BUILD_DIRECTORY}" ]; then
7676fi
7777cd " ${DASHBOARD_BUILD_DIRECTORY} " || exit
7878
79- # NOTE: download phase will install pixi in the DASHBOARD_BUILD_DIRECTORY (which is separate from the pixi
80- # environment used by ITKPythonPackage).
81- export PIXI_HOME=${DASHBOARD_BUILD_DIRECTORY} /.pixi
82- if [ ! -f " ${PIXI_HOME} /.pixi/bin/pixi" ]; then
83- # Install pixi
84- curl -fsSL https://pixi.sh/install.sh | sh
85- # These are the tools needed for cross platform downloads of the ITK build caches stored in https://github.com/InsightSoftwareConsortium/ITKPythonBuilds
86- pixi global install zstd
87- pixi global install aria2
88- pixi global install gnu-tar
89- pixi global install git
90- pixi global install rsync
91- fi
92- export PATH=" ${PIXI_HOME} /bin:$PATH "
93-
94- tarball_arch=" -$( arch) "
95- TARBALL_NAME=" ITKPythonBuilds-macosx${tarball_arch} .tar"
96-
97- if [[ ! -f ${TARBALL_NAME} .zst ]]; then
98- echo " Local ITK cache tarball file not found..."
99- # Fetch ITKPythonBuilds archive containing ITK build artifacts
100- echo " Fetching https://github.com/InsightSoftwareConsortium/ITKPythonBuilds/releases/download/${ITK_PACKAGE_VERSION} /ITKPythonBuilds-macosx${tarball_arch} .tar.zst"
101- if ! curl -L " https://github.com/InsightSoftwareConsortium/ITKPythonBuilds/releases/download/${ITK_PACKAGE_VERSION} /ITKPythonBuilds-macosx${tarball_arch} .tar.zst" -O; then
102- echo " FAILED Download:"
103- echo " curl -L https://github.com/InsightSoftwareConsortium/ITKPythonBuilds/releases/download/${ITK_PACKAGE_VERSION} /${TARBALL_NAME} .zst -O"
104- exit 1
105- fi
106- fi
79+ # -----------------------------------------------------------------------
80+ # Check for conda/pixi-provided ITK (libitk-wrapping package).
81+ # When available, skip the tarball download entirely.
10782
108- if [[ ! -f ./${TARBALL_NAME} .zst ]]; then
109- echo " ERROR: can not find required binary './${TARBALL_NAME} .zst'"
110- exit 255
111- fi
83+ _conda_itk_dir=" "
84+ for _prefix_var in CONDA_PREFIX PIXI_ENVIRONMENT_DIR; do
85+ _prefix=" ${! _prefix_var:- } "
86+ if [ -n " ${_prefix} " ]; then
87+ for _candidate in " ${_prefix} " /lib/cmake/ITK-* ; do
88+ if [ -f " ${_candidate} /ITKConfig.cmake" ]; then
89+ _conda_itk_dir=" ${_candidate} "
90+ echo " Detected conda-installed ITK at ${_conda_itk_dir} (via \$ ${_prefix_var} )"
91+ break 2
92+ fi
93+ done
94+ fi
95+ done
11296
113- local_compress_tarball_name=${DASHBOARD_BUILD_DIRECTORY} /ITKPythonBuilds-macosx${tarball_arch} .tar.zst
114- if [[ ! -f ${local_compress_tarball_name} ]]; then
115- aria2c -c --file-allocation=none -d " $( dirname " ${local_compress_tarball_name} " ) " -o " $( basename " ${local_compress_tarball_name} " ) " -s 10 -x 10 " https://github.com/InsightSoftwareConsortium/ITKPythonBuilds/releases/download/${ITK_PACKAGE_VERSION} /ITKPythonBuilds-macosx${tarball_arch} .tar.zst"
116- fi
117- local_tarball_name=${DASHBOARD_BUILD_DIRECTORY} /ITKPythonBuilds-macosx${tarball_arch} .tar
118- unzstd --long=31 " ${local_compress_tarball_name} " -o " ${local_tarball_name} "
119- # Find GNU tar (gtar from pixi or brew) for reliable extraction
120- if command -v gtar > /dev/null 2>&1 ; then
121- TAR_CMD=gtar
122- TAR_FLAGS=(--warning=no-unknown-keyword --checkpoint=10000 --checkpoint-action=dot)
123- elif tar --version 2> /dev/null | grep -q " GNU tar" ; then
124- TAR_CMD=tar
125- TAR_FLAGS=(--warning=no-unknown-keyword --checkpoint=10000 --checkpoint-action=dot)
97+ if [ -n " ${_conda_itk_dir} " ]; then
98+ echo " Using conda-installed ITK; skipping tarball download."
12699else
127- TAR_CMD=tar
128- TAR_FLAGS=()
129- fi
130- " ${TAR_CMD} " xf " ${local_tarball_name} " " ${TAR_FLAGS[@]} "
131- rm " ${local_tarball_name} "
132-
133- # Optional: Update build scripts
134- if [[ -n ${ITKPYTHONPACKAGE_TAG} ]]; then
135- echo " Updating build scripts to ${ITKPYTHONPACKAGE_ORG} /ITKPythonPackage@${ITKPYTHONPACKAGE_TAG} "
136- local_clone_ipp=${DASHBOARD_BUILD_DIRECTORY} /ITKPythonPackage_${ITKPYTHONPACKAGE_TAG}
137- if [ ! -d " ${local_clone_ipp} /.git" ]; then
138- git clone " https://github.com/${ITKPYTHONPACKAGE_ORG} /ITKPythonPackage.git" " ${local_clone_ipp} "
100+ # NOTE: download phase will install pixi in the DASHBOARD_BUILD_DIRECTORY (which is separate from the pixi
101+ # environment used by ITKPythonPackage).
102+ export PIXI_HOME=${DASHBOARD_BUILD_DIRECTORY} /.pixi
103+ if [ ! -f " ${PIXI_HOME} /.pixi/bin/pixi" ]; then
104+ # Install pixi
105+ curl -fsSL https://pixi.sh/install.sh | sh
106+ # These are the tools needed for cross platform downloads of the ITK build caches stored in https://github.com/InsightSoftwareConsortium/ITKPythonBuilds
107+ pixi global install zstd
108+ pixi global install aria2
109+ pixi global install gnu-tar
110+ pixi global install git
111+ pixi global install rsync
112+ fi
113+ export PATH=" ${PIXI_HOME} /bin:$PATH "
114+
115+ tarball_arch=" -$( arch) "
116+ TARBALL_NAME=" ITKPythonBuilds-macosx${tarball_arch} .tar"
117+
118+ if [[ ! -f ${TARBALL_NAME} .zst ]]; then
119+ echo " Local ITK cache tarball file not found..."
120+ # Fetch ITKPythonBuilds archive containing ITK build artifacts
121+ echo " Fetching https://github.com/InsightSoftwareConsortium/ITKPythonBuilds/releases/download/${ITK_PACKAGE_VERSION} /ITKPythonBuilds-macosx${tarball_arch} .tar.zst"
122+ if ! curl -L " https://github.com/InsightSoftwareConsortium/ITKPythonBuilds/releases/download/${ITK_PACKAGE_VERSION} /ITKPythonBuilds-macosx${tarball_arch} .tar.zst" -O; then
123+ echo " FAILED Download:"
124+ echo " curl -L https://github.com/InsightSoftwareConsortium/ITKPythonBuilds/releases/download/${ITK_PACKAGE_VERSION} /${TARBALL_NAME} .zst -O"
125+ exit 1
126+ fi
127+ fi
128+
129+ if [[ ! -f ./${TARBALL_NAME} .zst ]]; then
130+ echo " ERROR: can not find required binary './${TARBALL_NAME} .zst'"
131+ exit 255
132+ fi
133+
134+ local_compress_tarball_name=${DASHBOARD_BUILD_DIRECTORY} /ITKPythonBuilds-macosx${tarball_arch} .tar.zst
135+ if [[ ! -f ${local_compress_tarball_name} ]]; then
136+ aria2c -c --file-allocation=none -d " $( dirname " ${local_compress_tarball_name} " ) " -o " $( basename " ${local_compress_tarball_name} " ) " -s 10 -x 10 " https://github.com/InsightSoftwareConsortium/ITKPythonBuilds/releases/download/${ITK_PACKAGE_VERSION} /ITKPythonBuilds-macosx${tarball_arch} .tar.zst"
137+ fi
138+ local_tarball_name=${DASHBOARD_BUILD_DIRECTORY} /ITKPythonBuilds-macosx${tarball_arch} .tar
139+ unzstd --long=31 " ${local_compress_tarball_name} " -o " ${local_tarball_name} "
140+ # Find GNU tar (gtar from pixi or brew) for reliable extraction
141+ if command -v gtar > /dev/null 2>&1 ; then
142+ TAR_CMD=gtar
143+ TAR_FLAGS=(--warning=no-unknown-keyword --checkpoint=10000 --checkpoint-action=dot)
144+ elif tar --version 2> /dev/null | grep -q " GNU tar" ; then
145+ TAR_CMD=tar
146+ TAR_FLAGS=(--warning=no-unknown-keyword --checkpoint=10000 --checkpoint-action=dot)
147+ else
148+ TAR_CMD=tar
149+ TAR_FLAGS=()
150+ fi
151+ " ${TAR_CMD} " xf " ${local_tarball_name} " " ${TAR_FLAGS[@]} "
152+ rm " ${local_tarball_name} "
153+
154+ # Optional: Update build scripts
155+ if [[ -n ${ITKPYTHONPACKAGE_TAG} ]]; then
156+ echo " Updating build scripts to ${ITKPYTHONPACKAGE_ORG} /ITKPythonPackage@${ITKPYTHONPACKAGE_TAG} "
157+ local_clone_ipp=${DASHBOARD_BUILD_DIRECTORY} /ITKPythonPackage_${ITKPYTHONPACKAGE_TAG}
158+ if [ ! -d " ${local_clone_ipp} /.git" ]; then
159+ git clone " https://github.com/${ITKPYTHONPACKAGE_ORG} /ITKPythonPackage.git" " ${local_clone_ipp} "
160+ fi
161+ pushd " ${local_clone_ipp} " || exit
162+ git checkout " ${ITKPYTHONPACKAGE_TAG} "
163+ git reset " origin/${ITKPYTHONPACKAGE_TAG} " --hard
164+ git status
165+ popd || exit
166+ rsync -av " ${local_clone_ipp} /" " ${DASHBOARD_BUILD_DIRECTORY} /ITKPythonPackage/"
139167 fi
140- pushd " ${local_clone_ipp} " || exit
141- git checkout " ${ITKPYTHONPACKAGE_TAG} "
142- git reset " origin/${ITKPYTHONPACKAGE_TAG} " --hard
143- git status
144- popd || exit
145- rsync -av " ${local_clone_ipp} /" " ${DASHBOARD_BUILD_DIRECTORY} /ITKPythonPackage/"
146168fi
147169
148170echo " Building module wheels"
0 commit comments