contrib/build-linux-wheels.sh
author Boris Feld <boris.feld@octobus.net>
Wed, 12 Jul 2017 20:11:00 +0200
changeset 33458 cf694e6422f0
parent 32080 fcddcf442e4f
child 33579 637267114513
permissions -rw-r--r--
phases: track phase changes from 'retractboundary' We adds new computation to find and record the revision affected by the boundary retraction. This add more complication to the function but this seems fine since it is only used in a couple of rare and explicit cases (`hg phase --force` and `hg qimport`). Having strong tracking of phase changes is worth the effort.
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
fcddcf442e4f packaging: add make target for linux wheels
Boris Feld <boris.feld@octobus.net>
parents:
diff changeset
     6
PYTHON_TARGETS=$(ls -d /opt/python/cp2*/bin)
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