diff mbox

[babeltrace] configure: fix uuid support detection on static build

Message ID 20160601195632.23585-1-s.martin49@gmail.com
State Accepted, archived
Headers show

Commit Message

Samuel Martin June 1, 2016, 7:56 p.m. UTC
This change adds uuid detection using pkg-config helper before falling
back on the standard AC_CHECK_LIB detection for platforms missing
pkg-config.

AC_CHECK_LIB function achieves its test by trying to link against the
requested library, without taking care of its dependency
requirements/flags that may differ between different targets.
Therefore, in case of static build, it can fail on the uuid detection
like [1], because the uuid's dependency flags (regarding gettext) are
missing.

Instead, using pkg-config to do the check will take care of getting and
setting all required flags.

This issue [1] has been triggered on Buildroot farms.

[1] http://autobuild.buildroot.net/results/43b/43b98ddf9eb44152ed9ac4a98d887af14831d8da/build-end.log

Signed-off-by: Samuel Martin <s.martin49 at gmail.com>
---
 configure.ac | 31 +++++++++++++++++++++----------
 1 file changed, 21 insertions(+), 10 deletions(-)

Comments

Samuel Martin June 11, 2016, 9:14 a.m. UTC | #1
up!

On Wed, Jun 1, 2016 at 9:56 PM, Samuel Martin <s.martin49 at gmail.com> wrote:
> This change adds uuid detection using pkg-config helper before falling
> back on the standard AC_CHECK_LIB detection for platforms missing
> pkg-config.
>
> AC_CHECK_LIB function achieves its test by trying to link against the
> requested library, without taking care of its dependency
> requirements/flags that may differ between different targets.
> Therefore, in case of static build, it can fail on the uuid detection
> like [1], because the uuid's dependency flags (regarding gettext) are
> missing.
>
> Instead, using pkg-config to do the check will take care of getting and
> setting all required flags.
>
> This issue [1] has been triggered on Buildroot farms.
>
> [1] http://autobuild.buildroot.net/results/43b/43b98ddf9eb44152ed9ac4a98d887af14831d8da/build-end.log
>
> Signed-off-by: Samuel Martin <s.martin49 at gmail.com>
> ---
>  configure.ac | 31 +++++++++++++++++++++----------
>  1 file changed, 21 insertions(+), 10 deletions(-)
>
> diff --git a/configure.ac b/configure.ac
> index 63a7548..f923edb 100644
> --- a/configure.ac
> +++ b/configure.ac
> @@ -163,24 +163,35 @@ AC_CHECK_FUNCS([uuid_generate],
>    link_with_libuuid=no
>  ],
>  [
> -  # Check for libuuid
> -  AC_CHECK_LIB([uuid], [uuid_generate],
> +  # First, check the pkg-config module is available, otherwise explicitly check
> +  # for libuuid, or uuid support in the C-library.
> +  PKG_CHECK_MODULES([UUID], [uuid],
>    [
> +    LIBS="${UUID_LIBS} ${LIBS}"
> +    CFLAGS="${CFLAGS} ${UUID_CFLAGS}"
>      AC_DEFINE_UNQUOTED([BABELTRACE_HAVE_LIBUUID], 1, [Has libuuid support.])
>      link_with_libuuid=yes
>    ],
>    [
> -    # libuuid not found, check for uuid_create in libc.
> -    AC_CHECK_LIB([c], [uuid_create],
> +    # Check for libuuid
> +    AC_CHECK_LIB([uuid], [uuid_generate],
>      [
> -      AC_DEFINE_UNQUOTED([BABELTRACE_HAVE_LIBC_UUID], 1, [Has libc uuid support.])
> -      link_with_libc_uuid=yes
> +      AC_DEFINE_UNQUOTED([BABELTRACE_HAVE_LIBUUID], 1, [Has libuuid support.])
> +      link_with_libuuid=yes
>      ],
>      [
> -      # for MinGW32 we have our own internal implemenation of uuid using Windows functions.
> -      if test "x$MINGW32" = xno; then
> -        AC_MSG_ERROR([Cannot find libuuid uuid_generate nor libc uuid_create. Use [LDFLAGS]=-Ldir to specify their location.])
> -      fi
> +      # libuuid not found, check for uuid_create in libc.
> +      AC_CHECK_LIB([c], [uuid_create],
> +      [
> +        AC_DEFINE_UNQUOTED([BABELTRACE_HAVE_LIBC_UUID], 1, [Has libc uuid support.])
> +        link_with_libc_uuid=yes
> +      ],
> +      [
> +        # for MinGW32 we have our own internal implemenation of uuid using Windows functions.
> +        if test "x$MINGW32" = xno; then
> +          AC_MSG_ERROR([Cannot find libuuid uuid_generate nor libc uuid_create. Use [LDFLAGS]=-Ldir to specify their location.])
> +        fi
> +      ])
>      ])
>    ])
>  ])
> --
> 2.8.3
>
Jérémie Galarneau June 13, 2016, 11:21 p.m. UTC | #2
On Wed, Jun 1, 2016 at 3:56 PM, Samuel Martin <s.martin49 at gmail.com> wrote:
> This change adds uuid detection using pkg-config helper before falling
> back on the standard AC_CHECK_LIB detection for platforms missing
> pkg-config.
>
> AC_CHECK_LIB function achieves its test by trying to link against the
> requested library, without taking care of its dependency
> requirements/flags that may differ between different targets.
> Therefore, in case of static build, it can fail on the uuid detection
> like [1], because the uuid's dependency flags (regarding gettext) are
> missing.

Hi Samuel,

The same requirements seem to exist for glib (gettext), does the
change need to be made for it also?

Jérémie

>
> Instead, using pkg-config to do the check will take care of getting and
> setting all required flags.
>
> This issue [1] has been triggered on Buildroot farms.
>
> [1] http://autobuild.buildroot.net/results/43b/43b98ddf9eb44152ed9ac4a98d887af14831d8da/build-end.log
>
> Signed-off-by: Samuel Martin <s.martin49 at gmail.com>
> ---
>  configure.ac | 31 +++++++++++++++++++++----------
>  1 file changed, 21 insertions(+), 10 deletions(-)
>
> diff --git a/configure.ac b/configure.ac
> index 63a7548..f923edb 100644
> --- a/configure.ac
> +++ b/configure.ac
> @@ -163,24 +163,35 @@ AC_CHECK_FUNCS([uuid_generate],
>    link_with_libuuid=no
>  ],
>  [
> -  # Check for libuuid
> -  AC_CHECK_LIB([uuid], [uuid_generate],
> +  # First, check the pkg-config module is available, otherwise explicitly check
> +  # for libuuid, or uuid support in the C-library.
> +  PKG_CHECK_MODULES([UUID], [uuid],
>    [
> +    LIBS="${UUID_LIBS} ${LIBS}"
> +    CFLAGS="${CFLAGS} ${UUID_CFLAGS}"
>      AC_DEFINE_UNQUOTED([BABELTRACE_HAVE_LIBUUID], 1, [Has libuuid support.])
>      link_with_libuuid=yes
>    ],
>    [
> -    # libuuid not found, check for uuid_create in libc.
> -    AC_CHECK_LIB([c], [uuid_create],
> +    # Check for libuuid
> +    AC_CHECK_LIB([uuid], [uuid_generate],
>      [
> -      AC_DEFINE_UNQUOTED([BABELTRACE_HAVE_LIBC_UUID], 1, [Has libc uuid support.])
> -      link_with_libc_uuid=yes
> +      AC_DEFINE_UNQUOTED([BABELTRACE_HAVE_LIBUUID], 1, [Has libuuid support.])
> +      link_with_libuuid=yes
>      ],
>      [
> -      # for MinGW32 we have our own internal implemenation of uuid using Windows functions.
> -      if test "x$MINGW32" = xno; then
> -        AC_MSG_ERROR([Cannot find libuuid uuid_generate nor libc uuid_create. Use [LDFLAGS]=-Ldir to specify their location.])
> -      fi
> +      # libuuid not found, check for uuid_create in libc.
> +      AC_CHECK_LIB([c], [uuid_create],
> +      [
> +        AC_DEFINE_UNQUOTED([BABELTRACE_HAVE_LIBC_UUID], 1, [Has libc uuid support.])
> +        link_with_libc_uuid=yes
> +      ],
> +      [
> +        # for MinGW32 we have our own internal implemenation of uuid using Windows functions.
> +        if test "x$MINGW32" = xno; then
> +          AC_MSG_ERROR([Cannot find libuuid uuid_generate nor libc uuid_create. Use [LDFLAGS]=-Ldir to specify their location.])
> +        fi
> +      ])
>      ])
>    ])
>  ])
> --
> 2.8.3
>
> _______________________________________________
> lttng-dev mailing list
> lttng-dev at lists.lttng.org
> https://lists.lttng.org/cgi-bin/mailman/listinfo/lttng-dev
Samuel Martin June 14, 2016, 6:21 a.m. UTC | #3
Hi Jérémie,

On Tue, Jun 14, 2016 at 1:21 AM, Jérémie Galarneau
<jeremie.galarneau at efficios.com> wrote:
> On Wed, Jun 1, 2016 at 3:56 PM, Samuel Martin <s.martin49 at gmail.com> wrote:
>> This change adds uuid detection using pkg-config helper before falling
>> back on the standard AC_CHECK_LIB detection for platforms missing
>> pkg-config.
>>
>> AC_CHECK_LIB function achieves its test by trying to link against the
>> requested library, without taking care of its dependency
>> requirements/flags that may differ between different targets.
>> Therefore, in case of static build, it can fail on the uuid detection
>> like [1], because the uuid's dependency flags (regarding gettext) are
>> missing.
>
> Hi Samuel,
>
> The same requirements seem to exist for glib (gettext), does the
> change need to be made for it also?
Maybe, I did not trigger this in my test (certainly because fix the
first error was enough to provide all deps the others need...)
I'll check it and report back here.

Regards,
Samuel Martin June 26, 2016, 4:26 p.m. UTC | #4
Hi Jérémie,

On Tue, Jun 14, 2016 at 8:21 AM, Samuel Martin <s.martin49 at gmail.com> wrote:
> Hi Jérémie,
>
> On Tue, Jun 14, 2016 at 1:21 AM, Jérémie Galarneau
> <jeremie.galarneau at efficios.com> wrote:
>> On Wed, Jun 1, 2016 at 3:56 PM, Samuel Martin <s.martin49 at gmail.com> wrote:
>>> This change adds uuid detection using pkg-config helper before falling
>>> back on the standard AC_CHECK_LIB detection for platforms missing
>>> pkg-config.
>>>
>>> AC_CHECK_LIB function achieves its test by trying to link against the
>>> requested library, without taking care of its dependency
>>> requirements/flags that may differ between different targets.
>>> Therefore, in case of static build, it can fail on the uuid detection
>>> like [1], because the uuid's dependency flags (regarding gettext) are
>>> missing.
>>
>> Hi Samuel,
>>
>> The same requirements seem to exist for glib (gettext), does the
>> change need to be made for it also?
> Maybe, I did not trigger this in my test (certainly because fix the
> first error was enough to provide all deps the others need...)
> I'll check it and report back here.

Sorry for being so long :-/

AFAICS, the glib dependency is already correctly handle since it
already and unconditionally uses PKG_CHECK_MODULES to set its LIBS and
CFLAGS variables [1]; so, the gettext/libintl dependency flags are
already and properly set when it is needed.

[1] http://git.efficios.com/?p=babeltrace.git;a=blob;f=configure.ac;h=84f9000d83324ed098980f250632d566f42b1701;hb=HEAD#l303

BR,
Jérémie Galarneau July 25, 2016, 7:22 p.m. UTC | #5
Merged in master and stable-1.4, thanks!

Jérémie

On Sun, Jun 26, 2016 at 12:26 PM, Samuel Martin <s.martin49 at gmail.com> wrote:
> Hi Jérémie,
>
> On Tue, Jun 14, 2016 at 8:21 AM, Samuel Martin <s.martin49 at gmail.com> wrote:
>> Hi Jérémie,
>>
>> On Tue, Jun 14, 2016 at 1:21 AM, Jérémie Galarneau
>> <jeremie.galarneau at efficios.com> wrote:
>>> On Wed, Jun 1, 2016 at 3:56 PM, Samuel Martin <s.martin49 at gmail.com> wrote:
>>>> This change adds uuid detection using pkg-config helper before falling
>>>> back on the standard AC_CHECK_LIB detection for platforms missing
>>>> pkg-config.
>>>>
>>>> AC_CHECK_LIB function achieves its test by trying to link against the
>>>> requested library, without taking care of its dependency
>>>> requirements/flags that may differ between different targets.
>>>> Therefore, in case of static build, it can fail on the uuid detection
>>>> like [1], because the uuid's dependency flags (regarding gettext) are
>>>> missing.
>>>
>>> Hi Samuel,
>>>
>>> The same requirements seem to exist for glib (gettext), does the
>>> change need to be made for it also?
>> Maybe, I did not trigger this in my test (certainly because fix the
>> first error was enough to provide all deps the others need...)
>> I'll check it and report back here.
>
> Sorry for being so long :-/
>
> AFAICS, the glib dependency is already correctly handle since it
> already and unconditionally uses PKG_CHECK_MODULES to set its LIBS and
> CFLAGS variables [1]; so, the gettext/libintl dependency flags are
> already and properly set when it is needed.
>
> [1] http://git.efficios.com/?p=babeltrace.git;a=blob;f=configure.ac;h=84f9000d83324ed098980f250632d566f42b1701;hb=HEAD#l303
>
> BR,
>
> --
> Samuel
diff mbox

Patch

diff --git a/configure.ac b/configure.ac
index 63a7548..f923edb 100644
--- a/configure.ac
+++ b/configure.ac
@@ -163,24 +163,35 @@  AC_CHECK_FUNCS([uuid_generate],
   link_with_libuuid=no
 ],
 [
-  # Check for libuuid
-  AC_CHECK_LIB([uuid], [uuid_generate],
+  # First, check the pkg-config module is available, otherwise explicitly check
+  # for libuuid, or uuid support in the C-library.
+  PKG_CHECK_MODULES([UUID], [uuid],
   [
+    LIBS="${UUID_LIBS} ${LIBS}"
+    CFLAGS="${CFLAGS} ${UUID_CFLAGS}"
     AC_DEFINE_UNQUOTED([BABELTRACE_HAVE_LIBUUID], 1, [Has libuuid support.])
     link_with_libuuid=yes
   ],
   [
-    # libuuid not found, check for uuid_create in libc.
-    AC_CHECK_LIB([c], [uuid_create],
+    # Check for libuuid
+    AC_CHECK_LIB([uuid], [uuid_generate],
     [
-      AC_DEFINE_UNQUOTED([BABELTRACE_HAVE_LIBC_UUID], 1, [Has libc uuid support.])
-      link_with_libc_uuid=yes
+      AC_DEFINE_UNQUOTED([BABELTRACE_HAVE_LIBUUID], 1, [Has libuuid support.])
+      link_with_libuuid=yes
     ],
     [
-      # for MinGW32 we have our own internal implemenation of uuid using Windows functions.
-      if test "x$MINGW32" = xno; then
-        AC_MSG_ERROR([Cannot find libuuid uuid_generate nor libc uuid_create. Use [LDFLAGS]=-Ldir to specify their location.])
-      fi
+      # libuuid not found, check for uuid_create in libc.
+      AC_CHECK_LIB([c], [uuid_create],
+      [
+        AC_DEFINE_UNQUOTED([BABELTRACE_HAVE_LIBC_UUID], 1, [Has libc uuid support.])
+        link_with_libc_uuid=yes
+      ],
+      [
+        # for MinGW32 we have our own internal implemenation of uuid using Windows functions.
+        if test "x$MINGW32" = xno; then
+          AC_MSG_ERROR([Cannot find libuuid uuid_generate nor libc uuid_create. Use [LDFLAGS]=-Ldir to specify their location.])
+        fi
+      ])
     ])
   ])
 ])