Compare commits

...
Sign in to create a new pull request.

20 commits

Author SHA1 Message Date
Debarshi Ray
2f468d3027 Update to 0.0.96 2020-10-15 12:02:12 +02:00
Debarshi Ray
aeb83b9e81 Update to 0.0.95 2020-09-09 14:51:23 +02:00
Debarshi Ray
e4d9fc5568 Update date in %changelog 2020-08-30 23:19:32 +02:00
Debarshi Ray
0e63cc440d Update to 0.0.94
Based on code written by Ondřej Míchal.
2020-08-30 23:06:52 +02:00
Debarshi Ray
41bc508939 Update to 0.0.93 2020-08-19 15:07:22 +02:00
Debarshi Ray
2c2862e62a Update to 0.0.92 2020-07-21 18:16:30 +02:00
Debarshi Ray
2e757c8dad Fix the 'toolbox --version' output
Even though the actual release is 0.0.91, 'toolbox --version' was
showing 0.0.90.
2020-07-21 18:07:16 +02:00
Debarshi Ray
926409fc5c Fix %changelog 2020-07-21 18:06:02 +02:00
Harry Míchal
38b379b0ab Update to 0.0.91
Toolbox is now written in Go, so this is no longer a noarch package.

Unlike idiomatic Go code-bases, Toolbox uses the Meson build system to
check for additional non-Go dependencies and install various auxilliary
files. This leads to some interesting problems.

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.

Therefore, the entire 'go build ...' invocation is swapped out using a
set of downstream patches (one for PPC64 because it doesn't use
'-buildmode pie', and another for other CPU architectures) to match
the %{gobuild} RPM macro.

The Go toolchain also doesn't like the LDFLAGS environment variable as
exported by Fedora's %{meson} RPM 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.

Finally, Fedora doesn't support Go modules when building Go programs.
This means that Go's semantic import versioning can't be used.

A conscious effort was made to minimize the use of exotic Go-specific
RPM macros to retain the legibility of the spec file. A proliferation
of such RPM macros is a hindrance for those who are not experts in the
ins and outs of packaging Go code in Fedora.

Some changes by Debarshi Ray.

https://src.fedoraproject.org/rpms/toolbox/pull-request/2
2020-07-21 17:57:22 +02:00
Debarshi Ray
50daf89602 Use %{name} instead of hard-coding 'toolbox'
There's no need to issue a build just for this.
2020-07-21 17:52:51 +02:00
Harry Míchal
ee56ddd49e Use %{name} instead of hard-coding 'toolbox'
There's no need to issue a build just for this.
2020-07-21 17:52:28 +02:00
Debarshi Ray
144ed6cf32 Remove ExclusiveArch to match Podman 2020-07-21 17:44:52 +02:00
Debarshi Ray
d33acf51b1 Toolbox no longer uses Buildah
No need to issue a build just for this.

Fallout from 86f63f7964
2020-07-21 17:39:30 +02:00
Debarshi Ray
c5ec4c3296 Update the experience sub-package
- Sync it with the current Dockerfile
- Make it Require the "support" sub-package
2020-06-10 17:48:19 +02:00
Debarshi Ray
b287ef8bae Update to 0.0.18 2020-01-14 16:51:02 +01:00
Debarshi Ray
c34a2d8ce6 Update to 0.0.17 2019-11-20 18:24:41 +01:00
Debarshi Ray
b447c49924 Update to 0.0.16 2019-10-29 16:20:05 +01:00
Debarshi Ray
798bc27965 Update to 0.0.15 2019-09-30 18:40:55 +02:00
Debarshi Ray
3ab5e20521 Update to 0.0.14
Fix a typo in the minimum Podman version requirement. Podman 1.4.0 is
meant to be fine.
2019-09-18 19:13:20 +02:00
Debarshi Ray
6a5acbef4f Update to 0.0.13 2019-09-05 15:31:43 +02:00
6 changed files with 276 additions and 14 deletions

12
.gitignore vendored
View file

@ -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

View file

@ -1 +1 @@
SHA512 (toolbox-0.0.12.tar.xz) = a1ee0851b7ea9dadb7105f9b7f4ec151c58d9587e2d9b344ca0d7a8c47ccbd8a1e021b2788cc2d30465cecf96fc867d735b6505451bb3ff4a5ae512f8986c87f
SHA512 (toolbox-0.0.96.tar.xz) = 843d6c8e0c4784bc89bc5ca6042fff44b8be1f71a4d424ffd82d0900af788fcdd985476cb48680f9817dc8f5f8586a34ff3d97e00ade5afe3107f3b2ca53b04d

View file

@ -0,0 +1,73 @@
From deac27651c22ad6e3a4045706c4c35292df736e8 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Harry=20M=C3=ADchal?= <harrymichal@seznam.cz>
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

View file

@ -0,0 +1,45 @@
From d70e3b4bf7825e67f57373fcd6e8da5ed1d5b461 Mon Sep 17 00:00:00 2001
From: Debarshi Ray <rishi@fedoraproject.org>
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

View file

@ -0,0 +1,44 @@
From b1d265c4529eb0b23d10633326c075d54e07772f Mon Sep 17 00:00:00 2001
From: Debarshi Ray <rishi@fedoraproject.org>
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

View file

@ -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 <rishi@fedoraproject.org> - 0.0.96-1
- Update to 0.0.96
* Wed Sep 09 2020 Debarshi Ray <rishi@fedoraproject.org> - 0.0.95-1
- Update to 0.0.95
* Sun Aug 30 2020 Debarshi Ray <rishi@fedoraproject.org> - 0.0.94-1
- Update to 0.0.94
* Wed Aug 19 2020 Debarshi Ray <rishi@fedoraproject.org> - 0.0.93-1
- Update to 0.0.93
* Tue Jul 21 2020 Debarshi Ray <rishi@fedoraproject.org> - 0.0.92-1
- Update to 0.0.92
* Tue Jul 21 2020 Debarshi Ray <rishi@fedoraproject.org> - 0.0.91-2
- Fix the 'toolbox --version' output
* Tue Jul 21 2020 Harry Míchal <harrymichal@seznam.cz> - 0.0.91-1
- Update to 0.0.91
* Tue Jul 21 2020 Debarshi Ray <rishi@fedoraproject.org> - 0.0.18-3
- Remove ExclusiveArch to match Podman
* Wed Jun 10 2020 Debarshi Ray <rishi@fedoraproject.org> - 0.0.18-2
- Sync the "experience" packages with the current Dockerfile
- Make "experience" Require "support"
* Tue Jan 14 2020 Debarshi Ray <rishi@fedoraproject.org> - 0.0.18-1
- Update to 0.0.18
* Wed Nov 20 2019 Debarshi Ray <rishi@fedoraproject.org> - 0.0.17-1
- Update to 0.0.17
* Tue Oct 29 2019 Debarshi Ray <rishi@fedoraproject.org> - 0.0.16-1
- Update to 0.0.16
* Mon Sep 30 2019 Debarshi Ray <rishi@fedoraproject.org> - 0.0.15-1
- Update to 0.0.15
* Wed Sep 18 2019 Debarshi Ray <rishi@fedoraproject.org> - 0.0.14-1
- Update to 0.0.14
* Thu Sep 05 2019 Debarshi Ray <rishi@fedoraproject.org> - 0.0.13-1
- Update to 0.0.13
* Sat Jul 27 2019 Fedora Release Engineering <releng@fedoraproject.org> - 0.0.12-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild