Sync from SUSE:SLFO:Main supermin revision 20f659ba08ccf4d780c440085deb2a46

This commit is contained in:
Adrian Schröter 2024-10-18 15:47:07 +02:00
parent cc09c76089
commit 3df491ba1b
18 changed files with 80 additions and 342 deletions

View File

@ -1,47 +0,0 @@
Subject: src: Improved debugging of the supermin if-newer calculation
From: Richard W.M. Jones rjones@redhat.com Mon Jun 12 12:51:56 2023 +0100
Date: Mon Jun 12 12:57:32 2023 +0100:
Git: 8dd37da1b5979842b0db44b44655eeaf621f7ac9
Also I expanded the code to make it easier to read. There is no
change to the calculation intended.
--- a/src/supermin.ml
+++ b/src/supermin.ml
@@ -239,10 +239,33 @@ appliance automatically.
try
let outputs = Mode_build.get_outputs args inputs in
let outputs = List.map ((//) outputdir) outputs in
- let odates = List.map (fun d -> (lstat d).st_mtime) (outputdir :: outputs) in
- let idates = List.map (fun d -> (lstat d).st_mtime) inputs in
+ let outputs = outputdir :: outputs in
+ let odates = List.map (fun f -> (lstat f).st_mtime) outputs in
+ if debug >= 2 then (
+ List.iter (
+ fun f ->
+ printf "supermin: if-newer: output %s => %.2f\n"
+ f (lstat f).st_mtime
+ ) outputs;
+ );
+ let idates = List.map (fun f -> (lstat f).st_mtime) inputs in
+ if debug >= 2 then (
+ List.iter (
+ fun f ->
+ printf "supermin: if-newer: input %s => %.2f\n"
+ f (lstat f).st_mtime
+ ) inputs;
+ );
let pdate = (get_package_handler ()).ph_get_package_database_mtime () in
- if List.for_all (fun idate -> List.for_all (fun odate -> idate < odate) odates) (pdate :: idates) then (
+ if debug >= 2 then (
+ printf "supermin: if-newer: package database date: %.2f\n" pdate;
+ );
+ let older =
+ List.for_all (
+ fun idate ->
+ List.for_all (fun odate -> idate < odate) odates
+ ) (pdate :: idates) in
+ if older then (
if debug >= 1 then
printf "supermin: if-newer: output does not need rebuilding\n%!";
exit 0

View File

@ -1,33 +0,0 @@
Subject: src: Fix --if-newer --copy-kernel
From: Richard W.M. Jones rjones@redhat.com Mon Jun 12 13:02:37 2023 +0100
Date: Mon Jun 12 13:07:51 2023 +0100:
Git: 8c38641042e274a713a18daf7fc85584ca0fc9bb
We previously copied the kernel into the appliance using 'cp -p' which
preserves the datestamps of the installed kernel. This can confuse
the --if-newer calculation, if for example the package database is
newer than the date on the installed kernel (which quite often is the
case). This makes it think that the appliance is always older than
the package database, thus forcing a rebuild.
We can fix this using 'cp' instead of 'cp -p'. We don't need the
permissions and datestamps on the copied kernel to be preserved anyway
(in fact, it could cause problems if the permissions are restrictive).
Fixes: commit 30de2cb603cdde33524a66d5466f6a9b986ce8a6
diff --git a/src/format_ext2_kernel.ml b/src/format_ext2_kernel.ml
index c592703..6d2e699 100644
--- a/src/format_ext2_kernel.ml
+++ b/src/format_ext2_kernel.ml
@@ -311,6 +311,9 @@ and copy_or_symlink_file copy_kernel src dest =
if not copy_kernel then
symlink src dest
else (
- let cmd = sprintf "cp -p %s %s" (quote src) (quote dest) in
+ (* NB: Do not use -p here, we want the kernel to appear newer
+ * so that --if-newer works.
+ *)
+ let cmd = sprintf "cp %s %s" (quote src) (quote dest) in
run_command cmd
)

View File

@ -1,18 +0,0 @@
Subject: src/format_ext2_kernel.ml: Fix kernel filtering for aarch64 architecture
From: Simon Fischer 1522981+Fischer-Simon@users.noreply.github.com Wed Jul 12 17:10:53 2023 +0200
Date: Wed Jul 12 17:10:53 2023 +0200:
Git: 4b3922feb65150f3423d0877038c5ba6e16d910c
Add appropriate globs for arm based kernels. The file names end in -arm64 but the architecture is named aarch64.
diff --git a/src/format_ext2_kernel.ml b/src/format_ext2_kernel.ml
index 6d2e699..4589552 100644
--- a/src/format_ext2_kernel.ml
+++ b/src/format_ext2_kernel.ml
@@ -187,6 +187,7 @@ and patt_of_cpu host_cpu =
| "amd64" | "x86_64" -> ["amd64"; "x86_64"]
| "parisc" | "parisc64" -> ["hppa"; "hppa64"]
| "ppc64el" -> ["powerpc64le"]
+ | "aarch64" -> ["aarch64"; "arm64"]
| _ when host_cpu.[0] = 'i' && host_cpu.[2] = '8' && host_cpu.[3] = '6' -> ["?86"]
| _ when String.length host_cpu >= 5 && String.sub host_cpu 0 5 = "armv7" -> ["armmp"]
| _ -> [host_cpu]

View File

@ -1,27 +0,0 @@
Subject: ocamlc: Use -output-complete-exe instead of -custom
From: Richard W.M. Jones rjones@redhat.com Wed Jul 12 22:37:58 2023 +0100
Date: Wed Jul 12 22:40:27 2023 +0100:
Git: dc80dbbef60d5d81a7d4321683a8c7305dc04972
This prevents bytecode executables from being broken by strip and
similar tools. Note this is incompatible with OCaml < 4.10 (so breaks
RHEL 8). However this only affects bytecode builds which we prefer
not to use in RHEL. I left the old option in the Makefile so that it
could be uncommented by someone using older OCaml + bytecode. We need
this for OCaml 5.0 since that drops native backends (temporarily) for
riscv64, s390x and ppc64le.
diff --git a/src/Makefile.am b/src/Makefile.am
index 5b07e5d..5a1c671 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -132,7 +132,8 @@ OCAMLFLAGS = -g -warn-error +C+D+E+F+L+M+P+S+U+V+X+Y+Z-3
if !HAVE_OCAMLOPT
OBJECTS = $(BOBJECTS)
BEST = c
-OCAMLFLAGS += -custom
+#OCAMLFLAGS += -custom # for OCaml < 4.10
+OCAMLFLAGS += -output-complete-exe
else
OBJECTS = $(XOBJECTS)
BEST = opt

View File

@ -1,36 +0,0 @@
Subject: ocamlc: Only supply -output-complete-exe to final link
From: Richard W.M. Jones rjones@redhat.com Wed Jul 12 22:51:43 2023 +0100
Date: Wed Jul 12 22:51:43 2023 +0100:
Git: 59a8ffc40db94a38879d9c923520e0bd70ffa271
Add a separate variable to store link flags, and use that to supply
-output-complete-exe. Apparently ocamlc ignores -custom in the wrong
place.
Fixes: dc80dbbef60d5d81a7d4321683a8c7305dc04972
diff --git a/src/Makefile.am b/src/Makefile.am
index 5a1c671..1268aa5 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -132,8 +132,8 @@ OCAMLFLAGS = -g -warn-error +C+D+E+F+L+M+P+S+U+V+X+Y+Z-3
if !HAVE_OCAMLOPT
OBJECTS = $(BOBJECTS)
BEST = c
-#OCAMLFLAGS += -custom # for OCaml < 4.10
-OCAMLFLAGS += -output-complete-exe
+#OCAMLLINKFLAGS = -custom # for OCaml < 4.10
+OCAMLLINKFLAGS = -output-complete-exe
else
OBJECTS = $(XOBJECTS)
BEST = opt
@@ -143,7 +143,8 @@ supermin_DEPENDENCIES = $(OBJECTS)
supermin_LINK = \
./supermin-link.sh \
- $(OCAMLFIND) $(BEST) $(OCAMLFLAGS) $(OCAMLPACKAGES) \
+ $(OCAMLFIND) $(BEST) $(OCAMLLINKFLAGS) $(OCAMLFLAGS) \
+ $(OCAMLPACKAGES) \
$(OBJECTS) -o $@
.mli.cmi:

View File

@ -1,29 +0,0 @@
Subject: src/format_ext2_kernel.ml: Rename function file -> kernel
From: Richard W.M. Jones rjones@redhat.com Fri Nov 10 08:55:25 2023 +0000
Date: Fri Nov 10 08:55:25 2023 +0000:
Git: 9a0d078dc35fde7a715666bce6c765ed5fe5e916
No change, just rename the function.
diff --git a/src/format_ext2_kernel.ml b/src/format_ext2_kernel.ml
index 4589552..36514c6 100644
--- a/src/format_ext2_kernel.ml
+++ b/src/format_ext2_kernel.ml
@@ -54,7 +54,7 @@ let rec build_kernel debug host_cpu copy_kernel kernel =
printf "supermin: kernel: modpath %s\n%!" modpath;
);
- copy_or_symlink_file copy_kernel kernel_file kernel;
+ copy_or_symlink_kernel copy_kernel kernel_file kernel;
(kernel_version, modpath)
@@ -308,7 +308,7 @@ and read_string chan offset len =
really_input chan buf 0 len;
Bytes.to_string buf
-and copy_or_symlink_file copy_kernel src dest =
+and copy_or_symlink_kernel copy_kernel src dest =
if not copy_kernel then
symlink src dest
else (

View File

@ -1,66 +0,0 @@
Subject: src: Uncompress kernel on RISC-V
From: Richard W.M. Jones rjones@redhat.com Fri Nov 10 10:20:49 2023 +0000
Date: Fri Nov 10 10:28:21 2023 +0000:
Git: 5230e2c3cd07e82bd6431e871e239f7056bf25ad
diff --git a/src/format_ext2_kernel.ml b/src/format_ext2_kernel.ml
index 36514c6..09a3f21 100644
--- a/src/format_ext2_kernel.ml
+++ b/src/format_ext2_kernel.ml
@@ -25,6 +25,20 @@ open Ext2fs
open Fnmatch
open Glob
+(* Similar but not the same as get_file_type in mode_build. There
+ * is a case for deriving a common base utility. XXX
+ *)
+type compression_type = GZip | Uncompressed
+let get_compression_type file =
+ let chan = open_in file in
+ let buf = Bytes.create 512 in
+ let len = input chan buf 0 (Bytes.length buf) in
+ close_in chan;
+ let buf = Bytes.to_string buf in
+ if len >= 3 && buf.[0] = '\x1f' && buf.[1] = '\x8b' && buf.[2] = '\x08'
+ then GZip
+ else Uncompressed (* or other unknown compression type *)
+
let rec build_kernel debug host_cpu copy_kernel kernel =
(* Locate the kernel.
* SUPERMIN_* environment variables override everything. If those
@@ -54,7 +68,19 @@ let rec build_kernel debug host_cpu copy_kernel kernel =
printf "supermin: kernel: modpath %s\n%!" modpath;
);
- copy_or_symlink_kernel copy_kernel kernel_file kernel;
+ (* RISC-V relies on the bootloader or firmware to uncompress the
+ * kernel and doesn't have a concept of self-extracting kernels.
+ * On Arm which is similar, qemu -kernel will automatically uncompress
+ * the kernel, but qemu-system-riscv won't do that and the code is a
+ * big mess so I don't fancy fixing it. So we have to detect that
+ * case here and uncompress the kernel.
+ *)
+ let kernel_compression_type = get_compression_type kernel_file in
+ if string_prefix "riscv" host_cpu && kernel_compression_type <> Uncompressed
+ then
+ copy_and_uncompress_kernel kernel_compression_type kernel_file kernel
+ else
+ copy_or_symlink_kernel copy_kernel kernel_file kernel;
(kernel_version, modpath)
@@ -308,6 +334,13 @@ and read_string chan offset len =
really_input chan buf 0 len;
Bytes.to_string buf
+and copy_and_uncompress_kernel compression_type src dest =
+ let cmd =
+ match compression_type with
+ | GZip -> sprintf "zcat %s > %s" (quote src) (quote dest)
+ | Uncompressed -> sprintf "cp %s %s" (quote src) (quote dest) in
+ run_command cmd
+
and copy_or_symlink_kernel copy_kernel src dest =
if not copy_kernel then
symlink src dest

View File

@ -1,21 +0,0 @@
Subject: init: Fix link to renamed kernel documentation
From: Richard W.M. Jones rjones@redhat.com Mon Nov 13 10:13:26 2023 +0000
Date: Mon Nov 13 10:13:26 2023 +0000:
Git: c8e79b7d62730f850f9e5d46c3747f414198b902
diff --git a/init/init.c b/init/init.c
index bc28c69..4cc72f7 100644
--- a/init/init.c
+++ b/init/init.c
@@ -279,8 +279,8 @@ main ()
fprintf (stderr, "supermin: deleting initramfs files\n");
delete_initramfs_files ();
- /* Note that pivot_root won't work. See the note in
- * Documentation/filesystems/ramfs-rootfs-initramfs.txt
+ /* Note that pivot_root won't work. See the note in Linux
+ * Documentation/filesystems/ramfs-rootfs-initramfs.rst
*/
if (!quiet)
fprintf (stderr, "supermin: chroot\n");

View File

@ -1,19 +0,0 @@
Subject: New mailing list email address
From: Richard W.M. Jones rjones@redhat.com Thu Nov 16 10:43:11 2023 +0000
Date: Thu Nov 16 10:43:11 2023 +0000:
Git: 7e4f0931e1ee47c7fbe7e1a9917fff68a18d9235
diff --git a/README b/README
index a74993b..fe298b4 100644
--- a/README
+++ b/README
@@ -143,7 +143,7 @@ See the examples/ subdirectory.
Feedback and bugs
-----------------
-Send feedback to libguestfs@redhat.com. You can file bugs in
+Send feedback to guestfs@lists.libguestfs.org. You can file bugs in
https://bugzilla.redhat.com/ (under "Fedora", "supermin")
Alternate libc

View File

@ -0,0 +1,12 @@
References: bsc#1228373
--- a/src/ph_rpm.ml
+++ b/src/ph_rpm.ml
@@ -239,6 +239,7 @@ let rpm_package_name pkg =
rpm.name
let rpmdb_locations = [
+ "/usr/lib/sysimage/rpm/Packages.db";
"/usr/lib/sysimage/rpm/rpmdb.sqlite";
"/var/lib/rpm/rpmdb.sqlite";
"/var/lib/rpm/Packages"

View File

@ -1,11 +0,0 @@
--- supermin-5.2.1/tests/test-if-newer-ext2.sh.orig 2021-08-25 10:58:41.452745319 -0600
+++ supermin-5.2.1/tests/test-if-newer-ext2.sh 2021-08-25 10:59:35.324746603 -0600
@@ -43,7 +43,7 @@ run_supermin
# No changes, hence nothing to do.
run_supermin > test-if-newer-ext2.out
cat test-if-newer-ext2.out
-grep 'if-newer: output does not need rebuilding' test-if-newer-ext2.out
+#grep 'if-newer: output does not need rebuilding' test-if-newer-ext2.out
rm test-if-newer-ext2.out
# Try removing any of the files, and check that supermin will detect that.

BIN
supermin-5.3.3.tar.gz (Stored with Git LFS)

Binary file not shown.

View File

@ -1,17 +0,0 @@
-----BEGIN PGP SIGNATURE-----
iQJFBAABCAAvFiEE93dPsa0HSn6Mh2fqkXOPc+G3aKAFAmNOrGARHHJpY2hAYW5u
ZXhpYS5vcmcACgkQkXOPc+G3aKAgHA/9EFGRdvIryS5UUcXz9yvaYs5WvMtuPn9s
Dcb7lVwLsMkVpcMulOyN1sPTI4WkgqKeXSvSJXfby/Loon8p8aTlSDZkEhivMpDG
TliKX5P8kySC+9KXSKfzHyVwKd6j/pmLtw3QvpgwuZPYdkIHzVluWKd1ql6nbLh/
LsSg2YNyJi48i/W64xEGN0ENviYMmHoNnE56nFEApwHfG26j5bHvLZJqjFYS5ClF
CJtoaAOEEAySbJmbKTxCByk44CxjfpUHHwupJ+QKoXIJmYFVAQO2jrW3zvR7zRyI
rA1Woaqmft3PDszH9565AD34FFmXQ70+GOanO7tH1uk0wgK+lgpZpb0UMzcNBSPh
6cU4wY4nvxww39HdGLQ95au54Lp4I90S8MGrtO7XD0N2fA6QlbcSMnpM3LM4CZDi
g7SUeqWy6PRoqd6vEvO9MgAOIg/YbcnRCFZsUe2na04FvKI0jWFwor1Xm0RJIQrf
ufpLjKG1hpjbQa0Hu0RISVKBMMnLfCg3Z5xMWq0mVysdGrJzWrTqYT5Os8KOU+04
0Ni1DWw+o3CNacTVmOroRvsUYPzQiivutNgPovRaVIL4u6OwWw+tUtxRCpZlxzc/
m00IGHLgKwdbHTShRqzp6P2QcuXS7SGv9EqNL7yJL3kvc5INp4XJ3QHDdpO2hz5S
10cJfC6ph1o=
=FSUE
-----END PGP SIGNATURE-----

BIN
supermin-5.3.5.tar.gz (Stored with Git LFS) Normal file

Binary file not shown.

17
supermin-5.3.5.tar.gz.sig Normal file
View File

@ -0,0 +1,17 @@
-----BEGIN PGP SIGNATURE-----
iQJFBAABCAAvFiEE93dPsa0HSn6Mh2fqkXOPc+G3aKAFAmbS4agRHHJpY2hAYW5u
ZXhpYS5vcmcACgkQkXOPc+G3aKBlNBAAiPzTds3pM4BGDyCgbu8yEkngUO6ZPYES
SJHmsszeFZkWGaZ7ZBOuHYvr+86/A6KclbNWXcFRvJWLo3eySCvbqipVrUTs+rX5
qs95h5Az9new907v6z4kVG9oPD1nni2QKNXotAoFmpmlCHuZr1fmCeWR/Y8RNTAm
8+eMMBFw4XJfwWw84MFR26kwBGHNsmWx76oHOuALl3u3uG8HVDO0YeSWFQKHmcMP
nv9wBhrVVmvK//qZblf7+IKs/mjDMNHxqfHu7T28p/J6T1zXN7b1vL84hl5wrN4O
g/Uv2cm3TYlg6tT4xgIE2JAkiHDNXl7tbD2uWnhL/C9DLEIHkcNse3BUzdpQnrO2
JlGEql0dhoXeYTAJwAxg0vr/qREcjYXr9m2x4eSfod3HTwwKjltIWQ+iblTJWwgd
SYkUh85GiaabwAH6OUKBIyXmJsnvNeSb5ZlZQ6Q4WlPQsva9Yi1JjxyMIl16NVIC
L/5+QH7R0T6LXayLmFzKLADPV/h707ULD2uf538G7k5Zt9k2CoNdBBhN0Ngqq3TX
jfmvRF57Tha8bn4j0Y4bcX1/0ladicY/0zAvQ5W9lYDFypoEp2jH6Ii0ZFCpuyZK
ERXQDZmhA6txzt957I9t44+M6w0uLpPIQZDwlWeabhmdMzLjf6DJ24hzh5MZRXXz
s2eS9Ln+ijc=
=ELxQ
-----END PGP SIGNATURE-----

View File

@ -1,3 +1,44 @@
-------------------------------------------------------------------
Wed Sep 4 15:06:41 MDT 2024 - carnold@suse.com
- Update to version 5.3.5 (jsc#PED-8910)
* Fix qemu-kvm example command
-------------------------------------------------------------------
Mon Jul 29 10:16:35 MDT 2024 - carnold@suse.com
- bsc#1228373 - supermin regression in Tumbleweed / Factory causes
virt-inspector to fail
add-rpm-database-location.patch
- Drop disable-test-if-newer-ext2.patch
-------------------------------------------------------------------
Wed Jul 10 15:34:55 MDT 2024 - carnold@suse.com
- Update to version 5.3.4 (jsc#PED-8910)
* Add support for OCaml 5
* Add kylinsecos support
* rpm: Detect dnf5 and omit missing options
* ocamlc: Use -output-complete-exe instead of -custom
* Fix kernel filtering for aarch64 architecture
* Uncompress kernel on RISC-V
- Drop patches contained in new tarball
001-Improved-debugging-of-the-supermin-if-newer-calculation.patch
002-Fix-if-newer-copy-kernel.patch
003-Fix-kernel-filtering-for-aarch64-architecture.patch
004-Use-output-complete-exe-instead-of-custom.patch
005-Only-supply-output-complete-exe-to-final-link.patch
006-Rename-function-file-kernel.patch
007-Uncompress-kernel-on-RISC-V.patch
008-Fix-link-to-renamed-kernel-documentation.patch
009-New-mailing-list-email-address.patch
-------------------------------------------------------------------
Mon May 6 15:27:43 MDT 2024 - carnold@suse.com
- Supermin uses mke2fs. Add Requires e2fsprogs for this command.
supermin.spec
-------------------------------------------------------------------
Thu Jan 4 11:07:03 MST 2024 - carnold@suse.com

View File

@ -17,28 +17,19 @@
Name: supermin
Version: 5.3.3
Version: 5.3.5
Release: 0
Summary: Bootstrapping tool for creating supermin appliances
License: GPL-3.0-or-later
Group: System/Filesystems
URL: https://libguestfs.org/
Source0: https://download.libguestfs.org/supermin/5.3-development/supermin-5.3.3.tar.gz
Source1: https://download.libguestfs.org/supermin/5.3-development/supermin-5.3.3.tar.gz.sig
Source0: https://download.libguestfs.org/supermin/5.3-development/supermin-5.3.5.tar.gz
Source1: https://download.libguestfs.org/supermin/5.3-development/supermin-5.3.5.tar.gz.sig
Source9: supermin.keyring
Patch1: 001-Improved-debugging-of-the-supermin-if-newer-calculation.patch
Patch2: 002-Fix-if-newer-copy-kernel.patch
Patch3: 003-Fix-kernel-filtering-for-aarch64-architecture.patch
Patch4: 004-Use-output-complete-exe-instead-of-custom.patch
Patch5: 005-Only-supply-output-complete-exe-to-final-link.patch
Patch6: 006-Rename-function-file-kernel.patch
Patch7: 007-Uncompress-kernel-on-RISC-V.patch
Patch8: 008-Fix-link-to-renamed-kernel-documentation.patch
Patch9: 009-New-mailing-list-email-address.patch
Patch30: suse_release.patch
Patch31: supermin-kernel_version_compressed.patch
Patch32: disable-test-if-newer-ext2.patch
Patch33: detect-aarch64-kernel.patch
Patch32: detect-aarch64-kernel.patch
Patch33: add-rpm-database-location.patch
BuildRequires: augeas
BuildRequires: autoconf
BuildRequires: automake
@ -62,6 +53,7 @@ BuildRequires: pkgconfig(com_err)
BuildRequires: pkgconfig(ext2fs)
BuildRequires: pkgconfig(rpm)
Requires: distribution-release
Requires: e2fsprogs
%if 0%{?suse_version} < 1599
Requires: sysconfig-netconfig
%endif

View File

@ -53,7 +53,7 @@
+ be read or the ID_LIKE field is not defined. *)
--- a/src/ph_rpm.ml
+++ b/src/ph_rpm.ml
@@ -45,6 +45,7 @@ let opensuse_detect () =
@@ -46,6 +46,7 @@ let opensuse_detect () =
Config.zypper <> "no" &&
(List.mem (Os_release.get_id ()) [ "sled"; "sles" ] ||
string_prefix "opensuse" (Os_release.get_id ()) ||