已开启
更新到apptainer-1.3.3版本 #9
AtomGit-Bot创建于 2024年8月15日
更新到apptainer-1.3.3版本 #9
已开启
AtomGit-Bot创建于 2024年8月15日
从refs/pull/9/head合入到master
共 13 个文件变更+1814-2186
D70.patch+0-1784
D77.patch+0-181
@@ -1,181 +0,0 @@
1-From b816b986f063f2f7ba5f517669a1d36d1c40ce16 Mon Sep 17 00:00:00 2001
2-From: Dave Dykstra <2129743+DrDaveD@users.noreply.github.com>
3-Date: Thu, 6 Oct 2022 18:21:57 -0500
4-Subject: [PATCH] add low-level uid=N and gid=N options, better help
5- 
6----
7- fs.h | 2 ++
8- fuseprivate.c | 12 ++++++++++--
9- fuseprivate.h | 4 +++-
10- hl.c | 4 ++--
11- ll_main.c | 12 +++++++++---
12- stat.c | 24 ++++++++++++++++--------
13- 6 files changed, 42 insertions(+), 16 deletions(-)
14- 
15-diff --git a/fs.h b/fs.h
16-index d300a3bb..dc00d54a 100644
17---- a/fs.h
18-+++ b/fs.h
19-@@ -36,6 +36,8 @@
20- struct sqfs {
21- sqfs_fd_t fd;
22- size_t offset;
23-+ int uid;
24-+ int gid;
25- struct squashfs_super_block sb;
26- sqfs_table id_table;
27- sqfs_table frag_table;
28-diff --git a/fuseprivate.c b/fuseprivate.c
29-index a8e71191..b9a10182 100644
30---- a/fuseprivate.c
31-+++ b/fuseprivate.c
32-@@ -59,12 +59,20 @@ int sqfs_listxattr(sqfs *fs, sqfs_inode *inode, char *buf, size_t *size) {
33- return 0;
34- }
35-
36--void sqfs_usage(char *progname, bool fuse_usage) {
37-+void sqfs_usage(char *progname, bool fuse_usage, bool ll_usage) {
38- fprintf(stderr, "%s (c) 2012 Dave Vasilevsky\n\n", PACKAGE_STRING);
39- fprintf(stderr, "Usage: %s [options] ARCHIVE MOUNTPOINT\n",
40- progname ? progname : PACKAGE_NAME);
41-+ fprintf(stderr, "\n%s options:\n", progname);
42-+ fprintf(stderr, " -o offset offset into ARCHIVE to mount\n");
43-+ fprintf(stderr, " -o timeout idle seconds for automatic unmount\n");
44-+ if (ll_usage) {
45-+ fprintf(stderr, " -o uid=N set file owner\n");
46-+ fprintf(stderr, " -o gid=N set file group\n");
47-+ }
48- if (fuse_usage) {
49- #if FUSE_USE_VERSION >= 30
50-+ fprintf(stderr, "\nFUSE options:\n");
51- fuse_cmdline_help();
52- #else
53- struct fuse_args args = FUSE_ARGS_INIT(0, NULL);
54-@@ -92,7 +100,7 @@ int sqfs_opt_proc(void *data, const char *arg, int key,
55- }
56- } else if (key == FUSE_OPT_KEY_OPT) {
57- if (strncmp(arg, "-h", 2) == 0 || strncmp(arg, "--h", 3) == 0)
58-- sqfs_usage(opts->progname, true);
59-+ return -1;
60- }
61- return 1; /* Keep */
62- }
63-diff --git a/fuseprivate.h b/fuseprivate.h
64-index c978076c..29974b86 100644
65---- a/fuseprivate.h
66-+++ b/fuseprivate.h
67-@@ -40,7 +40,7 @@
68- int sqfs_listxattr(sqfs *fs, sqfs_inode *inode, char *buf, size_t *size);
69-
70- /* Print a usage string */
71--void sqfs_usage(char *progname, bool fuse_usage);
72-+void sqfs_usage(char *progname, bool fuse_usage, bool ll_usage);
73-
74- /* Parse command-line arguments */
75- typedef struct {
76-@@ -49,6 +49,8 @@ typedef struct {
77- int mountpoint;
78- size_t offset;
79- unsigned int idle_timeout_secs;
80-+ int uid;
81-+ int gid;
82- } sqfs_opts;
83- int sqfs_opt_proc(void *data, const char *arg, int key,
84- struct fuse_args *outargs);
85-diff --git a/hl.c b/hl.c
86-index 49673913..aa71e4e0 100644
87---- a/hl.c
88-+++ b/hl.c
89-@@ -325,9 +325,9 @@ int main(int argc, char *argv[]) {
90- opts.mountpoint = 0;
91- opts.offset = 0;
92- if (fuse_opt_parse(&args, &opts, fuse_opts, sqfs_opt_proc) == -1)
93-- sqfs_usage(argv[0], true);
94-+ sqfs_usage(argv[0], true, false);
95- if (!opts.image)
96-- sqfs_usage(argv[0], true);
97-+ sqfs_usage(argv[0], true, false);
98-
99- hl = sqfs_hl_open(opts.image, opts.offset);
100- if (!hl)
101-diff --git a/ll_main.c b/ll_main.c
102-index aca76935..5bc57abd 100644
103---- a/ll_main.c
104-+++ b/ll_main.c
105-@@ -55,6 +55,8 @@ int main(int argc, char *argv[]) {
106- struct fuse_opt fuse_opts[] = {
107- {"offset=%zu", offsetof(sqfs_opts, offset), 0},
108- {"timeout=%u", offsetof(sqfs_opts, idle_timeout_secs), 0},
109-+ {"uid=%d", offsetof(sqfs_opts, uid), 0},
110-+ {"gid=%d", offsetof(sqfs_opts, gid), 0},
111- FUSE_OPT_END
112- };
113-
114-@@ -85,8 +87,10 @@ int main(int argc, char *argv[]) {
115- opts.mountpoint = 0;
116- opts.offset = 0;
117- opts.idle_timeout_secs = 0;
118-+ opts.uid = 0;
119-+ opts.gid = 0;
120- if (fuse_opt_parse(&args, &opts, fuse_opts, sqfs_opt_proc) == -1)
121-- sqfs_usage(argv[0], true);
122-+ sqfs_usage(argv[0], true, true);
123-
124- #if FUSE_USE_VERSION >= 30
125- if (fuse_parse_cmdline(&args, &fuse_cmdline_opts) != 0)
126-@@ -96,9 +100,9 @@ int main(int argc, char *argv[]) {
127- &fuse_cmdline_opts.mt,
128- &fuse_cmdline_opts.foreground) == -1)
129- #endif
130-- sqfs_usage(argv[0], true);
131-+ sqfs_usage(argv[0], true, true);
132- if (fuse_cmdline_opts.mountpoint == NULL)
133-- sqfs_usage(argv[0], true);
134-+ sqfs_usage(argv[0], true, true);
135-
136- /* fuse_daemonize() will unconditionally clobber fds 0-2.
137- *
138-@@ -128,6 +132,8 @@ int main(int argc, char *argv[]) {
139-
140- /* STARTUP FUSE */
141- if (!err) {
142-+ ll->fs.uid = opts.uid;
143-+ ll->fs.gid = opts.gid;
144- sqfs_ll_chan ch;
145- err = -1;
146- if (sqfs_ll_mount(
147-diff --git a/stat.c b/stat.c
148-index 29923f37..b425c0c0 100644
149---- a/stat.c
150-+++ b/stat.c
151-@@ -49,14 +49,22 @@ sqfs_err sqfs_stat(sqfs *fs, sqfs_inode *inode, struct stat *st) {
152-
153- st->st_blksize = fs->sb.block_size; /* seriously? */
154-
155-- err = sqfs_id_get(fs, inode->base.uid, &id);
156-- if (err)
157-- return err;
158-- st->st_uid = id;
159-- err = sqfs_id_get(fs, inode->base.guid, &id);
160-- st->st_gid = id;
161-- if (err)
162-- return err;
163-+ if (fs->uid > 0) {
164-+ st->st_uid = fs->uid;
165-+ } else {
166-+ err = sqfs_id_get(fs, inode->base.uid, &id);
167-+ if (err)
168-+ return err;
169-+ st->st_uid = id;
170-+ }
171-+ if (fs->gid > 0) {
172-+ st->st_gid = fs->gid;
173-+ } else {
174-+ err = sqfs_id_get(fs, inode->base.guid, &id);
175-+ st->st_gid = id;
176-+ if (err)
177-+ return err;
178-+ }
179-
180- return SQFS_OK;
181- }
D81.patch+0-29
@@ -1,29 +0,0 @@
1-From a804a17937f35b009787760034caed43dd4dcb0a Mon Sep 17 00:00:00 2001
2-From: Florian Weimer <fweimer@redhat.com>
3-Date: Wed, 7 Dec 2022 15:20:48 +0100
4-Subject: [PATCH] Fix fuse_mount function argument probing
5- 
6-The test did not check the number of arguments with certain
7-fuse headers because they declare fuse_mount in <fuse.h>,
8-not <fuse_lowlevel.h>. If the compile supports implicit
9-function declarations, the test always succeeds (regardless
10-of parameter count). If it does not, it always fails.
11----
12- m4/squashfuse_fuse.m4 | 4 +++-
13- 1 file changed, 3 insertions(+), 1 deletion(-)
14- 
15-diff --git a/m4/squashfuse_fuse.m4 b/m4/squashfuse_fuse.m4
16-index e429168b..88c37a46 100644
17---- a/m4/squashfuse_fuse.m4
18-+++ b/m4/squashfuse_fuse.m4
19-@@ -260,7 +260,9 @@ AC_DEFUN([SQ_FUSE_API_VERSION],[
20- AC_CACHE_CHECK([for two-argument fuse_unmount],
21- [sq_cv_decl_fuse_unmount_two_arg],[
22- AC_LINK_IFELSE(
23-- [AC_LANG_PROGRAM([#include <fuse_lowlevel.h>],
24-+ [AC_LANG_PROGRAM([
25-+ #include <fuse.h>
26-+ #include <fuse_lowlevel.h>],
27- [fuse_unmount(0,0)])],
28- [sq_cv_decl_fuse_unmount_two_arg=yes],
29- [sq_cv_decl_fuse_unmount_two_arg=no])
Rapptainer-1.1.6.tar.gz→apptainer-1.3.3.tar.gz+0-0
Binary files do not support preview
@@ -24,25 +24,27 @@
24# perform publicly and display publicly, and to permit other to do so.24# perform publicly and display publicly, and to permit other to do so.
25#25#
26#26#
27- 27+ 
28# Disable debugsource packages; otherwise it ends up with an empty %%files28# Disable debugsource packages; otherwise it ends up with an empty %%files
29# file in debugsourcefiles.list on Fedora29# file in debugsourcefiles.list on Fedora
30%undefine _debugsource_packages30%undefine _debugsource_packages
31- 31+ 
32# This can be slightly different than %%{version}.32# This can be slightly different than %%{version}.
33# For example, it has dash instead of tilde for release candidates.33# For example, it has dash instead of tilde for release candidates.
34-%global package_version 1.1.634+%global package_version 1.3.3
35- 35+ 
36-# Uncomment this to include a multithreaded version of squashfuse_ll36+%global gocryptfs_version 2.4.0
37-%global squashfuse_version 0.1.10537+%global squashfuse_version 0.5.1
38- 38+%global e2fsprogs_version 1.47.0
39+%global fuse_overlayfs_version 1.13
40+ 
39# The last singularity version number in EPEL/Fedora41# The last singularity version number in EPEL/Fedora
40%global last_singularity_version 3.8.7-342%global last_singularity_version 3.8.7-3
41- 43+ 
42Summary: Application and environment virtualization formerly known as Singularity44Summary: Application and environment virtualization formerly known as Singularity
43Name: apptainer45Name: apptainer
44-Version: 1.1.646+Version: 1.3.3
45-Release: 147+Release: 1%{?dist}
46# See LICENSE.md for first party code (BSD-3-Clause and LBNL BSD)48# See LICENSE.md for first party code (BSD-3-Clause and LBNL BSD)
47# See LICENSE_THIRD_PARTY.md for incorporated code (ASL 2.0)49# See LICENSE_THIRD_PARTY.md for incorporated code (ASL 2.0)
48# See LICENSE_DEPENDENCIES.md for dependencies50# See LICENSE_DEPENDENCIES.md for dependencies
@@ -50,14 +52,29 @@ Release: 1
50License: BSD and LBNL BSD and ASL 2.052License: BSD and LBNL BSD and ASL 2.0
51URL: https://apptainer.org53URL: https://apptainer.org
52Source: https://github.com/%{name}/%{name}/releases/download/v%{package_version}/%{name}-%{package_version}.tar.gz54Source: https://github.com/%{name}/%{name}/releases/download/v%{package_version}/%{name}-%{package_version}.tar.gz
53- 55+ 
54-%if "%{?squashfuse_version}" != ""56+%if "%{?gocryptfs_version}" != ""
55-Source10: https://github.com/vasi/squashfuse/archive/%{squashfuse_version}/squashfuse-%{squashfuse_version}.tar.gz57+# In order to build offline, this source tarball needs to have the "vendor"
56-Patch10: 70.patch58+# directory added, which can be done by unpacking it, doing the command
57-Patch11: 77.patch59+# go mod vendor
58-Patch12: 81.patch60+# and then recreating the tarball. Use scripts/download-dependencies.
61+Source10: https://github.com/rfjakob/gocryptfs/archive/v%{gocryptfs_version}/gocryptfs-%{gocryptfs_version}.tar.gz
59%endif62%endif
60- 63+%if "%{?squashfuse_version}" != ""
64+Source11: https://github.com/vasi/squashfuse/archive/%{squashfuse_version}/squashfuse-%{squashfuse_version}.tar.gz
65+%endif
66+%if "%{?e2fsprogs_version}" != ""
67+# URL: https://github.com/tytso/e2fsprogs/archive/refs/tags/v%%{e2fsprogs_version}.tar.gz
68+Source12: e2fsprogs-%{e2fsprogs_version}.tar.gz
69+# URL: https://github.com/tytso/e2fsprogs/commit/5598a96.patch
70+Patch121: e2fsprogs-1.patch
71+# URL: https://github.com/tytso/e2fsprogs/commit/1ac0061.patch
72+Patch122: e2fsprogs-2.patch
73+# URL: https://github.com/tytso/e2fsprogs/commit/448a3f8.patch
74+Patch123: e2fsprogs-3.patch
75+%endif
76+Source13: https://github.com/containers/fuse-overlayfs/archive/v%{fuse_overlayfs_version}/fuse-overlayfs-%{fuse_overlayfs_version}.tar.gz
77+ 
61# This Conflicts is in case someone tries to install the main apptainer78# This Conflicts is in case someone tries to install the main apptainer
62# package when an old singularity package is installed. An Obsoletes is on79# package when an old singularity package is installed. An Obsoletes is on
63# the apptainer-suid subpackage below. If an Obsoletes were here too, it80# the apptainer-suid subpackage below. If an Obsoletes were here too, it
@@ -67,168 +84,193 @@ Patch12: 81.patch
67# Conflicts, both yum and dnf consistently install both apptainer and84# Conflicts, both yum and dnf consistently install both apptainer and
68# apptainer-suid when apptainer is requested while singularity is installed.85# apptainer-suid when apptainer is requested while singularity is installed.
69Conflicts: singularity <= %{last_singularity_version}86Conflicts: singularity <= %{last_singularity_version}
70- 87+ 
71# In the singularity 2.x series there was a singularity-runtime package88# In the singularity 2.x series there was a singularity-runtime package
72# that could have been installed independently, but starting in 3.x89# that could have been installed independently, but starting in 3.x
73# there was only one package90# there was only one package
74Obsoletes: singularity-runtime < 3.091Obsoletes: singularity-runtime < 3.0
75- 92+ 
76# Multiple packages contain /usr/bin/singularity and /usr/bin/run-singularity,93# Multiple packages contain /usr/bin/singularity and /usr/bin/run-singularity,
77# which are necessary to run SIF images. Use a pivot provides/conflicts to94# which are necessary to run SIF images. Use a pivot provides/conflicts to
78# avoid them all needing to conflict with each other.95# avoid them all needing to conflict with each other.
79Provides: sif-runtime96Provides: sif-runtime
80Conflicts: sif-runtime97Conflicts: sif-runtime
81- 98+ 
99+Provides: bundled(gocryptfs) = %{gocryptfs_version}
100+Provides: bundled(squashfuse) = %{squashfuse_version}
101+Provides: bundled(e2fsprogs) = %{e2fsprogs_version}
102+Provides: bundled(fuse2fs) = %{e2fsprogs_version}
103+Provides: bundled(fuse-overlayfs) = %{fuse_overlayfs_version}
82Provides: bundled(golang(github.com/AdamKorcz/go_fuzz_headers)) = v0.0.0_20210319161527_f761c2329661104Provides: bundled(golang(github.com/AdamKorcz/go_fuzz_headers)) = v0.0.0_20210319161527_f761c2329661
83-Provides: bundled(golang(github.com/Azure/go_ansiterm)) = v0.0.0_20210617225240_d185dfc1b5a1105+Provides: bundled(golang(github.com/Azure/go_ansiterm)) = v0.0.0_20230124172434_306776ec8161
84-Provides: bundled(golang(github.com/BurntSushi/toml)) = v1.2.0106+Provides: bundled(golang(github.com/BurntSushi/toml)) = v1.3.2
85-Provides: bundled(golang(github.com/Microsoft/go_winio)) = v0.5.2107+Provides: bundled(golang(github.com/Microsoft/go_winio)) = v0.6.1
86-Provides: bundled(golang(github.com/Microsoft/hcsshim)) = v0.9.4
87Provides: bundled(golang(github.com/Netflix/go_expect)) = v0.0.0_20220104043353_73e0943537d2108Provides: bundled(golang(github.com/Netflix/go_expect)) = v0.0.0_20220104043353_73e0943537d2
88-Provides: bundled(golang(github.com/ProtonMail/go_crypto)) = v0.0.0_20220824120805_4b6e5c587895109+Provides: bundled(golang(github.com/ProtonMail/go_crypto)) = v1.0.0
89Provides: bundled(golang(github.com/VividCortex/ewma)) = v1.2.0110Provides: bundled(golang(github.com/VividCortex/ewma)) = v1.2.0
90Provides: bundled(golang(github.com/acarl005/stripansi)) = v0.0.0_20180116102854_5a71ef0e047d111Provides: bundled(golang(github.com/acarl005/stripansi)) = v0.0.0_20180116102854_5a71ef0e047d
91Provides: bundled(golang(github.com/adigunhammedolalekan/registry_auth)) = v0.0.0_20200730122110_8cde180a3a60112Provides: bundled(golang(github.com/adigunhammedolalekan/registry_auth)) = v0.0.0_20200730122110_8cde180a3a60
92-Provides: bundled(golang(github.com/alexflint/go_filemutex)) = v1.1.0113+Provides: bundled(golang(github.com/alexflint/go_filemutex)) = v1.3.0
93Provides: bundled(golang(github.com/apex/log)) = v1.9.0114Provides: bundled(golang(github.com/apex/log)) = v1.9.0
94Provides: bundled(golang(github.com/apptainer/container_key_client)) = v0.8.0115Provides: bundled(golang(github.com/apptainer/container_key_client)) = v0.8.0
95-Provides: bundled(golang(github.com/apptainer/container_library_client)) = v1.3.4116+Provides: bundled(golang(github.com/apptainer/container_library_client)) = v1.4.6
96-Provides: bundled(golang(github.com/apptainer/sif/v2)) = v2.8.1117+Provides: bundled(golang(github.com/apptainer/sif/v2)) = v2.15.2
118+Provides: bundled(golang(github.com/asaskevich/govalidator)) = v0.0.0_20230301143203_a9d515a09cc2
119+Provides: bundled(golang(github.com/astromechza/etcpwdparse)) = v0.0.0_20170319193008_f0e5f0779716
97Provides: bundled(golang(github.com/beorn7/perks)) = v1.0.1120Provides: bundled(golang(github.com/beorn7/perks)) = v1.0.1
98-Provides: bundled(golang(github.com/blang/semver)) = v3.5.1+incompatible
99Provides: bundled(golang(github.com/blang/semver/v4)) = v4.0.0121Provides: bundled(golang(github.com/blang/semver/v4)) = v4.0.0
122+Provides: bundled(golang(github.com/buger/goterm)) = v1.0.4
100Provides: bundled(golang(github.com/buger/jsonparser)) = v1.1.1123Provides: bundled(golang(github.com/buger/jsonparser)) = v1.1.1
101-Provides: bundled(golang(github.com/bugsnag/bugsnag_go)) = v1.5.1124+Provides: bundled(golang(github.com/cenkalti/backoff/v4)) = v4.2.1
102-Provides: bundled(golang(github.com/bugsnag/panicwrap)) = v1.2.0125+Provides: bundled(golang(github.com/cespare/xxhash/v2)) = v2.2.0
103-Provides: bundled(golang(github.com/cenkalti/backoff/v4)) = v4.1.3126+Provides: bundled(golang(github.com/cilium/ebpf)) = v0.9.1
104-Provides: bundled(golang(github.com/cespare/xxhash/v2)) = v2.1.2127+Provides: bundled(golang(github.com/cloudflare/circl)) = v1.3.7
105-Provides: bundled(golang(github.com/cilium/ebpf)) = v0.7.0128+Provides: bundled(golang(github.com/containerd/containerd)) = v1.7.11
106-Provides: bundled(golang(github.com/cloudflare/circl)) = v1.1.0129+Provides: bundled(golang(github.com/containerd/log)) = v0.1.0
107-Provides: bundled(golang(github.com/containerd/cgroups)) = v1.0.3130+Provides: bundled(golang(github.com/containerd/stargz_snapshotter/estargz)) = v0.15.1
108-Provides: bundled(golang(github.com/containerd/containerd)) = v1.6.8
109Provides: bundled(golang(github.com/containernetworking/cni)) = v1.1.2131Provides: bundled(golang(github.com/containernetworking/cni)) = v1.1.2
110-Provides: bundled(golang(github.com/containernetworking/plugins)) = v1.1.1132+Provides: bundled(golang(github.com/containernetworking/plugins)) = v1.4.1
111-Provides: bundled(golang(github.com/containers/image/v5)) = v5.22.0133+Provides: bundled(golang(github.com/containers/image/v5)) = v5.30.1
112-Provides: bundled(golang(github.com/containers/libtrust)) = v0.0.0_20200511145503_9c3a6c22cd9a134+Provides: bundled(golang(github.com/containers/libtrust)) = v0.0.0_20230121012942_c1716e8a8d01
113-Provides: bundled(golang(github.com/containers/ocicrypt)) = v1.1.5135+Provides: bundled(golang(github.com/containers/ocicrypt)) = v1.1.10
114-Provides: bundled(golang(github.com/containers/storage)) = v1.42.0136+Provides: bundled(golang(github.com/containers/storage)) = v1.53.0
115-Provides: bundled(golang(github.com/coreos/go_iptables)) = v0.6.0137+Provides: bundled(golang(github.com/coreos/go_iptables)) = v0.7.0
116-Provides: bundled(golang(github.com/coreos/go_systemd/v22)) = v22.3.2138+Provides: bundled(golang(github.com/coreos/go_systemd/v22)) = v22.5.0
117-Provides: bundled(golang(github.com/cpuguy83/go_md2man/v2)) = v2.0.2139+Provides: bundled(golang(github.com/cpuguy83/go_md2man/v2)) = v2.0.3
118-Provides: bundled(golang(github.com/creack/pty)) = v1.1.18140+Provides: bundled(golang(github.com/creack/pty)) = v1.1.21
119-Provides: bundled(golang(github.com/cyphar/filepath_securejoin)) = v0.2.3141+Provides: bundled(golang(github.com/cyberphone/json_canonicalization)) = v0.0.0_20231217050601_ba74d44ecf5f
142+Provides: bundled(golang(github.com/cyphar/filepath_securejoin)) = v0.2.5
120Provides: bundled(golang(github.com/d2g/dhcp4)) = v0.0.0_20170904100407_a1d1b6c41b1c143Provides: bundled(golang(github.com/d2g/dhcp4)) = v0.0.0_20170904100407_a1d1b6c41b1c
121Provides: bundled(golang(github.com/d2g/dhcp4client)) = v1.0.0144Provides: bundled(golang(github.com/d2g/dhcp4client)) = v1.0.0
122-Provides: bundled(golang(github.com/docker/cli)) = v20.10.17+incompatible145+Provides: bundled(golang(github.com/distribution/reference)) = v0.5.0
123-Provides: bundled(golang(github.com/docker/distribution)) = v2.8.1+incompatible146+Provides: bundled(golang(github.com/docker/cli)) = v25.0.4+incompatible
124-Provides: bundled(golang(github.com/docker/docker)) = v20.10.17+incompatible147+Provides: bundled(golang(github.com/docker/distribution)) = v2.8.3+incompatible
125-Provides: bundled(golang(github.com/docker/docker_credential_helpers)) = v0.6.4148+Provides: bundled(golang(github.com/docker/docker)) = v25.0.5+incompatible
126-Provides: bundled(golang(github.com/docker/go_connections)) = v0.4.0149+Provides: bundled(golang(github.com/docker/docker_credential_helpers)) = v0.8.1
150+Provides: bundled(golang(github.com/docker/go_connections)) = v0.5.0
127Provides: bundled(golang(github.com/docker/go_metrics)) = v0.0.1151Provides: bundled(golang(github.com/docker/go_metrics)) = v0.0.1
128-Provides: bundled(golang(github.com/docker/go_units)) = v0.4.0152+Provides: bundled(golang(github.com/docker/go_units)) = v0.5.0
129Provides: bundled(golang(github.com/docker/libtrust)) = v0.0.0_20160708172513_aabc10ec26b7153Provides: bundled(golang(github.com/docker/libtrust)) = v0.0.0_20160708172513_aabc10ec26b7
130-Provides: bundled(golang(github.com/fatih/color)) = v1.13.0154+Provides: bundled(golang(github.com/fatih/color)) = v1.16.0
131-Provides: bundled(golang(github.com/felixge/httpsnoop)) = v1.0.1155+Provides: bundled(golang(github.com/felixge/httpsnoop)) = v1.0.4
132-Provides: bundled(golang(github.com/fsnotify/fsnotify)) = v1.5.1
133Provides: bundled(golang(github.com/garyburd/redigo)) = v0.0.0_20150301180006_535138d7bcd7156Provides: bundled(golang(github.com/garyburd/redigo)) = v0.0.0_20150301180006_535138d7bcd7
134-Provides: bundled(golang(github.com/ghodss/yaml)) = v1.0.0157+Provides: bundled(golang(github.com/go_jose/go_jose/v3)) = v3.0.3
135Provides: bundled(golang(github.com/go_log/log)) = v0.2.0158Provides: bundled(golang(github.com/go_log/log)) = v0.2.0
136-Provides: bundled(golang(github.com/godbus/dbus/v5)) = v5.0.6159+Provides: bundled(golang(github.com/go_logr/logr)) = v1.4.1
137-Provides: bundled(golang(github.com/gofrs/uuid)) = v4.0.0+incompatible160+Provides: bundled(golang(github.com/go_logr/stdr)) = v1.2.2
161+Provides: bundled(golang(github.com/go_openapi/analysis)) = v0.21.4
162+Provides: bundled(golang(github.com/go_openapi/errors)) = v0.21.1
163+Provides: bundled(golang(github.com/go_openapi/jsonpointer)) = v0.19.6
164+Provides: bundled(golang(github.com/go_openapi/jsonreference)) = v0.20.2
165+Provides: bundled(golang(github.com/go_openapi/loads)) = v0.21.2
166+Provides: bundled(golang(github.com/go_openapi/runtime)) = v0.26.0
167+Provides: bundled(golang(github.com/go_openapi/spec)) = v0.20.9
168+Provides: bundled(golang(github.com/go_openapi/strfmt)) = v0.22.2
169+Provides: bundled(golang(github.com/go_openapi/swag)) = v0.22.10
170+Provides: bundled(golang(github.com/go_openapi/validate)) = v0.22.1
171+Provides: bundled(golang(github.com/godbus/dbus/v5)) = v5.1.0
138Provides: bundled(golang(github.com/gogo/protobuf)) = v1.3.2172Provides: bundled(golang(github.com/gogo/protobuf)) = v1.3.2
139-Provides: bundled(golang(github.com/golang/groupcache)) = v0.0.0_20210331224755_41bb18bfe9da173+Provides: bundled(golang(github.com/golang/protobuf)) = v1.5.3
140-Provides: bundled(golang(github.com/golang/protobuf)) = v1.5.2174+Provides: bundled(golang(github.com/google/go_cmp)) = v0.6.0
141-Provides: bundled(golang(github.com/google/go_cmp)) = v0.5.8175+Provides: bundled(golang(github.com/google/go_containerregistry)) = v0.19.1
142-Provides: bundled(golang(github.com/google/go_containerregistry)) = v0.10.0176+Provides: bundled(golang(github.com/google/uuid)) = v1.6.0
143-Provides: bundled(golang(github.com/google/uuid)) = v1.3.0
144Provides: bundled(golang(github.com/gorilla/handlers)) = v1.5.1177Provides: bundled(golang(github.com/gorilla/handlers)) = v1.5.1
145-Provides: bundled(golang(github.com/gorilla/mux)) = v1.8.0178+Provides: bundled(golang(github.com/gorilla/mux)) = v1.8.1
146-Provides: bundled(golang(github.com/gosimple/slug)) = v1.12.0179+Provides: bundled(golang(github.com/gosimple/slug)) = v1.14.0
147Provides: bundled(golang(github.com/gosimple/unidecode)) = v1.0.1180Provides: bundled(golang(github.com/gosimple/unidecode)) = v1.0.1
148Provides: bundled(golang(github.com/hashicorp/errwrap)) = v1.1.0181Provides: bundled(golang(github.com/hashicorp/errwrap)) = v1.1.0
149Provides: bundled(golang(github.com/hashicorp/go_multierror)) = v1.1.1182Provides: bundled(golang(github.com/hashicorp/go_multierror)) = v1.1.1
150-Provides: bundled(golang(github.com/inconshreveable/mousetrap)) = v1.0.0183+Provides: bundled(golang(github.com/inconshreveable/mousetrap)) = v1.1.0
184+Provides: bundled(golang(github.com/josharian/intern)) = v1.0.0
151Provides: bundled(golang(github.com/json_iterator/go)) = v1.1.12185Provides: bundled(golang(github.com/json_iterator/go)) = v1.1.12
152-Provides: bundled(golang(github.com/kardianos/osext)) = v0.0.0_20190222173326_2bc1f35cddc0186+Provides: bundled(golang(github.com/klauspost/compress)) = v1.17.7
153-Provides: bundled(golang(github.com/klauspost/compress)) = v1.15.9187+Provides: bundled(golang(github.com/klauspost/pgzip)) = v1.2.6
154-Provides: bundled(golang(github.com/klauspost/pgzip)) = v1.2.5188+Provides: bundled(golang(github.com/letsencrypt/boulder)) = v0.0.0_20230907030200_6d76a0f91e1e
155-Provides: bundled(golang(github.com/letsencrypt/boulder)) = v0.0.0_20220331220046_b23ab962616e189+Provides: bundled(golang(github.com/mailru/easyjson)) = v0.7.7
156-Provides: bundled(golang(github.com/mattn/go_colorable)) = v0.1.12190+Provides: bundled(golang(github.com/mattn/go_colorable)) = v0.1.13
157-Provides: bundled(golang(github.com/mattn/go_isatty)) = v0.0.14191+Provides: bundled(golang(github.com/mattn/go_isatty)) = v0.0.20
158-Provides: bundled(golang(github.com/mattn/go_runewidth)) = v0.0.13192+Provides: bundled(golang(github.com/mattn/go_runewidth)) = v0.0.15
159Provides: bundled(golang(github.com/mattn/go_shellwords)) = v1.0.12193Provides: bundled(golang(github.com/mattn/go_shellwords)) = v1.0.12
160-Provides: bundled(golang(github.com/matttproud/golang_protobuf_extensions)) = v1.0.2_0.20181231171920_c182affec369194+Provides: bundled(golang(github.com/mattn/go_sqlite3)) = v1.14.22
195+Provides: bundled(golang(github.com/matttproud/golang_protobuf_extensions)) = v1.0.4
161Provides: bundled(golang(github.com/miekg/pkcs11)) = v1.1.1196Provides: bundled(golang(github.com/miekg/pkcs11)) = v1.1.1
162-Provides: bundled(golang(github.com/moby/locker)) = v1.0.1197+Provides: bundled(golang(github.com/mitchellh/go_homedir)) = v1.1.0
163-Provides: bundled(golang(github.com/moby/sys/mount)) = v0.3.0198+Provides: bundled(golang(github.com/mitchellh/mapstructure)) = v1.5.0
164-Provides: bundled(golang(github.com/moby/sys/mountinfo)) = v0.6.2199+Provides: bundled(golang(github.com/moby/patternmatcher)) = v0.5.0
165-Provides: bundled(golang(github.com/moby/term)) = v0.0.0_20210610120745_9d4ed1856297200+Provides: bundled(golang(github.com/moby/sys/mountinfo)) = v0.7.1
201+Provides: bundled(golang(github.com/moby/sys/sequential)) = v0.5.0
202+Provides: bundled(golang(github.com/moby/sys/user)) = v0.1.0
166Provides: bundled(golang(github.com/modern_go/concurrent)) = v0.0.0_20180306012644_bacd9c7ef1dd203Provides: bundled(golang(github.com/modern_go/concurrent)) = v0.0.0_20180306012644_bacd9c7ef1dd
167Provides: bundled(golang(github.com/modern_go/reflect2)) = v1.0.2204Provides: bundled(golang(github.com/modern_go/reflect2)) = v1.0.2
168-Provides: bundled(golang(github.com/morikuni/aec)) = v1.0.0205+Provides: bundled(golang(github.com/networkplumbing/go_nft)) = v0.4.0
169-Provides: bundled(golang(github.com/networkplumbing/go_nft)) = v0.2.0206+Provides: bundled(golang(github.com/oklog/ulid)) = v1.3.1
170Provides: bundled(golang(github.com/opencontainers/go_digest)) = v1.0.0207Provides: bundled(golang(github.com/opencontainers/go_digest)) = v1.0.0
171-Provides: bundled(golang(github.com/opencontainers/image_spec)) = v1.0.3_0.20220114050600_8b9d41f48198208+Provides: bundled(golang(github.com/opencontainers/image_spec)) = v1.1.0
172-Provides: bundled(golang(github.com/opencontainers/runc)) = v1.1.4209+Provides: bundled(golang(github.com/opencontainers/runc)) = v1.1.12
173-Provides: bundled(golang(github.com/opencontainers/runtime_spec)) = v1.0.3_0.20210326190908_1c3f411f0417210+Provides: bundled(golang(github.com/opencontainers/runtime_spec)) = v1.2.0
174-Provides: bundled(golang(github.com/opencontainers/runtime_tools)) = v0.9.1_0.20210326182921_59cdde06764b211+Provides: bundled(golang(github.com/opencontainers/runtime_tools)) = v0.9.1_0.20221107090550_2e043c6bd626
175-Provides: bundled(golang(github.com/opencontainers/selinux)) = v1.10.1212+Provides: bundled(golang(github.com/opencontainers/selinux)) = v1.11.0
176Provides: bundled(golang(github.com/opencontainers/umoci)) = v0.4.7213Provides: bundled(golang(github.com/opencontainers/umoci)) = v0.4.7
177-Provides: bundled(golang(github.com/pelletier/go_toml)) = v1.9.5214+Provides: bundled(golang(github.com/pelletier/go_toml/v2)) = v2.1.1
178Provides: bundled(golang(github.com/pkg/errors)) = v0.9.1215Provides: bundled(golang(github.com/pkg/errors)) = v0.9.1
179Provides: bundled(golang(github.com/proglottis/gpgme)) = v0.1.3216Provides: bundled(golang(github.com/proglottis/gpgme)) = v0.1.3
180-Provides: bundled(golang(github.com/prometheus/client_golang)) = v1.12.1217+Provides: bundled(golang(github.com/prometheus/client_golang)) = v1.17.0
181-Provides: bundled(golang(github.com/prometheus/client_model)) = v0.2.0218+Provides: bundled(golang(github.com/prometheus/client_model)) = v0.5.0
182-Provides: bundled(golang(github.com/prometheus/common)) = v0.32.1219+Provides: bundled(golang(github.com/prometheus/common)) = v0.44.0
183-Provides: bundled(golang(github.com/prometheus/procfs)) = v0.7.3220+Provides: bundled(golang(github.com/prometheus/procfs)) = v0.11.1
184-Provides: bundled(golang(github.com/rivo/uniseg)) = v0.2.0221+Provides: bundled(golang(github.com/rivo/uniseg)) = v0.4.7
185Provides: bundled(golang(github.com/rootless_containers/proto)) = v0.1.0222Provides: bundled(golang(github.com/rootless_containers/proto)) = v0.1.0
186Provides: bundled(golang(github.com/russross/blackfriday/v2)) = v2.1.0223Provides: bundled(golang(github.com/russross/blackfriday/v2)) = v2.1.0
187-Provides: bundled(golang(github.com/safchain/ethtool)) = v0.0.0_20210803160452_9aa261dae9b1224+Provides: bundled(golang(github.com/safchain/ethtool)) = v0.3.0
225+Provides: bundled(golang(github.com/samber/lo)) = v1.39.0
188Provides: bundled(golang(github.com/seccomp/containers_golang)) = v0.6.0226Provides: bundled(golang(github.com/seccomp/containers_golang)) = v0.6.0
189-Provides: bundled(golang(github.com/seccomp/libseccomp_golang)) = v0.9.2_0.20220502022130_f33da4d89646227+Provides: bundled(golang(github.com/seccomp/libseccomp_golang)) = v0.10.0
190-Provides: bundled(golang(github.com/sergi/go_diff)) = v1.2.0228+Provides: bundled(golang(github.com/secure_systems_lab/go_securesystemslib)) = v0.8.0
191Provides: bundled(golang(github.com/shopspring/decimal)) = v1.3.1229Provides: bundled(golang(github.com/shopspring/decimal)) = v1.3.1
192-Provides: bundled(golang(github.com/sigstore/sigstore)) = v1.3.1_0.20220629021053_b95fc0d626c1230+Provides: bundled(golang(github.com/sigstore/fulcio)) = v1.4.3
193-Provides: bundled(golang(github.com/sirupsen/logrus)) = v1.9.0231+Provides: bundled(golang(github.com/sigstore/rekor)) = v1.2.2
194-Provides: bundled(golang(github.com/spf13/cobra)) = v1.5.0232+Provides: bundled(golang(github.com/sigstore/sigstore)) = v1.8.3
233+Provides: bundled(golang(github.com/sirupsen/logrus)) = v1.9.3
234+Provides: bundled(golang(github.com/spf13/cobra)) = v1.8.0
195Provides: bundled(golang(github.com/spf13/pflag)) = v1.0.5235Provides: bundled(golang(github.com/spf13/pflag)) = v1.0.5
196Provides: bundled(golang(github.com/stefanberger/go_pkcs11uri)) = v0.0.0_20201008174630_78d3cae3a980236Provides: bundled(golang(github.com/stefanberger/go_pkcs11uri)) = v0.0.0_20201008174630_78d3cae3a980
197-Provides: bundled(golang(github.com/sylabs/json_resp)) = v0.8.1237+Provides: bundled(golang(github.com/sylabs/json_resp)) = v0.9.2
198Provides: bundled(golang(github.com/syndtr/gocapability)) = v0.0.0_20200815063812_42c35b437635238Provides: bundled(golang(github.com/syndtr/gocapability)) = v0.0.0_20200815063812_42c35b437635
199-Provides: bundled(golang(github.com/theupdateframework/go_tuf)) = v0.3.1
200Provides: bundled(golang(github.com/titanous/rocacheck)) = v0.0.0_20171023193734_afe73141d399239Provides: bundled(golang(github.com/titanous/rocacheck)) = v0.0.0_20171023193734_afe73141d399
201-Provides: bundled(golang(github.com/ulikunitz/xz)) = v0.5.10240+Provides: bundled(golang(github.com/ulikunitz/xz)) = v0.5.11
202-Provides: bundled(golang(github.com/urfave/cli)) = v1.22.5241+Provides: bundled(golang(github.com/urfave/cli)) = v1.22.14
203Provides: bundled(golang(github.com/vbatts/go_mtree)) = v0.5.0242Provides: bundled(golang(github.com/vbatts/go_mtree)) = v0.5.0
204-Provides: bundled(golang(github.com/vbatts/tar_split)) = v0.11.2243+Provides: bundled(golang(github.com/vbatts/tar_split)) = v0.11.5
205-Provides: bundled(golang(github.com/vbauerster/mpb/v7)) = v7.4.2244+Provides: bundled(golang(github.com/vbauerster/mpb/v8)) = v8.7.3
206-Provides: bundled(golang(github.com/vishvananda/netlink)) = v1.1.1_0.20210330154013_f5de75959ad5245+Provides: bundled(golang(github.com/vishvananda/netlink)) = v1.2.1_beta.2
207-Provides: bundled(golang(github.com/vishvananda/netns)) = v0.0.0_20210104183010_2eb08e3e575f246+Provides: bundled(golang(github.com/vishvananda/netns)) = v0.0.4
208Provides: bundled(golang(github.com/xeipuuv/gojsonpointer)) = v0.0.0_20190905194746_02993c407bfb247Provides: bundled(golang(github.com/xeipuuv/gojsonpointer)) = v0.0.0_20190905194746_02993c407bfb
209Provides: bundled(golang(github.com/xeipuuv/gojsonreference)) = v0.0.0_20180127040603_bd5ef7bd5415248Provides: bundled(golang(github.com/xeipuuv/gojsonreference)) = v0.0.0_20180127040603_bd5ef7bd5415
210Provides: bundled(golang(github.com/xeipuuv/gojsonschema)) = v1.2.0249Provides: bundled(golang(github.com/xeipuuv/gojsonschema)) = v1.2.0
211-Provides: bundled(golang(github.com/yvasiyarov/go_metrics)) = v0.0.0_20150112132944_c25f46c4b940250+Provides: bundled(golang(go.mongodb.org/mongo_driver)) = v1.14.0
212-Provides: bundled(golang(github.com/yvasiyarov/gorelic)) = v0.0.6251+Provides: bundled(golang(go.mozilla.org/pkcs7)) = v0.0.0_20210826202110_33d05740a352
213-Provides: bundled(golang(github.com/yvasiyarov/newrelic_platform_go)) = v0.0.0_20160601141957_9c099fbc30e9252+Provides: bundled(golang(go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp)) = v0.45.0
214-Provides: bundled(golang(go.etcd.io/bbolt)) = v1.3.6253+Provides: bundled(golang(go.opentelemetry.io/otel)) = v1.19.0
215-Provides: bundled(golang(go.mozilla.org/pkcs7)) = v0.0.0_20200128120323_432b2356ecb1254+Provides: bundled(golang(go.opentelemetry.io/otel/metric)) = v1.19.0
216-Provides: bundled(golang(golang.org/x/crypto)) = v0.0.0_20220525230936_793ad666bf5e255+Provides: bundled(golang(go.opentelemetry.io/otel/trace)) = v1.19.0
217-Provides: bundled(golang(golang.org/x/net)) = v0.0.0_20220624214902_1bab6f366d9e256+Provides: bundled(golang(golang.org/x/crypto)) = v0.22.0
218-Provides: bundled(golang(golang.org/x/sync)) = v0.0.0_20220601150217_0de741cfad7f257+Provides: bundled(golang(golang.org/x/exp)) = v0.0.0_20240222234643_814bf88cf225
219-Provides: bundled(golang(golang.org/x/sys)) = v0.0.0_20220715151400_c0bba94af5f8258+Provides: bundled(golang(golang.org/x/mod)) = v0.15.0
220-Provides: bundled(golang(golang.org/x/term)) = v0.0.0_20210927222741_03fcf44c2211259+Provides: bundled(golang(golang.org/x/net)) = v0.22.0
221-Provides: bundled(golang(golang.org/x/text)) = v0.3.7260+Provides: bundled(golang(golang.org/x/sync)) = v0.6.0
222-Provides: bundled(golang(google.golang.org/genproto)) = v0.0.0_20220624142145_8cd45d7dbd1f261+Provides: bundled(golang(golang.org/x/sys)) = v0.19.0
223-Provides: bundled(golang(google.golang.org/grpc)) = v1.47.0262+Provides: bundled(golang(golang.org/x/term)) = v0.19.0
224-Provides: bundled(golang(google.golang.org/protobuf)) = v1.28.0263+Provides: bundled(golang(golang.org/x/text)) = v0.14.0
225-Provides: bundled(golang(gopkg.in/square/go_jose.v2)) = v2.6.0264+Provides: bundled(golang(golang.org/x/tools)) = v0.18.0
265+Provides: bundled(golang(google.golang.org/genproto/googleapis/rpc)) = v0.0.0_20240123012728_ef4313101c80
266+Provides: bundled(golang(google.golang.org/grpc)) = v1.62.0
267+Provides: bundled(golang(google.golang.org/protobuf)) = v1.33.0
268+Provides: bundled(golang(gopkg.in/go_jose/go_jose.v2)) = v2.6.3
226Provides: bundled(golang(gopkg.in/yaml.v2)) = v2.4.0269Provides: bundled(golang(gopkg.in/yaml.v2)) = v2.4.0
227Provides: bundled(golang(gopkg.in/yaml.v3)) = v3.0.1270Provides: bundled(golang(gopkg.in/yaml.v3)) = v3.0.1
228-Provides: bundled(golang(gotest.tools/v3)) = v3.3.0271+Provides: bundled(golang(gotest.tools/v3)) = v3.5.1
229-Provides: bundled(golang(mvdan.cc/sh/v3)) = v3.5.1272+Provides: bundled(golang(mvdan.cc/sh/v3)) = v3.7.1_0.20231014181306_8b673862efc6
230-Provides: bundled(golang(oras.land/oras_go)) = v1.2.0273+ 
231-
232%if "%{_target_vendor}" == "suse"274%if "%{_target_vendor}" == "suse"
233BuildRequires: binutils-gold275BuildRequires: binutils-gold
234%endif276%endif
@@ -237,34 +279,26 @@ BuildRequires: git
237BuildRequires: gcc279BuildRequires: gcc
238BuildRequires: make280BuildRequires: make
239BuildRequires: libseccomp-devel281BuildRequires: libseccomp-devel
282+BuildRequires: cryptsetup
283+BuildRequires: fuse3-devel
284+%if ("%{?squashfuse_version}" != "") || ("%{e2fsprogs_version}" != "") || ("%{fuse_overlayfs_version}" != "")
285+BuildRequires: autoconf
286+BuildRequires: automake
287+BuildRequires: libtool
288+BuildRequires: pkgconfig
289+BuildRequires: zlib-devel
290+%endif
240%if "%{_target_vendor}" == "suse"291%if "%{_target_vendor}" == "suse"
241Requires: squashfs292Requires: squashfs
242%else293%else
243Requires: squashfs-tools294Requires: squashfs-tools
244%endif295%endif
245-BuildRequires: cryptsetup
246-%if "%{?squashfuse_version}" != ""
247-BuildRequires: autoconf
248-BuildRequires: automake
249-BuildRequires: libtool
250-BuildRequires: pkgconfig
251-BuildRequires: fuse3-devel
252-BuildRequires: zlib-devel
253-%endif
254-Requires: squashfuse
255Requires: fakeroot296Requires: fakeroot
256-Requires: fuse-overlayfs297+ 
257-Requires: e2fsprogs
258-# Uncomment this for the epel build, but we don't want it for the Apptainer
259-# release build because there the same rpm is shared across OS versions
260-%if 0%{?el7}
261-Requires: fuse2fs
262-%endif
263-
264%description298%description
265Apptainer provides functionality to make portable299Apptainer provides functionality to make portable
266containers that can be used across host environments.300containers that can be used across host environments.
267- 301+ 
268%package suid302%package suid
269Summary: Setuid component of Apptainer303Summary: Setuid component of Apptainer
270Requires: %{name} = %{version}-%{release}304Requires: %{name} = %{version}-%{release}
@@ -274,32 +308,16 @@ Requires: %{name} = %{version}-%{release}
274Obsoletes: singularity <= %{last_singularity_version}308Obsoletes: singularity <= %{last_singularity_version}
275# FESCo asked to have this form of Provides309# FESCo asked to have this form of Provides
276Provides: alternative-for(singularity)310Provides: alternative-for(singularity)
277- 311+ 
278%description suid312%description suid
279Provides the optional setuid-root portion of Apptainer.313Provides the optional setuid-root portion of Apptainer.
280- 314+ 
281%prep315%prep
282-%if "%{?squashfuse_version}" != ""
283-# the default directory for other steps is where the %%prep section ends
284-# so do main package last
285-%setup -b 10 -n squashfuse-%{squashfuse_version}
286-%patch -P 10 -p1
287-%patch -P 11 -p1
288-%patch -P 12 -p1
289%setup -n %{name}-%{package_version}316%setup -n %{name}-%{package_version}
290-%else317+# don't need to setup dependent source packages and patches because
291-%autosetup -n %{name}-%{package_version}318+# that is done by the compile-dependencies script
292-%endif319+ 
293-
294%build320%build
295-%if "%{?squashfuse_version}" != ""
296-pushd ../squashfuse-%{squashfuse_version}
297-./autogen.sh
298-FLAGS=-std=c99 ./configure --enable-multithreading
299-%make_build squashfuse_ll
300-popd
301-%endif
302-
303%if "%{?SOURCE1}" != ""321%if "%{?SOURCE1}" != ""
304GOVERSION="$(echo %SOURCE1|sed 's,.*/,,;s/go//;s/\.src.*//')"322GOVERSION="$(echo %SOURCE1|sed 's,.*/,,;s/go//;s/\.src.*//')"
305if ! ./mlocal/scripts/check-min-go-version go $GOVERSION; then323if ! ./mlocal/scripts/check-min-go-version go $GOVERSION; then
@@ -313,7 +331,9 @@ if ! ./mlocal/scripts/check-min-go-version go $GOVERSION; then
313 popd331 popd
314fi332fi
315%endif333%endif
316- 334+ 
335+./scripts/compile-dependencies $(dirname %{SOURCE10})
336+ 
317# Not all of these parameters currently have an effect, but they might be337# Not all of these parameters currently have an effect, but they might be
318# used someday. They are the same parameters as in the configure macro.338# used someday. They are the same parameters as in the configure macro.
319./mconfig %{?mconfig_opts} -V %{version}-%{release} --with-suid \339./mconfig %{?mconfig_opts} -V %{version}-%{release} --with-suid \
@@ -326,41 +346,43 @@ fi
326 --includedir=%{_includedir} \346 --includedir=%{_includedir} \
327 --libdir=%{_libdir} \347 --libdir=%{_libdir} \
328 --libexecdir=%{_libexecdir} \348 --libexecdir=%{_libexecdir} \
329- --localstatedir=%{_localstatedir} \349+ --localstatedir=%{_sharedstatedir} \
330 --sharedstatedir=%{_sharedstatedir} \350 --sharedstatedir=%{_sharedstatedir} \
331 --mandir=%{_mandir} \351 --mandir=%{_mandir} \
332 --infodir=%{_infodir}352 --infodir=%{_infodir}
333- 353+ 
334%make_build -C builddir V= old_config=354%make_build -C builddir V= old_config=
335- 355+ 
336%install356%install
337%if "%{?SOURCE1}" != ""357%if "%{?SOURCE1}" != ""
338export PATH=$PWD/go/bin:$PATH358export PATH=$PWD/go/bin:$PATH
339%endif359%endif
340- 360+ 
341%make_install -C builddir V=361%make_install -C builddir V=
362+ 
363+%if "%{?gocryptfs_version}" != ""
364+install -m 755 gocryptfs-%{gocryptfs_version}/gocryptfs %{buildroot}%{_libexecdir}/%{name}/bin/gocryptfs
365+%endif
366+ 
342%if "%{?squashfuse_version}" != ""367%if "%{?squashfuse_version}" != ""
343-install -m 755 ../squashfuse-%{squashfuse_version}/squashfuse_ll %{buildroot}%{_libexecdir}/%{name}/bin/squashfuse_ll368+install -m 755 squashfuse-%{squashfuse_version}/squashfuse_ll %{buildroot}%{_libexecdir}/%{name}/bin/squashfuse_ll
344%endif369%endif
345- 370+ 
346-%if 0%{?el7}371+%if "%{?e2fsprogs_version}" != ""
347-# Check for fuse2fs only as a pre-install so that an rpm built on el7 can372+install -m 755 e2fsprogs-%{e2fsprogs_version}/fuse2fs %{buildroot}%{_libexecdir}/%{name}/bin/fuse2fs
348-# be used on el8 & el9. Only el7 has a fuse2fs package, the others have
349-# the fuse2fs program in the e2fsprogs package.
350-%pre
351-if [ ! -f /usr/bin/fuse2fs ] && [ ! -f /usr/sbin/fuse2fs ]; then
352- echo "fuse2fs not found, please yum install /usr/*bin/fuse2fs from epel" >&2
353- exit 1
354-fi
355%endif373%endif
356- 374+ 
375+%if "%{?fuse_overlayfs_version}" != ""
376+install -m 755 fuse-overlayfs-%{fuse_overlayfs_version}/fuse-overlayfs %{buildroot}%{_libexecdir}/%{name}/bin/fuse-overlayfs
377+%endif
378+ 
357%post379%post
358# $1 in %%posttrans cannot distinguish between fresh installs and upgrades,380# $1 in %%posttrans cannot distinguish between fresh installs and upgrades,
359# so check it here and create a file to pass the knowledge to that step381# so check it here and create a file to pass the knowledge to that step
360if [ "$1" -eq 1 ] && [ -d %{_sysconfdir}/singularity ]; then382if [ "$1" -eq 1 ] && [ -d %{_sysconfdir}/singularity ]; then
361 touch %{_sysconfdir}/%{name}/.singularityupgrade383 touch %{_sysconfdir}/%{name}/.singularityupgrade
362fi384fi
363- 385+ 
364%posttrans386%posttrans
365# clean out empty directories under /etc/singularity387# clean out empty directories under /etc/singularity
366rmdir %{_sysconfdir}/singularity/* %{_sysconfdir}/singularity 2>/dev/null || true388rmdir %{_sysconfdir}/singularity/* %{_sysconfdir}/singularity 2>/dev/null || true
@@ -397,11 +419,11 @@ if [ -f %{_sysconfdir}/%{name}/.singularityupgrade ]; then
397 done419 done
398 popd >/dev/null420 popd >/dev/null
399fi421fi
400- 422+ 
401# Define `%%license` tag if not already defined.423# Define `%%license` tag if not already defined.
402# This is needed for EL 7 compatibility.424# This is needed for EL 7 compatibility.
403%{!?_licensedir:%global license %doc}425%{!?_licensedir:%global license %doc}
404- 426+ 
405%files427%files
406%{_bindir}/%{name}428%{_bindir}/%{name}
407%{_bindir}/singularity429%{_bindir}/singularity
@@ -409,17 +431,26 @@ fi
409%dir %{_libexecdir}/%{name}431%dir %{_libexecdir}/%{name}
410%dir %{_libexecdir}/%{name}/bin432%dir %{_libexecdir}/%{name}/bin
411%{_libexecdir}/%{name}/bin/starter433%{_libexecdir}/%{name}/bin/starter
434+%if "%{?gocryptfs_version}" != ""
435+%{_libexecdir}/%{name}/bin/gocryptfs
436+%endif
412%if "%{?squashfuse_version}" != ""437%if "%{?squashfuse_version}" != ""
413%{_libexecdir}/%{name}/bin/squashfuse_ll438%{_libexecdir}/%{name}/bin/squashfuse_ll
414%endif439%endif
440+%if "%{?e2fsprogs_version}" != ""
441+%{_libexecdir}/%{name}/bin/fuse2fs
442+%endif
443+%if "%{?fuse_overlayfs_version}" != ""
444+%{_libexecdir}/%{name}/bin/fuse-overlayfs
445+%endif
415%{_libexecdir}/%{name}/cni446%{_libexecdir}/%{name}/cni
416%{_libexecdir}/%{name}/lib447%{_libexecdir}/%{name}/lib
417%dir %{_sysconfdir}/%{name}448%dir %{_sysconfdir}/%{name}
418%config(noreplace) %{_sysconfdir}/%{name}/*449%config(noreplace) %{_sysconfdir}/%{name}/*
419%{_datadir}/bash-completion/completions/*450%{_datadir}/bash-completion/completions/*
420-%dir %{_localstatedir}/%{name}451+%dir %{_sharedstatedir}/%{name}
421-%dir %{_localstatedir}/%{name}/mnt452+%dir %{_sharedstatedir}/%{name}/mnt
422-%dir %{_localstatedir}/%{name}/mnt/session453+%dir %{_sharedstatedir}/%{name}/mnt/session
423%{_mandir}/man1/%{name}*454%{_mandir}/man1/%{name}*
424%{_mandir}/man1/singularity*455%{_mandir}/man1/singularity*
425%license LICENSE.md456%license LICENSE.md
@@ -427,10 +458,9 @@ fi
427%license LICENSE_DEPENDENCIES.md458%license LICENSE_DEPENDENCIES.md
428%doc README.md459%doc README.md
429%doc CHANGELOG.md460%doc CHANGELOG.md
430- 461+ 
431%files suid462%files suid
432%attr(4755, root, root) %{_libexecdir}/%{name}/bin/starter-suid463%attr(4755, root, root) %{_libexecdir}/%{name}/bin/starter-suid
433- 464+ 
434%changelog465%changelog
435-* Tue Feb 21 2023 Yikun<yikunkero@gmail.com> - 1.1.6-1466+ 
436-- Init package
Binary files do not support preview
@@ -0,0 +1,312 @@
1+From 5598a968f3ee2ba5a8a6b988343905a2831f963c Mon Sep 17 00:00:00 2001
2+From: Eric Biggers <ebiggers@google.com>
3+Date: Tue, 21 Mar 2023 20:29:44 -0700
4+Subject: [PATCH] e2freefrag: don't use linux/fsmap.h when fsmap_sizeof() is
5+ missing
6+ 
7+Work around an issue with the Android NDK where its copy of
8+linux/fsmap.h is missing the inline functions fsmap_sizeof() and
9+fsmap_advance(). This was causing an error when building e2fsprogs
10+using the Android NDK, using the autotools-based build system.
11+ 
12+Signed-off-by: Eric Biggers <ebiggers@google.com>
13+Signed-off-by: Theodore Ts'o <tytso@mit.edu>
14+---
15+ configure | 91 +++++++++++++++++++++++++++++++----------------
16+ configure.ac | 6 ++++
17+ lib/config.h.in | 3 ++
18+ misc/e2freefrag.c | 2 +-
19+ 4 files changed, 70 insertions(+), 32 deletions(-)
20+ 
21+diff --git a/configure b/configure
22+index b0e8d1bf8..72c39b4d3 100755
23+--- a/configure
24++++ b/configure
25+@@ -8678,7 +8678,7 @@ else $as_nop
26+ *-*-aix*)
27+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
28+ /* end confdefs.h. */
29+-#if defined __powerpc64__ || defined _ARCH_PPC64
30++#if defined __powerpc64__ || defined __LP64__
31+ int ok;
32+ #else
33+ error fail
34+@@ -8969,7 +8969,7 @@ rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
35+ # be generating 64-bit code.
36+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
37+ /* end confdefs.h. */
38+-#if defined __powerpc64__ || defined _ARCH_PPC64
39++#if defined __powerpc64__ || defined __LP64__
40+ int ok;
41+ #else
42+ error fail
43+@@ -9076,7 +9076,7 @@ then :
44+ else $as_nop
45+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
46+ /* end confdefs.h. */
47+-#ifdef __ELF__
48++#if defined __ELF__ || (defined __linux__ && defined __EDG__)
49+ Extensible Linking Format
50+ #endif
51+
52+@@ -9094,7 +9094,7 @@ rm -rf conftest*
53+ fi
54+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_elf" >&5
55+ printf "%s\n" "$gl_cv_elf" >&6; }
56+- if test $gl_cv_elf; then
57++ if test $gl_cv_elf = yes; then
58+ # Extract the ELF class of a file (5th byte) in decimal.
59+ # Cf. https://en.wikipedia.org/wiki/Executable_and_Linkable_Format#File_header
60+ if od -A x < /dev/null >/dev/null 2>/dev/null; then
61+@@ -9111,19 +9111,22 @@ printf "%s\n" "$gl_cv_elf" >&6; }
62+ echo
63+ }
64+ fi
65++ # Use 'expr', not 'test', to compare the values of func_elfclass, because on
66++ # Solaris 11 OpenIndiana and Solaris 11 OmniOS, the result is 001 or 002,
67++ # not 1 or 2.
68+ case $HOST_CPU_C_ABI_32BIT in
69+ yes)
70+ # 32-bit ABI.
71+ acl_is_expected_elfclass ()
72+ {
73+- test "`func_elfclass | sed -e 's/[ ]//g'`" = 1
74++ expr "`func_elfclass | sed -e 's/[ ]//g'`" = 1 > /dev/null
75+ }
76+ ;;
77+ no)
78+ # 64-bit ABI.
79+ acl_is_expected_elfclass ()
80+ {
81+- test "`func_elfclass | sed -e 's/[ ]//g'`" = 2
82++ expr "`func_elfclass | sed -e 's/[ ]//g'`" = 2 > /dev/null
83+ }
84+ ;;
85+ *)
86+@@ -9653,7 +9656,14 @@ fi
87+ fi
88+ ;;
89+ -l*)
90+- names_next_round="$names_next_round "`echo "X$dep" | sed -e 's/^X-l//'`
91++ dep=`echo "X$dep" | sed -e 's/^X-l//'`
92++ if test "X$dep" != Xc \
93++ || case $host_os in
94++ linux* | gnu* | k*bsd*-gnu) false ;;
95++ *) true ;;
96++ esac; then
97++ names_next_round="$names_next_round $dep"
98++ fi
99+ ;;
100+ *.la)
101+ names_next_round="$names_next_round "`echo "X$dep" | sed -e 's,^X.*/,,' -e 's,^lib,,' -e 's,\.la$,,'`
102+@@ -10015,8 +10025,9 @@ int
103+ main (void)
104+ {
105+ int result = 0;
106+- /* Test against AIX 5.1 bug: Failures are not distinguishable from successful
107+- returns. */
108++ /* Test against AIX 5.1...7.2 bug: Failures are not distinguishable from
109++ successful returns. This is even documented in
110++ <https://www.ibm.com/support/knowledgecenter/ssw_aix_72/i_bostechref/iconv.html> */
111+ {
112+ iconv_t cd_utf8_to_88591 = iconv_open ("ISO8859-1", "UTF-8");
113+ if (cd_utf8_to_88591 != (iconv_t)(-1))
114+@@ -10598,7 +10609,14 @@ fi
115+ fi
116+ ;;
117+ -l*)
118+- names_next_round="$names_next_round "`echo "X$dep" | sed -e 's/^X-l//'`
119++ dep=`echo "X$dep" | sed -e 's/^X-l//'`
120++ if test "X$dep" != Xc \
121++ || case $host_os in
122++ linux* | gnu* | k*bsd*-gnu) false ;;
123++ *) true ;;
124++ esac; then
125++ names_next_round="$names_next_round $dep"
126++ fi
127+ ;;
128+ *.la)
129+ names_next_round="$names_next_round "`echo "X$dep" | sed -e 's,^X.*/,,' -e 's,^lib,,' -e 's,\.la$,,'`
130+@@ -12336,6 +12354,15 @@ then :
131+
132+ printf "%s\n" "#define HAVE_LSEEK64_PROTOTYPE 1" >>confdefs.h
133+
134++fi
135++
136++ac_fn_check_decl "$LINENO" "fsmap_sizeof" "ac_cv_have_decl_fsmap_sizeof" "#include <linux/fsmap.h>
137++" "$ac_c_undeclared_builtin_options" "CFLAGS"
138++if test "x$ac_cv_have_decl_fsmap_sizeof" = xyes
139++then :
140++
141++printf "%s\n" "#define HAVE_FSMAP_SIZEOF 1" >>confdefs.h
142++
143+ fi
144+ # The cast to long int works around a bug in the HP C Compiler
145+ # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
146+@@ -14776,11 +14803,11 @@ if test x$ac_prog_cxx_stdcxx = xno
147+ then :
148+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CXX option to enable C++11 features" >&5
149+ printf %s "checking for $CXX option to enable C++11 features... " >&6; }
150+-if test ${ac_cv_prog_cxx_cxx11+y}
151++if test ${ac_cv_prog_cxx_11+y}
152+ then :
153+ printf %s "(cached) " >&6
154+ else $as_nop
155+- ac_cv_prog_cxx_cxx11=no
156++ ac_cv_prog_cxx_11=no
157+ ac_save_CXX=$CXX
158+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
159+ /* end confdefs.h. */
160+@@ -14822,11 +14849,11 @@ if test x$ac_prog_cxx_stdcxx = xno
161+ then :
162+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CXX option to enable C++98 features" >&5
163+ printf %s "checking for $CXX option to enable C++98 features... " >&6; }
164+-if test ${ac_cv_prog_cxx_cxx98+y}
165++if test ${ac_cv_prog_cxx_98+y}
166+ then :
167+ printf %s "(cached) " >&6
168+ else $as_nop
169+- ac_cv_prog_cxx_cxx98=no
170++ ac_cv_prog_cxx_98=no
171+ ac_save_CXX=$CXX
172+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
173+ /* end confdefs.h. */
174+@@ -15166,7 +15193,7 @@ fi
175+
176+
177+ if test $pkg_failed = yes; then
178+- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
179++ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
180+ printf "%s\n" "no" >&6; }
181+
182+ if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
183+@@ -15175,25 +15202,25 @@ else
184+ _pkg_short_errors_supported=no
185+ fi
186+ if test $_pkg_short_errors_supported = yes; then
187+- udev_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "udev" 2>&1`
188++ udev_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "udev" 2>&1`
189+ else
190+- udev_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "udev" 2>&1`
191++ udev_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "udev" 2>&1`
192+ fi
193+- # Put the nasty error message in config.log where it belongs
194+- echo "$udev_PKG_ERRORS" >&5
195++ # Put the nasty error message in config.log where it belongs
196++ echo "$udev_PKG_ERRORS" >&5
197+
198+
199+ with_udev_rules_dir=""
200+
201+ elif test $pkg_failed = untried; then
202+- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
203++ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
204+ printf "%s\n" "no" >&6; }
205+
206+ with_udev_rules_dir=""
207+
208+ else
209+- udev_CFLAGS=$pkg_cv_udev_CFLAGS
210+- udev_LIBS=$pkg_cv_udev_LIBS
211++ udev_CFLAGS=$pkg_cv_udev_CFLAGS
212++ udev_LIBS=$pkg_cv_udev_LIBS
213+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
214+ printf "%s\n" "yes" >&6; }
215+
216+@@ -15335,7 +15362,7 @@ fi
217+
218+
219+ if test $pkg_failed = yes; then
220+- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
221++ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
222+ printf "%s\n" "no" >&6; }
223+
224+ if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
225+@@ -15344,25 +15371,25 @@ else
226+ _pkg_short_errors_supported=no
227+ fi
228+ if test $_pkg_short_errors_supported = yes; then
229+- systemd_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "systemd" 2>&1`
230++ systemd_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "systemd" 2>&1`
231+ else
232+- systemd_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "systemd" 2>&1`
233++ systemd_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "systemd" 2>&1`
234+ fi
235+- # Put the nasty error message in config.log where it belongs
236+- echo "$systemd_PKG_ERRORS" >&5
237++ # Put the nasty error message in config.log where it belongs
238++ echo "$systemd_PKG_ERRORS" >&5
239+
240+
241+ with_systemd_unit_dir=""
242+
243+ elif test $pkg_failed = untried; then
244+- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
245++ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
246+ printf "%s\n" "no" >&6; }
247+
248+ with_systemd_unit_dir=""
249+
250+ else
251+- systemd_CFLAGS=$pkg_cv_systemd_CFLAGS
252+- systemd_LIBS=$pkg_cv_systemd_LIBS
253++ systemd_CFLAGS=$pkg_cv_systemd_CFLAGS
254++ systemd_LIBS=$pkg_cv_systemd_LIBS
255+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
256+ printf "%s\n" "yes" >&6; }
257+
258+@@ -17029,7 +17056,9 @@ printf "%s\n" "$as_me: executing $ac_file commands" >&6;}
259+ # presentlang can be used as a fallback for messages
260+ # which are not translated in the desiredlang catalog).
261+ case "$desiredlang" in
262+- "$presentlang"*) useit=yes;;
263++ "$presentlang" | "$presentlang"_* | "$presentlang".* | "$presentlang"@*)
264++ useit=yes
265++ ;;
266+ esac
267+ done
268+ if test $useit = yes; then
269+diff --git a/configure.ac b/configure.ac
270+index 017a96ffe..b905e9992 100644
271+--- a/configure.ac
272++++ b/configure.ac
273+@@ -1107,6 +1107,12 @@ AC_CHECK_DECL(lseek64,[AC_DEFINE(HAVE_LSEEK64_PROTOTYPE, 1,
274+ [#define _LARGEFILE_SOURCE
275+ #define _LARGEFILE64_SOURCE
276+ #include <unistd.h>])
277++
278++dnl The Android NDK has <linux/fsmap.h>, but it is missing the inline functions
279++dnl fsmap_sizeof() and fsmap_advance(). Check whether this is the case.
280++AC_CHECK_DECL(fsmap_sizeof,[AC_DEFINE(HAVE_FSMAP_SIZEOF, 1,
281++ [Define to 1 if fsmap_sizeof() is declared in linux/fsmap.h])],,
282++ [#include <linux/fsmap.h>])
283+ dnl
284+ dnl Word sizes...
285+ dnl
286+diff --git a/lib/config.h.in b/lib/config.h.in
287+index ab38266f6..076c38235 100644
288+--- a/lib/config.h.in
289++++ b/lib/config.h.in
290+@@ -109,6 +109,9 @@
291+ /* Define to 1 if you have the `fdatasync' function. */
292+ #undef HAVE_FDATASYNC
293+
294++/* Define to 1 if fsmap_sizeof() is declared in linux/fsmap.h */
295++#undef HAVE_FSMAP_SIZEOF
296++
297+ /* Define to 1 if you have the `fstat64' function. */
298+ #undef HAVE_FSTAT64
299+
300+diff --git a/misc/e2freefrag.c b/misc/e2freefrag.c
301+index 49b6346e4..04f155b60 100644
302+--- a/misc/e2freefrag.c
303++++ b/misc/e2freefrag.c
304+@@ -38,7 +38,7 @@ extern int optind;
305+ #include "e2freefrag.h"
306+
307+ #if defined(HAVE_EXT2_IOCTLS) && !defined(DEBUGFS)
308+-# ifdef HAVE_LINUX_FSMAP_H
309++# if defined(HAVE_LINUX_FSMAP_H) && defined(HAVE_FSMAP_SIZEOF)
310+ # include <linux/fsmap.h>
311+ # endif
312+ # include "fsmap.h"
@@ -0,0 +1,154 @@
1+From 1ac0061609c69cc9fe01bd116915632c2bc7c497 Mon Sep 17 00:00:00 2001
2+From: Andreas Dilger <adilger@dilger.ca>
3+Date: Tue, 9 May 2023 22:57:57 -0600
4+Subject: [PATCH] build: split version and release in configure
5+ 
6+Update configure.ac to separate Version from Release if there is
7+a '-' in version.h::E2FSPROGS_VERSION (e.g. "1.46.6-rc1").
8+Otherwise, the '-' in the version can make RPM building unhappy.
9+ 
10+Simplify the generation of E2FSPROGS_VERESION, E2FSPROGS_DATE and
11+E2FSPROGS_DAY to avoid multiple grep/awk/sed/tr stages.
12+ 
13+Signed-off-by: Andreas Dilger <adilger@dilger.ca>
14+Link: https://lore.kernel.org/r/1683694677-9366-1-git-send-email-adilger@dilger.ca
15+Signed-off-by: Theodore Ts'o <tytso@mit.edu>
16+---
17+ configure | 17 +++++++++--------
18+ configure.ac | 18 ++++++++++--------
19+ util/gen-tarball.in | 7 ++++---
20+ 3 files changed, 23 insertions(+), 19 deletions(-)
21+ 
22+diff --git a/configure b/configure
23+index 72c39b4d3..847ed8e84 100755
24+--- a/configure
25++++ b/configure
26+@@ -824,6 +824,7 @@ build_cpu
27+ build
28+ E2FSPROGS_DATE
29+ E2FSPROGS_PKGVER
30++E2FSPROGS_PKGREL
31+ E2FSPROGS_VERSION
32+ E2FSPROGS_DAY
33+ E2FSPROGS_MONTH
34+@@ -4583,11 +4584,9 @@ fi
35+ MCONFIG=./MCONFIG
36+
37+ BINARY_TYPE=bin
38+-E2FSPROGS_VERSION=`grep E2FSPROGS_VERSION ${srcdir}/version.h \
39+- | awk '{print $3}' | tr \" " " | awk '{print $1}'`
40+-E2FSPROGS_DATE=`grep E2FSPROGS_DATE ${srcdir}/version.h | awk '{print $3}' \
41+- | tr \" " " | awk '{print $1}'`
42+-E2FSPROGS_DAY=$(echo $E2FSPROGS_DATE | awk -F- '{print $1}' | sed -e '/^[1-9]$/s/^/0/')
43++E2FSPROGS_VERSION=`awk -F\" '/E2FSPROGS_VERS/ { print $2 }' ${srcdir}/version.h`
44++E2FSPROGS_DATE=`awk -F\" '/E2FSPROGS_DATE/ { print $2 }' ${srcdir}/version.h`
45++E2FSPROGS_DAY=$(echo $E2FSPROGS_DATE | awk -F- '{ printf "%02d", $1 }')
46+ MONTH=`echo $E2FSPROGS_DATE | awk -F- '{print $2}'`
47+ YEAR=`echo $E2FSPROGS_DATE | awk -F- '{print $3}'`
48+
49+@@ -4616,17 +4615,19 @@ Dec) MONTH_NUM=12; E2FSPROGS_MONTH="December" ;;
50+ printf "%s\n" "$as_me: WARNING: Unknown month $MONTH??" >&2;} ;;
51+ esac
52+
53+-base_ver=`echo $E2FSPROGS_VERSION | \
54+- sed -e 's/-WIP//' -e 's/pre-//' -e 's/-PLUS//'`
55++base_ver=`echo $E2FSPROGS_VERSION | sed -e 's/pre-//' -e 's/-.*//'`
56++base_rel=`echo $E2FSPROGS_VERSION | awk -F- '{ print $2 }'`
57+
58+ date_spec=${E2FSPROGS_YEAR}.${MONTH_NUM}.${E2FSPROGS_DAY}
59+
60+ case $E2FSPROGS_VERSION in
61+ *-WIP|pre-*)
62+- E2FSPROGS_PKGVER="$base_ver~WIP.$date_spec"
63++ E2FSPROGS_PKGVER="$base_ver"
64++ E2FSPROGS_PKGREL="WIP.$date_spec"
65+ ;;
66+ *)
67+ E2FSPROGS_PKGVER="$base_ver"
68++ E2FSPROGS_PKGREL="$base_rel"
69+ ;;
70+ esac
71+
72+diff --git a/configure.ac b/configure.ac
73+index b905e9992..371e2bf1c 100644
74+--- a/configure.ac
75++++ b/configure.ac
76+@@ -11,11 +11,9 @@ BINARY_TYPE=bin
77+ dnl
78+ dnl This is to figure out the version number and the date....
79+ dnl
80+-E2FSPROGS_VERSION=`grep E2FSPROGS_VERSION ${srcdir}/version.h \
81+- | awk '{print $3}' | tr \" " " | awk '{print $1}'`
82+-E2FSPROGS_DATE=`grep E2FSPROGS_DATE ${srcdir}/version.h | awk '{print $3}' \
83+- | tr \" " " | awk '{print $1}'`
84+-E2FSPROGS_DAY=$(echo $E2FSPROGS_DATE | awk -F- '{print $1}' | sed -e '/^[[1-9]]$/s/^/0/')
85++E2FSPROGS_VERSION=`awk -F\" '/E2FSPROGS_VERS/ { print $2 }' ${srcdir}/version.h`
86++E2FSPROGS_DATE=`awk -F\" '/E2FSPROGS_DATE/ { print $2 }' ${srcdir}/version.h`
87++E2FSPROGS_DAY=$(echo $E2FSPROGS_DATE | awk -F- '{ printf "%02d", $1 }')
88+ MONTH=`echo $E2FSPROGS_DATE | awk -F- '{print $2}'`
89+ YEAR=`echo $E2FSPROGS_DATE | awk -F- '{print $3}'`
90+
91+@@ -43,27 +41,31 @@ Dec) MONTH_NUM=12; E2FSPROGS_MONTH="December" ;;
92+ *) AC_MSG_WARN([Unknown month $MONTH??]) ;;
93+ esac
94+
95+-base_ver=`echo $E2FSPROGS_VERSION | \
96+- sed -e 's/-WIP//' -e 's/pre-//' -e 's/-PLUS//'`
97++base_ver=`echo $E2FSPROGS_VERSION | sed -e 's/pre-//' -e 's/-.*//'`
98++base_rel=`echo $E2FSPROGS_VERSION | awk -F- '{ print $2 }'`
99+
100+ date_spec=${E2FSPROGS_YEAR}.${MONTH_NUM}.${E2FSPROGS_DAY}
101+
102+ case $E2FSPROGS_VERSION in
103+ *-WIP|pre-*)
104+- E2FSPROGS_PKGVER="$base_ver~WIP.$date_spec"
105++ E2FSPROGS_PKGVER="$base_ver"
106++ E2FSPROGS_PKGREL="WIP.$date_spec"
107+ ;;
108+ *)
109+ E2FSPROGS_PKGVER="$base_ver"
110++ E2FSPROGS_PKGREL="$base_rel"
111+ ;;
112+ esac
113+
114+ unset DATE MONTH YEAR base_ver pre_vers date_spec
115+ AC_MSG_RESULT([Generating configuration file for e2fsprogs version $E2FSPROGS_VERSION])
116++AC_MSG_RESULT([Package version ${E2FSPROGS_PKGVER} release ${E2FSPROGS_PKGREL}])
117+ AC_MSG_RESULT([Release date is ${E2FSPROGS_MONTH}, ${E2FSPROGS_YEAR}])
118+ AC_SUBST(E2FSPROGS_YEAR)
119+ AC_SUBST(E2FSPROGS_MONTH)
120+ AC_SUBST(E2FSPROGS_DAY)
121+ AC_SUBST(E2FSPROGS_VERSION)
122++AC_SUBST(E2FSPROGS_PKGREL)
123+ AC_SUBST(E2FSPROGS_PKGVER)
124+ AC_SUBST(E2FSPROGS_DATE)
125+ dnl
126+diff --git a/util/gen-tarball.in b/util/gen-tarball.in
127+index 997bd935f..650d3b593 100644
128+--- a/util/gen-tarball.in
129++++ b/util/gen-tarball.in
130+@@ -5,7 +5,8 @@
131+ srcdir=@srcdir@
132+ top_srcdir=@top_srcdir@
133+ top_dir=`cd $top_srcdir; pwd`
134+-base_ver=`echo @E2FSPROGS_VERSION@ | sed -e 's/-WIP//' -e 's/pre-//' -e 's/-PLUS//'`
135++base_ver=`echo @E2FSPROGS_PKGVER@`
136++base_rel=`echo @E2FSPROGS_PKGREL@`
137+ base_e2fsprogs=`basename $top_dir`
138+ exclude=/tmp/exclude$$
139+ GZIP=gzip
140+@@ -16,12 +17,12 @@ GZIP=gzip
141+ # using a non-standard directory name for WIP releases. dpkg-source
142+ # complains, but life goes on.
143+ #
144+-deb_pkgver=`echo @E2FSPROGS_PKGVER@ | sed -e 's/~/-/g'`
145++deb_pkgver="$base_ver${base_rel:+-$base_rel}"
146+
147+ case $1 in
148+ debian|ubuntu)
149+ SRCROOT="e2fsprogs-$deb_pkgver"
150+- tarout="e2fsprogs_@E2FSPROGS_PKGVER@.orig.tar.gz"
151++ tarout="e2fsprogs_$deb_pkgver.orig.tar.gz"
152+ ;;
153+ all|*)
154+ SRCROOT="e2fsprogs-$base_ver"
Binary files do not support preview
Binary files do not support preview
Binary files do not support preview
Binary files do not support preview