From 18d87c62d14befa14fad6032a29c899cbaf23d14 Mon Sep 17 00:00:00 2001 From: "Richard W.M. Jones" Date: Thu, 5 Jun 2025 15:55:15 +0100 Subject: [PATCH] Rebase to virt-v2v 2.7.17 related: RHEL-81735 virt-v2v fails to convert XFS guest with dirty filesystem resolves: RHEL-95365 --- ...irty-log-for-XFS-filesystems-before-.patch | 53 + ...required-to-make-AM_GNU_GETTEXT-work.patch | 3434 ----------------- ...RHEL-Fixes-for-libguestfs-winsupport.patch | 10 +- ...ck-n-flag-when-checking-ext2-3-4-fil.patch | 60 - ...correct-qemu-binary-for-o-qemu-mode-.patch | 2 +- ...-the-qemu-boot-oo-qemu-boot-option-R.patch | 2 +- ...-supported-sound-cards-to-match-RHEL.patch | 2 +- ...sk-force-VNC-as-display-RHBZ-1372671.patch | 2 +- ...-for-supported-v2v-hypervisors-guest.patch | 2 +- ...h => 0008-RHEL-Remove-input-from-Xen.patch | 2 +- ...e.patch => 0009-RHEL-Remove-o-glance.patch | 2 +- ...=> 0010-RHEL-tests-Remove-btrfs-test.patch | 2 +- ...0011-RHEL-Remove-block-driver-option.patch | 2 +- ...virt-o-ovirt-upload-and-o-vdsm-modes.patch | 2 +- ...-about-virt-v2v-in-place-not-being-s.patch | 2 +- sources | 4 +- virt-v2v.spec | 37 +- 17 files changed, 91 insertions(+), 3529 deletions(-) create mode 100644 0001-convert-Replay-dirty-log-for-XFS-filesystems-before-.patch delete mode 100644 0001-m4-Add-junk-required-to-make-AM_GNU_GETTEXT-work.patch rename 0003-RHEL-Fixes-for-libguestfs-winsupport.patch => 0002-RHEL-Fixes-for-libguestfs-winsupport.patch (95%) delete mode 100644 0002-convert-Use-e2fsck-n-flag-when-checking-ext2-3-4-fil.patch rename 0004-RHEL-v2v-Select-correct-qemu-binary-for-o-qemu-mode-.patch => 0003-RHEL-v2v-Select-correct-qemu-binary-for-o-qemu-mode-.patch (94%) rename 0005-RHEL-v2v-Disable-the-qemu-boot-oo-qemu-boot-option-R.patch => 0004-RHEL-v2v-Disable-the-qemu-boot-oo-qemu-boot-option-R.patch (97%) rename 0006-RHEL-Fix-list-of-supported-sound-cards-to-match-RHEL.patch => 0005-RHEL-Fix-list-of-supported-sound-cards-to-match-RHEL.patch (92%) rename 0007-RHEL-v2v-i-disk-force-VNC-as-display-RHBZ-1372671.patch => 0006-RHEL-v2v-i-disk-force-VNC-as-display-RHBZ-1372671.patch (93%) rename 0008-RHEL-point-to-KB-for-supported-v2v-hypervisors-guest.patch => 0007-RHEL-point-to-KB-for-supported-v2v-hypervisors-guest.patch (97%) rename 0009-RHEL-Remove-input-from-Xen.patch => 0008-RHEL-Remove-input-from-Xen.patch (99%) rename 0010-RHEL-Remove-o-glance.patch => 0009-RHEL-Remove-o-glance.patch (99%) rename 0011-RHEL-tests-Remove-btrfs-test.patch => 0010-RHEL-tests-Remove-btrfs-test.patch (90%) rename 0012-RHEL-Remove-block-driver-option.patch => 0011-RHEL-Remove-block-driver-option.patch (98%) rename 0013-RHEL-Remove-o-ovirt-o-ovirt-upload-and-o-vdsm-modes.patch => 0012-RHEL-Remove-o-ovirt-o-ovirt-upload-and-o-vdsm-modes.patch (99%) rename 0014-RHEL-Add-warning-about-virt-v2v-in-place-not-being-s.patch => 0013-RHEL-Add-warning-about-virt-v2v-in-place-not-being-s.patch (96%) diff --git a/0001-convert-Replay-dirty-log-for-XFS-filesystems-before-.patch b/0001-convert-Replay-dirty-log-for-XFS-filesystems-before-.patch new file mode 100644 index 0000000..d3c1236 --- /dev/null +++ b/0001-convert-Replay-dirty-log-for-XFS-filesystems-before-.patch @@ -0,0 +1,53 @@ +From 2e7c03b967e2c5bbe01a0c9cc255238d19c46540 Mon Sep 17 00:00:00 2001 +From: "Richard W.M. Jones" +Date: Thu, 5 Jun 2025 15:32:35 +0100 +Subject: [PATCH] convert: Replay dirty log for XFS filesystems before running + xfs_repair + +Reported-by: Vera Wu +Thanks: Eric Sandeen, Ming Xie +Fixes: https://issues.redhat.com/browse/RHEL-95365 +Fixes: commit 78ffb68d4f1ef8af776c24537feaf832fd3ec7e9 +--- + convert/convert.ml | 14 ++++++++++++-- + 1 file changed, 12 insertions(+), 2 deletions(-) + +diff --git a/convert/convert.ml b/convert/convert.ml +index a6e0d532..ad0b82b1 100644 +--- a/convert/convert.ml ++++ b/convert/convert.ml +@@ -83,7 +83,7 @@ let rec convert input_disks options source = + + (* Check (fsck) the filesystems before conversion. *) + message (f_"Checking filesystem integrity before conversion"); +- do_fsck g; ++ do_fsck ~before:true g; + + (* Detect firmware. *) + message (f_"Detecting if this guest uses BIOS or UEFI to boot"); +@@ -237,7 +237,7 @@ and do_fstrim g inspect = + * If fsck returns an error then the conversion will fail. We do not + * attempt to do any repairs. + *) +-and do_fsck g = ++and do_fsck ?(before=false) g = + let fses = g#list_filesystems () in + List.iter (function + | dev, _ when String.starts_with "btrfsvol:" dev -> +@@ -261,6 +261,16 @@ and do_fsck g = + g#e2fsck ~forceno:true dev + + | dev, "xfs" -> ++ if before then ( ++ (* xfs_repair cannot replay the dirty log, only the kernel can, ++ * so we must first mount then unmount the filesystem, and then ++ * we can run xfs_repair. Unlike what is documented, xfs_repair ++ * doesn't return 2 in this case. Mount r/o is fine as that ++ * will still replay the log (RHEL-95365) ++ *) ++ Fun.protect ~finally:g#umount_all (fun () -> g#mount_ro dev "/"); ++ ); ++ + if g#xfs_repair ~nomodify:true dev <> 0 then + error (f_"detected errors on the XFS filesystem on %s") dev + diff --git a/0001-m4-Add-junk-required-to-make-AM_GNU_GETTEXT-work.patch b/0001-m4-Add-junk-required-to-make-AM_GNU_GETTEXT-work.patch deleted file mode 100644 index 774ce4c..0000000 --- a/0001-m4-Add-junk-required-to-make-AM_GNU_GETTEXT-work.patch +++ /dev/null @@ -1,3434 +0,0 @@ -From 925440094eceb48720929663ba9883d7884bdd4c Mon Sep 17 00:00:00 2001 -From: "Richard W.M. Jones" -Date: Mon, 19 May 2025 15:53:29 +0100 -Subject: [PATCH] m4: Add junk required to make 'AM_GNU_GETTEXT' work - -Run gettextize, revert most of its changes, but add the m4/* files -that might be required. - -This is a short term fix. A better / longer-term fix is described by -Dan here: - -https://lists.fedoraproject.org/archives/list/devel@lists.fedoraproject.org/message/2AZNWQQ6CBRFZCAADVYQHU5UN5J2JT2F/ - -Cherry picked from -libguestfs commit b9f75ca5b8d091c91187720cd52210117718c693 ---- - build-aux/config.rpath | 93 ++++- - m4/build-to-host.m4 | 274 ++++++++++++++ - m4/gettext.m4 | 393 ++++++++++++++++++++ - m4/host-cpu-c-abi.m4 | 532 +++++++++++++++++++++++++++ - m4/iconv.m4 | 324 ++++++++++++++++ - m4/intlmacosx.m4 | 71 ++++ - m4/lib-ld.m4 | 170 +++++++++ - m4/lib-link.m4 | 815 +++++++++++++++++++++++++++++++++++++++++ - m4/lib-prefix.m4 | 334 +++++++++++++++++ - m4/nls.m4 | 33 ++ - m4/po.m4 | 157 ++++++++ - m4/progtest.m4 | 93 +++++ - 12 files changed, 3276 insertions(+), 13 deletions(-) - create mode 100644 m4/build-to-host.m4 - create mode 100644 m4/gettext.m4 - create mode 100644 m4/host-cpu-c-abi.m4 - create mode 100644 m4/iconv.m4 - create mode 100644 m4/intlmacosx.m4 - create mode 100644 m4/lib-ld.m4 - create mode 100644 m4/lib-link.m4 - create mode 100644 m4/lib-prefix.m4 - create mode 100644 m4/nls.m4 - create mode 100644 m4/po.m4 - create mode 100644 m4/progtest.m4 - -diff --git a/build-aux/config.rpath b/build-aux/config.rpath -index 29aae976..e42a98cb 100755 ---- a/build-aux/config.rpath -+++ b/build-aux/config.rpath -@@ -1,23 +1,15 @@ - #!/usr/bin/sh - # Output a system dependent set of variables, describing how to set the --# run time search path of shared libraries in an executable. -+# run time search path of shared libraries in a binary (executable or -+# shared library). - # --# Copyright 1996-2019 Free Software Foundation, Inc. -+# Copyright 1996-2025 Free Software Foundation, Inc. - # Taken from GNU libtool, 2001 - # Originally by Gordon Matzigkeit , 1996 - # - # This file is free software; the Free Software Foundation gives - # unlimited permission to copy and/or distribute it, with or without - # modifications, as long as this notice is preserved. --# --# The first argument passed to this file is the canonical host specification, --# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM --# or --# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM --# The environment variables CC, GCC, LDFLAGS, LD, with_gnu_ld --# should be set by the caller. --# --# The set of defined variables is at the end of this script. - - # Known limitations: - # - On IRIX 6.5 with CC="cc", the run time search patch must not be longer -@@ -25,6 +17,81 @@ - # known workaround is to choose shorter directory names for the build - # directory and/or the installation directory. - -+# func_usage -+# outputs to stdout the --help usage message. -+func_usage () -+{ -+ echo "\ -+Usage: config.rpath [OPTION] HOST -+ -+Prints shell variable assignments that describe how to hardcode a directory -+for the lookup of shared libraries into a binary (executable or shared library). -+ -+The first argument passed to this file is the canonical host specification, -+ CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM -+or -+ CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM -+ -+The environment variables CC, GCC, LDFLAGS, LD, with_gnu_ld -+should be set by the caller. -+ -+The set of defined variables is at the end of this script. -+ -+Options: -+ --help print this help and exit -+ --version print version information and exit -+ -+Send patches and bug reports to ." -+} -+ -+# func_version -+# outputs to stdout the --version message. -+func_version () -+{ -+ echo "config.rpath (GNU gnulib, module havelib)" -+ echo "Copyright (C) 2025 Free Software Foundation, Inc. -+License: All-Permissive. -+This is free software: you are free to change and redistribute it. -+There is NO WARRANTY, to the extent permitted by law." -+ echo -+ printf 'Written by %s.\n' "Bruno Haible" -+} -+ -+# func_fatal_error message -+# outputs to stderr a fatal error message, and terminates the program. -+func_fatal_error () -+{ -+ echo "config.rpath: *** $1" 1>&2 -+ echo "config.rpath: *** Stop." 1>&2 -+ exit 1 -+} -+ -+# Command-line option processing. -+while test $# -gt 0; do -+ case "$1" in -+ --help | --hel | --he | --h ) -+ func_usage -+ exit 0 ;; -+ --version | --versio | --versi | --vers | --ver | --ve | --v ) -+ func_version -+ exit 0 ;; -+ -- ) # Stop option processing -+ shift; break ;; -+ -* ) -+ func_fatal_error "unrecognized option: $1" -+ ;; -+ * ) -+ break ;; -+ esac -+done -+ -+if test $# -gt 1; then -+ func_fatal_error "too many arguments" -+fi -+if test $# -lt 1; then -+ func_fatal_error "too few arguments" -+fi -+ - # All known linkers require a '.a' archive for static linking (except MSVC, - # which needs '.lib'). - libext=a -@@ -371,7 +438,7 @@ else - hardcode_direct=yes - hardcode_minus_L=yes - ;; -- freebsd* | dragonfly*) -+ freebsd* | dragonfly* | midnightbsd*) - hardcode_libdir_flag_spec='-R$libdir' - hardcode_direct=yes - ;; -@@ -547,7 +614,7 @@ case "$host_os" in - freebsd[23].*) - library_names_spec='$libname$shrext$versuffix' - ;; -- freebsd* | dragonfly*) -+ freebsd* | dragonfly* | midnightbsd*) - library_names_spec='$libname$shrext' - ;; - gnu*) -diff --git a/m4/build-to-host.m4 b/m4/build-to-host.m4 -new file mode 100644 -index 00000000..01bff8f3 ---- /dev/null -+++ b/m4/build-to-host.m4 -@@ -0,0 +1,274 @@ -+# build-to-host.m4 -+# serial 5 -+dnl Copyright (C) 2023-2025 Free Software Foundation, Inc. -+dnl This file is free software; the Free Software Foundation -+dnl gives unlimited permission to copy and/or distribute it, -+dnl with or without modifications, as long as this notice is preserved. -+dnl This file is offered as-is, without any warranty. -+ -+dnl Written by Bruno Haible. -+ -+dnl When the build environment ($build_os) is different from the target runtime -+dnl environment ($host_os), file names may need to be converted from the build -+dnl environment syntax to the target runtime environment syntax. This is -+dnl because the Makefiles are executed (mostly) by build environment tools and -+dnl therefore expect file names in build environment syntax, whereas the runtime -+dnl expects file names in target runtime environment syntax. -+dnl -+dnl For example, if $build_os = cygwin and $host_os = mingw32, filenames need -+dnl be converted from Cygwin syntax to native Windows syntax: -+dnl /cygdrive/c/foo/bar -> C:\foo\bar -+dnl /usr/local/share -> C:\cygwin64\usr\local\share -+dnl -+dnl gl_BUILD_TO_HOST([somedir]) -+dnl This macro takes as input an AC_SUBSTed variable 'somedir', which must -+dnl already have its final value assigned, and produces two additional -+dnl AC_SUBSTed variables 'somedir_c' and 'somedir_c_make', that designate the -+dnl same file name value, just in different syntax: -+dnl - somedir_c is the file name in target runtime environment syntax, -+dnl as a C string (starting and ending with a double-quote, -+dnl and with escaped backslashes and double-quotes in -+dnl between). -+dnl - somedir_c_make is the same thing, escaped for use in a Makefile. -+ -+AC_DEFUN([gl_BUILD_TO_HOST], -+[ -+ AC_REQUIRE([AC_CANONICAL_BUILD]) -+ AC_REQUIRE([AC_CANONICAL_HOST]) -+ AC_REQUIRE([gl_BUILD_TO_HOST_INIT]) -+ -+ dnl Define somedir_c. -+ gl_final_[$1]="$[$1]" -+ dnl Translate it from build syntax to host syntax. -+ case "$build_os" in -+ cygwin*) -+ case "$host_os" in -+ mingw* | windows*) -+ gl_final_[$1]=`cygpath -w "$gl_final_[$1]"` ;; -+ esac -+ ;; -+ esac -+ dnl Convert it to C string syntax. -+ [$1]_c=`printf '%s\n' "$gl_final_[$1]" | sed -e "$gl_sed_double_backslashes" -e "$gl_sed_escape_doublequotes" | tr -d "$gl_tr_cr"` -+ [$1]_c='"'"$[$1]_c"'"' -+ AC_SUBST([$1_c]) -+ -+ dnl Define somedir_c_make. -+ [$1]_c_make=`printf '%s\n' "$[$1]_c" | sed -e "$gl_sed_escape_for_make_1" -e "$gl_sed_escape_for_make_2" | tr -d "$gl_tr_cr"` -+ dnl Use the substituted somedir variable, when possible, so that the user -+ dnl may adjust somedir a posteriori when there are no special characters. -+ if test "$[$1]_c_make" = '\"'"${gl_final_[$1]}"'\"'; then -+ [$1]_c_make='\"$([$1])\"' -+ fi -+ AC_SUBST([$1_c_make]) -+]) -+ -+dnl Some initializations for gl_BUILD_TO_HOST. -+AC_DEFUN([gl_BUILD_TO_HOST_INIT], -+[ -+ gl_sed_double_backslashes='s/\\/\\\\/g' -+ gl_sed_escape_doublequotes='s/"/\\"/g' -+changequote(,)dnl -+ gl_sed_escape_for_make_1="s,\\([ \"&'();<>\\\\\`|]\\),\\\\\\1,g" -+changequote([,])dnl -+ gl_sed_escape_for_make_2='s,\$,\\$$,g' -+ dnl Find out how to remove carriage returns from output. Solaris /usr/ucb/tr -+ dnl does not understand '\r'. -+ case `echo r | tr -d '\r'` in -+ '') gl_tr_cr='\015' ;; -+ *) gl_tr_cr='\r' ;; -+ esac -+]) -+ -+ -+dnl The following macros are convenience invocations of gl_BUILD_TO_HOST -+dnl for some of the variables that are defined by Autoconf. -+dnl To do so for _all_ the possible variables, use the module 'configmake'. -+ -+dnl Defines bindir_c and bindir_c_make. -+AC_DEFUN_ONCE([gl_BUILD_TO_HOST_BINDIR], -+[ -+ dnl Find the final value of bindir. -+ gl_saved_prefix="${prefix}" -+ gl_saved_exec_prefix="${exec_prefix}" -+ gl_saved_bindir="${bindir}" -+ dnl Unfortunately, prefix and exec_prefix get only finally determined -+ dnl at the end of configure. -+ if test "X$prefix" = "XNONE"; then -+ prefix="$ac_default_prefix" -+ fi -+ if test "X$exec_prefix" = "XNONE"; then -+ exec_prefix='${prefix}' -+ fi -+ eval exec_prefix="$exec_prefix" -+ eval bindir="$bindir" -+ gl_BUILD_TO_HOST([bindir]) -+ bindir="${gl_saved_bindir}" -+ exec_prefix="${gl_saved_exec_prefix}" -+ prefix="${gl_saved_prefix}" -+]) -+ -+dnl Defines datadir_c and datadir_c_make, -+dnl where datadir = $(datarootdir) -+AC_DEFUN_ONCE([gl_BUILD_TO_HOST_DATADIR], -+[ -+ dnl Find the final value of datadir. -+ gl_saved_prefix="${prefix}" -+ gl_saved_datarootdir="${datarootdir}" -+ gl_saved_datadir="${datadir}" -+ dnl Unfortunately, prefix gets only finally determined at the end of -+ dnl configure. -+ if test "X$prefix" = "XNONE"; then -+ prefix="$ac_default_prefix" -+ fi -+ eval datarootdir="$datarootdir" -+ eval datadir="$datadir" -+ gl_BUILD_TO_HOST([datadir]) -+ datadir="${gl_saved_datadir}" -+ datarootdir="${gl_saved_datarootdir}" -+ prefix="${gl_saved_prefix}" -+]) -+ -+dnl Defines libdir_c and libdir_c_make. -+AC_DEFUN_ONCE([gl_BUILD_TO_HOST_LIBDIR], -+[ -+ dnl Find the final value of libdir. -+ gl_saved_prefix="${prefix}" -+ gl_saved_exec_prefix="${exec_prefix}" -+ gl_saved_libdir="${libdir}" -+ dnl Unfortunately, prefix and exec_prefix get only finally determined -+ dnl at the end of configure. -+ if test "X$prefix" = "XNONE"; then -+ prefix="$ac_default_prefix" -+ fi -+ if test "X$exec_prefix" = "XNONE"; then -+ exec_prefix='${prefix}' -+ fi -+ eval exec_prefix="$exec_prefix" -+ eval libdir="$libdir" -+ gl_BUILD_TO_HOST([libdir]) -+ libdir="${gl_saved_libdir}" -+ exec_prefix="${gl_saved_exec_prefix}" -+ prefix="${gl_saved_prefix}" -+]) -+ -+dnl Defines libexecdir_c and libexecdir_c_make. -+AC_DEFUN_ONCE([gl_BUILD_TO_HOST_LIBEXECDIR], -+[ -+ dnl Find the final value of libexecdir. -+ gl_saved_prefix="${prefix}" -+ gl_saved_exec_prefix="${exec_prefix}" -+ gl_saved_libexecdir="${libexecdir}" -+ dnl Unfortunately, prefix and exec_prefix get only finally determined -+ dnl at the end of configure. -+ if test "X$prefix" = "XNONE"; then -+ prefix="$ac_default_prefix" -+ fi -+ if test "X$exec_prefix" = "XNONE"; then -+ exec_prefix='${prefix}' -+ fi -+ eval exec_prefix="$exec_prefix" -+ eval libexecdir="$libexecdir" -+ gl_BUILD_TO_HOST([libexecdir]) -+ libexecdir="${gl_saved_libexecdir}" -+ exec_prefix="${gl_saved_exec_prefix}" -+ prefix="${gl_saved_prefix}" -+]) -+ -+dnl Defines localedir_c and localedir_c_make. -+AC_DEFUN_ONCE([gl_BUILD_TO_HOST_LOCALEDIR], -+[ -+ dnl Find the final value of localedir. -+ gl_saved_prefix="${prefix}" -+ gl_saved_datarootdir="${datarootdir}" -+ gl_saved_localedir="${localedir}" -+ dnl Unfortunately, prefix gets only finally determined at the end of -+ dnl configure. -+ if test "X$prefix" = "XNONE"; then -+ prefix="$ac_default_prefix" -+ fi -+ eval datarootdir="$datarootdir" -+ eval localedir="$localedir" -+ gl_BUILD_TO_HOST([localedir]) -+ localedir="${gl_saved_localedir}" -+ datarootdir="${gl_saved_datarootdir}" -+ prefix="${gl_saved_prefix}" -+]) -+ -+dnl Defines pkgdatadir_c and pkgdatadir_c_make, -+dnl where pkgdatadir = $(datadir)/$(PACKAGE) -+AC_DEFUN_ONCE([gl_BUILD_TO_HOST_PKGDATADIR], -+[ -+ dnl Find the final value of pkgdatadir. -+ gl_saved_prefix="${prefix}" -+ gl_saved_datarootdir="${datarootdir}" -+ gl_saved_datadir="${datadir}" -+ gl_saved_pkgdatadir="${pkgdatadir}" -+ dnl Unfortunately, prefix gets only finally determined at the end of -+ dnl configure. -+ if test "X$prefix" = "XNONE"; then -+ prefix="$ac_default_prefix" -+ fi -+ eval datarootdir="$datarootdir" -+ eval datadir="$datadir" -+ eval pkgdatadir="$pkgdatadir" -+ gl_BUILD_TO_HOST([pkgdatadir]) -+ pkgdatadir="${gl_saved_pkgdatadir}" -+ datadir="${gl_saved_datadir}" -+ datarootdir="${gl_saved_datarootdir}" -+ prefix="${gl_saved_prefix}" -+]) -+ -+dnl Defines pkglibdir_c and pkglibdir_c_make, -+dnl where pkglibdir = $(libdir)/$(PACKAGE) -+AC_DEFUN_ONCE([gl_BUILD_TO_HOST_PKGLIBDIR], -+[ -+ dnl Find the final value of pkglibdir. -+ gl_saved_prefix="${prefix}" -+ gl_saved_exec_prefix="${exec_prefix}" -+ gl_saved_libdir="${libdir}" -+ gl_saved_pkglibdir="${pkglibdir}" -+ dnl Unfortunately, prefix and exec_prefix get only finally determined -+ dnl at the end of configure. -+ if test "X$prefix" = "XNONE"; then -+ prefix="$ac_default_prefix" -+ fi -+ if test "X$exec_prefix" = "XNONE"; then -+ exec_prefix='${prefix}' -+ fi -+ eval exec_prefix="$exec_prefix" -+ eval libdir="$libdir" -+ eval pkglibdir="$pkglibdir" -+ gl_BUILD_TO_HOST([pkglibdir]) -+ pkglibdir="${gl_saved_pkglibdir}" -+ libdir="${gl_saved_libdir}" -+ exec_prefix="${gl_saved_exec_prefix}" -+ prefix="${gl_saved_prefix}" -+]) -+ -+dnl Defines pkglibexecdir_c and pkglibexecdir_c_make, -+dnl where pkglibexecdir = $(libexecdir)/$(PACKAGE) -+AC_DEFUN_ONCE([gl_BUILD_TO_HOST_PKGLIBEXECDIR], -+[ -+ dnl Find the final value of pkglibexecdir. -+ gl_saved_prefix="${prefix}" -+ gl_saved_exec_prefix="${exec_prefix}" -+ gl_saved_libexecdir="${libexecdir}" -+ gl_saved_pkglibexecdir="${pkglibexecdir}" -+ dnl Unfortunately, prefix and exec_prefix get only finally determined -+ dnl at the end of configure. -+ if test "X$prefix" = "XNONE"; then -+ prefix="$ac_default_prefix" -+ fi -+ if test "X$exec_prefix" = "XNONE"; then -+ exec_prefix='${prefix}' -+ fi -+ eval exec_prefix="$exec_prefix" -+ eval libexecdir="$libexecdir" -+ eval pkglibexecdir="$pkglibexecdir" -+ gl_BUILD_TO_HOST([pkglibexecdir]) -+ pkglibexecdir="${gl_saved_pkglibexecdir}" -+ libexecdir="${gl_saved_libexecdir}" -+ exec_prefix="${gl_saved_exec_prefix}" -+ prefix="${gl_saved_prefix}" -+]) -diff --git a/m4/gettext.m4 b/m4/gettext.m4 -new file mode 100644 -index 00000000..7de17f99 ---- /dev/null -+++ b/m4/gettext.m4 -@@ -0,0 +1,393 @@ -+# gettext.m4 -+# serial 81 (gettext-0.24) -+dnl Copyright (C) 1995-2025 Free Software Foundation, Inc. -+dnl This file is free software; the Free Software Foundation -+dnl gives unlimited permission to copy and/or distribute it, -+dnl with or without modifications, as long as this notice is preserved. -+dnl This file is offered as-is, without any warranty. -+dnl -+dnl This file can be used in projects which are not available under -+dnl the GNU General Public License or the GNU Lesser General Public -+dnl License but which still want to provide support for the GNU gettext -+dnl functionality. -+dnl Please note that the actual code of the GNU gettext library is covered -+dnl by the GNU Lesser General Public License, and the rest of the GNU -+dnl gettext package is covered by the GNU General Public License. -+dnl They are *not* in the public domain. -+ -+dnl Authors: -+dnl Ulrich Drepper , 1995-2000. -+dnl Bruno Haible , 2000-2024. -+ -+dnl Macro to add for using GNU gettext. -+ -+dnl Usage: AM_GNU_GETTEXT([INTLSYMBOL], [NEEDSYMBOL], [INTLDIR]). -+dnl INTLSYMBOL must be one of 'external', 'use-libtool', 'here'. -+dnl INTLSYMBOL should be 'external' for packages other than GNU gettext. -+dnl It should be 'use-libtool' for the packages 'gettext-runtime' and -+dnl 'gettext-tools'. -+dnl It should be 'here' for the package 'gettext-runtime/intl'. -+dnl If INTLSYMBOL is 'here', then a libtool library -+dnl $(top_builddir)/libintl.la will be created (shared and/or static, -+dnl depending on --{enable,disable}-{shared,static} and on the presence of -+dnl AM-DISABLE-SHARED). -+dnl If NEEDSYMBOL is specified and is 'need-ngettext', then GNU gettext -+dnl implementations (in libc or libintl) without the ngettext() function -+dnl will be ignored. If NEEDSYMBOL is specified and is -+dnl 'need-formatstring-macros', then GNU gettext implementations that don't -+dnl support the ISO C 99 formatstring macros will be ignored. -+dnl INTLDIR is used to find the intl libraries. If empty, -+dnl the value '$(top_builddir)/intl/' is used. -+dnl -+dnl The result of the configuration is one of three cases: -+dnl 1) GNU gettext, as included in the intl subdirectory, will be compiled -+dnl and used. -+dnl Catalog format: GNU --> install in $(datadir) -+dnl Catalog extension: .mo after installation, .gmo in source tree -+dnl 2) GNU gettext has been found in the system's C library. -+dnl Catalog format: GNU --> install in $(datadir) -+dnl Catalog extension: .mo after installation, .gmo in source tree -+dnl 3) No internationalization, always use English msgid. -+dnl Catalog format: none -+dnl Catalog extension: none -+dnl If INTLSYMBOL is 'external', only cases 2 and 3 can occur. -+dnl The use of .gmo is historical (it was needed to avoid overwriting the -+dnl GNU format catalogs when building on a platform with an X/Open gettext), -+dnl but we keep it in order not to force irrelevant filename changes on the -+dnl maintainers. -+dnl -+AC_DEFUN([AM_GNU_GETTEXT], -+[ -+ dnl Argument checking. -+ m4_if([$1], [], , [m4_if([$1], [external], , [m4_if([$1], [use-libtool], , [m4_if([$1], [here], , -+ [errprint([ERROR: invalid first argument to AM_GNU_GETTEXT -+])])])])]) -+ m4_if(m4_if([$1], [], [old])[]m4_if([$1], [no-libtool], [old]), [old], -+ [errprint([ERROR: Use of AM_GNU_GETTEXT without [external] argument is no longer supported. -+])]) -+ m4_if([$2], [], , [m4_if([$2], [need-ngettext], , [m4_if([$2], [need-formatstring-macros], , -+ [errprint([ERROR: invalid second argument to AM_GNU_GETTEXT -+])])])]) -+ define([gt_building_libintl_in_same_build_tree], -+ m4_if([$1], [use-libtool], [yes], [m4_if([$1], [here], [yes], [no])])) -+ gt_NEEDS_INIT -+ AM_GNU_GETTEXT_NEED([$2]) -+ -+ AC_REQUIRE([AM_PO_SUBDIRS])dnl -+ -+ dnl Prerequisites of AC_LIB_LINKFLAGS_BODY. -+ AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) -+ AC_REQUIRE([AC_LIB_RPATH]) -+ -+ dnl Sometimes libintl requires libiconv, so first search for libiconv. -+ dnl Ideally we would do this search only after the -+ dnl if test "$USE_NLS" = "yes"; then -+ dnl if { eval "gt_val=\$$gt_func_gnugettext_libc"; test "$gt_val" != "yes"; }; then -+ dnl tests. But if configure.ac invokes AM_ICONV after AM_GNU_GETTEXT -+ dnl the configure script would need to contain the same shell code -+ dnl again, outside any 'if'. There are two solutions: -+ dnl - Invoke AM_ICONV_LINKFLAGS_BODY here, outside any 'if'. -+ dnl - Control the expansions in more detail using AC_PROVIDE_IFELSE. -+ dnl Since AC_PROVIDE_IFELSE is not documented, we avoid it. -+ m4_if(gt_building_libintl_in_same_build_tree, yes, , [ -+ AC_REQUIRE([AM_ICONV_LINKFLAGS_BODY]) -+ ]) -+ -+ dnl Sometimes, on Mac OS X, libintl requires linking with CoreFoundation. -+ gt_INTL_MACOSX -+ -+ dnl Set USE_NLS. -+ AC_REQUIRE([AM_NLS]) -+ -+ m4_if(gt_building_libintl_in_same_build_tree, yes, [ -+ USE_INCLUDED_LIBINTL=no -+ ]) -+ LIBINTL= -+ LTLIBINTL= -+ POSUB= -+ -+ dnl Add a version number to the cache macros. -+ case " $gt_needs " in -+ *" need-formatstring-macros "*) gt_api_version=3 ;; -+ *" need-ngettext "*) gt_api_version=2 ;; -+ *) gt_api_version=1 ;; -+ esac -+ gt_func_gnugettext_libc="gt_cv_func_gnugettext${gt_api_version}_libc" -+ gt_func_gnugettext_libintl="gt_cv_func_gnugettext${gt_api_version}_libintl" -+ -+ dnl If we use NLS figure out what method -+ if test "$USE_NLS" = "yes"; then -+ gt_use_preinstalled_gnugettext=no -+ m4_if(gt_building_libintl_in_same_build_tree, yes, [ -+ AC_MSG_CHECKING([whether included gettext is requested]) -+ AC_ARG_WITH([included-gettext], -+ [ --with-included-gettext use the GNU gettext library included here], -+ nls_cv_force_use_gnu_gettext=$withval, -+ nls_cv_force_use_gnu_gettext=no) -+ AC_MSG_RESULT([$nls_cv_force_use_gnu_gettext]) -+ -+ nls_cv_use_gnu_gettext="$nls_cv_force_use_gnu_gettext" -+ if test "$nls_cv_force_use_gnu_gettext" != "yes"; then -+ ]) -+ dnl User does not insist on using GNU NLS library. Figure out what -+ dnl to use. If GNU gettext is available we use this. Else we have -+ dnl to fall back to GNU NLS library. -+ -+ if test $gt_api_version -ge 3; then -+ gt_revision_test_code=' -+#ifndef __GNU_GETTEXT_SUPPORTED_REVISION -+#define __GNU_GETTEXT_SUPPORTED_REVISION(major) ((major) == 0 ? 0 : -1) -+#endif -+changequote(,)dnl -+typedef int array [2 * (__GNU_GETTEXT_SUPPORTED_REVISION(0) >= 1) - 1]; -+changequote([,])dnl -+' -+ else -+ gt_revision_test_code= -+ fi -+ if test $gt_api_version -ge 2; then -+ gt_expression_test_code=' + * ngettext ("", "", 0)' -+ else -+ gt_expression_test_code= -+ fi -+ -+ AC_CACHE_CHECK([for GNU gettext in libc], [$gt_func_gnugettext_libc], -+ [AC_LINK_IFELSE( -+ [AC_LANG_PROGRAM( -+ [[ -+#include -+#ifndef __GNU_GETTEXT_SUPPORTED_REVISION -+extern int _nl_msg_cat_cntr; -+extern int *_nl_domain_bindings; -+#define __GNU_GETTEXT_SYMBOL_EXPRESSION (_nl_msg_cat_cntr + *_nl_domain_bindings) -+#else -+#define __GNU_GETTEXT_SYMBOL_EXPRESSION 0 -+#endif -+$gt_revision_test_code -+ ]], -+ [[ -+bindtextdomain ("", ""); -+return * gettext ("")$gt_expression_test_code + __GNU_GETTEXT_SYMBOL_EXPRESSION -+ ]])], -+ [eval "$gt_func_gnugettext_libc=yes"], -+ [eval "$gt_func_gnugettext_libc=no"])]) -+ -+ if { eval "gt_val=\$$gt_func_gnugettext_libc"; test "$gt_val" != "yes"; }; then -+ dnl Sometimes libintl requires libiconv, so first search for libiconv. -+ m4_if(gt_building_libintl_in_same_build_tree, yes, , [ -+ AM_ICONV_LINK -+ ]) -+ dnl Search for libintl and define LIBINTL, LTLIBINTL and INCINTL -+ dnl accordingly. Don't use AC_LIB_LINKFLAGS_BODY([intl],[iconv]) -+ dnl because that would add "-liconv" to LIBINTL and LTLIBINTL -+ dnl even if libiconv doesn't exist. -+ AC_LIB_LINKFLAGS_BODY([intl]) -+ AC_CACHE_CHECK([for GNU gettext in libintl], -+ [$gt_func_gnugettext_libintl], -+ [gt_saved_CPPFLAGS="$CPPFLAGS" -+ CPPFLAGS="$CPPFLAGS $INCINTL" -+ gt_saved_LIBS="$LIBS" -+ LIBS="$LIBS $LIBINTL" -+ dnl Now see whether libintl exists and does not depend on libiconv. -+ AC_LINK_IFELSE( -+ [AC_LANG_PROGRAM( -+ [[ -+#include -+#ifndef __GNU_GETTEXT_SUPPORTED_REVISION -+extern int _nl_msg_cat_cntr; -+extern -+#ifdef __cplusplus -+"C" -+#endif -+const char *_nl_expand_alias (const char *); -+#define __GNU_GETTEXT_SYMBOL_EXPRESSION (_nl_msg_cat_cntr + *_nl_expand_alias ("")) -+#else -+#define __GNU_GETTEXT_SYMBOL_EXPRESSION 0 -+#endif -+$gt_revision_test_code -+ ]], -+ [[ -+bindtextdomain ("", ""); -+return * gettext ("")$gt_expression_test_code + __GNU_GETTEXT_SYMBOL_EXPRESSION -+ ]])], -+ [eval "$gt_func_gnugettext_libintl=yes"], -+ [eval "$gt_func_gnugettext_libintl=no"]) -+ dnl Now see whether libintl exists and depends on libiconv or other -+ dnl OS dependent libraries, specifically on macOS and AIX. -+ gt_LIBINTL_EXTRA="$INTL_MACOSX_LIBS" -+ AC_REQUIRE([AC_CANONICAL_HOST]) -+ case "$host_os" in -+ aix*) gt_LIBINTL_EXTRA="-lpthread" ;; -+ esac -+ if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" != yes; } \ -+ && { test -n "$LIBICONV" || test -n "$gt_LIBINTL_EXTRA"; }; then -+ LIBS="$LIBS $LIBICONV $gt_LIBINTL_EXTRA" -+ AC_LINK_IFELSE( -+ [AC_LANG_PROGRAM( -+ [[ -+#include -+#ifndef __GNU_GETTEXT_SUPPORTED_REVISION -+extern int _nl_msg_cat_cntr; -+extern -+#ifdef __cplusplus -+"C" -+#endif -+const char *_nl_expand_alias (const char *); -+#define __GNU_GETTEXT_SYMBOL_EXPRESSION (_nl_msg_cat_cntr + *_nl_expand_alias ("")) -+#else -+#define __GNU_GETTEXT_SYMBOL_EXPRESSION 0 -+#endif -+$gt_revision_test_code -+ ]], -+ [[ -+bindtextdomain ("", ""); -+return * gettext ("")$gt_expression_test_code + __GNU_GETTEXT_SYMBOL_EXPRESSION -+ ]])], -+ [LIBINTL="$LIBINTL $LIBICONV $gt_LIBINTL_EXTRA" -+ LTLIBINTL="$LTLIBINTL $LTLIBICONV $gt_LIBINTL_EXTRA" -+ eval "$gt_func_gnugettext_libintl=yes" -+ ]) -+ fi -+ CPPFLAGS="$gt_saved_CPPFLAGS" -+ LIBS="$gt_saved_LIBS"]) -+ fi -+ -+ dnl If an already present or preinstalled GNU gettext() is found, -+ dnl use it. But if this macro is used in GNU gettext, and GNU -+ dnl gettext is already preinstalled in libintl, we update this -+ dnl libintl. (Cf. the install rule in intl/Makefile.in.) -+ if { eval "gt_val=\$$gt_func_gnugettext_libc"; test "$gt_val" = "yes"; } \ -+ || { { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; } \ -+ && test "$PACKAGE" != gettext-runtime \ -+ && test "$PACKAGE" != gettext-tools \ -+ && test "$PACKAGE" != libintl; }; then -+ gt_use_preinstalled_gnugettext=yes -+ else -+ dnl Reset the values set by searching for libintl. -+ LIBINTL= -+ LTLIBINTL= -+ INCINTL= -+ fi -+ -+ m4_if(gt_building_libintl_in_same_build_tree, yes, [ -+ if test "$gt_use_preinstalled_gnugettext" != "yes"; then -+ dnl GNU gettext is not found in the C library. -+ dnl Fall back on included GNU gettext library. -+ nls_cv_use_gnu_gettext=yes -+ fi -+ fi -+ -+ if test "$nls_cv_use_gnu_gettext" = "yes"; then -+ dnl Mark actions used to generate GNU NLS library. -+ USE_INCLUDED_LIBINTL=yes -+ LIBINTL="m4_if([$3],[],\${top_builddir}/intl,[$3])/libintl.la $LIBICONV $LIBTHREAD" -+ LTLIBINTL="m4_if([$3],[],\${top_builddir}/intl,[$3])/libintl.la $LTLIBICONV $LTLIBTHREAD" -+ LIBS=`echo " $LIBS " | sed -e 's/ -lintl / /' -e 's/^ //' -e 's/ $//'` -+ fi -+ -+ CATOBJEXT= -+ if test "$gt_use_preinstalled_gnugettext" = "yes" \ -+ || test "$nls_cv_use_gnu_gettext" = "yes"; then -+ dnl Mark actions to use GNU gettext tools. -+ CATOBJEXT=.gmo -+ fi -+ ]) -+ -+ if test -n "$INTL_MACOSX_LIBS"; then -+ if test "$gt_use_preinstalled_gnugettext" = "yes" \ -+ || test "$nls_cv_use_gnu_gettext" = "yes"; then -+ dnl Some extra flags are needed during linking. -+ LIBINTL="$LIBINTL $INTL_MACOSX_LIBS" -+ LTLIBINTL="$LTLIBINTL $INTL_MACOSX_LIBS" -+ fi -+ fi -+ -+ if test "$gt_use_preinstalled_gnugettext" = "yes" \ -+ || test "$nls_cv_use_gnu_gettext" = "yes"; then -+ AC_DEFINE([ENABLE_NLS], [1], -+ [Define to 1 if translation of program messages to the user's native language -+ is requested.]) -+ else -+ USE_NLS=no -+ fi -+ fi -+ -+ AC_MSG_CHECKING([whether to use NLS]) -+ AC_MSG_RESULT([$USE_NLS]) -+ if test "$USE_NLS" = "yes"; then -+ AC_MSG_CHECKING([where the gettext function comes from]) -+ if test "$gt_use_preinstalled_gnugettext" = "yes"; then -+ if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; }; then -+ gt_source="external libintl" -+ else -+ gt_source="libc" -+ fi -+ else -+ gt_source="included intl directory" -+ fi -+ AC_MSG_RESULT([$gt_source]) -+ fi -+ -+ if test "$USE_NLS" = "yes"; then -+ -+ if test "$gt_use_preinstalled_gnugettext" = "yes"; then -+ if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; }; then -+ AC_MSG_CHECKING([how to link with libintl]) -+ AC_MSG_RESULT([$LIBINTL]) -+ AC_LIB_APPENDTOVAR([CPPFLAGS], [$INCINTL]) -+ fi -+ -+ dnl For backward compatibility. Some packages may be using this. -+ AC_DEFINE([HAVE_GETTEXT], [1], -+ [Define if the GNU gettext() function is already present or preinstalled.]) -+ AC_DEFINE([HAVE_DCGETTEXT], [1], -+ [Define if the GNU dcgettext() function is already present or preinstalled.]) -+ fi -+ -+ dnl We need to process the po/ directory. -+ POSUB=po -+ fi -+ -+ m4_if(gt_building_libintl_in_same_build_tree, yes, [ -+ dnl Make all variables we use known to autoconf. -+ AC_SUBST([USE_INCLUDED_LIBINTL]) -+ AC_SUBST([CATOBJEXT]) -+ ]) -+ -+ m4_if(gt_building_libintl_in_same_build_tree, yes, [], [ -+ dnl For backward compatibility. Some Makefiles may be using this. -+ INTLLIBS="$LIBINTL" -+ AC_SUBST([INTLLIBS]) -+ ]) -+ -+ dnl Make all documented variables known to autoconf. -+ AC_SUBST([LIBINTL]) -+ AC_SUBST([LTLIBINTL]) -+ AC_SUBST([POSUB]) -+ -+ dnl Define localedir_c and localedir_c_make. -+ gl_BUILD_TO_HOST_LOCALEDIR -+]) -+ -+ -+dnl gt_NEEDS_INIT ensures that the gt_needs variable is initialized. -+m4_define([gt_NEEDS_INIT], -+[ -+ m4_divert_text([DEFAULTS], [gt_needs=]) -+ m4_define([gt_NEEDS_INIT], []) -+]) -+ -+ -+dnl Usage: AM_GNU_GETTEXT_NEED([NEEDSYMBOL]) -+AC_DEFUN([AM_GNU_GETTEXT_NEED], -+[ -+ m4_divert_text([INIT_PREPARE], [gt_needs="$gt_needs $1"]) -+]) -+ -+ -+dnl Usage: AM_GNU_GETTEXT_VERSION([gettext-version]) -+AC_DEFUN([AM_GNU_GETTEXT_VERSION], []) -+ -+ -+dnl Usage: AM_GNU_GETTEXT_REQUIRE_VERSION([gettext-version]) -+AC_DEFUN([AM_GNU_GETTEXT_REQUIRE_VERSION], []) -diff --git a/m4/host-cpu-c-abi.m4 b/m4/host-cpu-c-abi.m4 -new file mode 100644 -index 00000000..6ca7721a ---- /dev/null -+++ b/m4/host-cpu-c-abi.m4 -@@ -0,0 +1,532 @@ -+# host-cpu-c-abi.m4 -+# serial 20 -+dnl Copyright (C) 2002-2025 Free Software Foundation, Inc. -+dnl This file is free software; the Free Software Foundation -+dnl gives unlimited permission to copy and/or distribute it, -+dnl with or without modifications, as long as this notice is preserved. -+dnl This file is offered as-is, without any warranty. -+ -+dnl From Bruno Haible and Sam Steingold. -+ -+dnl Sets the HOST_CPU variable to the canonical name of the CPU. -+dnl Sets the HOST_CPU_C_ABI variable to the canonical name of the CPU with its -+dnl C language ABI (application binary interface). -+dnl Also defines __${HOST_CPU}__ and __${HOST_CPU_C_ABI}__ as C macros in -+dnl config.h. -+dnl -+dnl This canonical name can be used to select a particular assembly language -+dnl source file that will interoperate with C code on the given host. -+dnl -+dnl For example: -+dnl * 'i386' and 'sparc' are different canonical names, because code for i386 -+dnl will not run on SPARC CPUs and vice versa. They have different -+dnl instruction sets. -+dnl * 'sparc' and 'sparc64' are different canonical names, because code for -+dnl 'sparc' and code for 'sparc64' cannot be linked together: 'sparc' code -+dnl contains 32-bit instructions, whereas 'sparc64' code contains 64-bit -+dnl instructions. A process on a SPARC CPU can be in 32-bit mode or in 64-bit -+dnl mode, but not both. -+dnl * 'mips' and 'mipsn32' are different canonical names, because they use -+dnl different argument passing and return conventions for C functions, and -+dnl although the instruction set of 'mips' is a large subset of the -+dnl instruction set of 'mipsn32'. -+dnl * 'mipsn32' and 'mips64' are different canonical names, because they use -+dnl different sizes for the C types like 'int' and 'void *', and although -+dnl the instruction sets of 'mipsn32' and 'mips64' are the same. -+dnl * The same canonical name is used for different endiannesses. You can -+dnl determine the endianness through preprocessor symbols: -+dnl - 'arm': test __ARMEL__. -+dnl - 'mips', 'mipsn32', 'mips64': test _MIPSEB vs. _MIPSEL. -+dnl - 'powerpc64': test __BIG_ENDIAN__ vs. __LITTLE_ENDIAN__. -+dnl * The same name 'i386' is used for CPUs of type i386, i486, i586 -+dnl (Pentium), AMD K7, Pentium II, Pentium IV, etc., because -+dnl - Instructions that do not exist on all of these CPUs (cmpxchg, -+dnl MMX, SSE, SSE2, 3DNow! etc.) are not frequently used. If your -+dnl assembly language source files use such instructions, you will -+dnl need to make the distinction. -+dnl - Speed of execution of the common instruction set is reasonable across -+dnl the entire family of CPUs. If you have assembly language source files -+dnl that are optimized for particular CPU types (like GNU gmp has), you -+dnl will need to make the distinction. -+dnl See . -+AC_DEFUN([gl_HOST_CPU_C_ABI], -+[ -+ AC_REQUIRE([AC_CANONICAL_HOST]) -+ AC_REQUIRE([gl_C_ASM]) -+ AC_CACHE_CHECK([host CPU and C ABI], [gl_cv_host_cpu_c_abi], -+ [case "$host_cpu" in -+ -+changequote(,)dnl -+ i[34567]86 ) -+changequote([,])dnl -+ gl_cv_host_cpu_c_abi=i386 -+ ;; -+ -+ x86_64 ) -+ # On x86_64 systems, the C compiler may be generating code in one of -+ # these ABIs: -+ # - 64-bit instruction set, 64-bit pointers, 64-bit 'long': x86_64. -+ # - 64-bit instruction set, 64-bit pointers, 32-bit 'long': x86_64 -+ # with native Windows (mingw, MSVC). -+ # - 64-bit instruction set, 32-bit pointers, 32-bit 'long': x86_64-x32. -+ # - 32-bit instruction set, 32-bit pointers, 32-bit 'long': i386. -+ AC_COMPILE_IFELSE( -+ [AC_LANG_SOURCE( -+ [[#if (defined __x86_64__ || defined __amd64__ \ -+ || defined _M_X64 || defined _M_AMD64) -+ int ok; -+ #else -+ error fail -+ #endif -+ ]])], -+ [AC_COMPILE_IFELSE( -+ [AC_LANG_SOURCE( -+ [[#if defined __ILP32__ || defined _ILP32 -+ int ok; -+ #else -+ error fail -+ #endif -+ ]])], -+ [gl_cv_host_cpu_c_abi=x86_64-x32], -+ [gl_cv_host_cpu_c_abi=x86_64])], -+ [gl_cv_host_cpu_c_abi=i386]) -+ ;; -+ -+changequote(,)dnl -+ alphaev[4-8] | alphaev56 | alphapca5[67] | alphaev6[78] ) -+changequote([,])dnl -+ gl_cv_host_cpu_c_abi=alpha -+ ;; -+ -+ arm* | aarch64 ) -+ # Assume arm with EABI. -+ # On arm64 systems, the C compiler may be generating code in one of -+ # these ABIs: -+ # - aarch64 instruction set, 64-bit pointers, 64-bit 'long': arm64. -+ # - aarch64 instruction set, 32-bit pointers, 32-bit 'long': arm64-ilp32. -+ # - 32-bit instruction set, 32-bit pointers, 32-bit 'long': arm or armhf. -+ AC_COMPILE_IFELSE( -+ [AC_LANG_SOURCE( -+ [[#ifdef __aarch64__ -+ int ok; -+ #else -+ error fail -+ #endif -+ ]])], -+ [AC_COMPILE_IFELSE( -+ [AC_LANG_SOURCE( -+ [[#if defined __ILP32__ || defined _ILP32 -+ int ok; -+ #else -+ error fail -+ #endif -+ ]])], -+ [gl_cv_host_cpu_c_abi=arm64-ilp32], -+ [gl_cv_host_cpu_c_abi=arm64])], -+ [# Don't distinguish little-endian and big-endian arm, since they -+ # don't require different machine code for simple operations and -+ # since the user can distinguish them through the preprocessor -+ # defines __ARMEL__ vs. __ARMEB__. -+ # But distinguish arm which passes floating-point arguments and -+ # return values in integer registers (r0, r1, ...) - this is -+ # gcc -mfloat-abi=soft or gcc -mfloat-abi=softfp - from arm which -+ # passes them in float registers (s0, s1, ...) and double registers -+ # (d0, d1, ...) - this is gcc -mfloat-abi=hard. GCC 4.6 or newer -+ # sets the preprocessor defines __ARM_PCS (for the first case) and -+ # __ARM_PCS_VFP (for the second case), but older GCC does not. -+ echo 'double ddd; void func (double dd) { ddd = dd; }' > conftest.c -+ # Look for a reference to the register d0 in the .s file. -+ AC_TRY_COMMAND(${CC-cc} $CFLAGS $CPPFLAGS $gl_c_asm_opt conftest.c) >/dev/null 2>&1 -+ if LC_ALL=C grep 'd0,' conftest.$gl_asmext >/dev/null; then -+ gl_cv_host_cpu_c_abi=armhf -+ else -+ gl_cv_host_cpu_c_abi=arm -+ fi -+ rm -fr conftest* -+ ]) -+ ;; -+ -+ hppa1.0 | hppa1.1 | hppa2.0* | hppa64 ) -+ # On hppa, the C compiler may be generating 32-bit code or 64-bit -+ # code. In the latter case, it defines _LP64 and __LP64__. -+ AC_COMPILE_IFELSE( -+ [AC_LANG_SOURCE( -+ [[#ifdef __LP64__ -+ int ok; -+ #else -+ error fail -+ #endif -+ ]])], -+ [gl_cv_host_cpu_c_abi=hppa64], -+ [gl_cv_host_cpu_c_abi=hppa]) -+ ;; -+ -+ ia64* ) -+ # On ia64 on HP-UX, the C compiler may be generating 64-bit code or -+ # 32-bit code. In the latter case, it defines _ILP32. -+ AC_COMPILE_IFELSE( -+ [AC_LANG_SOURCE( -+ [[#ifdef _ILP32 -+ int ok; -+ #else -+ error fail -+ #endif -+ ]])], -+ [gl_cv_host_cpu_c_abi=ia64-ilp32], -+ [gl_cv_host_cpu_c_abi=ia64]) -+ ;; -+ -+ mips* ) -+ # We should also check for (_MIPS_SZPTR == 64), but gcc keeps this -+ # at 32. -+ AC_COMPILE_IFELSE( -+ [AC_LANG_SOURCE( -+ [[#if defined _MIPS_SZLONG && (_MIPS_SZLONG == 64) -+ int ok; -+ #else -+ error fail -+ #endif -+ ]])], -+ [gl_cv_host_cpu_c_abi=mips64], -+ [# In the n32 ABI, _ABIN32 is defined, _ABIO32 is not defined (but -+ # may later get defined by ), and _MIPS_SIM == _ABIN32. -+ # In the 32 ABI, _ABIO32 is defined, _ABIN32 is not defined (but -+ # may later get defined by ), and _MIPS_SIM == _ABIO32. -+ AC_COMPILE_IFELSE( -+ [AC_LANG_SOURCE( -+ [[#if (_MIPS_SIM == _ABIN32) -+ int ok; -+ #else -+ error fail -+ #endif -+ ]])], -+ [gl_cv_host_cpu_c_abi=mipsn32], -+ [gl_cv_host_cpu_c_abi=mips])]) -+ ;; -+ -+ powerpc* ) -+ # Different ABIs are in use on AIX vs. Mac OS X vs. Linux,*BSD. -+ # No need to distinguish them here; the caller may distinguish -+ # them based on the OS. -+ # On powerpc64 systems, the C compiler may still be generating -+ # 32-bit code. And on powerpc-ibm-aix systems, the C compiler may -+ # be generating 64-bit code. -+ AC_COMPILE_IFELSE( -+ [AC_LANG_SOURCE( -+ [[#if defined __powerpc64__ || defined __LP64__ -+ int ok; -+ #else -+ error fail -+ #endif -+ ]])], -+ [# On powerpc64, there are two ABIs on Linux: The AIX compatible -+ # one and the ELFv2 one. The latter defines _CALL_ELF=2. -+ AC_COMPILE_IFELSE( -+ [AC_LANG_SOURCE( -+ [[#if defined _CALL_ELF && _CALL_ELF == 2 -+ int ok; -+ #else -+ error fail -+ #endif -+ ]])], -+ [gl_cv_host_cpu_c_abi=powerpc64-elfv2], -+ [gl_cv_host_cpu_c_abi=powerpc64]) -+ ], -+ [gl_cv_host_cpu_c_abi=powerpc]) -+ ;; -+ -+ rs6000 ) -+ gl_cv_host_cpu_c_abi=powerpc -+ ;; -+ -+ riscv32 | riscv64 ) -+ # There are 2 architectures (with variants): rv32* and rv64*. -+ AC_COMPILE_IFELSE( -+ [AC_LANG_SOURCE( -+ [[#if __riscv_xlen == 64 -+ int ok; -+ #else -+ error fail -+ #endif -+ ]])], -+ [cpu=riscv64], -+ [cpu=riscv32]) -+ # There are 6 ABIs: ilp32, ilp32f, ilp32d, lp64, lp64f, lp64d. -+ # Size of 'long' and 'void *': -+ AC_COMPILE_IFELSE( -+ [AC_LANG_SOURCE( -+ [[#if defined __LP64__ -+ int ok; -+ #else -+ error fail -+ #endif -+ ]])], -+ [main_abi=lp64], -+ [main_abi=ilp32]) -+ # Float ABIs: -+ # __riscv_float_abi_double: -+ # 'float' and 'double' are passed in floating-point registers. -+ # __riscv_float_abi_single: -+ # 'float' are passed in floating-point registers. -+ # __riscv_float_abi_soft: -+ # No values are passed in floating-point registers. -+ AC_COMPILE_IFELSE( -+ [AC_LANG_SOURCE( -+ [[#if defined __riscv_float_abi_double -+ int ok; -+ #else -+ error fail -+ #endif -+ ]])], -+ [float_abi=d], -+ [AC_COMPILE_IFELSE( -+ [AC_LANG_SOURCE( -+ [[#if defined __riscv_float_abi_single -+ int ok; -+ #else -+ error fail -+ #endif -+ ]])], -+ [float_abi=f], -+ [float_abi='']) -+ ]) -+ gl_cv_host_cpu_c_abi="${cpu}-${main_abi}${float_abi}" -+ ;; -+ -+ s390* ) -+ # On s390x, the C compiler may be generating 64-bit (= s390x) code -+ # or 31-bit (= s390) code. -+ AC_COMPILE_IFELSE( -+ [AC_LANG_SOURCE( -+ [[#if defined __LP64__ || defined __s390x__ -+ int ok; -+ #else -+ error fail -+ #endif -+ ]])], -+ [gl_cv_host_cpu_c_abi=s390x], -+ [gl_cv_host_cpu_c_abi=s390]) -+ ;; -+ -+ sparc | sparc64 ) -+ # UltraSPARCs running Linux have `uname -m` = "sparc64", but the -+ # C compiler still generates 32-bit code. -+ AC_COMPILE_IFELSE( -+ [AC_LANG_SOURCE( -+ [[#if defined __sparcv9 || defined __arch64__ -+ int ok; -+ #else -+ error fail -+ #endif -+ ]])], -+ [gl_cv_host_cpu_c_abi=sparc64], -+ [gl_cv_host_cpu_c_abi=sparc]) -+ ;; -+ -+ *) -+ gl_cv_host_cpu_c_abi="$host_cpu" -+ ;; -+ esac -+ ]) -+ -+ dnl In most cases, $HOST_CPU and $HOST_CPU_C_ABI are the same. -+ HOST_CPU=`echo "$gl_cv_host_cpu_c_abi" | sed -e 's/-.*//'` -+ HOST_CPU_C_ABI="$gl_cv_host_cpu_c_abi" -+ AC_SUBST([HOST_CPU]) -+ AC_SUBST([HOST_CPU_C_ABI]) -+ -+ # This was -+ # AC_DEFINE_UNQUOTED([__${HOST_CPU}__]) -+ # AC_DEFINE_UNQUOTED([__${HOST_CPU_C_ABI}__]) -+ # earlier, but KAI C++ 3.2d doesn't like this. -+ sed -e 's/-/_/g' >> confdefs.h <. -+dnl Don't make changes that are incompatible with that documentation! -+ -+AC_DEFUN([AM_ICONV_LINKFLAGS_BODY], -+[ -+ dnl Prerequisites of AC_LIB_LINKFLAGS_BODY. -+ AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) -+ AC_REQUIRE([AC_LIB_RPATH]) -+ -+ dnl Search for libiconv and define LIBICONV, LTLIBICONV and INCICONV -+ dnl accordingly. -+ AC_LIB_LINKFLAGS_BODY([iconv]) -+]) -+ -+AC_DEFUN([AM_ICONV_LINK], -+[ -+ dnl Some systems have iconv in libc, some have it in libiconv (OSF/1 and -+ dnl those with the standalone portable GNU libiconv installed). -+ AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles -+ -+ dnl Search for libiconv and define LIBICONV, LTLIBICONV and INCICONV -+ dnl accordingly. -+ AC_REQUIRE([AM_ICONV_LINKFLAGS_BODY]) -+ -+ dnl Add $INCICONV to CPPFLAGS before performing the following checks, -+ dnl because if the user has installed libiconv and not disabled its use -+ dnl via --without-libiconv-prefix, he wants to use it. The first -+ dnl AC_LINK_IFELSE will then fail, the second AC_LINK_IFELSE will succeed. -+ gl_saved_CPPFLAGS="$CPPFLAGS" -+ AC_LIB_APPENDTOVAR([CPPFLAGS], [$INCICONV]) -+ -+ AC_CACHE_CHECK([for iconv], [am_cv_func_iconv], [ -+ am_cv_func_iconv="no, consider installing GNU libiconv" -+ am_cv_lib_iconv=no -+ AC_LINK_IFELSE( -+ [AC_LANG_PROGRAM( -+ [[ -+#include -+#include -+ ]], -+ [[iconv_t cd = iconv_open("",""); -+ iconv(cd,NULL,NULL,NULL,NULL); -+ iconv_close(cd);]])], -+ [am_cv_func_iconv=yes]) -+ if test "$am_cv_func_iconv" != yes; then -+ gl_saved_LIBS="$LIBS" -+ LIBS="$LIBS $LIBICONV" -+ AC_LINK_IFELSE( -+ [AC_LANG_PROGRAM( -+ [[ -+#include -+#include -+ ]], -+ [[iconv_t cd = iconv_open("",""); -+ iconv(cd,NULL,NULL,NULL,NULL); -+ iconv_close(cd);]])], -+ [am_cv_lib_iconv=yes] -+ [am_cv_func_iconv=yes]) -+ LIBS="$gl_saved_LIBS" -+ fi -+ ]) -+ if test "$am_cv_func_iconv" = yes; then -+ AC_CACHE_CHECK([for working iconv], [am_cv_func_iconv_works], [ -+ dnl This tests against bugs in AIX 5.1, AIX 6.1..7.1, HP-UX 11.11, -+ dnl Solaris 10, macOS 14.4. -+ gl_saved_LIBS="$LIBS" -+ if test $am_cv_lib_iconv = yes; then -+ LIBS="$LIBS $LIBICONV" -+ fi -+ am_cv_func_iconv_works=no -+ for ac_iconv_const in '' 'const'; do -+ AC_RUN_IFELSE( -+ [AC_LANG_PROGRAM( -+ [[ -+#include -+#include -+ -+#ifndef ICONV_CONST -+# define ICONV_CONST $ac_iconv_const -+#endif -+ ]], -+ [[int result = 0; -+ /* Test against AIX 5.1...7.2 bug: Failures are not distinguishable from -+ successful returns. This is even documented in -+ */ -+ { -+ iconv_t cd_utf8_to_88591 = iconv_open ("ISO8859-1", "UTF-8"); -+ if (cd_utf8_to_88591 != (iconv_t)(-1)) -+ { -+ static ICONV_CONST char input[] = "\342\202\254"; /* EURO SIGN */ -+ char buf[10]; -+ ICONV_CONST char *inptr = input; -+ size_t inbytesleft = strlen (input); -+ char *outptr = buf; -+ size_t outbytesleft = sizeof (buf); -+ size_t res = iconv (cd_utf8_to_88591, -+ &inptr, &inbytesleft, -+ &outptr, &outbytesleft); -+ if (res == 0) -+ result |= 1; -+ iconv_close (cd_utf8_to_88591); -+ } -+ } -+ /* Test against macOS 14.4 bug: Failures are not distinguishable from -+ successful returns. -+ POSIX:2018 says: "The iconv() function shall ... return the number of -+ non-identical conversions performed." -+ But here, the conversion always does transliteration (the suffixes -+ "//TRANSLIT" and "//IGNORE" have no effect, nor does iconvctl()) and -+ does not report when it does a non-identical conversion. */ -+ { -+ iconv_t cd_utf8_to_88591 = iconv_open ("ISO-8859-1", "UTF-8"); -+ if (cd_utf8_to_88591 != (iconv_t)(-1)) -+ { -+ static ICONV_CONST char input[] = "\305\202"; /* LATIN SMALL LETTER L WITH STROKE */ -+ char buf[10]; -+ ICONV_CONST char *inptr = input; -+ size_t inbytesleft = strlen (input); -+ char *outptr = buf; -+ size_t outbytesleft = sizeof (buf); -+ size_t res = iconv (cd_utf8_to_88591, -+ &inptr, &inbytesleft, -+ &outptr, &outbytesleft); -+ /* Here: -+ With glibc, GNU libiconv (including macOS up to 13): res == (size_t)-1, errno == EILSEQ. -+ With musl libc, NetBSD 10, Solaris 11: res == 1. -+ With macOS 14.4: res == 0, output is "l". */ -+ if (res == 0) -+ result |= 2; -+ iconv_close (cd_utf8_to_88591); -+ } -+ } -+ /* Test against Solaris 10 bug: Failures are not distinguishable from -+ successful returns. */ -+ { -+ iconv_t cd_ascii_to_88591 = iconv_open ("ISO8859-1", "646"); -+ if (cd_ascii_to_88591 != (iconv_t)(-1)) -+ { -+ static ICONV_CONST char input[] = "\263"; -+ char buf[10]; -+ ICONV_CONST char *inptr = input; -+ size_t inbytesleft = strlen (input); -+ char *outptr = buf; -+ size_t outbytesleft = sizeof (buf); -+ size_t res = iconv (cd_ascii_to_88591, -+ &inptr, &inbytesleft, -+ &outptr, &outbytesleft); -+ if (res == 0) -+ result |= 4; -+ iconv_close (cd_ascii_to_88591); -+ } -+ } -+ /* Test against AIX 6.1..7.1 bug: Buffer overrun. */ -+ { -+ iconv_t cd_88591_to_utf8 = iconv_open ("UTF-8", "ISO-8859-1"); -+ if (cd_88591_to_utf8 != (iconv_t)(-1)) -+ { -+ static ICONV_CONST char input[] = "\304"; -+ static char buf[2] = { (char)0xDE, (char)0xAD }; -+ ICONV_CONST char *inptr = input; -+ size_t inbytesleft = 1; -+ char *outptr = buf; -+ size_t outbytesleft = 1; -+ size_t res = iconv (cd_88591_to_utf8, -+ &inptr, &inbytesleft, -+ &outptr, &outbytesleft); -+ if (res != (size_t)(-1) || outptr - buf > 1 || buf[1] != (char)0xAD) -+ result |= 8; -+ iconv_close (cd_88591_to_utf8); -+ } -+ } -+#if 0 /* This bug could be worked around by the caller. */ -+ /* Test against HP-UX 11.11 bug: Positive return value instead of 0. */ -+ { -+ iconv_t cd_88591_to_utf8 = iconv_open ("utf8", "iso88591"); -+ if (cd_88591_to_utf8 != (iconv_t)(-1)) -+ { -+ static ICONV_CONST char input[] = "\304rger mit b\366sen B\374bchen ohne Augenma\337"; -+ char buf[50]; -+ ICONV_CONST char *inptr = input; -+ size_t inbytesleft = strlen (input); -+ char *outptr = buf; -+ size_t outbytesleft = sizeof (buf); -+ size_t res = iconv (cd_88591_to_utf8, -+ &inptr, &inbytesleft, -+ &outptr, &outbytesleft); -+ if ((int)res > 0) -+ result |= 16; -+ iconv_close (cd_88591_to_utf8); -+ } -+ } -+#endif -+ /* Test against HP-UX 11.11 bug: No converter from EUC-JP to UTF-8 is -+ provided. */ -+ { -+ /* Try standardized names. */ -+ iconv_t cd1 = iconv_open ("UTF-8", "EUC-JP"); -+ /* Try IRIX, OSF/1 names. */ -+ iconv_t cd2 = iconv_open ("UTF-8", "eucJP"); -+ /* Try AIX names. */ -+ iconv_t cd3 = iconv_open ("UTF-8", "IBM-eucJP"); -+ /* Try HP-UX names. */ -+ iconv_t cd4 = iconv_open ("utf8", "eucJP"); -+ if (cd1 == (iconv_t)(-1) && cd2 == (iconv_t)(-1) -+ && cd3 == (iconv_t)(-1) && cd4 == (iconv_t)(-1)) -+ result |= 32; -+ if (cd1 != (iconv_t)(-1)) -+ iconv_close (cd1); -+ if (cd2 != (iconv_t)(-1)) -+ iconv_close (cd2); -+ if (cd3 != (iconv_t)(-1)) -+ iconv_close (cd3); -+ if (cd4 != (iconv_t)(-1)) -+ iconv_close (cd4); -+ } -+ return result; -+]])], -+ [am_cv_func_iconv_works=yes], , -+ [case "$host_os" in -+ aix* | hpux*) am_cv_func_iconv_works="guessing no" ;; -+ *) am_cv_func_iconv_works="guessing yes" ;; -+ esac]) -+ test "$am_cv_func_iconv_works" = no || break -+ done -+ LIBS="$gl_saved_LIBS" -+ ]) -+ case "$am_cv_func_iconv_works" in -+ *no) am_func_iconv=no am_cv_lib_iconv=no ;; -+ *) am_func_iconv=yes ;; -+ esac -+ else -+ am_func_iconv=no am_cv_lib_iconv=no -+ fi -+ if test "$am_func_iconv" = yes; then -+ AC_DEFINE([HAVE_ICONV], [1], -+ [Define if you have the iconv() function and it works.]) -+ fi -+ if test "$am_cv_lib_iconv" = yes; then -+ AC_MSG_CHECKING([how to link with libiconv]) -+ AC_MSG_RESULT([$LIBICONV]) -+ else -+ dnl If $LIBICONV didn't lead to a usable library, we don't need $INCICONV -+ dnl either. -+ CPPFLAGS="$gl_saved_CPPFLAGS" -+ LIBICONV= -+ LTLIBICONV= -+ fi -+ AC_SUBST([LIBICONV]) -+ AC_SUBST([LTLIBICONV]) -+]) -+ -+dnl Define AM_ICONV using AC_DEFUN_ONCE, in order to avoid warnings like -+dnl "warning: AC_REQUIRE: `AM_ICONV' was expanded before it was required". -+AC_DEFUN_ONCE([AM_ICONV], -+[ -+ AM_ICONV_LINK -+ if test "$am_cv_func_iconv" = yes; then -+ AC_CACHE_CHECK([whether iconv is compatible with its POSIX signature], -+ [gl_cv_iconv_nonconst], -+ [AC_COMPILE_IFELSE( -+ [AC_LANG_PROGRAM( -+ [[ -+#include -+#include -+extern -+#ifdef __cplusplus -+"C" -+#endif -+size_t iconv (iconv_t cd, char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft); -+ ]], -+ [[]])], -+ [gl_cv_iconv_nonconst=yes], -+ [gl_cv_iconv_nonconst=no]) -+ ]) -+ else -+ dnl When compiling GNU libiconv on a system that does not have iconv yet, -+ dnl pick the POSIX compliant declaration without 'const'. -+ gl_cv_iconv_nonconst=yes -+ fi -+ if test $gl_cv_iconv_nonconst = yes; then -+ iconv_arg1="" -+ else -+ iconv_arg1="const" -+ fi -+ AC_DEFINE_UNQUOTED([ICONV_CONST], [$iconv_arg1], -+ [Define as const if the declaration of iconv() needs const.]) -+ dnl Also substitute ICONV_CONST in the gnulib generated . -+ m4_ifdef([gl_ICONV_H_DEFAULTS], -+ [AC_REQUIRE([gl_ICONV_H_DEFAULTS]) -+ if test $gl_cv_iconv_nonconst != yes; then -+ ICONV_CONST="const" -+ fi -+ ]) -+ -+ dnl A summary result, for those packages which want to print a summary at the -+ dnl end of the configuration. -+ if test "$am_func_iconv" = yes; then -+ if test -n "$LIBICONV"; then -+ am_cv_func_iconv_summary='yes, in libiconv' -+ else -+ am_cv_func_iconv_summary='yes, in libc' -+ fi -+ else -+ if test "$am_cv_func_iconv" = yes; then -+ am_cv_func_iconv_summary='not working, consider installing GNU libiconv' -+ else -+ am_cv_func_iconv_summary='no, consider installing GNU libiconv' -+ fi -+ fi -+]) -diff --git a/m4/intlmacosx.m4 b/m4/intlmacosx.m4 -new file mode 100644 -index 00000000..f0920d0f ---- /dev/null -+++ b/m4/intlmacosx.m4 -@@ -0,0 +1,71 @@ -+# intlmacosx.m4 -+# serial 10 (gettext-0.23) -+dnl Copyright (C) 2004-2014, 2016, 2019-2025 Free Software Foundation, Inc. -+dnl This file is free software; the Free Software Foundation -+dnl gives unlimited permission to copy and/or distribute it, -+dnl with or without modifications, as long as this notice is preserved. -+dnl This file is offered as-is, without any warranty. -+dnl -+dnl This file can be used in projects which are not available under -+dnl the GNU General Public License or the GNU Lesser General Public -+dnl License but which still want to provide support for the GNU gettext -+dnl functionality. -+dnl Please note that the actual code of the GNU gettext library is covered -+dnl by the GNU Lesser General Public License, and the rest of the GNU -+dnl gettext package is covered by the GNU General Public License. -+dnl They are *not* in the public domain. -+ -+dnl Checks for special options needed on Mac OS X. -+dnl Defines INTL_MACOSX_LIBS. -+AC_DEFUN([gt_INTL_MACOSX], -+[ -+ dnl Check for API introduced in Mac OS X 10.4. -+ AC_CACHE_CHECK([for CFPreferencesCopyAppValue], -+ [gt_cv_func_CFPreferencesCopyAppValue], -+ [gt_saved_LIBS="$LIBS" -+ LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation" -+ AC_LINK_IFELSE( -+ [AC_LANG_PROGRAM( -+ [[#include ]], -+ [[CFPreferencesCopyAppValue(NULL, NULL)]])], -+ [gt_cv_func_CFPreferencesCopyAppValue=yes], -+ [gt_cv_func_CFPreferencesCopyAppValue=no]) -+ LIBS="$gt_saved_LIBS"]) -+ if test $gt_cv_func_CFPreferencesCopyAppValue = yes; then -+ AC_DEFINE([HAVE_CFPREFERENCESCOPYAPPVALUE], [1], -+ [Define to 1 if you have the Mac OS X function CFPreferencesCopyAppValue in the CoreFoundation framework.]) -+ fi -+ dnl Don't check for the API introduced in Mac OS X 10.5, CFLocaleCopyCurrent, -+ dnl because in macOS 10.13.4 it has the following behaviour: -+ dnl When two or more languages are specified in the -+ dnl "System Preferences > Language & Region > Preferred Languages" panel, -+ dnl it returns en_CC where CC is the territory (even when English is not among -+ dnl the preferred languages!). What we want instead is what -+ dnl CFLocaleCopyCurrent returned in earlier macOS releases and what -+ dnl CFPreferencesCopyAppValue still returns, namely ll_CC where ll is the -+ dnl first among the preferred languages and CC is the territory. -+ AC_CACHE_CHECK([for CFLocaleCopyPreferredLanguages], [gt_cv_func_CFLocaleCopyPreferredLanguages], -+ [gt_saved_LIBS="$LIBS" -+ LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation" -+ AC_LINK_IFELSE( -+ [AC_LANG_PROGRAM( -+ [[#include ]], -+ [[CFLocaleCopyPreferredLanguages();]])], -+ [gt_cv_func_CFLocaleCopyPreferredLanguages=yes], -+ [gt_cv_func_CFLocaleCopyPreferredLanguages=no]) -+ LIBS="$gt_saved_LIBS"]) -+ if test $gt_cv_func_CFLocaleCopyPreferredLanguages = yes; then -+ AC_DEFINE([HAVE_CFLOCALECOPYPREFERREDLANGUAGES], [1], -+ [Define to 1 if you have the Mac OS X function CFLocaleCopyPreferredLanguages in the CoreFoundation framework.]) -+ fi -+ INTL_MACOSX_LIBS= -+ if test $gt_cv_func_CFPreferencesCopyAppValue = yes \ -+ || test $gt_cv_func_CFLocaleCopyPreferredLanguages = yes; then -+ dnl Starting with macOS version 14, CoreFoundation relies on CoreServices, -+ dnl and we have to link it in explicitly, otherwise an exception -+ dnl NSInvalidArgumentException "unrecognized selector sent to instance" -+ dnl occurs. -+ INTL_MACOSX_LIBS="-Wl,-framework -Wl,CoreFoundation -Wl,-framework -Wl,CoreServices" -+ fi -+ AC_SUBST([INTL_MACOSX_LIBS]) -+]) -diff --git a/m4/lib-ld.m4 b/m4/lib-ld.m4 -new file mode 100644 -index 00000000..3714b9ce ---- /dev/null -+++ b/m4/lib-ld.m4 -@@ -0,0 +1,170 @@ -+# lib-ld.m4 -+# serial 13 -+dnl Copyright (C) 1996-2003, 2009-2025 Free Software Foundation, Inc. -+dnl This file is free software; the Free Software Foundation -+dnl gives unlimited permission to copy and/or distribute it, -+dnl with or without modifications, as long as this notice is preserved. -+dnl This file is offered as-is, without any warranty. -+ -+dnl Subroutines of libtool.m4, -+dnl with replacements s/_*LT_PATH/AC_LIB_PROG/ and s/lt_/acl_/ to avoid -+dnl collision with libtool.m4. -+ -+dnl From libtool-2.4. Sets the variable with_gnu_ld to yes or no. -+AC_DEFUN([AC_LIB_PROG_LD_GNU], -+[AC_CACHE_CHECK([if the linker ($LD) is GNU ld], [acl_cv_prog_gnu_ld], -+[# I'd rather use --version here, but apparently some GNU lds only accept -v. -+case `$LD -v 2>&1 /dev/null 2>&1 \ -+ && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \ -+ || PATH_SEPARATOR=';' -+ } -+fi -+ -+if test -n "$LD"; then -+ AC_MSG_CHECKING([for ld]) -+elif test "$GCC" = yes; then -+ AC_MSG_CHECKING([for ld used by $CC]) -+elif test "$with_gnu_ld" = yes; then -+ AC_MSG_CHECKING([for GNU ld]) -+else -+ AC_MSG_CHECKING([for non-GNU ld]) -+fi -+if test -n "$LD"; then -+ # Let the user override the test with a path. -+ : -+else -+ AC_CACHE_VAL([acl_cv_path_LD], -+ [ -+ acl_cv_path_LD= # Final result of this test -+ ac_prog=ld # Program to search in $PATH -+ if test "$GCC" = yes; then -+ # Check if gcc -print-prog-name=ld gives a path. -+ case $host in -+ *-*-mingw* | windows*) -+ # gcc leaves a trailing carriage return which upsets mingw -+ acl_output=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; -+ *) -+ acl_output=`($CC -print-prog-name=ld) 2>&5` ;; -+ esac -+ case $acl_output in -+ # Accept absolute paths. -+ [[\\/]]* | ?:[[\\/]]*) -+ re_direlt='/[[^/]][[^/]]*/\.\./' -+ # Canonicalize the pathname of ld -+ acl_output=`echo "$acl_output" | sed 's%\\\\%/%g'` -+ while echo "$acl_output" | grep "$re_direlt" > /dev/null 2>&1; do -+ acl_output=`echo $acl_output | sed "s%$re_direlt%/%"` -+ done -+ # Got the pathname. No search in PATH is needed. -+ acl_cv_path_LD="$acl_output" -+ ac_prog= -+ ;; -+ "") -+ # If it fails, then pretend we aren't using GCC. -+ ;; -+ *) -+ # If it is relative, then search for the first ld in PATH. -+ with_gnu_ld=unknown -+ ;; -+ esac -+ fi -+ if test -n "$ac_prog"; then -+ # Search for $ac_prog in $PATH. -+ acl_saved_IFS="$IFS"; IFS=$PATH_SEPARATOR -+ for ac_dir in $PATH; do -+ IFS="$acl_saved_IFS" -+ test -z "$ac_dir" && ac_dir=. -+ if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then -+ acl_cv_path_LD="$ac_dir/$ac_prog" -+ # Check to see if the program is GNU ld. I'd rather use --version, -+ # but apparently some variants of GNU ld only accept -v. -+ # Break only if it was the GNU/non-GNU ld that we prefer. -+ case `"$acl_cv_path_LD" -v 2>&1 conftest.sh -+ . ./conftest.sh -+ rm -f ./conftest.sh -+ acl_cv_rpath=done -+ ]) -+ wl="$acl_cv_wl" -+ acl_libext="$acl_cv_libext" -+ acl_shlibext="$acl_cv_shlibext" -+ acl_libname_spec="$acl_cv_libname_spec" -+ acl_library_names_spec="$acl_cv_library_names_spec" -+ acl_hardcode_libdir_flag_spec="$acl_cv_hardcode_libdir_flag_spec" -+ acl_hardcode_libdir_separator="$acl_cv_hardcode_libdir_separator" -+ acl_hardcode_direct="$acl_cv_hardcode_direct" -+ acl_hardcode_minus_L="$acl_cv_hardcode_minus_L" -+ dnl Determine whether the user wants rpath handling at all. -+ AC_ARG_ENABLE([rpath], -+ [ --disable-rpath do not hardcode runtime library paths], -+ :, enable_rpath=yes) -+]) -+ -+dnl AC_LIB_FROMPACKAGE(name, package) -+dnl declares that libname comes from the given package. The configure file -+dnl will then not have a --with-libname-prefix option but a -+dnl --with-package-prefix option. Several libraries can come from the same -+dnl package. This declaration must occur before an AC_LIB_LINKFLAGS or similar -+dnl macro call that searches for libname. -+AC_DEFUN([AC_LIB_FROMPACKAGE], -+[ -+ pushdef([NAME],[m4_translit([$1],[abcdefghijklmnopqrstuvwxyz./+-], -+ [ABCDEFGHIJKLMNOPQRSTUVWXYZ____])]) -+ define([acl_frompackage_]NAME, [$2]) -+ popdef([NAME]) -+ pushdef([PACK],[$2]) -+ pushdef([PACKUP],[m4_translit(PACK,[abcdefghijklmnopqrstuvwxyz./+-], -+ [ABCDEFGHIJKLMNOPQRSTUVWXYZ____])]) -+ define([acl_libsinpackage_]PACKUP, -+ m4_ifdef([acl_libsinpackage_]PACKUP, [m4_defn([acl_libsinpackage_]PACKUP)[[, ]]],)[lib$1]) -+ popdef([PACKUP]) -+ popdef([PACK]) -+]) -+ -+dnl AC_LIB_LINKFLAGS_BODY(name [, dependencies]) searches for libname and -+dnl the libraries corresponding to explicit and implicit dependencies. -+dnl Sets the LIB${NAME}, LTLIB${NAME} and INC${NAME} variables. -+dnl Also, sets the LIB${NAME}_PREFIX variable to nonempty if libname was found -+dnl in ${LIB${NAME}_PREFIX}/$acl_libdirstem. -+AC_DEFUN([AC_LIB_LINKFLAGS_BODY], -+[ -+ AC_REQUIRE([AC_LIB_PREPARE_MULTILIB]) -+ pushdef([NAME],[m4_translit([$1],[abcdefghijklmnopqrstuvwxyz./+-], -+ [ABCDEFGHIJKLMNOPQRSTUVWXYZ____])]) -+ pushdef([PACK],[m4_ifdef([acl_frompackage_]NAME, [acl_frompackage_]NAME, lib[$1])]) -+ pushdef([PACKUP],[m4_translit(PACK,[abcdefghijklmnopqrstuvwxyz./+-], -+ [ABCDEFGHIJKLMNOPQRSTUVWXYZ____])]) -+ pushdef([PACKLIBS],[m4_ifdef([acl_frompackage_]NAME, [acl_libsinpackage_]PACKUP, lib[$1])]) -+ dnl By default, look in $includedir and $libdir. -+ use_additional=yes -+ AC_LIB_WITH_FINAL_PREFIX([ -+ eval additional_includedir=\"$includedir\" -+ eval additional_libdir=\"$libdir\" -+ eval additional_libdir2=\"$exec_prefix/$acl_libdirstem2\" -+ eval additional_libdir3=\"$exec_prefix/$acl_libdirstem3\" -+ ]) -+ AC_ARG_WITH(PACK[-prefix], -+[[ --with-]]PACK[[-prefix[=DIR] search for ]]PACKLIBS[[ in DIR/include and DIR/lib -+ --without-]]PACK[[-prefix don't search for ]]PACKLIBS[[ in includedir and libdir]], -+[ -+ if test "X$withval" = "Xno"; then -+ use_additional=no -+ else -+ if test "X$withval" = "X"; then -+ AC_LIB_WITH_FINAL_PREFIX([ -+ eval additional_includedir=\"$includedir\" -+ eval additional_libdir=\"$libdir\" -+ eval additional_libdir2=\"$exec_prefix/$acl_libdirstem2\" -+ eval additional_libdir3=\"$exec_prefix/$acl_libdirstem3\" -+ ]) -+ else -+ additional_includedir="$withval/include" -+ additional_libdir="$withval/$acl_libdirstem" -+ additional_libdir2="$withval/$acl_libdirstem2" -+ additional_libdir3="$withval/$acl_libdirstem3" -+ fi -+ fi -+]) -+ if test "X$additional_libdir2" = "X$additional_libdir"; then -+ additional_libdir2= -+ fi -+ if test "X$additional_libdir3" = "X$additional_libdir"; then -+ additional_libdir3= -+ fi -+ dnl Search the library and its dependencies in $additional_libdir and -+ dnl $LDFLAGS. Use breadth-first search. -+ LIB[]NAME= -+ LTLIB[]NAME= -+ INC[]NAME= -+ LIB[]NAME[]_PREFIX= -+ dnl HAVE_LIB${NAME} is an indicator that LIB${NAME}, LTLIB${NAME} have been -+ dnl computed. So it has to be reset here. -+ HAVE_LIB[]NAME= -+ rpathdirs= -+ ltrpathdirs= -+ names_already_handled= -+ names_next_round='$1 $2' -+ while test -n "$names_next_round"; do -+ names_this_round="$names_next_round" -+ names_next_round= -+ for name in $names_this_round; do -+ already_handled= -+ for n in $names_already_handled; do -+ if test "$n" = "$name"; then -+ already_handled=yes -+ break -+ fi -+ done -+ if test -z "$already_handled"; then -+ names_already_handled="$names_already_handled $name" -+ dnl See if it was already located by an earlier AC_LIB_LINKFLAGS -+ dnl or AC_LIB_HAVE_LINKFLAGS call. -+ uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./+-|ABCDEFGHIJKLMNOPQRSTUVWXYZ____|'` -+ eval value=\"\$HAVE_LIB$uppername\" -+ if test -n "$value"; then -+ if test "$value" = yes; then -+ eval value=\"\$LIB$uppername\" -+ test -z "$value" || LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$value" -+ eval value=\"\$LTLIB$uppername\" -+ test -z "$value" || LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }$value" -+ else -+ dnl An earlier call to AC_LIB_HAVE_LINKFLAGS has determined -+ dnl that this library doesn't exist. So just drop it. -+ : -+ fi -+ else -+ dnl Search the library lib$name in $additional_libdir and $LDFLAGS -+ dnl and the already constructed $LIBNAME/$LTLIBNAME. -+ found_dir= -+ found_la= -+ found_so= -+ found_a= -+ eval libname=\"$acl_libname_spec\" # typically: libname=lib$name -+ if test -n "$acl_shlibext"; then -+ shrext=".$acl_shlibext" # typically: shrext=.so -+ else -+ shrext= -+ fi -+ if test $use_additional = yes; then -+ for additional_libdir_variable in additional_libdir additional_libdir2 additional_libdir3; do -+ if test "X$found_dir" = "X"; then -+ eval dir=\$$additional_libdir_variable -+ if test -n "$dir"; then -+ dnl The same code as in the loop below: -+ dnl First look for a shared library. -+ if test -n "$acl_shlibext"; then -+ if test -f "$dir/$libname$shrext" && acl_is_expected_elfclass < "$dir/$libname$shrext"; then -+ found_dir="$dir" -+ found_so="$dir/$libname$shrext" -+ else -+ if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then -+ ver=`(cd "$dir" && \ -+ for f in "$libname$shrext".*; do echo "$f"; done \ -+ | sed -e "s,^$libname$shrext\\\\.,," \ -+ | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \ -+ | sed 1q ) 2>/dev/null` -+ if test -n "$ver" && test -f "$dir/$libname$shrext.$ver" && acl_is_expected_elfclass < "$dir/$libname$shrext.$ver"; then -+ found_dir="$dir" -+ found_so="$dir/$libname$shrext.$ver" -+ fi -+ else -+ eval library_names=\"$acl_library_names_spec\" -+ for f in $library_names; do -+ if test -f "$dir/$f" && acl_is_expected_elfclass < "$dir/$f"; then -+ found_dir="$dir" -+ found_so="$dir/$f" -+ break -+ fi -+ done -+ fi -+ fi -+ fi -+ dnl Then look for a static library. -+ if test "X$found_dir" = "X"; then -+ if test -f "$dir/$libname.$acl_libext" && ${AR-ar} -p "$dir/$libname.$acl_libext" | acl_is_expected_elfclass; then -+ found_dir="$dir" -+ found_a="$dir/$libname.$acl_libext" -+ fi -+ fi -+ if test "X$found_dir" != "X"; then -+ if test -f "$dir/$libname.la"; then -+ found_la="$dir/$libname.la" -+ fi -+ fi -+ fi -+ fi -+ done -+ fi -+ if test "X$found_dir" = "X"; then -+ for x in $LDFLAGS $LTLIB[]NAME; do -+ AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) -+ case "$x" in -+ -L*) -+ dir=`echo "X$x" | sed -e 's/^X-L//'` -+ dnl First look for a shared library. -+ if test -n "$acl_shlibext"; then -+ if test -f "$dir/$libname$shrext" && acl_is_expected_elfclass < "$dir/$libname$shrext"; then -+ found_dir="$dir" -+ found_so="$dir/$libname$shrext" -+ else -+ if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then -+ ver=`(cd "$dir" && \ -+ for f in "$libname$shrext".*; do echo "$f"; done \ -+ | sed -e "s,^$libname$shrext\\\\.,," \ -+ | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \ -+ | sed 1q ) 2>/dev/null` -+ if test -n "$ver" && test -f "$dir/$libname$shrext.$ver" && acl_is_expected_elfclass < "$dir/$libname$shrext.$ver"; then -+ found_dir="$dir" -+ found_so="$dir/$libname$shrext.$ver" -+ fi -+ else -+ eval library_names=\"$acl_library_names_spec\" -+ for f in $library_names; do -+ if test -f "$dir/$f" && acl_is_expected_elfclass < "$dir/$f"; then -+ found_dir="$dir" -+ found_so="$dir/$f" -+ break -+ fi -+ done -+ fi -+ fi -+ fi -+ dnl Then look for a static library. -+ if test "X$found_dir" = "X"; then -+ if test -f "$dir/$libname.$acl_libext" && ${AR-ar} -p "$dir/$libname.$acl_libext" | acl_is_expected_elfclass; then -+ found_dir="$dir" -+ found_a="$dir/$libname.$acl_libext" -+ fi -+ fi -+ if test "X$found_dir" != "X"; then -+ if test -f "$dir/$libname.la"; then -+ found_la="$dir/$libname.la" -+ fi -+ fi -+ ;; -+ esac -+ if test "X$found_dir" != "X"; then -+ break -+ fi -+ done -+ fi -+ if test "X$found_dir" != "X"; then -+ dnl Found the library. -+ LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-L$found_dir -l$name" -+ if test "X$found_so" != "X"; then -+ dnl Linking with a shared library. We attempt to hardcode its -+ dnl directory into the executable's runpath, unless it's the -+ dnl standard /usr/lib. -+ if test "$enable_rpath" = no \ -+ || test "X$found_dir" = "X/usr/$acl_libdirstem" \ -+ || test "X$found_dir" = "X/usr/$acl_libdirstem2" \ -+ || test "X$found_dir" = "X/usr/$acl_libdirstem3"; then -+ dnl No hardcoding is needed. -+ LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so" -+ else -+ dnl Use an explicit option to hardcode DIR into the resulting -+ dnl binary. -+ dnl Potentially add DIR to ltrpathdirs. -+ dnl The ltrpathdirs will be appended to $LTLIBNAME at the end. -+ haveit= -+ for x in $ltrpathdirs; do -+ if test "X$x" = "X$found_dir"; then -+ haveit=yes -+ break -+ fi -+ done -+ if test -z "$haveit"; then -+ ltrpathdirs="$ltrpathdirs $found_dir" -+ fi -+ dnl The hardcoding into $LIBNAME is system dependent. -+ if test "$acl_hardcode_direct" = yes; then -+ dnl Using DIR/libNAME.so during linking hardcodes DIR into the -+ dnl resulting binary. -+ LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so" -+ else -+ if test -n "$acl_hardcode_libdir_flag_spec" && test "$acl_hardcode_minus_L" = no; then -+ dnl Use an explicit option to hardcode DIR into the resulting -+ dnl binary. -+ LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so" -+ dnl Potentially add DIR to rpathdirs. -+ dnl The rpathdirs will be appended to $LIBNAME at the end. -+ haveit= -+ for x in $rpathdirs; do -+ if test "X$x" = "X$found_dir"; then -+ haveit=yes -+ break -+ fi -+ done -+ if test -z "$haveit"; then -+ rpathdirs="$rpathdirs $found_dir" -+ fi -+ else -+ dnl Rely on "-L$found_dir". -+ dnl But don't add it if it's already contained in the LDFLAGS -+ dnl or the already constructed $LIBNAME -+ haveit= -+ for x in $LDFLAGS $LIB[]NAME; do -+ AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) -+ if test "X$x" = "X-L$found_dir"; then -+ haveit=yes -+ break -+ fi -+ done -+ if test -z "$haveit"; then -+ LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$found_dir" -+ fi -+ if test "$acl_hardcode_minus_L" != no; then -+ dnl FIXME: Not sure whether we should use -+ dnl "-L$found_dir -l$name" or "-L$found_dir $found_so" -+ dnl here. -+ LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so" -+ else -+ dnl We cannot use $acl_hardcode_runpath_var and LD_RUN_PATH -+ dnl here, because this doesn't fit in flags passed to the -+ dnl compiler. So give up. No hardcoding. This affects only -+ dnl very old systems. -+ dnl FIXME: Not sure whether we should use -+ dnl "-L$found_dir -l$name" or "-L$found_dir $found_so" -+ dnl here. -+ LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-l$name" -+ fi -+ fi -+ fi -+ fi -+ else -+ if test "X$found_a" != "X"; then -+ dnl Linking with a static library. -+ LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_a" -+ else -+ dnl We shouldn't come here, but anyway it's good to have a -+ dnl fallback. -+ LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$found_dir -l$name" -+ fi -+ fi -+ dnl Assume the include files are nearby. -+ additional_includedir= -+ case "$found_dir" in -+ */$acl_libdirstem | */$acl_libdirstem/) -+ basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem/"'*$,,'` -+ if test "$name" = '$1'; then -+ LIB[]NAME[]_PREFIX="$basedir" -+ fi -+ additional_includedir="$basedir/include" -+ ;; -+ */$acl_libdirstem2 | */$acl_libdirstem2/) -+ basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem2/"'*$,,'` -+ if test "$name" = '$1'; then -+ LIB[]NAME[]_PREFIX="$basedir" -+ fi -+ additional_includedir="$basedir/include" -+ ;; -+ */$acl_libdirstem3 | */$acl_libdirstem3/) -+ basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem3/"'*$,,'` -+ if test "$name" = '$1'; then -+ LIB[]NAME[]_PREFIX="$basedir" -+ fi -+ additional_includedir="$basedir/include" -+ ;; -+ esac -+ if test "X$additional_includedir" != "X"; then -+ dnl Potentially add $additional_includedir to $INCNAME. -+ dnl But don't add it -+ dnl 1. if it's the standard /usr/include, -+ dnl 2. if it's /usr/local/include and we are using GCC on Linux, -+ dnl 3. if it's already present in $CPPFLAGS or the already -+ dnl constructed $INCNAME, -+ dnl 4. if it doesn't exist as a directory. -+ if test "X$additional_includedir" != "X/usr/include"; then -+ haveit= -+ if test "X$additional_includedir" = "X/usr/local/include"; then -+ if test -n "$GCC"; then -+ case $host_os in -+ linux* | gnu* | k*bsd*-gnu) haveit=yes;; -+ esac -+ fi -+ fi -+ if test -z "$haveit"; then -+ for x in $CPPFLAGS $INC[]NAME; do -+ AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) -+ if test "X$x" = "X-I$additional_includedir"; then -+ haveit=yes -+ break -+ fi -+ done -+ if test -z "$haveit"; then -+ if test -d "$additional_includedir"; then -+ dnl Really add $additional_includedir to $INCNAME. -+ INC[]NAME="${INC[]NAME}${INC[]NAME:+ }-I$additional_includedir" -+ fi -+ fi -+ fi -+ fi -+ fi -+ dnl Look for dependencies. -+ if test -n "$found_la"; then -+ dnl Read the .la file. It defines the variables -+ dnl dlname, library_names, old_library, dependency_libs, current, -+ dnl age, revision, installed, dlopen, dlpreopen, libdir. -+ saved_libdir="$libdir" -+ case "$found_la" in -+ */* | *\\*) . "$found_la" ;; -+ *) . "./$found_la" ;; -+ esac -+ libdir="$saved_libdir" -+ dnl We use only dependency_libs. -+ for dep in $dependency_libs; do -+ case "$dep" in -+ -L*) -+ dependency_libdir=`echo "X$dep" | sed -e 's/^X-L//'` -+ dnl Potentially add $dependency_libdir to $LIBNAME and $LTLIBNAME. -+ dnl But don't add it -+ dnl 1. if it's the standard /usr/lib, -+ dnl 2. if it's /usr/local/lib and we are using GCC on Linux, -+ dnl 3. if it's already present in $LDFLAGS or the already -+ dnl constructed $LIBNAME, -+ dnl 4. if it doesn't exist as a directory. -+ if test "X$dependency_libdir" != "X/usr/$acl_libdirstem" \ -+ && test "X$dependency_libdir" != "X/usr/$acl_libdirstem2" \ -+ && test "X$dependency_libdir" != "X/usr/$acl_libdirstem3"; then -+ haveit= -+ if test "X$dependency_libdir" = "X/usr/local/$acl_libdirstem" \ -+ || test "X$dependency_libdir" = "X/usr/local/$acl_libdirstem2" \ -+ || test "X$dependency_libdir" = "X/usr/local/$acl_libdirstem3"; then -+ if test -n "$GCC"; then -+ case $host_os in -+ linux* | gnu* | k*bsd*-gnu) haveit=yes;; -+ esac -+ fi -+ fi -+ if test -z "$haveit"; then -+ haveit= -+ for x in $LDFLAGS $LIB[]NAME; do -+ AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) -+ if test "X$x" = "X-L$dependency_libdir"; then -+ haveit=yes -+ break -+ fi -+ done -+ if test -z "$haveit"; then -+ if test -d "$dependency_libdir"; then -+ dnl Really add $dependency_libdir to $LIBNAME. -+ LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$dependency_libdir" -+ fi -+ fi -+ haveit= -+ for x in $LDFLAGS $LTLIB[]NAME; do -+ AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) -+ if test "X$x" = "X-L$dependency_libdir"; then -+ haveit=yes -+ break -+ fi -+ done -+ if test -z "$haveit"; then -+ if test -d "$dependency_libdir"; then -+ dnl Really add $dependency_libdir to $LTLIBNAME. -+ LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-L$dependency_libdir" -+ fi -+ fi -+ fi -+ fi -+ ;; -+ -R*) -+ dir=`echo "X$dep" | sed -e 's/^X-R//'` -+ if test "$enable_rpath" != no; then -+ dnl Potentially add DIR to rpathdirs. -+ dnl The rpathdirs will be appended to $LIBNAME at the end. -+ haveit= -+ for x in $rpathdirs; do -+ if test "X$x" = "X$dir"; then -+ haveit=yes -+ break -+ fi -+ done -+ if test -z "$haveit"; then -+ rpathdirs="$rpathdirs $dir" -+ fi -+ dnl Potentially add DIR to ltrpathdirs. -+ dnl The ltrpathdirs will be appended to $LTLIBNAME at the end. -+ haveit= -+ for x in $ltrpathdirs; do -+ if test "X$x" = "X$dir"; then -+ haveit=yes -+ break -+ fi -+ done -+ if test -z "$haveit"; then -+ ltrpathdirs="$ltrpathdirs $dir" -+ fi -+ fi -+ ;; -+ -l*) -+ dnl Handle this in the next round. -+ dnl But on GNU systems, ignore -lc options, because -+ dnl - linking with libc is the default anyway, -+ dnl - linking with libc.a may produce an error -+ dnl "/usr/bin/ld: dynamic STT_GNU_IFUNC symbol `strcmp' with pointer equality in `/usr/lib/libc.a(strcmp.o)' can not be used when making an executable; recompile with -fPIE and relink with -pie" -+ dnl or may produce an executable that always crashes, see -+ dnl . -+ dep=`echo "X$dep" | sed -e 's/^X-l//'` -+ if test "X$dep" != Xc \ -+ || case $host_os in -+ linux* | gnu* | k*bsd*-gnu) false ;; -+ *) true ;; -+ esac; then -+ names_next_round="$names_next_round $dep" -+ fi -+ ;; -+ *.la) -+ dnl Handle this in the next round. Throw away the .la's -+ dnl directory; it is already contained in a preceding -L -+ dnl option. -+ names_next_round="$names_next_round "`echo "X$dep" | sed -e 's,^X.*/,,' -e 's,^lib,,' -e 's,\.la$,,'` -+ ;; -+ *) -+ dnl Most likely an immediate library name. -+ LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$dep" -+ LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }$dep" -+ ;; -+ esac -+ done -+ fi -+ else -+ dnl Didn't find the library; assume it is in the system directories -+ dnl known to the linker and runtime loader. (All the system -+ dnl directories known to the linker should also be known to the -+ dnl runtime loader, otherwise the system is severely misconfigured.) -+ LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-l$name" -+ LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-l$name" -+ fi -+ fi -+ fi -+ done -+ done -+ if test "X$rpathdirs" != "X"; then -+ if test -n "$acl_hardcode_libdir_separator"; then -+ dnl Weird platform: only the last -rpath option counts, the user must -+ dnl pass all path elements in one option. We can arrange that for a -+ dnl single library, but not when more than one $LIBNAMEs are used. -+ alldirs= -+ for found_dir in $rpathdirs; do -+ alldirs="${alldirs}${alldirs:+$acl_hardcode_libdir_separator}$found_dir" -+ done -+ dnl Note: acl_hardcode_libdir_flag_spec uses $libdir and $wl. -+ acl_saved_libdir="$libdir" -+ libdir="$alldirs" -+ eval flag=\"$acl_hardcode_libdir_flag_spec\" -+ libdir="$acl_saved_libdir" -+ LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$flag" -+ else -+ dnl The -rpath options are cumulative. -+ for found_dir in $rpathdirs; do -+ acl_saved_libdir="$libdir" -+ libdir="$found_dir" -+ eval flag=\"$acl_hardcode_libdir_flag_spec\" -+ libdir="$acl_saved_libdir" -+ LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$flag" -+ done -+ fi -+ fi -+ if test "X$ltrpathdirs" != "X"; then -+ dnl When using libtool, the option that works for both libraries and -+ dnl executables is -R. The -R options are cumulative. -+ for found_dir in $ltrpathdirs; do -+ LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-R$found_dir" -+ done -+ fi -+ popdef([PACKLIBS]) -+ popdef([PACKUP]) -+ popdef([PACK]) -+ popdef([NAME]) -+]) -+ -+dnl AC_LIB_APPENDTOVAR(VAR, CONTENTS) appends the elements of CONTENTS to VAR, -+dnl unless already present in VAR. -+dnl Works only for CPPFLAGS, not for LIB* variables because that sometimes -+dnl contains two or three consecutive elements that belong together. -+AC_DEFUN([AC_LIB_APPENDTOVAR], -+[ -+ for element in [$2]; do -+ haveit= -+ for x in $[$1]; do -+ AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) -+ if test "X$x" = "X$element"; then -+ haveit=yes -+ break -+ fi -+ done -+ if test -z "$haveit"; then -+ [$1]="${[$1]}${[$1]:+ }$element" -+ fi -+ done -+]) -+ -+dnl For those cases where a variable contains several -L and -l options -+dnl referring to unknown libraries and directories, this macro determines the -+dnl necessary additional linker options for the runtime path. -+dnl AC_LIB_LINKFLAGS_FROM_LIBS([LDADDVAR], [LIBSVALUE], [USE-LIBTOOL]) -+dnl sets LDADDVAR to linker options needed together with LIBSVALUE. -+dnl If USE-LIBTOOL evaluates to non-empty, linking with libtool is assumed, -+dnl otherwise linking without libtool is assumed. -+AC_DEFUN([AC_LIB_LINKFLAGS_FROM_LIBS], -+[ -+ AC_REQUIRE([AC_LIB_RPATH]) -+ AC_REQUIRE([AC_LIB_PREPARE_MULTILIB]) -+ $1= -+ if test "$enable_rpath" != no; then -+ if test -n "$acl_hardcode_libdir_flag_spec" && test "$acl_hardcode_minus_L" = no; then -+ dnl Use an explicit option to hardcode directories into the resulting -+ dnl binary. -+ rpathdirs= -+ next= -+ for opt in $2; do -+ if test -n "$next"; then -+ dir="$next" -+ dnl No need to hardcode the standard /usr/lib. -+ if test "X$dir" != "X/usr/$acl_libdirstem" \ -+ && test "X$dir" != "X/usr/$acl_libdirstem2" \ -+ && test "X$dir" != "X/usr/$acl_libdirstem3"; then -+ rpathdirs="$rpathdirs $dir" -+ fi -+ next= -+ else -+ case $opt in -+ -L) next=yes ;; -+ -L*) dir=`echo "X$opt" | sed -e 's,^X-L,,'` -+ dnl No need to hardcode the standard /usr/lib. -+ if test "X$dir" != "X/usr/$acl_libdirstem" \ -+ && test "X$dir" != "X/usr/$acl_libdirstem2" \ -+ && test "X$dir" != "X/usr/$acl_libdirstem3"; then -+ rpathdirs="$rpathdirs $dir" -+ fi -+ next= ;; -+ *) next= ;; -+ esac -+ fi -+ done -+ if test "X$rpathdirs" != "X"; then -+ if test -n ""$3""; then -+ dnl libtool is used for linking. Use -R options. -+ for dir in $rpathdirs; do -+ $1="${$1}${$1:+ }-R$dir" -+ done -+ else -+ dnl The linker is used for linking directly. -+ if test -n "$acl_hardcode_libdir_separator"; then -+ dnl Weird platform: only the last -rpath option counts, the user -+ dnl must pass all path elements in one option. -+ alldirs= -+ for dir in $rpathdirs; do -+ alldirs="${alldirs}${alldirs:+$acl_hardcode_libdir_separator}$dir" -+ done -+ acl_saved_libdir="$libdir" -+ libdir="$alldirs" -+ eval flag=\"$acl_hardcode_libdir_flag_spec\" -+ libdir="$acl_saved_libdir" -+ $1="$flag" -+ else -+ dnl The -rpath options are cumulative. -+ for dir in $rpathdirs; do -+ acl_saved_libdir="$libdir" -+ libdir="$dir" -+ eval flag=\"$acl_hardcode_libdir_flag_spec\" -+ libdir="$acl_saved_libdir" -+ $1="${$1}${$1:+ }$flag" -+ done -+ fi -+ fi -+ fi -+ fi -+ fi -+ AC_SUBST([$1]) -+]) -diff --git a/m4/lib-prefix.m4 b/m4/lib-prefix.m4 -new file mode 100644 -index 00000000..29283534 ---- /dev/null -+++ b/m4/lib-prefix.m4 -@@ -0,0 +1,334 @@ -+# lib-prefix.m4 -+# serial 23 -+dnl Copyright (C) 2001-2005, 2008-2025 Free Software Foundation, Inc. -+dnl This file is free software; the Free Software Foundation -+dnl gives unlimited permission to copy and/or distribute it, -+dnl with or without modifications, as long as this notice is preserved. -+dnl This file is offered as-is, without any warranty. -+ -+dnl From Bruno Haible. -+ -+dnl AC_LIB_PREFIX adds to the CPPFLAGS and LDFLAGS the flags that are needed -+dnl to access previously installed libraries. The basic assumption is that -+dnl a user will want packages to use other packages he previously installed -+dnl with the same --prefix option. -+dnl This macro is not needed if only AC_LIB_LINKFLAGS is used to locate -+dnl libraries, but is otherwise very convenient. -+AC_DEFUN([AC_LIB_PREFIX], -+[ -+ AC_BEFORE([$0], [AC_LIB_LINKFLAGS]) -+ AC_REQUIRE([AC_PROG_CC]) -+ AC_REQUIRE([AC_CANONICAL_HOST]) -+ AC_REQUIRE([AC_LIB_PREPARE_MULTILIB]) -+ AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) -+ dnl By default, look in $includedir and $libdir. -+ use_additional=yes -+ AC_LIB_WITH_FINAL_PREFIX([ -+ eval additional_includedir=\"$includedir\" -+ eval additional_libdir=\"$libdir\" -+ ]) -+ AC_ARG_WITH([lib-prefix], -+[[ --with-lib-prefix[=DIR] search for libraries in DIR/include and DIR/lib -+ --without-lib-prefix don't search for libraries in includedir and libdir]], -+[ -+ if test "X$withval" = "Xno"; then -+ use_additional=no -+ else -+ if test "X$withval" = "X"; then -+ AC_LIB_WITH_FINAL_PREFIX([ -+ eval additional_includedir=\"$includedir\" -+ eval additional_libdir=\"$libdir\" -+ ]) -+ else -+ additional_includedir="$withval/include" -+ additional_libdir="$withval/$acl_libdirstem" -+ fi -+ fi -+]) -+ if test $use_additional = yes; then -+ dnl Potentially add $additional_includedir to $CPPFLAGS. -+ dnl But don't add it -+ dnl 1. if it's the standard /usr/include, -+ dnl 2. if it's already present in $CPPFLAGS, -+ dnl 3. if it's /usr/local/include and we are using GCC on Linux, -+ dnl 4. if it doesn't exist as a directory. -+ if test "X$additional_includedir" != "X/usr/include"; then -+ haveit= -+ for x in $CPPFLAGS; do -+ AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) -+ if test "X$x" = "X-I$additional_includedir"; then -+ haveit=yes -+ break -+ fi -+ done -+ if test -z "$haveit"; then -+ if test "X$additional_includedir" = "X/usr/local/include"; then -+ if test -n "$GCC"; then -+ case $host_os in -+ linux* | gnu* | k*bsd*-gnu) haveit=yes;; -+ esac -+ fi -+ fi -+ if test -z "$haveit"; then -+ if test -d "$additional_includedir"; then -+ dnl Really add $additional_includedir to $CPPFLAGS. -+ CPPFLAGS="${CPPFLAGS}${CPPFLAGS:+ }-I$additional_includedir" -+ fi -+ fi -+ fi -+ fi -+ dnl Potentially add $additional_libdir to $LDFLAGS. -+ dnl But don't add it -+ dnl 1. if it's the standard /usr/lib, -+ dnl 2. if it's already present in $LDFLAGS, -+ dnl 3. if it's /usr/local/lib and we are using GCC on Linux, -+ dnl 4. if it doesn't exist as a directory. -+ if test "X$additional_libdir" != "X/usr/$acl_libdirstem"; then -+ haveit= -+ for x in $LDFLAGS; do -+ AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) -+ if test "X$x" = "X-L$additional_libdir"; then -+ haveit=yes -+ break -+ fi -+ done -+ if test -z "$haveit"; then -+ if test "X$additional_libdir" = "X/usr/local/$acl_libdirstem"; then -+ if test -n "$GCC"; then -+ case $host_os in -+ linux*) haveit=yes;; -+ esac -+ fi -+ fi -+ if test -z "$haveit"; then -+ if test -d "$additional_libdir"; then -+ dnl Really add $additional_libdir to $LDFLAGS. -+ LDFLAGS="${LDFLAGS}${LDFLAGS:+ }-L$additional_libdir" -+ fi -+ fi -+ fi -+ fi -+ fi -+]) -+ -+dnl AC_LIB_PREPARE_PREFIX creates variables acl_final_prefix, -+dnl acl_final_exec_prefix, containing the values to which $prefix and -+dnl $exec_prefix will expand at the end of the configure script. -+AC_DEFUN([AC_LIB_PREPARE_PREFIX], -+[ -+ dnl Unfortunately, prefix and exec_prefix get only finally determined -+ dnl at the end of configure. -+ if test "X$prefix" = "XNONE"; then -+ acl_final_prefix="$ac_default_prefix" -+ else -+ acl_final_prefix="$prefix" -+ fi -+ if test "X$exec_prefix" = "XNONE"; then -+ acl_final_exec_prefix='${prefix}' -+ else -+ acl_final_exec_prefix="$exec_prefix" -+ fi -+ acl_saved_prefix="$prefix" -+ prefix="$acl_final_prefix" -+ eval acl_final_exec_prefix=\"$acl_final_exec_prefix\" -+ prefix="$acl_saved_prefix" -+]) -+ -+dnl AC_LIB_WITH_FINAL_PREFIX([statement]) evaluates statement, with the -+dnl variables prefix and exec_prefix bound to the values they will have -+dnl at the end of the configure script. -+AC_DEFUN([AC_LIB_WITH_FINAL_PREFIX], -+[ -+ acl_saved_prefix="$prefix" -+ prefix="$acl_final_prefix" -+ acl_saved_exec_prefix="$exec_prefix" -+ exec_prefix="$acl_final_exec_prefix" -+ $1 -+ exec_prefix="$acl_saved_exec_prefix" -+ prefix="$acl_saved_prefix" -+]) -+ -+dnl AC_LIB_PREPARE_MULTILIB creates -+dnl - a function acl_is_expected_elfclass, that tests whether standard input -+dn; has a 32-bit or 64-bit ELF header, depending on the host CPU ABI, -+dnl - 3 variables acl_libdirstem, acl_libdirstem2, acl_libdirstem3, containing -+dnl the basename of the libdir to try in turn, either "lib" or "lib64" or -+dnl "lib/64" or "lib32" or "lib/sparcv9" or "lib/amd64" or similar. -+AC_DEFUN([AC_LIB_PREPARE_MULTILIB], -+[ -+ dnl There is no formal standard regarding lib, lib32, and lib64. -+ dnl On most glibc systems, the current practice is that on a system supporting -+ dnl 32-bit and 64-bit instruction sets or ABIs, 64-bit libraries go under -+ dnl $prefix/lib64 and 32-bit libraries go under $prefix/lib. However, on -+ dnl Arch Linux based distributions, it's the opposite: 32-bit libraries go -+ dnl under $prefix/lib32 and 64-bit libraries go under $prefix/lib. -+ dnl We determine the compiler's default mode by looking at the compiler's -+ dnl library search path. If at least one of its elements ends in /lib64 or -+ dnl points to a directory whose absolute pathname ends in /lib64, we use that -+ dnl for 64-bit ABIs. Similarly for 32-bit ABIs. Otherwise we use the default, -+ dnl namely "lib". -+ dnl On Solaris systems, the current practice is that on a system supporting -+ dnl 32-bit and 64-bit instruction sets or ABIs, 64-bit libraries go under -+ dnl $prefix/lib/64 (which is a symlink to either $prefix/lib/sparcv9 or -+ dnl $prefix/lib/amd64) and 32-bit libraries go under $prefix/lib. -+ AC_REQUIRE([AC_CANONICAL_HOST]) -+ AC_REQUIRE([gl_HOST_CPU_C_ABI_32BIT]) -+ -+ AC_CACHE_CHECK([for ELF binary format], [gl_cv_elf], -+ [AC_EGREP_CPP([Extensible Linking Format], -+ [#if defined __ELF__ || (defined __linux__ && (defined __EDG__ || defined __SUNPRO_C)) -+ Extensible Linking Format -+ #endif -+ ], -+ [gl_cv_elf=yes], -+ [gl_cv_elf=no]) -+ ]) -+ if test $gl_cv_elf = yes; then -+ # Extract the ELF class of a file (5th byte) in decimal. -+ # Cf. https://en.wikipedia.org/wiki/Executable_and_Linkable_Format#File_header -+ if od -A x < /dev/null >/dev/null 2>/dev/null; then -+ # Use POSIX od. -+ func_elfclass () -+ { -+ od -A n -t d1 -j 4 -N 1 -+ } -+ else -+ # Use BSD hexdump. -+ func_elfclass () -+ { -+ dd bs=1 count=1 skip=4 2>/dev/null | hexdump -e '1/1 "%3d "' -+ echo -+ } -+ fi -+ # Use 'expr', not 'test', to compare the values of func_elfclass, because on -+ # Solaris 11 OpenIndiana and Solaris 11 OmniOS, the result is 001 or 002, -+ # not 1 or 2. -+changequote(,)dnl -+ case $HOST_CPU_C_ABI_32BIT in -+ yes) -+ # 32-bit ABI. -+ acl_is_expected_elfclass () -+ { -+ expr "`func_elfclass | sed -e 's/[ ]//g'`" = 1 > /dev/null -+ } -+ ;; -+ no) -+ # 64-bit ABI. -+ acl_is_expected_elfclass () -+ { -+ expr "`func_elfclass | sed -e 's/[ ]//g'`" = 2 > /dev/null -+ } -+ ;; -+ *) -+ # Unknown. -+ acl_is_expected_elfclass () -+ { -+ : -+ } -+ ;; -+ esac -+changequote([,])dnl -+ else -+ acl_is_expected_elfclass () -+ { -+ : -+ } -+ fi -+ -+ dnl Allow the user to override the result by setting acl_cv_libdirstems. -+ AC_CACHE_CHECK([for the common suffixes of directories in the library search path], -+ [acl_cv_libdirstems], -+ [dnl Try 'lib' first, because that's the default for libdir in GNU, see -+ dnl . -+ acl_libdirstem=lib -+ acl_libdirstem2= -+ acl_libdirstem3= -+ case "$host_os" in -+ solaris*) -+ dnl See Solaris 10 Software Developer Collection > Solaris 64-bit Developer's Guide > The Development Environment -+ dnl . -+ dnl "Portable Makefiles should refer to any library directories using the 64 symbolic link." -+ dnl But we want to recognize the sparcv9 or amd64 subdirectory also if the -+ dnl symlink is missing, so we set acl_libdirstem2 too. -+ if test $HOST_CPU_C_ABI_32BIT = no; then -+ acl_libdirstem2=lib/64 -+ case "$host_cpu" in -+ sparc*) acl_libdirstem3=lib/sparcv9 ;; -+ i*86 | x86_64) acl_libdirstem3=lib/amd64 ;; -+ esac -+ fi -+ ;; -+ netbsd*) -+ dnl On NetBSD/sparc64, there is a 'sparc' subdirectory that contains -+ dnl 32-bit libraries. -+ if test $HOST_CPU_C_ABI_32BIT != no; then -+ case "$host_cpu" in -+ sparc*) acl_libdirstem2=lib/sparc ;; -+ esac -+ fi -+ ;; -+ *) -+ dnl If $CC generates code for a 32-bit ABI, the libraries are -+ dnl surely under $prefix/lib or $prefix/lib32, not $prefix/lib64. -+ dnl Similarly, if $CC generates code for a 64-bit ABI, the libraries -+ dnl are surely under $prefix/lib or $prefix/lib64, not $prefix/lib32. -+ dnl Find the compiler's search path. However, non-system compilers -+ dnl sometimes have odd library search paths. But we can't simply invoke -+ dnl '/usr/bin/gcc -print-search-dirs' because that would not take into -+ dnl account the -m32/-m31 or -m64 options from the $CC or $CFLAGS. -+ searchpath=`(LC_ALL=C $CC $CPPFLAGS $CFLAGS -print-search-dirs) 2>/dev/null \ -+ | sed -n -e 's,^libraries: ,,p' | sed -e 's,^=,,'` -+ if test $HOST_CPU_C_ABI_32BIT != no; then -+ # 32-bit or unknown ABI. -+ if test -d /usr/lib32; then -+ acl_libdirstem2=lib32 -+ fi -+ fi -+ if test $HOST_CPU_C_ABI_32BIT != yes; then -+ # 64-bit or unknown ABI. -+ if test -d /usr/lib64; then -+ acl_libdirstem3=lib64 -+ fi -+ fi -+ if test -n "$searchpath"; then -+ acl_saved_IFS="${IFS= }"; IFS=":" -+ for searchdir in $searchpath; do -+ if test -d "$searchdir"; then -+ case "$searchdir" in -+ */lib32/ | */lib32 ) acl_libdirstem2=lib32 ;; -+ */lib64/ | */lib64 ) acl_libdirstem3=lib64 ;; -+ */../ | */.. ) -+ # Better ignore directories of this form. They are misleading. -+ ;; -+ *) searchdir=`cd "$searchdir" && pwd` -+ case "$searchdir" in -+ */lib32 ) acl_libdirstem2=lib32 ;; -+ */lib64 ) acl_libdirstem3=lib64 ;; -+ esac ;; -+ esac -+ fi -+ done -+ IFS="$acl_saved_IFS" -+ if test $HOST_CPU_C_ABI_32BIT = yes; then -+ # 32-bit ABI. -+ acl_libdirstem3= -+ fi -+ if test $HOST_CPU_C_ABI_32BIT = no; then -+ # 64-bit ABI. -+ acl_libdirstem2= -+ fi -+ fi -+ ;; -+ esac -+ test -n "$acl_libdirstem2" || acl_libdirstem2="$acl_libdirstem" -+ test -n "$acl_libdirstem3" || acl_libdirstem3="$acl_libdirstem" -+ acl_cv_libdirstems="$acl_libdirstem,$acl_libdirstem2,$acl_libdirstem3" -+ ]) -+ dnl Decompose acl_cv_libdirstems into acl_libdirstem, acl_libdirstem2, and -+ dnl acl_libdirstem3. -+changequote(,)dnl -+ acl_libdirstem=`echo "$acl_cv_libdirstems" | sed -e 's/,.*//'` -+ acl_libdirstem2=`echo "$acl_cv_libdirstems" | sed -e 's/^[^,]*,//' -e 's/,.*//'` -+ acl_libdirstem3=`echo "$acl_cv_libdirstems" | sed -e 's/^[^,]*,[^,]*,//' -e 's/,.*//'` -+changequote([,])dnl -+]) -diff --git a/m4/nls.m4 b/m4/nls.m4 -new file mode 100644 -index 00000000..c4601415 ---- /dev/null -+++ b/m4/nls.m4 -@@ -0,0 +1,33 @@ -+# nls.m4 -+# serial 6 (gettext-0.24) -+dnl Copyright (C) 1995-2025 Free Software Foundation, Inc. -+dnl This file is free software; the Free Software Foundation -+dnl gives unlimited permission to copy and/or distribute it, -+dnl with or without modifications, as long as this notice is preserved. -+dnl This file is offered as-is, without any warranty. -+dnl -+dnl This file can be used in projects which are not available under -+dnl the GNU General Public License or the GNU Lesser General Public -+dnl License but which still want to provide support for the GNU gettext -+dnl functionality. -+dnl Please note that the actual code of the GNU gettext library is covered -+dnl by the GNU Lesser General Public License, and the rest of the GNU -+dnl gettext package is covered by the GNU General Public License. -+dnl They are *not* in the public domain. -+ -+dnl Authors: -+dnl Ulrich Drepper , 1995-2000. -+dnl Bruno Haible , 2000-2003. -+ -+AC_PREREQ([2.50]) -+ -+AC_DEFUN([AM_NLS], -+[ -+ AC_MSG_CHECKING([whether NLS is requested]) -+ dnl Default is enabled NLS -+ AC_ARG_ENABLE([nls], -+ [ --disable-nls do not use Native Language Support], -+ USE_NLS=$enableval, USE_NLS=yes) -+ AC_MSG_RESULT([$USE_NLS]) -+ AC_SUBST([USE_NLS]) -+]) -diff --git a/m4/po.m4 b/m4/po.m4 -new file mode 100644 -index 00000000..73e0436b ---- /dev/null -+++ b/m4/po.m4 -@@ -0,0 +1,157 @@ -+# po.m4 -+# serial 34 (gettext-0.24) -+dnl Copyright (C) 1995-2024 Free Software Foundation, Inc. -+dnl This file is free software; the Free Software Foundation -+dnl gives unlimited permission to copy and/or distribute it, -+dnl with or without modifications, as long as this notice is preserved. -+dnl This file is offered as-is, without any warranty. -+dnl -+dnl This file can be used in projects which are not available under -+dnl the GNU General Public License or the GNU Lesser General Public -+dnl License but which still want to provide support for the GNU gettext -+dnl functionality. -+dnl Please note that the actual code of the GNU gettext library is covered -+dnl by the GNU Lesser General Public License, and the rest of the GNU -+dnl gettext package is covered by the GNU General Public License. -+dnl They are *not* in the public domain. -+ -+dnl Authors: -+dnl Ulrich Drepper , 1995-2000. -+dnl Bruno Haible , 2000-2024. -+ -+AC_PREREQ([2.60]) -+ -+dnl Checks for all prerequisites of the po subdirectory. -+AC_DEFUN([AM_PO_SUBDIRS], -+[ -+ AC_REQUIRE([AC_PROG_MAKE_SET])dnl -+ AC_REQUIRE([AC_PROG_INSTALL])dnl -+ AC_REQUIRE([AC_PROG_MKDIR_P])dnl -+ AC_REQUIRE([AC_PROG_SED])dnl -+ AC_REQUIRE([AM_NLS])dnl -+ -+ dnl Release version of the gettext macros. This is used to ensure that -+ dnl the gettext macros and po/Makefile.in.in are in sync. -+ AC_SUBST([GETTEXT_MACRO_VERSION], [0.24]) -+ -+ dnl Perform the following tests also if --disable-nls has been given, -+ dnl because they are needed for "make dist" to work. -+ -+ dnl Search for GNU msgfmt in the PATH. -+ dnl The first test excludes Solaris msgfmt and early GNU msgfmt versions. -+ dnl The second test excludes FreeBSD msgfmt. -+ AM_PATH_PROG_WITH_TEST(MSGFMT, msgfmt, -+ [$ac_dir/$ac_word --statistics /dev/null >&]AS_MESSAGE_LOG_FD[ 2>&1 && -+ (if $ac_dir/$ac_word --statistics /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi)], -+ :) -+ AC_PATH_PROG([GMSGFMT], [gmsgfmt], [$MSGFMT]) -+ -+ dnl Test whether it is GNU msgfmt >= 0.15. -+changequote(,)dnl -+ case `$GMSGFMT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in -+ '' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) GMSGFMT_015=: ;; -+ *) GMSGFMT_015=$GMSGFMT ;; -+ esac -+changequote([,])dnl -+ AC_SUBST([GMSGFMT_015]) -+ -+ dnl Search for GNU xgettext 0.12 or newer in the PATH. -+ dnl The first test excludes Solaris xgettext and early GNU xgettext versions. -+ dnl The second test excludes FreeBSD xgettext. -+ AM_PATH_PROG_WITH_TEST(XGETTEXT, xgettext, -+ [$ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null >&]AS_MESSAGE_LOG_FD[ 2>&1 && -+ (if $ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi)], -+ :) -+ dnl Remove leftover from FreeBSD xgettext call. -+ rm -f messages.po -+ -+ dnl Test whether it is GNU xgettext >= 0.15. -+changequote(,)dnl -+ case `$XGETTEXT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in -+ '' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) XGETTEXT_015=: ;; -+ *) XGETTEXT_015=$XGETTEXT ;; -+ esac -+changequote([,])dnl -+ AC_SUBST([XGETTEXT_015]) -+ -+ dnl Search for GNU msgmerge 0.11 or newer in the PATH. -+ AM_PATH_PROG_WITH_TEST(MSGMERGE, msgmerge, -+ [$ac_dir/$ac_word --update -q /dev/null /dev/null >&]AS_MESSAGE_LOG_FD[ 2>&1], :) -+ -+ dnl Test whether it is GNU msgmerge >= 0.20. -+ if LC_ALL=C $MSGMERGE --help | grep ' --for-msgfmt ' >/dev/null; then -+ MSGMERGE_FOR_MSGFMT_OPTION='--for-msgfmt' -+ else -+ dnl Test whether it is GNU msgmerge >= 0.12. -+ if LC_ALL=C $MSGMERGE --help | grep ' --no-fuzzy-matching ' >/dev/null; then -+ MSGMERGE_FOR_MSGFMT_OPTION='--no-fuzzy-matching --no-location --quiet' -+ else -+ dnl With these old versions, $(MSGMERGE) $(MSGMERGE_FOR_MSGFMT_OPTION) is -+ dnl slow. But this is not a big problem, as such old gettext versions are -+ dnl hardly in use any more. -+ MSGMERGE_FOR_MSGFMT_OPTION='--no-location --quiet' -+ fi -+ fi -+ AC_SUBST([MSGMERGE_FOR_MSGFMT_OPTION]) -+ -+ dnl Support for AM_XGETTEXT_OPTION. -+ test -n "${XGETTEXT_EXTRA_OPTIONS+set}" || XGETTEXT_EXTRA_OPTIONS= -+ AC_SUBST([XGETTEXT_EXTRA_OPTIONS]) -+ -+ if test -n "$ALL_LINGUAS"; then -+ test -n "$as_me" && echo "$as_me: setting ALL_LINGUAS in configure.in is obsolete" || echo "setting ALL_LINGUAS in configure.in is obsolete" -+ fi -+ -+ dnl Capture the value of LINGUAS because we need it to compute CATALOGS. -+ dnl In the Makefile, call it DESIRED_LINGUAS (because there, LINGUAS denotes -+ dnl the set of available translations, given by the developer). -+ DESIRED_LINGUAS="${LINGUAS-\$(ALL_LINGUAS)}" -+ AC_SUBST([DESIRED_LINGUAS]) -+ -+ AC_CONFIG_COMMANDS([po-directories], [[ -+ for ac_file in $CONFIG_FILES; do -+ # Support "outfile[:infile[:infile...]]" -+ case "$ac_file" in -+ *:*) ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;; -+ esac -+ # PO directories have a Makefile.in generated from Makefile.in.in. -+ case "$ac_file" in */Makefile.in) -+ # Adjust a relative srcdir. -+ ac_dir=`echo "$ac_file"|sed 's%/[^/][^/]*$%%'` -+ ac_dir_suffix=/`echo "$ac_dir"|sed 's%^\./%%'` -+ ac_dots=`echo "$ac_dir_suffix"|sed 's%/[^/]*%../%g'` -+ # In autoconf-2.13 it is called $ac_given_srcdir. -+ # In autoconf-2.50 it is called $srcdir. -+ test -n "$ac_given_srcdir" || ac_given_srcdir="$srcdir" -+ # Treat a directory as a PO directory if and only if it has a -+ # POTFILES.in file. This allows packages to have multiple PO -+ # directories under different names or in different locations. -+ if test -f "$ac_given_srcdir/$ac_dir/POTFILES.in"; then -+ test -n "$as_me" && echo "$as_me: creating $ac_dir/Makefile" || echo "creating $ac_dir/Makefile" -+ cat "$ac_dir/Makefile.in" > "$ac_dir/Makefile" -+ fi -+ ;; -+ esac -+ done]], -+ []) -+]) -+ -+dnl Postprocesses a Makefile in a directory containing PO files. -+AC_DEFUN([AM_POSTPROCESS_PO_MAKEFILE], -+[ -+ sed -e 's,^#distdir:,distdir:,' < "$ac_file" > "$ac_file.tmp" -+ mv "$ac_file.tmp" "$ac_file" -+]) -+ -+dnl Initializes the accumulator used by AM_XGETTEXT_OPTION. -+AC_DEFUN([AM_XGETTEXT_OPTION_INIT], -+[ -+ XGETTEXT_EXTRA_OPTIONS= -+]) -+ -+dnl Registers an option to be passed to xgettext in the po subdirectory. -+AC_DEFUN([AM_XGETTEXT_OPTION], -+[ -+ AC_REQUIRE([AM_XGETTEXT_OPTION_INIT]) -+ XGETTEXT_EXTRA_OPTIONS="$XGETTEXT_EXTRA_OPTIONS $1" -+]) -diff --git a/m4/progtest.m4 b/m4/progtest.m4 -new file mode 100644 -index 00000000..2671eb85 ---- /dev/null -+++ b/m4/progtest.m4 -@@ -0,0 +1,93 @@ -+# progtest.m4 -+# serial 10 (gettext-0.24) -+dnl Copyright (C) 1996-2025 Free Software Foundation, Inc. -+dnl This file is free software; the Free Software Foundation -+dnl gives unlimited permission to copy and/or distribute it, -+dnl with or without modifications, as long as this notice is preserved. -+dnl This file is offered as-is, without any warranty. -+dnl -+dnl This file can be used in projects which are not available under -+dnl the GNU General Public License or the GNU Lesser General Public -+dnl License but which still want to provide support for the GNU gettext -+dnl functionality. -+dnl Please note that the actual code of the GNU gettext library is covered -+dnl by the GNU Lesser General Public License, and the rest of the GNU -+dnl gettext package is covered by the GNU General Public License. -+dnl They are *not* in the public domain. -+ -+dnl Authors: -+dnl Ulrich Drepper , 1996. -+ -+AC_PREREQ([2.53]) -+ -+# Search path for a program which passes the given test. -+ -+dnl AM_PATH_PROG_WITH_TEST(VARIABLE, PROG-TO-CHECK-FOR, -+dnl TEST-PERFORMED-ON-FOUND_PROGRAM [, VALUE-IF-NOT-FOUND [, PATH]]) -+AC_DEFUN([AM_PATH_PROG_WITH_TEST], -+[ -+# Prepare PATH_SEPARATOR. -+# The user is always right. -+if test "${PATH_SEPARATOR+set}" != set; then -+ # Determine PATH_SEPARATOR by trying to find /bin/sh in a PATH which -+ # contains only /bin. Note that ksh looks also at the FPATH variable, -+ # so we have to set that as well for the test. -+ PATH_SEPARATOR=: -+ (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \ -+ && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \ -+ || PATH_SEPARATOR=';' -+ } -+fi -+ -+# Find out how to test for executable files. Don't use a zero-byte file, -+# as systems may use methods other than mode bits to determine executability. -+cat >conf$$.file <<_ASEOF -+#! /bin/sh -+exit 0 -+_ASEOF -+chmod +x conf$$.file -+if test -x conf$$.file >/dev/null 2>&1; then -+ ac_executable_p="test -x" -+else -+ ac_executable_p="test -f" -+fi -+rm -f conf$$.file -+ -+# Extract the first word of "$2", so it can be a program name with args. -+set dummy $2; ac_word=[$]2 -+AC_MSG_CHECKING([for $ac_word]) -+AC_CACHE_VAL([ac_cv_path_$1], -+[case "[$]$1" in -+ [[\\/]]* | ?:[[\\/]]*) -+ ac_cv_path_$1="[$]$1" # Let the user override the test with a path. -+ ;; -+ *) -+ gt_saved_IFS="$IFS"; IFS=$PATH_SEPARATOR -+ for ac_dir in m4_if([$5], , $PATH, [$5]); do -+ IFS="$gt_saved_IFS" -+ test -z "$ac_dir" && ac_dir=. -+ for ac_exec_ext in '' $ac_executable_extensions; do -+ if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then -+ echo "$as_me: trying $ac_dir/$ac_word..." >&AS_MESSAGE_LOG_FD -+ if [$3]; then -+ ac_cv_path_$1="$ac_dir/$ac_word$ac_exec_ext" -+ break 2 -+ fi -+ fi -+ done -+ done -+ IFS="$gt_saved_IFS" -+dnl If no 4th arg is given, leave the cache variable unset, -+dnl so AC_PATH_PROGS will keep looking. -+m4_if([$4], , , [ test -z "[$]ac_cv_path_$1" && ac_cv_path_$1="$4" -+])dnl -+ ;; -+esac])dnl -+$1="$ac_cv_path_$1" -+if test m4_if([$4], , [-n "[$]$1"], ["[$]$1" != "$4"]); then -+ AC_MSG_RESULT([$][$1]) -+else -+ AC_MSG_RESULT([no]) -+fi -+AC_SUBST([$1])dnl -+]) diff --git a/0003-RHEL-Fixes-for-libguestfs-winsupport.patch b/0002-RHEL-Fixes-for-libguestfs-winsupport.patch similarity index 95% rename from 0003-RHEL-Fixes-for-libguestfs-winsupport.patch rename to 0002-RHEL-Fixes-for-libguestfs-winsupport.patch index 9a49b1c..f3bc509 100644 --- a/0003-RHEL-Fixes-for-libguestfs-winsupport.patch +++ b/0002-RHEL-Fixes-for-libguestfs-winsupport.patch @@ -1,4 +1,4 @@ -From 06a2e0eee5a970ab5bc7aa3595d21fff3ca5a8cb Mon Sep 17 00:00:00 2001 +From 93c1b119526fffc5d31acc1bcb96223b0a9f0ac9 Mon Sep 17 00:00:00 2001 From: "Richard W.M. Jones" Date: Sun, 30 Aug 2015 03:21:57 -0400 Subject: [PATCH] RHEL: Fixes for libguestfs-winsupport. @@ -19,7 +19,7 @@ https://bugzilla.redhat.com/show_bug.cgi?id=2187961#c1 7 files changed, 40 insertions(+), 5 deletions(-) diff --git a/convert/convert.ml b/convert/convert.ml -index a6e0d532..cf2b09cd 100644 +index ad0b82b1..6e14524f 100644 --- a/convert/convert.ml +++ b/convert/convert.ml @@ -53,6 +53,7 @@ let rec convert input_disks options source = @@ -136,7 +136,7 @@ index bfe04904..eeddcb86 100755 # We also update the Registry several times, for firstboot, and (ONLY diff --git a/tests/test-windows-phony.sh b/tests/test-windows-phony.sh -index 4e931731..007e6dc9 100755 +index fa5f6a17..3f5dfe5e 100755 --- a/tests/test-windows-phony.sh +++ b/tests/test-windows-phony.sh @@ -71,6 +71,17 @@ mktest () @@ -157,10 +157,12 @@ index 4e931731..007e6dc9 100755 firstboot_dir="/Program Files/Guestfs/Firstboot" mktest "is-dir \"$firstboot_dir\"" true mktest "is-file \"$firstboot_dir/firstboot.bat\"" true -@@ -80,5 +91,5 @@ mktest "ls \"$virtio_dir\"" "$(cat test-phony-$guestname-ls.txt)" +@@ -80,7 +91,7 @@ mktest "ls \"$virtio_dir\"" "$(cat test-phony-$guestname-ls.txt)" osinfo_name="${guestname%-32}" mktest "inspect-get-osinfo /dev/sda2" "$osinfo_name" -guestfish --ro -a "$d/$guestname-sda" -i < "$script" > "$response" +guestfish --ro -a "$d/$guestname-sda" < "$script" > "$response" diff -u "$expected" "$response" + + # host osinfo-db may be too old for win2k25 diff --git a/0002-convert-Use-e2fsck-n-flag-when-checking-ext2-3-4-fil.patch b/0002-convert-Use-e2fsck-n-flag-when-checking-ext2-3-4-fil.patch deleted file mode 100644 index 9d79da7..0000000 --- a/0002-convert-Use-e2fsck-n-flag-when-checking-ext2-3-4-fil.patch +++ /dev/null @@ -1,60 +0,0 @@ -From db1908226ce901b73953732edcba8a20087422c4 Mon Sep 17 00:00:00 2001 -From: "Richard W.M. Jones" -Date: Tue, 20 May 2025 08:23:39 +0100 -Subject: [PATCH] convert: Use e2fsck -n flag when checking ext2/3/4 - filesystems -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -When checking the fedora-30 image from virt-builder: - - $ virt-v2v -i disk fedora-30.img -o null - ... - [ 68.4] Checking filesystem integrity before conversion - virt-v2v: error: libguestfs error: e2fsck: e2fsck 1.47.1 (20-May-2024) - e2fsck: need terminal for interactive repairs - -Use the e2fsck -n flag to avoid this problem. - -This flag is described as: - - -n Open the file system read-only, and assume an answer of `no' to - all questions. Allows e2fsck to be used non-interactively. This - option may not be specified at the same time as the -p or -y op‐ - tions. - -Updates: commit 78ffb68d4f1ef8af776c24537feaf832fd3ec7e9 -Updates: https://issues.redhat.com/browse/RHEL-91931 ---- - convert/convert.ml | 2 +- - m4/guestfs-libraries.m4 | 3 ++- - 2 files changed, 3 insertions(+), 2 deletions(-) - -diff --git a/convert/convert.ml b/convert/convert.ml -index 0ed7a884..a6e0d532 100644 ---- a/convert/convert.ml -+++ b/convert/convert.ml -@@ -258,7 +258,7 @@ and do_fsck g = - ); - - | dev, "ext4" -> -- g#e2fsck dev (* ~correct:false is the default *) -+ g#e2fsck ~forceno:true dev - - | dev, "xfs" -> - if g#xfs_repair ~nomodify:true dev <> 0 then -diff --git a/m4/guestfs-libraries.m4 b/m4/guestfs-libraries.m4 -index 4f5b745a..fa13e0f6 100644 ---- a/m4/guestfs-libraries.m4 -+++ b/m4/guestfs-libraries.m4 -@@ -21,7 +21,8 @@ dnl Of course we need libguestfs. - dnl - dnl We need libguestfs 1.55.6 for guestfs_sh_out. - dnl We need libguestfs 1.55.12 for guestfs_btrfs_scrub_full. --PKG_CHECK_MODULES([LIBGUESTFS], [libguestfs >= 1.55.12]) -+dnl We need libguestfs 1.55.13 for guestfs_e2fsck FORCENO flag. -+PKG_CHECK_MODULES([LIBGUESTFS], [libguestfs >= 1.55.13]) - printf "libguestfs version is "; $PKG_CONFIG --modversion libguestfs - - dnl And libnbd. diff --git a/0004-RHEL-v2v-Select-correct-qemu-binary-for-o-qemu-mode-.patch b/0003-RHEL-v2v-Select-correct-qemu-binary-for-o-qemu-mode-.patch similarity index 94% rename from 0004-RHEL-v2v-Select-correct-qemu-binary-for-o-qemu-mode-.patch rename to 0003-RHEL-v2v-Select-correct-qemu-binary-for-o-qemu-mode-.patch index ac3cba8..1226901 100644 --- a/0004-RHEL-v2v-Select-correct-qemu-binary-for-o-qemu-mode-.patch +++ b/0003-RHEL-v2v-Select-correct-qemu-binary-for-o-qemu-mode-.patch @@ -1,4 +1,4 @@ -From 4382b17eca2a79bfef6d946c0309ea2634e832c0 Mon Sep 17 00:00:00 2001 +From b0dbc17126e5851c8d96ba01d8827ef9764cb919 Mon Sep 17 00:00:00 2001 From: "Richard W.M. Jones" Date: Sun, 28 Sep 2014 19:14:43 +0100 Subject: [PATCH] RHEL: v2v: Select correct qemu binary for -o qemu mode diff --git a/0005-RHEL-v2v-Disable-the-qemu-boot-oo-qemu-boot-option-R.patch b/0004-RHEL-v2v-Disable-the-qemu-boot-oo-qemu-boot-option-R.patch similarity index 97% rename from 0005-RHEL-v2v-Disable-the-qemu-boot-oo-qemu-boot-option-R.patch rename to 0004-RHEL-v2v-Disable-the-qemu-boot-oo-qemu-boot-option-R.patch index f90fc81..5512e06 100644 --- a/0005-RHEL-v2v-Disable-the-qemu-boot-oo-qemu-boot-option-R.patch +++ b/0004-RHEL-v2v-Disable-the-qemu-boot-oo-qemu-boot-option-R.patch @@ -1,4 +1,4 @@ -From bb7343b579d5979f3c06c67ebbc741fd5783b2eb Mon Sep 17 00:00:00 2001 +From 902f3a34c30c3b04e0a25baf17a303eb7679acb1 Mon Sep 17 00:00:00 2001 From: "Richard W.M. Jones" Date: Tue, 30 Sep 2014 10:50:27 +0100 Subject: [PATCH] RHEL: v2v: Disable the --qemu-boot / -oo qemu-boot option diff --git a/0006-RHEL-Fix-list-of-supported-sound-cards-to-match-RHEL.patch b/0005-RHEL-Fix-list-of-supported-sound-cards-to-match-RHEL.patch similarity index 92% rename from 0006-RHEL-Fix-list-of-supported-sound-cards-to-match-RHEL.patch rename to 0005-RHEL-Fix-list-of-supported-sound-cards-to-match-RHEL.patch index dd38571..c855070 100644 --- a/0006-RHEL-Fix-list-of-supported-sound-cards-to-match-RHEL.patch +++ b/0005-RHEL-Fix-list-of-supported-sound-cards-to-match-RHEL.patch @@ -1,4 +1,4 @@ -From bb0cfcc4d20f05ac66d58f665c9211ebff408859 Mon Sep 17 00:00:00 2001 +From 2bfee23bfabfc5b4a61e4886acf8de23844eb94c Mon Sep 17 00:00:00 2001 From: "Richard W.M. Jones" Date: Fri, 24 Apr 2015 09:45:41 -0400 Subject: [PATCH] RHEL: Fix list of supported sound cards to match RHEL qemu diff --git a/0007-RHEL-v2v-i-disk-force-VNC-as-display-RHBZ-1372671.patch b/0006-RHEL-v2v-i-disk-force-VNC-as-display-RHBZ-1372671.patch similarity index 93% rename from 0007-RHEL-v2v-i-disk-force-VNC-as-display-RHBZ-1372671.patch rename to 0006-RHEL-v2v-i-disk-force-VNC-as-display-RHBZ-1372671.patch index 0d99ef2..3e69118 100644 --- a/0007-RHEL-v2v-i-disk-force-VNC-as-display-RHBZ-1372671.patch +++ b/0006-RHEL-v2v-i-disk-force-VNC-as-display-RHBZ-1372671.patch @@ -1,4 +1,4 @@ -From 4a97d6141b9cbd8057632fb6dee6ade419e54d62 Mon Sep 17 00:00:00 2001 +From bbf6820152876487310a3945935c10fc28465668 Mon Sep 17 00:00:00 2001 From: "Richard W.M. Jones" Date: Thu, 2 Mar 2017 14:21:37 +0100 Subject: [PATCH] RHEL: v2v: -i disk: force VNC as display (RHBZ#1372671) diff --git a/0008-RHEL-point-to-KB-for-supported-v2v-hypervisors-guest.patch b/0007-RHEL-point-to-KB-for-supported-v2v-hypervisors-guest.patch similarity index 97% rename from 0008-RHEL-point-to-KB-for-supported-v2v-hypervisors-guest.patch rename to 0007-RHEL-point-to-KB-for-supported-v2v-hypervisors-guest.patch index 64cf04b..b9fbb6f 100644 --- a/0008-RHEL-point-to-KB-for-supported-v2v-hypervisors-guest.patch +++ b/0007-RHEL-point-to-KB-for-supported-v2v-hypervisors-guest.patch @@ -1,4 +1,4 @@ -From 5444014742fe120079b1b3e680c82bff47e7fc6d Mon Sep 17 00:00:00 2001 +From d663ded91ff04fea676f5f8df91e33c252f3c3e4 Mon Sep 17 00:00:00 2001 From: Pino Toscano Date: Tue, 26 Mar 2019 09:42:25 +0100 Subject: [PATCH] RHEL: point to KB for supported v2v hypervisors/guests diff --git a/0009-RHEL-Remove-input-from-Xen.patch b/0008-RHEL-Remove-input-from-Xen.patch similarity index 99% rename from 0009-RHEL-Remove-input-from-Xen.patch rename to 0008-RHEL-Remove-input-from-Xen.patch index 3763afd..5a3bbb8 100644 --- a/0009-RHEL-Remove-input-from-Xen.patch +++ b/0008-RHEL-Remove-input-from-Xen.patch @@ -1,4 +1,4 @@ -From c993b68877a7749cf725d135c20093f42a20ed26 Mon Sep 17 00:00:00 2001 +From f122df7aa9ece794c218fdb1c067f615574862d2 Mon Sep 17 00:00:00 2001 From: "Richard W.M. Jones" Date: Mon, 8 Jul 2024 09:35:54 +0100 Subject: [PATCH] RHEL: Remove input from Xen diff --git a/0010-RHEL-Remove-o-glance.patch b/0009-RHEL-Remove-o-glance.patch similarity index 99% rename from 0010-RHEL-Remove-o-glance.patch rename to 0009-RHEL-Remove-o-glance.patch index c4a5ebe..60c9f2a 100644 --- a/0010-RHEL-Remove-o-glance.patch +++ b/0009-RHEL-Remove-o-glance.patch @@ -1,4 +1,4 @@ -From e1caa762c70b5e904a34d89ea8face5007a24258 Mon Sep 17 00:00:00 2001 +From 6d16a6c76a5d1ae2a6e259b969a1de3fa4e42173 Mon Sep 17 00:00:00 2001 From: "Richard W.M. Jones" Date: Wed, 30 Jun 2021 11:15:52 +0100 Subject: [PATCH] RHEL: Remove -o glance diff --git a/0011-RHEL-tests-Remove-btrfs-test.patch b/0010-RHEL-tests-Remove-btrfs-test.patch similarity index 90% rename from 0011-RHEL-tests-Remove-btrfs-test.patch rename to 0010-RHEL-tests-Remove-btrfs-test.patch index 382a4ad..1aea5fc 100644 --- a/0011-RHEL-tests-Remove-btrfs-test.patch +++ b/0010-RHEL-tests-Remove-btrfs-test.patch @@ -1,4 +1,4 @@ -From f69c4c9cbb617ce49fcd04307b4aca19d1c65d30 Mon Sep 17 00:00:00 2001 +From b192b37492e6db2b35dd1e78700dcecdd2d46d33 Mon Sep 17 00:00:00 2001 From: "Richard W.M. Jones" Date: Tue, 5 Jul 2022 11:58:09 +0100 Subject: [PATCH] RHEL: tests: Remove btrfs test diff --git a/0012-RHEL-Remove-block-driver-option.patch b/0011-RHEL-Remove-block-driver-option.patch similarity index 98% rename from 0012-RHEL-Remove-block-driver-option.patch rename to 0011-RHEL-Remove-block-driver-option.patch index fef2ade..6915b7b 100644 --- a/0012-RHEL-Remove-block-driver-option.patch +++ b/0011-RHEL-Remove-block-driver-option.patch @@ -1,4 +1,4 @@ -From 2ec1b0dc2d1902a99b6ce3a79c9e0c58f43a83b4 Mon Sep 17 00:00:00 2001 +From 8eded5d846ad265b2c73e986b38e6d572544101c Mon Sep 17 00:00:00 2001 From: "Richard W.M. Jones" Date: Fri, 28 Apr 2023 12:28:19 +0100 Subject: [PATCH] RHEL: Remove --block-driver option diff --git a/0013-RHEL-Remove-o-ovirt-o-ovirt-upload-and-o-vdsm-modes.patch b/0012-RHEL-Remove-o-ovirt-o-ovirt-upload-and-o-vdsm-modes.patch similarity index 99% rename from 0013-RHEL-Remove-o-ovirt-o-ovirt-upload-and-o-vdsm-modes.patch rename to 0012-RHEL-Remove-o-ovirt-o-ovirt-upload-and-o-vdsm-modes.patch index e9f744c..c093856 100644 --- a/0013-RHEL-Remove-o-ovirt-o-ovirt-upload-and-o-vdsm-modes.patch +++ b/0012-RHEL-Remove-o-ovirt-o-ovirt-upload-and-o-vdsm-modes.patch @@ -1,4 +1,4 @@ -From 4c8b8d6f6bb68a82a49a0ecf87b6365d11ac02e4 Mon Sep 17 00:00:00 2001 +From 71196cb1c4180e5a107da9d3f1aeba27e637e703 Mon Sep 17 00:00:00 2001 From: "Richard W.M. Jones" Date: Mon, 8 Jul 2024 09:56:54 +0100 Subject: [PATCH] RHEL: Remove -o ovirt, -o ovirt-upload and -o vdsm modes diff --git a/0014-RHEL-Add-warning-about-virt-v2v-in-place-not-being-s.patch b/0013-RHEL-Add-warning-about-virt-v2v-in-place-not-being-s.patch similarity index 96% rename from 0014-RHEL-Add-warning-about-virt-v2v-in-place-not-being-s.patch rename to 0013-RHEL-Add-warning-about-virt-v2v-in-place-not-being-s.patch index 661d5e8..4248261 100644 --- a/0014-RHEL-Add-warning-about-virt-v2v-in-place-not-being-s.patch +++ b/0013-RHEL-Add-warning-about-virt-v2v-in-place-not-being-s.patch @@ -1,4 +1,4 @@ -From a70126f1e0fb793086ad86dc3b0d89b9bc09b19c Mon Sep 17 00:00:00 2001 +From 7070cae9b9c239786c2cbaa61e8a091b5dd77ba2 Mon Sep 17 00:00:00 2001 From: "Richard W.M. Jones" Date: Tue, 9 Jul 2024 11:30:09 +0100 Subject: [PATCH] RHEL: Add warning about virt-v2v-in-place not being supported diff --git a/sources b/sources index ddc954d..4ebab14 100644 --- a/sources +++ b/sources @@ -1,2 +1,2 @@ -SHA512 (virt-v2v-2.7.16.tar.gz) = 321512ab4773616d0ff8ad21268617e20097a8f6b44850497fce2d5830727c49aca82b0142eca775447522b1d29edef82afd062cf01c2c84388b0193a73902f8 -SHA512 (virt-v2v-2.7.16.tar.gz.sig) = da589c28af55801305a9fbe2463907a91ec7cf75ba438096ab844065cb7b0ad44208541260047bcd6bdd938230689bc4c685f4ca6cb95fc095eaa660213d9687 +SHA512 (virt-v2v-2.7.17.tar.gz) = 72b476ca6f0198ddd1ac9f52b834bc6720374b86d52014a3707ba42a0bfdb2098a8a8f76bae6b01c222c1d83c60909e472fc4ad000e057faad337fce49299a15 +SHA512 (virt-v2v-2.7.17.tar.gz.sig) = a196e3e2100777a714c11e9adb7f8bf49bb626b57ec5ec7db9bf459a2942d3523fd4801aacffc0354357b5054fd69e1dfc222c7a254ff6b53f55d8832dea8295 diff --git a/virt-v2v.spec b/virt-v2v.spec index b6a4ff8..85561be 100644 --- a/virt-v2v.spec +++ b/virt-v2v.spec @@ -6,8 +6,8 @@ Name: virt-v2v Epoch: 1 -Version: 2.7.16 -Release: 2%{?dist} +Version: 2.7.17 +Release: 1%{?dist} Summary: Convert a virtual machine to run on KVM License: GPL-2.0-or-later AND LGPL-2.0-or-later @@ -27,20 +27,19 @@ Source3: copy-patches.sh # https://github.com/libguestfs/virt-v2v/commits/rhel-10.1 # Patches. -Patch0001: 0001-m4-Add-junk-required-to-make-AM_GNU_GETTEXT-work.patch -Patch0002: 0002-convert-Use-e2fsck-n-flag-when-checking-ext2-3-4-fil.patch -Patch0003: 0003-RHEL-Fixes-for-libguestfs-winsupport.patch -Patch0004: 0004-RHEL-v2v-Select-correct-qemu-binary-for-o-qemu-mode-.patch -Patch0005: 0005-RHEL-v2v-Disable-the-qemu-boot-oo-qemu-boot-option-R.patch -Patch0006: 0006-RHEL-Fix-list-of-supported-sound-cards-to-match-RHEL.patch -Patch0007: 0007-RHEL-v2v-i-disk-force-VNC-as-display-RHBZ-1372671.patch -Patch0008: 0008-RHEL-point-to-KB-for-supported-v2v-hypervisors-guest.patch -Patch0009: 0009-RHEL-Remove-input-from-Xen.patch -Patch0010: 0010-RHEL-Remove-o-glance.patch -Patch0011: 0011-RHEL-tests-Remove-btrfs-test.patch -Patch0012: 0012-RHEL-Remove-block-driver-option.patch -Patch0013: 0013-RHEL-Remove-o-ovirt-o-ovirt-upload-and-o-vdsm-modes.patch -Patch0014: 0014-RHEL-Add-warning-about-virt-v2v-in-place-not-being-s.patch +Patch0001: 0001-convert-Replay-dirty-log-for-XFS-filesystems-before-.patch +Patch0002: 0002-RHEL-Fixes-for-libguestfs-winsupport.patch +Patch0003: 0003-RHEL-v2v-Select-correct-qemu-binary-for-o-qemu-mode-.patch +Patch0004: 0004-RHEL-v2v-Disable-the-qemu-boot-oo-qemu-boot-option-R.patch +Patch0005: 0005-RHEL-Fix-list-of-supported-sound-cards-to-match-RHEL.patch +Patch0006: 0006-RHEL-v2v-i-disk-force-VNC-as-display-RHBZ-1372671.patch +Patch0007: 0007-RHEL-point-to-KB-for-supported-v2v-hypervisors-guest.patch +Patch0008: 0008-RHEL-Remove-input-from-Xen.patch +Patch0009: 0009-RHEL-Remove-o-glance.patch +Patch0010: 0010-RHEL-tests-Remove-btrfs-test.patch +Patch0011: 0011-RHEL-Remove-block-driver-option.patch +Patch0012: 0012-RHEL-Remove-o-ovirt-o-ovirt-upload-and-o-vdsm-modes.patch +Patch0013: 0013-RHEL-Add-warning-about-virt-v2v-in-place-not-being-s.patch %if !0%{?rhel} # libguestfs hasn't been built on i686 for a while since there is no @@ -331,8 +330,8 @@ done %changelog -* Tue May 20 2025 Richard W.M. Jones - 1:2.7.16-2 -- Rebase to virt-v2v 2.7.16 +* Thu Jun 05 2025 Richard W.M. Jones - 1:2.7.17-1 +- Rebase to virt-v2v 2.7.17 related: RHEL-81735 - Fix virt-v2v -v --install dnf5 error resolves: RHEL-83288 @@ -356,6 +355,8 @@ done resolves: RHEL-89993 - Run filesystem check before and after conversion resolves: RHEL-91931 +- virt-v2v fails to convert XFS guest with dirty filesystem + resolves: RHEL-95365 * Tue Feb 11 2025 Richard W.M. Jones - 1:2.7.1-4 - Rebase to virt-v2v 2.7.1