mirror of
https://github.com/tahoe-lafs/tahoe-lafs.git
synced 2025-01-29 23:54:01 +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: |
|
command: |
|
||||||
~/project/.circleci/bootstrap-test-environment.sh ~/project
|
~/project/.circleci/bootstrap-test-environment.sh ~/project
|
||||||
|
|
||||||
|
|
||||||
- run: &SETUP_VIRTUALENV
|
- run: &SETUP_VIRTUALENV
|
||||||
name: "Setup virtualenv"
|
name: "Setup virtualenv"
|
||||||
# pip cannot install packages if the working directory is not
|
# pip cannot install packages if the working directory is not
|
||||||
# readable.
|
# readable.
|
||||||
working_directory: "/tmp"
|
working_directory: "/tmp"
|
||||||
command: |
|
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_ENVIRONMENT}" \
|
||||||
"${TAHOE_LAFS_TOX_ARGS}"
|
"${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
|
TAHOE_LAFS_TOX_ARGS=$1
|
||||||
shift || :
|
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.
|
# Get everything else installed in it, too.
|
||||||
sudo --set-home -u nobody \
|
/tmp/tests/bin/tox \
|
||||||
PIP_FIND_LINKS="${PIP_FIND_LINKS}" \
|
|
||||||
/tmp/tests/bin/tox \
|
|
||||||
-c /tmp/project/tox.ini \
|
-c /tmp/project/tox.ini \
|
||||||
--workdir /tmp/tahoe-lafs.tox \
|
--workdir /tmp/tahoe-lafs.tox \
|
||||||
--notest \
|
--notest \
|
||||||
|
Loading…
x
Reference in New Issue
Block a user