Skip to contentSkip to conversation

configure: fix uuid support detection on static build

PATCH Samuel Martin 2 participants 5 messages Jun 11, 2016 – Jul 25, 2016 4 messages not in the archive

lore
Share & tools
lore

A message that is not in the archive (sent off-list or not yet received): [email protected]

#1 lore raw

up!

Quoted 76 lines · Samuel Martin

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

---
 configure.ac | 31 +++++++++++++++++++++----------
 1 file changed, 21 insertions(+), 10 deletions(-)
configure.ac +21 -11
index 63a7548..f923edb 100644
@@ -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

Signature · 5 lines
Samuel
_______________________________________________
lttng-dev mailing list
[email protected]
https://lists.lttng.org/cgi-bin/mailman/listinfo/lttng-dev
#2 lore raw
In reply to a message not in the archive
Quoted 10 lines · Samuel Martin

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

Quoted 70 lines

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

---
 configure.ac | 31 +++++++++++++++++++++----------
 1 file changed, 21 insertions(+), 10 deletions(-)
configure.ac +21 -11
index 63a7548..f923edb 100644
@@ -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
[email protected]
https://lists.lttng.org/cgi-bin/mailman/listinfo/lttng-dev

Signature · 7 lines
Jérémie Galarneau
EfficiOS Inc.
http://www.efficios.com
_______________________________________________
lttng-dev mailing list
[email protected]
https://lists.lttng.org/cgi-bin/mailman/listinfo/lttng-dev

A message that is not in the archive (sent off-list or not yet received): CA+jJMxuRg7U-TuA5sWgW+e8mRf3ebO1BjcQ+1caqHT6ecUOTNw@mail.gmail.com

#4 lore raw

Hi Jérémie,

Quoted 12 lines · Jérémie Galarneau
Quoted 10 lines · Samuel Martin

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.

Quoted 4 lines

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,

Signature · 5 lines
Samuel
_______________________________________________
lttng-dev mailing list
[email protected]
https://lists.lttng.org/cgi-bin/mailman/listinfo/lttng-dev

A message that is not in the archive (sent off-list or not yet received): CAHXCMMLfmjew0zJPzvdfW5nT2GWrJ=WpZkbo8oAB4660EqPgAQ@mail.gmail.com

#6 lore raw

Hi Jérémie,

Quoted 16 lines · Samuel Martin

Hi Jérémie,

Quoted 12 lines · Jérémie Galarneau
Quoted 10 lines · Samuel Martin

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.

Quoted 7 lines
Quoted 4 lines

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,

Signature · 5 lines
Samuel
_______________________________________________
lttng-dev mailing list
[email protected]
https://lists.lttng.org/cgi-bin/mailman/listinfo/lttng-dev

A message that is not in the archive (sent off-list or not yet received): CAHXCMMLp5tBMbo3oEzbY1yqnpGphKYMid+UTfwtr8zdYQvbfKQ@mail.gmail.com

#8 lore raw

Merged in master and stable-1.4, thanks!

Jérémie

Quoted 40 lines · Samuel Martin

Hi Jérémie,

Quoted 16 lines · Samuel Martin

Hi Jérémie,

Quoted 12 lines · Jérémie Galarneau
Quoted 10 lines · Samuel Martin

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.

Quoted 7 lines
Quoted 4 lines

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

Signature · 7 lines
Jérémie Galarneau
EfficiOS Inc.
http://www.efficios.com
_______________________________________________
lttng-dev mailing list
[email protected]
https://lists.lttng.org/cgi-bin/mailman/listinfo/lttng-dev