Compare commits

..

1 commit

Author SHA1 Message Date
Richard W.M. Jones
481de7c606 No %{kernel_arches} on F32, so revert that part of the previous merge. 2021-02-01 10:32:04 +00:00
5 changed files with 196 additions and 232 deletions

View file

@ -0,0 +1,180 @@
From fd9f17c7eb63979af882533a0d234bfc8ca42de3 Mon Sep 17 00:00:00 2001
From: "Richard W.M. Jones" <rjones@redhat.com>
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

View file

@ -1,33 +0,0 @@
From 7a80a6eec799841b828ba7f617709562d8061435 Mon Sep 17 00:00:00 2001
From: "Richard W.M. Jones" <rjones@redhat.com>
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 <rjones@redhat.com>
---
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

View file

@ -1,6 +0,0 @@
--- !Policy
product_versions:
- rhel-9
decision_context: osci_compose_gate
rules:
- !PassingTestCaseRule {test_case_name: xen-ci.brew-build.tier1.functional}

View file

@ -1,2 +1,2 @@
SHA512 (supermin-5.3.5.tar.gz) = e410bafe06805880f0f701e78d743a6e22e9d25e57bd70a020d583dba6d710ba9917d7afc37be714d9bde410c7ff35f4198300b3af0858d761b0b3e07af58dc0
SHA512 (supermin-5.3.5.tar.gz.sig) = 88f446c3855367dd8917a6eb44d926f8a09dac9913d9098757951ccb3300f9e3544689a45d661382ae24221f8558bbfc188976f4db288829c28379b87949ed7e
SHA512 (supermin-5.2.1.tar.gz) = f10ea404e0b27238ea3c25cb68f44e716aa180a45a420e63c1958768032f0710e8e3e7f1346cda780ea1f916f499499da2c02df4019d91ea3b3a69b75cfda545
SHA512 (supermin-5.2.1.tar.gz.sig) = bde7907ea61e8bb3e59fac235c7bd8e22ef2e16831b80344c4574fdff873a5fc8b8972716143ee9d9bd745ac99b72f11aa4530a8d184a3f287b3212ef85c7a13

View file

@ -1,6 +1,3 @@
# 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.
#
@ -23,29 +20,19 @@ ExcludeArch: %{ix86}
%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.3-development
%global source_directory 5.2-stable
Summary: Tool for creating supermin appliances
Name: supermin
Version: 5.3.5
Release: 7%{?dist}
License: GPL-2.0-or-later
Version: 5.2.1
Release: 1%{?dist}
License: GPLv2+
ExclusiveArch: %{kernel_arches}
%if 0%{?rhel}
# No qemu-kvm on POWER (RHBZ#1946532).
ExcludeArch: %{power64}
%endif
ExcludeArch: %{ix86}
URL: http://people.redhat.com/~rjones/supermin/
Source0: http://download.libguestfs.org/supermin/%{source_directory}/%{name}-%{version}.tar.gz
@ -53,24 +40,16 @@ Source1: http://download.libguestfs.org/supermin/%{source_directory}/%{nam
# Keyring used to verify tarball signature.
Source2: libguestfs.keyring
# 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
# Upstream fix for stat field overflow on armv7.
Patch1: 0001-Open-Unix.LargeFile-to-avoid-lstat-Value-too-large-f.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
@ -88,14 +67,6 @@ 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/<machine-id> subdirectory (in Fedora >= 23). Read the
@ -104,19 +75,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: https://rpm-software-management.github.io/rpm/manual/dependency_generators.html
# See: http://www.rpm.org/wiki/PackagerDocs/DependencyGenerator
Source3: supermin.attr
Source4: supermin-find-requires
@ -127,31 +98,18 @@ 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 contains extra dependencies needed for 'supermin --prepare' to
work, as well as tools for automatic RPM dependency generation from
supermin appliances.
It just contains tools for automatic RPM dependency generation
from supermin appliances.
%prep
@ -163,12 +121,7 @@ supermin appliances.
%build
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
%configure --disable-network-tests
%if %{with dietlibc}
make -C init CC="diet gcc"
@ -211,136 +164,6 @@ make check || {
%changelog
* Mon Oct 13 2025 Richard W.M. Jones <rjones@redhat.com> - 5.3.5-7
- OCaml 5.4.0 rebuild
* Fri Jul 25 2025 Fedora Release Engineering <releng@fedoraproject.org> - 5.3.5-6
- Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild
* Fri Jul 11 2025 Jerry James <loganjerry@gmail.com> - 5.3.5-5
- Rebuild to fix OCaml dependencies
* Sun Jan 19 2025 Fedora Release Engineering <releng@fedoraproject.org> - 5.3.5-4
- Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild
* Thu Jan 9 2025 Jerry James <loganjerry@gmail.com> - 5.3.5-3
- OCaml 5.3.0 rebuild for Fedora 42
* Mon Oct 21 2024 Richard W.M. Jones <rjones@redhat.com> - 5.3.5-2
- Use stable owner, group and mtime in base.tar.gz (RHBZ#2320025)
* Sat Aug 31 2024 Richard W.M. Jones <rjones@redhat.com> - 5.3.5-1
- New upstream version 5.3.5
* Sat Jul 20 2024 Fedora Release Engineering <releng@fedoraproject.org> - 5.3.4-5
- Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild
* Wed Jun 19 2024 Richard W.M. Jones <rjones@redhat.com> - 5.3.4-4
- OCaml 5.2.0 ppc64le fix
* Wed May 29 2024 Richard W.M. Jones <rjones@redhat.com> - 5.3.4-3
- OCaml 5.2.0 for Fedora 41
* Sat Jan 27 2024 Fedora Release Engineering <releng@fedoraproject.org> - 5.3.4-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild
* Thu Jan 11 2024 Richard W.M. Jones <rjones@redhat.com> - 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 <rjones@redhat.com> - 5.3.3-19
- OCaml 5.1.1 + s390x code gen fix for Fedora 40
* Tue Dec 12 2023 Richard W.M. Jones <rjones@redhat.com> - 5.3.3-18
- OCaml 5.1.1 rebuild for Fedora 40
* Fri Nov 10 2023 Richard W.M. Jones <rjones@redhat.com> - 5.3.3-17
- Fix RISC-V gzip compressed kernels
* Thu Oct 05 2023 Richard W.M. Jones <rjones@redhat.com> - 5.3.3-16
- OCaml 5.1 rebuild for Fedora 40
* Wed Aug 02 2023 Yaakov Selkowitz <yselkowi@redhat.com> - 5.3.3-15
- Defer dnf5 until Fedora 41
* Sat Jul 22 2023 Fedora Release Engineering <releng@fedoraproject.org> - 5.3.3-14
- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild
* Wed Jul 12 2023 Richard W.M. Jones <rjones@redhat.com> - 5.3.3-13
- OCaml 5.0 rebuild for Fedora 39
* Mon Jul 10 2023 Jerry James <loganjerry@gmail.com> - 5.3.3-10
- OCaml 5.0.0 rebuild
* Mon Jun 12 2023 Richard W.M. Jones <rjones@redhat.com> - 5.3.3-9
- Fix --if-newer
* Mon Jun 05 2023 Richard W.M. Jones <rjones@redhat.com> - 5.3.3-8
- Migrated to SPDX license
* Wed May 31 2023 Richard W.M. Jones <rjones@redhat.com> - 5.3.3-7
- Further fix for dnf5 (RHBZ#2211386)
* Tue May 30 2023 Richard W.M. Jones <rjones@redhat.com> - 5.3.3-6
- Add support for dnf5 (RHBZ#2209412)
* Fri May 19 2023 Richard W.M. Jones <rjones@redhat.com> - 5.3.3-5
- Rebuild against librpm 10
* Tue Jan 24 2023 Richard W.M. Jones <rjones@redhat.com> - 5.3.3-4
- Rebuild OCaml packages for F38
* Sat Jan 21 2023 Richard W.M. Jones <rjones@redhat.com> - 5.3.3-3
- Deal with new RPM database location
- https://fedoraproject.org/wiki/Changes/RelocateRPMToUsr
* Sat Jan 21 2023 Fedora Release Engineering <releng@fedoraproject.org> - 5.3.3-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild
* Tue Oct 18 2022 Richard W.M. Jones <rjones@redhat.com> - 5.3.3-1
- New upstream development version 5.3.3
* Wed Sep 07 2022 Richard W.M. Jones <rjones@redhat.com> - 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 <releng@fedoraproject.org> - 5.3.2-4
- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild
* Sat Jun 18 2022 Richard W.M. Jones <rjones@redhat.com> - 5.3.2-3
- OCaml 4.14.0 rebuild
* Sun May 15 2022 Richard W.M. Jones <rjones@redhat.com> - 5.3.2-2
- Move dependency on dnf to -devel subpackage (RHBZ#2086302)
* Fri Mar 04 2022 Richard W.M. Jones <rjones@redhat.com> - 5.3.2-1
- New upstream development version 5.3.2
* Fri Feb 04 2022 Richard W.M. Jones <rjones@redhat.com> - 5.3.1-5
- OCaml 4.13.1 rebuild to remove package notes
* Sat Jan 22 2022 Fedora Release Engineering <releng@fedoraproject.org> - 5.3.1-4
- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild
* Wed Dec 01 2021 Richard W.M. Jones <rjones@redhat.com> - 5.3.1-3
- Further fix to ignore zfcpdump kernel on s390x
* Tue Nov 30 2021 Richard W.M. Jones <rjones@redhat.com> - 5.3.1-2
- Ignore zfcpdump kernel on s390x
* Thu Aug 26 2021 Richard W.M. Jones <rjones@redhat.com> - 5.3.1-1
- New upstream development version 5.3.1.
* Fri Jul 23 2021 Fedora Release Engineering <releng@fedoraproject.org> - 5.2.1-4
- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild
* Wed Jun 2 2021 Richard W.M. Jones <rjones@redhat.com> - 5.2.1-3
- Add gating tests (for RHEL 9)
* Fri May 07 2021 Richard W.M. Jones <rjones@redhat.com> - 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 <rjones@redhat.com> - 5.2.1-1
- New upstream version 5.2.1.