[Buildroot] [PATCH] package/polkit: properly autoreconf
Yann E. MORIN
yann.morin.1998 at free.fr
Tue Apr 7 06:31:52 UTC 2020
Thomas, All,
On 2020-04-04 15:08 +0200, Thomas Petazzoni spake thusly:
> 0001-make-netgroup-support-optional.patch patches configure.ac, but we
> don't autoreconf the package, which is not good.
>
> However, simply adding AUTORECONF = YES is not sufficient: polkit
> Makefile.am use the automake conditional HAVE_INTROSPECTION, which is
> "available" only when the gobject-introspection m4 file is installed.
>
> Since we don't want to make gobject-introspection a mandatory
> dependency of polkit, we take a simpler route: add a copy of
> introspection.m4 into the polkit source tree. This is only a 142 lines
> file, and it can be dropped when
> 0001-make-netgroup-support-optional.patch is merged upstream.
Except no one has pushed it upstream already, so I'll do it now.
Applied to master, thanks.
Regards,
Yann E. MORIN.
> Signed-off-by: Thomas Petazzoni <thomas.petazzoni at bootlin.com>
> ---
> .../0001-make-netgroup-support-optional.patch | 211 ++++++++++++++++--
> package/polkit/polkit.mk | 2 +-
> 2 files changed, 192 insertions(+), 21 deletions(-)
>
> diff --git a/package/polkit/0001-make-netgroup-support-optional.patch b/package/polkit/0001-make-netgroup-support-optional.patch
> index f96738c910..86916aba34 100644
> --- a/package/polkit/0001-make-netgroup-support-optional.patch
> +++ b/package/polkit/0001-make-netgroup-support-optional.patch
> @@ -1,4 +1,4 @@
> -From 21aa2747e8f0048759aab184b07dd6389666d5e6 Mon Sep 17 00:00:00 2001
> +From 1b854ef4bb15032091a33fed587e5ba6f3e582eb Mon Sep 17 00:00:00 2001
> From: Khem Raj <raj.khem at gmail.com>
> Date: Wed, 22 May 2019 13:18:55 -0700
> Subject: [PATCH] make netgroup support optional
> @@ -17,20 +17,174 @@ Fixes bug 50145.
> Signed-off-by: A. Wilcox <AWilcox at Wilcox-Tech.com>
> Signed-off-by: Khem Raj <raj.khem at gmail.com>
> Signed-off-by: Adam Duskett <aduskett at gmail.com>
> +[Thomas: add introspection.m4.]
> +Signed-off-by: Thomas Petazzoni <thomas.petazzoni at bootlin.com>
> ---
> - configure.ac | 2 +-
> - src/polkit/polkitidentity.c | 16 ++++++++++++++++
> - src/polkit/polkitunixnetgroup.c | 3 +++
> - .../polkitbackendinteractiveauthority.c | 14 ++++++++------
> - src/polkitbackend/polkitbackendjsauthority.cpp | 2 ++
> - test/polkit/polkitidentitytest.c | 9 ++++++++-
> - test/polkit/polkitunixnetgrouptest.c | 3 +++
> - .../test-polkitbackendjsauthority.c | 2 ++
> - 8 files changed, 43 insertions(+), 8 deletions(-)
> + buildutil/introspection.m4 | 142 ++++++++++++++++++
> + configure.ac | 2 +-
> + src/polkit/polkitidentity.c | 16 ++
> + src/polkit/polkitunixnetgroup.c | 3 +
> + .../polkitbackendinteractiveauthority.c | 14 +-
> + .../polkitbackendjsauthority.cpp | 2 +
> + test/polkit/polkitidentitytest.c | 9 +-
> + test/polkit/polkitunixnetgrouptest.c | 3 +
> + .../test-polkitbackendjsauthority.c | 2 +
> + 9 files changed, 185 insertions(+), 8 deletions(-)
> + create mode 100644 buildutil/introspection.m4
>
> +diff --git a/buildutil/introspection.m4 b/buildutil/introspection.m4
> +new file mode 100644
> +index 0000000..b0ccd68
> +--- /dev/null
> ++++ b/buildutil/introspection.m4
> +@@ -0,0 +1,142 @@
> ++dnl -*- mode: autoconf -*-
> ++dnl Copyright 2009 Johan Dahlin
> ++dnl
> ++dnl This file is free software; the author(s) gives unlimited
> ++dnl permission to copy and/or distribute it, with or without
> ++dnl modifications, as long as this notice is preserved.
> ++dnl
> ++
> ++# serial 1
> ++
> ++dnl This is a copy of AS_AC_EXPAND
> ++dnl
> ++dnl (C) 2003, 2004, 2005 Thomas Vander Stichele <thomas at apestaart dot org>
> ++dnl Copying and distribution of this file, with or without modification,
> ++dnl are permitted in any medium without royalty provided the copyright
> ++dnl notice and this notice are preserved.
> ++m4_define([_GOBJECT_INTROSPECTION_AS_AC_EXPAND],
> ++[
> ++ EXP_VAR=[$1]
> ++ FROM_VAR=[$2]
> ++
> ++ dnl first expand prefix and exec_prefix if necessary
> ++ prefix_save=$prefix
> ++ exec_prefix_save=$exec_prefix
> ++
> ++ dnl if no prefix given, then use /usr/local, the default prefix
> ++ if test "x$prefix" = "xNONE"; then
> ++ prefix="$ac_default_prefix"
> ++ fi
> ++ dnl if no exec_prefix given, then use prefix
> ++ if test "x$exec_prefix" = "xNONE"; then
> ++ exec_prefix=$prefix
> ++ fi
> ++
> ++ full_var="$FROM_VAR"
> ++ dnl loop until it doesn't change anymore
> ++ while true; do
> ++ new_full_var="`eval echo $full_var`"
> ++ if test "x$new_full_var" = "x$full_var"; then break; fi
> ++ full_var=$new_full_var
> ++ done
> ++
> ++ dnl clean up
> ++ full_var=$new_full_var
> ++ AC_SUBST([$1], "$full_var")
> ++
> ++ dnl restore prefix and exec_prefix
> ++ prefix=$prefix_save
> ++ exec_prefix=$exec_prefix_save
> ++])
> ++
> ++m4_define([_GOBJECT_INTROSPECTION_CHECK_INTERNAL],
> ++[
> ++ AC_BEFORE([AC_PROG_LIBTOOL],[$0])dnl setup libtool first
> ++ AC_BEFORE([AM_PROG_LIBTOOL],[$0])dnl setup libtool first
> ++ AC_BEFORE([LT_INIT],[$0])dnl setup libtool first
> ++
> ++ dnl enable/disable introspection
> ++ m4_if([$2], [require],
> ++ [dnl
> ++ enable_introspection=yes
> ++ ],[dnl
> ++ AC_ARG_ENABLE(introspection,
> ++ AS_HELP_STRING([--enable-introspection[=@<:@no/auto/yes@:>@]],
> ++ [Enable introspection for this build]),,
> ++ [enable_introspection=auto])
> ++ ])dnl
> ++
> ++ AC_MSG_CHECKING([for gobject-introspection])
> ++
> ++ dnl presence/version checking
> ++ AS_CASE([$enable_introspection],
> ++ [no], [dnl
> ++ found_introspection="no (disabled, use --enable-introspection to enable)"
> ++ ],dnl
> ++ [yes],[dnl
> ++ PKG_CHECK_EXISTS([gobject-introspection-1.0],,
> ++ AC_MSG_ERROR([gobject-introspection-1.0 is not installed]))
> ++ PKG_CHECK_EXISTS([gobject-introspection-1.0 >= $1],
> ++ found_introspection=yes,
> ++ AC_MSG_ERROR([You need to have gobject-introspection >= $1 installed to build AC_PACKAGE_NAME]))
> ++ ],dnl
> ++ [auto],[dnl
> ++ PKG_CHECK_EXISTS([gobject-introspection-1.0 >= $1], found_introspection=yes, found_introspection=no)
> ++ dnl Canonicalize enable_introspection
> ++ enable_introspection=$found_introspection
> ++ ],dnl
> ++ [dnl
> ++ AC_MSG_ERROR([invalid argument passed to --enable-introspection, should be one of @<:@no/auto/yes@:>@])
> ++ ])dnl
> ++
> ++ AC_MSG_RESULT([$found_introspection])
> ++
> ++ dnl expand datadir/libdir so we can pass them to pkg-config
> ++ dnl and get paths relative to our target directories
> ++ _GOBJECT_INTROSPECTION_AS_AC_EXPAND(_GI_EXP_DATADIR, "$datadir")
> ++ _GOBJECT_INTROSPECTION_AS_AC_EXPAND(_GI_EXP_LIBDIR, "$libdir")
> ++
> ++ INTROSPECTION_SCANNER=
> ++ INTROSPECTION_COMPILER=
> ++ INTROSPECTION_GENERATE=
> ++ INTROSPECTION_GIRDIR=
> ++ INTROSPECTION_TYPELIBDIR=
> ++ if test "x$found_introspection" = "xyes"; then
> ++ INTROSPECTION_SCANNER=$PKG_CONFIG_SYSROOT_DIR`$PKG_CONFIG --variable=g_ir_scanner gobject-introspection-1.0`
> ++ INTROSPECTION_COMPILER=$PKG_CONFIG_SYSROOT_DIR`$PKG_CONFIG --variable=g_ir_compiler gobject-introspection-1.0`
> ++ INTROSPECTION_GENERATE=$PKG_CONFIG_SYSROOT_DIR`$PKG_CONFIG --variable=g_ir_generate gobject-introspection-1.0`
> ++ INTROSPECTION_GIRDIR=`$PKG_CONFIG --define-variable=datadir="${_GI_EXP_DATADIR}" --variable=girdir gobject-introspection-1.0`
> ++ INTROSPECTION_TYPELIBDIR="$($PKG_CONFIG --define-variable=libdir="${_GI_EXP_LIBDIR}" --variable=typelibdir gobject-introspection-1.0)"
> ++ INTROSPECTION_CFLAGS=`$PKG_CONFIG --cflags gobject-introspection-1.0`
> ++ INTROSPECTION_LIBS=`$PKG_CONFIG --libs gobject-introspection-1.0`
> ++ INTROSPECTION_MAKEFILE=$PKG_CONFIG_SYSROOT_DIR`$PKG_CONFIG --variable=datadir gobject-introspection-1.0`/gobject-introspection-1.0/Makefile.introspection
> ++ fi
> ++ AC_SUBST(INTROSPECTION_SCANNER)
> ++ AC_SUBST(INTROSPECTION_COMPILER)
> ++ AC_SUBST(INTROSPECTION_GENERATE)
> ++ AC_SUBST(INTROSPECTION_GIRDIR)
> ++ AC_SUBST(INTROSPECTION_TYPELIBDIR)
> ++ AC_SUBST(INTROSPECTION_CFLAGS)
> ++ AC_SUBST(INTROSPECTION_LIBS)
> ++ AC_SUBST(INTROSPECTION_MAKEFILE)
> ++
> ++ AM_CONDITIONAL(HAVE_INTROSPECTION, test "x$found_introspection" = "xyes")
> ++])
> ++
> ++
> ++dnl Usage:
> ++dnl GOBJECT_INTROSPECTION_CHECK([minimum-g-i-version])
> ++
> ++AC_DEFUN([GOBJECT_INTROSPECTION_CHECK],
> ++[
> ++ _GOBJECT_INTROSPECTION_CHECK_INTERNAL([$1])
> ++])
> ++
> ++dnl Usage:
> ++dnl GOBJECT_INTROSPECTION_REQUIRE([minimum-g-i-version])
> ++
> ++
> ++AC_DEFUN([GOBJECT_INTROSPECTION_REQUIRE],
> ++[
> ++ _GOBJECT_INTROSPECTION_CHECK_INTERNAL([$1], [require])
> ++])
> +diff --git a/configure.ac b/configure.ac
> +index 5cedb4e..87aa0ad 100644
> --- a/configure.ac
> +++ b/configure.ac
> -@@ -99,7 +99,7 @@ AC_CHECK_LIB(expat,XML_ParserCreate,[EXP
> +@@ -99,7 +99,7 @@ AC_CHECK_LIB(expat,XML_ParserCreate,[EXPAT_LIBS="-lexpat"],
> [AC_MSG_ERROR([Can't find expat library. Please install expat.])])
> AC_SUBST(EXPAT_LIBS)
>
> @@ -39,9 +193,11 @@ Signed-off-by: Adam Duskett <aduskett at gmail.com>
>
> if test "x$GCC" = "xyes"; then
> LDFLAGS="-Wl,--as-needed $LDFLAGS"
> +diff --git a/src/polkit/polkitidentity.c b/src/polkit/polkitidentity.c
> +index 3aa1f7f..10e9c17 100644
> --- a/src/polkit/polkitidentity.c
> +++ b/src/polkit/polkitidentity.c
> -@@ -182,7 +182,15 @@ polkit_identity_from_string (const gcha
> +@@ -182,7 +182,15 @@ polkit_identity_from_string (const gchar *str,
> }
> else if (g_str_has_prefix (str, "unix-netgroup:"))
> {
> @@ -57,7 +213,7 @@ Signed-off-by: Adam Duskett <aduskett at gmail.com>
> }
>
> if (identity == NULL && (error != NULL && *error == NULL))
> -@@ -344,6 +352,13 @@ polkit_identity_new_for_gvariant (GVaria
> +@@ -344,6 +352,13 @@ polkit_identity_new_for_gvariant (GVariant *variant,
> GVariant *v;
> const char *name;
>
> @@ -71,7 +227,7 @@ Signed-off-by: Adam Duskett <aduskett at gmail.com>
> v = lookup_asv (details_gvariant, "name", G_VARIANT_TYPE_STRING, error);
> if (v == NULL)
> {
> -@@ -353,6 +368,7 @@ polkit_identity_new_for_gvariant (GVaria
> +@@ -353,6 +368,7 @@ polkit_identity_new_for_gvariant (GVariant *variant,
> name = g_variant_get_string (v, NULL);
> ret = polkit_unix_netgroup_new (name);
> g_variant_unref (v);
> @@ -79,9 +235,11 @@ Signed-off-by: Adam Duskett <aduskett at gmail.com>
> }
> else
> {
> +diff --git a/src/polkit/polkitunixnetgroup.c b/src/polkit/polkitunixnetgroup.c
> +index 8a2b369..83f8d4a 100644
> --- a/src/polkit/polkitunixnetgroup.c
> +++ b/src/polkit/polkitunixnetgroup.c
> -@@ -194,6 +194,9 @@ polkit_unix_netgroup_set_name (PolkitUni
> +@@ -194,6 +194,9 @@ polkit_unix_netgroup_set_name (PolkitUnixNetgroup *group,
> PolkitIdentity *
> polkit_unix_netgroup_new (const gchar *name)
> {
> @@ -91,9 +249,11 @@ Signed-off-by: Adam Duskett <aduskett at gmail.com>
> g_return_val_if_fail (name != NULL, NULL);
> return POLKIT_IDENTITY (g_object_new (POLKIT_TYPE_UNIX_NETGROUP,
> "name", name,
> +diff --git a/src/polkitbackend/polkitbackendinteractiveauthority.c b/src/polkitbackend/polkitbackendinteractiveauthority.c
> +index 056d9a8..36c2f3d 100644
> --- a/src/polkitbackend/polkitbackendinteractiveauthority.c
> +++ b/src/polkitbackend/polkitbackendinteractiveauthority.c
> -@@ -2233,25 +2233,26 @@ get_users_in_net_group (PolkitIdentity
> +@@ -2233,25 +2233,26 @@ get_users_in_net_group (PolkitIdentity *group,
> GList *ret;
>
> ret = NULL;
> @@ -126,7 +286,7 @@ Signed-off-by: Adam Duskett <aduskett at gmail.com>
> PolkitIdentity *user;
> GError *error = NULL;
>
> -@@ -2282,6 +2283,7 @@ get_users_in_net_group (PolkitIdentity
> +@@ -2282,6 +2283,7 @@ get_users_in_net_group (PolkitIdentity *group,
>
> out:
> endnetgrent ();
> @@ -134,9 +294,11 @@ Signed-off-by: Adam Duskett <aduskett at gmail.com>
> return ret;
> }
>
> +diff --git a/src/polkitbackend/polkitbackendjsauthority.cpp b/src/polkitbackend/polkitbackendjsauthority.cpp
> +index 9b752d1..09b2878 100644
> --- a/src/polkitbackend/polkitbackendjsauthority.cpp
> +++ b/src/polkitbackend/polkitbackendjsauthority.cpp
> -@@ -1502,6 +1502,7 @@ js_polkit_user_is_in_netgroup (JSContext
> +@@ -1502,6 +1502,7 @@ js_polkit_user_is_in_netgroup (JSContext *cx,
>
> JS::CallArgs args = JS::CallArgsFromVp (argc, vp);
>
> @@ -144,7 +306,7 @@ Signed-off-by: Adam Duskett <aduskett at gmail.com>
> JS::RootedString usrstr (authority->priv->cx);
> usrstr = args[0].toString();
> user = JS_EncodeStringToUTF8 (cx, usrstr);
> -@@ -1519,6 +1520,7 @@ js_polkit_user_is_in_netgroup (JSContext
> +@@ -1519,6 +1520,7 @@ js_polkit_user_is_in_netgroup (JSContext *cx,
>
> JS_free (cx, netgroup);
> JS_free (cx, user);
> @@ -152,6 +314,8 @@ Signed-off-by: Adam Duskett <aduskett at gmail.com>
>
> ret = true;
>
> +diff --git a/test/polkit/polkitidentitytest.c b/test/polkit/polkitidentitytest.c
> +index e91967b..e829aaa 100644
> --- a/test/polkit/polkitidentitytest.c
> +++ b/test/polkit/polkitidentitytest.c
> @@ -19,6 +19,7 @@
> @@ -162,7 +326,7 @@ Signed-off-by: Adam Duskett <aduskett at gmail.com>
> #include "glib.h"
> #include <polkit/polkit.h>
> #include <polkit/polkitprivate.h>
> -@@ -145,11 +146,15 @@ struct ComparisonTestData comparison_tes
> +@@ -145,11 +146,15 @@ struct ComparisonTestData comparison_test_data [] = {
> {"unix-group:root", "unix-group:jane", FALSE},
> {"unix-group:jane", "unix-group:jane", TRUE},
>
> @@ -193,6 +357,8 @@ Signed-off-by: Adam Duskett <aduskett at gmail.com>
>
> add_comparison_tests ();
>
> +diff --git a/test/polkit/polkitunixnetgrouptest.c b/test/polkit/polkitunixnetgrouptest.c
> +index 3701ba1..e3352eb 100644
> --- a/test/polkit/polkitunixnetgrouptest.c
> +++ b/test/polkit/polkitunixnetgrouptest.c
> @@ -19,6 +19,7 @@
> @@ -213,6 +379,8 @@ Signed-off-by: Adam Duskett <aduskett at gmail.com>
> +#endif
> return g_test_run ();
> }
> +diff --git a/test/polkitbackend/test-polkitbackendjsauthority.c b/test/polkitbackend/test-polkitbackendjsauthority.c
> +index 71aad23..fdd28f3 100644
> --- a/test/polkitbackend/test-polkitbackendjsauthority.c
> +++ b/test/polkitbackend/test-polkitbackendjsauthority.c
> @@ -137,12 +137,14 @@ test_get_admin_identities (void)
> @@ -230,3 +398,6 @@ Signed-off-by: Adam Duskett <aduskett at gmail.com>
> };
> guint n;
>
> +--
> +2.25.1
> +
> diff --git a/package/polkit/polkit.mk b/package/polkit/polkit.mk
> index 4e7cda943c..8572d8b9ba 100644
> --- a/package/polkit/polkit.mk
> +++ b/package/polkit/polkit.mk
> @@ -8,7 +8,7 @@ POLKIT_VERSION = 0.116
> POLKIT_SITE = http://www.freedesktop.org/software/polkit/releases
> POLKIT_LICENSE = GPL-2.0
> POLKIT_LICENSE_FILES = COPYING
> -
> +POLKIT_AUTORECONF = YES
> POLKIT_INSTALL_STAGING = YES
>
> POLKIT_DEPENDENCIES = \
> --
> 2.25.1
>
--
.-----------------.--------------------.------------------.--------------------.
| Yann E. MORIN | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: |
| +33 662 376 056 | Software Designer | \ / CAMPAIGN | ___ |
| +33 561 099 427 `------------.-------: X AGAINST | \e/ There is no |
| http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL | v conspiracy. |
'------------------------------^-------^------------------^--------------------'
More information about the buildroot
mailing list