contrib/build-linux-wheels.sh
author Yuya Nishihara <yuya@tcha.org>
Sun, 23 Apr 2017 14:47:52 +0900
changeset 33925 2c37f9dabc32
parent 33579 637267114513
permissions -rwxr-xr-x
encoding: add fast path of jsonescape() (issue5533) This isn't highly optimized as it copies characters one by one, but seems reasonably simple and not slow. (with mercurial repo) $ export HGRCPATH=/dev/null HGPLAIN= $ hg log --time --config experimental.stabilization=all -Tjson > /dev/null (original) time: real 6.830 secs (user 6.740+0.000 sys 0.080+0.000) time: real 6.690 secs (user 6.650+0.000 sys 0.040+0.000) time: real 6.700 secs (user 6.640+0.000 sys 0.060+0.000) (this patch) time: real 5.630 secs (user 5.550+0.000 sys 0.070+0.000) time: real 5.700 secs (user 5.650+0.000 sys 0.050+0.000) time: real 5.690 secs (user 5.640+0.000 sys 0.050+0.000)
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
32080
fcddcf442e4f packaging: add make target for linux wheels
Boris Feld <boris.feld@octobus.net>
parents:
diff changeset
     1
#!/bin/bash
fcddcf442e4f packaging: add make target for linux wheels
Boris Feld <boris.feld@octobus.net>
parents:
diff changeset
     2
# This file is directly inspired by
fcddcf442e4f packaging: add make target for linux wheels
Boris Feld <boris.feld@octobus.net>
parents:
diff changeset
     3
# https://github.com/pypa/python-manylinux-demo/blob/master/travis/build-wheels.sh
fcddcf442e4f packaging: add make target for linux wheels
Boris Feld <boris.feld@octobus.net>
parents:
diff changeset
     4
set -e -x
fcddcf442e4f packaging: add make target for linux wheels
Boris Feld <boris.feld@octobus.net>
parents:
diff changeset
     5
33579
637267114513 contrib: drop Python 2.6 from manylinux1 wheel script
Augie Fackler <augie@google.com>
parents: 32080
diff changeset
     6
PYTHON_TARGETS=$(ls -d /opt/python/cp27*/bin)
32080
fcddcf442e4f packaging: add make target for linux wheels
Boris Feld <boris.feld@octobus.net>
parents:
diff changeset
     7
fcddcf442e4f packaging: add make target for linux wheels
Boris Feld <boris.feld@octobus.net>
parents:
diff changeset
     8
# Create an user for the tests
fcddcf442e4f packaging: add make target for linux wheels
Boris Feld <boris.feld@octobus.net>
parents:
diff changeset
     9
useradd hgbuilder
fcddcf442e4f packaging: add make target for linux wheels
Boris Feld <boris.feld@octobus.net>
parents:
diff changeset
    10
fcddcf442e4f packaging: add make target for linux wheels
Boris Feld <boris.feld@octobus.net>
parents:
diff changeset
    11
# Bypass uid/gid problems
fcddcf442e4f packaging: add make target for linux wheels
Boris Feld <boris.feld@octobus.net>
parents:
diff changeset
    12
cp -R /src /io && chown -R hgbuilder:hgbuilder /io
fcddcf442e4f packaging: add make target for linux wheels
Boris Feld <boris.feld@octobus.net>
parents:
diff changeset
    13
fcddcf442e4f packaging: add make target for linux wheels
Boris Feld <boris.feld@octobus.net>
parents:
diff changeset
    14
# Compile wheels for Python 2.X
fcddcf442e4f packaging: add make target for linux wheels
Boris Feld <boris.feld@octobus.net>
parents:
diff changeset
    15
for PYBIN in $PYTHON_TARGETS; do
fcddcf442e4f packaging: add make target for linux wheels
Boris Feld <boris.feld@octobus.net>
parents:
diff changeset
    16
    "${PYBIN}/pip" wheel /io/ -w wheelhouse/
fcddcf442e4f packaging: add make target for linux wheels
Boris Feld <boris.feld@octobus.net>
parents:
diff changeset
    17
done
fcddcf442e4f packaging: add make target for linux wheels
Boris Feld <boris.feld@octobus.net>
parents:
diff changeset
    18
fcddcf442e4f packaging: add make target for linux wheels
Boris Feld <boris.feld@octobus.net>
parents:
diff changeset
    19
# Bundle external shared libraries into the wheels with
fcddcf442e4f packaging: add make target for linux wheels
Boris Feld <boris.feld@octobus.net>
parents:
diff changeset
    20
# auditwheel (https://github.com/pypa/auditwheel) repair.
fcddcf442e4f packaging: add make target for linux wheels
Boris Feld <boris.feld@octobus.net>
parents:
diff changeset
    21
# It also fix the ABI tag on the wheel making it pip installable.
fcddcf442e4f packaging: add make target for linux wheels
Boris Feld <boris.feld@octobus.net>
parents:
diff changeset
    22
for whl in wheelhouse/*.whl; do
fcddcf442e4f packaging: add make target for linux wheels
Boris Feld <boris.feld@octobus.net>
parents:
diff changeset
    23
    auditwheel repair "$whl" -w /src/wheelhouse/
fcddcf442e4f packaging: add make target for linux wheels
Boris Feld <boris.feld@octobus.net>
parents:
diff changeset
    24
done
fcddcf442e4f packaging: add make target for linux wheels
Boris Feld <boris.feld@octobus.net>
parents:
diff changeset
    25
fcddcf442e4f packaging: add make target for linux wheels
Boris Feld <boris.feld@octobus.net>
parents:
diff changeset
    26
# Install packages and run the tests for all Python versions
fcddcf442e4f packaging: add make target for linux wheels
Boris Feld <boris.feld@octobus.net>
parents:
diff changeset
    27
cd /io/tests/
fcddcf442e4f packaging: add make target for linux wheels
Boris Feld <boris.feld@octobus.net>
parents:
diff changeset
    28
fcddcf442e4f packaging: add make target for linux wheels
Boris Feld <boris.feld@octobus.net>
parents:
diff changeset
    29
for PYBIN in $PYTHON_TARGETS; do
fcddcf442e4f packaging: add make target for linux wheels
Boris Feld <boris.feld@octobus.net>
parents:
diff changeset
    30
    # Install mercurial wheel as root
fcddcf442e4f packaging: add make target for linux wheels
Boris Feld <boris.feld@octobus.net>
parents:
diff changeset
    31
    "${PYBIN}/pip" install mercurial --no-index -f /src/wheelhouse
fcddcf442e4f packaging: add make target for linux wheels
Boris Feld <boris.feld@octobus.net>
parents:
diff changeset
    32
    # But run tests as hgbuilder user (non-root)
fcddcf442e4f packaging: add make target for linux wheels
Boris Feld <boris.feld@octobus.net>
parents:
diff changeset
    33
    su hgbuilder -c "\"${PYBIN}/python\" /io/tests/run-tests.py --with-hg=\"${PYBIN}/hg\" --blacklist=/io/contrib/linux-wheel-centos5-blacklist"
fcddcf442e4f packaging: add make target for linux wheels
Boris Feld <boris.feld@octobus.net>
parents:
diff changeset
    34
done