Skip to content

Commit

Permalink
Merge pull request #265 from mariux64/add-pypy-3.10-v7.3.13
Browse files Browse the repository at this point in the history
pypy: add version 3.10-v7.3.13
  • Loading branch information
thomas authored Jan 5, 2024
2 parents 438c6cc + 1f8ebcd commit 65b6461
Showing 1 changed file with 198 additions and 0 deletions.
198 changes: 198 additions & 0 deletions pypy-3.10-v7.3.13-0.build.sh
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.

0 comments on commit 65b6461

Please sign in to comment.