From a97203f870cb803ac814d6dca8d33efa6333e6c4 Mon Sep 17 00:00:00 2001 From: thomas Date: Mon, 17 Mar 2025 12:44:07 +0100 Subject: [PATCH] python-3.12.8: add to repo Hmm, somehow this was forgotten Notable changes: - napari and snakemake are back in the package - tensorflow was thrown out, but with 'tfpython' the previous python with tensorflow can be called --- python-3.12.8-0.build.sh | 760 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 760 insertions(+) create mode 100755 python-3.12.8-0.build.sh 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 $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. +