commit 2bfe0dcde05bc73f9d2dfefa5b021d9a71b43ada Author: CentOS Sources Date: Tue Nov 2 08:05:58 2021 -0400 import toolbox-0.0.99.3-3.module+el9.0.0+12467+378c8264 diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..d744aa9 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +SOURCES/toolbox-0.0.99.3-vendored.tar.xz diff --git a/.toolbox.metadata b/.toolbox.metadata new file mode 100644 index 0000000..44b3e7d --- /dev/null +++ b/.toolbox.metadata @@ -0,0 +1 @@ +925877d2e970cfbf315174de4ceaa921581abed6 SOURCES/toolbox-0.0.99.3-vendored.tar.xz 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..19544b1 --- /dev/null +++ b/SOURCES/toolbox-Make-the-build-flags-match-RHEL-s-gobuild-for-PPC64.patch @@ -0,0 +1,40 @@ +From a245af969792bafcfa86090c856a06cb23061816 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 %{gobuild} for PPC64 + +The Go toolchain doesn't play well with passing compiler and linker +flags via environment variables. The linker flags require a second +level of quoting, which leaves the build system without a quote level +to assign the flags to an environment variable like GOFLAGS. + +This is one reason why RHEL doesn't have a RPM macro with only the +flags. The %{gobuild} RPM macro includes the entire 'go build ...' +invocation. + +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 "%{gobuild}"' to expand the %{gobuild} macro. +--- + src/go-build-wrapper | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/src/go-build-wrapper b/src/go-build-wrapper +index 0d27120da052..ef1a03af750a 100755 +--- a/src/go-build-wrapper ++++ b/src/go-build-wrapper +@@ -27,5 +27,6 @@ if ! cd "$1"; then + exit 1 + fi + +-go build -trimpath -ldflags "-extldflags '-Wl,--wrap,pthread_sigmask $4' -linkmode external -X github.com/containers/toolbox/pkg/version.currentVersion=$3" -o "$2/toolbox" ++unset LDFLAGS ++go build -compiler gc -tags="rpm_crashtraceback ${BUILDTAGS:-}" -ldflags "${LDFLAGS:-} -compressdwarf=false -B 0x$(head -c20 /dev/urandom|od -An -tx1|tr -d ' \n') -extldflags '-Wl,-z,relro -Wl,--as-needed -Wl,-z,now -specs=/usr/lib/rpm/redhat/redhat-hardened-ld -Wl,--wrap,pthread_sigmask $4' -linkmode external -X github.com/containers/toolbox/pkg/version.currentVersion=$3" -a -v -x -o "$2/toolbox" + exit "$?" +-- +2.31.1 + 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..10db68e --- /dev/null +++ b/SOURCES/toolbox-Make-the-build-flags-match-RHEL-s-gobuild.patch @@ -0,0 +1,40 @@ +From 05722d2861c23554b9741c059e853da9ab38282e 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 %{gobuild} + +The Go toolchain doesn't play well with passing compiler and linker +flags via environment variables. The linker flags require a second +level of quoting, which leaves the build system without a quote level +to assign the flags to an environment variable like GOFLAGS. + +This is one reason why RHEL doesn't have a RPM macro with only the +flags. The %{gobuild} RPM macro includes the entire 'go build ...' +invocation. + +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 meant for every CPU architecture other than +PPC64, and should be kept updated to match RHEL's Go guidelines. Use +'rpm --eval "%{gobuild}"' to expand the %{gobuild} macro. +--- + src/go-build-wrapper | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/src/go-build-wrapper b/src/go-build-wrapper +index 0d27120da052..f08f3218560a 100755 +--- a/src/go-build-wrapper ++++ b/src/go-build-wrapper +@@ -27,5 +27,6 @@ if ! cd "$1"; then + exit 1 + fi + +-go build -trimpath -ldflags "-extldflags '-Wl,--wrap,pthread_sigmask $4' -linkmode external -X github.com/containers/toolbox/pkg/version.currentVersion=$3" -o "$2/toolbox" ++unset LDFLAGS ++go build -buildmode pie -compiler gc -tags="rpm_crashtraceback ${BUILDTAGS:-}" -ldflags "${LDFLAGS:-} -compressdwarf=false -B 0x$(head -c20 /dev/urandom|od -An -tx1|tr -d ' \n') -extldflags '-Wl,-z,relro -Wl,--as-needed -Wl,-z,now -specs=/usr/lib/rpm/redhat/redhat-hardened-ld -Wl,--wrap,pthread_sigmask $4' -linkmode external -X github.com/containers/toolbox/pkg/version.currentVersion=$3" -a -v -x -o "$2/toolbox" + exit "$?" +-- +2.31.1 + diff --git a/SOURCES/toolbox-cmd-run-Make-sosreport-work-by-setting-the-HOST-envi.patch b/SOURCES/toolbox-cmd-run-Make-sosreport-work-by-setting-the-HOST-envi.patch new file mode 100644 index 0000000..84ae242 --- /dev/null +++ b/SOURCES/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/SOURCES/toolbox.conf b/SOURCES/toolbox.conf new file mode 100644 index 0000000..8ef3b3a --- /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.redhat.io/rhel8/support-tools:latest" diff --git a/SPECS/toolbox.spec b/SPECS/toolbox.spec new file mode 100644 index 0000000..1db9d9c --- /dev/null +++ b/SPECS/toolbox.spec @@ -0,0 +1,248 @@ +# RHEL's RPM toolchain doesn't like the compressed DWARF data generated by the +# Go toolchain. +%global _dwz_low_mem_die_limit 0 +%global _find_debuginfo_dwz_opts %{nil} + +Name: toolbox +Version: 0.0.99.3 + +%global goipath github.com/containers/%{name} +%gometa + +Release: 3%{?dist} +Summary: Unprivileged development environment + +License: ASL 2.0 +URL: https://github.com/containers/%{name} + +# https://github.com/containers/%%{name}/releases/download/%%{version}/%%{name}-%%{version}.tar.xz +# A vendored tarball was created from the upstream tarball: +# $ 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} + +BuildRequires: golang >= 1.13 +BuildRequires: go-md2man +BuildRequires: meson +BuildRequires: pkgconfig(bash-completion) +BuildRequires: systemd + +Requires: containers-common +Requires: podman >= 1.4.0 + + +%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. + + +%package tests +Summary: Tests for %{name} + +Requires: %{name}%{?_isa} = %{version}-%{release} + +%description tests +The %{name}-tests package contains system tests for %{name}. + + +%prep +%setup -q + +%ifnarch ppc64 +%patch100 -p1 +%else +%patch101 -p1 +%endif + +%patch102 -p1 + +# %%gomkdir is absent from RHEL 8. +GOBUILDDIR="$(pwd)/_build" +GOSOURCEDIR="$(pwd)" +if [[ ! -e "$GOBUILDDIR/bin" ]] ; then + install -m 0755 -vd "$GOBUILDDIR/bin" +fi +if [[ ! -e "$GOBUILDDIR/src/%{goipath}" ]] ; then + install -m 0755 -vd "$(dirname $GOBUILDDIR/src/%{goipath})" + ln -fs "$GOSOURCEDIR" "$GOBUILDDIR/src/%{goipath}" +fi +cd "$GOBUILDDIR/src/%{goipath}" + + +%build +export GO111MODULE=off +GOBUILDDIR="$(pwd)/_build" +export GOPATH="$GOBUILDDIR:%{gopath}" +export CGO_CFLAGS="%{optflags} -D_GNU_SOURCE -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64" +ln -s src/cmd cmd +ln -s src/pkg pkg +ln -s src/vendor vendor +%meson --buildtype=plain -Dprofile_dir=%{_sysconfdir}/profile.d +%meson_build + + +%install +%meson_install +install -m0644 %{SOURCE1} %{buildroot}%{_sysconfdir}/containers/%{name}.conf + + +%files +%doc CODE-OF-CONDUCT.md NEWS README.md SECURITY.md +%license COPYING +%{_bindir}/%{name} +%{_datadir}/bash-completion +%{_mandir}/man1/%{name}.1* +%{_mandir}/man1/%{name}-*.1* +%config(noreplace) %{_sysconfdir}/containers/%{name}.conf +%{_sysconfdir}/profile.d/%{name}.sh +%{_tmpfilesdir}/%{name}.conf + +%files tests +%{_datadir}/%{name} + + +%changelog +* Thu Aug 26 2021 Jindrich Novy - 0.0.99.3-3 +- Make sosreport work by setting the HOST environment variable +- Related: #1970747 + +* Thu Aug 05 2021 Jindrich Novy - 0.0.99.3-2 +- Fix the build on CentOS Stream +Related: #1970747 + +* Wed Aug 04 2021 Jindrich Novy - 0.0.99.3-1 +- Fix the build on CentOS Stream +Related: #1970747 + +* Wed Jul 28 2021 Jindrich Novy - 0.0.99.2^1.git660b6970e998-1 +- Add support for configuration files +- Related: #1970747 + +* Mon Jul 26 2021 Jindrich Novy - 0.0.99.2-3 +- Instead of offering to log into a registry, just mention 'podman login' +- Related: #1970747 + +* Sat Jul 10 2021 Jindrich Novy - 0.0.99.2-2 +- Expose the host's entire / in the container at /run/host + +* Mon Jul 05 2021 Jindrich Novy - 0.0.99.2-1 +- Actually apply the patch to make 'toolbox' create or fall back to a + container if possible +- Support logging into a registry if necessary + +* Thu Jan 14 2021 Jindrich Novy - 0.0.99-2 +- Update to 0.0.99 + +* 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