diff --git a/.gitignore b/.gitignore index c0f497f..f5ddba1 100644 --- a/.gitignore +++ b/.gitignore @@ -5,3 +5,15 @@ /toolbox-0.0.10.tar.xz /toolbox-0.0.11.tar.xz /toolbox-0.0.12.tar.xz +/toolbox-0.0.13.tar.xz +/toolbox-0.0.14.tar.xz +/toolbox-0.0.15.tar.xz +/toolbox-0.0.16.tar.xz +/toolbox-0.0.17.tar.xz +/toolbox-0.0.18.tar.xz +/toolbox-0.0.91.tar.xz +/toolbox-0.0.92.tar.xz +/toolbox-0.0.93.tar.xz +/toolbox-0.0.94.tar.xz +/toolbox-0.0.95.tar.xz +/toolbox-0.0.96.tar.xz diff --git a/sources b/sources index 45bd05f..0650a35 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (toolbox-0.0.12.tar.xz) = a1ee0851b7ea9dadb7105f9b7f4ec151c58d9587e2d9b344ca0d7a8c47ccbd8a1e021b2788cc2d30465cecf96fc867d735b6505451bb3ff4a5ae512f8986c87f +SHA512 (toolbox-0.0.96.tar.xz) = 843d6c8e0c4784bc89bc5ca6042fff44b8be1f71a4d424ffd82d0900af788fcdd985476cb48680f9817dc8f5f8586a34ff3d97e00ade5afe3107f3b2ca53b04d diff --git a/toolbox-Don-t-use-Go-s-semantic-import-versioning.patch b/toolbox-Don-t-use-Go-s-semantic-import-versioning.patch new file mode 100644 index 0000000..537dfbb --- /dev/null +++ b/toolbox-Don-t-use-Go-s-semantic-import-versioning.patch @@ -0,0 +1,73 @@ +From deac27651c22ad6e3a4045706c4c35292df736e8 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Harry=20M=C3=ADchal?= +Date: Sat, 27 Jun 2020 16:17:56 +0200 +Subject: [PATCH] Don't use Go's semantic import versioning + +Fedora doesn't support Go modules when building Go programs. This +means that source code using semantic import versioning can't be built. + +https://github.com/containers/toolbox/pull/484 +--- + src/cmd/create.go | 2 +- + src/go.mod | 2 +- + src/go.sum | 4 ++-- + src/pkg/utils/utils.go | 2 +- + 4 files changed, 5 insertions(+), 5 deletions(-) + +diff --git a/src/cmd/create.go b/src/cmd/create.go +index 0b78572f4e5c..0b8c30f40297 100644 +--- a/src/cmd/create.go ++++ b/src/cmd/create.go +@@ -28,7 +28,7 @@ import ( + "github.com/containers/toolbox/pkg/podman" + "github.com/containers/toolbox/pkg/shell" + "github.com/containers/toolbox/pkg/utils" +- "github.com/godbus/dbus/v5" ++ "github.com/godbus/dbus" + "github.com/sirupsen/logrus" + "github.com/spf13/cobra" + "golang.org/x/crypto/ssh/terminal" +diff --git a/src/go.mod b/src/go.mod +index 2b1ac3018c8d..e8c4452c341d 100644 +--- a/src/go.mod ++++ b/src/go.mod +@@ -7,7 +7,7 @@ require ( + github.com/acobaugh/osrelease v0.0.0-20181218015638-a93a0a55a249 + github.com/briandowns/spinner v1.10.0 + github.com/docker/go-units v0.4.0 +- github.com/godbus/dbus/v5 v5.0.3 ++ github.com/godbus/dbus v4.1.0+incompatible + github.com/sirupsen/logrus v1.4.2 + github.com/spf13/cobra v0.0.5 + golang.org/x/crypto v0.0.0-20181203042331-505ab145d0a9 +diff --git a/src/go.sum b/src/go.sum +index 4d6a0034d990..3b33ef9faec8 100644 +--- a/src/go.sum ++++ b/src/go.sum +@@ -17,8 +17,8 @@ github.com/docker/go-units v0.4.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDD + github.com/fatih/color v1.7.0 h1:DkWD4oS2D8LGGgTQ6IvwJJXSL5Vp2ffcQg58nFV38Ys= + github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= + github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= +-github.com/godbus/dbus/v5 v5.0.3 h1:ZqHaoEF7TBzh4jzPmqVhE/5A1z9of6orkAe5uHoAeME= +-github.com/godbus/dbus/v5 v5.0.3/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= ++github.com/godbus/dbus v4.1.0+incompatible h1:WqqLRTsQic3apZUK9qC5sGNfXthmPXzUZ7nQPrNITa4= ++github.com/godbus/dbus v4.1.0+incompatible/go.mod h1:/YcGZj5zSblfDWMMoOzV4fas9FZnQYTkDnsGvmh2Grw= + github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= + github.com/inconshreveable/mousetrap v1.0.0 h1:Z8tu5sraLXCXIcARxBp/8cbvlwVa7Z1NHg9XEKhtSvM= + github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= +diff --git a/src/pkg/utils/utils.go b/src/pkg/utils/utils.go +index 634d981e8967..db60739271cf 100644 +--- a/src/pkg/utils/utils.go ++++ b/src/pkg/utils/utils.go +@@ -33,7 +33,7 @@ import ( + "github.com/acobaugh/osrelease" + "github.com/containers/toolbox/pkg/shell" + "github.com/docker/go-units" +- "github.com/godbus/dbus/v5" ++ "github.com/godbus/dbus" + "github.com/sirupsen/logrus" + "golang.org/x/sys/unix" + ) +-- +2.25.4 + 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 new file mode 100644 index 0000000..7e03497 --- /dev/null +++ b/toolbox-Make-the-build-flags-match-Fedora-s-gobuild-for-PPC64.patch @@ -0,0 +1,45 @@ +From d70e3b4bf7825e67f57373fcd6e8da5ed1d5b461 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 %{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 Fedora 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 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 "%{gobuild}"' to expand the %{gobuild} macro. + +For some reason, when built on Koji, the final binary gets created as +../src/src instead of ../src/toolbox, but it doesn't happen when +building locally with 'rpmbuild -ba ...'. Hence it's necessary to +explicitly specify the name of the output binary. +--- + 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 f061a1c5ccf6..8baaff53b329 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" ++unset LDFLAGS ++go build -compiler gc -tags="rpm_crashtraceback ${BUILDTAGS:-}" -ldflags "${LDFLAGS:-} -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.25.4 + diff --git a/toolbox-Make-the-build-flags-match-Fedora-s-gobuild.patch b/toolbox-Make-the-build-flags-match-Fedora-s-gobuild.patch new file mode 100644 index 0000000..4a8661c --- /dev/null +++ b/toolbox-Make-the-build-flags-match-Fedora-s-gobuild.patch @@ -0,0 +1,44 @@ +From b1d265c4529eb0b23d10633326c075d54e07772f 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 %{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 Fedora 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 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 "%{gobuild}"' to expand the %{gobuild} macro. + +For some reason, when built on Koji, the final binary gets created as +../src/src instead of ../src/toolbox, but it doesn't happen when +building locally with 'rpmbuild -ba ...'. Hence it's necessary to +explicitly specify the name of the output binary. +--- + 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 f061a1c5ccf6..013a35e52a1a 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" ++unset LDFLAGS ++go build -buildmode pie -compiler gc -tags="rpm_crashtraceback ${BUILDTAGS:-}" -ldflags "${LDFLAGS:-} -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.25.4 + diff --git a/toolbox.spec b/toolbox.spec index 5f5c57e..8cc9d66 100644 --- a/toolbox.spec +++ b/toolbox.spec @@ -1,24 +1,39 @@ Name: toolbox -Version: 0.0.12 -Release: 2%{?dist} +Version: 0.0.96 + +%global goipath github.com/containers/%{name} +%gometa + +Release: 1%{?dist} Summary: Unprivileged development environment License: ASL 2.0 -URL: https://github.com/debarshiray/toolbox -Source0: https://github.com/debarshiray/%{name}/releases/download/%{version}/%{name}-%{version}.tar.xz +URL: https://github.com/containers/%{name} +Source0: https://github.com/containers/%{name}/releases/download/%{version}/%{name}-%{version}.tar.xz -BuildArch: noarch -# buildah and podman only work on the following architectures: -ExclusiveArch: aarch64 %{arm} ppc64le s390x x86_64 +# Fedora specific +Patch100: toolbox-Don-t-use-Go-s-semantic-import-versioning.patch +Patch101: toolbox-Make-the-build-flags-match-Fedora-s-gobuild.patch +Patch102: toolbox-Make-the-build-flags-match-Fedora-s-gobuild-for-PPC64.patch BuildRequires: ShellCheck +BuildRequires: golang >= 1.13 BuildRequires: golang-github-cpuguy83-md2man +BuildRequires: golang(github.com/HarryMichal/go-version) +BuildRequires: golang(github.com/acobaugh/osrelease) +BuildRequires: golang(github.com/briandowns/spinner) >= 1.10.0 +BuildRequires: golang(github.com/docker/go-units) >= 0.4.0 +BuildRequires: golang(github.com/godbus/dbus) >= 5.0.3 +BuildRequires: golang(github.com/mattn/go-isatty) >= 0.0.12 +BuildRequires: golang(github.com/sirupsen/logrus) >= 1.4.2 +BuildRequires: golang(github.com/spf13/cobra) >= 0.0.5 +BuildRequires: golang(golang.org/x/sys/unix) BuildRequires: meson BuildRequires: pkgconfig(bash-completion) BuildRequires: systemd Requires: flatpak-session-helper -Requires: podman +Requires: podman >= 1.4.0 # To be removed in Fedora 33 Provides: fedora-toolbox = %{version}-%{release} @@ -51,16 +66,18 @@ if the image isn't based on the fedora-toolbox image. %package experience Summary: Set of packages to enhance the %{name} experience +Requires: %{name}-support = %{version}-%{release} Requires: bash-completion Requires: bzip2 Requires: diffutils Requires: dnf-plugins-core Requires: findutils -Requires: flatpak-xdg-utils +Requires: flatpak-spawn Requires: fpaste Requires: git Requires: gnupg Requires: gnupg2-smime +Requires: gvfs-client Requires: hostname Requires: iputils Requires: jwhois @@ -72,7 +89,6 @@ Requires: man-pages Requires: mlocate Requires: mtr Requires: openssh-clients -Requires: PackageKit-command-not-found Requires: pigz Requires: procps-ng Requires: rsync @@ -97,11 +113,34 @@ The %{name}-experience package should be typically installed from the Dockerfile if the image isn't based on the fedora-toolbox image. +%package tests +Summary: Tests for %{name} + +Requires: %{name}%{?_isa} = %{version}-%{release} +Requires: bats + +%description tests +The %{name}-tests package contains system tests for %{name}. + + %prep -%autosetup +%setup -q +%patch100 -p1 + +%ifnarch ppc64 +%patch101 -p1 +%else +%patch102 -p1 +%endif + +%gomkdir %build +export GO111MODULE=off +export GOPATH=%{gobuilddir}:%{gopath} +ln -s src/cmd cmd +ln -s src/pkg pkg %meson --buildtype=plain -Dprofile_dir=%{_sysconfdir}/profile.d %meson_build @@ -115,21 +154,70 @@ Dockerfile if the image isn't based on the fedora-toolbox image. %files -%doc NEWS README.md +%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* -%{_sysconfdir}/profile.d/toolbox.sh +%{_sysconfdir}/profile.d/%{name}.sh %{_tmpfilesdir}/%{name}.conf %files support %files experience +%files tests +%{_datadir}/%{name} + %changelog +* Thu Oct 15 2020 Debarshi Ray - 0.0.96-1 +- Update to 0.0.96 + +* Wed Sep 09 2020 Debarshi Ray - 0.0.95-1 +- Update to 0.0.95 + +* Sun Aug 30 2020 Debarshi Ray - 0.0.94-1 +- Update to 0.0.94 + +* Wed Aug 19 2020 Debarshi Ray - 0.0.93-1 +- Update to 0.0.93 + +* Tue Jul 21 2020 Debarshi Ray - 0.0.92-1 +- Update to 0.0.92 + +* Tue Jul 21 2020 Debarshi Ray - 0.0.91-2 +- Fix the 'toolbox --version' output + +* Tue Jul 21 2020 Harry Míchal - 0.0.91-1 +- Update to 0.0.91 + +* Tue Jul 21 2020 Debarshi Ray - 0.0.18-3 +- Remove ExclusiveArch to match Podman + +* Wed Jun 10 2020 Debarshi Ray - 0.0.18-2 +- Sync the "experience" packages with the current Dockerfile +- Make "experience" Require "support" + +* 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