commit 2872fd3cd0062d1b65d1215645a034508e13fa68 Author: MSVSphere Packaging Team Date: Wed Apr 3 18:32:52 2024 +0300 import supermin-5.2.1-2.module+el8.9.0+18724+20190c23 diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..fd8e426 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +SOURCES/libguestfs.keyring +SOURCES/supermin-5.2.1.tar.gz diff --git a/.supermin.metadata b/.supermin.metadata new file mode 100644 index 0000000..9b30f0a --- /dev/null +++ b/.supermin.metadata @@ -0,0 +1,2 @@ +1bbc40f501a7fef9eef2a39b701a71aee2fea7c4 SOURCES/libguestfs.keyring +7a5a5ee7c9b13b88bc3e7719f4639da52a84aafd SOURCES/supermin-5.2.1.tar.gz diff --git a/SOURCES/0001-Open-Unix.LargeFile-to-avoid-lstat-Value-too-large-f.patch b/SOURCES/0001-Open-Unix.LargeFile-to-avoid-lstat-Value-too-large-f.patch new file mode 100644 index 0000000..c9d6d28 --- /dev/null +++ b/SOURCES/0001-Open-Unix.LargeFile-to-avoid-lstat-Value-too-large-f.patch @@ -0,0 +1,182 @@ +From b1672fa8a1fdb9c00a0fa1c04547d69abc6afb0a 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". + +(cherry picked from commit fd9f17c7eb63979af882533a0d234bfc8ca42de3) +--- + 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.31.1 + diff --git a/SOURCES/0002-Ignore-zfcpdump-kernel-on-s390x.patch b/SOURCES/0002-Ignore-zfcpdump-kernel-on-s390x.patch new file mode 100644 index 0000000..88f4aba --- /dev/null +++ b/SOURCES/0002-Ignore-zfcpdump-kernel-on-s390x.patch @@ -0,0 +1,29 @@ +From d5e5a787b53490c5503a598721d7b34b7d30badd Mon Sep 17 00:00:00 2001 +From: "Richard W.M. Jones" +Date: Mon, 29 Nov 2021 14:40:15 +0000 +Subject: [PATCH] Ignore zfcpdump kernel on s390x + +Reported-by: Sebastian Mitterle +Thanks: Cornelia Huck +Fixes: https://bugzilla.redhat.com/show_bug.cgi?id=2027375 +(cherry picked from commit 9fbe476d4df0b01568d3668e6121cae7c779c8c7) +--- + src/format_ext2_kernel.ml | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/src/format_ext2_kernel.ml b/src/format_ext2_kernel.ml +index 3be4413..ea69ade 100644 +--- a/src/format_ext2_kernel.ml ++++ b/src/format_ext2_kernel.ml +@@ -157,6 +157,8 @@ and kernel_filter patterns is_arm all_files = + ) all_files in + let files = + List.filter (fun filename -> find filename "xen" = -1) files in ++ let files = ++ List.filter (fun filename -> find filename "zfcpdump" = -1) files in + let files = + if not is_arm then files + else ( +-- +2.31.1 + diff --git a/SOURCES/0003-Ignore-unbootable-kernels-in-lib-modules.patch b/SOURCES/0003-Ignore-unbootable-kernels-in-lib-modules.patch new file mode 100644 index 0000000..88003e4 --- /dev/null +++ b/SOURCES/0003-Ignore-unbootable-kernels-in-lib-modules.patch @@ -0,0 +1,109 @@ +From b843c724ee6e3f66991b8bd81a602e2bea0c1625 Mon Sep 17 00:00:00 2001 +From: "Richard W.M. Jones" +Date: Wed, 1 Dec 2021 10:28:36 +0000 +Subject: [PATCH] Ignore unbootable kernels in /lib/modules + +The previous commit didn't ignore zfcpdump kernels if found in +/lib/modules because we didn't apply the kernel filter to those paths. + +Also this commit cleans up the code in general, splitting up the +multi-purpose "kernel_filter" function into two parts with clearer +roles. + +Fixes: commit 9fbe476d4df0b01568d3668e6121cae7c779c8c7 +Fixes: https://bugzilla.redhat.com/show_bug.cgi?id=2027375 +Reported-by: Yongkui Guo +(cherry picked from commit f53868ce875fc17527696a85b48c67fefa3176e7) +--- + src/format_ext2_kernel.ml | 44 +++++++++++++++++++++++---------------- + 1 file changed, 26 insertions(+), 18 deletions(-) + +diff --git a/src/format_ext2_kernel.ml b/src/format_ext2_kernel.ml +index ea69ade..79d636b 100644 +--- a/src/format_ext2_kernel.ml ++++ b/src/format_ext2_kernel.ml +@@ -38,7 +38,7 @@ let rec build_kernel debug host_cpu copy_kernel kernel = + | None -> + if debug >= 1 then + printf "supermin: kernel: looking for kernels in /lib/modules/*/vmlinuz ...\n%!"; +- match find_kernel_from_lib_modules debug with ++ match find_kernel_from_lib_modules debug host_cpu with + | Some k -> k + | None -> + if debug >= 1 then +@@ -89,10 +89,13 @@ and find_kernel_from_env_vars debug = + Some (kernel_env, kernel_name, kernel_version, modpath) + with Not_found -> None + +-and find_kernel_from_lib_modules debug = ++and find_kernel_from_lib_modules debug host_cpu = ++ let files = glob "/lib/modules/*/vmlinuz" [GLOB_NOSORT; GLOB_NOESCAPE] in ++ let files = Array.to_list files in ++ ++ let files = ignore_unbootable_kernels host_cpu files in ++ + let kernels = +- let files = glob "/lib/modules/*/vmlinuz" [GLOB_NOSORT; GLOB_NOESCAPE] in +- let files = Array.to_list files in + let kernels = + filter_map ( + fun kernel_file -> +@@ -114,22 +117,22 @@ and find_kernel_from_lib_modules debug = + | [] -> None + + and find_kernel_from_boot debug host_cpu = +- let is_arm = +- String.length host_cpu >= 3 && +- host_cpu.[0] = 'a' && host_cpu.[1] = 'r' && host_cpu.[2] = 'm' in +- + let all_files = Sys.readdir "/boot" in + let all_files = Array.to_list all_files in + + (* In original: ls -1dvr /boot/vmlinuz-*.$arch* 2>/dev/null | grep -v xen *) + let patterns = patt_of_cpu host_cpu in +- let files = kernel_filter patterns is_arm all_files in ++ let files = files_matching_globs patterns all_files in ++ let files = ignore_unbootable_kernels host_cpu files in + + let files = + if files <> [] then files +- else ++ else ( + (* In original: ls -1dvr /boot/vmlinuz-* 2>/dev/null | grep -v xen *) +- kernel_filter ["vmlinu?-*"] is_arm all_files in ++ let files = files_matching_globs ["vmlinu?-*"] all_files in ++ let files = ignore_unbootable_kernels host_cpu files in ++ files ++ ) in + + let files = List.sort (fun a b -> compare_version b a) files in + let kernels = +@@ -148,13 +151,18 @@ and find_kernel_from_boot debug host_cpu = + | kernel :: _ -> Some kernel + | [] -> None + +-and kernel_filter patterns is_arm all_files = +- let files = +- List.filter +- (fun filename -> +- List.exists +- (fun patt -> fnmatch patt filename [FNM_NOESCAPE]) patterns +- ) all_files in ++and files_matching_globs patterns files = ++ List.filter ++ (fun filename -> ++ List.exists ++ (fun patt -> fnmatch patt filename [FNM_NOESCAPE]) patterns ++ ) files ++ ++and ignore_unbootable_kernels host_cpu files = ++ let is_arm = ++ String.length host_cpu >= 3 && ++ host_cpu.[0] = 'a' && host_cpu.[1] = 'r' && host_cpu.[2] = 'm' in ++ + let files = + List.filter (fun filename -> find filename "xen" = -1) files in + let files = +-- +2.31.1 + diff --git a/SOURCES/0004-Ignore-debug-kernels.patch b/SOURCES/0004-Ignore-debug-kernels.patch new file mode 100644 index 0000000..d278725 --- /dev/null +++ b/SOURCES/0004-Ignore-debug-kernels.patch @@ -0,0 +1,33 @@ +From b2565eb1ddc43d8ff6e3406f11004ff42ab108aa Mon Sep 17 00:00:00 2001 +From: "Richard W.M. Jones" +Date: Mon, 28 Feb 2022 16:54:33 -0500 +Subject: [PATCH] Ignore debug kernels + +On RHEL 8.2 with RT, these kernels are not bootable. The kernel in +that instance was called +/lib/modules/4.18.0-193.70.1.rt13.120.el8_2.x86_64+debug/vmlinuz +installed from the package +kernel-rt-debug-core-4.18.0-193.70.1.rt13.120.el8_2.x86_64 + +Fixes: https://bugzilla.redhat.com/show_bug.cgi?id=2051332 +(cherry picked from commit c44d685e662e001f5fe70f0a98d0964cb561e1ec) +--- + src/format_ext2_kernel.ml | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/src/format_ext2_kernel.ml b/src/format_ext2_kernel.ml +index 79d636b..c592703 100644 +--- a/src/format_ext2_kernel.ml ++++ b/src/format_ext2_kernel.ml +@@ -167,6 +167,8 @@ and ignore_unbootable_kernels host_cpu files = + List.filter (fun filename -> find filename "xen" = -1) files in + let files = + List.filter (fun filename -> find filename "zfcpdump" = -1) files in ++ let files = ++ List.filter (fun filename -> find filename "+debug" = -1) files in + let files = + if not is_arm then files + else ( +-- +2.31.1 + diff --git a/SOURCES/copy-patches.sh b/SOURCES/copy-patches.sh new file mode 100755 index 0000000..016d0d8 --- /dev/null +++ b/SOURCES/copy-patches.sh @@ -0,0 +1,55 @@ +#!/bin/bash - + +set -e + +# Maintainer script to copy patches from the git repo to the current +# directory. Use it like this: +# ./copy-patches.sh + +rhel_version=8.7.0 + +# Check we're in the right directory. +if [ ! -f supermin.spec ]; then + echo "$0: run this from the directory containing 'supermin.spec'" + exit 1 +fi + +git_checkout=$HOME/d/supermin-rhel-$rhel_version +if [ ! -d $git_checkout ]; then + echo "$0: $git_checkout does not exist" + echo "This script is only for use by the maintainer when preparing a" + echo "supermin release on RHEL." + exit 1 +fi + +# Get the base version of supermin. +version=`grep '^Version:' supermin.spec | awk '{print $2}'` +tag="v$version" + +# Remove any existing patches. +git rm -f [0-9]*.patch ||: +rm -f [0-9]*.patch + +# Get the patches. +(cd $git_checkout; rm -f [0-9]*.patch; git format-patch -N --submodule=diff $tag) +mv $git_checkout/[0-9]*.patch . + +# Remove any not to be applied. +rm -f *NOT-FOR-RPM*.patch + +# Add the patches. +git add [0-9]*.patch + +# Print out the patch lines. +echo +echo "--- Copy the following text into supermin.spec file" +echo + +echo "# Patches." +for f in [0-9]*.patch; do + n=`echo $f | awk -F- '{print $1}'` + echo "Patch$n: $f" +done + +echo +echo "--- End of text" diff --git a/SOURCES/supermin-5.2.1.tar.gz.sig b/SOURCES/supermin-5.2.1.tar.gz.sig new file mode 100644 index 0000000..3aa05b4 --- /dev/null +++ b/SOURCES/supermin-5.2.1.tar.gz.sig @@ -0,0 +1,17 @@ +-----BEGIN PGP SIGNATURE----- + +iQJFBAABCAAvFiEE93dPsa0HSn6Mh2fqkXOPc+G3aKAFAmAXzH4RHHJpY2hAYW5u +ZXhpYS5vcmcACgkQkXOPc+G3aKDLlxAAuqTnWZF8M4KYwSY1XydtgsF4CGjUmhHM +/L6KRsVOR7+hc/yevg/ZJMYieRs1jSW0FHh/16AdRjLRuLhV4BFZGd3wybbYsNUe +aIrbG4dna7pjRYN6wKZIWTNfiYnf7Mqd0MvTfU6rUN0P8O0skbI1xUpcDnViP+GR +sI+yIhM/EpithouoRBqz3sSDtkImXbepSphhnxMb64At6eLWDD09F32uHSqMBALI +ThFeu6mGWNvdsbJAVzDjoXGOynthMLGSb4mE0+uPDP3rFs0FhygNtcdn2KQDTG1S +Jd7MQ2/3w/BilSDTUY/sxqED04GSARxKINgFIOcmHvDnyPltLRX8ET8hCtCkNT1Y +6DgOvUpf77cRKZR6PiQYwor7/bvCwWmOF4AtEaq1x6aWm4D/qFrtN+ofWYsJC5Kz +qBEas7lR40SiiE8EKFDdEoyazps4ZVl5RpZO6Re4yhPbtLhiT8hwzyyNaia9MTyU +k6hU8fivnvnMCAwksJwBN35HxCRgHpOK/CP1IvoxuGA0Q5zwDp7KiHqQjszI5LIa +i2N4VNVwRi/MRrtu7l+B63elKH52SFOJhnLUdUhAJFVhB1jqXZ2y8kOWiZwB2dFc +7KPfkyGRoK39U7ipoI5sUThxl7tfkJSHpbo9/SEL7wFx2fL64oCqdz6t5T4ERPia +6ZGfgCLJNMU= +=aVXZ +-----END PGP SIGNATURE----- diff --git a/SOURCES/supermin-find-requires b/SOURCES/supermin-find-requires new file mode 100755 index 0000000..984f783 --- /dev/null +++ b/SOURCES/supermin-find-requires @@ -0,0 +1,26 @@ +#!/bin/bash - + +# Generate RPM requires automatically for supermin appliances. +# Copyright (C) 2009-2015 Red Hat Inc. + +# This script is called with a list of supermin.d/*packages* files +# (either passed on the command line, or if that is empty, then passed +# through stdin). Each file is a simple list of packages, so we +# simply have to `cat' the contents in order to get the list of +# requires - it could hardly be simpler. + +function process_file +{ + cat "$1" +} + +if [ "$#" -ge 1 ]; then + for f in "$@"; do + process_file "$f" + done +else + # Get the list of files from stdin. One filename per line? + while read line; do + process_file "$line" + done +fi diff --git a/SOURCES/supermin.attr b/SOURCES/supermin.attr new file mode 100644 index 0000000..2a20caf --- /dev/null +++ b/SOURCES/supermin.attr @@ -0,0 +1,2 @@ +%__supermin_requires %{_rpmconfigdir}/supermin-find-requires +%__supermin_path /supermin\.d/[^/]*packages[^/]* diff --git a/SPECS/supermin.spec b/SPECS/supermin.spec new file mode 100644 index 0000000..1de7548 --- /dev/null +++ b/SPECS/supermin.spec @@ -0,0 +1,705 @@ +# On platforms and architectures that support it, the default is +# ‘--with dietlibc’. +# +# To use glibc-static instead, do ‘--without dietlibc’. This results +# in a much larger (about 40 times larger) init binary. +# +# On other platforms, there is no dietlibc, so the default for those +# is ‘--without dietlibc’. +# +# See also: +# https://github.com/libguestfs/supermin/commit/9bb57e1a8d0f3b57eb09f65dd574f702b67e1c2f + +%if 0%{?rhel} +%bcond_with dietlibc +%else +%ifarch aarch64 %{arm} %{ix86} %{power} s390x x86_64 +%bcond_without dietlibc +%else +%bcond_with dietlibc +%endif +%endif + +# Whether we should verify tarball signature with GPGv2. +%global verify_tarball_signature 1 + +# The source directory. +%global source_directory 5.2-stable + +Summary: Tool for creating supermin appliances +Name: supermin +Version: 5.2.1 +Release: 2%{?dist} +License: GPLv2+ + +ExcludeArch: %{ix86} + +URL: http://people.redhat.com/~rjones/supermin/ +Source0: http://download.libguestfs.org/supermin/%{source_directory}/%{name}-%{version}.tar.gz +Source1: http://download.libguestfs.org/supermin/%{source_directory}/%{name}-%{version}.tar.gz.sig +# Keyring used to verify tarball signature. +Source2: libguestfs.keyring + +# RHEL 8 git repository is: +# https://github.com/libguestfs/supermin/tree/rhel-8.7.0 +# Use 'copy-patches.sh' to copy the patches from the git repo +# to the current directory. + +# Patches. +Patch0001: 0001-Open-Unix.LargeFile-to-avoid-lstat-Value-too-large-f.patch +Patch0002: 0002-Ignore-zfcpdump-kernel-on-s390x.patch +Patch0003: 0003-Ignore-unbootable-kernels-in-lib-modules.patch +Patch0004: 0004-Ignore-debug-kernels.patch + +BuildRequires: /usr/bin/pod2man +BuildRequires: /usr/bin/pod2html +BuildRequires: rpm +BuildRequires: rpm-devel +BuildRequires: dnf +BuildRequires: dnf-plugins-core +BuildRequires: /usr/sbin/mke2fs +BuildRequires: e2fsprogs-devel +BuildRequires: findutils +%if %{with dietlibc} +BuildRequires: dietlibc-devel +%else +BuildRequires: glibc-static +%endif +BuildRequires: ocaml, ocaml-findlib-devel +%if 0%{verify_tarball_signature} +BuildRequires: gnupg2 +%endif + +# These are required only to run the tests. We could patch out the +# tests to not require these packages. +BuildRequires: augeas hivex kernel tar + +# 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 +# kernel-install script to understand why. +BuildRequires: grubby +# https://bugzilla.redhat.com/show_bug.cgi?id=1331012 +BuildRequires: systemd-udev + +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 +Source3: supermin.attr +Source4: supermin-find-requires + +# Maintainer script which helps with handling patches. +Source5: copy-patches.sh + + +%description +Supermin is a tool for building supermin appliances. These are tiny +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. + + +%package devel +Summary: Development tools for %{name} +Requires: %{name} = %{version}-%{release} +Requires: rpm-build + + +%description devel +%{name}-devel contains development tools for %{name}. + +It just contains tools for automatic RPM dependency generation +from supermin appliances. + + +%prep +%if 0%{verify_tarball_signature} +tmphome="$(mktemp -d)" +gpgv2 --homedir "$tmphome" --keyring %{SOURCE2} %{SOURCE1} %{SOURCE0} +%endif +%setup -q +%autopatch -p1 + + +%build +%configure --disable-network-tests + +%if %{with dietlibc} +make -C init CC="diet gcc" +%endif +make %{?_smp_mflags} + + +%install +make DESTDIR=$RPM_BUILD_ROOT install + +mkdir -p $RPM_BUILD_ROOT%{_rpmconfigdir}/fileattrs/ +install -m 0644 %{SOURCE3} $RPM_BUILD_ROOT%{_rpmconfigdir}/fileattrs/ +install -m 0755 %{SOURCE4} $RPM_BUILD_ROOT%{_rpmconfigdir}/ + + +%check + +# Skip execstack test where it is known to fail. +%if 0%{?fedora} <= 20 +%ifarch aarch64 %{arm} +export SKIP_TEST_EXECSTACK=1 +%endif +%endif + +make check || { + cat tests/test-suite.log + exit 1 +} + + +%files +%doc COPYING README examples/build-basic-vm.sh +%{_bindir}/supermin +%{_mandir}/man1/supermin.1* + + +%files devel +%{_rpmconfigdir}/fileattrs/supermin.attr +%{_rpmconfigdir}/supermin-find-requires + + +%changelog +* Fri Mar 04 2022 Richard W.M. Jones - 5.2.1-2.el8 +- Supermin should ignore +debug kernels + resolves: rhbz#2051332 +- Add copy-patches script. + +* Thu Sep 2 2021 Danilo C. L. de Paula - 5.2.1-1.el8 +- Resolves: bz#2000225 + (Rebase virt:rhel module:stream based on AV-8.6) + +* Mon Apr 27 2020 Danilo C. L. de Paula - 5.1.19 +- Resolves: bz#1810193 + (Upgrade components in virt:rhel module:stream for RHEL-8.3 release) + +* Fri Jun 28 2019 Danilo de Paula - 5.1.19-9 +- Rebuild all virt packages to fix RHEL's upgrade path +- Resolves: rhbz#1695587 + (Ensure modular RPM upgrade path) + +* Tue Oct 16 2018 Richard W.M. Jones - 5.1.19-8 +- Pass CFLAGS & LDFLAGS to final supermin link + resolves: rhbz#1624175 + +* Fri Jul 20 2018 Richard W.M. Jones - 5.1.19-7 +- Rebuild for OCaml 4.07.0. + +* Wed Jun 6 2018 Richard W.M. Jones - 5.1.19-6 +- Drop dietlibc in RHEL 8 + resolves: rhbz#1588067 + +* Tue May 22 2018 Richard W.M. Jones - 5.1.19-5 +- Bump release and rebuild. + +* Sat Feb 24 2018 Florian Weimer - 5.1.19-4 +- Reenable hardened build + +* Tue Feb 13 2018 Richard W.M. Jones - 5.1.19-3 +- Fix bytes/string problems. + +* Fri Feb 09 2018 Fedora Release Engineering - 5.1.19-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild + +* Tue Sep 19 2017 Richard W.M. Jones - 5.1.19-1 +- New upstream version 5.1.19. +- Remove all patches, now upstream. + +* Thu Aug 10 2017 Igor Gnatenko - 5.1.18-5 +- Rebuilt for RPM soname bump + +* Thu Aug 03 2017 Richard W.M. Jones - 5.1.18-4 +- Fix supermin crash with truncated vmlinuz file (RHBZ#1477758). +- Include all upstream patches since 5.1.18. + +* Thu Aug 03 2017 Fedora Release Engineering - 5.1.18-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild + +* Thu Jul 27 2017 Fedora Release Engineering - 5.1.18-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild + +* Thu Jul 13 2017 Richard W.M. Jones - 5.1.18-1 +- New upstream release 5.1.18. +- Fixes problem with creating incorrect symlinks (RHBZ#1470157). + +* Sat Mar 18 2017 Richard W.M. Jones - 5.1.17-5 +- Enable dietlibc on aarch64 and POWER. + +* Fri Mar 17 2017 Richard W.M. Jones - 5.1.17-4 +- Drop dependency on hawkey and versioned dependencies on dnf. + +* Sat Feb 11 2017 Fedora Release Engineering - 5.1.17-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild + +* Sat Nov 05 2016 Richard W.M. Jones - 5.1.17-2 +- Rebuild for OCaml 4.04.0. + +* Tue Nov 01 2016 Richard W.M. Jones - 5.1.17-1 +- New upstream release 5.1.17. +- Check signature on the tarball before unpacking it. +- Remove patches, all upstream. + +* Thu Sep 15 2016 Dan Horák - 5.1.16-6 +- Switch to dietlibc on s390x + +* Thu Sep 15 2016 Dan Horák - 5.1.16-5 +- Do not break the binary on interpreted builds (#1375213) + +* Wed Jul 06 2016 Richard W.M. Jones - 5.1.16-4 +- Add all upstream patches since 5.1.16 was released. + +* Tue May 17 2016 Richard W.M. Jones - 5.1.16-3 +- Add upstream patch for DAX / vNVDIMM support. + +* Wed Apr 27 2016 Richard W.M. Jones - 5.1.16-2 +- New upstream version 5.1.16. +- Drop all patches since they are upstream. +- Depend on systemd-udev to work around RHBZ#1331012. + +* Fri Mar 18 2016 Richard W.M. Jones - 5.1.15-2 +- Add all upstream patches since 5.1.15 was released. +- These should improve boot performance and initrd size. + +* Wed Feb 17 2016 Richard W.M. Jones - 5.1.15-1 +- New upstream version 5.1.15. +- Remove all patches, since they are now included in this version. +- Enable dietlibc, remove glibc-static, xz-static, zlib-static. + +* Wed Feb 17 2016 Richard W.M. Jones - 5.1.14-4 +- Add more patches since 5.1.14. + +* Fri Feb 05 2016 Fedora Release Engineering - 5.1.14-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild + +* Tue Jan 12 2016 Richard W.M. Jones - 5.1.14-2 +- Add all patches since 5.1.14. + +* Mon Jan 11 2016 Richard W.M. Jones - 5.1.14-1 +- New upstream version 5.1.14. +- Remove all patches - now upstream. + +* Tue Oct 13 2015 Richard W.M. Jones - 5.1.13-4 +- Pull in all upstream patches since 5.1.13. +- Choose providers better (RHBZ#1266918). +- Use autopatch. +- Explicitly depend on pod2html. + +* Mon Jul 27 2015 Richard W.M. Jones - 5.1.13-3 +- Bump version to rebuild against new RPM in Rawhide. + +* Fri Jun 19 2015 Fedora Release Engineering - 5.1.13-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild + +* Tue May 26 2015 Richard W.M. Jones - 5.1.13-1 +- New upstream version 5.1.13. +- Remove patch, now upstream. + +* Thu May 21 2015 Richard W.M. Jones - 5.1.12-11 +- Prefer 'dnf download' over 'yumdownloader' (again). +- BR grubby for the tests to work. + +* Fri Apr 10 2015 Richard W.M. Jones - 5.1.12-9 +- Revert back to yumdownloader (RHBZ#1186948). + +* Fri Apr 3 2015 Richard W.M. Jones - 5.1.12-8 +- Prefer 'dnf download' over 'yumdownloader'. + +* Fri Mar 20 2015 Richard W.M. Jones - 5.1.12-7 +- Disable hardened build again. See RHBZ#1202091 RHBZ#1204162. + +* Mon Mar 16 2015 Richard W.M. Jones - 5.1.12-6 +- Enable hardening flags by building the static 'init' specially + before the main build. +- Use _smp_mflags. + +* Thu Mar 12 2015 Richard W.M. Jones - 5.1.12-4 +- Add a -devel subpackage containing automated RPM dependency generator + for supermin appliances. + +* Mon Mar 9 2015 Richard W.M. Jones - 5.1.12-2 +- Disable hardened build as it breaks building the static 'init' binary. + +* Sat Mar 7 2015 Richard W.M. Jones - 5.1.12-1 +- New upstream version 5.1.12. +- Includes ARM fix: lpae kernels can now be booted (RHBZ#1199733). + +* Thu Jan 8 2015 Pino Toscano - 5.1.11-2 +- Rebuild for xz-5.2.0 in Rawhide (RHBZ#1179252). + +* Sat Oct 25 2014 Richard W.M. Jones - 5.1.11-1 +- New upstream version 5.1.11. + +* Tue Oct 7 2014 Pino Toscano - 5.1.10-2 +- Update to upstream commit d78c898c7e2bc5f12cbebef98b95a7908d9120f1. +- BR rpm-devel, since it is now used instead of invoking rpm. +- BR automake and autoconf, and run autoreconf (configure.ac is modified by + the patches). + +* Thu Sep 4 2014 Richard W.M. Jones - 5.1.10-1 +- New upstream version 5.1.10. +- Remove patch which is now included upstream. + +* Mon Aug 18 2014 Fedora Release Engineering - 5.1.9-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_22_Mass_Rebuild + +* Sun Aug 3 2014 Richard W.M. Jones - 5.1.9-2 +- Add upstream patch to avoid endless loop in Rawhide. + +* Mon Jul 21 2014 Richard W.M. Jones - 5.1.9-1 +- New upstream version 5.1.9. +- Remove patches which are now upstream. + +* Wed Jun 25 2014 Richard W.M. Jones - 5.1.8-9 +- Add Requires findutils (RHBZ#1113029). + +* Sun Jun 08 2014 Fedora Release Engineering - 5.1.8-8 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild + +* Wed May 21 2014 Richard W.M. Jones - 5.1.8-7 +- Add patch to fix RPM handler when filenames may contain spaces. + +* Mon May 19 2014 Richard W.M. Jones - 5.1.8-4 +- Skip execstack test on Fedora 20 (ARM only). + +* Fri May 16 2014 Richard W.M. Jones - 5.1.8-3 +- BR xz-static & xz-devel packages, to support xz-compressed kernel modules. + +* Fri May 9 2014 Richard W.M. Jones - 5.1.8-1 +- New upstream version 5.1.8. +- Remove patches which are now upstream. + +* Thu May 1 2014 Richard W.M. Jones - 5.1.7-3 +- Add upstream patch which removes need to run execstack (RHBZ#1093261). + +* Mon Apr 7 2014 Richard W.M. Jones - 5.1.7-2 +- Add patch to fix quoting around mke2fs parameter (RHBZ#1084960). + +* Sun Apr 6 2014 Richard W.M. Jones - 5.1.7-1 +- New upstream version 5.1.7. +- Remove ppc64p7 patch which is now upstream. + +* Thu Apr 3 2014 Richard W.M. Jones - 5.1.6-5 +- Requires tar, which is not installed in an @Core installation. + +* Fri Mar 28 2014 Richard W.M. Jones - 5.1.6-4 +- Add upstream patch to fix supermin on ppc64p7. + +* Thu Mar 27 2014 Richard W.M. Jones - 5.1.6-3 +- New upstream version 5.1.6. +- Fix tests. + +* Mon Mar 24 2014 Richard W.M. Jones - 5.1.5-2 +- Disable execstack on aarch64. + It comes from prelink which does not exist on aarch64. + +* Thu Mar 13 2014 Richard W.M. Jones - 5.1.5-1 +- New upstream version 5.1.5. + +* Thu Mar 6 2014 Richard W.M. Jones - 5.1.3-1 +- New upstream version 5.1.3. + +* Sun Mar 2 2014 Richard W.M. Jones - 5.1.2-1 +- New upstream version 5.1.2. +- Fixes a serious bug in --build mode. + +* Sat Mar 1 2014 Richard W.M. Jones - 5.1.1-1 +- New upstream version 5.1.1. +- Remove patch which is now upstream. + +* Wed Feb 26 2014 Richard W.M. Jones - 5.1.0-3 +- Add BR yum-utils (for yumdownloader). +- Add upstream patch which stops duplicate packages appearing. + +* Wed Feb 26 2014 Richard W.M. Jones - 5.1.0-2 +- New upstream version 5.1.0. +- Note this is effectively a rewrite, and is not completely compatible. +- There is no separate 'supermin-helper' subpackage any more. +- Requires rpm instead of yum. + +* Mon Dec 23 2013 Richard W.M. Jones - 4.1.6-2 +- New upstream version 4.1.6. +- Should fix all autotools brokenness. +- Man pages are now all in section 1. +- Remove patch which is now upstream. +- +BR /usr/bin/execstack (from prelink). + +* Mon Dec 23 2013 Richard W.M. Jones - 4.1.5-5 +- Rerun autoreconf to fix autotools brokenness. + +* Sun Dec 22 2013 Richard W.M. Jones - 4.1.5-4 +- Why was prelink required? Remove it. + +* Fri Sep 13 2013 Michael Schwendt - 4.1.5-3 +- correct Obsoletes version for febootstrap and febootstrap-supermin-helper + +* Sun Sep 8 2013 Richard W.M. Jones - 4.1.5-2 +- (For ARM) Don't crash if SUPERMIN_DTB is set and --dtb not specified. + +* Fri Sep 6 2013 Richard W.M. Jones - 4.1.5-1 +- New upstream version 4.1.5. +- Has (optionally) a new command line syntax. +- Supports device trees for ARM. + +* Wed Aug 28 2013 Richard W.M. Jones - 4.1.4-1 +- New upstream version 4.1.4. +- Supports compressed cpio image files, experimentally. + +* Fri Aug 9 2013 Richard W.M. Jones - 4.1.3-1 +- New upstream version 4.1.3. +- Remove patch which is now upstream. +- Add examples directory to documentation. + +* Tue Aug 6 2013 Richard W.M. Jones - 4.1.2-2 +- Include upstream patch to get correct directory setgid/sticky bits in + the appliance. + +* Sat Aug 3 2013 Richard W.M. Jones - 4.1.2-1 +- New upstream version 4.1.2. +- Remove patch which is now upstream. + +* Wed Jun 26 2013 Richard W.M. Jones - 4.1.1-2 +- Add upstream patch to ignore ghost non-regular files. +- This fixes builds on Fedora 20 because the filesystem package has + been changed so /var/lock and /var/run are marked as ghost. + +* Tue Feb 5 2013 Richard W.M. Jones - 4.1.1-1 +- New upstream version 4.1.1. +- The program has been renamed 'supermin' from 'febootstrap'. +- Obsolete, but don't Provide because supermin is not a compatible replacement. +- Use '_isa' to specify architecture of supermin-helper subpackage. + +* Tue Jan 22 2013 Richard W.M. Jones - 1:3.21-2 +- Add upstream patch to drop supplemental groups (RHBZ#902476). +- Remove 'Group:' RPM headers which are no longer necessary. +- Remove some commented-out requirements. + +* Sat Dec 22 2012 Richard W.M. Jones - 1:3.21-1 +- New upstream version 3.21. + +* Fri Aug 31 2012 Richard W.M. Jones - 1:3.20-1 +- New upstream version 3.20. + +* Wed Aug 22 2012 Richard W.M. Jones - 1:3.19-2 +- Work around brokenness in yum (RHBZ#850913). +- Remove defattr, no longer required. + +* Tue Jul 31 2012 Richard W.M. Jones - 1:3.19-1 +- New upstream version 3.19. + +* Thu Jul 19 2012 Fedora Release Engineering - 3.18-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild + +* Mon Jun 18 2012 Richard Jones - 3.18-1 +- New upstream version 3.18. +- This adds support for EPEL 5. + +* Thu Jun 14 2012 Richard Jones - 3.17-1 +- New upstream version 3.17. + +* Wed Jun 13 2012 Richard Jones - 3.16-1 +- New upstream version 3.16. + +* Tue Jun 12 2012 Richard Jones - 3.15-1 +- New upstream version 3.15. +- This version includes root= support, needed for libguestfs + with virtio-scsi. +- Remove upstream patch. + +* Thu May 17 2012 Richard Jones - 3.14-6 +- For RHEL 7 only, add ExclusiveArch x86-64. + +* Tue May 15 2012 Richard Jones - 3.14-5 +- Bundled gnulib (RHBZ#821752). + +* Fri Apr 13 2012 Richard Jones - 3.14-4 +- Add back explicit dependencies for external programs. + +* Fri Apr 13 2012 Peter Robinson - 3.14-3 +- Drop ExclusiveArch as it's supported on all primary & secondary arches +- Cleanup spec and deps + +* Fri Mar 30 2012 Richard Jones - 3.14-2 +- New upstream version 3.14. +- Add upstream patch to fix RHBZ#808421. + +* Thu Mar 29 2012 Richard Jones - 3.13-4 +- e2fsprogs moved /sbin/mke2fs to /usr/sbin (thanks Eric Sandeen). + +* Thu Mar 1 2012 Richard Jones - 3.13-2 +- Missing BR zlib-static. + +* Thu Feb 9 2012 Richard Jones - 3.13-1 +- New upstream version 3.13. +- Remove upstream patch which is included in this version. + +* Fri Jan 13 2012 Fedora Release Engineering - 3.12-5 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_17_Mass_Rebuild + +* Tue Jan 3 2012 Richard Jones - 3.12-4 +- Depend on latest e2fsprogs (RHBZ#771310). + +* Wed Nov 9 2011 Richard Jones - 3.12-2 +- Include upstream patch to work around Python stupidity. + +* Tue Oct 18 2011 Richard Jones - 3.12-1 +- New upstream version 3.12. +- Remove upstream patch which is included in this version. + +* Fri Oct 14 2011 Richard Jones - 3.11-2 +- Add upstream patch to fix febootstrap on non-Debian. + +* Fri Oct 14 2011 Richard Jones - 3.11-1 +- New upstream version 3.11. + +* Thu Sep 1 2011 Richard Jones - 3.10-1 +- New upstream version 3.10. + +* Fri Aug 26 2011 Richard Jones - 3.9-1 +- New upstream version 3.9. + +* Tue Jul 26 2011 Richard Jones - 3.8-1 +- New upstream version 3.8. + +* Fri Jul 15 2011 Richard Jones - 3.7-1 +- New upstream version 3.7. + +* Wed Jun 1 2011 Richard Jones - 3.6-1 +- New upstream version 3.6. +- This version no longer needs external insmod.static. + +* Fri May 27 2011 Richard Jones - 3.5-1 +- New upstream version 3.5. +- Remove patch which is now upstream. + +* Fri Mar 18 2011 Richard Jones - 3.4-2 +- Don't fail if objects are created in a symlinked dir (RHBZ#698089). + +* Fri Mar 18 2011 Richard Jones - 3.4-1 +- New upstream version 3.4. +- febootstrap-supermin-helper Obsoletes older versions of febootstrap. + +* Tue Feb 08 2011 Fedora Release Engineering - 3.3-5 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_15_Mass_Rebuild + +* Fri Jan 14 2011 Richard Jones - 3.3-4 +- Split package into febootstrap (for building) and febootstrap-supermin-helper + (for running). Note that febootstrap depends on febootstrap-supermin-helper, + but you can install febootstrap-supermin-helper on its own. + +* Fri Jan 14 2011 Richard Jones - 3.3-3 +- Clear executable stack flag on febootstrap-supermin-helper. + +* Thu Jan 13 2011 Dan Horák - 3.3-2 +- add the ocaml's ExclusiveArch + +* Sat Dec 11 2010 Richard Jones - 3.3-1 +- New upstream version 3.3. + +* Tue Dec 7 2010 Richard Jones - 3.2-1 +- New upstream version 3.2. +- Remove upstream patches. + +* Tue Dec 7 2010 Richard Jones - 3.1-5 +- Previous fix for RHBZ#654638 didn't work, fix it correctly. + +* Mon Dec 6 2010 Richard Jones - 3.1-4 +- Properly ignore .*.hmac files (accidental reopening of RHBZ#654638). + +* Mon Dec 6 2010 Richard Jones - 3.1-3 +- Uses yumdownloader at runtime, so require yum-utils. + +* Mon Dec 6 2010 Richard Jones - 3.1-2 +- New upstream version 3.1. +- BR insmod.static. + +* Sun Dec 5 2010 Richard Jones - 3.0-2 +- New upstream version 3.0 (note this is incompatible with 2.x). +- Fix upstream URLs. +- fakeroot, fakechroot no longer required. +- insmod.static is required at runtime (missing dependency from earlier). +- The only programs are 'febootstrap' and 'febootstrap-supermin-helper'. +- BR ocaml, ocaml-findlib-devel. +- No examples are provided with this version of febootstrap. + +* Thu Nov 25 2010 Richard Jones - 2.11-1 +- New upstream version 2.11. +- Fixes "ext2fs_mkdir .. No free space in directory" bug which affects + libguestfs on rawhide. + +* Thu Oct 28 2010 Richard Jones - 2.10-1 +- New upstream version 2.10. +- Adds -u and -g options to febootstrap-supermin-helper which are + required by virt-v2v. + +* Fri Aug 27 2010 Richard Jones - 2.9-1 +- New upstream version 2.9. +- Fixes directory ordering problem in febootstrap-supermin-helper. + +* Tue Aug 24 2010 Richard Jones - 2.8-1 +- New upstream version 2.8. + +* Sat Aug 21 2010 Richard Jones - 2.8-0.2 +- New pre-release version of 2.8. + + Note this is based on 2.7 + mailing list patches. +- New BRs on mke2fs, libext2fs, glibc-static. + +* Fri May 14 2010 Richard Jones - 2.7-2 +- New upstream version 2.7. +- febootstrap-supermin-helper shell script rewritten in C for speed. +- This package contains C code so it is no longer 'noarch'. +- MAKEDEV isn't required. + +* Fri Jan 22 2010 Richard Jones - 2.6-1 +- New upstream release 2.6. +- Recheck package in rpmlint. + +* Thu Oct 22 2009 Richard Jones - 2.5-2 +- New upstream release 2.5. +- Remove BR upx (not needed by upstream). +- Two more scripts / manpages. + +* Thu Jul 30 2009 Richard Jones - 2.4-1 +- New upstream release 2.4. + +* Fri Jul 24 2009 Fedora Release Engineering - 2.3-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_12_Mass_Rebuild + +* Mon Jun 15 2009 Richard Jones - 2.3-1 +- New upstream release 2.3. + +* Mon Jun 15 2009 Richard Jones - 2.2-1 +- New upstream release 2.2. + +* Mon May 11 2009 Richard Jones - 2.0-1 +- New upstream release 2.0. + +* Thu May 7 2009 Richard Jones - 1.9-1 +- New upstream release 1.9. + +* Fri May 1 2009 Richard Jones - 1.8-1 +- New upstream release 1.8. + +* Mon Apr 20 2009 Richard Jones - 1.7-1 +- New upstream release 1.7. + +* Tue Apr 14 2009 Richard Jones - 1.5-3 +- Configure script has (unnecessary) BuildRequires on fakeroot, + fakechroot, yum. + +* Tue Apr 14 2009 Richard Jones - 1.5-2 +- Initial build for Fedora.