mirror of
https://github.com/tahoe-lafs/tahoe-lafs.git
synced 2025-01-18 02:40:07 +00:00
Split setup-virtualenv.sh into a few pieces
Some of the pieces may be usable in Docker image creation
This commit is contained in:
parent
c1e617abc9
commit
f794160dcf
@ -86,14 +86,15 @@ jobs:
|
||||
command: |
|
||||
~/project/.circleci/bootstrap-test-environment.sh ~/project
|
||||
|
||||
|
||||
- run: &SETUP_VIRTUALENV
|
||||
name: "Setup virtualenv"
|
||||
# pip cannot install packages if the working directory is not
|
||||
# readable.
|
||||
working_directory: "/tmp"
|
||||
command: |
|
||||
/tmp/project/.circleci/setup-virtualenv.sh \
|
||||
sudo --set-home -u nobody /tmp/project/.circleci/create-virtualenv.sh "${WHEELHOUSE_PATH}" "/tmp/tests"
|
||||
sudo --set-home -u nobody /tmp/project/.circleci/populate-wheelhouse.sh "${WHEELHOUSE_PATH}" "/tmp/tests" "/tmp/project"
|
||||
sudo --set-home -u nobody /tmp/project/.circleci/setup-virtualenv.sh \
|
||||
"${TAHOE_LAFS_TOX_ENVIRONMENT}" \
|
||||
"${TAHOE_LAFS_TOX_ARGS}"
|
||||
|
||||
|
34
.circleci/create-virtualenv.sh
Executable file
34
.circleci/create-virtualenv.sh
Executable file
@ -0,0 +1,34 @@
|
||||
#!/bin/bash -eo pipefail
|
||||
|
||||
# The filesystem location of the wheelhouse which we'll populate with wheels
|
||||
# for all of our dependencies.
|
||||
WHEELHOUSE_PATH="$1"
|
||||
shift
|
||||
|
||||
# The filesystem location of the root of a virtualenv we can use to get/build
|
||||
# wheels.
|
||||
BOOTSTRAP_VENV="$1"
|
||||
shift
|
||||
|
||||
# Set up the virtualenv as a non-root user so we can run the test suite as a
|
||||
# non-root user. See below.
|
||||
virtualenv --python python2.7 "${BOOTSTRAP_VENV}"
|
||||
|
||||
# For convenience.
|
||||
PIP="${BOOTSTRAP_VENV}/bin/pip"
|
||||
|
||||
# Tell pip where it can find any existing wheels.
|
||||
export PIP_FIND_LINKS="file://${WHEELHOUSE_PATH}"
|
||||
|
||||
# Get "certifi" to avoid bug #2913. Basically if a `setup_requires=...` causes
|
||||
# a package to be installed (with setuptools) then it'll fail on certain
|
||||
# platforms (travis's OX-X 10.12, Slackware 14.2) because PyPI's TLS
|
||||
# requirements (TLS >= 1.2) are incompatible with the old TLS clients
|
||||
# available to those systems. Installing it ahead of time (with pip) avoids
|
||||
# this problem. Make sure this step comes before any other attempts to
|
||||
# install things using pip!
|
||||
"${PIP}" install certifi
|
||||
|
||||
# Get a new, awesome version of pip and setuptools. For example, the
|
||||
# distro-packaged virtualenv's pip may not know about wheels.
|
||||
"${PIP}" install --upgrade pip setuptools wheel
|
44
.circleci/populate-wheelhouse.sh
Executable file
44
.circleci/populate-wheelhouse.sh
Executable file
@ -0,0 +1,44 @@
|
||||
#!/bin/bash -eo pipefail
|
||||
|
||||
# Python packages we need to support the test infrastructure. *Not* packages
|
||||
# Tahoe-LAFS itself (implementation or test suite) need.
|
||||
TEST_DEPS="tox codecov"
|
||||
|
||||
# Python packages we need to generate test reports for CI infrastructure.
|
||||
# *Not* packages Tahoe-LAFS itself (implement or test suite) need.
|
||||
REPORTING_DEPS="python-subunit junitxml subunitreporter"
|
||||
|
||||
# The filesystem location of the wheelhouse which we'll populate with wheels
|
||||
# for all of our dependencies.
|
||||
WHEELHOUSE_PATH="$1"
|
||||
shift
|
||||
|
||||
# The filesystem location of the root of a virtualenv we can use to get/build
|
||||
# wheels.
|
||||
BOOTSTRAP_VENV="$1"
|
||||
shift
|
||||
|
||||
# The filesystem location of the root of the project source. We need this to
|
||||
# know what wheels to get/build, of course.
|
||||
PROJECT_ROOT="$1"
|
||||
shift
|
||||
|
||||
# For convenience.
|
||||
PIP="${BOOTSTRAP_VENV}/bin/pip"
|
||||
|
||||
# Tell pip where it can find any existing wheels.
|
||||
export PIP_FIND_LINKS="file://${WHEELHOUSE_PATH}"
|
||||
|
||||
# Populate the wheelhouse, if necessary.
|
||||
"${PIP}" \
|
||||
wheel \
|
||||
--wheel-dir "${WHEELHOUSE_PATH}" \
|
||||
"${PROJECT_ROOT}" \
|
||||
${TEST_DEPS} \
|
||||
${REPORTING_DEPS}
|
||||
|
||||
# Not strictly wheelhouse population but ...
|
||||
"${PIP}" \
|
||||
install \
|
||||
${TEST_DEPS} \
|
||||
${REPORTING_DEPS}
|
@ -6,56 +6,8 @@ shift
|
||||
TAHOE_LAFS_TOX_ARGS=$1
|
||||
shift || :
|
||||
|
||||
# Python packages we need to support the test infrastructure. *Not* packages
|
||||
# Tahoe-LAFS itself (implementation or test suite) need.
|
||||
TEST_DEPS="tox codecov"
|
||||
|
||||
# Python packages we need to generate test reports for CI infrastructure.
|
||||
# *Not* packages Tahoe-LAFS itself (implement or test suite) need.
|
||||
REPORTING_DEPS="python-subunit junitxml subunitreporter"
|
||||
|
||||
# Make sure the ownership of the pip cache directory is correct. The CircleCI
|
||||
# cache management operations seem to mess it up. The cache directory might
|
||||
# not exist if there was no matching cache to restore.
|
||||
[ -e /tmp/nobody/.cache ] && chown --recursive nobody /tmp/nobody/.cache
|
||||
|
||||
# Set up the virtualenv as a non-root user so we can run the test suite as a
|
||||
# non-root user. See below.
|
||||
sudo --set-home -u nobody virtualenv --python python2.7 /tmp/tests
|
||||
|
||||
# Get "certifi" to avoid bug #2913. Basically if a `setup_requires=...` causes
|
||||
# a package to be installed (with setuptools) then it'll fail on certain
|
||||
# platforms (travis's OX-X 10.12, Slackware 14.2) because PyPI's TLS
|
||||
# requirements (TLS >= 1.2) are incompatible with the old TLS clients
|
||||
# available to those systems. Installing it ahead of time (with pip) avoids
|
||||
# this problem. Make sure this step comes before any other attempts to
|
||||
# install things using pip!
|
||||
sudo --set-home -u nobody \
|
||||
PIP_FIND_LINKS="${PIP_FIND_LINKS}" \
|
||||
/tmp/tests/bin/pip install certifi
|
||||
|
||||
# Get a new, awesome version of pip and setuptools. For example, the
|
||||
# distro-packaged virtualenv's pip may not know about wheels.
|
||||
sudo --set-home -u nobody \
|
||||
PIP_FIND_LINKS="${PIP_FIND_LINKS}" \
|
||||
/tmp/tests/bin/pip install --upgrade pip setuptools wheel
|
||||
|
||||
# Populate the wheelhouse, if necessary.
|
||||
sudo --set-home -u nobody \
|
||||
PIP_FIND_LINKS="${PIP_FIND_LINKS}" \
|
||||
/tmp/tests/bin/pip \
|
||||
wheel \
|
||||
--wheel-dir "${WHEELHOUSE_PATH}" \
|
||||
/tmp/project ${TEST_DEPS} ${REPORTING_DEPS}
|
||||
|
||||
sudo --set-home -u nobody \
|
||||
PIP_FIND_LINKS="${PIP_FIND_LINKS}" \
|
||||
/tmp/tests/bin/pip install ${TEST_DEPS} ${REPORTING_DEPS}
|
||||
|
||||
# Get everything else installed in it, too.
|
||||
sudo --set-home -u nobody \
|
||||
PIP_FIND_LINKS="${PIP_FIND_LINKS}" \
|
||||
/tmp/tests/bin/tox \
|
||||
/tmp/tests/bin/tox \
|
||||
-c /tmp/project/tox.ini \
|
||||
--workdir /tmp/tahoe-lafs.tox \
|
||||
--notest \
|
||||
|
Loading…
Reference in New Issue
Block a user