
A recent change in pip wheel cache behavior had upstream pip indicating that we really should be using pip wheel instead. The reason we weren't using pip wheel appears to be that we wanted to infer what top level wheel to install via contents of a dir separate from our wheel output dir/wheel cache. Using pip wheel implies everything gets flattened into one location. We deal with this by having the build tool write all of the top level wheels we care about into a separate location. Later we can install all of the top level wheels while pointing find links at the larger set of deps in the dir created by pip wheel. Change-Id: Id9c674c1ec6fe5e72534549082e3adda9e286fd5
56 lines
1.9 KiB
Bash
Executable File
56 lines
1.9 KiB
Bash
Executable File
#!/bin/bash
|
|
# Copyright (c) 2019 Red Hat, Inc.
|
|
#
|
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
# you may not use this file except in compliance with the License.
|
|
# You may obtain a copy of the License at
|
|
#
|
|
# http://www.apache.org/licenses/LICENSE-2.0
|
|
#
|
|
# Unless required by applicable law or agreed to in writing, software
|
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
|
# implied.
|
|
# See the License for the specific language governing permissions and
|
|
# limitations under the License.
|
|
|
|
set -ex
|
|
|
|
apt-get update
|
|
DEBIAN_FRONTEND=noninteractive apt-get -y install $(cat /output/bindep/run.txt)
|
|
|
|
# If there's a constraints file, use it.
|
|
if [ -f /output/upper-constraints.txt ] ; then
|
|
CONSTRAINTS="-c /output/upper-constraints.txt"
|
|
fi
|
|
|
|
# If a requirements.txt file exists,
|
|
# install it directly so that people can use git url syntax
|
|
# to do things like pick up patched but unreleased versions
|
|
# of dependencies.
|
|
if [ -f /output/requirements.txt ] ; then
|
|
# --find-links will point pip at all of the wheels the assemble script
|
|
# downloaded or built. --no-index ensures that pip will only refer to
|
|
# the local set of wheels when looking for packages to install.
|
|
pip install $CONSTRAINTS --no-index --find-links=/output/wheels -r /output/requirements.txt
|
|
fi
|
|
|
|
# Add any requested extras to the list of things to install
|
|
EXTRAS=""
|
|
for extra in $* ; do
|
|
EXTRAS="${EXTRAS} -r /output/$extra/requirements.txt"
|
|
done
|
|
|
|
if [ -f /output/packages.txt ] ; then
|
|
# If a package list was passed to assemble, install that in the final
|
|
# image.
|
|
pip install $CONSTRAINTS --no-index --find-links=/output/wheels -r /output/packages.txt $EXTRAS
|
|
else
|
|
# Install the top level wheels.
|
|
pip install $CONSTRAINTS --no-index --find-links=/output/wheels /output/toplevel_wheels/*.whl $EXTRAS
|
|
fi
|
|
|
|
# clean up after ourselves
|
|
apt-get clean
|
|
rm -rf /var/lib/apt/lists/*
|