From bdb298f4358e4bf9334a9dbafc6e9523a192e4ce Mon Sep 17 00:00:00 2001 From: Sam Yaple Date: Fri, 22 Sep 2017 21:43:07 -0400 Subject: [PATCH] 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 --- bindep.txt | 128 +++++++++++++++++++++++----------------- scripts/requirements.sh | 98 +----------------------------- 2 files changed, 76 insertions(+), 150 deletions(-) diff --git a/bindep.txt b/bindep.txt index b8e9c42..5a700c0 100644 --- a/bindep.txt +++ b/bindep.txt @@ -1,55 +1,73 @@ -# Apache -apache2 [platform:dpkg apache] -libapache2-mod-wsgi [platform:dpkg apache] - -httpd [platform:rpm apache] -mod_ssl [platform:rpm apache] -mod_wsgi [platform:rpm apache] - -# Ceph -ceph-common [ceph] -# TODO(SamYaple): extend bindep to allow 'profile AND profile' rather than the -# current 'profile OR profile' so we can set this to 'ceph AND glance' so this -# would only get installed in glance container -python-rbd [ceph] - -# LVM -lvm2 [lvm] - -tgt [platform:dpkg lvm] -thin-provisioning-tools [platform:dpkg lvm] - -targetcli [platform:rpm lvm] - -# QEMU -qemu-utils [platform:dpkg qemu] -qemu-img [platform:rpm qemu] - -# Nova -iproute2 [platform:dpkg nova] -libpython2.7 [platform:dpkg nova] -libvirt0 [platform:dpkg nova] -openvswitch-switch [platform:dpkg nova] - -libvirt-libs [platform:rpm nova] -openvswitch [platform:rpm nova] - -# Neutron -bridge-utils [neutron] -dnsmasq [neutron] -dnsmasq-utils [neutron] -ebtables [neutron] -ipset [neutron] -iptables [neutron] -keepalived [neutron] - -conntrack [platform:dpkg neutron] -iproute2 [platform:dpkg neutron] -iputils-arping [platform:dpkg neutron] -libpython2.7 [platform:dpkg neutron] -openvswitch-switch [platform:dpkg neutron] -uuid-runtime [platform:dpkg neutron] - -conntrack-tools [platform:rpm neutron] -openvswitch [platform:rpm neutron] -uuid [platform:rpm neutron] +apache2 [platform:dpkg apache] +bridge-utils [(neutron linuxbridge)] +build-essential [platform:dpkg requirements] +bzip2 [platform:rpm requirements] +ceph-common [(ceph cinder) (ceph glance) (ceph nova)] +conntrack [platform:dpkg neutron] +conntrack-tools [platform:rpm neutron] +cyrus-sasl-devel [platform:rpm requirements] +dnsmasq [neutron] +dnsmasq-utils [neutron] +ebtables [neutron] +gcc-c++ [platform:rpm requirements] +gcc [platform:rpm requirements] +git [requirements] +httpd [platform:rpm apache] +iproute2 [platform:dpkg neutron nova] +ipset [neutron] +iptables [neutron] +iputils-arping [platform:dpkg neutron] +keepalived [neutron] +libapache2-mod-wsgi [platform:dpkg apache] +liberasurecode-devel [platform:rpm requirements] +liberasurecode-dev [platform:dpkg requirements] +libffi-devel [platform:rpm requirements] +libffi-dev [platform:dpkg requirements] +libgcrypt [platform:rpm requirements] +libkrb5-dev [platform:dpkg requirements] +libldap2-dev [platform:dpkg requirements] +libmariadbclient-dev [platform:debian requirements] +libmysqlclient-dev [platform:ubuntu requirements] +libnss3-dev [platform:dpkg requirements] +libpq-dev [platform:dpkg requirements] +libpython2.7 [platform:dpkg neutron nova] +libsasl2-dev [platform:dpkg requirements] +libssl-dev [platform:dpkg requirements] +libsystemd-dev [platform:dpkg requirements] +libvirt0 [platform:dpkg nova] +libvirt-devel [platform:rpm requirements] +libvirt-dev [platform:dpkg requirements] +libxml2-devel [platform:rpm requirements] +libxml2-dev [platform:dpkg requirements] +libxslt1-dev [platform:dpkg requirements] +libxslt-devel [platform:rpm requirements] +libyaml-devel [platform:rpm requirements] +libyaml-dev [platform:dpkg requirements] +libz-dev [platform:dpkg requirements] +lvm2 [(cinder lvm)] +make [platform:rpm requirements] +mariadb-devel [platform:rpm requirements] +mod_ssl [platform:rpm apache] +mod_wsgi [platform:rpm apache] +nginx [nginx] +nss-devel [platform:rpm requirements] +nss-util [platform:rpm requirements] +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] diff --git a/scripts/requirements.sh b/scripts/requirements.sh index 08a77ca..fd1a6b1 100755 --- a/scripts/requirements.sh +++ b/scripts/requirements.sh @@ -2,101 +2,9 @@ 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 +pip install git+https://github.com/openstack-infra/bindep +$(dirname $0)/install_packages.sh $(dirname $0)/clone_project.sh 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 popd # 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 # NOTE(SamYaple): We want to purge all files that are not wheels or txt to