diff --git a/0001-Open-Unix.LargeFile-to-avoid-lstat-Value-too-large-f.patch b/0001-Open-Unix.LargeFile-to-avoid-lstat-Value-too-large-f.patch deleted file mode 100644 index c5d4ea3..0000000 --- a/0001-Open-Unix.LargeFile-to-avoid-lstat-Value-too-large-f.patch +++ /dev/null @@ -1,180 +0,0 @@ -From fd9f17c7eb63979af882533a0d234bfc8ca42de3 Mon Sep 17 00:00:00 2001 -From: "Richard W.M. Jones" -Date: Mon, 1 Feb 2021 10:07:02 +0000 -Subject: [PATCH] Open Unix.LargeFile to avoid "lstat: Value too large for - defined data type". - -On 32 bit platforms, because OCaml native ints are limited to 31 bits, -there is a trap in the normal Unix.stat, Unix.lstat functions where -any field in the stat struct may overflow. The result is random -errors like: - - supermin: error: lstat: Value too large for defined data type: /tmp/tmp.Ss9aYEBASm/d2/root - -You would probably only see this on armv7. - -The OCaml Unix module has a "LargeFile" submodule which fixes this by -using int64 for some (unfortunately not all) fields. - -For more information see the OCaml sources, file -otherlibs/unix/stat.c, all instances of "EOVERFLOW". ---- - src/format_chroot.ml | 1 + - src/format_ext2.ml | 1 + - src/format_ext2_initrd.ml | 1 + - src/format_ext2_kernel.ml | 5 +++-- - src/mode_build.ml | 1 + - src/package_handler.ml | 1 + - src/ph_dpkg.ml | 1 + - src/ph_pacman.ml | 1 + - src/ph_rpm.ml | 1 + - src/supermin.ml | 1 + - src/utils.ml | 1 + - 11 files changed, 13 insertions(+), 2 deletions(-) - -diff --git a/src/format_chroot.ml b/src/format_chroot.ml -index 346c24b..34606f7 100644 ---- a/src/format_chroot.ml -+++ b/src/format_chroot.ml -@@ -17,6 +17,7 @@ - *) - - open Unix -+open Unix.LargeFile - open Printf - - open Utils -diff --git a/src/format_ext2.ml b/src/format_ext2.ml -index 6348c29..e311ea6 100644 ---- a/src/format_ext2.ml -+++ b/src/format_ext2.ml -@@ -17,6 +17,7 @@ - *) - - open Unix -+open Unix.LargeFile - open Printf - - open Utils -diff --git a/src/format_ext2_initrd.ml b/src/format_ext2_initrd.ml -index 38977e6..6268442 100644 ---- a/src/format_ext2_initrd.ml -+++ b/src/format_ext2_initrd.ml -@@ -17,6 +17,7 @@ - *) - - open Unix -+open Unix.LargeFile - open Printf - - open Utils -diff --git a/src/format_ext2_kernel.ml b/src/format_ext2_kernel.ml -index 98bff3a..3be4413 100644 ---- a/src/format_ext2_kernel.ml -+++ b/src/format_ext2_kernel.ml -@@ -17,6 +17,7 @@ - *) - - open Unix -+open Unix.LargeFile - open Printf - - open Utils -@@ -95,8 +96,8 @@ and find_kernel_from_lib_modules debug = - let kernels = - filter_map ( - fun kernel_file -> -- let size = try (stat kernel_file).st_size with Unix_error _ -> 0 in -- if size < 10000 then None -+ let size = try (stat kernel_file).st_size with Unix_error _ -> 0L in -+ if size < 10000_L then None - else ( - let kernel_name = Filename.basename kernel_file in - let modpath = Filename.dirname kernel_file in -diff --git a/src/mode_build.ml b/src/mode_build.ml -index ed47366..ff7733e 100644 ---- a/src/mode_build.ml -+++ b/src/mode_build.ml -@@ -17,6 +17,7 @@ - *) - - open Unix -+open Unix.LargeFile - open Printf - - open Utils -diff --git a/src/package_handler.ml b/src/package_handler.ml -index 0409438..f0d6db3 100644 ---- a/src/package_handler.ml -+++ b/src/package_handler.ml -@@ -17,6 +17,7 @@ - *) - - open Unix -+open Unix.LargeFile - open Printf - - open Utils -diff --git a/src/ph_dpkg.ml b/src/ph_dpkg.ml -index 1e785de..6d4fce1 100644 ---- a/src/ph_dpkg.ml -+++ b/src/ph_dpkg.ml -@@ -17,6 +17,7 @@ - *) - - open Unix -+open Unix.LargeFile - open Printf - - open Utils -diff --git a/src/ph_pacman.ml b/src/ph_pacman.ml -index 67f7512..50500a5 100644 ---- a/src/ph_pacman.ml -+++ b/src/ph_pacman.ml -@@ -17,6 +17,7 @@ - *) - - open Unix -+open Unix.LargeFile - open Printf - - open Utils -diff --git a/src/ph_rpm.ml b/src/ph_rpm.ml -index 9745efd..183b5f3 100644 ---- a/src/ph_rpm.ml -+++ b/src/ph_rpm.ml -@@ -17,6 +17,7 @@ - *) - - open Unix -+open Unix.LargeFile - open Printf - - open Utils -diff --git a/src/supermin.ml b/src/supermin.ml -index e923111..9f838d9 100644 ---- a/src/supermin.ml -+++ b/src/supermin.ml -@@ -17,6 +17,7 @@ - *) - - open Unix -+open Unix.LargeFile - open Printf - - open Types -diff --git a/src/utils.ml b/src/utils.ml -index b25df88..f5990ef 100644 ---- a/src/utils.ml -+++ b/src/utils.ml -@@ -17,6 +17,7 @@ - *) - - open Unix -+open Unix.LargeFile - open Printf - - let (+^) = Int64.add --- -2.29.0.rc2 - diff --git a/0001-prepare-Use-stable-owner-group-and-mtime-in-base.tar.patch b/0001-prepare-Use-stable-owner-group-and-mtime-in-base.tar.patch new file mode 100644 index 0000000..6e70551 --- /dev/null +++ b/0001-prepare-Use-stable-owner-group-and-mtime-in-base.tar.patch @@ -0,0 +1,33 @@ +From 7a80a6eec799841b828ba7f617709562d8061435 Mon Sep 17 00:00:00 2001 +From: "Richard W.M. Jones" +Date: Mon, 21 Oct 2024 11:55:53 +0100 +Subject: [PATCH] prepare: Use stable owner, group and mtime in base.tar.gz + +Fixes: https://bugzilla.redhat.com/show_bug.cgi?id=2320025 +Signed-off-by: Richard W.M. Jones +--- + src/mode_prepare.ml | 7 +++++-- + 1 file changed, 5 insertions(+), 2 deletions(-) + +diff --git a/src/mode_prepare.ml b/src/mode_prepare.ml +index 70f9dd4..6af47b1 100644 +--- a/src/mode_prepare.ml ++++ b/src/mode_prepare.ml +@@ -166,9 +166,12 @@ let prepare debug (copy_kernel, format, host_cpu, + let base = outputdir // "base.tar.gz" in + if debug >= 1 then printf "supermin: writing %s\n%!" base; + let cmd = +- sprintf "tar%s -C %s -zcf %s -T %s" ++ let mtime = ++ try sprintf "--mtime=@%s" (quote (Sys.getenv "SOURCE_DATE_EPOCH")) ++ with Not_found -> "" in ++ sprintf "tar%s -C %s -z --owner=0 --group=0 %s -cf %s -T %s" + (if debug >=1 then " -v" else "") +- (quote dir) (quote base) (quote files_from) in ++ (quote dir) mtime (quote base) (quote files_from) in + run_command cmd; + ) + else ( +-- +2.46.0 + diff --git a/gating.yaml b/gating.yaml new file mode 100755 index 0000000..9234236 --- /dev/null +++ b/gating.yaml @@ -0,0 +1,6 @@ +--- !Policy +product_versions: + - rhel-9 +decision_context: osci_compose_gate +rules: + - !PassingTestCaseRule {test_case_name: xen-ci.brew-build.tier1.functional} diff --git a/sources b/sources index 5a6b3a7..cc31e54 100644 --- a/sources +++ b/sources @@ -1,2 +1,2 @@ -SHA512 (supermin-5.2.1.tar.gz) = f10ea404e0b27238ea3c25cb68f44e716aa180a45a420e63c1958768032f0710e8e3e7f1346cda780ea1f916f499499da2c02df4019d91ea3b3a69b75cfda545 -SHA512 (supermin-5.2.1.tar.gz.sig) = bde7907ea61e8bb3e59fac235c7bd8e22ef2e16831b80344c4574fdff873a5fc8b8972716143ee9d9bd745ac99b72f11aa4530a8d184a3f287b3212ef85c7a13 +SHA512 (supermin-5.3.5.tar.gz) = e410bafe06805880f0f701e78d743a6e22e9d25e57bd70a020d583dba6d710ba9917d7afc37be714d9bde410c7ff35f4198300b3af0858d761b0b3e07af58dc0 +SHA512 (supermin-5.3.5.tar.gz.sig) = 88f446c3855367dd8917a6eb44d926f8a09dac9913d9098757951ccb3300f9e3544689a45d661382ae24221f8558bbfc188976f4db288829c28379b87949ed7e diff --git a/supermin.spec b/supermin.spec index 7c394c9..ee09a0f 100644 --- a/supermin.spec +++ b/supermin.spec @@ -1,3 +1,6 @@ +# OCaml packages not built on i686 since OCaml 5 / Fedora 39. +ExcludeArch: %{ix86} + # On platforms and architectures that support it, the default is # ‘--with dietlibc’. # @@ -20,19 +23,29 @@ %endif %endif +%if 0%{?fedora} > 40 || 0%{?rhel} > 10 +%bcond_without dnf5 +%else +%bcond_with dnf5 +%endif + # Whether we should verify tarball signature with GPGv2. %global verify_tarball_signature 1 # The source directory. -%global source_directory 5.2-stable +%global source_directory 5.3-development Summary: Tool for creating supermin appliances Name: supermin -Version: 5.2.1 -Release: 1%{?dist} -License: GPLv2+ +Version: 5.3.5 +Release: 7%{?dist} +License: GPL-2.0-or-later ExclusiveArch: %{kernel_arches} +%if 0%{?rhel} +# No qemu-kvm on POWER (RHBZ#1946532). +ExcludeArch: %{power64} +%endif URL: http://people.redhat.com/~rjones/supermin/ Source0: http://download.libguestfs.org/supermin/%{source_directory}/%{name}-%{version}.tar.gz @@ -40,16 +53,24 @@ Source1: http://download.libguestfs.org/supermin/%{source_directory}/%{nam # Keyring used to verify tarball signature. Source2: libguestfs.keyring -# Upstream fix for stat field overflow on armv7. -Patch1: 0001-Open-Unix.LargeFile-to-avoid-lstat-Value-too-large-f.patch +# Use stable owner, group and mtime in base.tar.gz +# Upstream in > 5.3.5 +# https://bugzilla.redhat.com/show_bug.cgi?id=2320025 +Patch1: 0001-prepare-Use-stable-owner-group-and-mtime-in-base.tar.patch +BuildRequires: gcc BuildRequires: make +BuildRequires: autoconf, automake BuildRequires: /usr/bin/pod2man BuildRequires: /usr/bin/pod2html BuildRequires: rpm BuildRequires: rpm-devel +%if %{with dnf5} +BuildRequires: dnf5 +%else BuildRequires: dnf BuildRequires: dnf-plugins-core +%endif BuildRequires: /usr/sbin/mke2fs BuildRequires: e2fsprogs-devel BuildRequires: findutils @@ -67,6 +88,14 @@ BuildRequires: gnupg2 # tests to not require these packages. BuildRequires: augeas hivex kernel tar +%if 0%{?rhel} +%ifarch s390x +# On RHEL 9 s390x, kernel incorrectly pulls in kernel-zfcpdump-core +# https://bugzilla.redhat.com/show_bug.cgi?id=2027654 +BuildRequires: kernel-core +%endif +%endif + # For complicated reasons, this is required so that # /bin/kernel-install puts the kernel directly into /boot, instead of # into a /boot/ subdirectory (in Fedora >= 23). Read the @@ -75,19 +104,19 @@ BuildRequires: grubby # https://bugzilla.redhat.com/show_bug.cgi?id=1331012 BuildRequires: systemd-udev +# This only includes the dependencies needed at runtime, ie. supermin +# --build. For supermin --prepare, dependencies like dnf are placed +# in the -devel subpackage. Requires: rpm -Requires: dnf -Requires: dnf-plugins-core Requires: util-linux-ng Requires: cpio Requires: tar Requires: /usr/sbin/mke2fs # RHBZ#771310 Requires: e2fsprogs-libs >= 1.42 -Requires: findutils # For automatic RPM dependency generation. -# See: http://www.rpm.org/wiki/PackagerDocs/DependencyGenerator +# See: https://rpm-software-management.github.io/rpm/manual/dependency_generators.html Source3: supermin.attr Source4: supermin-find-requires @@ -98,18 +127,31 @@ appliances (similar to virtual machines), usually around 100KB in size, which get fully instantiated on-the-fly in a fraction of a second when you need to boot one of them. +Note that if you want to run 'supermin --prepare' you will need the +extra dependencies provided by %{name}-devel. + %package devel Summary: Development tools for %{name} Requires: %{name} = %{version}-%{release} Requires: rpm-build +# Dependencies needed for supermin --prepare +%if %{with dnf5} +Requires: dnf5 +%else +Requires: dnf +Requires: dnf-plugins-core +%endif +Requires: findutils + %description devel %{name}-devel contains development tools for %{name}. -It just contains tools for automatic RPM dependency generation -from supermin appliances. +It contains extra dependencies needed for 'supermin --prepare' to +work, as well as tools for automatic RPM dependency generation from +supermin appliances. %prep @@ -121,7 +163,12 @@ from supermin appliances. %build -%configure --disable-network-tests +autoreconf -fi +# Setting DNF is temporarily required for Rawhide. We should be able +# to remove this later. See: +# https://bugzilla.redhat.com/show_bug.cgi?id=2209412 +# https://fedoraproject.org/wiki/Changes/ReplaceDnfWithDnf5 +%configure %{?with_dnf5:DNF=%{_bindir}/dnf5} --disable-network-tests %if %{with dietlibc} make -C init CC="diet gcc" @@ -164,6 +211,136 @@ make check || { %changelog +* Mon Oct 13 2025 Richard W.M. Jones - 5.3.5-7 +- OCaml 5.4.0 rebuild + +* Fri Jul 25 2025 Fedora Release Engineering - 5.3.5-6 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild + +* Fri Jul 11 2025 Jerry James - 5.3.5-5 +- Rebuild to fix OCaml dependencies + +* Sun Jan 19 2025 Fedora Release Engineering - 5.3.5-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild + +* Thu Jan 9 2025 Jerry James - 5.3.5-3 +- OCaml 5.3.0 rebuild for Fedora 42 + +* Mon Oct 21 2024 Richard W.M. Jones - 5.3.5-2 +- Use stable owner, group and mtime in base.tar.gz (RHBZ#2320025) + +* Sat Aug 31 2024 Richard W.M. Jones - 5.3.5-1 +- New upstream version 5.3.5 + +* Sat Jul 20 2024 Fedora Release Engineering - 5.3.4-5 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild + +* Wed Jun 19 2024 Richard W.M. Jones - 5.3.4-4 +- OCaml 5.2.0 ppc64le fix + +* Wed May 29 2024 Richard W.M. Jones - 5.3.4-3 +- OCaml 5.2.0 for Fedora 41 + +* Sat Jan 27 2024 Fedora Release Engineering - 5.3.4-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild + +* Thu Jan 11 2024 Richard W.M. Jones - 5.3.4-1 +- New upstream version 5.3.4 +- Remove patches which are now all upstream. + +* Mon Dec 18 2023 Richard W.M. Jones - 5.3.3-19 +- OCaml 5.1.1 + s390x code gen fix for Fedora 40 + +* Tue Dec 12 2023 Richard W.M. Jones - 5.3.3-18 +- OCaml 5.1.1 rebuild for Fedora 40 + +* Fri Nov 10 2023 Richard W.M. Jones - 5.3.3-17 +- Fix RISC-V gzip compressed kernels + +* Thu Oct 05 2023 Richard W.M. Jones - 5.3.3-16 +- OCaml 5.1 rebuild for Fedora 40 + +* Wed Aug 02 2023 Yaakov Selkowitz - 5.3.3-15 +- Defer dnf5 until Fedora 41 + +* Sat Jul 22 2023 Fedora Release Engineering - 5.3.3-14 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild + +* Wed Jul 12 2023 Richard W.M. Jones - 5.3.3-13 +- OCaml 5.0 rebuild for Fedora 39 + +* Mon Jul 10 2023 Jerry James - 5.3.3-10 +- OCaml 5.0.0 rebuild + +* Mon Jun 12 2023 Richard W.M. Jones - 5.3.3-9 +- Fix --if-newer + +* Mon Jun 05 2023 Richard W.M. Jones - 5.3.3-8 +- Migrated to SPDX license + +* Wed May 31 2023 Richard W.M. Jones - 5.3.3-7 +- Further fix for dnf5 (RHBZ#2211386) + +* Tue May 30 2023 Richard W.M. Jones - 5.3.3-6 +- Add support for dnf5 (RHBZ#2209412) + +* Fri May 19 2023 Richard W.M. Jones - 5.3.3-5 +- Rebuild against librpm 10 + +* Tue Jan 24 2023 Richard W.M. Jones - 5.3.3-4 +- Rebuild OCaml packages for F38 + +* Sat Jan 21 2023 Richard W.M. Jones - 5.3.3-3 +- Deal with new RPM database location +- https://fedoraproject.org/wiki/Changes/RelocateRPMToUsr + +* Sat Jan 21 2023 Fedora Release Engineering - 5.3.3-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild + +* Tue Oct 18 2022 Richard W.M. Jones - 5.3.3-1 +- New upstream development version 5.3.3 + +* Wed Sep 07 2022 Richard W.M. Jones - 5.3.2-5 +- Include all upstream patches since 5.3.2 +- Add debugging and accurate exception backtraces (RHBZ#2124571). + +* Sat Jul 23 2022 Fedora Release Engineering - 5.3.2-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild + +* Sat Jun 18 2022 Richard W.M. Jones - 5.3.2-3 +- OCaml 4.14.0 rebuild + +* Sun May 15 2022 Richard W.M. Jones - 5.3.2-2 +- Move dependency on dnf to -devel subpackage (RHBZ#2086302) + +* Fri Mar 04 2022 Richard W.M. Jones - 5.3.2-1 +- New upstream development version 5.3.2 + +* Fri Feb 04 2022 Richard W.M. Jones - 5.3.1-5 +- OCaml 4.13.1 rebuild to remove package notes + +* Sat Jan 22 2022 Fedora Release Engineering - 5.3.1-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild + +* Wed Dec 01 2021 Richard W.M. Jones - 5.3.1-3 +- Further fix to ignore zfcpdump kernel on s390x + +* Tue Nov 30 2021 Richard W.M. Jones - 5.3.1-2 +- Ignore zfcpdump kernel on s390x + +* Thu Aug 26 2021 Richard W.M. Jones - 5.3.1-1 +- New upstream development version 5.3.1. + +* Fri Jul 23 2021 Fedora Release Engineering - 5.2.1-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild + +* Wed Jun 2 2021 Richard W.M. Jones - 5.2.1-3 +- Add gating tests (for RHEL 9) + +* Fri May 07 2021 Richard W.M. Jones - 5.2.1-2 +- Do not include the package on POWER on RHEL 9 + resolves: rhbz#1956934 + * Mon Feb 01 2021 Richard W.M. Jones - 5.2.1-1 - New upstream version 5.2.1.