From 0d598203023bdfa885672a3d8aa56a76ae6d378e Mon Sep 17 00:00:00 2001 From: MSVSphere Packaging Team Date: Tue, 26 Nov 2024 19:31:51 +0300 Subject: [PATCH] import toolbox-0.0.99.5-15.el10 --- .gitignore | 1 + .toolbox.metadata | 1 + ...ation-paths-for-coreos-toolbox-users.patch | 101 ++ ...ags-match-Fedora-s-gobuild-for-PPC64.patch | 54 ++ ...e-build-flags-match-Fedora-s-gobuild.patch | 54 ++ ...flags-match-RHEL-s-gobuild-for-PPC64.patch | 55 ++ ...the-build-flags-match-RHEL-s-gobuild.patch | 55 ++ ...books-test-system-bats-1.11-podman-5.patch | 161 ++++ ...nbreak-Podman-s-downstream-Fedora-CI.patch | 208 ++++ SOURCES/toolbox-test-system-new.patch | 894 ++++++++++++++++++ SOURCES/toolbox.conf | 17 + SPECS/toolbox.spec | 488 ++++++++++ 12 files changed, 2089 insertions(+) create mode 100644 .gitignore create mode 100644 .toolbox.metadata create mode 100644 SOURCES/toolbox-Add-migration-paths-for-coreos-toolbox-users.patch create mode 100644 SOURCES/toolbox-Make-the-build-flags-match-Fedora-s-gobuild-for-PPC64.patch create mode 100644 SOURCES/toolbox-Make-the-build-flags-match-Fedora-s-gobuild.patch create mode 100644 SOURCES/toolbox-Make-the-build-flags-match-RHEL-s-gobuild-for-PPC64.patch create mode 100644 SOURCES/toolbox-Make-the-build-flags-match-RHEL-s-gobuild.patch create mode 100644 SOURCES/toolbox-playbooks-test-system-bats-1.11-podman-5.patch create mode 100644 SOURCES/toolbox-test-system-Unbreak-Podman-s-downstream-Fedora-CI.patch create mode 100644 SOURCES/toolbox-test-system-new.patch create mode 100644 SOURCES/toolbox.conf create mode 100644 SPECS/toolbox.spec diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..3d03030 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +SOURCES/toolbox-0.0.99.5-vendored.tar.xz diff --git a/.toolbox.metadata b/.toolbox.metadata new file mode 100644 index 0000000..4b7410d --- /dev/null +++ b/.toolbox.metadata @@ -0,0 +1 @@ +9b8595f66d8dd76636c308426919bb81cba5498a SOURCES/toolbox-0.0.99.5-vendored.tar.xz diff --git a/SOURCES/toolbox-Add-migration-paths-for-coreos-toolbox-users.patch b/SOURCES/toolbox-Add-migration-paths-for-coreos-toolbox-users.patch new file mode 100644 index 0000000..88003a3 --- /dev/null +++ b/SOURCES/toolbox-Add-migration-paths-for-coreos-toolbox-users.patch @@ -0,0 +1,101 @@ +From d461caa5b1a278124d039df93140d2d5bf4eabe7 Mon Sep 17 00:00:00 2001 +From: Debarshi Ray +Date: Wed, 18 Aug 2021 17:55:21 +0200 +Subject: [PATCH 1/2] cmd/run: Make sosreport work by setting the HOST + environment variable + +https://bugzilla.redhat.com/show_bug.cgi?id=1940037 +--- + src/cmd/run.go | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/src/cmd/run.go b/src/cmd/run.go +index 7657ffa50821..23d422623b14 100644 +--- a/src/cmd/run.go ++++ b/src/cmd/run.go +@@ -501,6 +501,7 @@ func constructExecArgs(container, preserveFDs string, + execArgs = append(execArgs, envOptions...) + + execArgs = append(execArgs, []string{ ++ "--env", "HOST=/run/host", + "--interactive", + "--preserve-fds", preserveFDs, + }...) +-- +2.39.2 + + +From 3c2c67752e8f88f72058799cbce3612fc937b230 Mon Sep 17 00:00:00 2001 +From: Debarshi Ray +Date: Fri, 10 Dec 2021 13:42:15 +0100 +Subject: [PATCH 2/2] test/system: Update to test the migration path for + coreos/toolbox users + +This reverts the changes to the tests made in commit +411147988b730dabf8b9e761a5426e12d648f008 by restoring commit +ca899c8a561f357ae32c6ba6813520fd8b682abb and the parts of commit +3aeb7cf288319e35eb9c5e26ea18d97452462c1e that were removed. +--- + test/system/002-help.bats | 11 ----------- + test/system/100-root.bats | 27 +++++++++++++++++++++++++++ + 2 files changed, 27 insertions(+), 11 deletions(-) + create mode 100644 test/system/100-root.bats + +diff --git a/test/system/002-help.bats b/test/system/002-help.bats +index 7e4565e9d23d..58a4c2c87ece 100644 +--- a/test/system/002-help.bats ++++ b/test/system/002-help.bats +@@ -23,17 +23,6 @@ setup() { + _setup_environment + } + +-@test "help: Try to run toolbox with no command" { +- run $TOOLBOX +- +- assert_failure +- assert_line --index 0 "Error: missing command" +- assert_line --index 1 "create Create a new toolbox container" +- assert_line --index 2 "enter Enter an existing toolbox container" +- assert_line --index 3 "list List all existing toolbox containers and images" +- assert_line --index 4 "Run 'toolbox --help' for usage." +-} +- + @test "help: Run command 'help'" { + if ! command -v man 2>/dev/null; then + skip "Test works only if man is in PATH" +diff --git a/test/system/100-root.bats b/test/system/100-root.bats +new file mode 100644 +index 000000000000..32d87904213e +--- /dev/null ++++ b/test/system/100-root.bats +@@ -0,0 +1,27 @@ ++#!/usr/bin/env bats ++ ++load 'libs/bats-support/load' ++load 'libs/bats-assert/load' ++load 'libs/helpers' ++ ++setup() { ++ _setup_environment ++ cleanup_containers ++} ++ ++teardown() { ++ cleanup_containers ++} ++ ++@test "root: Try to enter the default container with no containers created" { ++ run $TOOLBOX <<< "n" ++ ++ assert_success ++ assert_line --index 0 "No toolbox containers found. Create now? [y/N] A container can be created later with the 'create' command." ++ assert_line --index 1 "Run 'toolbox --help' for usage." ++} ++ ++# TODO: Write the test ++@test "root: Enter the default container when 1 non-default container is present" { ++ skip "Testing of entering toolboxes is not implemented" ++} +-- +2.39.2 + diff --git a/SOURCES/toolbox-Make-the-build-flags-match-Fedora-s-gobuild-for-PPC64.patch b/SOURCES/toolbox-Make-the-build-flags-match-Fedora-s-gobuild-for-PPC64.patch new file mode 100644 index 0000000..35ecc83 --- /dev/null +++ b/SOURCES/toolbox-Make-the-build-flags-match-Fedora-s-gobuild-for-PPC64.patch @@ -0,0 +1,54 @@ +From 4f8b443ab925c84d059d894ddcfcf4dcf66a747e Mon Sep 17 00:00:00 2001 +From: Debarshi Ray +Date: Mon, 29 Jun 2020 17:57:47 +0200 +Subject: [PATCH] build: Make the build flags match Fedora's %{gobuildflags} + for PPC64 + +The Go toolchain also doesn't like the LDFLAGS environment variable as +exported by Fedora's %{meson} RPM macro. + +Note that these flags are only meant for the "ppc64" CPU architecture, +and should be kept updated to match Fedora's Go guidelines. Use +'rpm --eval "%{gobuildflags}"' to expand the %{gobuildflags} macro. +--- + src/go-build-wrapper | 13 +++++++++---- + 1 file changed, 9 insertions(+), 4 deletions(-) + +diff --git a/src/go-build-wrapper b/src/go-build-wrapper +index c572d6dfb02b..cae2de426a96 100755 +--- a/src/go-build-wrapper ++++ b/src/go-build-wrapper +@@ -33,9 +33,9 @@ if ! cd "$1"; then + exit 1 + fi + +-tags="" ++tags="-tags rpm_crashtraceback,${BUILDTAGS:-}" + if $7; then +- tags="-tags migration_path_for_coreos_toolbox" ++ tags="$tags,migration_path_for_coreos_toolbox" + fi + + if ! libc_dir=$("$5" --print-file-name=libc.so); then +@@ -70,11 +70,16 @@ fi + + dynamic_linker="/run/host$dynamic_linker_canonical_dirname/$dynamic_linker_basename" + ++unset LDFLAGS ++ + # shellcheck disable=SC2086 + go build \ ++ -compiler gc \ + $tags \ +- -trimpath \ +- -ldflags "-extldflags '-Wl,-dynamic-linker,$dynamic_linker -Wl,-rpath,/run/host$libc_dir_canonical_dirname' -linkmode external -X github.com/containers/toolbox/pkg/version.currentVersion=$4" \ ++ -ldflags "${LDFLAGS:-} -B 0x$(head -c20 /dev/urandom|od -An -tx1|tr -d ' \n') -compressdwarf=false -extldflags '-Wl,-z,relro -Wl,--as-needed -Wl,-z,now -specs=/usr/lib/rpm/redhat/redhat-hardened-ld -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -Wl,--build-id=sha1 -Wl,-dynamic-linker,$dynamic_linker -Wl,-rpath,/run/host$libc_dir_canonical_dirname' -linkmode external -X github.com/containers/toolbox/pkg/version.currentVersion=$4" \ ++ -a \ ++ -v \ ++ -x \ + -o "$2/$3" + + exit "$?" +-- +2.43.0 + diff --git a/SOURCES/toolbox-Make-the-build-flags-match-Fedora-s-gobuild.patch b/SOURCES/toolbox-Make-the-build-flags-match-Fedora-s-gobuild.patch new file mode 100644 index 0000000..c290d36 --- /dev/null +++ b/SOURCES/toolbox-Make-the-build-flags-match-Fedora-s-gobuild.patch @@ -0,0 +1,54 @@ +From 3175ef2fab1f61f5784361070ac338dabda3c04e Mon Sep 17 00:00:00 2001 +From: Debarshi Ray +Date: Mon, 29 Jun 2020 17:57:47 +0200 +Subject: [PATCH] build: Make the build flags match Fedora's %{gobuildflags} + +The Go toolchain doesn't like the LDFLAGS environment variable as +exported by Fedora's %{meson} RPM macro. + +Note that these flags are meant for every CPU architecture other than +PPC64, and should be kept updated to match Fedora's Go guidelines. Use +'rpm --eval "%{gobuildflags}"' to expand the %{gobuildflags} macro. +--- + src/go-build-wrapper | 14 ++++++++++---- + 1 file changed, 10 insertions(+), 4 deletions(-) + +diff --git a/src/go-build-wrapper b/src/go-build-wrapper +index c572d6dfb02b..0e6a2efa6853 100755 +--- a/src/go-build-wrapper ++++ b/src/go-build-wrapper +@@ -33,9 +33,9 @@ if ! cd "$1"; then + exit 1 + fi + +-tags="" ++tags="-tags rpm_crashtraceback,${BUILDTAGS:-}" + if $7; then +- tags="-tags migration_path_for_coreos_toolbox" ++ tags="$tags,migration_path_for_coreos_toolbox" + fi + + if ! libc_dir=$("$5" --print-file-name=libc.so); then +@@ -70,11 +70,17 @@ fi + + dynamic_linker="/run/host$dynamic_linker_canonical_dirname/$dynamic_linker_basename" + ++unset LDFLAGS ++ + # shellcheck disable=SC2086 + go build \ ++ -buildmode pie \ ++ -compiler gc \ + $tags \ +- -trimpath \ +- -ldflags "-extldflags '-Wl,-dynamic-linker,$dynamic_linker -Wl,-rpath,/run/host$libc_dir_canonical_dirname' -linkmode external -X github.com/containers/toolbox/pkg/version.currentVersion=$4" \ ++ -ldflags "${LDFLAGS:-} -B 0x$(head -c20 /dev/urandom|od -An -tx1|tr -d ' \n') -compressdwarf=false -extldflags '-Wl,-z,relro -Wl,--as-needed -Wl,-z,now -specs=/usr/lib/rpm/redhat/redhat-hardened-ld -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -Wl,--build-id=sha1 -Wl,-dynamic-linker,$dynamic_linker -Wl,-rpath,/run/host$libc_dir_canonical_dirname' -linkmode external -X github.com/containers/toolbox/pkg/version.currentVersion=$4" \ ++ -a \ ++ -v \ ++ -x \ + -o "$2/$3" + + exit "$?" +-- +2.43.0 + diff --git a/SOURCES/toolbox-Make-the-build-flags-match-RHEL-s-gobuild-for-PPC64.patch b/SOURCES/toolbox-Make-the-build-flags-match-RHEL-s-gobuild-for-PPC64.patch new file mode 100644 index 0000000..15b52a8 --- /dev/null +++ b/SOURCES/toolbox-Make-the-build-flags-match-RHEL-s-gobuild-for-PPC64.patch @@ -0,0 +1,55 @@ +From 973600219168f3c4efeb627c103085555327eaa5 Mon Sep 17 00:00:00 2001 +From: Debarshi Ray +Date: Mon, 29 Jun 2020 17:57:47 +0200 +Subject: [PATCH] build: Make the build flags match RHEL's %{gobuildflags} for + PPC64 + +The Go toolchain also doesn't like the LDFLAGS environment variable as +exported by RHEL's %{meson} RPM macro, and RHEL's RPM toolchain doesn't +like the compressed DWARF data generated by the Go toolchain. + +Note that these flags are only meant for the "ppc64" CPU architecture, +and should be kept updated to match RHEL's Go guidelines. Use +'rpm --eval "%{gobuildflags}"' to expand the %{gobuildflags} macro. +--- + src/go-build-wrapper | 13 +++++++++---- + 1 file changed, 9 insertions(+), 4 deletions(-) + +diff --git a/src/go-build-wrapper b/src/go-build-wrapper +index c572d6dfb02b..86f174716608 100755 +--- a/src/go-build-wrapper ++++ b/src/go-build-wrapper +@@ -33,9 +33,9 @@ if ! cd "$1"; then + exit 1 + fi + +-tags="" ++tags="-tags rpm_crashtraceback,${BUILDTAGS:-},libtrust_openssl" + if $7; then +- tags="-tags migration_path_for_coreos_toolbox" ++ tags="$tags,migration_path_for_coreos_toolbox" + fi + + if ! libc_dir=$("$5" --print-file-name=libc.so); then +@@ -70,11 +70,16 @@ fi + + dynamic_linker="/run/host$dynamic_linker_canonical_dirname/$dynamic_linker_basename" + ++unset LDFLAGS ++ + # shellcheck disable=SC2086 + go build \ ++ -compiler gc \ + $tags \ +- -trimpath \ +- -ldflags "-extldflags '-Wl,-dynamic-linker,$dynamic_linker -Wl,-rpath,/run/host$libc_dir_canonical_dirname' -linkmode external -X github.com/containers/toolbox/pkg/version.currentVersion=$4" \ ++ -ldflags "${LDFLAGS:-} -B 0x$(head -c20 /dev/urandom|od -An -tx1|tr -d ' \n') -compressdwarf=false -extldflags '-Wl,-z,relro -Wl,--as-needed -Wl,-z,now -specs=/usr/lib/rpm/redhat/redhat-hardened-ld -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -Wl,-dynamic-linker,$dynamic_linker -Wl,-rpath,/run/host$libc_dir_canonical_dirname' -linkmode external -X github.com/containers/toolbox/pkg/version.currentVersion=$4" \ ++ -a \ ++ -v \ ++ -x \ + -o "$2/$3" + + exit "$?" +-- +2.39.2 + diff --git a/SOURCES/toolbox-Make-the-build-flags-match-RHEL-s-gobuild.patch b/SOURCES/toolbox-Make-the-build-flags-match-RHEL-s-gobuild.patch new file mode 100644 index 0000000..1fed4da --- /dev/null +++ b/SOURCES/toolbox-Make-the-build-flags-match-RHEL-s-gobuild.patch @@ -0,0 +1,55 @@ +From aeaa8cd30a8c5ad33ee1fe6b9e84ecbb28f7264c Mon Sep 17 00:00:00 2001 +From: Debarshi Ray +Date: Mon, 29 Jun 2020 17:57:47 +0200 +Subject: [PATCH] build: Make the build flags match RHEL's %{gobuildflags} + +The Go toolchain doesn't like the LDFLAGS environment variable as +exported by RHEL's %{meson} RPM macro, and RHEL's RPM toolchain doesn't +like the compressed DWARF data generated by the Go toolchain. + +Note that these flags are meant for every CPU architecture other than +PPC64, and should be kept updated to match RHEL's Go guidelines. Use +'rpm --eval "%{gobuildflags}"' to expand the %{gobuildflags} macro. +--- + src/go-build-wrapper | 14 ++++++++++---- + 1 file changed, 10 insertions(+), 4 deletions(-) + +diff --git a/src/go-build-wrapper b/src/go-build-wrapper +index c572d6dfb02b..d39764fda0c1 100755 +--- a/src/go-build-wrapper ++++ b/src/go-build-wrapper +@@ -33,9 +33,9 @@ if ! cd "$1"; then + exit 1 + fi + +-tags="" ++tags="-tags rpm_crashtraceback,${BUILDTAGS:-},libtrust_openssl" + if $7; then +- tags="-tags migration_path_for_coreos_toolbox" ++ tags="$tags,migration_path_for_coreos_toolbox" + fi + + if ! libc_dir=$("$5" --print-file-name=libc.so); then +@@ -70,11 +70,17 @@ fi + + dynamic_linker="/run/host$dynamic_linker_canonical_dirname/$dynamic_linker_basename" + ++unset LDFLAGS ++ + # shellcheck disable=SC2086 + go build \ ++ -buildmode pie \ ++ -compiler gc \ + $tags \ +- -trimpath \ +- -ldflags "-extldflags '-Wl,-dynamic-linker,$dynamic_linker -Wl,-rpath,/run/host$libc_dir_canonical_dirname' -linkmode external -X github.com/containers/toolbox/pkg/version.currentVersion=$4" \ ++ -ldflags "${LDFLAGS:-} -B 0x$(head -c20 /dev/urandom|od -An -tx1|tr -d ' \n') -compressdwarf=false -extldflags '-Wl,-z,relro -Wl,--as-needed -Wl,-z,now -specs=/usr/lib/rpm/redhat/redhat-hardened-ld -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -Wl,-dynamic-linker,$dynamic_linker -Wl,-rpath,/run/host$libc_dir_canonical_dirname' -linkmode external -X github.com/containers/toolbox/pkg/version.currentVersion=$4" \ ++ -a \ ++ -v \ ++ -x \ + -o "$2/$3" + + exit "$?" +-- +2.39.2 + diff --git a/SOURCES/toolbox-playbooks-test-system-bats-1.11-podman-5.patch b/SOURCES/toolbox-playbooks-test-system-bats-1.11-podman-5.patch new file mode 100644 index 0000000..7834933 --- /dev/null +++ b/SOURCES/toolbox-playbooks-test-system-bats-1.11-podman-5.patch @@ -0,0 +1,161 @@ +From 6626b11e1565412e411f585657ebe9615ec58cad Mon Sep 17 00:00:00 2001 +From: Debarshi Ray +Date: Wed, 17 Apr 2024 16:58:32 +0200 +Subject: [PATCH 1/2] playbooks: Show the Bats version + +Ansible's built-in 'package' module doesn't show any details when +installing the RPMs. All that can be seen is: + TASK [Install RPM packages] + fedora-rawhide | changed + +Therefore, there's no way to know what version of the packages got +installed. + +In this case, not knowing the Bats version being used by the CI makes it +difficult to know why the tests are generating this spew on Fedora +Rawhide [1]: + TASK [Run system tests] + test/system/libs/helpers.bash: line 7: TEMP_BASE_DIR: readonly variable + test/system/libs/helpers.bash: line 8: TEMP_STORAGE_DIR: readonly variable + test/system/libs/helpers.bash: line 10: IMAGE_CACHE_DIR: readonly variable + test/system/libs/helpers.bash: line 11: ROOTLESS_PODMAN_STORE_DIR: readonly variable + test/system/libs/helpers.bash: line 12: ROOTLESS_PODMAN_RUNROOT_DIR: readonly variable + test/system/libs/helpers.bash: line 13: PODMAN_STORE_CONFIG_FILE: readonly variable + test/system/libs/helpers.bash: line 14: DOCKER_REG_ROOT: readonly variable + test/system/libs/helpers.bash: line 15: DOCKER_REG_CERTS_DIR: readonly variable + test/system/libs/helpers.bash: line 16: DOCKER_REG_AUTH_DIR: readonly variable + test/system/libs/helpers.bash: line 17: DOCKER_REG_URI: readonly variable + test/system/libs/helpers.bash: line 18: DOCKER_REG_NAME: readonly variable + test/system/libs/helpers.bash: line 21: PODMAN: readonly variable + test/system/libs/helpers.bash: line 22: TOOLBX: readonly variable + test/system/libs/helpers.bash: line 23: SKOPEO: readonly variable + ... + fedora-rawhide | 1..340 + +[1] https://github.com/bats-core/bats-core/pull/904 + +https://github.com/containers/toolbox/pull/1482 +--- + playbooks/dependencies-centos-9-stream.yaml | 2 +- + playbooks/dependencies-fedora.yaml | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +diff --git a/playbooks/dependencies-centos-9-stream.yaml b/playbooks/dependencies-centos-9-stream.yaml +index ffbc6d9903cb..d058d314b7b3 100644 +--- a/playbooks/dependencies-centos-9-stream.yaml ++++ b/playbooks/dependencies-centos-9-stream.yaml +@@ -54,7 +54,7 @@ + chdir: '{{ zuul.project.src_dir }}' + + - name: Check versions of crucial packages +- command: rpm -qa ShellCheck codespell *kernel* gcc *glibc* golang golang-github-cpuguy83-md2man shadow-utils-subid-devel podman conmon containernetworking-plugins containers-common container-selinux crun fuse-overlayfs flatpak-session-helper skopeo ++ command: rpm -qa ShellCheck bats codespell *kernel* gcc *glibc* golang golang-github-cpuguy83-md2man shadow-utils-subid-devel podman conmon containernetworking-plugins containers-common container-selinux crun fuse-overlayfs flatpak-session-helper skopeo + + - name: Show podman versions + command: podman version +diff --git a/playbooks/dependencies-fedora.yaml b/playbooks/dependencies-fedora.yaml +index d493bd0729ea..ade169917cbe 100644 +--- a/playbooks/dependencies-fedora.yaml ++++ b/playbooks/dependencies-fedora.yaml +@@ -54,7 +54,7 @@ + chdir: '{{ zuul.project.src_dir }}' + + - name: Check versions of crucial packages +- command: rpm -qa ShellCheck codespell *kernel* gcc *glibc* shadow-utils-subid-devel golang golang-github-cpuguy83-md2man podman conmon containernetworking-plugins containers-common container-selinux crun fuse-overlayfs flatpak-session-helper skopeo ++ command: rpm -qa ShellCheck bash bats codespell *kernel* gcc *glibc* shadow-utils-subid-devel golang golang-github-cpuguy83-md2man podman conmon containernetworking-plugins containers-common container-selinux crun fuse-overlayfs flatpak-session-helper skopeo + + - name: Show podman versions + command: podman version +-- +2.44.0 + + +From b58f9a51088afbfc22edb0b25776cfa2c4d8cc40 Mon Sep 17 00:00:00 2001 +From: Debarshi Ray +Date: Mon, 25 Mar 2024 23:04:23 +0100 +Subject: [PATCH 2/2] playbooks, test/system: Work around bug in pasta(1) + networks + +Podman 5.0 switched to using pasta(1), instead of slirp4netns(1), by +default for rootless containers. This change has led to a regression +causing 'skopeo copy' to get stuck uploading an OCI image to the local +temporary Docker registry run by the tests as a Podman container [1], +which breaks the test suite on Fedora 40 onwards. + +Work around this by forcing the use of slirp4netns(1). + +Note that the slirp4nets package needs to be explicitly installed on +Fedora 40 onwards, because the dependency in containers-common-extra +changed from Recommends to Suggests [2]. + +[1] https://github.com/containers/podman/issues/22575 + +[2] Fedora containers-common commit 17934d87b2686ab5 + Fedora containers-common commit 13c232f064113860 + https://src.fedoraproject.org/rpms/containers-common/c/17934d87b2686ab5 + https://src.fedoraproject.org/rpms/containers-common/c/13c232f064113860 + +https://github.com/containers/toolbox/pull/1468 +--- + playbooks/dependencies-centos-9-stream.yaml | 3 ++- + playbooks/dependencies-fedora.yaml | 3 ++- + test/system/libs/helpers.bash | 1 + + 3 files changed, 5 insertions(+), 2 deletions(-) + +diff --git a/playbooks/dependencies-centos-9-stream.yaml b/playbooks/dependencies-centos-9-stream.yaml +index d058d314b7b3..5c1194c03583 100644 +--- a/playbooks/dependencies-centos-9-stream.yaml ++++ b/playbooks/dependencies-centos-9-stream.yaml +@@ -13,6 +13,7 @@ + - podman + - shadow-utils-subid-devel + - skopeo ++ - slirp4netns + - systemd + - udisks2 + +@@ -54,7 +55,7 @@ + chdir: '{{ zuul.project.src_dir }}' + + - name: Check versions of crucial packages +- command: rpm -qa ShellCheck bats codespell *kernel* gcc *glibc* golang golang-github-cpuguy83-md2man shadow-utils-subid-devel podman conmon containernetworking-plugins containers-common container-selinux crun fuse-overlayfs flatpak-session-helper skopeo ++ command: rpm -qa ShellCheck bats codespell *kernel* gcc *glibc* golang golang-github-cpuguy83-md2man shadow-utils-subid-devel podman conmon containernetworking-plugins containers-common container-selinux crun fuse-overlayfs flatpak-session-helper skopeo slirp4netns + + - name: Show podman versions + command: podman version +diff --git a/playbooks/dependencies-fedora.yaml b/playbooks/dependencies-fedora.yaml +index ade169917cbe..76ce655bf9d3 100644 +--- a/playbooks/dependencies-fedora.yaml ++++ b/playbooks/dependencies-fedora.yaml +@@ -35,6 +35,7 @@ + - podman + - shadow-utils-subid-devel + - skopeo ++ - slirp4netns + - systemd + - udisks2 + +@@ -54,7 +55,7 @@ + chdir: '{{ zuul.project.src_dir }}' + + - name: Check versions of crucial packages +- command: rpm -qa ShellCheck bash bats codespell *kernel* gcc *glibc* shadow-utils-subid-devel golang golang-github-cpuguy83-md2man podman conmon containernetworking-plugins containers-common container-selinux crun fuse-overlayfs flatpak-session-helper skopeo ++ command: rpm -qa ShellCheck bash bats codespell *kernel* gcc *glibc* shadow-utils-subid-devel golang golang-github-cpuguy83-md2man podman conmon containernetworking-plugins containers-common container-selinux crun fuse-overlayfs flatpak-session-helper skopeo slirp4netns + + - name: Show podman versions + command: podman version +diff --git a/test/system/libs/helpers.bash b/test/system/libs/helpers.bash +index 66278888cbe2..c056c601ab94 100644 +--- a/test/system/libs/helpers.bash ++++ b/test/system/libs/helpers.bash +@@ -202,6 +202,7 @@ function _setup_docker_registry() { + -e REGISTRY_HTTP_ADDR=0.0.0.0:443 \ + -e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/domain.crt \ + -e REGISTRY_HTTP_TLS_KEY=/certs/domain.key \ ++ --network slirp4netns \ + -p 50000:443 \ + "${IMAGES[docker-reg]}" + assert_success +-- +2.44.0 + diff --git a/SOURCES/toolbox-test-system-Unbreak-Podman-s-downstream-Fedora-CI.patch b/SOURCES/toolbox-test-system-Unbreak-Podman-s-downstream-Fedora-CI.patch new file mode 100644 index 0000000..1956003 --- /dev/null +++ b/SOURCES/toolbox-test-system-Unbreak-Podman-s-downstream-Fedora-CI.patch @@ -0,0 +1,208 @@ +From a859f73d075ec0505994d8ce0f371ec28e466983 Mon Sep 17 00:00:00 2001 +From: Debarshi Ray +Date: Tue, 13 Feb 2024 21:56:06 +0100 +Subject: [PATCH 1/2] test/system: Unbreak Podman's downstream Fedora CI + +The paths to bats-assert and bats-support are broken, if bats(1) is +invoked from any other location than the parent directory of the 'tests' +directory. eg., Podman's downstream Fedora CI invokes the tests as: + $ cd /path/to/toolbox/test/system + $ bats . + +... and it led to [1]: + 1..306 + # test suite: Set up + # Missing dependencies + # Forgot to run 'git submodule init' and 'git submodule update' ? + # test suite: Tear down + not ok 1 setup_suite + # (from function `setup_suite' in test file ./setup_suite.bash, line 33) + # `return 1' failed + # bats warning: Executed 1 instead of expected 306 tests + +Fallout from 2c0960660330dc6be6861502988695f9812c475a + +[1] https://bugzilla.redhat.com/show_bug.cgi?id=2263968 + +https://github.com/containers/toolbox/pull/1448 +--- + test/system/setup_suite.bash | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/test/system/setup_suite.bash b/test/system/setup_suite.bash +index e4edf232bcd8..01985b7f9afc 100644 +--- a/test/system/setup_suite.bash ++++ b/test/system/setup_suite.bash +@@ -17,7 +17,7 @@ + + missing_dependencies=false + +-if [ -f test/system/libs/bats-assert/load.bash ] && [ -f test/system/libs/bats-support/load.bash ]; then ++if [ -f "$BATS_TEST_DIRNAME/libs/bats-assert/load.bash" ] && [ -f "$BATS_TEST_DIRNAME/libs/bats-support/load.bash" ]; then + load 'libs/helpers' + else + missing_dependencies=true +-- +2.43.0 + + +From a183876eae2bb4ffd84bca4303fc28be6725ebc2 Mon Sep 17 00:00:00 2001 +From: Debarshi Ray +Date: Fri, 23 Feb 2024 10:38:16 +0100 +Subject: [PATCH 2/2] test/system: Unbreak Podman's downstream Fedora CI (part + 2) + +The working directory from which bats(1) is invoked might not be part of +the Toolbx container. eg., Podman's downstream Fedora CI invokes the +tests as: + $ cd /path/to/toolbox/test/system + $ bats . + +... and it led to [1]: + not ok 110 run: Smoke test with true(1) + # (from function `assert_output' in file + ./libs/bats-assert/src/assert.bash, line 255, + # in test file ./104-run.bats, line 38) + # `assert_output ""' failed + # + # -- output differs -- + # expected (0 lines): + # + # actual (3 lines): + # Error: crun: chdir to `/usr/share/toolbox/test/system`: No such + file or directory: OCI runtime attempted to invoke a command that + was not found + # Error: directory /usr/share/toolbox/test/system not found in + container fedora-toolbox-41 + # Using /home/testuser instead. + # -- + # + +[1] https://bugzilla.redhat.com/show_bug.cgi?id=2263968 + +https://github.com/containers/toolbox/pull/1457 +--- + test/system/104-run.bats | 2 ++ + test/system/201-ipc.bats | 2 ++ + test/system/203-network.bats | 2 ++ + test/system/206-user.bats | 2 ++ + test/system/210-ulimit.bats | 2 ++ + test/system/211-dbus.bats | 2 ++ + test/system/220-environment-variables.bats | 2 ++ + 7 files changed, 14 insertions(+) + +diff --git a/test/system/104-run.bats b/test/system/104-run.bats +index ff11a8477062..a0cb89fdeeca 100644 +--- a/test/system/104-run.bats ++++ b/test/system/104-run.bats +@@ -23,9 +23,11 @@ setup() { + bats_require_minimum_version 1.7.0 + _setup_environment + cleanup_containers ++ pushd "$HOME" || return 1 + } + + teardown() { ++ popd || return 1 + cleanup_containers + } + +diff --git a/test/system/201-ipc.bats b/test/system/201-ipc.bats +index 15c791dec86d..09200b41d06c 100644 +--- a/test/system/201-ipc.bats ++++ b/test/system/201-ipc.bats +@@ -23,9 +23,11 @@ setup() { + bats_require_minimum_version 1.7.0 + _setup_environment + cleanup_containers ++ pushd "$HOME" || return 1 + } + + teardown() { ++ popd || return 1 + cleanup_containers + } + +diff --git a/test/system/203-network.bats b/test/system/203-network.bats +index db1ba561f314..012374e3317f 100644 +--- a/test/system/203-network.bats ++++ b/test/system/203-network.bats +@@ -35,9 +35,11 @@ setup() { + bats_require_minimum_version 1.7.0 + _setup_environment + cleanup_containers ++ pushd "$HOME" || return 1 + } + + teardown() { ++ popd || return 1 + cleanup_containers + } + +diff --git a/test/system/206-user.bats b/test/system/206-user.bats +index 2df7862f259e..473a6b40905a 100644 +--- a/test/system/206-user.bats ++++ b/test/system/206-user.bats +@@ -23,9 +23,11 @@ setup() { + bats_require_minimum_version 1.7.0 + _setup_environment + cleanup_containers ++ pushd "$HOME" || return 1 + } + + teardown() { ++ popd || return 1 + cleanup_containers + } + +diff --git a/test/system/210-ulimit.bats b/test/system/210-ulimit.bats +index ea0c46685df1..ea08feea1513 100644 +--- a/test/system/210-ulimit.bats ++++ b/test/system/210-ulimit.bats +@@ -23,9 +23,11 @@ setup() { + bats_require_minimum_version 1.7.0 + _setup_environment + cleanup_containers ++ pushd "$HOME" || return 1 + } + + teardown() { ++ popd || return 1 + cleanup_containers + } + +diff --git a/test/system/211-dbus.bats b/test/system/211-dbus.bats +index 295bb71b2789..61c543a56005 100644 +--- a/test/system/211-dbus.bats ++++ b/test/system/211-dbus.bats +@@ -23,9 +23,11 @@ setup() { + bats_require_minimum_version 1.7.0 + _setup_environment + cleanup_containers ++ pushd "$HOME" || return 1 + } + + teardown() { ++ popd || return 1 + cleanup_containers + } + +diff --git a/test/system/220-environment-variables.bats b/test/system/220-environment-variables.bats +index 5b51d17dee55..c24e07d146ee 100644 +--- a/test/system/220-environment-variables.bats ++++ b/test/system/220-environment-variables.bats +@@ -23,9 +23,11 @@ setup() { + bats_require_minimum_version 1.7.0 + _setup_environment + cleanup_containers ++ pushd "$HOME" || return 1 + } + + teardown() { ++ popd || return 1 + cleanup_containers + } + +-- +2.43.0 + diff --git a/SOURCES/toolbox-test-system-new.patch b/SOURCES/toolbox-test-system-new.patch new file mode 100644 index 0000000..9800b15 --- /dev/null +++ b/SOURCES/toolbox-test-system-new.patch @@ -0,0 +1,894 @@ +From f51c4a4cd8ff1c51a68073a10eaddab8f16fdaf6 Mon Sep 17 00:00:00 2001 +From: Debarshi Ray +Date: Thu, 8 Feb 2024 22:18:33 +0100 +Subject: [PATCH 1/4] test/system: Ensure that the user is part of a group with + the same name + +https://github.com/containers/toolbox/pull/1447 +--- + test/system/206-user.bats | 7 +++++++ + 1 file changed, 7 insertions(+) + +diff --git a/test/system/206-user.bats b/test/system/206-user.bats +index c295d8a61f39..cdd38c146024 100644 +--- a/test/system/206-user.bats ++++ b/test/system/206-user.bats +@@ -434,6 +434,7 @@ teardown() { + run --keep-empty-lines --separate-stderr "$TOOLBOX" run cat /etc/group + + assert_success ++ assert_line --regexp "^$USER:x:[[:digit:]]+:$USER$" + assert_line --regexp "^(sudo|wheel):x:[[:digit:]]+:$USER$" + assert [ ${#lines[@]} -gt 1 ] + +@@ -447,6 +448,7 @@ teardown() { + run --keep-empty-lines --separate-stderr "$TOOLBOX" run --distro arch cat /etc/group + + assert_success ++ assert_line --regexp "^$USER:x:[[:digit:]]+:$USER$" + assert_line --regexp "^wheel:x:[[:digit:]]+:$USER$" + assert [ ${#lines[@]} -gt 1 ] + +@@ -460,6 +462,7 @@ teardown() { + run --keep-empty-lines --separate-stderr "$TOOLBOX" run --distro fedora --release 34 cat /etc/group + + assert_success ++ assert_line --regexp "^$USER:x:[[:digit:]]+:$USER$" + assert_line --regexp "^wheel:x:[[:digit:]]+:$USER$" + assert [ ${#lines[@]} -gt 1 ] + +@@ -473,6 +476,7 @@ teardown() { + run --keep-empty-lines --separate-stderr "$TOOLBOX" run --distro rhel --release 8.7 cat /etc/group + + assert_success ++ assert_line --regexp "^$USER:x:[[:digit:]]+:$USER$" + assert_line --regexp "^wheel:x:[[:digit:]]+:$USER$" + assert [ ${#lines[@]} -gt 1 ] + +@@ -486,6 +490,7 @@ teardown() { + run --keep-empty-lines --separate-stderr "$TOOLBOX" run --distro ubuntu --release 16.04 cat /etc/group + + assert_success ++ assert_line --regexp "^$USER:x:[[:digit:]]+:$USER$" + assert_line --regexp "^sudo:x:[[:digit:]]+:$USER$" + assert [ ${#lines[@]} -gt 1 ] + +@@ -499,6 +504,7 @@ teardown() { + run --keep-empty-lines --separate-stderr "$TOOLBOX" run --distro ubuntu --release 18.04 cat /etc/group + + assert_success ++ assert_line --regexp "^$USER:x:[[:digit:]]+:$USER$" + assert_line --regexp "^sudo:x:[[:digit:]]+:$USER$" + assert [ ${#lines[@]} -gt 1 ] + +@@ -512,6 +518,7 @@ teardown() { + run --keep-empty-lines --separate-stderr "$TOOLBOX" run --distro ubuntu --release 20.04 cat /etc/group + + assert_success ++ assert_line --regexp "^$USER:x:[[:digit:]]+:$USER$" + assert_line --regexp "^sudo:x:[[:digit:]]+:$USER$" + assert [ ${#lines[@]} -gt 1 ] + +-- +2.43.0 + + +From b2d64fad1a23a07919efdb70de9247645e44f973 Mon Sep 17 00:00:00 2001 +From: Debarshi Ray +Date: Thu, 8 Feb 2024 22:51:43 +0100 +Subject: [PATCH 2/4] test/system: Ensure that process started by 'podman exec' + has all groups +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Commit 15173f8c25c81244 exposed a bug in crun(1) [1] where the process +started directly by 'podman exec --user ...' inside the Toolbx container +would not have the supplementary groups attached to the user by the +entry point. + +This could be observed by differences in id(1): + ⬢$ id + uid=1000(user) gid=1000(user) groups=1000(user) + ⬢$ id user + uid=1000(user) gid=1000(user) groups=1000(user),10(wheel) + +... and could be worked around by starting a new session with sudo(8). + +[1] crun commit 9effaebb429a1aed + https://github.com/containers/crun/commit/9effaebb429a1aed + https://github.com/containers/crun/issues/644 + https://github.com/containers/podman/issues/9986 + +https://github.com/containers/toolbox/issues/608 +--- + test/system/206-user.bats | 231 ++++++++++++++++++++++++++++++++++++++ + 1 file changed, 231 insertions(+) + +diff --git a/test/system/206-user.bats b/test/system/206-user.bats +index cdd38c146024..2df7862f259e 100644 +--- a/test/system/206-user.bats ++++ b/test/system/206-user.bats +@@ -525,3 +525,234 @@ teardown() { + # shellcheck disable=SC2154 + assert [ ${#stderr_lines[@]} -eq 0 ] + } ++ ++@test "user: id(1) for $USER inside the default container" { ++ create_default_container ++ ++ run --keep-empty-lines --separate-stderr "$TOOLBOX" run id ++ ++ assert_success ++ ++ if check_bats_version 1.10.0; then ++ assert [ ${#lines[@]} -eq 1 ] ++ else ++ assert [ ${#lines[@]} -eq 2 ] ++ fi ++ ++ local output_id="${lines[0]}" ++ ++ # shellcheck disable=SC2154 ++ assert [ ${#stderr_lines[@]} -eq 0 ] ++ ++ run --keep-empty-lines --separate-stderr "$TOOLBOX" run id "$USER" ++ ++ assert_success ++ assert_line --index 0 "$output_id" ++ ++ if check_bats_version 1.10.0; then ++ assert [ ${#lines[@]} -eq 1 ] ++ else ++ assert [ ${#lines[@]} -eq 2 ] ++ fi ++ ++ # shellcheck disable=SC2154 ++ assert [ ${#stderr_lines[@]} -eq 0 ] ++} ++ ++@test "user: id(1) for $USER inside Arch Linux" { ++ create_distro_container arch latest arch-toolbox-latest ++ ++ run --keep-empty-lines --separate-stderr "$TOOLBOX" run --distro arch id ++ ++ assert_success ++ ++ if check_bats_version 1.10.0; then ++ assert [ ${#lines[@]} -eq 1 ] ++ else ++ assert [ ${#lines[@]} -eq 2 ] ++ fi ++ ++ local output_id="${lines[0]}" ++ ++ # shellcheck disable=SC2154 ++ assert [ ${#stderr_lines[@]} -eq 0 ] ++ ++ run --keep-empty-lines --separate-stderr "$TOOLBOX" run --distro arch id "$USER" ++ ++ assert_success ++ assert_line --index 0 "$output_id" ++ ++ if check_bats_version 1.10.0; then ++ assert [ ${#lines[@]} -eq 1 ] ++ else ++ assert [ ${#lines[@]} -eq 2 ] ++ fi ++ ++ # shellcheck disable=SC2154 ++ assert [ ${#stderr_lines[@]} -eq 0 ] ++} ++ ++@test "user: id(1) for $USER inside Fedora 34" { ++ create_distro_container fedora 34 fedora-toolbox-34 ++ ++ run --keep-empty-lines --separate-stderr "$TOOLBOX" run --distro fedora --release 34 id ++ ++ assert_success ++ ++ if check_bats_version 1.10.0; then ++ assert [ ${#lines[@]} -eq 1 ] ++ else ++ assert [ ${#lines[@]} -eq 2 ] ++ fi ++ ++ local output_id="${lines[0]}" ++ ++ # shellcheck disable=SC2154 ++ assert [ ${#stderr_lines[@]} -eq 0 ] ++ ++ run --keep-empty-lines --separate-stderr "$TOOLBOX" run --distro fedora --release 34 id "$USER" ++ ++ assert_success ++ assert_line --index 0 "$output_id" ++ ++ if check_bats_version 1.10.0; then ++ assert [ ${#lines[@]} -eq 1 ] ++ else ++ assert [ ${#lines[@]} -eq 2 ] ++ fi ++ ++ # shellcheck disable=SC2154 ++ assert [ ${#stderr_lines[@]} -eq 0 ] ++} ++ ++@test "user: id(1) for $USER inside RHEL 8.7" { ++ create_distro_container rhel 8.7 rhel-toolbox-8.7 ++ ++ run --keep-empty-lines --separate-stderr "$TOOLBOX" run --distro rhel --release 8.7 id ++ ++ assert_success ++ ++ if check_bats_version 1.10.0; then ++ assert [ ${#lines[@]} -eq 1 ] ++ else ++ assert [ ${#lines[@]} -eq 2 ] ++ fi ++ ++ local output_id="${lines[0]}" ++ ++ # shellcheck disable=SC2154 ++ assert [ ${#stderr_lines[@]} -eq 0 ] ++ ++ run --keep-empty-lines --separate-stderr "$TOOLBOX" run --distro rhel --release 8.7 id "$USER" ++ ++ assert_success ++ assert_line --index 0 "$output_id" ++ ++ if check_bats_version 1.10.0; then ++ assert [ ${#lines[@]} -eq 1 ] ++ else ++ assert [ ${#lines[@]} -eq 2 ] ++ fi ++ ++ # shellcheck disable=SC2154 ++ assert [ ${#stderr_lines[@]} -eq 0 ] ++} ++ ++@test "user: id(1) for $USER inside Ubuntu 16.04" { ++ create_distro_container ubuntu 16.04 ubuntu-toolbox-16.04 ++ ++ run --keep-empty-lines --separate-stderr "$TOOLBOX" run --distro ubuntu --release 16.04 id ++ ++ assert_success ++ ++ if check_bats_version 1.10.0; then ++ assert [ ${#lines[@]} -eq 1 ] ++ else ++ assert [ ${#lines[@]} -eq 2 ] ++ fi ++ ++ local output_id="${lines[0]}" ++ ++ # shellcheck disable=SC2154 ++ assert [ ${#stderr_lines[@]} -eq 0 ] ++ ++ run --keep-empty-lines --separate-stderr "$TOOLBOX" run --distro ubuntu --release 16.04 id "$USER" ++ ++ assert_success ++ assert_line --index 0 "$output_id" ++ ++ if check_bats_version 1.10.0; then ++ assert [ ${#lines[@]} -eq 1 ] ++ else ++ assert [ ${#lines[@]} -eq 2 ] ++ fi ++ ++ # shellcheck disable=SC2154 ++ assert [ ${#stderr_lines[@]} -eq 0 ] ++} ++ ++@test "user: id(1) for $USER inside Ubuntu 18.04" { ++ create_distro_container ubuntu 18.04 ubuntu-toolbox-18.04 ++ ++ run --keep-empty-lines --separate-stderr "$TOOLBOX" run --distro ubuntu --release 18.04 id ++ ++ assert_success ++ ++ if check_bats_version 1.10.0; then ++ assert [ ${#lines[@]} -eq 1 ] ++ else ++ assert [ ${#lines[@]} -eq 2 ] ++ fi ++ ++ local output_id="${lines[0]}" ++ ++ # shellcheck disable=SC2154 ++ assert [ ${#stderr_lines[@]} -eq 0 ] ++ ++ run --keep-empty-lines --separate-stderr "$TOOLBOX" run --distro ubuntu --release 18.04 id "$USER" ++ ++ assert_success ++ assert_line --index 0 "$output_id" ++ ++ if check_bats_version 1.10.0; then ++ assert [ ${#lines[@]} -eq 1 ] ++ else ++ assert [ ${#lines[@]} -eq 2 ] ++ fi ++ ++ # shellcheck disable=SC2154 ++ assert [ ${#stderr_lines[@]} -eq 0 ] ++} ++ ++@test "user: id(1) for $USER inside Ubuntu 20.04" { ++ create_distro_container ubuntu 20.04 ubuntu-toolbox-20.04 ++ ++ run --keep-empty-lines --separate-stderr "$TOOLBOX" run --distro ubuntu --release 20.04 id ++ ++ assert_success ++ ++ if check_bats_version 1.10.0; then ++ assert [ ${#lines[@]} -eq 1 ] ++ else ++ assert [ ${#lines[@]} -eq 2 ] ++ fi ++ ++ local output_id="${lines[0]}" ++ ++ # shellcheck disable=SC2154 ++ assert [ ${#stderr_lines[@]} -eq 0 ] ++ ++ run --keep-empty-lines --separate-stderr "$TOOLBOX" run --distro ubuntu --release 20.04 id "$USER" ++ ++ assert_success ++ assert_line --index 0 "$output_id" ++ ++ if check_bats_version 1.10.0; then ++ assert [ ${#lines[@]} -eq 1 ] ++ else ++ assert [ ${#lines[@]} -eq 2 ] ++ fi ++ ++ # shellcheck disable=SC2154 ++ assert [ ${#stderr_lines[@]} -eq 0 ] ++} +-- +2.43.0 + + +From da2555d04f9ff677b3f2033ff36390f75c3a509d Mon Sep 17 00:00:00 2001 +From: Debarshi Ray +Date: Thu, 18 Jan 2024 19:53:02 +0100 +Subject: [PATCH 3/4] test/system: Group by higher-level objective, not + distribution + +Fallout from 51ffd2793d882ffab45ace44c03edfdaeb3f138c + +https://github.com/containers/toolbox/pull/1436 +--- + test/system/220-environment-variables.bats | 152 ++++++++++----------- + 1 file changed, 76 insertions(+), 76 deletions(-) + +diff --git a/test/system/220-environment-variables.bats b/test/system/220-environment-variables.bats +index 0e1356654468..dd74b1dc5142 100644 +--- a/test/system/220-environment-variables.bats ++++ b/test/system/220-environment-variables.bats +@@ -1,6 +1,6 @@ + # shellcheck shell=bats + # +-# Copyright © 2023 Red Hat, Inc. ++# Copyright © 2023 – 2024 Red Hat, Inc. + # + # Licensed under the Apache License, Version 2.0 (the "License"); + # you may not use this file except in compliance with the License. +@@ -57,25 +57,24 @@ teardown() { + assert [ ${#stderr_lines[@]} -eq 0 ] + } + +-@test "environment variables: HISTSIZE inside the default container" { +- skip "https://pagure.io/setup/pull-request/48" +- +- create_default_container ++@test "environment variables: HISTFILESIZE inside Arch Linux" { ++ create_distro_container arch latest arch-toolbox-latest + +- if [ "$HISTSIZE" = "" ]; then ++ # shellcheck disable=SC2031 ++ if [ "$HISTFILESIZE" = "" ]; then + # shellcheck disable=SC2030 +- HISTSIZE=1001 ++ HISTFILESIZE=1001 + else +- ((HISTSIZE++)) ++ ((HISTFILESIZE++)) + fi + +- export HISTSIZE ++ export HISTFILESIZE + + # shellcheck disable=SC2016 +- run --keep-empty-lines --separate-stderr "$TOOLBOX" run bash -c 'echo "$HISTSIZE"' ++ run --keep-empty-lines --separate-stderr "$TOOLBOX" run --distro arch bash -c 'echo "$HISTFILESIZE"' + + assert_success +- assert_line --index 0 "$HISTSIZE" ++ assert_line --index 0 "$HISTFILESIZE" + + if check_bats_version 1.10.0; then + assert [ ${#lines[@]} -eq 1 ] +@@ -87,8 +86,8 @@ teardown() { + assert [ ${#stderr_lines[@]} -eq 0 ] + } + +-@test "environment variables: HISTFILESIZE inside Arch Linux" { +- create_distro_container arch latest arch-toolbox-latest ++@test "environment variables: HISTFILESIZE inside Fedora 34" { ++ create_distro_container fedora 34 fedora-toolbox-34 + + # shellcheck disable=SC2031 + if [ "$HISTFILESIZE" = "" ]; then +@@ -101,7 +100,7 @@ teardown() { + export HISTFILESIZE + + # shellcheck disable=SC2016 +- run --keep-empty-lines --separate-stderr "$TOOLBOX" run --distro arch bash -c 'echo "$HISTFILESIZE"' ++ run --keep-empty-lines --separate-stderr "$TOOLBOX" run --distro fedora --release 34 bash -c 'echo "$HISTFILESIZE"' + + assert_success + assert_line --index 0 "$HISTFILESIZE" +@@ -116,24 +115,24 @@ teardown() { + assert [ ${#stderr_lines[@]} -eq 0 ] + } + +-@test "environment variables: HISTSIZE inside Arch Linux" { +- create_distro_container arch latest arch-toolbox-latest ++@test "environment variables: HISTFILESIZE inside RHEL 8.7" { ++ create_distro_container rhel 8.7 rhel-toolbox-8.7 + + # shellcheck disable=SC2031 +- if [ "$HISTSIZE" = "" ]; then ++ if [ "$HISTFILESIZE" = "" ]; then + # shellcheck disable=SC2030 +- HISTSIZE=1001 ++ HISTFILESIZE=1001 + else +- ((HISTSIZE++)) ++ ((HISTFILESIZE++)) + fi + +- export HISTSIZE ++ export HISTFILESIZE + + # shellcheck disable=SC2016 +- run --keep-empty-lines --separate-stderr "$TOOLBOX" run --distro arch bash -c 'echo "$HISTSIZE"' ++ run --keep-empty-lines --separate-stderr "$TOOLBOX" run --distro rhel --release 8.7 bash -c 'echo "$HISTFILESIZE"' + + assert_success +- assert_line --index 0 "$HISTSIZE" ++ assert_line --index 0 "$HISTFILESIZE" + + if check_bats_version 1.10.0; then + assert [ ${#lines[@]} -eq 1 ] +@@ -145,8 +144,8 @@ teardown() { + assert [ ${#stderr_lines[@]} -eq 0 ] + } + +-@test "environment variables: HISTFILESIZE inside Fedora 34" { +- create_distro_container fedora 34 fedora-toolbox-34 ++@test "environment variables: HISTFILESIZE inside Ubuntu 16.04" { ++ create_distro_container ubuntu 16.04 ubuntu-toolbox-16.04 + + # shellcheck disable=SC2031 + if [ "$HISTFILESIZE" = "" ]; then +@@ -159,7 +158,8 @@ teardown() { + export HISTFILESIZE + + # shellcheck disable=SC2016 +- run --keep-empty-lines --separate-stderr "$TOOLBOX" run --distro fedora --release 34 bash -c 'echo "$HISTFILESIZE"' ++ run --keep-empty-lines --separate-stderr "$TOOLBOX" run --distro ubuntu --release 16.04 \ ++ bash -c 'echo "$HISTFILESIZE"' + + assert_success + assert_line --index 0 "$HISTFILESIZE" +@@ -174,26 +174,25 @@ teardown() { + assert [ ${#stderr_lines[@]} -eq 0 ] + } + +-@test "environment variables: HISTSIZE inside Fedora 34" { +- skip "https://pagure.io/setup/pull-request/48" +- +- create_distro_container fedora 34 fedora-toolbox-34 ++@test "environment variables: HISTFILESIZE inside Ubuntu 18.04" { ++ create_distro_container ubuntu 18.04 ubuntu-toolbox-18.04 + + # shellcheck disable=SC2031 +- if [ "$HISTSIZE" = "" ]; then ++ if [ "$HISTFILESIZE" = "" ]; then + # shellcheck disable=SC2030 +- HISTSIZE=1001 ++ HISTFILESIZE=1001 + else +- ((HISTSIZE++)) ++ ((HISTFILESIZE++)) + fi + +- export HISTSIZE ++ export HISTFILESIZE + + # shellcheck disable=SC2016 +- run --keep-empty-lines --separate-stderr "$TOOLBOX" run --distro fedora --release 34 bash -c 'echo "$HISTSIZE"' ++ run --keep-empty-lines --separate-stderr "$TOOLBOX" run --distro ubuntu --release 18.04 \ ++ bash -c 'echo "$HISTFILESIZE"' + + assert_success +- assert_line --index 0 "$HISTSIZE" ++ assert_line --index 0 "$HISTFILESIZE" + + if check_bats_version 1.10.0; then + assert [ ${#lines[@]} -eq 1 ] +@@ -205,12 +204,11 @@ teardown() { + assert [ ${#stderr_lines[@]} -eq 0 ] + } + +-@test "environment variables: HISTFILESIZE inside RHEL 8.7" { +- create_distro_container rhel 8.7 rhel-toolbox-8.7 ++@test "environment variables: HISTFILESIZE inside Ubuntu 20.04" { ++ create_distro_container ubuntu 20.04 ubuntu-toolbox-20.04 + + # shellcheck disable=SC2031 + if [ "$HISTFILESIZE" = "" ]; then +- # shellcheck disable=SC2030 + HISTFILESIZE=1001 + else + ((HISTFILESIZE++)) +@@ -219,7 +217,8 @@ teardown() { + export HISTFILESIZE + + # shellcheck disable=SC2016 +- run --keep-empty-lines --separate-stderr "$TOOLBOX" run --distro rhel --release 8.7 bash -c 'echo "$HISTFILESIZE"' ++ run --keep-empty-lines --separate-stderr "$TOOLBOX" run --distro ubuntu --release 20.04 \ ++ bash -c 'echo "$HISTFILESIZE"' + + assert_success + assert_line --index 0 "$HISTFILESIZE" +@@ -234,12 +233,11 @@ teardown() { + assert [ ${#stderr_lines[@]} -eq 0 ] + } + +-@test "environment variables: HISTSIZE inside RHEL 8.7" { ++@test "environment variables: HISTSIZE inside the default container" { + skip "https://pagure.io/setup/pull-request/48" + +- create_distro_container rhel 8.7 rhel-toolbox-8.7 ++ create_default_container + +- # shellcheck disable=SC2031 + if [ "$HISTSIZE" = "" ]; then + # shellcheck disable=SC2030 + HISTSIZE=1001 +@@ -250,7 +248,7 @@ teardown() { + export HISTSIZE + + # shellcheck disable=SC2016 +- run --keep-empty-lines --separate-stderr "$TOOLBOX" run --distro rhel --release 8.7 bash -c 'echo "$HISTSIZE"' ++ run --keep-empty-lines --separate-stderr "$TOOLBOX" run bash -c 'echo "$HISTSIZE"' + + assert_success + assert_line --index 0 "$HISTSIZE" +@@ -265,25 +263,24 @@ teardown() { + assert [ ${#stderr_lines[@]} -eq 0 ] + } + +-@test "environment variables: HISTFILESIZE inside Ubuntu 16.04" { +- create_distro_container ubuntu 16.04 ubuntu-toolbox-16.04 ++@test "environment variables: HISTSIZE inside Arch Linux" { ++ create_distro_container arch latest arch-toolbox-latest + + # shellcheck disable=SC2031 +- if [ "$HISTFILESIZE" = "" ]; then ++ if [ "$HISTSIZE" = "" ]; then + # shellcheck disable=SC2030 +- HISTFILESIZE=1001 ++ HISTSIZE=1001 + else +- ((HISTFILESIZE++)) ++ ((HISTSIZE++)) + fi + +- export HISTFILESIZE ++ export HISTSIZE + + # shellcheck disable=SC2016 +- run --keep-empty-lines --separate-stderr "$TOOLBOX" run --distro ubuntu --release 16.04 \ +- bash -c 'echo "$HISTFILESIZE"' ++ run --keep-empty-lines --separate-stderr "$TOOLBOX" run --distro arch bash -c 'echo "$HISTSIZE"' + + assert_success +- assert_line --index 0 "$HISTFILESIZE" ++ assert_line --index 0 "$HISTSIZE" + + if check_bats_version 1.10.0; then + assert [ ${#lines[@]} -eq 1 ] +@@ -295,8 +292,10 @@ teardown() { + assert [ ${#stderr_lines[@]} -eq 0 ] + } + +-@test "environment variables: HISTSIZE inside Ubuntu 16.04" { +- create_distro_container ubuntu 16.04 ubuntu-toolbox-16.04 ++@test "environment variables: HISTSIZE inside Fedora 34" { ++ skip "https://pagure.io/setup/pull-request/48" ++ ++ create_distro_container fedora 34 fedora-toolbox-34 + + # shellcheck disable=SC2031 + if [ "$HISTSIZE" = "" ]; then +@@ -309,7 +308,7 @@ teardown() { + export HISTSIZE + + # shellcheck disable=SC2016 +- run --keep-empty-lines --separate-stderr "$TOOLBOX" run --distro ubuntu --release 16.04 bash -c 'echo "$HISTSIZE"' ++ run --keep-empty-lines --separate-stderr "$TOOLBOX" run --distro fedora --release 34 bash -c 'echo "$HISTSIZE"' + + assert_success + assert_line --index 0 "$HISTSIZE" +@@ -324,25 +323,26 @@ teardown() { + assert [ ${#stderr_lines[@]} -eq 0 ] + } + +-@test "environment variables: HISTFILESIZE inside Ubuntu 18.04" { +- create_distro_container ubuntu 18.04 ubuntu-toolbox-18.04 ++@test "environment variables: HISTSIZE inside RHEL 8.7" { ++ skip "https://pagure.io/setup/pull-request/48" ++ ++ create_distro_container rhel 8.7 rhel-toolbox-8.7 + + # shellcheck disable=SC2031 +- if [ "$HISTFILESIZE" = "" ]; then ++ if [ "$HISTSIZE" = "" ]; then + # shellcheck disable=SC2030 +- HISTFILESIZE=1001 ++ HISTSIZE=1001 + else +- ((HISTFILESIZE++)) ++ ((HISTSIZE++)) + fi + +- export HISTFILESIZE ++ export HISTSIZE + + # shellcheck disable=SC2016 +- run --keep-empty-lines --separate-stderr "$TOOLBOX" run --distro ubuntu --release 18.04 \ +- bash -c 'echo "$HISTFILESIZE"' ++ run --keep-empty-lines --separate-stderr "$TOOLBOX" run --distro rhel --release 8.7 bash -c 'echo "$HISTSIZE"' + + assert_success +- assert_line --index 0 "$HISTFILESIZE" ++ assert_line --index 0 "$HISTSIZE" + + if check_bats_version 1.10.0; then + assert [ ${#lines[@]} -eq 1 ] +@@ -354,8 +354,8 @@ teardown() { + assert [ ${#stderr_lines[@]} -eq 0 ] + } + +-@test "environment variables: HISTSIZE inside Ubuntu 18.04" { +- create_distro_container ubuntu 18.04 ubuntu-toolbox-18.04 ++@test "environment variables: HISTSIZE inside Ubuntu 16.04" { ++ create_distro_container ubuntu 16.04 ubuntu-toolbox-16.04 + + # shellcheck disable=SC2031 + if [ "$HISTSIZE" = "" ]; then +@@ -368,7 +368,7 @@ teardown() { + export HISTSIZE + + # shellcheck disable=SC2016 +- run --keep-empty-lines --separate-stderr "$TOOLBOX" run --distro ubuntu --release 18.04 bash -c 'echo "$HISTSIZE"' ++ run --keep-empty-lines --separate-stderr "$TOOLBOX" run --distro ubuntu --release 16.04 bash -c 'echo "$HISTSIZE"' + + assert_success + assert_line --index 0 "$HISTSIZE" +@@ -383,24 +383,24 @@ teardown() { + assert [ ${#stderr_lines[@]} -eq 0 ] + } + +-@test "environment variables: HISTFILESIZE inside Ubuntu 20.04" { +- create_distro_container ubuntu 20.04 ubuntu-toolbox-20.04 ++@test "environment variables: HISTSIZE inside Ubuntu 18.04" { ++ create_distro_container ubuntu 18.04 ubuntu-toolbox-18.04 + + # shellcheck disable=SC2031 +- if [ "$HISTFILESIZE" = "" ]; then +- HISTFILESIZE=1001 ++ if [ "$HISTSIZE" = "" ]; then ++ # shellcheck disable=SC2030 ++ HISTSIZE=1001 + else +- ((HISTFILESIZE++)) ++ ((HISTSIZE++)) + fi + +- export HISTFILESIZE ++ export HISTSIZE + + # shellcheck disable=SC2016 +- run --keep-empty-lines --separate-stderr "$TOOLBOX" run --distro ubuntu --release 20.04 \ +- bash -c 'echo "$HISTFILESIZE"' ++ run --keep-empty-lines --separate-stderr "$TOOLBOX" run --distro ubuntu --release 18.04 bash -c 'echo "$HISTSIZE"' + + assert_success +- assert_line --index 0 "$HISTFILESIZE" ++ assert_line --index 0 "$HISTSIZE" + + if check_bats_version 1.10.0; then + assert [ ${#lines[@]} -eq 1 ] +-- +2.43.0 + + +From ee2c92299d5488bab4e54cb04d9a120e0b9ed405 Mon Sep 17 00:00:00 2001 +From: Debarshi Ray +Date: Thu, 18 Jan 2024 20:17:50 +0100 +Subject: [PATCH 4/4] test/system: Test that the HOSTNAME environment variable + is set + +Bash automatically sets the HOSTNAME environment variable to the name of +the current host [1] as returned by gethostname(2), which is the same as +hostname(1). + +However, on Fedora, from Fedora 33 onwards, /etc/profile sets the +HOSTNAME environment variable to 'hostnamectl --transient' [2], and, +from Fedora 35 onwards, it has a fallback to hostname(1) [3]. These two +approaches return different values when used inside a Toolbx container. +The former picks up the hostname of the host operating system, while the +fallback gets the name that was set when creating the container with +'podman create --hostname toolbox ...'. + +Hence, the value of HOSTNAME inside a Toolbx container for Fedora +depends on whether the corresponding version of the fedora-toolbox image +contained hostnamectl(1) or not. + +[1] https://www.gnu.org/software/bash/manual/html_node/Bash-Variables.html + +[2] setup commit eb9cc4dce89be24f + https://pagure.io/setup/c/eb9cc4dce89be24f + https://bugzilla.redhat.com/show_bug.cgi?id=1745245 + +[3] setup commit ddd74b5d971a734c + https://pagure.io/setup/c/ddd74b5d971a734c + https://pagure.io/setup/pull-request/28 + https://bugzilla.redhat.com/show_bug.cgi?id=1938223 + +https://github.com/containers/toolbox/issues/558 +--- + test/system/220-environment-variables.bats | 126 +++++++++++++++++++++ + 1 file changed, 126 insertions(+) + +diff --git a/test/system/220-environment-variables.bats b/test/system/220-environment-variables.bats +index dd74b1dc5142..5b51d17dee55 100644 +--- a/test/system/220-environment-variables.bats ++++ b/test/system/220-environment-variables.bats +@@ -439,3 +439,129 @@ teardown() { + # shellcheck disable=SC2154 + assert [ ${#stderr_lines[@]} -eq 0 ] + } ++ ++@test "environment variables: HOSTNAME inside the default container" { ++ create_default_container ++ ++ # shellcheck disable=SC2016 ++ run --keep-empty-lines --separate-stderr "$TOOLBOX" run bash -c 'echo "$HOSTNAME"' ++ ++ assert_success ++ assert_line --index 0 --regexp "^(toolbox|$HOSTNAME)$" ++ ++ if check_bats_version 1.10.0; then ++ assert [ ${#lines[@]} -eq 1 ] ++ else ++ assert [ ${#lines[@]} -eq 2 ] ++ fi ++ ++ assert [ ${#stderr_lines[@]} -eq 0 ] ++} ++ ++@test "environment variables: HOSTNAME inside Arch Linux" { ++ create_distro_container arch latest arch-toolbox-latest ++ ++ # shellcheck disable=SC2016 ++ run --keep-empty-lines --separate-stderr "$TOOLBOX" run --distro arch bash -c 'echo "$HOSTNAME"' ++ ++ assert_success ++ assert_line --index 0 "toolbox" ++ ++ if check_bats_version 1.10.0; then ++ assert [ ${#lines[@]} -eq 1 ] ++ else ++ assert [ ${#lines[@]} -eq 2 ] ++ fi ++ ++ assert [ ${#stderr_lines[@]} -eq 0 ] ++} ++ ++@test "environment variables: HOSTNAME inside Fedora 34" { ++ create_distro_container fedora 34 fedora-toolbox-34 ++ ++ # shellcheck disable=SC2016 ++ run --keep-empty-lines --separate-stderr "$TOOLBOX" run --distro fedora --release 34 bash -c 'echo "$HOSTNAME"' ++ ++ assert_success ++ assert_line --index 0 "$HOSTNAME" ++ ++ if check_bats_version 1.10.0; then ++ assert [ ${#lines[@]} -eq 1 ] ++ else ++ assert [ ${#lines[@]} -eq 2 ] ++ fi ++ ++ assert [ ${#stderr_lines[@]} -eq 0 ] ++} ++ ++@test "environment variables: HOSTNAME inside RHEL 8.7" { ++ create_distro_container rhel 8.7 rhel-toolbox-8.7 ++ ++ # shellcheck disable=SC2016 ++ run --keep-empty-lines --separate-stderr "$TOOLBOX" run --distro rhel --release 8.7 bash -c 'echo "$HOSTNAME"' ++ ++ assert_success ++ assert_line --index 0 "toolbox" ++ ++ if check_bats_version 1.10.0; then ++ assert [ ${#lines[@]} -eq 1 ] ++ else ++ assert [ ${#lines[@]} -eq 2 ] ++ fi ++ ++ assert [ ${#stderr_lines[@]} -eq 0 ] ++} ++ ++@test "environment variables: HOSTNAME inside Ubuntu 16.04" { ++ create_distro_container ubuntu 16.04 ubuntu-toolbox-16.04 ++ ++ # shellcheck disable=SC2016 ++ run --keep-empty-lines --separate-stderr "$TOOLBOX" run --distro ubuntu --release 16.04 bash -c 'echo "$HOSTNAME"' ++ ++ assert_success ++ assert_line --index 0 "toolbox" ++ ++ if check_bats_version 1.10.0; then ++ assert [ ${#lines[@]} -eq 1 ] ++ else ++ assert [ ${#lines[@]} -eq 2 ] ++ fi ++ ++ assert [ ${#stderr_lines[@]} -eq 0 ] ++} ++ ++@test "environment variables: HOSTNAME inside Ubuntu 18.04" { ++ create_distro_container ubuntu 18.04 ubuntu-toolbox-18.04 ++ ++ # shellcheck disable=SC2016 ++ run --keep-empty-lines --separate-stderr "$TOOLBOX" run --distro ubuntu --release 18.04 bash -c 'echo "$HOSTNAME"' ++ ++ assert_success ++ assert_line --index 0 "toolbox" ++ ++ if check_bats_version 1.10.0; then ++ assert [ ${#lines[@]} -eq 1 ] ++ else ++ assert [ ${#lines[@]} -eq 2 ] ++ fi ++ ++ assert [ ${#stderr_lines[@]} -eq 0 ] ++} ++ ++@test "environment variables: HOSTNAME inside Ubuntu 20.04" { ++ create_distro_container ubuntu 20.04 ubuntu-toolbox-20.04 ++ ++ # shellcheck disable=SC2016 ++ run --keep-empty-lines --separate-stderr "$TOOLBOX" run --distro ubuntu --release 20.04 bash -c 'echo "$HOSTNAME"' ++ ++ assert_success ++ assert_line --index 0 "toolbox" ++ ++ if check_bats_version 1.10.0; then ++ assert [ ${#lines[@]} -eq 1 ] ++ else ++ assert [ ${#lines[@]} -eq 2 ] ++ fi ++ ++ assert [ ${#stderr_lines[@]} -eq 0 ] ++} +-- +2.43.0 + diff --git a/SOURCES/toolbox.conf b/SOURCES/toolbox.conf new file mode 100644 index 0000000..f612e2f --- /dev/null +++ b/SOURCES/toolbox.conf @@ -0,0 +1,17 @@ +[general] +# Create a toolbox container for a different operating system distro than the +# host. Cannot be used with 'image'. +## distro = "fedora" + +# Create a toolbox container for a different operating system release than the +# host. Cannot be used with 'image'. +## release = "33" + +# Change the name of the image used to create the toolbox container. This is +# useful for creating containers from custom-built images. Cannot be used with +# 'distro' or 'release'. +# +# If the name does not contain a registry, the local image storage will be +# consulted, and if it's not present there then it will be pulled from a +# suitable remote registry. +image = "registry.access.redhat.com/ubi9/toolbox:latest" diff --git a/SPECS/toolbox.spec b/SPECS/toolbox.spec new file mode 100644 index 0000000..10edd95 --- /dev/null +++ b/SPECS/toolbox.spec @@ -0,0 +1,488 @@ +%global __brp_check_rpaths %{nil} + +Name: toolbox +Version: 0.0.99.5 + +%global goipath github.com/containers/%{name} + +%if 0%{?fedora} +%gometa -f +%endif + +%if 0%{?rhel} +%if 0%{?rhel} <= 9 +%gometa +%else +%gometa -f +%endif +%endif + +%global toolbx_go 1.20 + +%if 0%{?fedora} +%global toolbx_go 1.22 +%endif + +%if 0%{?rhel} +%if 0%{?rhel} == 9 +%global toolbx_go 1.22.5 +%elif 0%{?rhel} == 10 +%global toolbx_go 1.22.5 +%endif +%endif + +Release: 15%{?dist} +Summary: Tool for interactive command line environments on Linux + +License: Apache-2.0 +URL: https://containertoolbx.org/ +Source0: https://github.com/containers/%{name}/releases/download/%{version}/%{name}-%{version}-vendored.tar.xz + +# RHEL specific +Source1: %{name}.conf + +# Upstream +Patch0: toolbox-test-system-new.patch +Patch1: toolbox-test-system-Unbreak-Podman-s-downstream-Fedora-CI.patch +Patch2: toolbox-playbooks-test-system-bats-1.11-podman-5.patch + +# Fedora specific +Patch100: toolbox-Make-the-build-flags-match-Fedora-s-gobuild.patch +Patch101: toolbox-Make-the-build-flags-match-Fedora-s-gobuild-for-PPC64.patch + +# RHEL specific +Patch200: toolbox-Make-the-build-flags-match-RHEL-s-gobuild.patch +Patch201: toolbox-Make-the-build-flags-match-RHEL-s-gobuild-for-PPC64.patch +Patch202: toolbox-Add-migration-paths-for-coreos-toolbox-users.patch + +BuildRequires: gcc +BuildRequires: go-md2man +BuildRequires: golang >= %{toolbx_go} +BuildRequires: meson >= 0.58.0 +BuildRequires: pkgconfig(bash-completion) +BuildRequires: shadow-utils-subid-devel +BuildRequires: systemd +BuildRequires: systemd-rpm-macros +%if ! 0%{?rhel} +BuildRequires: golang(github.com/HarryMichal/go-version) >= 1.0.1 +BuildRequires: golang(github.com/acobaugh/osrelease) >= 0.1.0 +BuildRequires: golang(github.com/briandowns/spinner) >= 1.17.0 +BuildRequires: golang(github.com/docker/go-units) >= 0.5.0 +BuildRequires: golang(github.com/fsnotify/fsnotify) >= 1.5.1 +BuildRequires: golang(github.com/godbus/dbus) >= 5.0.6 +BuildRequires: golang(github.com/sirupsen/logrus) >= 1.8.1 +BuildRequires: golang(github.com/spf13/cobra) >= 1.3.0 +BuildRequires: golang(github.com/spf13/viper) >= 1.10.1 +BuildRequires: golang(golang.org/x/sys/unix) >= 0.1.0 +BuildRequires: golang(golang.org/x/text) >= 0.3.8 +BuildRequires: golang(gopkg.in/yaml.v3) >= 3.0.0 +BuildRequires: pkgconfig(fish) +# for tests +# BuildRequires: codespell +# BuildRequires: golang(github.com/stretchr/testify) >= 1.7.0 +# BuildRequires: ShellCheck +%endif + +Recommends: skopeo + +Requires: containers-common +Requires: podman >= 1.6.4 +%if ! 0%{?rhel} +Requires: flatpak-session-helper +%endif + + +%description +Toolbx is a tool for Linux, which allows the use of interactive command line +environments for development and troubleshooting the host operating system, +without having to install software on the host. It is built on top of Podman +and other standard container technologies from OCI. + +Toolbx environments have seamless access to the user's home directory, the +Wayland and X11 sockets, networking (including Avahi), removable devices (like +USB sticks), systemd journal, SSH agent, D-Bus, ulimits, /dev and the udev +database, etc.. + + +%package tests +Summary: Tests for %{name} + +Requires: %{name}%{?_isa} = %{version}-%{release} +Requires: coreutils +Requires: grep +# for htpasswd +Requires: httpd-tools +Requires: openssl +Requires: skopeo +%if ! 0%{?rhel} +Requires: bats >= 1.7.0 +%endif + + +%description tests +The %{name}-tests package contains system tests for %{name}. + + +%prep +%setup -q + +%patch -P0 -p1 +%patch -P1 -p1 +%patch -P2 -p1 + +%if 0%{?fedora} +%ifnarch ppc64 +%patch -P100 -p1 +%else +%patch -P101 -p1 +%endif +%endif + +%if 0%{?rhel} +%ifnarch ppc64 +%patch -P200 -p1 +%else +%patch -P201 -p1 +%endif + +%if 0%{?rhel} <= 9 +%patch -P202 -p1 +%endif +%endif + +%gomkdir -s %{_builddir}/%{extractdir}/src %{?rhel:-k} + + +%build +export %{gomodulesmode} +export GOPATH=%{gobuilddir}:%{gopath} +export CGO_CFLAGS="%{optflags} -D_GNU_SOURCE -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64" + +%meson \ +%if 0%{?rhel} + -Dfish_completions_dir=%{_datadir}/fish/vendor_completions.d \ +%if 0%{?rhel} <= 9 + -Dmigration_path_for_coreos_toolbox=true \ +%endif +%endif + -Dprofile_dir=%{_sysconfdir}/profile.d \ + -Dtmpfiles_dir=%{_tmpfilesdir} \ + -Dzsh_completions_dir=%{_datadir}/zsh/site-functions + +%meson_build + + +# %%check +# %%meson_test + + +%install +%meson_install + +%if 0%{?rhel} +%if 0%{?rhel} <= 9 +install -m0644 %{SOURCE1} %{buildroot}%{_sysconfdir}/containers/%{name}.conf +%endif +%endif + + +%files +%doc CODE-OF-CONDUCT.md NEWS README.md SECURITY.md +%license COPYING %{?rhel:src/vendor/modules.txt} +%{_bindir}/%{name} +%{_datadir}/bash-completion +%{_datadir}/fish +%{_datadir}/zsh +%{_mandir}/man1/%{name}.1* +%{_mandir}/man1/%{name}-*.1* +%{_mandir}/man5/%{name}.conf.5* +%config(noreplace) %{_sysconfdir}/containers/%{name}.conf +%{_sysconfdir}/profile.d/%{name}.sh +%{_tmpfilesdir}/%{name}.conf + + +%files tests +%{_datadir}/%{name} + + +%changelog +* Tue Nov 26 2024 MSVSphere Packaging Team - 0.0.99.5-15 +- Rebuilt for MSVSphere 10 + +* Fri Aug 09 2024 Debarshi Ray - 0.0.99.5-15 +- Rebuild for CVE-2024-24791 +Resolves: RHEL-47199 + +* Thu Jul 11 2024 Debarshi Ray - 0.0.99.5-14 +- Silence 'rpminspect --tests=stack-prot' +- Silence 'rpminspect --tests=annocheck' (part 2) +Resolves: RHEL-33522 + +* Mon Jun 24 2024 Troy Dawson - 0.0.99.5-13 +- Bump release for June 2024 mass rebuild + +* Tue May 07 2024 Debarshi Ray - 0.0.99.5-12 +- Rebuild for CVE-2024-24788 +Resolves: RHEL-35915 + +* Tue May 07 2024 Debarshi Ray - 0.0.99.5-11 +- Unbreak the tests with Podman 5.0 +Resolves: RHEL-36170 + +* Tue Mar 26 2024 Debarshi Ray - 0.0.99.5-10 +- Specify the golang versions for RHEL 9 and 10 +Resolves: RHEL-30245 + +* Tue Mar 05 2024 Debarshi Ray - 0.0.99.5-9 +- Conditionalize the BuildRequires on golang +Resolves: RHEL-30245 + +* Tue Feb 27 2024 Debarshi Ray - 0.0.99.5-8 +- Unbreak Podman's downstream Fedora CI (part 2) +- Backport some new upstream tests +Resolves: RHEL-30245 + +* Tue Feb 13 2024 Debarshi Ray - 0.0.99.5-7 +- Unbreak Podman's downstream Fedora CI +- Update the BuildRequires on golang to reflect reality +Resolves: RHEL-30245 + +* Sun Feb 11 2024 Maxwell G - 0.0.99.5-6 +- Rebuild for golang 1.22.0 + +* Wed Feb 07 2024 Debarshi Ray - 0.0.99.5-5 +- Migrate to SPDX license + +* Sat Jan 27 2024 Fedora Release Engineering - 0.0.99.5-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild + +* Thu Jan 11 2024 Debarshi Ray - 0.0.99.5-3 +- Drop 'Recommends: subscription-manager' + +* Tue Dec 19 2023 Debarshi Ray - 0.0.99.5-2 +- Drop the experience and support subpackages + +* Tue Dec 19 2023 Debarshi Ray - 0.0.99.5-1 +- Update to 0.0.99.5 + +* Tue Dec 19 2023 Debarshi Ray - 0.0.99.4-10 +- Require openssl(1) for the system tests in the tests subpackage + +* Wed Dec 06 2023 Adam Williamson - 0.0.99.4-9 +- tests subpackage: require httpd-tools for htpasswd + +* Tue Dec 05 2023 Debarshi Ray - 0.0.99.4-8 +- Fix the conditionals for 'if RHEL <= 9' + +* Thu Nov 30 2023 Debarshi Ray - 0.0.99.4-7 +- Track the active container on Fedora Linux Asahi Remix + +* Thu Nov 09 2023 Debarshi Ray - 0.0.99.4-6 +- Drop the custom /etc/containers/toolbox.conf from RHEL 10 onwards + +* Mon Oct 02 2023 Debarshi Ray - 0.0.99.4-5 +- Drop github.com/coreos/toolbox compatibility from RHEL 10 onwards + +* Mon Oct 02 2023 Debarshi Ray - 0.0.99.4-4 +- Be aware of security hardened mount points +- Simplify removing the user's password + +* Sat Jul 22 2023 Fedora Release Engineering - 0.0.99.4-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild + +* Wed Mar 8 2023 Nieves Montero - 0.0.99.4-2 +- Sprinkle a debug log + +* Wed Feb 22 2023 Debarshi Ray - 0.0.99.4-1 +- Update to 0.0.99.4 + +* Wed Feb 22 2023 Martin Jackson - 0.0.99.3-12 +- Fix the ExclusiveArch + +* Tue Feb 21 2023 Debarshi Ray - 0.0.99.3-11 +- Add ExclusiveArch to match Podman + +* Thu Feb 02 2023 Yaakov Selkowitz - 0.0.99.3-10 +- Sync packaging changes from CentOS Stream + +* Sat Jan 21 2023 Fedora Release Engineering - 0.0.99.3-9 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild + +* Thu Dec 22 2022 Yaakov Selkowitz - 0.0.99.3-8 +- Use vendored dependencies for RHEL/ELN builds + +* Sat Jul 23 2022 Fedora Release Engineering - 0.0.99.3-7 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild + +* Tue Jul 19 2022 Maxwell G - 0.0.99.3-6 +- Rebuild for CVE-2022-{1705,32148,30631,30633,28131,30635,30632,30630,1962} in + golang + +* Sat Jun 18 2022 Robert-André Mauchin - 0.0.99.3-5 +- Rebuilt for CVE-2022-1996, CVE-2022-24675, CVE-2022-28327, CVE-2022-27191, + CVE-2022-29526, CVE-2022-30629 + +* Sat Jan 22 2022 Fedora Release Engineering - 0.0.99.3-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild + +* Sun Jan 09 2022 Ondřej Míchal - 0.0.99.3-3 +- Add upstream patch fixing doubled error messages + +* Fri Dec 10 2021 Debarshi Ray - 0.0.99.3-2 +- BuildRequire only systemd-rpm-macros as recommended by the Fedora packaging + guidelines + +* Fri Dec 10 2021 Debarshi Ray - 0.0.99.3-1 +- Update to 0.0.99.3 + +* Mon Oct 25 2021 Debarshi Ray - 0.0.99.2^3.git075b9a8d2779-9 +- Restore backwards compatibility with existing containers + +* Fri Oct 22 2021 Debarshi Ray - 0.0.99.2^3.git075b9a8d2779-8 +- Ensure that binaries are run against their build-time ABI + +* Mon Sep 13 2021 Oliver Gutiérrez - 0.0.99.2^3.git075b9a8d2779-7 +- Rebuilt for gating tests + +* Thu Sep 09 2021 Oliver Gutiérrez - 0.0.99.2^3.git075b9a8d2779-6 +- Rebuilt for gating tests + +* Mon Aug 23 2021 Oliver Gutiérrez - 0.0.99.2^3.git075b9a8d2779-5 +- Version bump to build and check fedora gating after fixing ansible playbooks + +* Fri Aug 20 2021 Oliver Gutiérrez - 0.0.99.2^3.git075b9a8d2779-4 +- Version bump to build and check fedora gating + +* Wed Aug 18 2021 Oliver Gutiérrez - 0.0.99.2^3.git075b9a8d2779-3 +- Added Fedora gating + +* Wed Aug 18 2021 Debarshi Ray - 0.0.99.2^3.git075b9a8d2779-2 +- Require containers-common for ownership of %%{_sysconfdir}/containers + +* Mon Aug 09 2021 Oliver Gutiérrez - 0.0.99.2^3.git075b9a8d2779-1 +- Updated to 0.0.99.2^3.git075b9a8d2779 snapshot + +* Thu Jul 29 2021 Oliver Gutiérrez - 0.0.99.2^2.git40fbd377ed0b-1 +- Updated to 0.0.99.2^2.git40fbd377ed0b snapshot + +* Wed Jul 28 2021 Oliver Gutiérrez - 0.0.99.2^1.git9820550c82bb-1 +- Updated to 0.00.99.2^1.git9820550c82bb snapshot + +* Wed Jul 28 2021 Ondřej Míchal - 0.0.99.2-3 +- Update dependencies of -tests subpackage + +* Fri Jul 23 2021 Fedora Release Engineering - 0.0.99.2-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild + +* Sat Jun 26 2021 Debarshi Ray - 0.0.99.2-1 +- Update to 0.0.99.2 + +* Tue Feb 23 2021 Debarshi Ray - 0.0.99.1-1 +- Update to 0.0.99.1 + +* Wed Jan 27 2021 Fedora Release Engineering - 0.0.99-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild + +* Tue Jan 12 2021 Debarshi Ray - 0.0.99-1 +- Update to 0.0.99 + +* Mon Jan 11 2021 Debarshi Ray - 0.0.98.1-2 +- Harden the binary by using the same CGO_CFLAGS as on RHEL 8 + +* Thu Jan 07 2021 Debarshi Ray - 0.0.98.1-1 +- Update to 0.0.98.1 + +* Tue Jan 05 2021 Debarshi Ray - 0.0.98-1 +- Update to 0.0.98 + +* Wed Nov 25 2020 Ondřej Míchal - 0.0.97-2 +- Move krb5-libs from -support to -experience, and update the list of packages + in -experience + +* Tue Nov 03 2020 Debarshi Ray - 0.0.97-1 +- Update to 0.0.97 + +* Thu Oct 01 2020 Debarshi Ray - 0.0.96-1 +- Update to 0.0.96 + +* Sun Aug 30 2020 Debarshi Ray - 0.0.95-1 +- Update to 0.0.95 + +* Mon Aug 24 2020 Debarshi Ray - 0.0.94-1 +- Update to 0.0.94 + +* Wed Jul 29 2020 Fedora Release Engineering - 0.0.93-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild + +* Sat Jul 25 2020 Debarshi Ray - 0.0.93-1 +- Update to 0.0.93 + +* Fri Jul 03 2020 Debarshi Ray - 0.0.92-1 +- Update to 0.0.92 + +* Fri Jul 03 2020 Debarshi Ray - 0.0.91-2 +- Fix the 'toolbox --version' output + +* Tue Jun 30 2020 Harry Míchal - 0.0.91-1 +- Update to 0.0.91 + +* Sat Jun 27 2020 Debarshi Ray - 0.0.18-5 +- Remove ExclusiveArch to match Podman + +* Wed Jun 10 2020 Debarshi Ray - 0.0.18-4 +- Sync the "experience" packages with the current Dockerfile +- Make "experience" Require "support" + +* Fri Apr 03 2020 Debarshi Ray - 0.0.18-3 +- Drop compatibility Obsoletes and Provides for fedora-toolbox + +* Fri Jan 31 2020 Fedora Release Engineering - 0.0.18-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild + +* Tue Jan 14 2020 Debarshi Ray - 0.0.18-1 +- Update to 0.0.18 + +* Wed Nov 20 2019 Debarshi Ray - 0.0.17-1 +- Update to 0.0.17 + +* Tue Oct 29 2019 Debarshi Ray - 0.0.16-1 +- Update to 0.0.16 + +* Mon Sep 30 2019 Debarshi Ray - 0.0.15-1 +- Update to 0.0.15 + +* Wed Sep 18 2019 Debarshi Ray - 0.0.14-1 +- Update to 0.0.14 + +* Thu Sep 05 2019 Debarshi Ray - 0.0.13-1 +- Update to 0.0.13 + +* Sat Jul 27 2019 Fedora Release Engineering - 0.0.12-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild + +* Mon Jul 22 2019 Debarshi Ray - 0.0.12-1 +- Update to 0.0.12 + +* Tue Jun 25 2019 Debarshi Ray - 0.0.11-2 +- Require flatpak-session-helper + +* Fri Jun 21 2019 Debarshi Ray - 0.0.11-1 +- Update to 0.0.11 + +* Tue May 21 2019 Debarshi Ray - 0.0.10-1 +- Update to 0.0.10 + +* Tue Apr 30 2019 Debarshi Ray - 0.0.9-1 +- Update to 0.0.9 + +* Tue Apr 16 2019 Adam Williamson - 0.0.8-2 +- Rebuild with Meson fix for #1699099 + +* Fri Apr 12 2019 Debarshi Ray - 0.0.8-1 +- Update to 0.0.8 + +* Thu Mar 14 2019 Debarshi Ray - 0.0.7-1 +- Update to 0.0.7 + +* Fri Feb 22 2019 Debarshi Ray - 0.0.6-1 +- Initial build after rename from fedora-toolbox