From db35ac8d793506bc43b62e7e39d27a75de1043ed Mon Sep 17 00:00:00 2001 From: Michal Nasiadka Date: Mon, 6 Jul 2026 15:26:00 +0200 Subject: Migrate to pyproject.toml [tool.setuptools.data-files] does not support recursive directory installation. The old setup.cfg [files] worked because PBR's FilesConfig.expand_globs() used os.walk() to expand docker/*, but this hook is not triggered by the pbr.build PEP-517 backend. Move docker/ into kolla/ and use [tool.setuptools.package-data] instead. Update kolla_worker._get_images_dir() to check the kolla package directory first so both editable and regular installs work. Change-Id: I4fc452c03740ef22ebbb4e8d0d86c4f4783e2d09 Signed-off-by: Michal Nasiadka --- kolla/docker/openstack-base/Dockerfile.j2 | 213 ++++++++++++++++++++++++++++++ 1 file changed, 213 insertions(+) create mode 100644 kolla/docker/openstack-base/Dockerfile.j2 (limited to 'kolla/docker/openstack-base') diff --git a/kolla/docker/openstack-base/Dockerfile.j2 b/kolla/docker/openstack-base/Dockerfile.j2 new file mode 100644 index 000000000..b8ed2e465 --- /dev/null +++ b/kolla/docker/openstack-base/Dockerfile.j2 @@ -0,0 +1,213 @@ +FROM {{ namespace }}/{{ image_prefix }}base:{{ tag }} +{% block labels %} +LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" +{% endblock %} + +{% block openstack_base_header %}{% endblock %} + +{% import "macros.j2" as macros with context %} + +{% if base_package_type == 'rpm' %} + +{{ macros.enable_extra_repos(['crb', 'epel']) }} + + {% set openstack_base_packages = [ + 'gcc', + 'gcc-c++', + 'git', + 'httpd', + 'iproute', + 'libffi-devel', + 'libxml2-devel', + 'libxslt-devel', + 'libyaml-devel', + 'make', + 'mod_ssl', + 'openssl', + 'openssl-devel', + 'pcre2-devel', + 'postgresql', + 'postgresql-devel', + 'postgresql-server-devel', + 'python3-devel', + 'sqlite-devel', + 'uwsgi-plugin-python3', + 'zip' + ] %} + +{% elif base_package_type == 'deb' %} + {% set openstack_base_packages = [ + 'build-essential', + 'ca-certificates', + 'git', + 'libffi-dev', + 'libpcre2-dev', + 'libpq-dev', + 'libssl-dev', + 'libxml2-dev', + 'libxslt1-dev', + 'libyaml-dev', + 'libz-dev', + 'pkg-config', + 'python3-dev', + 'python3-venv', + 'uwsgi-plugin-python3', + 'zip' + ] %} + +{% endif %} + +{{ macros.install_packages(openstack_base_packages | customizable("packages")) }} + +{% set openstack_base_pip_packages = [ + 'Mako', + 'MarkupSafe', + 'Paste', + 'PasteDeploy', + 'PyNaCl', + 'PyYAML', + 'Routes', + 'SQLAlchemy', + 'Tempita', + 'WSME', + 'WebOb', + 'alembic', + 'amqp', + 'aodhclient', + 'appdirs', + 'automaton', + 'bcrypt', + 'cachetools', + 'castellan', + 'click', + 'cliff', + 'cmd2', + 'contextlib2', + 'cryptography', + 'debtcollector', + 'decorator', + 'eventlet', + 'fasteners', + 'fluent-logger', + 'funcsigs', + 'futurist', + 'gnocchiclient', + 'greenlet', + 'httplib2', + 'iso8601', + 'jinja2', + 'jsonpatch', + 'jsonpointer', + 'jsonschema', + 'keystoneauth1', + 'keystonemiddleware', + 'kombu', + 'logutils', + 'monotonic', + 'netaddr', + 'netifaces', + 'os-brick', + 'os-client-config', + 'os-traits', + 'os-win', + 'oslo.concurrency', + 'oslo.config', + 'oslo.context', + 'oslo.db', + 'oslo.i18n', + 'oslo.log', + 'oslo.messaging', + 'oslo.middleware', + 'oslo.policy', + 'oslo.privsep', + 'oslo.reports', + 'oslo.rootwrap', + 'oslo.serialization', + 'oslo.service', + 'oslo.upgradecheck', + 'oslo.utils', + 'oslo.versionedobjects', + 'oslo.vmware', + 'osprofiler', + 'paramiko', + 'pbr', + 'pecan', + 'pika', + 'prettytable', + 'psutil', + 'pycadf', + 'pymysql', + 'pyngus', + 'pyparsing', + 'pyroute2', + 'python-barbicanclient', + 'python-binary-memcached', + 'python-cinderclient', + 'python-cloudkittyclient', + 'python-dateutil', + 'python-designateclient', + 'python-editor', + 'python-glanceclient', + 'python-heatclient', + 'python-ironicclient', + 'python-keystoneclient', + 'python-magnumclient', + 'python-manilaclient', + 'python-memcached', + 'python-mistralclient', + 'python-neutronclient', + 'python-novaclient', + 'python-openstackclient', + 'python-qpid-proton', + 'python-swiftclient', + 'python-troveclient', + 'pytz', + 'repoze.lru', + 'requests', + 'requestsexceptions', + 'retrying', + 'setproctitle', + 'simplegeneric', + 'simplejson', + 'six', + 'sqlparse', + 'stevedore', + 'tooz[consul,etcd,etcd3gw,redis,postgresql,mysql,zookeeper,memcached,ipc]', + 'unicodecsv', + 'uwsgi', + 'warlock', + 'wrapt' + ] +%} + +ADD openstack-base-archive /openstack-base-source +ADD plugins-archive / + +RUN ln -s openstack-base-source/* /requirements \ + +{# NOTE(mnasiadka): Remove ovs from upper-constraints.txt because python3-openvswitch + is usually newer than UC entry and older version would get installed + in venv (see https://launchpad.net/bugs/1961874). +#} + && {{ macros.upper_constraints_remove("ovs") }} \ + && mkdir -p /var/lib/kolla \ + && python3 -m venv --system-site-packages /var/lib/kolla/venv \ + && KOLLA_DISTRO_PYTHON_VERSION=$(/usr/bin/python3 -c "import sys; print('{}.{}'.format(sys.version_info.major, sys.version_info.minor))") \ + && ln -s python${KOLLA_DISTRO_PYTHON_VERSION} /var/lib/kolla/venv/lib/python3 + +{# Block used for overriding global version constraints. + + Overriding the package version using upper_constraints_remove(package_name) or + upper_constraints_version_change(package_name, from, to) at this location will + apply to all services. +#} +{% block openstack_base_override_upper_constraints %}{% endblock %} + +ENV PATH /var/lib/kolla/venv/bin:$PATH + +RUN {{ macros.install_pip(['pip', 'wheel', 'setuptools']) }} \ + && {{ macros.install_pip(openstack_base_pip_packages | customizable("pip_packages")) }} + +{{ macros.kolla_patch_sources() }} + +{% block openstack_base_footer %}{% endblock %} -- cgit v1.2.3