-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #265 from mariux64/add-pypy-3.10-v7.3.13
pypy: add version 3.10-v7.3.13
- Loading branch information
Showing
1 changed file
with
198 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,198 @@ | ||
#!/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=pypy | ||
VERSION=3.10-v7.3.13 | ||
BUILD=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 | ||
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 -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 PyPy | ||
|
||
( | ||
|
||
# orig: https://downloads.python.org/pypy/pypy3.10-v7.3.14-src.tar.bz2 | ||
BEEHIVE=https://beehive.molgen.mpg.de/5e4d55b173d67e5d287add014b36b918/pypy3.10-v7.3.13-src.tar.bz2 | ||
test -e pypy$VERSION-src.tar.bz2 || wget -nv $BEEHIVE | ||
test -d pypy$VERSION-src || tar -xf pypy$VERSION-src.tar.bz2 | ||
cd pypy$VERSION-src | ||
|
||
# mind, the doc for building is here: pypy3.10-v7.3.13-src/pypy/doc/build.rst | ||
|
||
sed -i -e '/^RUNINTERP/ s/python.*/python2/' Makefile | ||
make 2>&1 | cat # avoid the fractal painter :/ | ||
|
||
python2 pypy/tool/release/package.py --archive-name=pypy-$VERSION-x86_64 | ||
# Results in: Ready in /scratch/local2/pypy-3.10-v7.3.13-0.kreitler.build.tmp/usession-release-pypy3.10-v7.3.13-1/build | ||
|
||
( | ||
cd $PREFIX | ||
TAR=$(ls -rt $TMPDIR/usession-release-pypy*[0-9]/build/pypy-3.10-v7.3.13-x86_64.tar.bz2 | tail -1) | ||
tar -xf $TAR --strip-components=1 | ||
) | ||
|
||
# it might come to happen that something down the line may just call 'python', defuse ... | ||
test -e $PREFIX/bin/python || ln -s pypy $PREFIX/bin/python | ||
|
||
python -m ensurepip | ||
pip3 install --upgrade --prefix=$PREFIX -I pip | ||
( # fix 'please update' noise from pip | ||
cd $PREFIX/lib/pypy*/site-packages | ||
sed -ne '/^#Epatch:pip/ s/^#Epatch:\S* // p' $ME | patch -p1 --verbose | ||
) | ||
|
||
) | ||
|
||
install setuptools | ||
piplist; track START | ||
|
||
# -------------------------------------------------------- Install packages | ||
|
||
PACKAGES=$(sed -e s/#.*$// <<- __PKGLIST__ | ||
numpy | ||
keras | ||
seaborn | ||
pytest==6.2.5 | ||
pytest-asyncio==0.19.0 # to get rid of a deprecation warning in 0.20.3, -> 0.19.0 | ||
Pillow | ||
SciPy | ||
pandas | ||
SymPy | ||
nose | ||
statsmodels | ||
pysam | ||
seaborn | ||
scikit-learn | ||
hvplot | ||
pyarrow | ||
fastcluster | ||
snakemake | ||
virtualenv | ||
Dumper | ||
plotly | ||
svgwrite | ||
biopython | ||
filetype | ||
pyperformance # this is _not_ the pypy optimized suite, by intention ... | ||
__PKGLIST__ | ||
) | ||
|
||
for PKG in $PACKAGES; do | ||
install $PKG | ||
done | ||
|
||
# ------------------------------------------------------------ Sanity check | ||
|
||
# load all packages, see warnings and spot installation errors | ||
echo "# START load test." | ||
python -c 'help("modules")' > /dev/null | ||
echo "# END load test (passed)." | ||
|
||
echo "# running pip check" | ||
pip check | ||
|
||
# I guess it makes sense that files can be read by all users ... | ||
echo "# 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 | ||
|
||
echo "For Deeper checks:" | ||
echo "cd ${BUILDDIR} ; git log --patch " | ||
|
||
|
||
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 ) | ||
|
||
# -------------------------------------------------------- This is the end. | ||
|