diff --git a/.gitignore b/.gitignore index e69de29..f5ddba1 100644 --- a/.gitignore +++ b/.gitignore @@ -0,0 +1,19 @@ +/toolbox-0.0.6.tar.xz +/toolbox-0.0.7.tar.xz +/toolbox-0.0.8.tar.xz +/toolbox-0.0.9.tar.xz +/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/README.md b/README.md new file mode 100644 index 0000000..32d2ef4 --- /dev/null +++ b/README.md @@ -0,0 +1,3 @@ +# toolbox + +The toolbox package \ No newline at end of file diff --git a/sources b/sources new file mode 100644 index 0000000..0650a35 --- /dev/null +++ b/sources @@ -0,0 +1 @@ +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 new file mode 100644 index 0000000..bdb8a16 --- /dev/null +++ b/toolbox.spec @@ -0,0 +1,254 @@ +Name: toolbox +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/containers/%{name} +Source0: https://github.com/containers/%{name}/releases/download/%{version}/%{name}-%{version}.tar.xz + +# 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 >= 1.4.0 + + +%description +Toolbox is offers a familiar RPM based environment for developing and +debugging software that runs fully unprivileged using Podman. + +# The list of requires packages for -support and -experience should be in sync with: +# https://github.com/containers/toolbox/blob/master/images/fedora/f33/extra-packages +%package support +Summary: Required packages for the container image to support %{name} + +# These are really required to make the image work with toolbox +Requires: passwd +Requires: shadow-utils +Requires: krb5-libs +Requires: vte-profile + +%description support +The %{name}-support package contains all the required packages that are needed +to be installed in the container image to make it work with the %{name}. + +The %{name}-support package should be typically installed from the Dockerfile +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-spawn +Requires: fpaste +Requires: git +Requires: gnupg +Requires: gnupg2-smime +Requires: gvfs-client +Requires: hostname +Requires: iputils +Requires: jwhois +Requires: keyutils +Requires: less +Requires: lsof +Requires: man-db +Requires: man-pages +Requires: mlocate +Requires: mtr +Requires: openssh-clients +Requires: pigz +Requires: procps-ng +Requires: rsync +Requires: sudo +Requires: tcpdump +Requires: time +Requires: traceroute +Requires: tree +Requires: unzip +Requires: wget +Requires: which +Requires: words +Requires: xz +Requires: zip + +%description experience +The %{name}-experience package contains all the packages that should be +installed in the container to provide the same default experience as working +on the host. + +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 +%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 + + +%check +%meson_test + + +%install +%meson_install + + +%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* +%{_sysconfdir}/profile.d/%{name}.sh +%{_tmpfilesdir}/%{name}.conf + +%files support + +%files experience + +%files tests +%{_datadir}/%{name} + + +%changelog +* 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