Highlights from 2022-07-27 release

Updated client packages are shipped in Fedora 35, Fedora 36, EPEL 7, EPEL 8, and EPEL 9 Bodhi updates.

Undefine %dist for SRPM builds

The Dist Tag (e.g. .fc35) for built SRPM packages, was a frequent point of confusion for Copr users as it was reported on multiple occasions. For more info about the Copr build workflow see https://docs.pagure.org/copr.copr/_images/srpm-build.jpeg Basically, the build dist tag was inherited from the initial source RPM. Either uploaded by user, or built from remote sources on Copr builder in an isolated environment (e.g. Fedora 35 producing .fc35). But the initial source RPM dist tag had no informational value (a build may be submitted for many chroots, not just F35), and it eventually gets replaced by the target chroot dist-tag (e.g. el8 for EPEL 8 builds).

We decided to set %dist to %nil for the source builds to avoid this confusion. The reported NVR in UI and API will look like foo-1.1-2 instead of foo-1.1-2.fc35, while the final RPMs in chroot builds will still have appropriate dist tags.

Building from PyPI with pyp2spec generator

For a long time, it was possible to submit builds directly from PyPI. In such a case, pyp2rpm was used to generate a spec file from the python package definition. It is now possible to use pyp2spec instead (see #2203).

For example:

$ copr-cli buildpypi myproject \
    --packagename argparse-manpage \
    --spec-generator pyp2spec

Or you can create a package:

$ copr-cli add-package-pypi myproject \
    --name python-argparse-manpage \
    --packagename argparse-manpage \
    --spec-generator pyp2spec

$ copr-cli build-package myproject --name python-argparse-manpage -r $CHROOT

Submitting multiple builds at once via copr-cli

Previously, when multiple packages were passed to copr-cli, it submitted the first build and waited, then submitted the second build and waited, and so on. Now it submits all the builds right from the start to maximally parallelize them. Then we wait for all of them.

During this change, also the progress-bar logic in copr-cli was simplified.

Notable changes

  • The copr-dist-git doesn’t hold the downloaded files in the memory anymore to prevent SWAP issues when multiple large SRPMs are being imported concurrently.

  • When creating a project via copr-cli, its URL is printed

Bugfixes

  • #2243 - It is now possible to set runtime dependencies when using copr-cli create and copr-cli modify

  • #2228 - We don’t try to submit builds for Pagure pull requests into deleted projects

  • #1431 - Copr searches for the coms.xml in the chroot directory (instead of the repodata directory)

  • #2246 - The copr-cli works properly with Kerberos ticket and no ~/.config/copr

  • #2235 - Correct “Login invalid/expired” messages are now displayed when all attempts to send a request from copr-cli fail

  • #2253 - The GSSAPI dependency for Copr client packages is now optional, which simplifies their installation from PyPI

  • RHBZ 2108401 - It is now possible to build DistGit packages that do not use the sources file

  • Copr-specific macros such as %copr_username and %copr_projectname are defined also for custom builds and SCM builds using the make_srpm method

  • Runtime dependencies (extenal repositories) may be specified as a white-space separated set of URLs (including newlines, previously only a space separator worked)