diff --git a/.gitignore b/.gitignore index 3db2fe9..6787941 100644 --- a/.gitignore +++ b/.gitignore @@ -30,3 +30,4 @@ /toolbox-0.0.99.3.tar.xz /toolbox-0.0.99.3-vendor.tar.xz /toolbox-0.0.99.4-vendored.tar.xz +/toolbox-0.0.99.5-vendored.tar.xz diff --git a/rpminspect.yaml b/rpminspect.yaml new file mode 100644 index 0000000..924e431 --- /dev/null +++ b/rpminspect.yaml @@ -0,0 +1,12 @@ +# https://github.com/rpminspect/rpminspect/blob/master/data/generic.yaml +# https://github.com/rpminspect/rpminspect-data-fedora/blob/main/fedora.yaml + +--- + +annocheck: + - hardened: --ignore-unknown --verbose --skip-run-path + +runpath: + allowed_paths: + - /run/host/usr/lib + - /run/host/usr/lib64 diff --git a/sources b/sources index a8351c5..df91c99 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (toolbox-0.0.99.4-vendored.tar.xz) = 882cd6ec1c1a193af8774dfdfd0aff72d376c4fec3e0cc702e2d524353c051e408eab2ac3fb43ec00fe622b46ac89fdbe97aca2f7cfbe3822e5d3ff1743f2fd0 +SHA512 (toolbox-0.0.99.5-vendored.tar.xz) = d82666e9abcbac2d01de440dfb8d57801bb97ec0854a9859c64689c47c6a1344b846fb151ffa9371d0a9a2c85c8f61c96cf8f546449ec63c9a44d85ef328b745 diff --git a/tests/tests.yml b/tests/tests.yml index 0048a3e..e7ff188 100644 --- a/tests/tests.yml +++ b/tests/tests.yml @@ -9,7 +9,4 @@ tests: - name: toolbox package: toolbox - environment: - PODMAN: /usr/bin/podman become: true - \ No newline at end of file diff --git a/toolbox-Don-t-use-podman-1-when-generating-the-comp.patch b/toolbox-Don-t-use-podman-1-when-generating-the-comp.patch deleted file mode 100644 index 85c7289..0000000 --- a/toolbox-Don-t-use-podman-1-when-generating-the-comp.patch +++ /dev/null @@ -1,89 +0,0 @@ -From fc5f568c5d82f4a16982268fa67092e52be91fbe Mon Sep 17 00:00:00 2001 -From: Debarshi Ray -Date: Tue, 28 Feb 2023 17:12:04 +0100 -Subject: [PATCH] cmd/root: Don't use podman(1) when generating the completions - -Ever since commit bafbbe81c9220cb3, the shell completions are generated -while building Toolbx using the 'completion' command. This involves -running toolbox(1) itself, and hence invoking 'podman version' to decide -if 'podman system migrate' is needed or not. - -Unfortunately, some build environments, like Fedora's, are set up inside -a chroot(2) or systemd-nspawn(1) or similar, where 'podman version' may -not work because it does various things with namespaces(7) and clone(2) -that can, under certain circumstances, encounter an EPERM. - -Therefore, it's better to avoid using podman(1) when generating the -shell completions, especially, since they are generated by Cobra itself -and podman(1) is not involved at all. - -Note that podman(1) is needed when the generated shell completions are -actually used in interactive command line environments. The shell -completions invoke the hidden '__complete' command to get the results -that are presented to the user, and, if needed, 'podman system migrate' -will continue to be run as part of that. - -This partially reverts commit f3e005d0142d7ec76d5ac8f0a2f331a52fd46011 -because podman(1) is now only an optional runtime dependency for the -system tests. - -https://github.com/containers/podman/issues/17657 ---- - meson.build | 2 +- - src/cmd/root.go | 9 +++++++-- - 2 files changed, 8 insertions(+), 3 deletions(-) - -diff --git a/meson.build b/meson.build -index 6f044bb204e3..653a3d3ac588 100644 ---- a/meson.build -+++ b/meson.build -@@ -18,12 +18,12 @@ subid_dep = cc.find_library('subid', has_headers: ['shadow/subid.h']) - - go = find_program('go') - go_md2man = find_program('go-md2man') --podman = find_program('podman') - - bats = find_program('bats', required: false) - codespell = find_program('codespell', required: false) - htpasswd = find_program('htpasswd', required: false) - openssl = find_program('openssl', required: false) -+podman = find_program('podman', required: false) - shellcheck = find_program('shellcheck', required: false) - skopeo = find_program('skopeo', required: false) - -diff --git a/src/cmd/root.go b/src/cmd/root.go -index 304b03dcd889..9975ccc7a4c8 100644 ---- a/src/cmd/root.go -+++ b/src/cmd/root.go -@@ -166,7 +166,7 @@ func preRun(cmd *cobra.Command, args []string) error { - - logrus.Debugf("TOOLBOX_PATH is %s", toolboxPath) - -- if err := migrate(); err != nil { -+ if err := migrate(cmd, args); err != nil { - return err - } - -@@ -211,13 +211,18 @@ func rootRun(cmd *cobra.Command, args []string) error { - return rootRunImpl(cmd, args) - } - --func migrate() error { -+func migrate(cmd *cobra.Command, args []string) error { - logrus.Debug("Migrating to newer Podman") - - if utils.IsInsideContainer() { - return nil - } - -+ if cmdName, completionCmdName := cmd.Name(), completionCmd.Name(); cmdName == completionCmdName { -+ logrus.Debugf("Migration not needed: command %s doesn't need it", cmdName) -+ return nil -+ } -+ - configDir, err := os.UserConfigDir() - if err != nil { - logrus.Debugf("Migrating to newer Podman: failed to get the user config directory: %s", err) --- -2.39.1 - diff --git a/toolbox-Make-the-build-flags-match-Fedora-s-gobuild-for-PPC64.patch b/toolbox-Make-the-build-flags-match-Fedora-s-gobuild-for-PPC64.patch index afb5193..35ecc83 100644 --- a/toolbox-Make-the-build-flags-match-Fedora-s-gobuild-for-PPC64.patch +++ b/toolbox-Make-the-build-flags-match-Fedora-s-gobuild-for-PPC64.patch @@ -1,4 +1,4 @@ -From 865f58881c17c233f288b8978faaeba8b4b2c2f0 Mon Sep 17 00:00:00 2001 +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} @@ -50,5 +50,5 @@ index c572d6dfb02b..cae2de426a96 100755 exit "$?" -- -2.39.2 +2.43.0 diff --git a/toolbox-Make-the-build-flags-match-Fedora-s-gobuild.patch b/toolbox-Make-the-build-flags-match-Fedora-s-gobuild.patch index d88c845..c290d36 100644 --- a/toolbox-Make-the-build-flags-match-Fedora-s-gobuild.patch +++ b/toolbox-Make-the-build-flags-match-Fedora-s-gobuild.patch @@ -1,4 +1,4 @@ -From f4582e4748a15c462eac229f9bd9214415f166c9 Mon Sep 17 00:00:00 2001 +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} @@ -50,5 +50,5 @@ index c572d6dfb02b..0e6a2efa6853 100755 exit "$?" -- -2.39.2 +2.43.0 diff --git a/toolbox-Sprinkle-a-debug-log.patch b/toolbox-Sprinkle-a-debug-log.patch deleted file mode 100644 index ba6a3dd..0000000 --- a/toolbox-Sprinkle-a-debug-log.patch +++ /dev/null @@ -1,22 +0,0 @@ -From cafbca996ec4a19f9f80bae109436e2dfc7149a4 Mon Sep 17 00:00:00 2001 -From: Debarshi Ray -Date: Wed, 1 Mar 2023 19:41:56 +0100 -Subject: [PATCH] cmd/root: Sprinkle a debug log - -https://github.com/containers/toolbox/pull/1251 ---- - src/cmd/root.go | 1 + - 1 file changed, 1 insertion(+) - -diff --git a/src/cmd/root.go b/src/cmd/root.go -index 9975ccc7a..2e7428a20 100644 ---- a/src/cmd/root.go -+++ b/src/cmd/root.go -@@ -215,6 +215,7 @@ func migrate(cmd *cobra.Command, args []string) error { - logrus.Debug("Migrating to newer Podman") - - if utils.IsInsideContainer() { -+ logrus.Debug("Migration not needed: running inside a container") - return nil - } - diff --git a/toolbox-test-system-Unbreak-Podman-s-downstream-Fedora-CI.patch b/toolbox-test-system-Unbreak-Podman-s-downstream-Fedora-CI.patch new file mode 100644 index 0000000..1956003 --- /dev/null +++ b/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/toolbox-test-system-new.patch b/toolbox-test-system-new.patch new file mode 100644 index 0000000..9800b15 --- /dev/null +++ b/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/toolbox.spec b/toolbox.spec index 92edc3c..c8ac033 100644 --- a/toolbox.spec +++ b/toolbox.spec @@ -1,27 +1,35 @@ %global __brp_check_rpaths %{nil} Name: toolbox -Version: 0.0.99.4 +Version: 0.0.99.5 %global goipath github.com/containers/%{name} -%if 0%{?rhel} == 9 +%if 0%{?fedora} +%gometa -f +%endif + +%if 0%{?rhel} +%if 0%{?rhel} <= 9 %gometa %else %gometa -f %endif +%endif -Release: 2%{?dist} -Summary: Tool for containerized command line environments on Linux +Release: 3%{?dist} +Summary: Tool for interactive command line environments on Linux License: ASL 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-Don-t-use-podman-1-when-generating-the-comp.patch -Patch1: toolbox-Sprinkle-a-debug-log.patch +Patch0: toolbox-test-system-new.patch +Patch1: toolbox-test-system-Unbreak-Podman-s-downstream-Fedora-CI.patch # Fedora specific Patch100: toolbox-Make-the-build-flags-match-Fedora-s-gobuild.patch @@ -34,7 +42,7 @@ Patch202: toolbox-Add-migration-paths-for-coreos-toolbox-users.patch BuildRequires: gcc BuildRequires: go-md2man -BuildRequires: golang >= 1.19.4 +BuildRequires: golang >= 1.20 BuildRequires: meson >= 0.58.0 BuildRequires: pkgconfig(bash-completion) BuildRequires: shadow-utils-subid-devel @@ -44,14 +52,15 @@ BuildRequires: systemd-rpm-macros 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.4.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) -BuildRequires: golang(golang.org/x/term) +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 @@ -59,17 +68,25 @@ BuildRequires: pkgconfig(fish) # BuildRequires: ShellCheck %endif +Recommends: skopeo + Requires: containers-common -Requires: podman >= 1.4.0 +Requires: podman >= 1.6.4 %if ! 0%{?rhel} Requires: flatpak-session-helper %endif %description -Toolbox is a tool for Linux operating systems, which allows the use of -containerized command line environments. It is built on top of Podman and -other standard container technologies from OCI. +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.. %if ! 0%{?rhel} @@ -153,11 +170,13 @@ Summary: Tests for %{name} Requires: %{name}%{?_isa} = %{version}-%{release} Requires: coreutils -Requires: gawk Requires: grep +# for htpasswd +Requires: httpd-tools +Requires: openssl Requires: skopeo %if ! 0%{?rhel} -Requires: bats +Requires: bats >= 1.7.0 %endif %description tests @@ -166,6 +185,7 @@ The %{name}-tests package contains system tests for %{name}. %prep %setup -q + %patch0 -p1 %patch1 -p1 @@ -184,8 +204,10 @@ The %{name}-tests package contains system tests for %{name}. %patch201 -p1 %endif +%if 0%{?rhel} <= 9 %patch202 -p1 %endif +%endif %gomkdir -s %{_builddir}/%{extractdir}/src %{?rhel:-k} @@ -198,7 +220,9 @@ export CGO_CFLAGS="%{optflags} -D_GNU_SOURCE -D_LARGEFILE_SOURCE -D_LARGEFILE64_ %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} \ @@ -215,8 +239,10 @@ export CGO_CFLAGS="%{optflags} -D_GNU_SOURCE -D_LARGEFILE_SOURCE -D_LARGEFILE64_ %meson_install %if 0%{?rhel} +%if 0%{?rhel} <= 9 install -m0644 %{SOURCE1} %{buildroot}%{_sysconfdir}/containers/%{name}.conf %endif +%endif %files @@ -246,6 +272,29 @@ install -m0644 %{SOURCE1} %{buildroot}%{_sysconfdir}/containers/%{name}.conf %changelog +* Tue Feb 27 2024 Debarshi Ray - 0.0.99.5-3 +- Unbreak Podman's downstream Fedora CI (part 2) +- Backport some new upstream tests + +* Tue Feb 13 2024 Debarshi Ray - 0.0.99.5-2 +- Unbreak Podman's downstream Fedora CI + +* 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-6 +- Require openssl(1) for the system tests in the tests subpackage + +* Wed Dec 06 2023 Adam Williamson - 0.0.99.4-5 +- tests subpackage: require httpd-tools for htpasswd + +* Mon Oct 02 2023 Debarshi Ray - 0.0.99.4-4 +- Drop github.com/coreos/toolbox compatibility from RHEL 10 onwards + +* Mon Oct 02 2023 Debarshi Ray - 0.0.99.4-3 +- Be aware of security hardened mount points +- Simplify removing the user's password + * Wed Mar 8 2023 Nieves Montero - 0.0.99.4-2 - Sprinkle a debug log