IF YOU WOULD LIKE TO GET AN ACCOUNT, please write an
email to Administrator. User accounts are meant only to access repo
and report issues and/or generate pull requests.
This is a purpose-specific Git hosting for
BaseALT
projects. Thank you for your understanding!
Только зарегистрированные пользователи имеют доступ к сервису!
Для получения аккаунта, обратитесь к администратору.
There a lot happening here, but that's because otherwise lcitool
fails to regenerate files. Firstly, CentOS 8 is dropped as it's
unsupported now. Secondly, Fedora 40 is introduced and Fedora 38
is dropped. And lastly, Ubuntu 24.04 is introduced and Ubuntu
20.04 is dropped.
Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
The change to use 'python -m build' in
commit 333c8bef2b
Author: Erik Skultety <eskultet@redhat.com>
Date: Tue Jun 20 12:19:40 2023 +0200
ci: Drop direct 'setup.py' usage
resulted in the CI jobs all downloading latest setuptools and
deps from pypi and running builds with them in a venv. IOW we
ceased testing against the setuptools/wheel packages provided
by the distro, which is the whole point of the CI.
Passing the '-n -x' flags to 'python -m build' tells it to stop
using a venv and not to check dependancies, thus letting it
use what we pre-installed in the container.
This doesn't work on CentOS Stream 8, however, so we revert to
using the old setup.py approach. This is a short term issue,
since Stream 8 is EOL at the end of May, so we'll be deleting
all the Stream 8 jobs across libvirt CI very soon.
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
Currently, there's just one native_git_build_job -
x86_64-centos-stream-8-git and this is a problem because that's
the job that api_coverage_job then uses. But CentOS Stream 8 has
too old lxml which then makes tests/test_api_coverage.py skip its
run. By switching to CentOS Stream 9 the test can run happily
again.
Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Distros recently started to object to using 'pip' to install system-wide
packages to prevent breakage. We were hacking-around that by using
'pip install --break-system-packages', but it's straightforward to
simply create a venv with '--system-site-packages' and install it there.
Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Setting CFLAGS before invoking rpm-build causes replacement of the
CFLAGS that RPM wants to set for python. This causes the loss of
certain flags needed to turn on debug output and optimization.
Previously this wasn't a problem as something in setuptools appears
to have been adding -g anyway, but with the update to python 3.12
this now fully breaks. We should never have been setting CFLAGS
during the RPM build so we drop it unconditionally for all distros.
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
With all the bits in place we can now drop the 'setup.py' invocations
with preferred alternatives.
This patch does a few things:
- we don't run plain install because that always spins up a new build
process regardless of whether there are build artifacts literally from
the previous command, so instead we install the built wheel directly
- when building, we build both the .whl binary and an sdist because
we'll need the sdist for rpmbuild later in the CI job
- we don't capture the 'build' path as a job artifact anymore, because
that now only contains egg metadata, all the build artifacts are
created by Python's build module under 'dist' so we capture that one
instead
- we always limit pytest to the 'tests' directory which was something
'setup.py test' used to do as a precaution measure, but setup.py no
longer has the logic (which is fine)
Signed-off-by: Erik Skultety <eskultet@redhat.com>
Debian Sid python packages block users from installing packages using
pip unless using a venv. A venv has no benefit when we are running in
a throwaway container which has no need for software upgrades.
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
Expose the artifacts from the centos-stream-8/9 and fedora 35/36 jobs so
that the main libvirt integration testing project can consume them.
The new libvirt sub-rpm containing a python helper to access QMP
directly requires python environment which we didn't yet install in the
integration job.
Signed-off-by: Peter Krempa <pkrempa@redhat.com>
The 'extends' stanza supports a list, however there's a merge algorithm
in place where a subsequent list entry overwrites all conflicting
settings from the previous one - which is exactly what happened here as
the gitlab-build-{local,prebuilt}-env job template overwrote
api-coverage's stage to 'builds' whereas the original was
'sanity_checks'.
Fixes: 4733e2a2d1
Signed-off-by: Erik Skultety <eskultet@redhat.com>
This refresh switches the CI for contributors to be triggered by merge
requests. Pushing to a branch in a fork will no longer run CI pipelines,
in order to avoid consuming CI minutes. To regain the original behaviour
contributors can opt-in to a pipeline on push
git push <remote> -o ci.variable=RUN_PIPELINE=1
This variable can also be set globally on the repository, though this is
not recommended. Upstream repo pushes to branches will run CI.
The use of containers has changed in this update, with only the upstream
repo creating containers, in order to avoid consuming contributors'
limited storage quotas. A fork with existing container images may delete
them. Containers will be rebuilt upstream when pushing commits with CI
changes to the default branch. Any other scenario with CI changes will
simply install build pre-requisite packages in a throaway environment,
using the ci/buildenv/ scripts. These scripts may also be used on a
contributor's local machines.
With pipelines triggered by merge requests, it is also now possible to
workaround the inability of contributors to run pipelines if they have
run out of CI quota. A project member can trigger a pipeline from the
merge request, which will run in context of upstream, however, note
this should only be done after reviewing the code for any malicious
CI changes.
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
The distutils/setuptools 'install' command is deprecated in favour of
'pip', and with recent versiosn, using it will create a bad install
that triggers a traceback on all future use of setuptools:
Traceback (most recent call last):
File "/builds/berrange/libvirt-python/setup.py", line 328, in <module>
setup(name = 'libvirt-python',
File "/usr/lib/python3.10/site-packages/setuptools/__init__.py", line 154, in setup
_install_setup_requires(attrs)
File "/usr/lib/python3.10/site-packages/setuptools/__init__.py", line 143, in _install_setup_requires
dist = MinimalDistribution(attrs)
File "/usr/lib/python3.10/site-packages/setuptools/__init__.py", line 135, in __init__
super().__init__(filtered)
File "/usr/lib/python3.10/site-packages/setuptools/dist.py", line 456, in __init__
for ep in metadata.entry_points(group='distutils.setup_keywords'):
File "/usr/lib64/python3.10/importlib/metadata/__init__.py", line 1009, in entry_points
return SelectableGroups.load(eps).select(**params)
File "/usr/lib64/python3.10/importlib/metadata/__init__.py", line 459, in load
ordered = sorted(eps, key=by_group)
File "/usr/lib64/python3.10/importlib/metadata/__init__.py", line 1006, in <genexpr>
eps = itertools.chain.from_iterable(
File "/usr/lib64/python3.10/importlib/metadata/_itertools.py", line 16, in unique_everseen
k = key(element)
File "/usr/lib64/python3.10/importlib/metadata/__init__.py", line 941, in _normalized_name
return self._name_from_stem(stem) or super()._normalized_name
File "/usr/lib64/python3.10/importlib/metadata/__init__.py", line 622, in _normalized_name
return Prepared.normalize(self.name)
File "/usr/lib64/python3.10/importlib/metadata/__init__.py", line 871, in normalize
return re.sub(r"[-_.]+", "-", name).lower().replace('-', '_')
File "/usr/lib64/python3.10/re.py", line 209, in sub
return _compile(pattern, flags).sub(repl, string, count)
This is certainly a bug in distutils/setuptools, but given the
'install' command is deprecated, instead of waiting for a fix,
just switch to the recommend 'pip install .' command.
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
This uses the command "lcitool manifest ci/manifest.yml" to re-generate
all existing dockerfiles and gitlab CI config.
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
The current docker:dind container has broken default seccomp filter that
results in clone3 being blocked, which in turn breaks Fedora 35 rawhide.
This custom image has a workaround that causes the seccomp filter to
return ENOSYS for clone3 instad of EPERM, thus triggering glibc to
fallback to clone correctly.
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
The sanity check scripts verify that the binding covers all APIs in the
libvirt library/headers being built against. This is primarily there for
libvirt maintainers to identify when there are gaps in API coverage.
This is not something downstream consumers of libvirt-python should be
running themselves, so we shouldn't added it to tests by default.
In addition if people are working on branches or submitting merge
requests for python changes, we shouldn't block their work for failed
API coverage sanity tests, if the python binding otherwise builds fine
and passes regular unit tests.
Thus, we introduce a new gitlab job "api-coverage" with some conditions:
- If pushing to a branch, the job is treated as non-fatal
- For regular scheduled builds, it is mandatory
- Don't run in any other scenarios
This job uses the artifacts from the centos-8-git-build job and re-runs
the test suite, requesting the sanity tests to be run too.
This will achieve the result of letting us see missing API coverage
in nightly builds, without blocking other contributions.
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
If the DCO check fails we still want the pipeline to fail, but
that doesn't mean there's no value in running the other jobs to
get a better picture.
Signed-off-by: Andrea Bolognani <abologna@redhat.com>
Libvirt changed from autotools to meson. All the containers need
refreshing and the CI recipes updated.
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
Instead of hardcoding the names of the targets for which certain
steps should be skipped, use a separate variable to store that
information.
Signed-off-by: Andrea Bolognani <abologna@redhat.com>
The python build needs to validate two axis
- A variety of libvirt versions
- A variety of python versions
We get coverage for both these axis by running a build against the
distro provided libvirt packages. All that is then missing is a build
against the latest libvirt git master, which only needs to be run on
a single distro, for which CentOS 8 is picked as a stable long life
base.
Reviewed-by: Andrea Bolognani <abologna@redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
This job uses the shared "check-dco" image to validate that all
commits on a branch in a developer's repo fork have a suitable
Signed-off-by statement present.
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>