Build separately for each supported series and use binary builds
Charms for OpenStack Yoga supports both Ubuntu Focal and Jammy which means Python 3.8 and Python 3.10. Managing dependencies across those two versions is non-trivial and we need to build the charm on the series the charm is supposed to support. Switch to using a binary build which allows pip's dependency resolution to work. This patch also drops the impish bundle and drops test-requirements for < py36. Change-Id: Id45f535b33c5dea1e68da46440900afc0f47fb5e
This commit is contained in:
parent
546547c4fc
commit
256f83013c
4
bindep.txt
Normal file
4
bindep.txt
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
libffi-dev [platform:dpkg]
|
||||||
|
libpq-dev [platform:dpkg]
|
||||||
|
libxml2-dev [platform:dpkg]
|
||||||
|
libxslt1-dev [platform:dpkg]
|
@ -7,28 +7,51 @@ parts:
|
|||||||
- git
|
- git
|
||||||
- python3-dev
|
- python3-dev
|
||||||
- libffi-dev
|
- libffi-dev
|
||||||
|
- libssl-dev
|
||||||
|
- rustc
|
||||||
|
- cargo
|
||||||
|
build-environment:
|
||||||
|
- CHARM_INTERFACES_DIR: /root/project/interfaces/
|
||||||
|
- CHARM_LAYERS_DIR: /root/project/layers/
|
||||||
|
- MAKEFLAGS: -j$(nproc)
|
||||||
override-build: |
|
override-build: |
|
||||||
apt-get install ca-certificates -y
|
apt-get install ca-certificates -y
|
||||||
tox -e build-reactive
|
tox -e build-reactive
|
||||||
override-stage: |
|
override-stage: |
|
||||||
echo "Copying charm to staging area: $CHARMCRAFT_STAGE"
|
echo "Copying charm to staging area: $CRAFT_STAGE"
|
||||||
NAME=$(ls $CHARMCRAFT_PART_BUILD/build/builds)
|
NAME=$(ls $CRAFT_PART_BUILD/build/builds)
|
||||||
cp -r $CHARMCRAFT_PART_BUILD/build/builds/$NAME/* $CHARMCRAFT_STAGE/
|
cp -r $CRAFT_PART_BUILD/build/builds/$NAME/* $CRAFT_STAGE/
|
||||||
override-prime: |
|
override-prime: |
|
||||||
# For some reason, the normal priming chokes on the fact that there's a
|
# For some reason, the normal priming chokes on the fact that there's a
|
||||||
# hooks directory.
|
# hooks directory.
|
||||||
cp -r $CHARMCRAFT_STAGE/* .
|
cp -r $CRAFT_STAGE/* .
|
||||||
|
# Charmcraft looks for this specific entry point.
|
||||||
|
mkdir -p src
|
||||||
|
touch src/charm.py
|
||||||
|
chmod +x src/charm.py
|
||||||
|
|
||||||
bases:
|
bases:
|
||||||
- build-on:
|
|
||||||
- name: ubuntu
|
- name: ubuntu
|
||||||
channel: "20.04"
|
channel: "20.04"
|
||||||
architectures:
|
architectures: [amd64]
|
||||||
- amd64
|
|
||||||
run-on:
|
|
||||||
- name: ubuntu
|
- name: ubuntu
|
||||||
channel: "20.04"
|
channel: "20.04"
|
||||||
architectures: [amd64, s390x, ppc64el, arm64]
|
architectures: [arm64]
|
||||||
|
- name: ubuntu
|
||||||
|
channel: "20.04"
|
||||||
|
architectures: [ppc64el]
|
||||||
|
- name: ubuntu
|
||||||
|
channel: "20.04"
|
||||||
|
architectures: [s390x]
|
||||||
- name: ubuntu
|
- name: ubuntu
|
||||||
channel: "22.04"
|
channel: "22.04"
|
||||||
architectures: [amd64, s390x, ppc64el, arm64]
|
architectures: [amd64]
|
||||||
|
- name: ubuntu
|
||||||
|
channel: "22.04"
|
||||||
|
architectures: [arm64]
|
||||||
|
- name: ubuntu
|
||||||
|
channel: "22.04"
|
||||||
|
architectures: [ppc64el]
|
||||||
|
- name: ubuntu
|
||||||
|
channel: "22.04"
|
||||||
|
architectures: [s390x]
|
||||||
|
@ -8,3 +8,4 @@
|
|||||||
needs_charm_build: true
|
needs_charm_build: true
|
||||||
charm_build_name: ironic-conductor
|
charm_build_name: ironic-conductor
|
||||||
build_type: charmcraft
|
build_type: charmcraft
|
||||||
|
charmcraft_channel: 2.0/stable
|
||||||
|
@ -3,17 +3,6 @@
|
|||||||
# choices of *requirements.txt files for OpenStack Charms:
|
# choices of *requirements.txt files for OpenStack Charms:
|
||||||
# https://github.com/openstack-charmers/release-tools
|
# https://github.com/openstack-charmers/release-tools
|
||||||
#
|
#
|
||||||
# NOTE(lourot): This might look like a duplication of test-requirements.txt but
|
|
||||||
# some tox targets use only test-requirements.txt whereas charm-build uses only
|
|
||||||
# requirements.txt
|
|
||||||
setuptools<50.0.0 # https://github.com/pypa/setuptools/commit/04e3df22df840c6bb244e9b27bc56750c44b7c85
|
|
||||||
|
|
||||||
# NOTE: newer versions of cryptography require a Rust compiler to build,
|
|
||||||
# see
|
|
||||||
# * https://github.com/openstack-charmers/zaza/issues/421
|
|
||||||
# * https://mail.python.org/pipermail/cryptography-dev/2021-January/001003.html
|
|
||||||
#
|
|
||||||
cryptography<3.4
|
|
||||||
|
|
||||||
# Build requirements
|
# Build requirements
|
||||||
cffi==1.14.6; python_version < '3.6' # cffi 1.15.0 drops support for py35.
|
cffi==1.14.6; python_version < '3.6' # cffi 1.15.0 drops support for py35.
|
||||||
|
@ -284,7 +284,7 @@ services:
|
|||||||
openstack-origin: *source
|
openstack-origin: *source
|
||||||
channel: latest/edge
|
channel: latest/edge
|
||||||
ironic-conductor:
|
ironic-conductor:
|
||||||
charm: ../../../ironic-conductor.charm
|
charm: ../../../ironic-conductor_ubuntu-20.04-amd64.charm
|
||||||
num_units: 1
|
num_units: 1
|
||||||
constraints: mem=2G
|
constraints: mem=2G
|
||||||
options:
|
options:
|
||||||
|
@ -283,7 +283,7 @@ services:
|
|||||||
openstack-origin: *source
|
openstack-origin: *source
|
||||||
channel: latest/edge
|
channel: latest/edge
|
||||||
ironic-conductor:
|
ironic-conductor:
|
||||||
charm: ../../../ironic-conductor.charm
|
charm: ../../../ironic-conductor_ubuntu-20.04-amd64.charm
|
||||||
num_units: 1
|
num_units: 1
|
||||||
constraints: mem=2G
|
constraints: mem=2G
|
||||||
options:
|
options:
|
||||||
|
@ -283,7 +283,7 @@ services:
|
|||||||
openstack-origin: *source
|
openstack-origin: *source
|
||||||
channel: latest/edge
|
channel: latest/edge
|
||||||
ironic-conductor:
|
ironic-conductor:
|
||||||
charm: ../../../ironic-conductor.charm
|
charm: ../../../ironic-conductor_ubuntu-22.04-amd64.charm
|
||||||
num_units: 1
|
num_units: 1
|
||||||
constraints: mem=2G
|
constraints: mem=2G
|
||||||
options:
|
options:
|
||||||
|
@ -5,7 +5,6 @@ charm_name: ironic-api
|
|||||||
|
|
||||||
gate_bundles:
|
gate_bundles:
|
||||||
- focal-xena
|
- focal-xena
|
||||||
- impish-xena
|
|
||||||
|
|
||||||
dev_bundles:
|
dev_bundles:
|
||||||
- focal-yoga
|
- focal-yoga
|
||||||
@ -39,5 +38,4 @@ tests:
|
|||||||
|
|
||||||
tests_options:
|
tests_options:
|
||||||
force_deploy:
|
force_deploy:
|
||||||
- impish-xena
|
|
||||||
- jammy-yoga
|
- jammy-yoga
|
||||||
|
@ -4,7 +4,6 @@
|
|||||||
# https://github.com/openstack-charmers/release-tools
|
# https://github.com/openstack-charmers/release-tools
|
||||||
#
|
#
|
||||||
pyparsing<3.0.0 # aodhclient is pinned in zaza and needs pyparsing < 3.0.0, but cffi also needs it, so pin here.
|
pyparsing<3.0.0 # aodhclient is pinned in zaza and needs pyparsing < 3.0.0, but cffi also needs it, so pin here.
|
||||||
cffi==1.14.6; python_version < '3.6' # cffi 1.15.0 drops support for py35.
|
|
||||||
setuptools<50.0.0 # https://github.com/pypa/setuptools/commit/04e3df22df840c6bb244e9b27bc56750c44b7c85
|
setuptools<50.0.0 # https://github.com/pypa/setuptools/commit/04e3df22df840c6bb244e9b27bc56750c44b7c85
|
||||||
|
|
||||||
stestr>=2.2.0
|
stestr>=2.2.0
|
||||||
@ -13,25 +12,10 @@ stestr>=2.2.0
|
|||||||
# https://github.com/mtreinish/stestr/issues/145
|
# https://github.com/mtreinish/stestr/issues/145
|
||||||
cliff<3.0.0
|
cliff<3.0.0
|
||||||
|
|
||||||
# Dependencies of stestr. Newer versions use keywords that didn't exist in
|
|
||||||
# python 3.5 yet (e.g. "ModuleNotFoundError")
|
|
||||||
importlib-metadata<3.0.0; python_version < '3.6'
|
|
||||||
importlib-resources<3.0.0; python_version < '3.6'
|
|
||||||
|
|
||||||
# Some Zuul nodes sometimes pull newer versions of these dependencies which
|
|
||||||
# dropped support for python 3.5:
|
|
||||||
osprofiler<2.7.0;python_version<'3.6'
|
|
||||||
stevedore<1.31.0;python_version<'3.6'
|
|
||||||
debtcollector<1.22.0;python_version<'3.6'
|
|
||||||
oslo.utils<=3.41.0;python_version<'3.6'
|
|
||||||
|
|
||||||
requests>=2.18.4
|
requests>=2.18.4
|
||||||
charms.reactive
|
charms.reactive
|
||||||
|
|
||||||
# Newer mock seems to have some syntax which is newer than python3.5 (e.g.
|
mock>=1.2
|
||||||
# f'{something}'
|
|
||||||
mock>=1.2,<4.0.0; python_version < '3.6'
|
|
||||||
mock>=1.2; python_version >= '3.6'
|
|
||||||
|
|
||||||
nose>=1.3.7
|
nose>=1.3.7
|
||||||
coverage>=3.6
|
coverage>=3.6
|
||||||
|
20
tox.ini
20
tox.ini
@ -11,18 +11,6 @@ envlist = pep8,py3
|
|||||||
sitepackages = False
|
sitepackages = False
|
||||||
# NOTE: Avoid false positives by not skipping missing interpreters.
|
# NOTE: Avoid false positives by not skipping missing interpreters.
|
||||||
skip_missing_interpreters = False
|
skip_missing_interpreters = False
|
||||||
# NOTES:
|
|
||||||
# * We avoid the new dependency resolver by pinning pip < 20.3, see
|
|
||||||
# https://github.com/pypa/pip/issues/9187
|
|
||||||
# * Pinning dependencies requires tox >= 3.2.0, see
|
|
||||||
# https://tox.readthedocs.io/en/latest/config.html#conf-requires
|
|
||||||
# * It is also necessary to pin virtualenv as a newer virtualenv would still
|
|
||||||
# lead to fetching the latest pip in the func* tox targets, see
|
|
||||||
# https://stackoverflow.com/a/38133283
|
|
||||||
requires =
|
|
||||||
pip < 20.3
|
|
||||||
virtualenv < 20.0
|
|
||||||
setuptools<50.0.0
|
|
||||||
|
|
||||||
# NOTE: https://wiki.canonical.com/engineering/OpenStack/InstallLatestToxOnOsci
|
# NOTE: https://wiki.canonical.com/engineering/OpenStack/InstallLatestToxOnOsci
|
||||||
minversion = 3.18.0
|
minversion = 3.18.0
|
||||||
@ -41,7 +29,6 @@ allowlist_externals =
|
|||||||
charmcraft
|
charmcraft
|
||||||
bash
|
bash
|
||||||
tox
|
tox
|
||||||
rename.sh
|
|
||||||
deps =
|
deps =
|
||||||
-r{toxinidir}/requirements.txt
|
-r{toxinidir}/requirements.txt
|
||||||
|
|
||||||
@ -50,13 +37,12 @@ basepython = python3
|
|||||||
deps = -r{toxinidir}/build-requirements.txt
|
deps = -r{toxinidir}/build-requirements.txt
|
||||||
commands =
|
commands =
|
||||||
charmcraft clean
|
charmcraft clean
|
||||||
charmcraft -v build
|
charmcraft -v pack
|
||||||
{toxinidir}/rename.sh
|
|
||||||
|
|
||||||
[testenv:build-reactive]
|
[testenv:build-reactive]
|
||||||
basepython = python3
|
basepython = python3
|
||||||
commands =
|
commands =
|
||||||
charm-build --log-level DEBUG --use-lock-file-branches -o {toxinidir}/build/builds src {posargs}
|
charm-build --log-level DEBUG --use-lock-file-branches --binary-wheels-from-source -o {toxinidir}/build/builds src {posargs}
|
||||||
|
|
||||||
[testenv:add-build-lock-file]
|
[testenv:add-build-lock-file]
|
||||||
basepython = python3
|
basepython = python3
|
||||||
@ -91,7 +77,7 @@ commands = stestr run --slowest {posargs}
|
|||||||
[testenv:pep8]
|
[testenv:pep8]
|
||||||
basepython = python3
|
basepython = python3
|
||||||
deps = flake8==3.9.2
|
deps = flake8==3.9.2
|
||||||
charm-tools==2.8.3
|
git+https://github.com/juju/charm-tools.git
|
||||||
commands = flake8 {posargs} src unit_tests
|
commands = flake8 {posargs} src unit_tests
|
||||||
|
|
||||||
[testenv:func-target]
|
[testenv:func-target]
|
||||||
|
Loading…
Reference in New Issue
Block a user