diff --git a/python-3.12.8-0.build.sh b/python-3.12.8-0.build.sh
new file mode 100755
index 0000000..ed868fd
--- /dev/null
+++ b/python-3.12.8-0.build.sh
@@ -0,0 +1,760 @@
+#!/bin/bash
+
+# ------------------------------------------------------------------- Debug
+
+ # COOKIE=$(mcookie|cut -c-8); grep -v V_GREP_ME $0 > /dev/shm/runme-$COOKIE.sh ; sleep 0.3; exec bash /dev/shm/runme-$COOKIE.sh
+ # TESTING=1
+
+# ---------------------------------------------------------------- Preamble
+
+PKG=python
+VERSION=3.12.8
+BUILD=0
+PYTHONVER=${VERSION%.*}
+
+CUDADIR=/pkg/cuda-12.1.0-0
+
+PREFIX=/pkg/$PKG-$VERSION-$BUILD
+if [ -n "$TESTING" ]; then PREFIX=/scratch/local2/$PKG-$VERSION-$BUILD ; fi
+
+PATH=/bin:/usr/bin:/usr/sbin:/usr/local/bin
+
+set -e
+umask 022
+
+BUILD_TMPDIR=/scratch/local2/$PKG-$VERSION-$BUILD.$USER.build.tmp
+
+# keep pip's download cache when testing
+test -z "$TESTING" && test -d $BUILD_TMPDIR && ( chmod -R u+rwx $BUILD_TMPDIR || true ; rm -rf $BUILD_TMPDIR )
+mkdir -p $BUILD_TMPDIR/home/.cache/pip
+mkdir -p $BUILD_TMPDIR/home/.local
+# copy script to an accessible location
+cp $0 $BUILD_TMPDIR; ME="$BUILD_TMPDIR/$(basename $0)"
+export TMPDIR=$BUILD_TMPDIR
+export HOME=$BUILD_TMPDIR/home
+
+exec </dev/null
+
+mkdir -p $PREFIX
+cat >$PREFIX/profile <<-EOF
+	. $CUDADIR/profile
+	PATH=$PREFIX/bin:\$PATH
+	export LD_LIBRARY_PATH=$PREFIX/lib\${LD_LIBRARY_PATH:+:}\$LD_LIBRARY_PATH
+	PKG_CONFIG_PATH=$PREFIX/lib/pkgconfig\${PKG_CONFIG_PATH:+:}\$PKG_CONFIG_PATH
+	export PKG_CONFIG_PATH
+	if [ -d $PREFIX/.compatlibs ]; then export LD_LIBRARY_PATH=$PREFIX/.compatlibs\${LD_LIBRARY_PATH:+:}\$LD_LIBRARY_PATH ; fi
+EOF
+. $PREFIX/profile
+
+NPROC=$(( $(nproc) * 4 / 5 + 1 ))
+export MAKEFLAGS="-j $NPROC"
+
+BUILDDIR=$PREFIX/build
+
+mkdir -p $BUILDDIR
+cd $BUILDDIR
+
+
+# -------------------------------------- Use git to track package evolution
+
+test -d .git && rm -rf .git
+git init -b root -q; echo -e '[user]\n name = none\n email = of_your_business...' >> .git/config
+echo '*' > .gitignore
+
+function piplist() {
+  pip list | awk '{ printf("%-36s %s\n", $1,$2) }' | grep -v '\----' > GameOfVersions
+}
+
+function track() {
+  if [ -d .git ]; then
+    if git add -f GameOfVersions; then
+      git commit -q -n -m "Package: '$*'" || /bin/true
+    fi
+  fi
+}
+
+function install() {
+  echo "# ::INST:: # '${@+$@}'"
+  # no-color is nice, but doesn't work when dependencies are installed, so (mis-)use a pipe
+  pip install --no-color --compile --cache-dir=$HOME/.cache/pip --prefix=$PREFIX "${@+$@}" | cat
+  piplist
+  track $*
+}
+
+# ---------------------------------------- Build Python & support libraries
+
+(
+
+  # orig: https://www.python.org/ftp/python/3.12.8/Python-3.12.8.tgz
+  BEEHIVE=https://beehive.molgen.mpg.de/304473cf367fa65e450edf4b06b55fcc/Python-3.12.8.tgz
+  test -e Python-$VERSION.tar.xz || wget -nv $BEEHIVE
+  test -d Python-$VERSION || tar -xf Python-$VERSION.tgz
+  cd Python-$VERSION
+
+  # These may come handy if the Python build needs exclusive stuff from $PREFIX
+  # INCLUDEDIR=$PREFIX/include \
+  # LIBDIR=$PREFIX/lib \
+  LDFLAGS="-Wl,-rpath=$PREFIX/lib" \
+  ./configure \
+          --prefix=$PREFIX \
+          --enable-shared
+
+  make -j $NPROC
+  make install
+
+  # it might come to happen that something down the line may just call 'python', defuse ...
+  test -e $PREFIX/bin/python || ln -s python3 $PREFIX/bin/python
+
+  python -m ensurepip
+  pip3 install --prefix=$PREFIX -I pip
+  ( # fix 'please update' noise from pip
+    cd $PREFIX/lib/python*/site-packages
+    sed -ne '/^#Epatch:pip/ s/^#Epatch:\S* // p' $ME | patch -p1 --verbose
+  )
+  # libblosc2 installs in $PREFIX/lib64, I hate to do this ...
+  ln -s lib $PREFIX/lib64
+)
+
+install setuptools
+piplist; track START
+
+
+# build various pythonbindings 'by hand', because pip installs do not deliver
+# header files and the like.
+# BTW: builds need meson
+
+install meson
+
+(
+  DBUS_PYTHON_VERSION=1.3.2
+
+  # PyPi
+  # https://files.pythonhosted.org/packages/c1/d3/6be85a9c772d6ebba0cc3ab37390dd6620006dcced758667e0217fb13307/dbus-python-1.3.2.tar.gz
+  BEEHIVE=https://beehive.molgen.mpg.de/33be8a4a766e1c7c9a377b8f934ce21a/dbus-python-1.3.2.tar.gz
+  test -e dbus-python-$DBUS_PYTHON_VERSION.tar.gz || wget -nv $BEEHIVE
+  test -d dbus-python-$DBUS_PYTHON_VERSION || tar -xf dbus-python-$DBUS_PYTHON_VERSION.tar.gz
+
+  cd dbus-python-$DBUS_PYTHON_VERSION
+  ./configure --prefix=$PREFIX
+
+  make -j $NPROC
+  make install
+
+)
+
+(
+  PYCAIRO_VERSION=1.27.0
+  # https://files.pythonhosted.org/packages/07/4a/42b26390181a7517718600fa7d98b951da20be982a50cd4afb3d46c2e603/pycairo-1.27.0.tar.gz
+  BEEHIVE=https://beehive.molgen.mpg.de/12097575a1bb683cab7dc425d9769a68/pycairo-1.27.0.tar.gz
+  test -e pycairo-$PYCAIRO_VERSION.tar.gz || wget -nv $BEEHIVE
+  test -d pycairo-$PYCAIRO_VERSION || tar -xf pycairo-$PYCAIRO_VERSION.tar.gz
+
+  cd pycairo-$PYCAIRO_VERSION
+
+  mkdir -p meson-build
+  cd meson-build
+
+  meson setup \
+    --prefix=$PREFIX \
+    --buildtype=release \
+    -Dpython=$PREFIX/bin/python \
+    -Dtests=false \
+    ..
+
+  ninja -j $NPROC
+  ninja install
+
+)
+
+(
+  PYGOBJECT3_VERSION=3.50.0
+
+  # https://files.pythonhosted.org/packages/2b/58/d34e67a79631177e3c08e7d02b5165147f590171f2cae6769502af5f7f7e/pygobject-3.50.0.tar.gz
+  BEEHIVE=https://beehive.molgen.mpg.de/a6904c6f523b9f7ca2dec63d8c24de92/pygobject-3.50.0.tar.gz
+
+  test -e pygobject-$PYGOBJECT3_VERSION.tar.gz || wget -nv $BEEHIVE
+  test -d pygobject-$PYGOBJECT3_VERSION || tar -xf pygobject-$PYGOBJECT3_VERSION.tar.gz
+
+  cd pygobject-$PYGOBJECT3_VERSION
+
+  mkdir -p meson-build
+  cd meson-build
+  meson setup \
+    --prefix=$PREFIX \
+    --buildtype=release \
+    -Dpython=$PREFIX/bin/python \
+    -Dtests=false \
+    ..
+
+  ninja -j $NPROC
+  ninja install
+
+)
+piplist; track various pythonbindings
+
+# build support to use QT from python -- see www.riverbankcomputing.com
+
+( # sip: tool to create Python bindings for C and C++ libraries.
+  SIP_VERSION=6.9.1
+
+  # orig: https://files.pythonhosted.org/packages/e2/83/b23f610ef99fa23aa3c8dcd2ff8536c37b943654405ff4f45f3230327a40/sip-6.9.1.tar.gz
+  BEEHIVE=https://beehive.molgen.mpg.de/a6f939e7c1e4d1c3feb39ed56e7b2297/sip-6.9.1.tar.gz
+  test -e sip-$SIP_VERSION.tar.gz || wget -nv $BEEHIVE
+  test -d sip-$SIP_VERSION || tar -xf sip-$SIP_VERSION.tar.gz
+
+  cd sip-$SIP_VERSION
+
+  pip install .
+
+)
+
+# QT bindings need some python modules to build
+
+install PyQt5-sip
+install PyQt-builder
+
+(
+  PYQT_VERSION=5.15.11
+
+  # orig: https://files.pythonhosted.org/packages/0e/07/c9ed0bd428df6f87183fca565a79fee19fa7c88c7f00a7f011ab4379e77a/PyQt5-5.15.11.tar.gz
+  BEEHIVE=https://beehive.molgen.mpg.de/51ff7c7ccec76a5de36db3ff88140eaf/PyQt5-5.15.11.tar.gz
+  test -e PyQt5-$PYQT_VERSION.tar.gz || wget -nv $BEEHIVE
+  test -d PyQt5-$PYQT_VERSION || tar -xf PyQt5-$PYQT_VERSION.tar.gz
+
+  cd PyQt5-$PYQT_VERSION
+
+  sip-build \
+    --confirm-license \
+    --quiet \
+    --api-dir $PREFIX/share/qsci/api/python \
+    --dbus $PREFIX/include/dbus-1.0 \
+    --no-designer-plugin \
+    --no-qml-plugin \
+    --jobs $NPROC
+
+  cd build
+  make -j $NPROC
+  make install
+
+  # Remove unused py2 version of uic modules
+  rm -r $PREFIX/lib/python*/site-packages/PyQt5/uic/port_v2
+
+)
+
+(
+  QSCINTILLA_VERSION=2.14.1
+
+  # orig: https://www.riverbankcomputing.com/static/Downloads/QScintilla/2.14.1/QScintilla_src-2.14.1.tar.gz
+  BEEHIVE=https://beehive.molgen.mpg.de/9c9e3803e4371ebbb218682e8596af5d/QScintilla_src-2.14.1.tar.gz
+  test -e QScintilla_src-$QSCINTILLA_VERSION.tar.gz || wget -nv $BEEHIVE
+  test -d QScintilla_src-$QSCINTILLA_VERSION || tar -xf QScintilla_src-$QSCINTILLA_VERSION.tar.gz
+
+  cd QScintilla_src-$QSCINTILLA_VERSION
+  cd Python
+
+  cp -vp pyproject-qt5.toml pyproject.toml
+  sip-build \
+    --quiet \
+    --qsci-features-dir ../src/features \
+    --qsci-include-dir ../src \
+    --qsci-library-dir ../src \
+    --api-dir $PREFIX/share/qsci/api/python \
+    --jobs $NPROC
+
+  cd build
+  make -j $NPROC
+  make install
+
+)
+
+(
+  set -x
+  PYQTWEBENGINE_VERSION=5.15.7
+
+  # see:  https://pypi.org/project/PyQtWebEngine/#files
+  # orig: https://files.pythonhosted.org/packages/18/e8/19a00646866e950307f8cd73841575cdb92800ae14837d5821bcbb91392c/PyQtWebEngine-5.15.7.tar.gz
+  BEEHIVE=https://beehive.molgen.mpg.de/a3394e93d8b5077e8355f57d79c2ed58/PyQtWebEngine-5.15.7.tar.gz
+  test -e PyQtWebEngine-${PYQTWEBENGINE_VERSION}.tar.gz || wget -nv $BEEHIVE
+  test -d PyQtWebEngine-${PYQTWEBENGINE_VERSION} || tar -xf PyQtWebEngine-${PYQTWEBENGINE_VERSION}.tar.gz
+
+  cd PyQtWebEngine-${PYQTWEBENGINE_VERSION}
+  sip-build \
+    --quiet \
+    --api-dir ${PREFIX}/share/qsci/api/python \
+    --jobs $NPROC
+
+  cd build
+  make -j $NPROC
+  make install
+
+)
+
+piplist; track qt-support-riverbankcomputing
+
+
+# -------------------------------------------------------- Install packages
+
+
+install Cython
+
+
+# libxml2-python from pypi isn't up to date, cause lxml seems to be the favored binding
+# do this early, not that some dependency tries it on its own.
+# (btw. libxslt-python isn't ported to python3)
+(
+  LIBXML2_VERSION=2.9.12
+
+  # orig: http://xmlsoft.org/sources/libxml2-${PKGVERSION}.tar.gz
+  BEEHIVE=https://beehive.molgen.mpg.de/f433a39be087a9f0b197eb2307ad9f75/libxml2-2.9.12.tar.gz
+  test -e libxml2-$LIBXML2_VERSION.tar.gz || wget -nv $BEEHIVE
+  test -d libxml2-$LIBXML2_VERSION || tar -xf libxml2-$LIBXML2_VERSION.tar.gz libxml2-$LIBXML2_VERSION/python
+  cd libxml2-$LIBXML2_VERSION/python
+  pip install .
+)
+piplist; track legacy-libxml2
+
+# Install the most 'sensitive' packages first
+install 'numpy<2'
+install numba==0.60.0
+
+install wheel
+
+
+# python-javabridge, problems with python 3.11 and recent cython, thus
+# regenerate C bindings from *pxd, *pyx -- so must use github, and wheel
+( 
+  # use the fork from cellprofiler, as used in pypi
+  git clone https://github.com/CellProfiler/python-javabridge
+  cd python-javabridge
+  git checkout v4.0.3
+  sed -ne '/^#Epatch:javabridge/ s/^#Epatch:\S* // p' $ME | patch -p1 --verbose
+  export JAVA_HOME=/pkg/openjdk-17.0.2.8-0
+  PATH=/pkg/openjdk-17.0.2.8-0/bin:$PATH
+  pip install .
+)
+
+PACKAGES=$(sed -e s/#.*$// <<- __PKGLIST__
+	igraph
+	keras
+	ipython[all]
+	snakemake           # December 2023 brought snakemake 8, it seems to be working again
+
+	Pillow
+	protobuf
+	onnx
+	Sphinx
+	jedi
+	black[d]            # onnx wants it, but does not install it ...
+	flask
+
+	SciPy
+	pandas
+	SymPy==1.13.1       # torch does not like 1.13.3
+	nose
+	statsmodels
+	pysam
+	seaborn
+	scikit-learn
+	Mako
+	cutadapt            # Helpdesk 01/24/18 16:19, S. K.
+	pygobject           # Helpdesk 03/26/18 14:19, V. S.
+	blink1              # Blink1-lib 07/04/18 12:00, N. H.
+	hvplot              # ont/nextflow pipelines
+	pyarrow             # ont/nextflow pipelines
+	umi-tools
+	recommonmark
+	fastcluster
+	pydot
+	pygraphviz
+	deeptools
+	HTSeq
+	keras_preprocessing
+	MotifScan           # A.B. 30.8.2018
+	MAmotif
+	hic2cool            # Helpdesk R. S. 17.09.2018
+	virtualenv          # Donald
+	odfpy               # Donald
+	Dumper              # Thomas
+	louvain             # monocle3 prep for H. K.
+	selenium            # 19.7.19 T.K.  -> https://webxray.org/
+	plotly
+	pyOpenCL
+	docopt
+	distro
+	ply
+	threadpoolctl
+	HiCMatrix           # 17.1 -> https://github.com/deeptools/HiCMatrix/issues/47
+	pybedtools
+	gffutils
+	jupyter
+	jupyterlab
+	jupyterlab-git      # request P. A.
+	igv_jupyterlab      # M. L. HD 01-04-2020
+	igv-notebook
+	scour               # https://github.molgen.mpg.de/mariux64/pkg-scripts/issues/98
+	multiqc
+	pybind11
+	svgwrite
+	pyomo
+	bioservices
+	SharedArray
+	pyabc               # dependency for stochkit, HD 20.07.20 G. N. 
+	petab
+	tadtool             # HD 26.01.21 M. R.
+	pyperf              # Paul sep-20
+	umap                # HD, used by M. L.
+	MACS3
+	biopython           # HD 2021-07-23 alphafold related -- cool that we have missed 'biopython' so far, GRIN
+	flatbuffers
+	contextlib2
+	ml_collections
+	python-bioformats
+
+	# additions/fixups since 3.9
+	spyder
+	spyder-kernels
+	papermill           # turns jupyter notebooks into scripts [sic!] used by P.A. [who else, *grin*]
+	opencv-python
+	scikit-image
+	git-cola
+
+	cffi-glpk           # uses /usr/lib/libglpk.so.40, see if I can get it linked statically - kreitler
+	czifile
+	triangle==20230923
+
+	napari[pyqt5]==0.5.5 # always check ...
+	napari-czifile2
+	napari-plugin-manager==0.1.3
+
+	bx-python
+
+	leidenalg
+	scanpy              # this is a MESS, you might always get broken/ugly plots ...
+	asciidoc
+	html2text
+
+	# additions/fixups since 3.10
+	aicspylibczi
+	filetype
+	gmpy2
+	shap
+	UpSetPlot
+	hypothesis
+
+	# nf-core / epi2me related
+	dominate
+	libsass
+	sigfig
+	whatshap
+	Truvari
+	nanopack
+
+	# nlp related
+	spacy
+
+	# appease some warnings from the load test
+	siphash24
+	dask[dataframe]
+
+	__PKGLIST__
+)
+
+for PKG in $PACKAGES; do
+  install $PKG
+done
+
+# py-torch bundled with a recent CUDA-Toolkit from meta,
+# and then the packages that would eventually interfere with torch
+
+install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu121
+install xformers
+
+install xgboost
+install pyopengl
+
+
+# ----------------------------------------------------- Post install fixups
+
+mkdir -vp $PREFIX/share/jupyter/lab/settings  # try to defeat a silly error in jupyter labextension install
+
+# pyopengl: Tk binding creates an error, so remove it (Expects Tk Togl installation...)
+rm -rf ${PREFIX}/lib/python$PYTHONVER/site-packages/OpenGL/Tk
+
+
+# --------------------------------------------------- Install misc packages
+
+#      these mostly bigger packages require either wheel, other treatments,
+#      or java.
+
+# build CrossMap from git, https://github.com/liguowang/CrossMap/issues/67
+(
+  git clone https://github.com/liguowang/CrossMap
+  cd CrossMap
+  git rm src/__init__.py
+  git commit -a -m 'remove badly placed src/__init__.py'
+  # pip install . --prefix=$PREFIX
+  pip install .
+
+)
+
+piplist; track CrossMap
+
+
+# GYP is a Meta-Build system: a build system that generates other build systems. https://gyp.gsrc.io/
+(
+  set -x
+  GYP_VERSION=20230301_c6d8b9f7
+  # orig: https://mirror.netcologne.de/slackware/slackware64-current/source/d/gyp/
+  BEEHIVE=https://beehive.molgen.mpg.de/ba0357be23ca55555714261afccc7aab/gyp-20230301_c6d8b9f7.tar.xz
+  test -e gyp-${GYP_VERSION}.tar.xz || wget -nv $BEEHIVE
+  test -d gyp-${GYP_VERSION} || tar -xf gyp-${GYP_VERSION}.tar.xz
+  cd gyp-${GYP_VERSION}
+  sed -ne '/^#Epatch:gyp/ s/^#Epatch:\S* // p' $ME | patch -p1 --verbose
+  pip install .
+
+)
+
+piplist; track gyp
+
+(
+  BOOSTVERSION=1.86.0
+  BOOSTVERSION_USCORED=${BOOSTVERSION//./_}
+  PKGCFLAGS="-O2 -fPIC"
+
+  # orig: https://archives.boost.io/release/1.86.0/source/boost_1_86_0.tar.gz
+  BEEHIVE=https://beehive.molgen.mpg.de/ac857d73bb754b718a039830b07b9624/boost_1_86_0.tar.gz
+  test -e boost_$BOOSTVERSION_USCORED.tar.gz || wget -nv $BEEHIVE
+  test -d boost_$BOOSTVERSION_USCORED || tar -xf boost_$BOOSTVERSION_USCORED.tar.gz
+  cd boost_$BOOSTVERSION_USCORED
+
+  ./bootstrap.sh \
+    --with-toolset=gcc \
+    --with-icu \
+    --with-python=$PREFIX/bin/python3 \
+    --with-libraries=python,thread,filesystem,stacktrace || exit 1
+
+  ./b2 \
+  $B2FLAGS \
+    -j $NPROC \
+    --prefix=$PREFIX \
+    --enable-shared \
+    --without-mpi \
+    install
+
+)
+
+
+(
+  PYCUDAVERS=2024.1.2
+  PYTHON_LIBNAME=boost_python${PYTHONVER/./}
+
+  # orig: https://files.pythonhosted.org/packages/61/69/f53a6624def08348778a7407683f44c2a9adfdb0b68b9a45f8213ff66c9d/pycuda-2024.1.2.tar.gz
+  BEEHIVE=https://beehive.molgen.mpg.de/976edb53784c528551f2faf16f14d832/pycuda-2024.1.2.tar.gz
+  test -e pycuda-${PYCUDAVERS}.tar.gz || wget -nv $BEEHIVE
+  test -d pycuda-${PYCUDAVERS} || tar -xf pycuda-${PYCUDAVERS}.tar.gz
+
+  cd pycuda-${PYCUDAVERS}
+  test -e siteconf.py && rm siteconf.py
+  python configure.py \
+    --cuda-enable-gl \
+    --cuda-root=$CUDADIR \
+    --no-use-shipped-boost \
+    --boost-python-libname=$PYTHON_LIBNAME \
+    --boost-inc-dir=$PREFIX/include \
+    --boost-lib-dir=$PREFIX/lib \
+    --cudadrv-lib-dir='${CUDA_ROOT}/lib,${CUDA_ROOT}/lib/stubs' \
+    --cudart-lib-dir='${CUDA_ROOT}/lib,${CUDA_ROOT}/lib/stubs' \
+    --curand-lib-dir='${CUDA_ROOT}/lib,${CUDA_ROOT}/lib/stubs' \
+    --ldflags=-L$PREFIX/lib
+
+  pip install . --prefix=$PREFIX
+
+)
+
+piplist; track pycuda
+
+
+(
+  # install from git to get .so files in case
+  pip install git+https://github.com/open2c/pairtools.git@v1.1.2 --prefix=$PREFIX
+  pip install git+https://github.com/brentp/bwa-meth.git@v0.2.7 --prefix=$PREFIX
+
+  # versions > 1.5 will not work with pip install github
+  pip install git+https://github.com/stacked-git/stgit.git@v1.5 --prefix=$PREFIX
+
+)
+
+piplist; track pairtools bwa-meth stgit
+
+(
+  IDR_VERSION=2.0.3
+  # orig: https://github.com/nboley/idr/archive/2.0.3/idr-2.0.3.tar.gz # HD: T. Z., 18.3.21
+  BEEHIVE=https://beehive.molgen.mpg.de/1bec61b526bb1dcf92a5ab99c27852d0/idr-2.0.3.tar.gz
+  test -e idr-${IDR_VERSION}.tar.gz || wget -nv $BEEHIVE
+  test -d idr-${IDR_VERSION} || tar -xf idr-${IDR_VERSION}.tar.gz
+  cd idr-${IDR_VERSION}
+  pip install . --prefix=$PREFIX
+
+)
+
+piplist; track IDR
+
+# tidy up a bit
+if [ -d  $PREFIX/man/man1 ]; then
+  mv -v  $PREFIX/man/man1/* $PREFIX/share/man/man1 || true
+  rm -rf $PREFIX/man
+fi
+
+
+# ------------------------------------------------------------ Sanity check
+
+echo "# --------- *** SANITY CHECKS *** ---------"
+
+# I guess it makes sense that files can be read by all users ...
+echo "# 1) Check for unreadable files ..."
+cd $PREFIX
+for D in bin etc include lib share; do
+  find $D \! -perm -004 -exec chmod -c a+r {} +
+done
+
+# a cheap one :)
+echo "# 2) Running pip check"
+pip check
+
+# load all packages, see warnings and spot installation errors
+echo "# 3) Module load test."
+export NUMEXPR_MAX_THREADS=1
+python -c 'help("modules")'
+echo "# Note: reached end of load test"
+
+echo "For Deeper checks:"
+echo "cd ${BUILDDIR} ;  git log --patch | grep ^[\+\-][^\+\-]"
+
+
+exit
+
+
+# -------------------------------------------------------- Included patches
+
+#Epatch:pip # Operation 'Forever young', disable version-check per default.
+#Epatch:pip # The option needs to be kept, because some tools make use of
+#Epatch:pip # it and would cause pip to fail.
+#Epatch:pip --- a/pip/_internal/cli/cmdoptions.py  2022-08-09 17:29:15.853442948 +0200
+#Epatch:pip +++ b/pip/_internal/cli/cmdoptions.py  2022-08-10 10:31:35.124945154 +0200
+#Epatch:pip @@ -892,7 +892,6 @@
+#Epatch:pip      dest="disable_pip_version_check",
+#Epatch:pip      action="store_true",
+#Epatch:pip -    default=False,
+#Epatch:pip -    help="Don't periodically check PyPI to determine whether a new version "
+#Epatch:pip -    "of pip is available for download. Implied with --no-index.",
+#Epatch:pip +    default=True,
+#Epatch:pip +    help="Ignore this option, the version check IS disabled.",
+#Epatch:pip  )
+
+
+#Epatch:gyp --- a/pylib/gyp/generator/cmake.py
+#Epatch:gyp +++ b/pylib/gyp/generator/cmake.py
+#Epatch:gyp @@ -41,7 +41,7 @@
+#Epatch:gyp  try:
+#Epatch:gyp    # maketrans moved to str in python3.
+#Epatch:gyp +  _maketrans = str.maketrans
+#Epatch:gyp +except NameError:
+#Epatch:gyp    _maketrans = string.maketrans
+#Epatch:gyp -except NameError:
+#Epatch:gyp -  _maketrans = str.maketrans
+#Epatch:gyp  generator_default_variables = {
+#Epatch:gyp  'EXECUTABLE_PREFIX': '',
+#Epatch:gyp  @@ -283,2 +283,2 @@
+#Epatch:gyp    if int(action.get('process_outputs_as_sources', False)):
+#Epatch:gyp -      extra_sources.extend(zip(cmake_outputs, outputs))
+#Epatch:gyp +      extra_sources.extend(list(zip(cmake_outputs, outputs)))
+#Epatch:gyp  @@ -988,6 +988,6 @@
+#Epatch:gyp    # XCode settings
+#Epatch:gyp    xcode_settings = config.get('xcode_settings', {})
+#Epatch:gyp   -    for xcode_setting, xcode_value in xcode_settings.viewitems():
+#Epatch:gyp   +    for xcode_setting, xcode_value in xcode_settings.items():
+#Epatch:gyp       SetTargetProperty(output, cmake_target_name,
+#Epatch:gyp             "XCODE_ATTRIBUTE_%s" % xcode_setting, xcode_value,
+#Epatch:gyp             '' if isinstance(xcode_value, str) else ' ')
+
+#Epatch:gyp diff --git a/pylib/gyp/input.py b/pylib/gyp/input.py
+#Epatch:gyp index 4c12891..2bea334 100644
+#Epatch:gyp --- a/pylib/gyp/input.py
+#Epatch:gyp +++ b/pylib/gyp/input.py
+#Epatch:gyp @@ -1183,7 +1183,7 @@
+#Epatch:gyp        if variable_name in variables:
+#Epatch:gyp          # If the variable is already set, don't set it.
+#Epatch:gyp          continue
+#Epatch:gyp -      if the_dict_key is 'variables' and variable_name in the_dict:
+#Epatch:gyp +      if the_dict_key == 'variables' and variable_name in the_dict:
+#Epatch:gyp          # If the variable is set without a % in the_dict, and the_dict is a
+#Epatch:gyp          # variables dict (making |variables| a varaibles sub-dict of a
+#Epatch:gyp          # variables dict), use the_dict's definition.
+
+
+#Epatch:javabridge diff --git a/_javabridge_nomac.pyx b/_javabridge_nomac.pyx
+#Epatch:javabridge index 9f28939..c437db0 100644
+#Epatch:javabridge --- a/_javabridge_nomac.pyx
+#Epatch:javabridge +++ b/_javabridge_nomac.pyx
+#Epatch:javabridge @@ -16,30 +16,30 @@ cdef extern from "jni.h":
+#Epatch:javabridge           jint (*AttachCurrentThreadAsDaemon)(JavaVM *vm, void *penv, void *args) nogil
+#Epatch:javabridge      jint JNI_CreateJavaVM(JavaVM **pvm, void **penv, void *args) nogil
+#Epatch:javabridge  
+#Epatch:javabridge -cdef int MacStartVM(JavaVM **pvm, JavaVMInitArgs *pVMArgs, char *class_name) nogil:
+#Epatch:javabridge +cdef extern int MacStartVM(JavaVM **pvm, JavaVMInitArgs *pVMArgs, char *class_name) nogil:
+#Epatch:javabridge      return -1
+#Epatch:javabridge  
+#Epatch:javabridge -cdef void StopVM(JavaVM *vm) nogil:
+#Epatch:javabridge +cdef extern void StopVM(JavaVM *vm) nogil:
+#Epatch:javabridge      vm[0].DestroyJavaVM(vm)
+#Epatch:javabridge  
+#Epatch:javabridge -cdef void MacRunLoopInit() nogil:
+#Epatch:javabridge +cdef extern void MacRunLoopInit() nogil:
+#Epatch:javabridge      pass
+#Epatch:javabridge  
+#Epatch:javabridge -cdef void MacRunLoopRun() nogil:
+#Epatch:javabridge +cdef extern void MacRunLoopRun() nogil:
+#Epatch:javabridge      pass
+#Epatch:javabridge  
+#Epatch:javabridge -cdef void MacRunLoopStop() nogil:
+#Epatch:javabridge +cdef extern void MacRunLoopStop() nogil:
+#Epatch:javabridge      pass
+#Epatch:javabridge  
+#Epatch:javabridge -cdef void MacRunLoopReset() nogil:
+#Epatch:javabridge +cdef extern void MacRunLoopReset() nogil:
+#Epatch:javabridge      pass
+#Epatch:javabridge  
+#Epatch:javabridge -cdef int MacIsMainThread() nogil:
+#Epatch:javabridge +cdef extern int MacIsMainThread() nogil:
+#Epatch:javabridge      return 0
+#Epatch:javabridge  
+#Epatch:javabridge -cdef void MacRunLoopRunInMode(double timeout) nogil:
+#Epatch:javabridge +cdef extern void MacRunLoopRunInMode(double timeout) nogil:
+#Epatch:javabridge      pass
+#Epatch:javabridge  
+#Epatch:javabridge -cdef int CreateJavaVM(JavaVM **pvm, void **pEnv, void *args) nogil:
+#Epatch:javabridge +cdef extern int CreateJavaVM(JavaVM **pvm, void **pEnv, void *args) nogil:
+#Epatch:javabridge      return JNI_CreateJavaVM(pvm, pEnv, args)
+#Epatch:javabridge  
+
+#Epatch:javabridge diff --git a/_javabridge_mac.pyx b/_javabridge_mac.pyx
+#Epatch:javabridge index 2e3c524..daed790 100644
+#Epatch:javabridge --- a/_javabridge_mac.pyx
+#Epatch:javabridge +++ b/_javabridge_mac.pyx
+#Epatch:javabridge @@ -31,11 +31,11 @@ cdef extern from "mac_javabridge_utils.h":
+#Epatch:javabridge      int MacIsMainThread() nogil
+#Epatch:javabridge      void MacRunLoopRunInMode(double) nogil
+#Epatch:javabridge  
+#Epatch:javabridge -cdef void StopVM(JavaVM *vm):
+#Epatch:javabridge +cdef extern void StopVM(JavaVM *vm):
+#Epatch:javabridge       MacStopVM()
+#Epatch:javabridge  
+#Epatch:javabridge  #
+#Epatch:javabridge  # Unused stub in Mac
+#Epatch:javabridge  #
+#Epatch:javabridge -cdef int CreateJavaVM(JavaVM **pvm, void **pEnv, void *args):
+#Epatch:javabridge +cdef extern int CreateJavaVM(JavaVM **pvm, void **pEnv, void *args):
+#Epatch:javabridge      return -1
+
+# -------------------------------------------------------- This is the end.
+