New upstream version 5.3.4
Remove patches which are now all upstream.
This commit is contained in:
parent
e50448eed6
commit
61460d5d8f
@ -1,50 +0,0 @@
|
||||
From 86fd6f3e86ab99d54a22b475aecccfc19bdff07e Mon Sep 17 00:00:00 2001
|
||||
From: "Richard W.M. Jones" <rjones@redhat.com>
|
||||
Date: Sat, 21 Jan 2023 09:38:55 +0000
|
||||
Subject: [PATCH 01/13] rpm: New RPM database location in /usr/lib/sysimage/rpm
|
||||
|
||||
A few years ago the RPM database was moved from /var to /usr. This is
|
||||
now feeding through to Linux distros.
|
||||
|
||||
http://lists.rpm.org/pipermail/rpm-maint/2017-October/006723.html
|
||||
https://fedoraproject.org/wiki/Changes/RelocateRPMToUsr
|
||||
https://src.fedoraproject.org/rpms/rpm/pull-request/21
|
||||
---
|
||||
src/ph_rpm.ml | 20 +++++++++++++++-----
|
||||
1 file changed, 15 insertions(+), 5 deletions(-)
|
||||
|
||||
diff --git a/src/ph_rpm.ml b/src/ph_rpm.ml
|
||||
index 85557fe..2c199c1 100644
|
||||
--- a/src/ph_rpm.ml
|
||||
+++ b/src/ph_rpm.ml
|
||||
@@ -236,12 +236,22 @@ let rpm_package_name pkg =
|
||||
let rpm = rpm_of_pkg pkg in
|
||||
rpm.name
|
||||
|
||||
+let rpmdb_locations = [
|
||||
+ "/usr/lib/sysimage/rpm/rpmdb.sqlite";
|
||||
+ "/var/lib/rpm/rpmdb.sqlite";
|
||||
+ "/var/lib/rpm/Packages"
|
||||
+]
|
||||
+
|
||||
+let find_rpmdb () =
|
||||
+ let rec loop = function
|
||||
+ | [] -> error "rpm: cannot locate RPM database; if this is a normal RPM-based Linux distro then this is probably a supermin bug"
|
||||
+ | db :: rest ->
|
||||
+ if Sys.file_exists db then db else loop rest
|
||||
+ in
|
||||
+ loop rpmdb_locations
|
||||
+
|
||||
let rpm_get_package_database_mtime () =
|
||||
- (try
|
||||
- lstat "/var/lib/rpm/rpmdb.sqlite"
|
||||
- with Unix_error (ENOENT, _, _) ->
|
||||
- lstat "/var/lib/rpm/Packages"
|
||||
- ).st_mtime
|
||||
+ (lstat (find_rpmdb ())).st_mtime
|
||||
|
||||
(* Return the best provider of a particular RPM requirement.
|
||||
*
|
||||
--
|
||||
2.42.0
|
||||
|
@ -1,98 +0,0 @@
|
||||
From f8774efbe02d3651cde449333cf108e79adba48c Mon Sep 17 00:00:00 2001
|
||||
From: Kate <kit.ty.kate@disroot.org>
|
||||
Date: Wed, 16 Nov 2022 19:30:01 +0000
|
||||
Subject: [PATCH 02/13] Add support for OCaml 5.0
|
||||
|
||||
---
|
||||
src/mode_build.ml | 4 ++--
|
||||
src/supermin.ml | 16 ++++++++--------
|
||||
src/utils.ml | 4 ++--
|
||||
3 files changed, 12 insertions(+), 12 deletions(-)
|
||||
|
||||
diff --git a/src/mode_build.ml b/src/mode_build.ml
|
||||
index 7c48295..f81341d 100644
|
||||
--- a/src/mode_build.ml
|
||||
+++ b/src/mode_build.ml
|
||||
@@ -123,7 +123,7 @@ let rec build debug
|
||||
(PackageSet.cardinal packages);
|
||||
if debug >= 2 then (
|
||||
List.iter (printf " - %s\n") pretty_packages;
|
||||
- flush Pervasives.stdout
|
||||
+ flush Stdlib.stdout
|
||||
)
|
||||
);
|
||||
|
||||
@@ -207,7 +207,7 @@ let rec build debug
|
||||
(List.length files);
|
||||
if debug >= 2 then (
|
||||
List.iter (fun { ft_path = path } -> printf " - %s\n" path) files;
|
||||
- flush Pervasives.stdout
|
||||
+ flush Stdlib.stdout
|
||||
)
|
||||
);
|
||||
|
||||
diff --git a/src/supermin.ml b/src/supermin.ml
|
||||
index 659e857..bef9db6 100644
|
||||
--- a/src/supermin.ml
|
||||
+++ b/src/supermin.ml
|
||||
@@ -296,27 +296,27 @@ let () =
|
||||
main ()
|
||||
with
|
||||
| Unix.Unix_error (code, fname, "") -> (* from a syscall *)
|
||||
- Printexc.print_backtrace Pervasives.stderr;
|
||||
+ Printexc.print_backtrace Stdlib.stderr;
|
||||
error "error: %s: %s" fname (Unix.error_message code)
|
||||
| Unix.Unix_error (code, fname, param) -> (* from a syscall *)
|
||||
- Printexc.print_backtrace Pervasives.stderr;
|
||||
+ Printexc.print_backtrace Stdlib.stderr;
|
||||
error "error: %s: %s: %s" fname (Unix.error_message code) param
|
||||
| Failure msg -> (* from failwith/failwithf *)
|
||||
- Printexc.print_backtrace Pervasives.stderr;
|
||||
+ Printexc.print_backtrace Stdlib.stderr;
|
||||
error "failure: %s" msg
|
||||
| Librpm.Multiple_matches (package, count) -> (* from librpm *)
|
||||
- Printexc.print_backtrace Pervasives.stderr;
|
||||
+ Printexc.print_backtrace Stdlib.stderr;
|
||||
error "RPM error: %d occurrences for %s" count package
|
||||
| Invalid_argument msg -> (* probably should never happen *)
|
||||
- Printexc.print_backtrace Pervasives.stderr;
|
||||
+ Printexc.print_backtrace Stdlib.stderr;
|
||||
error "internal error: invalid argument: %s" msg
|
||||
| Assert_failure (file, line, char) -> (* should never happen *)
|
||||
- Printexc.print_backtrace Pervasives.stderr;
|
||||
+ Printexc.print_backtrace Stdlib.stderr;
|
||||
error "internal error: assertion failed at %s, line %d, char %d"
|
||||
file line char
|
||||
| Not_found -> (* should never happen *)
|
||||
- Printexc.print_backtrace Pervasives.stderr;
|
||||
+ Printexc.print_backtrace Stdlib.stderr;
|
||||
error "internal error: Not_found exception was thrown"
|
||||
| exn -> (* something not matched above *)
|
||||
- Printexc.print_backtrace Pervasives.stderr;
|
||||
+ Printexc.print_backtrace Stdlib.stderr;
|
||||
error "exception: %s" (Printexc.to_string exn)
|
||||
diff --git a/src/utils.ml b/src/utils.ml
|
||||
index 521d49e..ae99294 100644
|
||||
--- a/src/utils.ml
|
||||
+++ b/src/utils.ml
|
||||
@@ -40,7 +40,7 @@ let dir_exists name =
|
||||
try (stat name).st_kind = S_DIR
|
||||
with Unix_error _ -> false
|
||||
|
||||
-let uniq ?(cmp = Pervasives.compare) xs =
|
||||
+let uniq ?(cmp = Stdlib.compare) xs =
|
||||
let rec loop acc = function
|
||||
| [] -> acc
|
||||
| [x] -> x :: acc
|
||||
@@ -51,7 +51,7 @@ let uniq ?(cmp = Pervasives.compare) xs =
|
||||
in
|
||||
List.rev (loop [] xs)
|
||||
|
||||
-let sort_uniq ?(cmp = Pervasives.compare) xs =
|
||||
+let sort_uniq ?(cmp = Stdlib.compare) xs =
|
||||
let xs = List.sort cmp xs in
|
||||
let xs = uniq ~cmp xs in
|
||||
xs
|
||||
--
|
||||
2.42.0
|
||||
|
@ -1,125 +0,0 @@
|
||||
From 3efe663421d94376694f292ca1fcf2732a82149f Mon Sep 17 00:00:00 2001
|
||||
From: Kate <kit.ty.kate@disroot.org>
|
||||
Date: Wed, 16 Nov 2022 19:59:36 +0000
|
||||
Subject: [PATCH 03/13] Restore compatibility with OCaml < 4.07
|
||||
|
||||
---
|
||||
src/mode_build.ml | 6 ++++--
|
||||
src/supermin.ml | 18 ++++++++++--------
|
||||
src/utils.ml | 6 ++++--
|
||||
3 files changed, 18 insertions(+), 12 deletions(-)
|
||||
|
||||
diff --git a/src/mode_build.ml b/src/mode_build.ml
|
||||
index f81341d..f0e5e09 100644
|
||||
--- a/src/mode_build.ml
|
||||
+++ b/src/mode_build.ml
|
||||
@@ -16,6 +16,8 @@
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*)
|
||||
|
||||
+let stdlib_stdout = stdout
|
||||
+
|
||||
open Unix
|
||||
open Unix.LargeFile
|
||||
open Printf
|
||||
@@ -123,7 +125,7 @@ let rec build debug
|
||||
(PackageSet.cardinal packages);
|
||||
if debug >= 2 then (
|
||||
List.iter (printf " - %s\n") pretty_packages;
|
||||
- flush Stdlib.stdout
|
||||
+ flush stdlib_stdout
|
||||
)
|
||||
);
|
||||
|
||||
@@ -207,7 +209,7 @@ let rec build debug
|
||||
(List.length files);
|
||||
if debug >= 2 then (
|
||||
List.iter (fun { ft_path = path } -> printf " - %s\n" path) files;
|
||||
- flush Stdlib.stdout
|
||||
+ flush stdlib_stdout
|
||||
)
|
||||
);
|
||||
|
||||
diff --git a/src/supermin.ml b/src/supermin.ml
|
||||
index bef9db6..d49c1e8 100644
|
||||
--- a/src/supermin.ml
|
||||
+++ b/src/supermin.ml
|
||||
@@ -16,6 +16,8 @@
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*)
|
||||
|
||||
+let stdlib_stderr = stderr
|
||||
+
|
||||
open Unix
|
||||
open Unix.LargeFile
|
||||
open Printf
|
||||
@@ -296,27 +298,27 @@ let () =
|
||||
main ()
|
||||
with
|
||||
| Unix.Unix_error (code, fname, "") -> (* from a syscall *)
|
||||
- Printexc.print_backtrace Stdlib.stderr;
|
||||
+ Printexc.print_backtrace stdlib_stderr;
|
||||
error "error: %s: %s" fname (Unix.error_message code)
|
||||
| Unix.Unix_error (code, fname, param) -> (* from a syscall *)
|
||||
- Printexc.print_backtrace Stdlib.stderr;
|
||||
+ Printexc.print_backtrace stdlib_stderr;
|
||||
error "error: %s: %s: %s" fname (Unix.error_message code) param
|
||||
| Failure msg -> (* from failwith/failwithf *)
|
||||
- Printexc.print_backtrace Stdlib.stderr;
|
||||
+ Printexc.print_backtrace stdlib_stderr;
|
||||
error "failure: %s" msg
|
||||
| Librpm.Multiple_matches (package, count) -> (* from librpm *)
|
||||
- Printexc.print_backtrace Stdlib.stderr;
|
||||
+ Printexc.print_backtrace stdlib_stderr;
|
||||
error "RPM error: %d occurrences for %s" count package
|
||||
| Invalid_argument msg -> (* probably should never happen *)
|
||||
- Printexc.print_backtrace Stdlib.stderr;
|
||||
+ Printexc.print_backtrace stdlib_stderr;
|
||||
error "internal error: invalid argument: %s" msg
|
||||
| Assert_failure (file, line, char) -> (* should never happen *)
|
||||
- Printexc.print_backtrace Stdlib.stderr;
|
||||
+ Printexc.print_backtrace stdlib_stderr;
|
||||
error "internal error: assertion failed at %s, line %d, char %d"
|
||||
file line char
|
||||
| Not_found -> (* should never happen *)
|
||||
- Printexc.print_backtrace Stdlib.stderr;
|
||||
+ Printexc.print_backtrace stdlib_stderr;
|
||||
error "internal error: Not_found exception was thrown"
|
||||
| exn -> (* something not matched above *)
|
||||
- Printexc.print_backtrace Stdlib.stderr;
|
||||
+ Printexc.print_backtrace stdlib_stderr;
|
||||
error "exception: %s" (Printexc.to_string exn)
|
||||
diff --git a/src/utils.ml b/src/utils.ml
|
||||
index ae99294..1dc4310 100644
|
||||
--- a/src/utils.ml
|
||||
+++ b/src/utils.ml
|
||||
@@ -16,6 +16,8 @@
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*)
|
||||
|
||||
+let stdlib_compare = compare
|
||||
+
|
||||
open Unix
|
||||
open Unix.LargeFile
|
||||
open Printf
|
||||
@@ -40,7 +42,7 @@ let dir_exists name =
|
||||
try (stat name).st_kind = S_DIR
|
||||
with Unix_error _ -> false
|
||||
|
||||
-let uniq ?(cmp = Stdlib.compare) xs =
|
||||
+let uniq ?(cmp = stdlib_compare) xs =
|
||||
let rec loop acc = function
|
||||
| [] -> acc
|
||||
| [x] -> x :: acc
|
||||
@@ -51,7 +53,7 @@ let uniq ?(cmp = Stdlib.compare) xs =
|
||||
in
|
||||
List.rev (loop [] xs)
|
||||
|
||||
-let sort_uniq ?(cmp = Stdlib.compare) xs =
|
||||
+let sort_uniq ?(cmp = stdlib_compare) xs =
|
||||
let xs = List.sort cmp xs in
|
||||
let xs = uniq ~cmp xs in
|
||||
xs
|
||||
--
|
||||
2.42.0
|
||||
|
@ -1,58 +0,0 @@
|
||||
From 92d5d7e8c27088fa3fb8e5e6e9c5b8d3209053d6 Mon Sep 17 00:00:00 2001
|
||||
From: "Richard W.M. Jones" <rjones@redhat.com>
|
||||
Date: Tue, 30 May 2023 09:12:14 +0100
|
||||
Subject: [PATCH 04/13] rpm: Detect dnf5 and omit missing options
|
||||
|
||||
Fixes: https://bugzilla.redhat.com/show_bug.cgi?id=2209412
|
||||
---
|
||||
src/ph_rpm.ml | 23 +++++++++++++++++++++--
|
||||
1 file changed, 21 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/src/ph_rpm.ml b/src/ph_rpm.ml
|
||||
index 2c199c1..3e803c6 100644
|
||||
--- a/src/ph_rpm.ml
|
||||
+++ b/src/ph_rpm.ml
|
||||
@@ -482,19 +482,38 @@ and download_all_packages_with_dnf pkgs dir tdir =
|
||||
(* Old dnf didn't create the destdir directory, newer versions do. *)
|
||||
mkdir tdir 0o700;
|
||||
|
||||
+ (* dnf5 lacks various options so we have to detect it:
|
||||
+ * https://github.com/rpm-software-management/dnf5/issues/580
|
||||
+ * https://github.com/rpm-software-management/dnf5/issues/581
|
||||
+ *)
|
||||
+ let is_dnf5 = is_dnf5 () in
|
||||
+ let debug_quiet_option =
|
||||
+ if !settings.debug < 1 then " -q"
|
||||
+ else if not is_dnf5 then " -v"
|
||||
+ else "" in
|
||||
+
|
||||
let rpms = pkgs_as_NA_rpms pkgs in
|
||||
|
||||
let cmd =
|
||||
- sprintf "%s download%s%s --destdir=%s --disableexcludes=all %s"
|
||||
+ sprintf "%s download%s%s%s --destdir=%s %s"
|
||||
Config.dnf
|
||||
- (if !settings.debug >= 1 then " -v" else " -q")
|
||||
+ debug_quiet_option
|
||||
(match !settings.packager_config with
|
||||
| None -> ""
|
||||
| Some filename -> sprintf " -c %s" (quote filename))
|
||||
+ (if not is_dnf5 then " --disableexcludes=all" else "")
|
||||
(quote tdir)
|
||||
(quoted_list rpms) in
|
||||
run_command cmd
|
||||
|
||||
+and is_dnf5 () =
|
||||
+ let cmd = sprintf "%s --version" Config.dnf in
|
||||
+ let lines = run_command_get_lines cmd in
|
||||
+ match lines with
|
||||
+ | [] -> error "rpm: no output from '%s' command" cmd
|
||||
+ | line :: _ when find line "version 5" >= 0 -> true
|
||||
+ | _ -> false
|
||||
+
|
||||
and pkgs_as_NA_rpms pkgs =
|
||||
let rpms = List.map rpm_of_pkg (PackageSet.elements pkgs) in
|
||||
List.map (
|
||||
--
|
||||
2.42.0
|
||||
|
@ -1,28 +0,0 @@
|
||||
From 057ea99a3211057d2cb2c9971afe56e0a85e0f78 Mon Sep 17 00:00:00 2001
|
||||
From: "Richard W.M. Jones" <rjones@redhat.com>
|
||||
Date: Wed, 31 May 2023 12:52:13 +0100
|
||||
Subject: [PATCH 05/13] rpm: Use dnf --config instead of -c
|
||||
|
||||
dnf5 does not support -c. dnf4 supports either.
|
||||
|
||||
Fixes: https://bugzilla.redhat.com/show_bug.cgi?id=2211386
|
||||
---
|
||||
src/ph_rpm.ml | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/src/ph_rpm.ml b/src/ph_rpm.ml
|
||||
index 3e803c6..e94f35f 100644
|
||||
--- a/src/ph_rpm.ml
|
||||
+++ b/src/ph_rpm.ml
|
||||
@@ -500,7 +500,7 @@ and download_all_packages_with_dnf pkgs dir tdir =
|
||||
debug_quiet_option
|
||||
(match !settings.packager_config with
|
||||
| None -> ""
|
||||
- | Some filename -> sprintf " -c %s" (quote filename))
|
||||
+ | Some filename -> sprintf " --config=%s" (quote filename))
|
||||
(if not is_dnf5 then " --disableexcludes=all" else "")
|
||||
(quote tdir)
|
||||
(quoted_list rpms) in
|
||||
--
|
||||
2.42.0
|
||||
|
@ -1,56 +0,0 @@
|
||||
From 8dd37da1b5979842b0db44b44655eeaf621f7ac9 Mon Sep 17 00:00:00 2001
|
||||
From: "Richard W.M. Jones" <rjones@redhat.com>
|
||||
Date: Mon, 12 Jun 2023 12:51:56 +0100
|
||||
Subject: [PATCH 06/13] src: Improved debugging of the supermin if-newer
|
||||
calculation
|
||||
|
||||
Also I expanded the code to make it easier to read. There is no
|
||||
change to the calculation intended.
|
||||
---
|
||||
src/supermin.ml | 29 ++++++++++++++++++++++++++---
|
||||
1 file changed, 26 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/src/supermin.ml b/src/supermin.ml
|
||||
index d49c1e8..c30c73c 100644
|
||||
--- a/src/supermin.ml
|
||||
+++ b/src/supermin.ml
|
||||
@@ -241,10 +241,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
|
||||
--
|
||||
2.42.0
|
||||
|
@ -1,39 +0,0 @@
|
||||
From 8c38641042e274a713a18daf7fc85584ca0fc9bb Mon Sep 17 00:00:00 2001
|
||||
From: "Richard W.M. Jones" <rjones@redhat.com>
|
||||
Date: Mon, 12 Jun 2023 13:02:37 +0100
|
||||
Subject: [PATCH 07/13] src: Fix --if-newer --copy-kernel
|
||||
|
||||
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
|
||||
---
|
||||
src/format_ext2_kernel.ml | 5 ++++-
|
||||
1 file changed, 4 insertions(+), 1 deletion(-)
|
||||
|
||||
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
|
||||
)
|
||||
--
|
||||
2.42.0
|
||||
|
@ -1,29 +0,0 @@
|
||||
From 2f3eae350aa89b8067201a8bb24ff830d0fd919c Mon Sep 17 00:00:00 2001
|
||||
From: "Richard W.M. Jones" <rjones@redhat.com>
|
||||
Date: Thu, 22 Jun 2023 08:35:51 +0100
|
||||
Subject: [PATCH 08/13] rpm: Reenable disable_excludes for dnf5
|
||||
|
||||
Updates: commit 92d5d7e8c27088fa3fb8e5e6e9c5b8d3209053d6
|
||||
Thanks: Jan Kolarik
|
||||
Link: https://github.com/rpm-software-management/dnf5/issues/581#issuecomment-1600682713
|
||||
---
|
||||
src/ph_rpm.ml | 3 ++-
|
||||
1 file changed, 2 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/src/ph_rpm.ml b/src/ph_rpm.ml
|
||||
index e94f35f..783d1bb 100644
|
||||
--- a/src/ph_rpm.ml
|
||||
+++ b/src/ph_rpm.ml
|
||||
@@ -501,7 +501,8 @@ and download_all_packages_with_dnf pkgs dir tdir =
|
||||
(match !settings.packager_config with
|
||||
| None -> ""
|
||||
| Some filename -> sprintf " --config=%s" (quote filename))
|
||||
- (if not is_dnf5 then " --disableexcludes=all" else "")
|
||||
+ (if not is_dnf5 then " --disableexcludes=all"
|
||||
+ else " --setopt=disable_excludes=*")
|
||||
(quote tdir)
|
||||
(quoted_list rpms) in
|
||||
run_command cmd
|
||||
--
|
||||
2.42.0
|
||||
|
@ -1,26 +0,0 @@
|
||||
From 4b3922feb65150f3423d0877038c5ba6e16d910c Mon Sep 17 00:00:00 2001
|
||||
From: Simon Fischer <1522981+Fischer-Simon@users.noreply.github.com>
|
||||
Date: Wed, 12 Jul 2023 17:10:53 +0200
|
||||
Subject: [PATCH 09/13] src/format_ext2_kernel.ml: Fix kernel filtering for
|
||||
aarch64 architecture
|
||||
|
||||
Add appropriate globs for arm based kernels. The file names end in -arm64 but the architecture is named aarch64.
|
||||
---
|
||||
src/format_ext2_kernel.ml | 1 +
|
||||
1 file changed, 1 insertion(+)
|
||||
|
||||
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]
|
||||
--
|
||||
2.42.0
|
||||
|
@ -1,33 +0,0 @@
|
||||
From dc80dbbef60d5d81a7d4321683a8c7305dc04972 Mon Sep 17 00:00:00 2001
|
||||
From: "Richard W.M. Jones" <rjones@redhat.com>
|
||||
Date: Wed, 12 Jul 2023 22:37:58 +0100
|
||||
Subject: [PATCH 10/13] ocamlc: Use -output-complete-exe instead of -custom
|
||||
|
||||
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.
|
||||
---
|
||||
src/Makefile.am | 3 ++-
|
||||
1 file changed, 2 insertions(+), 1 deletion(-)
|
||||
|
||||
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
|
||||
--
|
||||
2.42.0
|
||||
|
@ -1,42 +0,0 @@
|
||||
From 59a8ffc40db94a38879d9c923520e0bd70ffa271 Mon Sep 17 00:00:00 2001
|
||||
From: "Richard W.M. Jones" <rjones@redhat.com>
|
||||
Date: Wed, 12 Jul 2023 22:51:43 +0100
|
||||
Subject: [PATCH 11/13] ocamlc: Only supply -output-complete-exe to final link
|
||||
|
||||
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
|
||||
---
|
||||
src/Makefile.am | 7 ++++---
|
||||
1 file changed, 4 insertions(+), 3 deletions(-)
|
||||
|
||||
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:
|
||||
--
|
||||
2.42.0
|
||||
|
@ -1,36 +0,0 @@
|
||||
From 9a0d078dc35fde7a715666bce6c765ed5fe5e916 Mon Sep 17 00:00:00 2001
|
||||
From: "Richard W.M. Jones" <rjones@redhat.com>
|
||||
Date: Fri, 10 Nov 2023 08:55:25 +0000
|
||||
Subject: [PATCH 12/13] src/format_ext2_kernel.ml: Rename function file ->
|
||||
kernel
|
||||
|
||||
No change, just rename the function.
|
||||
---
|
||||
src/format_ext2_kernel.ml | 4 ++--
|
||||
1 file changed, 2 insertions(+), 2 deletions(-)
|
||||
|
||||
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 (
|
||||
--
|
||||
2.42.0
|
||||
|
@ -1,72 +0,0 @@
|
||||
From 5230e2c3cd07e82bd6431e871e239f7056bf25ad Mon Sep 17 00:00:00 2001
|
||||
From: "Richard W.M. Jones" <rjones@redhat.com>
|
||||
Date: Fri, 10 Nov 2023 10:20:49 +0000
|
||||
Subject: [PATCH 13/13] src: Uncompress kernel on RISC-V
|
||||
|
||||
---
|
||||
src/format_ext2_kernel.ml | 35 ++++++++++++++++++++++++++++++++++-
|
||||
1 file changed, 34 insertions(+), 1 deletion(-)
|
||||
|
||||
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
|
||||
--
|
||||
2.42.0
|
||||
|
4
sources
4
sources
@ -1,2 +1,2 @@
|
||||
SHA512 (supermin-5.3.3.tar.gz) = 39eb687a4e6fbd13d356612f950352848626fe68a14054a62ac7fa1bb3b42be716189b1505bf137331974ea02d75e2e8079f412a133af165cba7767699925f38
|
||||
SHA512 (supermin-5.3.3.tar.gz.sig) = e5109e718b06992bde73be913be49cd00358ec835566beb1f207109f54f73dbc6600275e929eb88fea42bda13643ec3ee9bb80032f8a05c37537f28bafb49fad
|
||||
SHA512 (supermin-5.3.4.tar.gz) = 383d783f57af3a870f1debd3c87929b1d73a12d404c3268640963967a53582419923076410d47e79de0eb2a111fe66a998258e636de41caa3ff7f296b5458797
|
||||
SHA512 (supermin-5.3.4.tar.gz.sig) = 1cae330cc4cee6c48e238738a4fd26b31f21f5ffb054b0496d6eebc5e45d0599c2a9586f3e0a9fe25475ab184394bf5d4155a5c5f82b83a380da0994568c8937
|
||||
|
@ -37,8 +37,8 @@ ExcludeArch: %{ix86}
|
||||
|
||||
Summary: Tool for creating supermin appliances
|
||||
Name: supermin
|
||||
Version: 5.3.3
|
||||
Release: 19%{?dist}
|
||||
Version: 5.3.4
|
||||
Release: 1%{?dist}
|
||||
License: GPL-2.0-or-later
|
||||
|
||||
ExclusiveArch: %{kernel_arches}
|
||||
@ -53,29 +53,6 @@ Source1: http://download.libguestfs.org/supermin/%{source_directory}/%{nam
|
||||
# Keyring used to verify tarball signature.
|
||||
Source2: libguestfs.keyring
|
||||
|
||||
# https://fedoraproject.org/wiki/Changes/RelocateRPMToUsr
|
||||
Patch: 0001-rpm-New-RPM-database-location-in-usr-lib-sysimage-rp.patch
|
||||
# OCaml 5 compatibility:
|
||||
Patch: 0002-Add-support-for-OCaml-5.0.patch
|
||||
Patch: 0003-Restore-compatibility-with-OCaml-4.07.patch
|
||||
# dnf5 (https://bugzilla.redhat.com/show_bug.cgi?id=2209412):
|
||||
Patch: 0004-rpm-Detect-dnf5-and-omit-missing-options.patch
|
||||
# dnf5 (https://bugzilla.redhat.com/show_bug.cgi?id=2211386)
|
||||
Patch: 0005-rpm-Use-dnf-config-instead-of-c.patch
|
||||
# Fix --if-newer
|
||||
Patch: 0006-src-Improved-debugging-of-the-supermin-if-newer-calc.patch
|
||||
Patch: 0007-src-Fix-if-newer-copy-kernel.patch
|
||||
# Reenable disable_excludes for dnf5
|
||||
Patch: 0008-rpm-Reenable-disable_excludes-for-dnf5.patch
|
||||
# Fix kernel filtering on aarch64
|
||||
Patch: 0009-src-format_ext2_kernel.ml-Fix-kernel-filtering-for-a.patch
|
||||
# Fix bytecode builds so they resist stripping
|
||||
Patch: 0010-ocamlc-Use-output-complete-exe-instead-of-custom.patch
|
||||
Patch: 0011-ocamlc-Only-supply-output-complete-exe-to-final-link.patch
|
||||
# Fix RISC-V gzip compressed kernels
|
||||
Patch: 0012-src-format_ext2_kernel.ml-Rename-function-file-kerne.patch
|
||||
Patch: 0013-src-Uncompress-kernel-on-RISC-V.patch
|
||||
|
||||
BuildRequires: gcc
|
||||
BuildRequires: make
|
||||
BuildRequires: autoconf, automake
|
||||
@ -229,6 +206,10 @@ make check || {
|
||||
|
||||
|
||||
%changelog
|
||||
* Thu Jan 11 2023 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
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user