Use new bindep syntax
With new bindep syntax we can AND together specific profiles. The most blatant need for this is with 'python-rbd'. We should only install python-rbd when both 'ceph' and 'glance' profiles are specified. The change is merged upstream, but a new version of bindep is not tagged yet, so we install from upstream temporarily. Using hte upstream package will not effect the output of the image. With this change we can use the same profiles across all projects when building, so the user only needs to set one list of profiles rather than profiles per project which could help pipelines keep images consistent. export PROFILES="ceph openvswitch nginx" docker build --build-arg PROFILES="${PROFILES}" --build-arg PROJECT=keystone . docker build --build-arg PROFILES="${PROFILES}" --build-arg PROJECT=glance . docker build --build-arg PROFILES="${PROFILES}" --build-arg PROJECT=nova . docker build --build-arg PROFILES="${PROFILES}" --build-arg PROJECT=neutron . Change-Id: I50a73bfab9c80c8650f5f59c4e16fdfd32fc9c47
This commit is contained in:
parent
ec71665e08
commit
bdb298f435
128
bindep.txt
128
bindep.txt
|
@ -1,55 +1,73 @@
|
||||||
# Apache
|
apache2 [platform:dpkg apache]
|
||||||
apache2 [platform:dpkg apache]
|
bridge-utils [(neutron linuxbridge)]
|
||||||
libapache2-mod-wsgi [platform:dpkg apache]
|
build-essential [platform:dpkg requirements]
|
||||||
|
bzip2 [platform:rpm requirements]
|
||||||
httpd [platform:rpm apache]
|
ceph-common [(ceph cinder) (ceph glance) (ceph nova)]
|
||||||
mod_ssl [platform:rpm apache]
|
conntrack [platform:dpkg neutron]
|
||||||
mod_wsgi [platform:rpm apache]
|
conntrack-tools [platform:rpm neutron]
|
||||||
|
cyrus-sasl-devel [platform:rpm requirements]
|
||||||
# Ceph
|
dnsmasq [neutron]
|
||||||
ceph-common [ceph]
|
dnsmasq-utils [neutron]
|
||||||
# TODO(SamYaple): extend bindep to allow 'profile AND profile' rather than the
|
ebtables [neutron]
|
||||||
# current 'profile OR profile' so we can set this to 'ceph AND glance' so this
|
gcc-c++ [platform:rpm requirements]
|
||||||
# would only get installed in glance container
|
gcc [platform:rpm requirements]
|
||||||
python-rbd [ceph]
|
git [requirements]
|
||||||
|
httpd [platform:rpm apache]
|
||||||
# LVM
|
iproute2 [platform:dpkg neutron nova]
|
||||||
lvm2 [lvm]
|
ipset [neutron]
|
||||||
|
iptables [neutron]
|
||||||
tgt [platform:dpkg lvm]
|
iputils-arping [platform:dpkg neutron]
|
||||||
thin-provisioning-tools [platform:dpkg lvm]
|
keepalived [neutron]
|
||||||
|
libapache2-mod-wsgi [platform:dpkg apache]
|
||||||
targetcli [platform:rpm lvm]
|
liberasurecode-devel [platform:rpm requirements]
|
||||||
|
liberasurecode-dev [platform:dpkg requirements]
|
||||||
# QEMU
|
libffi-devel [platform:rpm requirements]
|
||||||
qemu-utils [platform:dpkg qemu]
|
libffi-dev [platform:dpkg requirements]
|
||||||
qemu-img [platform:rpm qemu]
|
libgcrypt [platform:rpm requirements]
|
||||||
|
libkrb5-dev [platform:dpkg requirements]
|
||||||
# Nova
|
libldap2-dev [platform:dpkg requirements]
|
||||||
iproute2 [platform:dpkg nova]
|
libmariadbclient-dev [platform:debian requirements]
|
||||||
libpython2.7 [platform:dpkg nova]
|
libmysqlclient-dev [platform:ubuntu requirements]
|
||||||
libvirt0 [platform:dpkg nova]
|
libnss3-dev [platform:dpkg requirements]
|
||||||
openvswitch-switch [platform:dpkg nova]
|
libpq-dev [platform:dpkg requirements]
|
||||||
|
libpython2.7 [platform:dpkg neutron nova]
|
||||||
libvirt-libs [platform:rpm nova]
|
libsasl2-dev [platform:dpkg requirements]
|
||||||
openvswitch [platform:rpm nova]
|
libssl-dev [platform:dpkg requirements]
|
||||||
|
libsystemd-dev [platform:dpkg requirements]
|
||||||
# Neutron
|
libvirt0 [platform:dpkg nova]
|
||||||
bridge-utils [neutron]
|
libvirt-devel [platform:rpm requirements]
|
||||||
dnsmasq [neutron]
|
libvirt-dev [platform:dpkg requirements]
|
||||||
dnsmasq-utils [neutron]
|
libxml2-devel [platform:rpm requirements]
|
||||||
ebtables [neutron]
|
libxml2-dev [platform:dpkg requirements]
|
||||||
ipset [neutron]
|
libxslt1-dev [platform:dpkg requirements]
|
||||||
iptables [neutron]
|
libxslt-devel [platform:rpm requirements]
|
||||||
keepalived [neutron]
|
libyaml-devel [platform:rpm requirements]
|
||||||
|
libyaml-dev [platform:dpkg requirements]
|
||||||
conntrack [platform:dpkg neutron]
|
libz-dev [platform:dpkg requirements]
|
||||||
iproute2 [platform:dpkg neutron]
|
lvm2 [(cinder lvm)]
|
||||||
iputils-arping [platform:dpkg neutron]
|
make [platform:rpm requirements]
|
||||||
libpython2.7 [platform:dpkg neutron]
|
mariadb-devel [platform:rpm requirements]
|
||||||
openvswitch-switch [platform:dpkg neutron]
|
mod_ssl [platform:rpm apache]
|
||||||
uuid-runtime [platform:dpkg neutron]
|
mod_wsgi [platform:rpm apache]
|
||||||
|
nginx [nginx]
|
||||||
conntrack-tools [platform:rpm neutron]
|
nss-devel [platform:rpm requirements]
|
||||||
openvswitch [platform:rpm neutron]
|
nss-util [platform:rpm requirements]
|
||||||
uuid [platform:rpm neutron]
|
openldap-devel [platform:rpm requirements]
|
||||||
|
openssl-devel [platform:rpm requirements]
|
||||||
|
openvswitch [platform:rpm (neutron openvswitch) (nova openvswitch)]
|
||||||
|
openvswitch-switch [platform:dpkg (neutron openvswitch) (nova openvswitch)]
|
||||||
|
pkg-config [platform:dpkg requirements]
|
||||||
|
pkgconfig [platform:rpm requirements]
|
||||||
|
postgresql-devel [platform:rpm requirements]
|
||||||
|
python-devel [platform:rpm requirements]
|
||||||
|
python-dev [platform:dpkg requirements]
|
||||||
|
python-rbd [(ceph glance)]
|
||||||
|
qemu-img [platform:rpm (qemu nova)]
|
||||||
|
qemu-utils [platform:dpkg (qemu nova)]
|
||||||
|
systemd-devel [platform:rpm requirements]
|
||||||
|
targetcli [platform:rpm (cinder lvm)]
|
||||||
|
tgt [platform:dpkg (cinder lvm)]
|
||||||
|
thin-provisioning-tools [platform:dpkg (cinder lvm)]
|
||||||
|
uuid [platform:rpm neutron]
|
||||||
|
uuid-runtime [platform:dpkg neutron]
|
||||||
|
zlib-devel [platform:rpm requirements]
|
||||||
|
|
|
@ -2,101 +2,9 @@
|
||||||
|
|
||||||
set -eux
|
set -eux
|
||||||
|
|
||||||
# TODO(SamYaple): Switch all of this to bindep once syntax is supported better
|
|
||||||
# NOTE(SamYaple): Ubuntu and Debian have slightly different package lists
|
|
||||||
case ${distro} in
|
|
||||||
debian)
|
|
||||||
apt-get update
|
|
||||||
apt-get upgrade -y
|
|
||||||
apt-get install -y --no-install-recommends \
|
|
||||||
build-essential \
|
|
||||||
ca-certificates \
|
|
||||||
git \
|
|
||||||
liberasurecode-dev \
|
|
||||||
libffi-dev \
|
|
||||||
libkrb5-dev \
|
|
||||||
libldap2-dev \
|
|
||||||
libmariadbclient-dev \
|
|
||||||
libnss3-dev \
|
|
||||||
libpq-dev \
|
|
||||||
libsasl2-dev \
|
|
||||||
libssl-dev \
|
|
||||||
libsystemd-dev \
|
|
||||||
libxml2-dev \
|
|
||||||
libxslt1-dev \
|
|
||||||
libvirt-dev \
|
|
||||||
libyaml-dev \
|
|
||||||
libz-dev \
|
|
||||||
pkg-config \
|
|
||||||
python-dev \
|
|
||||||
python-pip \
|
|
||||||
python-virtualenv
|
|
||||||
;;
|
|
||||||
ubuntu)
|
|
||||||
apt-get update
|
|
||||||
apt-get upgrade -y
|
|
||||||
apt-get install -y --no-install-recommends \
|
|
||||||
build-essential \
|
|
||||||
ca-certificates \
|
|
||||||
git \
|
|
||||||
liberasurecode-dev \
|
|
||||||
libffi-dev \
|
|
||||||
libkrb5-dev \
|
|
||||||
libldap2-dev \
|
|
||||||
libmysqlclient-dev \
|
|
||||||
libnss3-dev \
|
|
||||||
libpq-dev \
|
|
||||||
libsasl2-dev \
|
|
||||||
libssl-dev \
|
|
||||||
libsystemd-dev \
|
|
||||||
libxml2-dev \
|
|
||||||
libxslt1-dev \
|
|
||||||
libvirt-dev \
|
|
||||||
libyaml-dev \
|
|
||||||
libz-dev \
|
|
||||||
pkg-config \
|
|
||||||
python-dev \
|
|
||||||
python-pip
|
|
||||||
;;
|
|
||||||
centos)
|
|
||||||
yum upgrade -y
|
|
||||||
# NOTE(SamYaple): https://bugs.centos.org/view.php?id=10750
|
|
||||||
yum install -y --setopt=tsflags=docs --setopt=skip_missing_names_on_install=False libffi-devel
|
|
||||||
yum install -y --setopt=skip_missing_names_on_install=False \
|
|
||||||
gcc \
|
|
||||||
gcc-c++ \
|
|
||||||
make \
|
|
||||||
openssl-devel \
|
|
||||||
ca-certificates \
|
|
||||||
git \
|
|
||||||
bzip2 \
|
|
||||||
liberasurecode-devel \
|
|
||||||
openldap-devel \
|
|
||||||
mariadb-devel \
|
|
||||||
nss-devel \
|
|
||||||
postgresql-devel \
|
|
||||||
cyrus-sasl-devel \
|
|
||||||
openssl-devel \
|
|
||||||
libxml2-devel \
|
|
||||||
libxslt-devel \
|
|
||||||
libvirt-devel \
|
|
||||||
libyaml-devel \
|
|
||||||
zlib-devel \
|
|
||||||
pkgconfig \
|
|
||||||
python \
|
|
||||||
python-devel \
|
|
||||||
python-pip \
|
|
||||||
libgcrypt \
|
|
||||||
nss-util \
|
|
||||||
systemd-devel
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
echo "Unknown distro: ${distro}"
|
|
||||||
exit 1
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
$(dirname $0)/setup_pip.sh
|
$(dirname $0)/setup_pip.sh
|
||||||
|
pip install git+https://github.com/openstack-infra/bindep
|
||||||
|
$(dirname $0)/install_packages.sh
|
||||||
$(dirname $0)/clone_project.sh
|
$(dirname $0)/clone_project.sh
|
||||||
mv /tmp/requirements/{global-requirements.txt,upper-constraints.txt} /
|
mv /tmp/requirements/{global-requirements.txt,upper-constraints.txt} /
|
||||||
|
|
||||||
|
@ -107,7 +15,7 @@ split -l1 /upper-constraints.txt
|
||||||
ls -1 | xargs -n1 -P20 -t pip wheel --no-deps --wheel-dir / -c /upper-constraints.txt -r
|
ls -1 | xargs -n1 -P20 -t pip wheel --no-deps --wheel-dir / -c /upper-constraints.txt -r
|
||||||
popd
|
popd
|
||||||
# NOTE(SamYaple): Handle packages not in global-requirements
|
# NOTE(SamYaple): Handle packages not in global-requirements
|
||||||
additional_packages=(argparse bindep==2.5.0 pip setuptools uwsgi wheel virtualenv)
|
additional_packages=(argparse git+https://github.com/openstack-infra/bindep pip setuptools uwsgi wheel virtualenv)
|
||||||
echo "${additional_packages[@]}" | xargs -n1 -P20 pip wheel --wheel-dir / -c /upper-constraints.txt
|
echo "${additional_packages[@]}" | xargs -n1 -P20 pip wheel --wheel-dir / -c /upper-constraints.txt
|
||||||
|
|
||||||
# NOTE(SamYaple): We want to purge all files that are not wheels or txt to
|
# NOTE(SamYaple): We want to purge all files that are not wheels or txt to
|
||||||
|
|
Loading…
Reference in New Issue