Compare commits

..

123 commits

Author SHA1 Message Date
Packit
ab91e7858a Update to 5.7.1 upstream release
Upstream tag: v5.7.1
Upstream commit: f845d14e

Commit authored by Packit automation (https://packit.dev/)
2025-12-10 16:39:43 +00:00
Packit
881f2a0de0 Update to 5.7.0 upstream release
Upstream tag: v5.7.0
Upstream commit: 0370128f

Commit authored by Packit automation (https://packit.dev/)
2025-11-11 19:04:56 +00:00
Packit
b84b597c89 Update to 5.7.0-rc2 upstream release
Upstream tag: v5.7.0-rc2
Upstream commit: fa892f1d

Commit authored by Packit automation (https://packit.dev/)
2025-10-30 14:36:25 +00:00
Lokesh Mandvekar
1919b5a958
bump to v5.7.0-rc1 2025-10-28 08:50:07 -04:00
Maxwell G
ed2e1e69f9 Rebuild for golang 1.25.2 2025-10-10 11:11:11 -05:00
Packit
af62b0af36 Update to 5.6.2 upstream release
Upstream tag: v5.6.2
Upstream commit: 9dd5e1ed

Commit authored by Packit automation (https://packit.dev/)
2025-09-30 19:44:12 +00:00
Packit
427484e864 Update to 5.6.1 upstream release
Upstream tag: v5.6.1
Upstream commit: 1e2b2315

Commit authored by Packit automation (https://packit.dev/)
2025-09-04 20:57:37 +00:00
Maxwell G
d4e2b6bddd Rebuild for golang-1.25.0 2025-08-15 18:35:10 -05:00
Packit
8d00804a67 Update to 5.6.0 upstream release
Upstream tag: v5.6.0
Upstream commit: da671ef6

Commit authored by Packit automation (https://packit.dev/)
2025-08-15 16:01:56 +00:00
Packit
432485b9af Update to 5.6.0-rc2 upstream release
Upstream tag: v5.6.0-rc2
Upstream commit: ec0652f4

Commit authored by Packit automation (https://packit.dev/)
2025-08-08 17:29:42 +00:00
Packit
b972298be7 Update to 5.6.0-rc1 upstream release
Upstream tag: v5.6.0-rc1
Upstream commit: a3a6d9cc

Commit authored by Packit automation (https://packit.dev/)
2025-07-25 19:03:28 +00:00
Fedora Release Engineering
14d6a7ae7b Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild 2025-07-25 05:59:27 +00:00
Packit
ff3eab78dc Update to 5.5.2 upstream release
Upstream tag: v5.5.2
Upstream commit: e7d82267

Commit authored by Packit automation (https://packit.dev/)
2025-06-24 17:25:45 +00:00
Packit
3742f311a9 Update to 5.5.1 upstream release
Upstream tag: v5.5.1
Upstream commit: 850db76d

Commit authored by Packit automation (https://packit.dev/)
2025-06-05 21:57:23 +00:00
Packit
6988f89e72 Update to 5.5.0 upstream release
Upstream tag: v5.5.0
Upstream commit: 0dbcb514

Commit authored by Packit automation (https://packit.dev/)
2025-05-14 15:51:54 +00:00
Lokesh Mandvekar
9d09cecc7b
TMT: system tests: Load null_blk kernel module to have /dev/nullb0
This also depends on patches in https://github.com/containers/podman/pull/26022
which will be present in final v5.5.0.

Signed-off-by: Lokesh Mandvekar <lsm5@fedoraproject.org>
2025-05-02 20:22:58 +05:30
Lokesh Mandvekar
cfd03ba656
fix setup to test tmt itself
do not enable on CentOS-Stream-10 and RHEL-10 as TMT is not yet present
on EPEL10.

Signed-off-by: Lokesh Mandvekar <lsm5@fedoraproject.org>
2025-05-02 16:30:21 +05:30
Lokesh Mandvekar
16af8ff967
cleanup: no plugins binaries built in rpm
Signed-off-by: Lokesh Mandvekar <lsm5@fedoraproject.org>
2025-05-02 16:23:47 +05:30
Lokesh Mandvekar
c65ae60225
TMT: fix hardware provisioning for toolbox test
Only enable toolbox tests on fedora bodhi updates.

Signed-off-by: Lokesh Mandvekar <lsm5@fedoraproject.org>
2025-05-02 16:22:59 +05:30
Packit
96a0e2f439 Update to 5.5.0-rc2 upstream release
Upstream tag: v5.5.0-rc2
Upstream commit: 3c4cf521

Commit authored by Packit automation (https://packit.dev/)
2025-05-01 12:40:01 +00:00
Packit
0a4fcce7a8 Update to 5.5.0-rc1 upstream release
Upstream tag: v5.5.0-rc1
Upstream commit: 6a597e0e

Commit authored by Packit automation (https://packit.dev/)
2025-04-24 17:01:03 +00:00
Packit
1127f92dc8 Update to 5.4.2 upstream release
Upstream tag: v5.4.2
Upstream commit: be85287f

Commit authored by Packit automation (https://packit.dev/)
2025-04-02 16:30:28 +00:00
Packit
357520e360 Update to 5.4.1 upstream release
Upstream tag: v5.4.1
Upstream commit: b79bc8af

Commit authored by Packit automation (https://packit.dev/)
2025-03-11 18:38:49 +00:00
Packit
1b7f37d3d5 Update to 5.4.0 upstream release
Upstream tag: v5.4.0
Upstream commit: f9f7d48b

Commit authored by Packit automation (https://packit.dev/)
2025-02-11 18:27:23 +00:00
Packit
30326849d8 Update to 5.4.0-rc3 upstream release
Upstream tag: v5.4.0-rc3
Upstream commit: ad54787b

Commit authored by Packit automation (https://packit.dev/)
2025-02-05 19:03:28 +00:00
Lokesh Mandvekar
3713b0f068
TMT: initial enablement
Remove STI test triggers in favor of TMT.

The upstream TMT enablement PR is at https://github.com/containers/podman/pull/24369 .
The Fedora PR can be merged independently of upstream so we can get rid
of STI asap.

Toolbox tests are fetched from its own dist-git.

Signed-off-by: Lokesh Mandvekar <lsm5@fedoraproject.org>
2025-02-04 16:25:42 +05:30
Packit
3a51c052c8 Update to 5.4.0-rc2 upstream release
Upstream tag: v5.4.0-rc2
Upstream commit: 14f6a69d

Commit authored by Packit automation (https://packit.dev/)
2025-01-30 13:35:33 +00:00
Packit
17ae2ac263 Update to 5.3.2 upstream release
Upstream tag: v5.3.2
Upstream commit: 85043bb1

Commit authored by Packit automation (https://packit.dev/)
2025-01-22 13:39:33 +00:00
Lokesh Mandvekar
4045fdac88 remove patch merged in upcoming upstream release
Signed-off-by: Lokesh Mandvekar <lsm5@fedoraproject.org>
2025-01-22 13:35:04 +00:00
Fedora Release Engineering
935369422c Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild 2025-01-18 10:29:23 +00:00
Mikhail Gavrilov
6889e09310 apply MR https://github.com/containers/storage/pull/2193 2025-01-09 05:52:53 +05:00
Lokesh Mandvekar
89aed9941f
remove unused patch
Signed-off-by: Lokesh Mandvekar <lsm5@fedoraproject.org>
2024-11-27 20:48:48 +05:30
Packit
bedd327f6d Update to 5.3.1 upstream release
Upstream tag: v5.3.1
Upstream commit: 4cbdfde5

Commit authored by Packit automation (https://packit.dev/)
2024-11-21 15:42:16 +00:00
Packit
dc0e6a1b2e Update to 5.3.0 upstream release
Upstream tag: v5.3.0
Upstream commit: 874bf2c3

Commit authored by Packit automation (https://packit.dev/)
2024-11-13 13:17:16 +00:00
Packit
12291ee7a7 Update to 5.3.0-rc3 upstream release
Upstream tag: v5.3.0-rc3
Upstream commit: 8469dcc4

Commit authored by Packit automation (https://packit.dev/)
2024-11-06 19:17:42 +00:00
Packit
3565da350c Update to 5.3.0-rc2 upstream release
Upstream tag: v5.3.0-rc2
Upstream commit: ffad01fb

Commit authored by Packit automation (https://packit.dev/)
2024-10-31 13:55:03 +00:00
Packit
e7af4c8ac5 Update to 5.3.0-rc1 upstream release
Upstream tag: v5.3.0-rc1
Upstream commit: d306e801

Commit authored by Packit automation (https://packit.dev/)
2024-10-22 15:58:40 +00:00
Lokesh Mandvekar
5f0570428b
bump to v5.2.5
Fixes: #2317464 - Security fix for CVE-2024-9675
Fixes: #2319019 - Security fix for CVE-2024-9676
Fixes: #2318511 - Security fix for CVE-2024-9341

Signed-off-by: Lokesh Mandvekar <lsm5@fedoraproject.org>
2024-10-18 23:10:27 +05:30
Lokesh Mandvekar
7d7eeff1c6
c/common pr 2194 2024-10-15 13:21:58 +05:30
Packit
2ea42c0f0b Update to 5.2.4 upstream release
Upstream tag: v5.2.4
Upstream commit: 76d0859d

Commit authored by Packit automation (https://packit.dev/)
2024-10-07 16:05:36 +00:00
Lokesh Mandvekar
9ee0404bb8
rebuild 2024-09-26 16:06:59 +05:30
Packit
25c5d04553 Update to 5.2.3 upstream release
Upstream tag: v5.2.3
Upstream commit: c5366a30

Commit authored by Packit automation (https://packit.dev/)
2024-09-24 15:20:02 +00:00
Lokesh Mandvekar
4a3c9f78bf
rebuild for shadow-utils bump
Signed-off-by: Lokesh Mandvekar <lsm5@fedoraproject.org>
2024-08-28 20:35:02 +05:30
Packit
38b9ee99ea Update to 5.2.2 upstream release
Upstream tag: v5.2.2
Upstream commit: fcee4810

Commit authored by Packit automation (https://packit.dev/)
2024-08-21 20:00:56 +00:00
Packit
a799555f38 Update to 5.2.1 upstream release
Upstream tag: v5.2.1
Upstream commit: d0582c9e

Commit authored by Packit automation (https://packit.dev/)
2024-08-14 18:08:17 +00:00
Packit
bc8af09bfe Update to 5.2.0 upstream release
Upstream tag: v5.2.0
Upstream commit: b22d5c61

Commit authored by Packit automation (https://packit.dev/)
2024-08-02 12:06:33 +00:00
Lokesh Mandvekar
44c5587573
check buildah and skopeo version in tests 2024-08-01 10:41:34 -04:00
Packit
b838253d9b Update to 5.2.0-rc2 upstream release
Upstream tag: v5.2.0-rc2
Upstream commit: 716874f4

Commit authored by Packit automation (https://packit.dev/)
2024-07-23 12:03:33 +00:00
Packit
39c52acc0c Update to 5.2.0-rc1 upstream release
Upstream tag: v5.2.0-rc1
Upstream commit: 973e8654

Commit authored by Packit automation (https://packit.dev/)
2024-07-17 12:33:41 +00:00
Lokesh Mandvekar
f605ca3f0c
fix podman-testing binary 2024-07-17 08:29:58 -04:00
Lokesh Mandvekar
1ed846a4ae
Add PODMAN_TESTING var 2024-07-16 13:40:34 -04:00
Packit
8cbff11717 Update to 5.1.2 upstream release
Upstream tag: v5.1.2
Upstream commit: 94a24974

Commit authored by Packit automation (https://packit.dev/)
2024-07-10 14:57:31 +00:00
Packit
a9f99ac984 Update to 5.1.1 upstream release
Upstream tag: v5.1.1
Upstream commit: bda6eb03

Commit authored by Packit automation (https://packit.dev/)
2024-06-04 21:14:33 +00:00
Packit
5804eb7d29 Update to 5.1.0 upstream release
Upstream tag: v5.1.0
Upstream commit: 4e9486db

Commit authored by Packit automation (https://packit.dev/)
2024-05-29 20:25:53 +00:00
Packit
1be277eb53 Update to 5.1.0-rc1 upstream release
Upstream tag: v5.1.0-rc1
Upstream commit: 6a8f2e7f

Commit authored by Packit automation (https://packit.dev/)
2024-05-15 21:34:22 +00:00
Packit
2a0a1fc671 Update to 5.0.3 upstream release
Upstream tag: v5.0.3
Upstream commit: d08315df

Commit authored by Packit automation (https://packit.dev/)
2024-05-10 17:58:47 +00:00
Packit
af8c62e09e Update to 5.0.2 upstream release
Upstream tag: v5.0.2
Upstream commit: 3304dd95

Commit authored by Packit automation (https://packit.dev/)
2024-04-17 19:15:35 +00:00
Packit
8d795004db [packit] 5.0.1 upstream release
Upstream tag: v5.0.1
Upstream commit: 946d055d
2024-04-01 14:06:02 +00:00
Ed Santiago
9667d0f5b5 Podman tests: force-install slirp4netns
As of podman 5.0, slirp4 is no longer an RPM Requirement. It
is not deprecated, though, so we should continue to test it.

Signed-off-by: Ed Santiago <santiago@redhat.com>
2024-03-26 09:31:14 -06:00
Packit
83525ea543 [packit] 5.0.0 upstream release
Upstream tag: v5.0.0
Upstream commit: e71ec6f1
2024-03-19 17:25:18 +00:00
Packit
2c61db21a3 [packit] 5.0.0-rc7 upstream release
Upstream tag: v5.0.0-rc7
Upstream commit: f8888a13
2024-03-15 13:24:06 +00:00
Lokesh Mandvekar
c837778125
Resolves: #2269148 - make passt a hard dep
Signed-off-by: Lokesh Mandvekar <lsm5@redhat.com>
2024-03-13 17:43:31 +05:30
Packit
f8c84e24f2 [packit] 5.0.0-rc6 upstream release
Upstream tag: v5.0.0-rc6
Upstream commit: d26113ca
2024-03-11 19:04:07 +00:00
Packit
f286b98e7d [packit] 5.0.0-rc5 upstream release
Upstream tag: v5.0.0-rc5
Upstream commit: bbad09bb
2024-03-08 02:49:36 +00:00
Packit
2035f28ac2 [packit] 5.0.0-rc4 upstream release
Upstream tag: v5.0.0-rc4
Upstream commit: cfc5b8e0
2024-03-05 10:42:59 +00:00
Debarshi Ray
5a89a85665 Show the toolbox RPMs used to run the tests
This will make it easier to debug test failures by confirming if they
are caused by old buggy toolbox RPMs or if the fixes don't work as
intended.

https://src.fedoraproject.org/rpms/podman/pull-request/133
2024-02-29 14:26:42 +01:00
Zbigniew Jędrzejewski-Szmek
eaa62a527c Add fallback for $SOURCE_DATE_EPOCH not being set
At least in all recent Fedora releases, SOURCE_DATE_EPOCH would be set. But the
build should work even if it not set, e.g. in copr builds on c8s. Add 'date +%s'
as a fallback.
2024-02-27 15:22:06 +01:00
Zbigniew Jędrzejewski-Szmek
be971d6fbb Make BuildRequires independent of the environment
The spec file had
  %if %{defined rhel} && 0%{?rhel} < 10
  %define gobuild(o:) ...
  %endif
  ...
  %if !%{defined gobuild}
  BuildRequires: go-rpm-macros
  %endif

The intent apparently was to use BR:go-rpm-macros where available, and define
%gobuild as a fallback where they are not available. This was unreliable,
because the package may have been installed already, and then %gobuild would be
defined when the srpm was being built, and then the srpm would NOT have the BR.

Instead, use the same condition to wrap the definition of %gobuild and the BR
lines to that the BR is always emitted when appropriate.
2024-02-27 08:55:35 +01:00
Zbigniew Jędrzejewski-Szmek
a87dd6f505 Use $SOURCE_DATE_EPOCH instead of the current date
Using the current timestamp makes every build slightly different, breaking build
reproducibility.
2024-02-26 14:15:19 +01:00
Packit
01556b40d0 [packit] 5.0.0-rc3 upstream release
Upstream tag: v5.0.0-rc3
Upstream commit: 54795efe
2024-02-22 21:06:16 +00:00
Debarshi Ray
c2712c6a6b Avoid running out of storage space when running the Toolbx tests
Toolbx's system tests download several images when setting up the test
suite, and cache them for later use by the tests [1].  This saves time
and avoids hitting rate limits imposed by OCI registries by not
downloading the same images repeatedly for several tests, but at the
cost of increased use of storage space to cache the images.

The images are cached under BATS_TMPDIR.  It defaults to the TMPDIR
environment variable, and if that's not set then to /tmp [2].  Normally,
TMPDIR isn't set, and the images end up getting cached under /tmp.  Now,
/tmp is typically on tmpfs backed by RAM or swap, which means that it
should be used for smaller size-bounded files only, and /var/tmp should
be used for everything else [3].

The images are big enough that a collection of them can't be described
as smaller and size-bounded, and it led to:
  1..306
  # test suite: Set up
  # test suite: Tear down
  not ok 1 setup_suite
  # (from function `setup_suite' in test file ./setup_suite.bash, line
      55)
  #   `_pull_and_cache_distro_image fedora "$((system_version-1))" ||
      false' failed
  # Failed to cache image registry.fedoraproject.org/fedora-toolbox:40
      to /tmp/bats-run-IPz4Cn/image-cache/fedora-toolbox-40
  # time="2024-02-19T11:41:43Z" level=fatal msg="copying system image
      from manifest list: writing blob: write
      /tmp/bats-run-IPz4Cn/image-cache/fedora-toolbox-40/dir-put-blob607392514:
      no space left on device"
  # bats warning: Executed 1 instead of expected 306 tests

So, change the default location of the BATS_TMPDIR environment variable
to /var/tmp by setting TMPDIR.

[1] Toolbx commit 50683c9d9a78adc9
    50683c9d9a
    https://github.com/containers/toolbox/pull/375

[2] https://bats-core.readthedocs.io/en/stable/writing-tests.html

[3] https://systemd.io/TEMPORARY_DIRECTORIES/

https://src.fedoraproject.org/rpms/podman/pull-request/128
2024-02-19 21:03:24 +01:00
Packit
5b19639ef3 [packit] 5.0.0-rc2 upstream release
Upstream tag: v5.0.0-rc2
Upstream commit: f620aa0f
2024-02-16 16:47:08 +00:00
Debarshi Ray
89acf13e05 Silence warnings about deprecated grep(1) use in test logs
The egrep command was deprecated in 2007 as part of Grep 2.5.3, and
since Grep 3.8 it actually warns about it [1].  The warning shows up in
the test logs as:
  egrep: warning: egrep is obsolescent; using grep -E

[1] Grep commit a9515624709865d4
    https://git.savannah.gnu.org/cgit/grep.git/commit/?id=a9515624709865d4

https://src.fedoraproject.org/rpms/podman/pull-request/125
2024-02-15 15:41:41 +01:00
Debarshi Ray
7bff8d08f6 Update how Toolbx is spelt
This is meant to make the project more searchable on the Internet.  More
and more people have been pointing out that "toolbox" is terribly
difficult to search for, and it's impossible to find any decent
Internet real estate by that name.

Some exceptions:

  * The code repository is still https://github.com/containers/toolbox.
    It will be renamed after giving a heads-up to other contributors.

  * The name of the binary is still 'toolbox'.  The name is embedded
    into existing Toolbx containers as their entry point, which is bind
    mounted from the host operating system when the containers are
    started.  Trivially renaming the binary will prevent these
    containers from starting.

  * The name of the Fedora package is still 'toolbox'.

https://src.fedoraproject.org/rpms/podman/pull-request/122
2024-02-13 22:47:22 +01:00
Maxwell G
67ebd1f331
Rebuild for golang 1.22.0 2024-02-11 23:34:59 +00:00
Lokesh Mandvekar
a26b20b47b
update podman module version 2024-02-09 19:03:12 +05:30
Packit
2ab1bb3d2d [packit] 5.0.0-rc1 upstream release
Upstream tag: v5.0.0-rc1
Upstream commit: dc218a3c
2024-02-08 16:39:24 +00:00
Packit
eb3ec99899 [packit] 4.9.2 upstream release
Upstream tag: v4.9.2
Upstream commit: f9a48ebc
2024-02-02 23:33:04 +00:00
Ed Santiago
67da5bfbb7 Much-belated cleanup
- remove all references to cgroups v1. That code never worked,
  and "cgroups v2" in test names was misleading because it
  implied an alternative. Remove it.
- refactor podman remote and local tests
- clean up docs
- Ansible bitrot cleanup ("this is deprecated, use that")

Tested using 1minutetip but even so this is a big change and
we need to be prepared for fallout in the next bodhi.

Signed-off-by: Ed Santiago <santiago@redhat.com>
2024-02-02 10:38:08 +00:00
Packit
aa55adeec9 [packit] 4.9.1 upstream release
Upstream tag: v4.9.1
Upstream commit: 118829d7
2024-02-01 14:13:35 +00:00
Yaakov Selkowitz
7f7ad320ba Use go-rpm-macros on RHEL 10
The macros in ELN and c10s have the necessary support.

https://github.com/containers/podman/pull/21358
2024-01-25 00:10:24 -05:00
Packit
464a2d7e2d [packit] 4.9.0 upstream release
Upstream tag: v4.9.0
Upstream commit: f7c7b0a7
2024-01-24 09:53:20 +00:00
Fedora Release Engineering
3f3916b271 Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild 2024-01-21 22:04:45 +00:00
Packit
fc12c4b81d [packit] 4.8.3 upstream release
Upstream tag: v4.8.3
Upstream commit: 85dc30df
2024-01-03 13:57:10 +00:00
Packit
bda0c5e41c [packit] 4.8.2 upstream release
Upstream tag: v4.8.2
Upstream commit: aa546902
2023-12-11 12:56:12 +00:00
Packit
14d4b9b696 [packit] 4.8.1 upstream release
Upstream tag: v4.8.1
Upstream commit: ef6e5ac4
2023-12-05 11:53:59 +00:00
Packit
4f6306fd2a [packit] 4.8.0 upstream release
Upstream tag: v4.8.0
Upstream commit: c4dfcf14
2023-11-27 19:53:07 +00:00
Lokesh Mandvekar
e13f1e1d16
bump to v4.8.0-rc1 2023-11-27 16:00:53 +05:30
Packit
c11e262ddd [packit] 4.7.2 upstream release
Upstream tag: v4.7.2
Upstream commit: 750b4c3a
2023-10-31 14:09:21 +00:00
Packit
7f157c74c7 [packit] 4.7.1 upstream release
Upstream tag: v4.7.1
Upstream commit: ef83eeb9
2023-10-05 17:20:28 +00:00
Packit
027f479fd2 [packit] 4.7.0 upstream release
Upstream tag: v4.7.0
Upstream commit: 073183fe
2023-09-27 18:03:01 +00:00
Stephen Gallagher
115cfab7c7 Do not conditionalize sources
This makes it possible to use a tarball generated on Rawhide/F38 to
build a package for F37 or Fedora ELN.

Signed-off-by: Stephen Gallagher <sgallagh@redhat.com>
2023-09-18 13:00:57 -04:00
Lokesh Mandvekar
4c9244acea bump to v4.7.0-rc1 2023-09-15 19:16:17 -04:00
Lokesh Mandvekar
e937b31ec5 podman has hard dependency on gvisor-tap-vsock-gvforwarder 2023-09-12 15:39:19 -04:00
Lokesh Mandvekar
01f53fd3b5 tests: add passt to rpm -qa so we know what version is used in tests 2023-08-29 14:34:10 -04:00
Packit
386b867edd [packit] 4.6.2 upstream release
Upstream tag: v4.6.2
Upstream commit: 5db42e86

If you need to do any change in this pull request, you need to locally fetch the source branch of it and push it (with a fix) to your fork (as it is not possible to push to the branch created in the Packit’s fork):
```
git fetch https://src.fedoraproject.org/forks/packit/rpms/podman.git refs/heads/*:refs/remotes/packit/*
git checkout packit/4.6.2-rawhide-update-propose_downstream
```
2023-08-28 19:16:12 +00:00
Lokesh Mandvekar
6e02a17fe3 spdx compatible version string 2023-08-22 09:15:27 -04:00
Packit
db46064115 [packit] 4.6.1 upstream release
Upstream tag: v4.6.1
Upstream commit: f3069b3f

If you need to do any change in this pull request, you need to locally fetch the source branch of it and push it (with a fix) to your fork (as it is not possible to push to the branch created in the Packit’s fork):
```
git fetch https://src.fedoraproject.org/forks/packit/rpms/podman.git refs/heads/*:refs/remotes/packit/*
git checkout packit/4.6.1-rawhide-update-propose_downstream
```
2023-08-10 20:58:58 +00:00
Lokesh Mandvekar
107772583a gvproxy removed for rawhide and copr builds
Ref: (WIP) https://bugzilla.redhat.com/show_bug.cgi?id=2224434

This might cause breakage in rawhide, but can't be worse than what it
already is.
2023-07-24 08:34:58 -04:00
Lokesh Mandvekar
f5015a026a Merge #73 Update rawhide to upstream release 4.6.0 2023-07-21 12:14:11 +00:00
Fedora Release Engineering
ebd0cee248 Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild
Signed-off-by: Fedora Release Engineering <releng@fedoraproject.org>
2023-07-21 05:57:58 +00:00
Packit
8f90708bfa [packit] 4.6.0 upstream release
Upstream tag: v4.6.0
Upstream commit: 38e6fab9

If you need to do any change in this pull request, you need to locally fetch the source branch of it and push it (with a fix) to your fork (as it is not possible to push to the branch created in the Packit’s fork):
```
git fetch https://src.fedoraproject.org/forks/packit/rpms/podman.git refs/heads/*:refs/remotes/packit/*
git checkout packit/4.6.0-rawhide-update-propose_downstream
```
2023-07-20 22:09:02 +00:00
Lokesh Mandvekar
223a82f86b bump to v4.6.0-rc2 2023-07-13 16:01:55 -04:00
Lokesh Mandvekar
ec69e1ec9c bump to v4.6.0-rc1
Signed-off-by: Lokesh Mandvekar <lsm5@fedoraproject.org>
2023-07-03 10:06:58 -04:00
Lokesh Mandvekar
35be92c752 bump to v4.5.1 2023-05-26 13:40:48 -04:00
Lokesh Mandvekar
f6e2b9b14a rewrite spec to minimize diff with soon to be upstream packit-maintained spec 2023-05-24 09:41:45 -04:00
Ed Santiago
a37af540a5 Disable systemd resolved
Fixes flake: 'dial tcp: lookup cdn03.quay.io: no such host'

Okay, doesn't actually fix as in _fix_, just fix as in "sweep it
under the rug". The actual bug is in systemd-resolved, or in the
quay.io/cloudflare.net DNS nameservers, or in the weird specific
setup for cdn03 (it's a CNAME, compared to cdn01/02 which are A).
Maybe a combination of all of the above. I don't care; I just
want the flakes gone. I realize that this makes our testing
environment different from default Fedora, and am okay with
that because I suspect many Fedora users disable systemd-resolved
as SOP.

Signed-off-by: Ed Santiago <santiago@redhat.com>
2023-05-08 10:05:42 -06:00
Lokesh Mandvekar
fdd5bef7e5 fix macro 2023-04-25 14:19:10 -04:00
Yaakov Selkowitz
fb6959e0d6 Disable btrfs in RHEL builds
btrfs-progs is not supported on RHEL.  BUILDTAGS is already set properly
to compile if not present.
2023-04-25 11:48:15 -04:00
RH Container Bot
a4c6b7d041 auto bump to v4.5.0 2023-04-14 15:19:02 +00:00
Lokesh Mandvekar
ddbea30cde bump to v4.5.0-rc2 2023-04-12 09:25:24 -04:00
Lokesh Mandvekar
3cc557cca3 BR: gettext-envsubst
Signed-off-by: Lokesh Mandvekar <lsm5@fedoraproject.org>
2023-04-05 09:54:28 +02:00
Lokesh Mandvekar
92f1a6c1b4 bump to v4.5.0-rc1
Signed-off-by: Lokesh Mandvekar <lsm5@fedoraproject.org>
2023-04-05 09:22:06 +02:00
Lokesh Mandvekar
e623fbceb2 Fix ETCDIR usage for future upstream changes in docker wrapper
Signed-off-by: Lokesh Mandvekar <lsm5@fedoraproject.org>
2023-04-03 18:18:19 +05:30
Lokesh Mandvekar
a5a566a143 Resolves: #2183641 - use min conmon v2.1.7
Signed-off-by: Lokesh Mandvekar <lsm5@fedoraproject.org>
2023-04-03 16:50:02 +05:30
Miroslav Vadkerti
f12cda32c2 Adjust tests for new Ansible
Testing Farm 2023-03.1 has updated to a new Ansible
version.

Unfortunately, playbooks using the deprecated `warn:`
parameter for the shell/command modules will fail
because this had been deprecated

This should fix the problem.

Signed-off-by: Miroslav Vadkerti <mvadkert@redhat.com>
2023-03-31 17:09:15 +00:00
RH Container Bot
144403ee62 auto bump to v4.4.4 2023-03-27 20:02:41 +00:00
Lokesh Mandvekar
839d942373 ensure no buildroot macro left in /usr/bin/docker
A new change soon to be merged upstream will leave the buildroot macro
in /usr/bin/docker in the rpmbuild process.

This commit will sanitize the buildroot macro from /usr/bin/docker.

Signed-off-by: Lokesh Mandvekar <lsm5@fedoraproject.org>
2023-03-24 12:46:47 +05:30
RH Container Bot
bf8062ab84 auto bump to v4.4.3 2023-03-23 18:02:05 +00:00
Lokesh Mandvekar
81b573afb1 migrated to SPDX license
Signed-off-by: Lokesh Mandvekar <lsm5@fedoraproject.org>
2023-03-06 16:22:21 +05:30
Lokesh Mandvekar
1a9e693b72 remove CVE-2023-0778.patch merged upstream
Signed-off-by: Lokesh Mandvekar <lsm5@fedoraproject.org>
2023-03-01 16:35:28 +05:30
RH Container Bot
1e823da91a auto bump to v4.4.2 2023-02-28 12:50:25 +00:00
Yaakov Selkowitz
c82d37a5b3 Sync modules-load conditionals
ELN tracks rawhide and therefore is new enough for this.  Either way,
the %files listing needs to use the same conditional.
2023-02-21 20:09:20 -05:00
27 changed files with 683 additions and 807 deletions

1
.fmf/version Normal file
View file

@ -0,0 +1 @@
1

73
.gitignore vendored
View file

@ -1821,3 +1821,76 @@
/gvisor-tap-vsock-aab0ac9367fc5142f5857c36ac2352bcb3c60ab7.tar.gz
/v4.4.0.tar.gz
/v4.4.1.tar.gz
/v4.4.2.tar.gz
/v4.4.3.tar.gz
/v4.4.4.tar.gz
/v4.5.0-rc1.tar.gz
/v4.5.0-rc2.tar.gz
/v4.5.0.tar.gz
/gvisor-tap-vsock-407efb5dcdb0f4445935f7360535800b60447544.tar.gz
/v4.5.1.tar.gz
/v4.6.0-rc1.tar.gz
/v4.6.0-rc2.tar.gz
/v4.6.0.tar.gz
/v4.6.1.tar.gz
/v4.6.2.tar.gz
/v4.7.0-rc1.tar.gz
/v4.7.0.tar.gz
/v4.7.1.tar.gz
/v4.7.2.tar.gz
/v4.8.0-rc1.tar.gz
/v4.8.0.tar.gz
/v4.8.1.tar.gz
/v4.8.2.tar.gz
/v4.8.3.tar.gz
/v4.9.0.tar.gz
/v4.9.1.tar.gz
/v4.9.2.tar.gz
/v5.0.0-rc1.tar.gz
/v5.0.0-rc2.tar.gz
/v5.0.0-rc3.tar.gz
/v5.0.0-rc4.tar.gz
/v5.0.0-rc5.tar.gz
/v5.0.0-rc6.tar.gz
/v5.0.0-rc7.tar.gz
/v5.0.0.tar.gz
/v5.0.1.tar.gz
/v5.0.2.tar.gz
/v5.0.3.tar.gz
/v5.1.0-rc1.tar.gz
/v5.1.0.tar.gz
/v5.1.1.tar.gz
/v5.1.2.tar.gz
/v5.2.0-rc1.tar.gz
/v5.2.0-rc2.tar.gz
/v5.2.0.tar.gz
/v5.2.1.tar.gz
/v5.2.2.tar.gz
/v5.2.3.tar.gz
/v5.2.4.tar.gz
/v5.2.5.tar.gz
/v5.3.0-rc1.tar.gz
/v5.3.0-rc2.tar.gz
/v5.3.0-rc3.tar.gz
/v5.3.0.tar.gz
/v5.3.1.tar.gz
/v5.3.2.tar.gz
/v5.4.0-rc2.tar.gz
/v5.4.0-rc3.tar.gz
/v5.4.0.tar.gz
/v5.4.1.tar.gz
/v5.4.2.tar.gz
/v5.5.0-rc1.tar.gz
/v5.5.0-rc2.tar.gz
/v5.5.0.tar.gz
/v5.5.1.tar.gz
/v5.5.2.tar.gz
/v5.6.0-rc1.tar.gz
/v5.6.0-rc2.tar.gz
/v5.6.0.tar.gz
/v5.6.1.tar.gz
/v5.6.2.tar.gz
/v5.7.0-rc1.tar.gz
/v5.7.0-rc2.tar.gz
/v5.7.0.tar.gz
/v5.7.1.tar.gz

166
.packit.yaml Normal file
View file

@ -0,0 +1,166 @@
---
# See the documentation for more information:
# https://packit.dev/docs/configuration/
downstream_package_name: podman
upstream_tag_template: v{version}
# These files get synced from upstream to downstream (Fedora / CentOS Stream) on every
# propose-downstream job. This is done so tests maintained upstream can be run
# downstream in Zuul CI and Bodhi.
# Ref: https://packit.dev/docs/configuration#files_to_sync
files_to_sync:
- src: rpm/gating.yaml
dest: gating.yaml
delete: true
- src: plans/
dest: plans/
delete: true
mkpath: true
- src: test/tmt/
dest: test/tmt/
delete: true
mkpath: true
- src: .fmf/
dest: .fmf/
delete: true
- .packit.yaml
packages:
podman-fedora:
pkg_tool: fedpkg
specfile_path: rpm/podman.spec
podman-centos:
pkg_tool: centpkg
specfile_path: rpm/podman.spec
podman-eln:
specfile_path: rpm/podman.spec
# Disable automatic merging for Copr builds (and subsequent Testing Farm)
merge_pr_in_ci: false
srpm_build_deps:
- git-archive-all
- make
actions:
fix-spec-file: "bash .packit-copr-rpm.sh"
pre-sync: "bash .packit-rpm-git-commit.sh"
jobs:
- job: copr_build
trigger: pull_request
packages: [podman-fedora]
notifications: &packit_generic_failure_notification
failure_comment:
message: "[NON-BLOCKING] Packit jobs failed. @containers/packit-build please check. Everyone else, feel free to ignore."
enable_net: true
targets:
- fedora-all-x86_64
- fedora-all-aarch64
# Re-enable these scans if OpenScanHub starts scanning go packages
# https://packit.dev/posts/openscanhub-prototype
osh_diff_scan_after_copr_build: false
# Ignore until golang is updated in distro buildroot to go 1.23.3+
- job: copr_build
trigger: ignore
packages: [podman-eln]
notifications: *packit_generic_failure_notification
enable_net: true
targets:
fedora-eln-x86_64:
additional_repos:
- "https://kojipkgs.fedoraproject.org/repos/eln-build/latest/x86_64/"
fedora-eln-aarch64:
additional_repos:
- "https://kojipkgs.fedoraproject.org/repos/eln-build/latest/aarch64/"
# Ignore until golang is updated in distro buildroot to go 1.23.3+
- job: copr_build
trigger: ignore
packages: [podman-centos]
notifications: *packit_generic_failure_notification
enable_net: true
targets:
- centos-stream-9-x86_64
- centos-stream-9-aarch64
- centos-stream-10-x86_64
- centos-stream-10-aarch64
# Run on commit to main branch
- job: copr_build
trigger: commit
packages: [podman-fedora]
branch: main
owner: rhcontainerbot
project: podman-next
enable_net: true
# Tests on Fedora
- job: tests
trigger: pull_request
packages: [podman-fedora]
notifications: *packit_generic_failure_notification
targets:
- fedora-all
tmt_plan: "/plans/system/*"
- job: tests
identifier: cockpit-revdeps
trigger: pull_request
packages: [podman-fedora]
notifications:
failure_comment:
message: "Cockpit tests failed for commit {commit_sha}. @martinpitt, @jelly, @mvollmer please check."
targets:
- fedora-latest-stable
- fedora-development
tf_extra_params:
environments:
- artifacts:
- type: repository-file
id: https://copr.fedorainfracloud.org/coprs/g/cockpit/main-builds/repo/fedora-$releasever/group_cockpit-main-builds-fedora-$releasever.repo
tmt:
context:
revdeps: "yes"
- job: tests
identifier: tmt-revdeps
trigger: pull_request
packages: [podman-fedora]
notifications:
failure_comment:
message: "tmt tests failed for commit {commit_sha}. @lsm5, @psss, @thrix please check."
targets:
- fedora-latest
fmf_url: https://github.com/teemtee/tmt
fmf_path: /plans/friends
fmf_ref: main
tmt_plan: "/podman"
- job: propose_downstream
trigger: release
update_release: false
packages: [podman-fedora]
dist_git_branches: &fedora_targets
- fedora-all
- job: koji_build
trigger: commit
packages: [podman-fedora]
sidetag_group: podman-releases
dist_git_branches: *fedora_targets
- job: bodhi_update
trigger: koji_build
packages: [podman-fedora]
sidetag_group: podman-releases
# Dependencies are not rpm dependencies, but packages that should go in the
# same bodhi update
# Ref: https://packit.dev/docs/fedora-releases-guide/releasing-multiple-packages
dependencies:
- buildah
- containers-common
- skopeo
dist_git_branches: *fedora_targets

View file

@ -1,102 +0,0 @@
From 805e94b034ceb59e10a57413c1493b7e8b7e33a0 Mon Sep 17 00:00:00 2001
From: Aditya R <arajan@redhat.com>
Date: Fri, 10 Feb 2023 15:16:27 +0530
Subject: [PATCH] volume,container: chroot to source before exporting content
* Utils must support higher level API to create Tar with chrooted into
directory
* Volume export: use TarwithChroot instead of Tar so we can make sure no
symlink can be exported by tar if it exists outside of the source
directory.
* container export: use chroot and Tar instead of Tar so we can make sure no
symlink can be exported by tar if it exists outside of the mointPoint.
[NO NEW TESTS NEEDED]
[NO TESTS NEEDED]
Race needs combination of external/in-container mechanism which is hard to repro in CI.
Closes: BZ:#2168256
CVE: https://access.redhat.com/security/cve/CVE-2023-0778
Signed-off-by: Aditya R <arajan@redhat.com>
<MH: Cherry-pick to v4.4>
Signed-off-by: Matt Heon <mheon@redhat.com>
---
libpod/container_internal.go | 4 ++--
utils/utils.go | 25 ++++++++++++++++++++++++-
2 files changed, 26 insertions(+), 3 deletions(-)
diff --git a/libpod/container_internal.go b/libpod/container_internal.go
index c37d6be2b1b..ee6a7b6cc2c 100644
--- a/libpod/container_internal.go
+++ b/libpod/container_internal.go
@@ -34,7 +34,7 @@ import (
"github.com/containers/podman/v4/pkg/systemd/notifyproxy"
"github.com/containers/podman/v4/pkg/util"
"github.com/containers/storage"
- "github.com/containers/storage/pkg/archive"
+ "github.com/containers/storage/pkg/chrootarchive"
"github.com/containers/storage/pkg/idtools"
"github.com/containers/storage/pkg/lockfile"
"github.com/containers/storage/pkg/mount"
@@ -763,7 +763,7 @@ func (c *Container) export(out io.Writer) error {
}()
}
- input, err := archive.Tar(mountPoint, archive.Uncompressed)
+ input, err := chrootarchive.Tar(mountPoint, nil, mountPoint)
if err != nil {
return fmt.Errorf("reading container directory %q: %w", c.ID(), err)
}
diff --git a/utils/utils.go b/utils/utils.go
index f9f96f2835e..81b77e544a3 100644
--- a/utils/utils.go
+++ b/utils/utils.go
@@ -13,6 +13,7 @@ import (
"github.com/containers/common/pkg/cgroups"
"github.com/containers/storage/pkg/archive"
+ "github.com/containers/storage/pkg/chrootarchive"
"github.com/godbus/dbus/v5"
"github.com/sirupsen/logrus"
)
@@ -63,7 +64,7 @@ func CreateTarFromSrc(source string, dest string) error {
return fmt.Errorf("could not create tarball file '%s': %w", dest, err)
}
defer file.Close()
- return TarToFilesystem(source, file)
+ return TarChrootToFilesystem(source, file)
}
// TarToFilesystem creates a tarball from source and writes to an os.file
@@ -87,6 +88,28 @@ func Tar(source string) (io.ReadCloser, error) {
return archive.Tar(source, archive.Uncompressed)
}
+// TarChrootToFilesystem creates a tarball from source and writes to an os.file
+// provided while chrooted to the source.
+func TarChrootToFilesystem(source string, tarball *os.File) error {
+ tb, err := TarWithChroot(source)
+ if err != nil {
+ return err
+ }
+ _, err = io.Copy(tarball, tb)
+ if err != nil {
+ return err
+ }
+ logrus.Debugf("wrote tarball file %s", tarball.Name())
+ return nil
+}
+
+// TarWithChroot creates a tarball from source and returns a readcloser of it
+// while chrooted to the source.
+func TarWithChroot(source string) (io.ReadCloser, error) {
+ logrus.Debugf("creating tarball of %s", source)
+ return chrootarchive.Tar(source, nil, source)
+}
+
// RemoveScientificNotationFromFloat returns a float without any
// scientific notation if the number has any.
// golang does not handle conversion of float64s that have scientific

3
README.packit Normal file
View file

@ -0,0 +1,3 @@
This repository is maintained by packit.
https://packit.dev/
The file was generated using packit 1.12.0.post1.dev22+gfe66fd850.

View file

@ -7,3 +7,11 @@ decision_contexts:
subject_type: koji_build
rules:
- !PassingTestCaseRule {test_case_name: fedora-ci.koji-build.tier0.functional}
# recipients: jnovy, lsm5, santiago
--- !Policy
product_versions:
- rhel-*
decision_context: osci_compose_gate
rules:
- !PassingTestCaseRule {test_case_name: osci.brew-build.tier0.functional}

37
plans/cockpit-podman.fmf Normal file
View file

@ -0,0 +1,37 @@
# reverse dependency test for https://github.com/cockpit-project/cockpit-podman/
# packit should automatically notify the cockpit maintainers on failures.
# For questions, please contact @martinpitt, @jelly, @mvollmer
enabled: false
adjust+:
when: revdeps == yes
enabled: true
discover:
how: fmf
url: https://github.com/cockpit-project/cockpit-podman
ref: "main"
execute:
how: tmt
# not relevant for testing podman
environment:
TEST_AUDIT_NO_SELINUX: 1
TEST_ALLOW_JOURNAL_MESSAGES: ".*"
# This has to duplicate cockpit-podman's plan structure; see https://github.com/teemtee/tmt/issues/1770
/podman-system:
summary: Run cockpit-podman system tests
discover+:
test: /test/browser/system
/podman-user:
summary: Run cockpit-podman user tests
discover+:
test: /test/browser/user
/podman-misc:
summary: Run other cockpit-podman tests
discover+:
test: /test/browser/other

50
plans/system.fmf Normal file
View file

@ -0,0 +1,50 @@
discover:
how: fmf
execute:
how: tmt
prepare:
- how: shell
script: modprobe null_blk nr_devices=1
order: 5
- when: distro == centos-stream or distro == rhel
how: shell
script: |
dnf -y install https://dl.fedoraproject.org/pub/epel/epel-release-latest-$(rpm --eval '%{?rhel}').noarch.rpm
dnf -y config-manager --set-enabled epel
order: 10
adjust+:
- enabled: false
when: revdeps == yes
provision:
how: artemis
hardware:
memory: ">= 16 GB"
cpu:
cores: ">= 4"
threads: ">=8"
disk:
- size: ">= 512 GB"
/local-root:
summary: Local rootful tests
discover+:
filter: 'tag:local & tag:root'
/local-rootless:
summary: Local rootless tests
discover+:
filter: 'tag:local & tag:rootless'
/remote-root:
summary: Remote rootful tests
discover+:
filter: 'tag:remote & tag:root'
/remote-rootless:
summary: Remote rootless tests
discover+:
filter: 'tag:remote & tag:rootless'

21
plans/tmt.fmf Normal file
View file

@ -0,0 +1,21 @@
summary: Run tmt container provision test (downstream only)
enabled: false
adjust+:
- enabled: true
when: initiator != packit and distro != rhel
discover:
how: fmf
filter: 'tag:tmt & tag:downstream'
execute:
how: tmt
prepare:
- when: distro == centos-stream or distro == rhel
how: shell
script: |
dnf -y install https://dl.fedoraproject.org/pub/epel/epel-release-latest-$(rpm --eval '%{?rhel}').noarch.rpm
dnf -y config-manager --set-enabled epel
order: 10

29
plans/toolbox.fmf Normal file
View file

@ -0,0 +1,29 @@
summary: Run toolbox tests (downstream only)
enabled: false
adjust+:
- enabled: true
when: initiator != packit and distro == fedora
provision:
how: artemis
hardware:
memory: ">= 16 GB"
cpu:
cores: ">= 4"
threads: ">=8"
disk:
- size: ">= 512 GB"
prepare:
- name: packages
how: install
package: [toolbox-tests]
discover:
how: fmf
url: https://src.fedoraproject.org/rpms/toolbox
ref: "rawhide"
execute:
how: tmt

View file

@ -7,55 +7,89 @@
%global debug_package %{nil}
%endif
%global provider github
%global provider_tld com
%global project containers
%global repo %{name}
# https://github.com/containers/%%{name}
%global import_path %{provider}.%{provider_tld}/%{project}/%{repo}
%global git0 https://%{import_path}
%global gomodulesmode GO111MODULE=on
# dnsname
%global repo_plugins dnsname
# https://github.com/containers/dnsname
%global import_path_plugins %{provider}.%{provider_tld}/%{project}/%{repo_plugins}
%global git_plugins https://%{import_path_plugins}
%global commit_plugins 18822f9a4fb35d1349eb256f4cd2bfd372474d84
%if %{defined fedora}
%define build_with_btrfs 1
# qemu-system* isn't packageed for CentOS Stream / RHEL
%define qemu 1
# bats is included in the default repos (No epel/copr etc.)
%define distro_bats 1
%if %{?fedora} >= 43
%define sequoia 1
%endif
%endif
# gvproxy
%global repo_gvproxy gvisor-tap-vsock
# https://github.com/containers/gvisor-tap-vsock
%global import_path_gvproxy %%{provider}.%{provider_tld}/%{project}/%{repo_gvproxy}
%global git_gvproxy https://%{import_path_gvproxy}
%global commit_gvproxy aab0ac9367fc5142f5857c36ac2352bcb3c60ab7
%if %{defined copr_username}
%define copr_build 1
%if "%{copr_username}" == "rhcontainerbot" && "%{copr_projectname}" == "podman-next"
%define next_build 1
%endif
%endif
%global built_tag v4.4.1
%global built_tag_strip %(b=%{built_tag}; echo ${b:1})
%global gen_version %(b=%{built_tag_strip}; echo ${b/-/"~"})
# Only RHEL and CentOS Stream rpms are built with fips-enabled go compiler
%if %{defined rhel}
%define fips_enabled 1
%endif
%global container_base_path github.com/containers
%global container_base_url https://%{container_base_path}
# For LDFLAGS
%global ld_project %{container_base_path}/%{name}/v5
%global ld_libpod %{ld_project}/libpod
# %%{name}
%global git0 %{container_base_url}/%{name}
# podman-machine subpackage will be present only on these architectures
%global machine_arches x86_64 aarch64
%if %{defined copr_build}
%define build_origin Copr: %{?copr_username}/%{?copr_projectname}
%else
%define build_origin %{?packager}
%endif
Name: podman
%if %{defined next_build}
Epoch: 102
%else
Epoch: 5
Version: %{gen_version}
License: ASL 2.0 and BSD and ISC and MIT and MPLv2.0
%endif
# DO NOT TOUCH the Version string!
# The TRUE source of this specfile is:
# https://github.com/containers/podman/blob/main/rpm/podman.spec
# If that's what you're reading, Version must be 0, and will be updated by Packit for
# copr and koji builds.
# If you're reading this on dist-git, the version is automatically filled in by Packit.
Version: 5.7.1
# The `AND` needs to be uppercase in the License for SPDX compatibility
License: Apache-2.0 AND BSD-2-Clause AND BSD-3-Clause AND ISC AND MIT AND MPL-2.0
Release: %autorelease
%if %{defined golang_arches_future}
ExclusiveArch: %{golang_arches_future}
%else
ExclusiveArch: aarch64 ppc64le s390x x86_64 riscv64
%endif
Summary: Manage Pods, Containers and Container Images
URL: https://%{name}.io/
# All SourceN files fetched from upstream
Source0: %{git0}/archive/%{built_tag}.tar.gz
Source1: %{git_plugins}/archive/%{commit_plugins}/%{repo_plugins}-%{commit_plugins}.tar.gz
Source2: %{git_gvproxy}/archive/%{commit_gvproxy}/%{repo_gvproxy}-%{commit_gvproxy}.tar.gz
Patch0: CVE-2023-0778.patch
Source0: %{git0}/archive/v%{version_no_tilde}.tar.gz
Provides: %{name}-manpages = %{epoch}:%{version}-%{release}
BuildRequires: go-md2man
BuildRequires: %{_bindir}/envsubst
%if %{defined build_with_btrfs}
BuildRequires: btrfs-progs-devel
%endif
BuildRequires: gcc
BuildRequires: glib2-devel
BuildRequires: glibc-devel
BuildRequires: glibc-static
BuildRequires: golang
BuildRequires: git-core
%if %{undefined rhel} || 0%{?rhel} >= 10
BuildRequires: go-rpm-macros
%endif
BuildRequires: gpgme-devel
BuildRequires: libassuan-devel
BuildRequires: libgpg-error-devel
@ -64,172 +98,26 @@ BuildRequires: libselinux-devel
BuildRequires: shadow-utils-subid-devel
BuildRequires: pkgconfig
BuildRequires: make
BuildRequires: ostree-devel
BuildRequires: man-db
BuildRequires: sqlite-devel
BuildRequires: systemd
BuildRequires: systemd-devel
Requires: catatonit
Requires: conmon >= 2:2.0.30-2
%if 0%{?fedora} > 37
Requires: containers-common-extra >= 4:1-84
Requires: conmon >= 2:2.1.7-2
%if %{defined fedora} && 0%{?fedora} >= 40
# TODO: Remove the f40 conditional after a few releases to keep conditionals to
# a minimum
# Ref: https://bugzilla.redhat.com/show_bug.cgi?id=2269148
Requires: containers-common-extra >= 5:0.58.0-1
%else
%if 0%{?fedora} == 37
Requires: containers-common-extra >= 4:1-78
%else
Requires: containers-common-extra >= 4:1-66
Requires: containers-common-extra
%endif
%if %{defined sequoia}
Requires: podman-sequoia
%endif
Recommends: %{name}-gvproxy = %{epoch}:%{version}-%{release}
Provides: %{name}-quadlet
Obsoletes: %{name}-quadlet <= 5:4.4.0-1
Provides: %{name}-quadlet = %{epoch}:%{version}-%{release}
# vendored libraries
# awk '{print "Provides: bundled(golang("$1")) = "$2}' go.mod | sort | uniq | sed -e 's/-/_/g' -e '/bundled(golang())/d' -e '/bundled(golang(go\|module\|replace\|require))/d'
Provides: bundled(golang(github.com/Azure/go_ansiterm)) = v0.0.0_20210617225240_d185dfc1b5a1
Provides: bundled(golang(github.com/BurntSushi/toml)) = v1.2.1
Provides: bundled(golang(github.com/Microsoft/go_winio)) = v0.6.0
Provides: bundled(golang(github.com/Microsoft/hcsshim)) = v0.9.6
Provides: bundled(golang(github.com/VividCortex/ewma)) = v1.2.0
Provides: bundled(golang(github.com/acarl005/stripansi)) = v0.0.0_20180116102854_5a71ef0e047d
Provides: bundled(golang(github.com/asaskevich/govalidator)) = v0.0.0_20210307081110_f21760c49a8d
Provides: bundled(golang(github.com/blang/semver/v4)) = v4.0.0
Provides: bundled(golang(github.com/buger/goterm)) = v1.0.4
Provides: bundled(golang(github.com/checkpoint_restore/checkpointctl)) = v0.0.0_20220321135231_33f4a66335f0
Provides: bundled(golang(github.com/checkpoint_restore/go_criu/v6)) = v6.3.0
Provides: bundled(golang(github.com/chzyer/readline)) = v1.5.1
Provides: bundled(golang(github.com/container_orchestrated_devices/container_device_interface)) = v0.5.3
Provides: bundled(golang(github.com/containerd/cgroups)) = v1.0.4
Provides: bundled(golang(github.com/containerd/containerd)) = v1.6.15
Provides: bundled(golang(github.com/containerd/stargz_snapshotter/estargz)) = v0.13.0
Provides: bundled(golang(github.com/containernetworking/cni)) = v1.1.2
Provides: bundled(golang(github.com/containernetworking/plugins)) = v1.2.0
Provides: bundled(golang(github.com/containers/buildah)) = v1.29.0
Provides: bundled(golang(github.com/containers/common)) = v0.51.0
Provides: bundled(golang(github.com/containers/conmon)) = v2.0.20+incompatible
Provides: bundled(golang(github.com/containers/image/v5)) = v5.24.0
Provides: bundled(golang(github.com/containers/libtrust)) = v0.0.0_20230121012942_c1716e8a8d01
Provides: bundled(golang(github.com/containers/ocicrypt)) = v1.1.7
Provides: bundled(golang(github.com/containers/psgo)) = v1.8.0
Provides: bundled(golang(github.com/containers/storage)) = v1.45.3
Provides: bundled(golang(github.com/coreos/go_oidc/v3)) = v3.5.0
Provides: bundled(golang(github.com/coreos/go_systemd)) = v0.0.0_20190719114852_fd7a80b32e1f
Provides: bundled(golang(github.com/coreos/go_systemd/v22)) = v22.5.0
Provides: bundled(golang(github.com/coreos/stream_metadata_go)) = v0.0.0_20210225230131_70edb9eb47b3
Provides: bundled(golang(github.com/cyberphone/json_canonicalization)) = v0.0.0_20220623050100_57a0ce2678a7
Provides: bundled(golang(github.com/cyphar/filepath_securejoin)) = v0.2.3
Provides: bundled(golang(github.com/davecgh/go_spew)) = v1.1.1
Provides: bundled(golang(github.com/digitalocean/go_libvirt)) = v0.0.0_20201209184759_e2a69bcd5bd1
Provides: bundled(golang(github.com/digitalocean/go_qemu)) = v0.0.0_20210326154740_ac9e0b687001
Provides: bundled(golang(github.com/disiqueira/gotree/v3)) = v3.0.2
Provides: bundled(golang(github.com/docker/distribution)) = v2.8.1+incompatible
Provides: bundled(golang(github.com/docker/docker)) = v20.10.23+incompatible
Provides: bundled(golang(github.com/docker/docker_credential_helpers)) = v0.7.0
Provides: bundled(golang(github.com/docker/go_connections)) = v0.4.1_0.20210727194412_58542c764a11
Provides: bundled(golang(github.com/docker/go_plugins_helpers)) = v0.0.0_20211224144127_6eecb7beb651
Provides: bundled(golang(github.com/docker/go_units)) = v0.5.0
Provides: bundled(golang(github.com/felixge/httpsnoop)) = v1.0.3
Provides: bundled(golang(github.com/fsnotify/fsnotify)) = v1.6.0
Provides: bundled(golang(github.com/fsouza/go_dockerclient)) = v1.9.3
Provides: bundled(golang(github.com/ghodss/yaml)) = v1.0.0
Provides: bundled(golang(github.com/go_jose/go_jose/v3)) = v3.0.0
Provides: bundled(golang(github.com/go_openapi/analysis)) = v0.21.4
Provides: bundled(golang(github.com/go_openapi/errors)) = v0.20.3
Provides: bundled(golang(github.com/go_openapi/jsonpointer)) = v0.19.5
Provides: bundled(golang(github.com/go_openapi/jsonreference)) = v0.20.0
Provides: bundled(golang(github.com/go_openapi/loads)) = v0.21.2
Provides: bundled(golang(github.com/go_openapi/runtime)) = v0.24.1
Provides: bundled(golang(github.com/go_openapi/spec)) = v0.20.7
Provides: bundled(golang(github.com/go_openapi/strfmt)) = v0.21.3
Provides: bundled(golang(github.com/go_openapi/swag)) = v0.22.3
Provides: bundled(golang(github.com/go_openapi/validate)) = v0.22.0
Provides: bundled(golang(github.com/go_playground/locales)) = v0.14.0
Provides: bundled(golang(github.com/go_playground/universal_translator)) = v0.18.0
Provides: bundled(golang(github.com/go_playground/validator/v10)) = v10.11.1
Provides: bundled(golang(github.com/godbus/dbus/v5)) = v5.1.1_0.20221029134443_4b691ce883d5
Provides: bundled(golang(github.com/gogo/protobuf)) = v1.3.2
Provides: bundled(golang(github.com/golang/groupcache)) = v0.0.0_20210331224755_41bb18bfe9da
Provides: bundled(golang(github.com/golang/protobuf)) = v1.5.2
Provides: bundled(golang(github.com/google/go_cmp)) = v0.5.9
Provides: bundled(golang(github.com/google/go_containerregistry)) = v0.12.1
Provides: bundled(golang(github.com/google/go_intervals)) = v0.0.2
Provides: bundled(golang(github.com/google/gofuzz)) = v1.2.0
Provides: bundled(golang(github.com/google/shlex)) = v0.0.0_20191202100458_e7afc7fbc510
Provides: bundled(golang(github.com/google/trillian)) = v1.5.0
Provides: bundled(golang(github.com/google/uuid)) = v1.3.0
Provides: bundled(golang(github.com/gorilla/handlers)) = v1.5.1
Provides: bundled(golang(github.com/gorilla/mux)) = v1.8.0
Provides: bundled(golang(github.com/gorilla/schema)) = v1.2.0
Provides: bundled(golang(github.com/hashicorp/errwrap)) = v1.1.0
Provides: bundled(golang(github.com/hashicorp/go_cleanhttp)) = v0.5.2
Provides: bundled(golang(github.com/hashicorp/go_multierror)) = v1.1.1
Provides: bundled(golang(github.com/hashicorp/go_retryablehttp)) = v0.7.2
Provides: bundled(golang(github.com/imdario/mergo)) = v0.3.13
Provides: bundled(golang(github.com/inconshreveable/mousetrap)) = v1.0.1
Provides: bundled(golang(github.com/jinzhu/copier)) = v0.3.5
Provides: bundled(golang(github.com/josharian/intern)) = v1.0.0
Provides: bundled(golang(github.com/json_iterator/go)) = v1.1.12
Provides: bundled(golang(github.com/klauspost/compress)) = v1.15.15
Provides: bundled(golang(github.com/klauspost/pgzip)) = v1.2.6_0.20220930104621_17e8dac29df8
Provides: bundled(golang(github.com/kr/fs)) = v0.1.0
Provides: bundled(golang(github.com/leodido/go_urn)) = v1.2.1
Provides: bundled(golang(github.com/letsencrypt/boulder)) = v0.0.0_20221109233200_85aa52084eaf
Provides: bundled(golang(github.com/mailru/easyjson)) = v0.7.7
Provides: bundled(golang(github.com/manifoldco/promptui)) = v0.9.0
Provides: bundled(golang(github.com/mattn/go_runewidth)) = v0.0.14
Provides: bundled(golang(github.com/mattn/go_shellwords)) = v1.0.12
Provides: bundled(golang(github.com/miekg/pkcs11)) = v1.1.1
Provides: bundled(golang(github.com/mistifyio/go_zfs/v3)) = v3.0.0
Provides: bundled(golang(github.com/mitchellh/mapstructure)) = v1.5.0
Provides: bundled(golang(github.com/moby/sys/mount)) = v0.3.3
Provides: bundled(golang(github.com/moby/sys/mountinfo)) = v0.6.2
Provides: bundled(golang(github.com/moby/term)) = v0.0.0_20210619224110_3f7ff695adc6
Provides: bundled(golang(github.com/modern_go/concurrent)) = v0.0.0_20180306012644_bacd9c7ef1dd
Provides: bundled(golang(github.com/modern_go/reflect2)) = v1.0.2
Provides: bundled(golang(github.com/morikuni/aec)) = v1.0.0
Provides: bundled(golang(github.com/nxadm/tail)) = v1.4.8
Provides: bundled(golang(github.com/oklog/ulid)) = v1.3.1
Provides: bundled(golang(github.com/onsi/ginkgo)) = v1.16.5
Provides: bundled(golang(github.com/onsi/gomega)) = v1.26.0
Provides: bundled(golang(github.com/opencontainers/go_digest)) = v1.0.0
Provides: bundled(golang(github.com/opencontainers/image_spec)) = v1.1.0_rc2
Provides: bundled(golang(github.com/opencontainers/runc)) = v1.1.4
Provides: bundled(golang(github.com/opencontainers/runtime_spec)) = v1.0.3_0.20220825212826_86290f6a00fb
Provides: bundled(golang(github.com/opencontainers/runtime_tools)) = v0.9.1_0.20221014010322_58c91d646d86
Provides: bundled(golang(github.com/opencontainers/selinux)) = v1.10.2
Provides: bundled(golang(github.com/openshift/imagebuilder)) = v1.2.4_0.20220711175835_4151e43600df
Provides: bundled(golang(github.com/opentracing/opentracing_go)) = v1.2.0
Provides: bundled(golang(github.com/ostreedev/ostree_go)) = v0.0.0_20210805093236_719684c64e4f
Provides: bundled(golang(github.com/pkg/errors)) = v0.9.1
Provides: bundled(golang(github.com/pkg/sftp)) = v1.13.5
Provides: bundled(golang(github.com/pmezard/go_difflib)) = v1.0.0
Provides: bundled(golang(github.com/proglottis/gpgme)) = v0.1.3
Provides: bundled(golang(github.com/rivo/uniseg)) = v0.4.3
Provides: bundled(golang(github.com/rootless_containers/rootlesskit)) = v1.1.0
Provides: bundled(golang(github.com/seccomp/libseccomp_golang)) = v0.10.0
Provides: bundled(golang(github.com/segmentio/ksuid)) = v1.0.4
Provides: bundled(golang(github.com/sigstore/fulcio)) = v1.0.0
Provides: bundled(golang(github.com/sigstore/rekor)) = v1.0.1
Provides: bundled(golang(github.com/sigstore/sigstore)) = v1.5.1
Provides: bundled(golang(github.com/sirupsen/logrus)) = v1.9.0
Provides: bundled(golang(github.com/skratchdot/open_golang)) = v0.0.0_20200116055534_eef842397966
Provides: bundled(golang(github.com/spf13/cobra)) = v1.6.1
Provides: bundled(golang(github.com/spf13/pflag)) = v1.0.5
Provides: bundled(golang(github.com/stefanberger/go_pkcs11uri)) = v0.0.0_20201008174630_78d3cae3a980
Provides: bundled(golang(github.com/stretchr/testify)) = v1.8.1
Provides: bundled(golang(github.com/sylabs/sif/v2)) = v2.9.0
Provides: bundled(golang(github.com/syndtr/gocapability)) = v0.0.0_20200815063812_42c35b437635
Provides: bundled(golang(github.com/tchap/go_patricia)) = v2.3.0+incompatible
Provides: bundled(golang(github.com/theupdateframework/go_tuf)) = v0.5.2_0.20221207161717_9cb61d6e65f5
Provides: bundled(golang(github.com/titanous/rocacheck)) = v0.0.0_20171023193734_afe73141d399
Provides: bundled(golang(github.com/uber/jaeger_client_go)) = v2.30.0+incompatible
Provides: bundled(golang(github.com/ulikunitz/xz)) = v0.5.11
Provides: bundled(golang(github.com/vbatts/tar_split)) = v0.11.2
Provides: bundled(golang(github.com/vbauerster/mpb/v7)) = v7.5.3
Provides: bundled(golang(github.com/vishvananda/netlink)) = v1.2.1_beta.2
Provides: bundled(golang(github.com/vishvananda/netns)) = v0.0.0_20210104183010_2eb08e3e575f
Provides: bundled(golang(github.com/xeipuuv/gojsonpointer)) = v0.0.0_20190905194746_02993c407bfb
Provides: bundled(golang(github.com/xeipuuv/gojsonreference)) = v0.0.0_20180127040603_bd5ef7bd5415
Provides: bundled(golang(github.com/xeipuuv/gojsonschema)) = v1.2.0
Provides: bundled(golang(sigs.k8s.io/yaml)) = v1.3.0
%description
%{name} (Pod Manager) is a fully featured container engine that is a simple
@ -243,8 +131,6 @@ additional privileges.
Both tools share image (not container) storage, hence each can use or
manipulate images (but not containers) created by the other.
%{summary}
%{repo} Simple management tool for pods, containers and images
%package docker
Summary: Emulate Docker CLI using %{name}
@ -265,20 +151,26 @@ pages and %{name}.
Summary: Tests for %{name}
Requires: %{name} = %{epoch}:%{version}-%{release}
%if %{defined distro_bats}
Requires: bats
%endif
Requires: attr
Requires: jq
Requires: skopeo
Requires: nmap-ncat
Requires: httpd-tools
Requires: openssl
Requires: socat
Requires: slirp4netns
Requires: buildah
Requires: gnupg
Requires: xfsprogs
%description tests
%{summary}
This package contains system tests for %{name}
This package contains system tests for %{name}. Only intended to be used for
gating tests. Not supported for end users / customers.
%package remote
Summary: (Experimental) Remote client for managing %{name} containers
@ -293,41 +185,56 @@ run %{name}-remote in production.
manage pods, containers and container images. %{name}-remote supports ssh
connections as well.
%package plugins
Summary: Plugins for %{name}
Requires: dnsmasq
Recommends: %{name}-gvproxy = %{epoch}:%{version}-%{release}
%package -n %{name}sh
Summary: Confined login and user shell using %{name}
Requires: %{name} = %{epoch}:%{version}-%{release}
Provides: %{name}-shell = %{epoch}:%{version}-%{release}
Provides: %{name}-%{name}sh = %{epoch}:%{version}-%{release}
%description plugins
This plugin sets up the use of dnsmasq on a given CNI network so
that Pods can resolve each other by name. When configured,
the pod and its IP address are added to a network specific hosts file
that dnsmasq will read in. Similarly, when a pod
is removed from the network, it will remove the entry from the hosts
file. Each CNI network will have its own dnsmasq instance.
%description -n %{name}sh
%{name}sh provides a confined login and user shell with access to volumes and
capabilities specified in user quadlets.
%package gvproxy
Summary: Go replacement for libslirp and VPNKit
It is a symlink to %{_bindir}/%{name} and execs into the `%{name}sh` container
when `%{_bindir}/%{name}sh` is set as a login shell or set as os.Args[0].
%description gvproxy
A replacement for libslirp and VPNKit, written in pure Go.
It is based on the network stack of gVisor. Compared to libslirp,
gvisor-tap-vsock brings a configurable DNS server and
dynamic port forwarding.
%ifarch %{machine_arches}
%package machine
Summary: Metapackage for setting up %{name} machine
Requires: %{name} = %{epoch}:%{version}-%{release}
Requires: gvisor-tap-vsock
%if %{defined qemu}
%ifarch aarch64
Requires: qemu-system-aarch64-core
%endif
%ifarch x86_64
Requires: qemu-system-x86-core
%endif
%else
Requires: qemu-kvm
%endif
Requires: qemu-img
Requires: virtiofsd
ExclusiveArch: x86_64 aarch64
%description machine
This subpackage installs the dependencies for %{name} machine, for more see:
https://docs.podman.io/en/latest/markdown/podman-machine.1.html
%endif
%prep
%autosetup -Sgit -n %{name}-%{built_tag_strip}
%autosetup -Sgit -n %{name}-%{version_no_tilde}
sed -i 's;@@PODMAN@@\;$(BINDIR);@@PODMAN@@\;%{_bindir};' Makefile
# untar dnsname
tar zxf %{SOURCE1}
# untar %%{name}-gvproxy
tar zxf %{SOURCE2}
# cgroups-v1 is supported on rhel9
%if 0%{?rhel} == 9
sed -i '/DELETE ON RHEL9/,/DELETE ON RHEL9/d' libpod/runtime.go
%endif
%build
%set_build_flags
export CGO_CFLAGS=$CFLAGS
# These extra flags present in $CFLAGS have been skipped for now as they break the build
CGO_CFLAGS=$(echo $CGO_CFLAGS | sed 's/-flto=auto//g')
CGO_CFLAGS=$(echo $CGO_CFLAGS | sed 's/-Wp,D_GLIBCXX_ASSERTIONS//g')
@ -337,64 +244,61 @@ CGO_CFLAGS=$(echo $CGO_CFLAGS | sed 's/-specs=\/usr\/lib\/rpm\/redhat\/redhat-an
export CGO_CFLAGS+=" -m64 -mtune=generic -fcf-protection=full"
%endif
export GO111MODULE=off
export GOPATH=$(pwd)/_build:$(pwd)
export GOPROXY=direct
mkdir _build
cd _build
mkdir -p src/%{provider}.%{provider_tld}/%{project}
ln -s ../../../../ src/%{import_path}
cd ..
ln -s vendor src
LDFLAGS="-X %{ld_libpod}/define.buildInfo=${SOURCE_DATE_EPOCH:-$(date +%s)} \
-X \"%{ld_libpod}/define.buildOrigin=%{build_origin}\" \
-X %{ld_libpod}/config._installPrefix=%{_prefix} \
-X %{ld_libpod}/config._etcDir=%{_sysconfdir} \
-X %{ld_project}/pkg/systemd/quadlet._binDir=%{_bindir}"
# build date. FIXME: Makefile uses '/v2/libpod', that doesn't work here?
LDFLAGS="-X %{import_path}/libpod/define.buildInfo=$(date +%s)"
# This variable will be set by Packit actions. See .packit.yaml in the root dir
# of the repo (upstream as well as Fedora dist-git).
GIT_COMMIT="f845d14e941889ba4c071f35233d09b29d363c75"
LDFLAGS="$LDFLAGS -X %{ld_libpod}/define.gitCommit=$GIT_COMMIT"
# build rootlessport first
%gobuild -o bin/rootlessport %{import_path}/cmd/rootlessport
%gobuild -o bin/rootlessport ./cmd/rootlessport
export BASEBUILDTAGS="seccomp exclude_graphdriver_devicemapper $(hack/selinux_tag.sh) $(hack/systemd_tag.sh) $(hack/libsubid_tag.sh)"
export BASEBUILDTAGS="seccomp $(hack/systemd_tag.sh) $(hack/libsubid_tag.sh) libsqlite3 grpcnotrace"
# libtrust_openssl buildtag switches to using the FIPS-compatible func
# `ecdsa.HashSign`.
# Ref 1: https://github.com/golang-fips/go/blob/main/patches/015-add-hash-sign-verify.patch#L22
# Ref 2: https://github.com/containers/libtrust/blob/main/ec_key_openssl.go#L23
%if %{defined fips_enabled}
export BASEBUILDTAGS="$BASEBUILDTAGS libtrust_openssl"
%endif
# build %%{name}
export BUILDTAGS="$BASEBUILDTAGS $(hack/btrfs_installed_tag.sh) $(hack/btrfs_tag.sh) $(hack/libdm_tag.sh)"
export BUILDTAGS="$BASEBUILDTAGS $(hack/btrfs_installed_tag.sh)"
%gobuild -o bin/%{name} %{import_path}/cmd/%{name}
%if %{defined sequoia}
export BUILDTAGS="$BUILDTAGS containers_image_sequoia"
%endif
%gobuild -o bin/%{name} ./cmd/%{name}
# build %%{name}-remote
export BUILDTAGS="$BASEBUILDTAGS exclude_graphdriver_btrfs btrfs_noversion remote"
%gobuild -o bin/%{name}-remote %{import_path}/cmd/%{name}
export BUILDTAGS="$BASEBUILDTAGS exclude_graphdriver_btrfs remote"
%gobuild -o bin/%{name}-remote ./cmd/%{name}
# build quadlet
export BUILDTAGS="$BASEBUILDTAGS $(hack/btrfs_installed_tag.sh) $(hack/btrfs_tag.sh)"
%gobuild -o bin/quadlet %{import_path}/cmd/quadlet
export BUILDTAGS="$BASEBUILDTAGS $(hack/btrfs_installed_tag.sh)"
%gobuild -o bin/quadlet ./cmd/quadlet
cd %{repo_plugins}-%{commit_plugins}
mkdir _build
cd _build
mkdir -p src/%{provider}.%{provider_tld}/%{project}
ln -s ../../../../ src/%{import_path_plugins}
cd ..
ln -s vendor src
export GOPATH=$(pwd)/_build:$(pwd)
%gobuild -o bin/dnsname %{import_path_plugins}/plugins/meta/dnsname
cd ..
# build %%{name}-testing
export BUILDTAGS="$BASEBUILDTAGS $(hack/btrfs_installed_tag.sh)"
%gobuild -o bin/podman-testing ./cmd/podman-testing
cd %{repo_gvproxy}-%{commit_gvproxy}
mkdir _build
cd _build
mkdir -p src/%{provider}.%{provider_tld}/%{project}
ln -s ../../../../ src/%{import_path_gvproxy}
cd ..
ln -s vendor src
export GOPATH=$(pwd)/_build:$(pwd)
%gobuild -o bin/gvproxy %{import_path_gvproxy}/cmd/gvproxy
cd ..
# reset LDFLAGS for plugins binaries
LDFLAGS=''
%{__make} docs docker-docs
%install
install -dp %{buildroot}%{_unitdir}
PODMAN_VERSION=%{version} %{__make} PREFIX=%{buildroot}%{_prefix} ETCDIR=%{buildroot}%{_sysconfdir} \
PODMAN_VERSION=%{version} %{__make} DESTDIR=%{buildroot} PREFIX=%{_prefix} ETCDIR=%{_sysconfdir} \
install.bin \
install.man \
install.systemd \
@ -402,36 +306,33 @@ PODMAN_VERSION=%{version} %{__make} PREFIX=%{buildroot}%{_prefix} ETCDIR=%{build
install.docker \
install.docker-docs \
install.remote \
%if 0%{?fedora} >= 36
install.modules-load
%endif
install.testing
# install dnsname plugin
cd %{repo_plugins}-%{commit_plugins}
%{__make} PREFIX=%{_prefix} DESTDIR=%{buildroot} install
cd ..
# install gvproxy
cd %{repo_gvproxy}-%{commit_gvproxy}
install -dp %{buildroot}%{_libexecdir}/%{name}
install -p -m0755 bin/gvproxy %{buildroot}%{_libexecdir}/%{name}
cd ..
sed -i 's;%{buildroot};;g' %{buildroot}%{_bindir}/docker
# do not include docker and podman-remote man pages in main package
for file in `find %{buildroot}%{_mandir}/man[15] -type f | sed "s,%{buildroot},," | grep -v -e remote -e docker`; do
echo "$file*" >> podman.file-list
for file in `find %{buildroot}%{_mandir}/man[157] -type f | sed "s,%{buildroot},," | grep -v -e %{name}sh.1 -e remote -e docker`; do
echo "$file*" >> %{name}.file-list
done
rm -f %{buildroot}%{_mandir}/man5/docker*.5
install -d -p %{buildroot}/%{_datadir}/%{name}/test/system
cp -pav test/system %{buildroot}/%{_datadir}/%{name}/test/
install -d -p %{buildroot}%{_datadir}/%{name}/test/system
cp -pav test/system %{buildroot}%{_datadir}/%{name}/test/
%ifarch %{machine_arches}
# symlink virtiofsd in %%{name} libexecdir for machine subpackage
ln -s ../virtiofsd %{buildroot}%{_libexecdir}/%{name}
%endif
#define license tag if not already defined
%{!?_licensedir:%global license %doc}
# Include empty check to silence rpmlint warning
%check
%files -f %{name}.file-list
%license LICENSE
%license LICENSE vendor/modules.txt
%doc README.md CONTRIBUTING.md install.md transfer.md
%{_bindir}/%{name}
%dir %{_libexecdir}/%{name}
@ -448,11 +349,17 @@ cp -pav test/system %{buildroot}/%{_datadir}/%{name}/test/
%{_tmpfilesdir}/%{name}.conf
%{_systemdgeneratordir}/%{name}-system-generator
%{_systemdusergeneratordir}/%{name}-user-generator
# iptables modules are only needed with iptables-legacy,
# as of f41 netavark will default to nftables so do not load unessary modules
# https://fedoraproject.org/wiki/Changes/NetavarkNftablesDefault
%if %{defined fedora} && 0%{?fedora} < 41
%{_modulesloaddir}/%{name}-iptables.conf
%endif
%files docker
%{_bindir}/docker
%{_mandir}/man1/docker*.1*
%{_sysconfdir}/profile.d/%{name}-docker.*
%{_tmpfilesdir}/%{name}-docker.conf
%{_user_tmpfilesdir}/%{name}-docker.conf
@ -467,20 +374,18 @@ cp -pav test/system %{buildroot}/%{_datadir}/%{name}/test/
%{_datadir}/zsh/site-functions/_%{name}-remote
%files tests
%license LICENSE
%{_bindir}/%{name}-testing
%{_datadir}/%{name}/test
%files plugins
%license %{repo_plugins}-%{commit_plugins}/LICENSE
%doc %{repo_plugins}-%{commit_plugins}/{README.md,README_PODMAN.md}
%dir %{_libexecdir}/cni
%{_libexecdir}/cni/dnsname
%files -n %{name}sh
%{_bindir}/%{name}sh
%{_mandir}/man1/%{name}sh.1*
%files gvproxy
%license %{repo_gvproxy}-%{commit_gvproxy}/LICENSE
%doc %{repo_gvproxy}-%{commit_gvproxy}/README.md
%ifarch %{machine_arches}
%files machine
%dir %{_libexecdir}/%{name}
%{_libexecdir}/%{name}/gvproxy
%{_libexecdir}/%{name}/virtiofsd
%endif
%changelog
%autochangelog

View file

@ -1,3 +1 @@
SHA512 (dnsname-18822f9a4fb35d1349eb256f4cd2bfd372474d84.tar.gz) = de371722fbf18cd23b31485ee7ba36bb41d0d9a932d15e50872989c3ca1ff7246da63143c3725d81089fadda3821a54c18b22150d9d16005b07df6824f5f71f8
SHA512 (gvisor-tap-vsock-aab0ac9367fc5142f5857c36ac2352bcb3c60ab7.tar.gz) = e138125f0fad46f84afebad5769d4428cb29f24ce34e209b21689dc4409487bf2e946c9eb6551297baf36286c9be9a5310a77df4884563cfe247113980f18291
SHA512 (v4.4.1.tar.gz) = 33a22b7941f4f6715baa1cd2d5b29a4e2e95264c5239877122448f71e1408d8c393bcd2cdaef9516a580eede911c84f1cfea9d7b4c9d287a2737986fdc604e2c
SHA512 (v5.7.1.tar.gz) = 81fd4c27ff1d16dcb85229d4e4fd2cb06943ddfe966b5324fa8a8a957b2d2ec2aed7c5da05d6c009148f53b76545b27b0cba506622c8861f70bf7cad6c214a08

51
test/tmt/system.fmf Normal file
View file

@ -0,0 +1,51 @@
require:
- podman-tests
- psmisc
environment:
# PODMAN_TESTING envvar is set in system.sh
PODMAN: /usr/bin/podman
QUADLET: /usr/libexec/podman/quadlet
ROOTLESS_USER: "fedora"
adjust+:
- when: distro == centos-stream
environment+:
ROOTLESS_USER: "ec2-user"
- when: distro == rhel
environment+:
ROOTLESS_USER: "cloud-user"
- when: initiator != "packit"
environment+:
RELEASE_TESTING: true
/local-root:
tag: [ local, root ]
summary: local rootful test
test: bash ./system.sh
duration: 30m
/local-rootless:
tag: [ local, rootless ]
summary: rootless test
test: bash ./system.sh rootless
duration: 30m
/remote-root:
tag: [ remote, root ]
summary: remote rootful test
test: bash ./system.sh
duration: 30m
environment+:
PODMAN: /usr/bin/podman-remote
require+:
- podman-remote
/remote-rootless:
tag: [ remote, rootless ]
summary: remote rootless test
test: bash ./system.sh rootless
duration: 30m
environment+:
PODMAN: /usr/bin/podman-remote
require+:
- podman-remote

44
test/tmt/system.sh Normal file
View file

@ -0,0 +1,44 @@
#!/usr/bin/env bash
set -exo pipefail
uname -r
loginctl enable-linger "$ROOTLESS_USER"
rpm -q \
aardvark-dns \
buildah \
conmon \
container-selinux \
containers-common \
criu \
crun \
netavark \
passt \
podman \
podman-tests \
skopeo \
slirp4netns \
systemd
export system_service_cmd="/usr/bin/podman system service --timeout=0 &"
export test_cmd="whoami && cd /usr/share/podman/test/system && PODMAN_TESTING=/usr/bin/podman-testing bats ."
if [[ -z $1 ]]; then
if [[ $PODMAN == "/usr/bin/podman-remote" ]]; then
eval "$system_service_cmd"
fi
eval "$test_cmd"
elif [[ $1 == "rootless" ]]; then
if [[ $PODMAN == "/usr/bin/podman-remote" ]]; then
su - "$ROOTLESS_USER" -c "eval $system_service_cmd"
fi
su - "$ROOTLESS_USER" -c "eval $test_cmd"
fi
# Kill all podman processes for remote tests
if [[ $PODMAN == "/usr/bin/podman-remote" ]]; then
killall -q podman
fi
exit 0

13
test/tmt/tmt.fmf Normal file
View file

@ -0,0 +1,13 @@
enabled: false
adjust:
enabled: true
when: initiator != packit && distro != rhel
summary: Make sure that TMT container provision works
tag: [downstream]
require:
- tmt+provision-container
test:
tmt run --verbose --remove
provision --how container --image fedora
login --command 'cat /etc/os-release'
finish

View file

@ -1,25 +0,0 @@
I'm sorry. The playbooks here are a much-too-complicated way of saying:
- test podman (root and rootless) under cgroups v2
- reboot into cgroups v1
- repeat the same podman tests
We can't use standard-test-basic any more because, tl;dr, that has to
be the last stanza in the playbook and it doesn't offer any mechanism
for running a reboot in the middle of tests. (I actually found a way
but it was even uglier than this approach).
The starting point is tests.yml . From there:
tests.yml
\- test_podman.yml
|- roles/rootless_user_ready/
\- test_podman_cgroups_vn.yml (runs twice: cgroups v2, v1)
|- roles/set_cgroups/
\- roles/run_bats_tests/ (runs tests: root, rootless)
Principal result is the file 'artifacts/test.log'. It will contain
one line for each test run, format will be '(PASS|FAIL|ERROR) <test name>'
For each completed test there will also be a 'test.<name>.bats.log'
containing some setup blurbs (RPMs, environment) and the full BATS log.

View file

@ -1,36 +0,0 @@
---
# Copied from standard-test-basic
# ...and, 2020-05-13, updated, looks like they changed the whole thing around
- name: Check the results
local_action:
module: shell
cmd: |
log="{{ artifacts }}/test.log"
if [ ! -f "$log" ]; then
echo ERROR
echo "Test results not found." 1>&2
elif grep ^ERROR "$log" 1>&2; then
echo ERROR
elif grep ^FAIL "$log" 1>&2; then
echo FAIL
elif grep -q ^PASS "$log"; then
echo PASS
else
echo ERROR
echo "No test results found." 1>&2
fi
register: test_results
- name: Set role result
set_fact:
role_result: "{{ test_results.stdout }}"
role_message: "{{ test_results.stderr|d('test execution error.') }}"
- name: display results
vars:
msg: |
role_result: {{ role_result|d('Undefined') }}
{{ role_message|d('[No error messages found]') }}
debug:
msg: "{{ msg.split('\n') }}"
failed_when: role_message|d("") != ""

View file

@ -1,14 +0,0 @@
---
- name: make sure rootless account exists
user: name={{ rootless_user }}
- name: rootless account | enable linger
shell: loginctl enable-linger {{ rootless_user }}
- name: rootless account | get uid
getent:
database: passwd
key: "{{ rootless_user }}"
- name: rootless account | preserve uid
set_fact: rootless_uid="{{ getent_passwd[rootless_user][1] }}"

View file

@ -1,73 +0,0 @@
#!/bin/bash
#
# Run bats tests for a given $TEST_PACKAGE, e.g. buildah, podman
#
# This is invoked by the 'run_bats_tests' role; we assume that
# the package foo has a foo-tests subpackage which provides the
# directory /usr/share/foo/test/system, containing one or more .bats
# test files.
#
# We create two files:
#
# /tmp/test.summary.log - one-liner with FAIL, PASS, ERROR and a blurb
# /tmp/test.bats.log - full log of this script, plus the BATS run
#
export PATH=/usr/local/bin:/usr/sbin:/usr/bin
FULL_LOG=/tmp/test.bats.log
rm -f $FULL_LOG
touch $FULL_LOG
# Preserve output to a log file, but also emit on stdout. This covers
# RHEL (which preserves logfiles but runs ansible without --verbose)
# and Fedora (which hides logfiles but runs ansible --verbose).
exec &> >(tee -a $FULL_LOG)
# Log program versions
echo "Packages:"
echo " Kernel: $(uname -r)"
rpm -qa |\
egrep 'podman|conmon|containers-common|crun|runc|iptable|slirp|aardvark|netavark|containernetworking-plugins|systemd|container-selinux' |\
sort |\
sed -e 's/^/ /'
divider='------------------------------------------------------------------'
echo $divider
printenv | sort
echo $divider
echo "ip addr:"
ip addr
echo $divider
testdir=/usr/share/${TEST_PACKAGE}/test/system
if ! cd $testdir; then
echo "FAIL ${TEST_NAME} : cd $testdir" > /tmp/test.summary.log
exit 0
fi
if [[ $PODMAN =~ remote ]]; then
${PODMAN%%-remote} system service -t0 &>/dev/null &
PODMAN_SERVER_PID=$!
fi
echo "\$ bats ."
bats .
rc=$?
if [[ -n "$PODMAN_SERVER_PID" ]]; then
kill $PODMAN_SERVER_PID
fi
echo $divider
echo "bats completed with status $rc"
status=PASS
if [ $rc -ne 0 ]; then
status=FAIL
fi
echo "${status} ${TEST_NAME}" > /tmp/test.summary.log
# FIXME: for CI purposes, always exit 0. This allows subsequent tests.
exit 0

View file

@ -1,10 +0,0 @@
---
# Create empty results file, world-writable
- name: initialize test.log file
copy: dest=/tmp/test.log content='' force=yes mode=0666
- name: execute tests
include: run_one_test.yml
with_items: "{{ tests }}"
loop_control:
loop_var: test

View file

@ -1,87 +0,0 @@
---
- name: "{{ test.name }} | install test packages"
dnf: name="{{ test.package }}-tests" state=installed
- name: "{{ test.name }} | define helper variables"
set_fact:
test_name_oneword: "{{ test.name | replace(' ','-') }}"
# UGH. This is necessary because our caller sets some environment variables
# and we need to set a few more based on other caller variables; then we
# need to combine the two dicts when running the test. This seems to be
# the only way to do it in ansible.
- name: "{{ test.name }} | define local environment"
set_fact:
local_environment:
TEST_NAME: "{{ test.name }}"
TEST_PACKAGE: "{{ test.package }}"
TEST_ENV: "{{ test.environment }}"
- name: "{{ test.name }} | setup/teardown helper | see if exists"
local_action: stat path={{ role_path }}/files/helper.{{ test_name_oneword }}.sh
register: helper
- name: "{{ test.name }} | setup/teardown helper | install"
copy: src=helper.{{ test_name_oneword }}.sh dest=/tmp/helper.sh
when: helper.stat.exists
# This is what runs the BATS tests.
- name: "{{ test.name }} | run test"
script: ./run_bats_tests.sh
args:
chdir: /usr/share/{{ test.package }}/test/system
become: "{{ true if test.become is defined else false }}"
become_user: "{{ rootless_user }}"
environment: "{{ local_environment | combine(test.environment) }}"
# BATS tests will always exit zero and should leave behind two files:
# a full log (test.bats.log) and a one-line PASS/FAIL file (.summary.log)
- name: "{{ test.name }} | pull logs"
fetch:
src: "/tmp/test.{{ item }}.log"
dest: "{{ artifacts }}/test.{{ test_name_oneword }}.{{ item }}.log"
flat: yes
with_items:
- bats
- summary
# Collect all the one-line PASS/FAIL results in one file, test.log
# Write the same thing, in a different format, to results.yml
# https://docs.fedoraproject.org/en-US/ci/standard-test-interface/
- name: "{{ test.name }} | keep running tally of test results"
local_action:
module: shell
cmd: |
cd {{ artifacts }}
cat "test.{{ test_name_oneword }}.summary.log" >>test.log
status=$(awk '{print $1}' <test.{{ test_name_oneword }}.summary.log | tr A-Z a-z)
echo "- test: {{ test.name }}" >>results.yml
echo " result: $status" >>results.yml
echo " logs: test.{{ test_name_oneword }}.bats.log" >>results.yml
# delete the oneliner file, to keep artifacts dir clean
rm -f test.{{ test_name_oneword }}.summary.log
- name: "{{ test.name }} | remove remote logs and helpers"
file:
dest=/tmp/{{ item }}
state=absent
with_items:
- test.bats.log
- test.summary.log
- helper.sh
# AAAAARGH!
#
# Fedora gating tests are failing, because str-common-final/tasks/main.yml
# tries to pull test.log and other logs from $remote_host:/tmp/artifacts .
# Those don't exist, because I track status and artifacts locally, because
# with the reboot I can't rely on /tmp being preserved.
# I see no way to tell str-common-final to skip this step; so let's just
# push logs over upon completion of each subtest.
- name: keep remote artifacts synced
synchronize:
src: "{{ artifacts }}/"
dest: "{{ remote_artifacts|d('/tmp/artifacts') }}/"
mode: push

View file

@ -1,75 +0,0 @@
---
# Check the CURRENT cgroup level; we get this from /proc/cmdline
- name: check current kernel options
shell: fgrep systemd.unified_cgroup_hierarchy=0 /proc/cmdline
register: result
ignore_errors: true
- name: determine current cgroups | assume v2
set_fact: current_cgroups=2
- name: determine current cgroups | looks like v1
set_fact: current_cgroups=1
when: result is succeeded
- debug:
msg: "want: v{{ want_cgroups }} actual: v{{ current_cgroups }}"
- name: grubenv, pre-edit, cat
shell: cat /boot/grub2/grubenv
register: grubenv
- name: grubenv, pre-edit, show
debug:
msg: "{{ grubenv.stdout_lines }}"
# Update grubenv file to reflect the desired cgroup level
- name: remove cgroup option from kernel flags
shell:
cmd: sed -i -e "s/^\(kernelopts=.*\)systemd\.unified_cgroup_hierarchy=.\(.*\)/\1 \2/" /boot/grub2/grubenv
warn: false
- name: add it with the desired value
shell:
cmd: sed -i -e "s/^\(kernelopts=.*\)/\1 systemd.unified_cgroup_hierarchy=0/" /boot/grub2/grubenv
warn: false
when: want_cgroups == 1
- name: grubenv, post-edit, cat
shell: cat /boot/grub2/grubenv
register: grubenv
- name: grubenv, post-edit, show
debug:
msg: "post: {{ grubenv.stdout_lines }}"
# If want != have, reboot
- name: reboot and wait
block:
- name: reboot
reboot:
reboot_timeout: 900
ignore_errors: yes
- name: wait and reconnect
wait_for_connection:
timeout: 900
when: want_cgroups|int != current_cgroups|int
- set_fact:
expected_fstype:
- none
- tmpfs
- cgroup2fs
- name: confirm cgroups setting
shell: stat -f -c "%T" /sys/fs/cgroup
register: fstype
- debug:
msg: "stat(/sys/fs/cgroup) = {{ fstype.stdout }}"
- name: system cgroups is the expected type
assert:
that:
- fstype.stdout == expected_fstype[want_cgroups|int]
fail_msg: "stat(/sys/fs/cgroup) = {{ fstype.stdout }} (expected {{ expected_fstype[want_cgroups|int] }})"

View file

@ -1,50 +0,0 @@
---
- hosts: localhost
tags:
- classic
- container
vars:
- artifacts: ./artifacts
rootless_user: testuser
roles:
- role: rootless_user_ready
tasks:
# At the start of a run, clean up state. Useful for test reruns.
- name: local artifacts directory exists
local_action: file path="{{ artifacts }}" state=directory
- name: remove stale log files
local_action: shell rm -f {{ artifacts }}/test*.log
- name: clear test results (test.log)
local_action: command truncate --size=0 {{ artifacts }}/test.log
- name: clear test results (results.yml)
local_action: copy content="results:\n" dest={{ artifacts }}/results.yml
# These are the actual tests: set cgroups vN, then run root/rootless tests.
#
# FIXME FIXME FIXME: 2020-05-21: 'loop' should be '2, 1' but there's some
# nightmarish bug in CI wherein reboots hang forever. There's a bug open[1]
# but it seems dead. Without a working reboot, there's no way to test v1.
# [1] https://redhat.service-now.com/surl.do?n=PNT0808530
# I'm leaving this as a 'loop' in (foolish? vain?) hope that the bug will
# be fixed. Let's revisit this after, say, 2020-08. If the bug persists
# then let's just revert the entire cgroups v1 change, and go back to
# using standard-test-basic.
- name: set cgroups and run podman tests
include_tasks: test_podman_cgroups_vn.yml
loop: [ 2 ]
loop_control:
loop_var: want_cgroups
- name: test podman-remote
include_tasks: test_podman_remote.yml
- name: test toolbox
include_tasks: test_toolbox.yml
# Postprocessing: check for FAIL or ERROR in any test, exit 1 if so
- name: check results
include_tasks: check_results.yml

View file

@ -1,21 +0,0 @@
---
# Requires: 'want_cgroups' variable set to 1 or 2
- include_role:
name: set_cgroups
- include_role:
name: run_bats_tests
vars:
tests:
# Yes, this is horrible duplication, but trying to refactor in ansible
# yields even more horrible unreadable code. This is the lesser evil.
- name: podman root cgroupsv{{ want_cgroups }}
package: podman
environment:
PODMAN: /usr/bin/podman
QUADLET: /usr/libexec/podman/quadlet
- name: podman rootless cgroupsv{{ want_cgroups }}
package: podman
environment:
PODMAN: /usr/bin/podman
QUADLET: /usr/libexec/podman/quadlet
become: true

View file

@ -1,19 +0,0 @@
---
- name: "podman-remote | install"
dnf: name="podman-remote" state=installed
- include_role:
name: run_bats_tests
vars:
tests:
- name: podman-remote root
package: podman
environment:
PODMAN: /usr/bin/podman-remote
QUADLET: /usr/libexec/podman/quadlet
- name: podman-remote rootless
package: podman
environment:
PODMAN: /usr/bin/podman-remote
QUADLET: /usr/libexec/podman/quadlet
become: true

View file

@ -1,10 +0,0 @@
---
- include_role:
name: run_bats_tests
vars:
tests:
- name: toolbox
package: toolbox
become: true
environment:
XDG_RUNTIME_DIR: /run/user/{{ rootless_uid }}

View file

@ -1 +0,0 @@
- import_playbook: test_podman.yml