configure: Instead of for rpm 4.15+ version, test actual rpm/zstd support

Message ID 20211210165246.3434933-1-thomas@codesourcery.com
State Committed
Headers
Series configure: Instead of for rpm 4.15+ version, test actual rpm/zstd support |

Commit Message

Thomas Schwinge Dec. 10, 2021, 4:52 p.m. UTC
  If no 'rpm' is available, we currently get:

    [...]
    checking for rpm... no
    ../git/configure: line 13119: rpm: command not found
    configure: detected rpm version:
    configure: rpm support in abipkgdiff is disabled
    [...]
    		Here is the configuration of the package:
    [...]
        Enable rpm support in abipkgdiff               : no
        Enable rpm 4.15 support in abipkgdiff tests    : no
    [...]

Notice intermixed error output: 'rpm: command not found'.

If Ubuntu focal 'rpm' 4.14.2.1+dfsg1-1build2 is available, we currently get:

    [...]
    checking for rpm... yes
    configure: detected rpm version: 4.14.2.1
    configure: rpm support in abipkgdiff is enabled
    configure: rpm 4.15 support in abipkgdiff tests is enabled
    [...]
    		Here is the configuration of the package:
    [...]
        Enable rpm support in abipkgdiff               : yes
        Enable rpm 4.15 support in abipkgdiff tests    : yes
    [...]

Notice wrong 4.15+ version detection (due to '[[ "$rpmversion" > "4.14.0" ]]'),
which is satisfied by '4.14.2.1'.  (Comparing versions with shell '[['
generally is fragile; instead use 'autoconf-archive/ax_compare_version.m4'
or similar?)

Also, 'configure'ing with '--disable-rpm415' doesn't work; same output as
before.  That's due to commit 26c41c060bf30750fe2cded87edaf1ae47027523
"Fix thinko in configure.ac", where either there was no thinko in fact (the
original idea, I suppose, was only if 'test x$ENABLE_RPM = xyes' to do the
4.15+ 'auto' checking?), and/or a typo: instead of 'test x$ENABLE_RPM = xyes',
the first conditional should 'test x$ENABLE_RPM415 = xyes'?

And, 'configure'ing with '--enable-rpm415' doesn't raise a hard error if 'rpm'
actually isn't 4.15+.

But all that said, we don't actually need to check for rpm 4.15+ version, but
instead may simply check for the rpm/zstd support that we need: 'rpm2cpio'.

	* configure.ac: Instead of for rpm 4.15+ version, test actual
	rpm/zstd support.
	* tests/test-diff-pkg.cc: Adjust.

Signed-off-by: Thomas Schwinge <thomas@codesourcery.com>
---
 configure.ac           | 48 +++++++++++++++++++++++++++++-------------
 tests/test-diff-pkg.cc |  5 ++---
 2 files changed, 35 insertions(+), 18 deletions(-)
  

Comments

Thomas Schwinge Dec. 17, 2021, 9:28 a.m. UTC | #1
Hi!

Ping.


Grüße
 Thomas


On 2021-12-10T17:52:46+0100, I wrote:
> If no 'rpm' is available, we currently get:
>
>     [...]
>     checking for rpm... no
>     ../git/configure: line 13119: rpm: command not found
>     configure: detected rpm version:
>     configure: rpm support in abipkgdiff is disabled
>     [...]
>               Here is the configuration of the package:
>     [...]
>         Enable rpm support in abipkgdiff               : no
>         Enable rpm 4.15 support in abipkgdiff tests    : no
>     [...]
>
> Notice intermixed error output: 'rpm: command not found'.
>
> If Ubuntu focal 'rpm' 4.14.2.1+dfsg1-1build2 is available, we currently get:
>
>     [...]
>     checking for rpm... yes
>     configure: detected rpm version: 4.14.2.1
>     configure: rpm support in abipkgdiff is enabled
>     configure: rpm 4.15 support in abipkgdiff tests is enabled
>     [...]
>               Here is the configuration of the package:
>     [...]
>         Enable rpm support in abipkgdiff               : yes
>         Enable rpm 4.15 support in abipkgdiff tests    : yes
>     [...]
>
> Notice wrong 4.15+ version detection (due to '[[ "$rpmversion" > "4.14.0" ]]'),
> which is satisfied by '4.14.2.1'.  (Comparing versions with shell '[['
> generally is fragile; instead use 'autoconf-archive/ax_compare_version.m4'
> or similar?)
>
> Also, 'configure'ing with '--disable-rpm415' doesn't work; same output as
> before.  That's due to commit 26c41c060bf30750fe2cded87edaf1ae47027523
> "Fix thinko in configure.ac", where either there was no thinko in fact (the
> original idea, I suppose, was only if 'test x$ENABLE_RPM = xyes' to do the
> 4.15+ 'auto' checking?), and/or a typo: instead of 'test x$ENABLE_RPM = xyes',
> the first conditional should 'test x$ENABLE_RPM415 = xyes'?
>
> And, 'configure'ing with '--enable-rpm415' doesn't raise a hard error if 'rpm'
> actually isn't 4.15+.
>
> But all that said, we don't actually need to check for rpm 4.15+ version, but
> instead may simply check for the rpm/zstd support that we need: 'rpm2cpio'.
>
>       * configure.ac: Instead of for rpm 4.15+ version, test actual
>       rpm/zstd support.
>       * tests/test-diff-pkg.cc: Adjust.
>
> Signed-off-by: Thomas Schwinge <thomas@codesourcery.com>
> ---
>  configure.ac           | 48 +++++++++++++++++++++++++++++-------------
>  tests/test-diff-pkg.cc |  5 ++---
>  2 files changed, 35 insertions(+), 18 deletions(-)
>
> diff --git configure.ac configure.ac
> index 5342a269..a77ab4d8 100644
> --- configure.ac
> +++ configure.ac
> @@ -64,11 +64,12 @@ AC_ARG_ENABLE(rpm,
>             ENABLE_RPM=$enableval,
>             ENABLE_RPM=auto)
>
> +# '--enable-rpm415' option name preserved for backwards compatibility.
>  AC_ARG_ENABLE(rpm415,
>             AS_HELP_STRING([--enable-rpm415=yes|no|auto],
> -                          [enable the support of rpm 4.15 or higher in abipkgdiff (default is auto)]),
> -           ENABLE_RPM415=$enableval,
> -           ENABLE_RPM415=auto)
> +                          [enable rpm/zstd in abipkgdiff testing (default is auto)]),
> +           ENABLE_RPM_ZSTD=$enableval,
> +           ENABLE_RPM_ZSTD=auto)
>
>  AC_ARG_ENABLE(debug-self-comparison,
>             AS_HELP_STRING([--enable-debug-self-comparison=yes|no],
> @@ -314,23 +315,40 @@ if test x$ENABLE_RPM = xyes -o x$ENABLE_RPM = xauto; then
>    fi
>  fi
>
> -if test x$ENABLE_RPM = xyes -o x$ENABLE_RPM415 = xauto; then
> -   rpmversion=$(rpm --version | sed "s/RPM version //")
> -   AC_MSG_NOTICE([detected rpm version: $rpmversion])
> -   if [[[ "$rpmversion" > "4.14.0" ]]]; then
> -      ENABLE_RPM415=yes
> -   else
> -      ENABLE_RPM415=no
> -   fi
> +dnl Point to a rpm/zstd file, that is:
> +dnl     $ rpm -qp --qf '%{PAYLOADCOMPRESSOR}\n' [rpm_zstd_file]
> +dnl     zstd
> +m4_define([rpm_zstd_file], [tests/data/test-diff-pkg/mesa-libGLU-9.0.1-3.fc33.x86_64.rpm])
> +AC_CONFIG_SRCDIR([rpm_zstd_file])
> +if test x$ENABLE_RPM_ZSTD = xyes -o x$ENABLE_RPM_ZSTD = xauto; then
> +  if test x$ENABLE_RPM = xno; then
> +    if test x$ENABLE_RPM_ZSTD = xyes; then
> +      AC_MSG_ERROR([rpm/zstd support needs rpm support])
> +    fi
> +    ENABLE_RPM_ZSTD=n/a
> +  else
> +    AC_MSG_CHECKING([for rpm/zstd support])
> +    rpm2cpio > /dev/null 2>&AS_MESSAGE_LOG_FD "$srcdir"/rpm_zstd_file
> +    if test $? -eq 0; then
> +      enable_rpm_zstd=yes
> +    else
> +      enable_rpm_zstd=no
> +    fi
> +    AC_MSG_RESULT([$enable_rpm_zstd])
> +    if test x$ENABLE_RPM_ZSTD:$enable_rpm_zstd = xyes:no; then
> +      AC_MSG_ERROR([rpm/zstd support not available])
> +    fi
> +    ENABLE_RPM_ZSTD=$enable_rpm_zstd
> +  fi
>  fi
>
>  if test x$ENABLE_RPM = xyes; then
>     AC_DEFINE([WITH_RPM], 1, [compile the rpm package support in abipkgdiff])
>     AC_MSG_NOTICE([rpm support in abipkgdiff is enabled]);
>
> -   if test x$ENABLE_RPM415 = xyes; then
> -      AC_DEFINE([WITH_RPM_4_15], 1, [has RPM 4.15 at least])
> -      AC_MSG_NOTICE([rpm 4.15 support in abipkgdiff tests is enabled])
> +   if test x$ENABLE_RPM_ZSTD = xyes; then
> +      AC_DEFINE([WITH_RPM_ZSTD], 1, [has rpm/zstd support])
> +      AC_MSG_NOTICE([rpm/zstd in abipkgdiff testing is enabled])
>     fi
>  else
>     AC_MSG_NOTICE([rpm support in abipkgdiff is disabled]);
> @@ -980,7 +998,7 @@ AC_MSG_NOTICE([
>      C++ standard level                             : ${CXX_STANDARD}
>      libdw has the dwarf_getalt function            : ${FOUND_DWARF_GETALT_IN_LIBDW}
>      Enable rpm support in abipkgdiff               : ${ENABLE_RPM}
> -    Enable rpm 4.15 support in abipkgdiff tests    : ${ENABLE_RPM415}
> +    Enable rpm/zstd in abipkgdiff testing          : ${ENABLE_RPM_ZSTD}
>      Enable self comparison debugging               : ${ENABLE_DEBUG_SELF_COMPARISON}
>      Enable type canonicalization debugging         : ${ENABLE_DEBUG_TYPE_CANONICALIZATION}
>      Enable deb support in abipkgdiff               : ${ENABLE_DEB}
> diff --git tests/test-diff-pkg.cc tests/test-diff-pkg.cc
> index c9e221b7..bcf2e38e 100644
> --- tests/test-diff-pkg.cc
> +++ tests/test-diff-pkg.cc
> @@ -605,8 +605,7 @@ static InOutSpec in_out_specs[] =
>      "data/test-diff-pkg/PR24690/PR24690-report-0.txt",
>      "output/test-diff-pkg/PR24690/PR24690-report-0.txt"
>    },
> -#if WITH_RPM_4_15
> -  // This RPM version supports packages compressed with zstd.
> +#if WITH_RPM_ZSTD
>    // RPMs from Fedora 31 onwards are compressed with zstd.
>    {
>      "data/test-diff-pkg/mesa-libGLU-9.0.1-3.fc33.x86_64.rpm",
> @@ -747,7 +746,7 @@ static InOutSpec in_out_specs[] =
>      "data/test-diff-pkg/wireshark/wireshark-cli-3.4.9-1.fc36.x86_64-self-check-report.txt",
>      "output/test-diff-pkg/wireshark/wireshark-cli-3.4.9-1.fc36.x86_64-self-check-report.txt"
>    } ,
> -#endif // WITH_RPM_4_15
> +#endif // WITH_RPM_ZSTD
>  #endif //WITH_RPM
>
>  #ifdef WITH_DEB
> --
> 2.25.1
-----------------
Siemens Electronic Design Automation GmbH; Anschrift: Arnulfstraße 201, 80634 München; Gesellschaft mit beschränkter Haftung; Geschäftsführer: Thomas Heurung, Frank Thürauf; Sitz der Gesellschaft: München; Registergericht München, HRB 106955
  
Dodji Seketeli Dec. 17, 2021, 9:16 p.m. UTC | #2
Thomas Schwinge <thomas@codesourcery.com> a écrit:

[...]

[...]

> But all that said, we don't actually need to check for rpm 4.15+ version, but
> instead may simply check for the rpm/zstd support that we need: 'rpm2cpio'.
>
> 	* configure.ac: Instead of for rpm 4.15+ version, test actual
> 	rpm/zstd support.
> 	* tests/test-diff-pkg.cc: Adjust.
>
> Signed-off-by: Thomas Schwinge <thomas@codesourcery.com>

Applied to master.  Thanks!

[...]

Cheers,
  

Patch

diff --git configure.ac configure.ac
index 5342a269..a77ab4d8 100644
--- configure.ac
+++ configure.ac
@@ -64,11 +64,12 @@  AC_ARG_ENABLE(rpm,
 	      ENABLE_RPM=$enableval,
 	      ENABLE_RPM=auto)
 
+# '--enable-rpm415' option name preserved for backwards compatibility.
 AC_ARG_ENABLE(rpm415,
 	      AS_HELP_STRING([--enable-rpm415=yes|no|auto],
-			     [enable the support of rpm 4.15 or higher in abipkgdiff (default is auto)]),
-	      ENABLE_RPM415=$enableval,
-	      ENABLE_RPM415=auto)
+			     [enable rpm/zstd in abipkgdiff testing (default is auto)]),
+	      ENABLE_RPM_ZSTD=$enableval,
+	      ENABLE_RPM_ZSTD=auto)
 
 AC_ARG_ENABLE(debug-self-comparison,
 	      AS_HELP_STRING([--enable-debug-self-comparison=yes|no],
@@ -314,23 +315,40 @@  if test x$ENABLE_RPM = xyes -o x$ENABLE_RPM = xauto; then
   fi
 fi
 
-if test x$ENABLE_RPM = xyes -o x$ENABLE_RPM415 = xauto; then
-   rpmversion=$(rpm --version | sed "s/RPM version //")
-   AC_MSG_NOTICE([detected rpm version: $rpmversion])
-   if [[[ "$rpmversion" > "4.14.0" ]]]; then
-      ENABLE_RPM415=yes
-   else
-      ENABLE_RPM415=no
-   fi
+dnl Point to a rpm/zstd file, that is:
+dnl     $ rpm -qp --qf '%{PAYLOADCOMPRESSOR}\n' [rpm_zstd_file]
+dnl     zstd
+m4_define([rpm_zstd_file], [tests/data/test-diff-pkg/mesa-libGLU-9.0.1-3.fc33.x86_64.rpm])
+AC_CONFIG_SRCDIR([rpm_zstd_file])
+if test x$ENABLE_RPM_ZSTD = xyes -o x$ENABLE_RPM_ZSTD = xauto; then
+  if test x$ENABLE_RPM = xno; then
+    if test x$ENABLE_RPM_ZSTD = xyes; then
+      AC_MSG_ERROR([rpm/zstd support needs rpm support])
+    fi
+    ENABLE_RPM_ZSTD=n/a
+  else
+    AC_MSG_CHECKING([for rpm/zstd support])
+    rpm2cpio > /dev/null 2>&AS_MESSAGE_LOG_FD "$srcdir"/rpm_zstd_file
+    if test $? -eq 0; then
+      enable_rpm_zstd=yes
+    else
+      enable_rpm_zstd=no
+    fi
+    AC_MSG_RESULT([$enable_rpm_zstd])
+    if test x$ENABLE_RPM_ZSTD:$enable_rpm_zstd = xyes:no; then
+      AC_MSG_ERROR([rpm/zstd support not available])
+    fi
+    ENABLE_RPM_ZSTD=$enable_rpm_zstd
+  fi
 fi
 
 if test x$ENABLE_RPM = xyes; then
    AC_DEFINE([WITH_RPM], 1, [compile the rpm package support in abipkgdiff])
    AC_MSG_NOTICE([rpm support in abipkgdiff is enabled]);
 
-   if test x$ENABLE_RPM415 = xyes; then
-      AC_DEFINE([WITH_RPM_4_15], 1, [has RPM 4.15 at least])
-      AC_MSG_NOTICE([rpm 4.15 support in abipkgdiff tests is enabled])
+   if test x$ENABLE_RPM_ZSTD = xyes; then
+      AC_DEFINE([WITH_RPM_ZSTD], 1, [has rpm/zstd support])
+      AC_MSG_NOTICE([rpm/zstd in abipkgdiff testing is enabled])
    fi
 else
    AC_MSG_NOTICE([rpm support in abipkgdiff is disabled]);
@@ -980,7 +998,7 @@  AC_MSG_NOTICE([
     C++ standard level                             : ${CXX_STANDARD}
     libdw has the dwarf_getalt function            : ${FOUND_DWARF_GETALT_IN_LIBDW}
     Enable rpm support in abipkgdiff               : ${ENABLE_RPM}
-    Enable rpm 4.15 support in abipkgdiff tests    : ${ENABLE_RPM415}
+    Enable rpm/zstd in abipkgdiff testing          : ${ENABLE_RPM_ZSTD}
     Enable self comparison debugging               : ${ENABLE_DEBUG_SELF_COMPARISON}
     Enable type canonicalization debugging         : ${ENABLE_DEBUG_TYPE_CANONICALIZATION}
     Enable deb support in abipkgdiff               : ${ENABLE_DEB}
diff --git tests/test-diff-pkg.cc tests/test-diff-pkg.cc
index c9e221b7..bcf2e38e 100644
--- tests/test-diff-pkg.cc
+++ tests/test-diff-pkg.cc
@@ -605,8 +605,7 @@  static InOutSpec in_out_specs[] =
     "data/test-diff-pkg/PR24690/PR24690-report-0.txt",
     "output/test-diff-pkg/PR24690/PR24690-report-0.txt"
   },
-#if WITH_RPM_4_15
-  // This RPM version supports packages compressed with zstd.
+#if WITH_RPM_ZSTD
   // RPMs from Fedora 31 onwards are compressed with zstd.
   {
     "data/test-diff-pkg/mesa-libGLU-9.0.1-3.fc33.x86_64.rpm",
@@ -747,7 +746,7 @@  static InOutSpec in_out_specs[] =
     "data/test-diff-pkg/wireshark/wireshark-cli-3.4.9-1.fc36.x86_64-self-check-report.txt",
     "output/test-diff-pkg/wireshark/wireshark-cli-3.4.9-1.fc36.x86_64-self-check-report.txt"
   } ,
-#endif // WITH_RPM_4_15
+#endif // WITH_RPM_ZSTD
 #endif //WITH_RPM
 
 #ifdef WITH_DEB