From b9680ab7127dc3173b3a24037b5b91e1cf04908f Mon Sep 17 00:00:00 2001 From: Jindrich Novy Date: Fri, 3 Sep 2021 11:31:08 +0200 Subject: [PATCH] toolbox-0.0.99.3-0.5.git660b6970e998.el9 - Make sosreport work by setting the HOST environment variable - Related: #2000051 Signed-off-by: Jindrich Novy --- gating.yaml | 6 -- tests/roles/bats_installed/tasks/main.yml | 12 ---- tests/roles/nonroot_user/tasks/main.yml | 7 -- .../run_bats_tests/files/run_bats_tests.sh | 72 ------------------- tests/roles/run_bats_tests/tasks/main.yml | 37 ---------- .../run_bats_tests/tasks/run_one_test.yml | 52 -------------- tests/tests.yml | 15 ---- ...report-work-by-setting-the-HOST-envi.patch | 26 +++++++ toolbox.conf | 17 +++++ toolbox.spec | 12 +++- 10 files changed, 54 insertions(+), 202 deletions(-) delete mode 100644 gating.yaml delete mode 100644 tests/roles/bats_installed/tasks/main.yml delete mode 100644 tests/roles/nonroot_user/tasks/main.yml delete mode 100755 tests/roles/run_bats_tests/files/run_bats_tests.sh delete mode 100644 tests/roles/run_bats_tests/tasks/main.yml delete mode 100644 tests/roles/run_bats_tests/tasks/run_one_test.yml delete mode 100644 tests/tests.yml create mode 100644 toolbox-cmd-run-Make-sosreport-work-by-setting-the-HOST-envi.patch create mode 100644 toolbox.conf diff --git a/gating.yaml b/gating.yaml deleted file mode 100644 index 648918d..0000000 --- a/gating.yaml +++ /dev/null @@ -1,6 +0,0 @@ ---- !Policy -product_versions: - - rhel-9 -decision_context: osci_compose_gate -rules: - - !PassingTestCaseRule {test_case_name: osci.brew-build.tier0.functional} diff --git a/tests/roles/bats_installed/tasks/main.yml b/tests/roles/bats_installed/tasks/main.yml deleted file mode 100644 index 3fa1798..0000000 --- a/tests/roles/bats_installed/tasks/main.yml +++ /dev/null @@ -1,12 +0,0 @@ ---- -# Sigh; RHEL8 doesn't have BATS -- name: bats | fetch and unpack tarball - unarchive: - src: https://github.com/bats-core/bats-core/archive/v1.4.1.tar.gz - dest: /root - remote_src: true - -- name: bats | install - command: ./install.sh /usr/local - args: - chdir: /root/bats-core-1.4.1 diff --git a/tests/roles/nonroot_user/tasks/main.yml b/tests/roles/nonroot_user/tasks/main.yml deleted file mode 100644 index 51bf44a..0000000 --- a/tests/roles/nonroot_user/tasks/main.yml +++ /dev/null @@ -1,7 +0,0 @@ ---- -- name: create nonroot user - user: - name: testuser - shell: /bin/bash -- name: enable linger - command: loginctl enable-linger testuser diff --git a/tests/roles/run_bats_tests/files/run_bats_tests.sh b/tests/roles/run_bats_tests/files/run_bats_tests.sh deleted file mode 100755 index e9f5f5f..0000000 --- a/tests/roles/run_bats_tests/files/run_bats_tests.sh +++ /dev/null @@ -1,72 +0,0 @@ -#!/bin/bash -# -# Run bats tests for a given $TEST_PACKAGE, e.g. buildah, podman -# -# This is invoked by the 'run_bats_tests' role; we assume that -# the package foo has a foo-tests subpackage which provides the -# directory /usr/share/foo/test/system, containing one or more .bats -# test files. -# - -export PATH=/usr/local/bin:/usr/sbin:/usr/bin - -FULL_LOG=/tmp/test.debug.log -BATS_LOG=/tmp/test.bats.log -rm -f $FULL_LOG $BATS_LOG -touch $FULL_LOG $BATS_LOG - -exec &> $FULL_LOG - -# Log program versions -echo "Packages:" -rpm -q ${TEST_PACKAGE} ${TEST_PACKAGE}-tests - -echo "------------------------------" -printenv | sort - -testdir=/usr/share/${TEST_PACKAGE}/test/system - -if ! cd $testdir; then - echo "FAIL ${TEST_NAME} : cd $testdir" >> /tmp/test.log - exit 0 -fi - -if [ -e /tmp/helper.sh ]; then - echo "------------------------------" - echo ". /tmp/helper.sh" - . /tmp/helper.sh -fi - -if [ "$(type -t setup)" = "function" ]; then - echo "------------------------------" - echo "\$ setup" - setup - if [ $? -ne 0 ]; then - echo "FAIL ${TEST_NAME} : setup" >> /tmp/test.log - exit 0 - fi -fi - -echo "------------------------------" -echo "\$ bats ." -bats . &> $BATS_LOG -rc=$? - -echo "------------------------------" -echo "bats completed with status $rc" - -status=PASS -if [ $rc -ne 0 ]; then - status=FAIL -fi - -echo "${status} ${TEST_NAME}" >> /tmp/test.log - -if [ "$(type -t teardown)" = "function" ]; then - echo "------------------------------" - echo "\$ teardown" - teardown -fi - -# FIXME: for CI purposes, always exit 0. This allows subsequent tests. -exit 0 diff --git a/tests/roles/run_bats_tests/tasks/main.yml b/tests/roles/run_bats_tests/tasks/main.yml deleted file mode 100644 index da79a4c..0000000 --- a/tests/roles/run_bats_tests/tasks/main.yml +++ /dev/null @@ -1,37 +0,0 @@ ---- -# Create empty results file, world-writable -- name: initialize test.log file - copy: dest=/tmp/test.log content='' force=yes mode=0666 - -- name: execute tests - include: run_one_test.yml - with_items: "{{ tests }}" - loop_control: - loop_var: test - -- name: pull test.log results - fetch: - src: "/tmp/test.log" - dest: "{{ artifacts }}/test.log" - flat: yes - -# Copied from standard-test-basic -- name: check results - shell: grep "^FAIL" /tmp/test.log - register: test_fails - # Never fail at this step. Just store result of tests. - failed_when: False - -- name: preserve results - set_fact: - role_result_failed: "{{ (test_fails.stdout|d|length > 0) or (test_fails.stderr|d|length > 0) }}" - role_result_msg: "{{ test_fails.stdout|d('tests failed.') }}" - -- name: display results - vars: - msg: | - Tests failed: {{ role_result_failed|d('Undefined') }} - Tests msg: {{ role_result_msg|d('None') }} - debug: - msg: "{{ msg.split('\n') }}" - failed_when: "role_result_failed|bool" diff --git a/tests/roles/run_bats_tests/tasks/run_one_test.yml b/tests/roles/run_bats_tests/tasks/run_one_test.yml deleted file mode 100644 index b44ed42..0000000 --- a/tests/roles/run_bats_tests/tasks/run_one_test.yml +++ /dev/null @@ -1,52 +0,0 @@ ---- -- name: "{{ test.name }} | install test packages" - dnf: name="{{ test.package }}-tests" state=installed - -- name: "{{ test.name }} | define helper variables" - set_fact: - test_name_oneword: "{{ test.name | replace(' ','-') }}" - -# UGH. This is necessary because our caller sets some environment variables -# and we need to set a few more based on other caller variables; then we -# need to combine the two dicts when running the test. This seems to be -# the only way to do it in ansible. -- name: "{{ test.name }} | define local environment" - set_fact: - local_environment: - TEST_NAME: "{{ test.name }}" - TEST_PACKAGE: "{{ test.package }}" - TEST_ENV: "{{ test.environment }}" - -- name: "{{ test.name }} | setup/teardown helper | see if exists" - local_action: stat path={{ role_path }}/files/helper.{{ test_name_oneword }}.sh - register: helper - -- name: "{{ test.name }} | setup/teardown helper | install" - copy: src=helper.{{ test_name_oneword }}.sh dest=/tmp/helper.sh - when: helper.stat.exists - -- name: "{{ test.name }} | run test" - script: ./run_bats_tests.sh - args: - chdir: /usr/share/{{ test.package }}/test/system - become: "{{ true if test.become is defined else false }}" - become_user: testuser - environment: "{{ local_environment | combine(test.environment) }}" - -- name: "{{ test.name }} | pull logs" - fetch: - src: "/tmp/test.{{ item }}.log" - dest: "{{ artifacts }}/test.{{ test_name_oneword }}.{{ item }}.log" - flat: yes - with_items: - - bats - - debug - -- name: "{{ test.name }} | remove remote logs and helpers" - file: - dest=/tmp/{{ item }} - state=absent - with_items: - - test.bats.log - - test.debug.log - - helper.sh diff --git a/tests/tests.yml b/tests/tests.yml deleted file mode 100644 index 91c9b65..0000000 --- a/tests/tests.yml +++ /dev/null @@ -1,15 +0,0 @@ ---- -- hosts: localhost - tags: classic - vars: - - artifacts: ./artifacts - roles: - - role: bats_installed - - role: nonroot_user - - role: run_bats_tests - tests: - - name: toolbox - package: toolbox - environment: - PODMAN: /usr/bin/podman - become: true \ No newline at end of file diff --git a/toolbox-cmd-run-Make-sosreport-work-by-setting-the-HOST-envi.patch b/toolbox-cmd-run-Make-sosreport-work-by-setting-the-HOST-envi.patch new file mode 100644 index 0000000..84ae242 --- /dev/null +++ b/toolbox-cmd-run-Make-sosreport-work-by-setting-the-HOST-envi.patch @@ -0,0 +1,26 @@ +From 786c5065c73703ef46e13905a4672f1b4918310a Mon Sep 17 00:00:00 2001 +From: Debarshi Ray +Date: Wed, 18 Aug 2021 17:55:21 +0200 +Subject: [PATCH] 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 e8e96932415e..188f0f2394df 100644 +--- a/src/cmd/run.go ++++ b/src/cmd/run.go +@@ -443,6 +443,7 @@ func constructExecArgs(container string, + execArgs = append(execArgs, detachKeys...) + + execArgs = append(execArgs, []string{ ++ "--env", "HOST=/run/host", + "--interactive", + "--tty", + "--user", currentUser.Username, +-- +2.31.1 + diff --git a/toolbox.conf b/toolbox.conf new file mode 100644 index 0000000..8ef3b3a --- /dev/null +++ b/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.redhat.io/rhel8/support-tools:latest" diff --git a/toolbox.spec b/toolbox.spec index 24ea390..840aa13 100644 --- a/toolbox.spec +++ b/toolbox.spec @@ -9,7 +9,7 @@ Version: 0.0.99.3 %global goipath github.com/containers/%{name} %gometa -Release: 0.4.git660b6970e998%{?dist} +Release: 0.5.git660b6970e998%{?dist} Summary: Unprivileged development environment License: ASL 2.0 @@ -20,10 +20,12 @@ URL: https://github.com/containers/%{name} # $ cd src # $ go mod vendor Source0: %{name}-%{version}-vendored.tar.xz +Source1: %{name}.conf # RHEL specific Patch100: toolbox-Make-the-build-flags-match-RHEL-s-gobuild.patch Patch101: toolbox-Make-the-build-flags-match-RHEL-s-gobuild-for-PPC64.patch +Patch102: toolbox-cmd-run-Make-sosreport-work-by-setting-the-HOST-envi.patch # https://bugzilla.redhat.com/show_bug.cgi?id=1905383 ExcludeArch: %{ix86} @@ -34,6 +36,7 @@ BuildRequires: meson BuildRequires: pkgconfig(bash-completion) BuildRequires: systemd +Requires: containers-common Requires: podman >= 1.4.0 @@ -61,6 +64,8 @@ The %{name}-tests package contains system tests for %{name}. %patch101 -p1 %endif +%patch102 -p1 + # %%gomkdir is absent from RHEL 8. GOBUILDDIR="$(pwd)/_build" GOSOURCEDIR="$(pwd)" @@ -88,6 +93,7 @@ ln -s src/vendor vendor %install %meson_install +install -m0644 %{SOURCE1} %{buildroot}%{_sysconfdir}/containers/%{name}.conf %files @@ -106,6 +112,10 @@ ln -s src/vendor vendor %changelog +* Fri Sep 03 2021 Jindrich Novy - 0.0.99.3-0.5.git660b6970e998 +- Make sosreport work by setting the HOST environment variable +- Related: #2000051 + * Mon Aug 30 2021 Oliver GutiƩrrez - 0.0.99.3-0.4.git660b6970e998 - Fixed gating tests bats version Related: rhbz#1977343