Skip to contentSkip to conversation

package/zeromq: enable kernel-based feature flags

PATCH Superseded Lionel Orry 3 participants 7 messages Apr 21, 2015 – Apr 22, 2015

v1 of 3 Superseded Latest is v3 →

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 package/zeromq: enable kernel-based feature flags

The current configuration system does not check for cached variables for these flags, and thus they are always disabled when cross-compiling. This patch fixes the configuration system to use cached variables and enables them at configuration time.

---
 ...e.m4-make-kernel-specific-flags-cacheable.patch | 204 +++++++++++++++++++++
 package/zeromq/zeromq.mk                           |  10 +
 2 files changed, 214 insertions(+)
 create mode 100644 package/zeromq/0002-acinclude.m4-make-kernel-specific-flags-cacheable.patch
package/zeromq/0002-acinclude.m4-make-kernel-specific-flags-cacheable.patch new file +204 -0
new file mode 100644
index 0000000..9b6e808
@@ -0,0 +1,204 @@
+From 2eee4dd2b1668124f377f6da1d511249086a1449 Mon Sep 17 00:00:00 2001
+From: Lionel Orry <[email protected]>
+Date: Fri, 6 Feb 2015 09:45:21 +0100
+Subject: [PATCH 1/1] acinclude.m4: make kernel-specific flags cacheable
+
+Specifically when cross-compiling, one can be willing to force these
+variable values using the environment of a config.cache file. This
+commit makes this possible.
+
+The affected variables are:
+
+* libzmq_cv_sock_cloexec
+* libzmq_cv_so_keepalive
+* libzmq_cv_tcp_keepcnt
+* libzmq_cv_tcp_keepidle
+* libzmq_cv_tcp_keepintvl
+* libzmq_cv_tcp_keepalive
+
+Signed-off-by: Lionel Orry <[email protected]>
+---
+ acinclude.m4 | 84 ++++++++++++++++++++++++++++++++++--------------------------
+ 1 file changed, 48 insertions(+), 36 deletions(-)
+
+diff --git a/acinclude.m4 b/acinclude.m4
+index c5c2748..b40f0c1 100644
+--- a/acinclude.m4
++++ b/acinclude.m4
+@@ -586,8 +586,8 @@ dnl # LIBZMQ_CHECK_SOCK_CLOEXEC([action-if-found], [action-if-not-found])
+ dnl # Check if SOCK_CLOEXEC is supported                                           #
+ dnl ################################################################################
+ AC_DEFUN([LIBZMQ_CHECK_SOCK_CLOEXEC], [{
+-    AC_MSG_CHECKING(whether SOCK_CLOEXEC is supported)
+-    AC_TRY_RUN([/* SOCK_CLOEXEC test */
++    AC_CACHE_CHECK([whether SOCK_CLOEXEC is supported], [libzmq_cv_sock_cloexec],
++        [AC_TRY_RUN([/* SOCK_CLOEXEC test */
+ #include <sys/types.h>
+ #include <sys/socket.h>
+ 
+@@ -596,11 +596,13 @@ int main (int argc, char *argv [])
+     int s = socket (PF_INET, SOCK_STREAM | SOCK_CLOEXEC, 0);
+     return (s == -1);
+ }
+-    ],
+-    [AC_MSG_RESULT(yes) ; libzmq_cv_sock_cloexec="yes" ; $1],
+-    [AC_MSG_RESULT(no)  ; libzmq_cv_sock_cloexec="no"  ; $2],
+-    [AC_MSG_RESULT(not during cross-compile) ; libzmq_cv_sock_cloexec="no"]
++        ],
++        [libzmq_cv_sock_cloexec="yes"],
++        [libzmq_cv_sock_cloexec="no"],
++        [libzmq_cv_sock_cloexec="not during cross-compile"]
++        )]
+     )
++    AS_IF([test "x$libzmq_cv_sock_cloexec" = "xyes"], [$1], [$2])
+ }])
+ 
+ dnl ################################################################################
+@@ -608,8 +610,8 @@ dnl # LIBZMQ_CHECK_SO_KEEPALIVE([action-if-found], [action-if-not-found])
+ dnl # Check if SO_KEEPALIVE is supported                                           #
+ dnl ################################################################################
+ AC_DEFUN([LIBZMQ_CHECK_SO_KEEPALIVE], [{
+-    AC_MSG_CHECKING(whether SO_KEEPALIVE is supported)
+-    AC_TRY_RUN([/* SO_KEEPALIVE test */
++    AC_CACHE_CHECK([whether SO_KEEPALIVE is supported], [libzmq_cv_so_keepalive],
++        [AC_TRY_RUN([/* SO_KEEPALIVE test */
+ #include <sys/types.h>
+ #include <sys/socket.h>
+ 
+@@ -621,11 +623,13 @@ int main (int argc, char *argv [])
+         ((rc = setsockopt (s, SOL_SOCKET, SO_KEEPALIVE, (char*) &opt, sizeof (int))) == -1)
+     );
+ }
+-    ],
+-    [AC_MSG_RESULT(yes) ; libzmq_cv_so_keepalive="yes" ; $1],
+-    [AC_MSG_RESULT(no)  ; libzmq_cv_so_keepalive="no"  ; $2],
+-    [AC_MSG_RESULT(not during cross-compile) ; libzmq_cv_so_keepalive="no"]
++        ],
++        [libzmq_cv_so_keepalive="yes"],
++        [libzmq_cv_so_keepalive="no"],
++        [libzmq_cv_so_keepalive="not during cross-compile"]
++        )]
+     )
++    AS_IF([test "x$libzmq_cv_so_keepalive" = "xyes"], [$1], [$2])
+ }])
+ 
+ dnl ################################################################################
+@@ -633,8 +637,8 @@ dnl # LIBZMQ_CHECK_TCP_KEEPCNT([action-if-found], [action-if-not-found])
+ dnl # Check if TCP_KEEPCNT is supported                                            #
+ dnl ################################################################################
+ AC_DEFUN([LIBZMQ_CHECK_TCP_KEEPCNT], [{
+-    AC_MSG_CHECKING(whether TCP_KEEPCNT is supported)
+-    AC_TRY_RUN([/* TCP_KEEPCNT test */
++    AC_CACHE_CHECK([whether TCP_KEEPCNT is supported], [libzmq_cv_tcp_keepcnt],
++        [AC_TRY_RUN([/* TCP_KEEPCNT test */
+ #include <sys/types.h>
+ #include <sys/socket.h>
+ #include <netinet/in.h>
+@@ -649,11 +653,13 @@ int main (int argc, char *argv [])
+         ((rc = setsockopt (s, IPPROTO_TCP, TCP_KEEPCNT, (char*) &opt, sizeof (int))) == -1)
+     );
+ }
+-    ],
+-    [AC_MSG_RESULT(yes) ; libzmq_cv_tcp_keepcnt="yes" ; $1],
+-    [AC_MSG_RESULT(no)  ; libzmq_cv_tcp_keepcnt="no"  ; $2],
+-    [AC_MSG_RESULT(not during cross-compile) ; libzmq_cv_tcp_keepcnt="no"]
++        ],
++        [libzmq_cv_tcp_keepcnt="yes"],
++        [libzmq_cv_tcp_keepcnt="no"],
++        [libzmq_cv_tcp_keepcnt="not during cross-compile"]
++        )]
+     )
++    AS_IF([test "x$libzmq_cv_tcp_keepcnt" = "xyes"], [$1], [$2])
+ }])
+ 
+ dnl ################################################################################
+@@ -661,8 +667,8 @@ dnl # LIBZMQ_CHECK_TCP_KEEPIDLE([action-if-found], [action-if-not-found])
+ dnl # Check if TCP_KEEPIDLE is supported                                           #
+ dnl ################################################################################
+ AC_DEFUN([LIBZMQ_CHECK_TCP_KEEPIDLE], [{
+-    AC_MSG_CHECKING(whether TCP_KEEPIDLE is supported)
+-    AC_TRY_RUN([/* TCP_KEEPIDLE test */
++    AC_CACHE_CHECK([whether TCP_KEEPIDLE is supported], [libzmq_cv_tcp_keepidle],
++        [AC_TRY_RUN([/* TCP_KEEPIDLE test */
+ #include <sys/types.h>
+ #include <sys/socket.h>
+ #include <netinet/in.h>
+@@ -677,11 +683,13 @@ int main (int argc, char *argv [])
+         ((rc = setsockopt (s, IPPROTO_TCP, TCP_KEEPIDLE, (char*) &opt, sizeof (int))) == -1)
+     );
+ }
+-    ],
+-    [AC_MSG_RESULT(yes) ; libzmq_cv_tcp_keepidle="yes" ; $1],
+-    [AC_MSG_RESULT(no)  ; libzmq_cv_tcp_keepidle="no"  ; $2],
+-    [AC_MSG_RESULT(not during cross-compile) ; libzmq_cv_tcp_keepidle="no"]
++        ],
++        [libzmq_cv_tcp_keepidle="yes"],
++        [libzmq_cv_tcp_keepidle="no"],
++        [libzmq_cv_tcp_keepidle="not during cross-compile"]
++        )]
+     )
++    AS_IF([test "x$libzmq_cv_tcp_keepidle" = "xyes"], [$1], [$2])
+ }])
+ 
+ dnl ################################################################################
+@@ -689,8 +697,8 @@ dnl # LIBZMQ_CHECK_TCP_KEEPINTVL([action-if-found], [action-if-not-found])
+ dnl # Check if TCP_KEEPINTVL is supported                                           #
+ dnl ################################################################################
+ AC_DEFUN([LIBZMQ_CHECK_TCP_KEEPINTVL], [{
+-    AC_MSG_CHECKING(whether TCP_KEEPINTVL is supported)
+-    AC_TRY_RUN([/* TCP_KEEPINTVL test */
++    AC_CACHE_CHECK([whether TCP_KEEPINTVL is supported], [libzmq_cv_tcp_keepintvl],
++        [AC_TRY_RUN([/* TCP_KEEPINTVL test */
+ #include <sys/types.h>
+ #include <sys/socket.h>
+ #include <netinet/in.h>
+@@ -705,11 +713,13 @@ int main (int argc, char *argv [])
+         ((rc = setsockopt (s, IPPROTO_TCP, TCP_KEEPINTVL, (char*) &opt, sizeof (int))) == -1)
+     );
+ }
+-    ],
+-    [AC_MSG_RESULT(yes) ; libzmq_cv_tcp_keepintvl="yes" ; $1],
+-    [AC_MSG_RESULT(no)  ; libzmq_cv_tcp_keepintvl="no"  ; $2],
+-    [AC_MSG_RESULT(not during cross-compile) ; libzmq_cv_tcp_keepintvl="no"]
++        ],
++        [libzmq_cv_tcp_keepintvl="yes"],
++        [libzmq_cv_tcp_keepintvl="no"],
++        [libzmq_cv_tcp_keepintvl="not during cross-compile"]
++        )]
+     )
++    AS_IF([test "x$libzmq_cv_tcp_keepintvl" = "xyes"], [$1], [$2])
+ }])
+ 
+ dnl ################################################################################
+@@ -717,8 +727,8 @@ dnl # LIBZMQ_CHECK_TCP_KEEPALIVE([action-if-found], [action-if-not-found])
+ dnl # Check if TCP_KEEPALIVE is supported                                          #
+ dnl ################################################################################
+ AC_DEFUN([LIBZMQ_CHECK_TCP_KEEPALIVE], [{
+-    AC_MSG_CHECKING(whether TCP_KEEPALIVE is supported)
+-    AC_TRY_RUN([/* TCP_KEEPALIVE test */
++    AC_CACHE_CHECK([whether TCP_KEEPALIVE is supported], [libzmq_cv_tcp_keepalive],
++        [AC_TRY_RUN([/* TCP_KEEPALIVE test */
+ #include <sys/types.h>
+ #include <sys/socket.h>
+ #include <netinet/in.h>
+@@ -733,11 +743,13 @@ int main (int argc, char *argv [])
+         ((rc = setsockopt (s, IPPROTO_TCP, TCP_KEEPALIVE, (char*) &opt, sizeof (int))) == -1)
+     );
+ }
+-    ],
+-    [AC_MSG_RESULT(yes) ; libzmq_cv_tcp_keepalive="yes" ; $1],
+-    [AC_MSG_RESULT(no)  ; libzmq_cv_tcp_keepalive="no"  ; $2],
+-    [AC_MSG_RESULT(not during cross-compile) ; libzmq_cv_tcp_keepalive="no"]
++        ],
++        [libzmq_cv_tcp_keepalive="yes"],
++        [libzmq_cv_tcp_keepalive="no"],
++        [libzmq_cv_tcp_keepalive="not during cross-compile"]
++        )]
+     )
++    AS_IF([test "x$libzmq_cv_tcp_keepalive" = "xyes"], [$1], [$2])
+ }])
+ 
+ dnl ################################################################################
+-- 
+2.1.0
+
package/zeromq/zeromq.mk +10 -0
index dbd6fc7..aa03fc9 100644
@@ -11,8 +11,18 @@ ZEROMQ_DEPENDENCIES = util-linux
 ZEROMQ_LICENSE = LGPLv3+ with exceptions
 ZEROMQ_LICENSE_FILES = COPYING COPYING.LESSER
 # For 0001-tests-disable-test_fork-if-fork-is-not-available.patch
+# and 0002-acinclude.m4-make-kernel-specific-flags-cacheable.patch
 ZEROMQ_AUTORECONF = YES
 
+# Assume these flags are always available. It is true, at least for
+# SOCK_CLOEXEC, since linux v2.6.27.
+# Note: the flag TCP_KEEPALIVE is NOT available so we do not include it.
+ZEROMQ_CONF_ENV = libzmq_cv_sock_cloexec=yes \
+				  libzmq_cv_so_keepalive=yes \
+				  libzmq_cv_tcp_keepcnt=yes \
+				  libzmq_cv_tcp_keepidle=yes \
+				  libzmq_cv_tcp_keepintvl=yes
+
 # Only tools/curve_keygen.c needs this, but it doesn't hurt to pass it
 # for the rest of the build as well (which automatically includes stdc++).
 ifeq ($(BR2_STATIC_LIBS),y)
Signature · 1 line
2.1.0
#1 lore raw

PATCH 1/1 package/zeromq: enable kernel-based feature flags

Dear Lionel Orry,

Quoted 27 lines · Lionel Orry

The current configuration system does not check for cached variables for these flags, and thus they are always disabled when cross-compiling. This patch fixes the configuration system to use cached variables and enables them at configuration time.

---
 ...e.m4-make-kernel-specific-flags-cacheable.patch | 204 +++++++++++++++++++++
 package/zeromq/zeromq.mk                           |  10 +
 2 files changed, 214 insertions(+)
 create mode 100644 package/zeromq/0002-acinclude.m4-make-kernel-specific-flags-cacheable.patch
package/zeromq/0002-acinclude.m4-make-kernel-specific-flags-cacheable.patch new file +9 -0
new file mode 100644
index 0000000..9b6e808
@@ -0,0 +1,204 @@
+From 2eee4dd2b1668124f377f6da1d511249086a1449 Mon Sep 17 00:00:00 2001
+From: Lionel Orry <[email protected]>
+Date: Fri, 6 Feb 2015 09:45:21 +0100
+Subject: [PATCH 1/1] acinclude.m4: make kernel-specific flags cacheable
+
+Specifically when cross-compiling, one can be willing to force these
+variable values using the environment of a config.cache file. This
+commit makes this possible.
+

package/zeromq/0002-acinclude.m4-make-kernel-specific-flags-cacheable.patch line 19

Quoted 10 lines
package/zeromq/0002-acinclude.m4-make-kernel-specific-flags-cacheable.patch new file +10 -0
+The affected variables are:
+
+* libzmq_cv_sock_cloexec
+* libzmq_cv_so_keepalive
+* libzmq_cv_tcp_keepcnt
+* libzmq_cv_tcp_keepidle
+* libzmq_cv_tcp_keepintvl
+* libzmq_cv_tcp_keepalive
+
+Signed-off-by: Lionel Orry <[email protected]>

Could you state whether this patch is upstream or not?

package/zeromq/0002-acinclude.m4-make-kernel-specific-flags-cacheable.patch line 24

Quoted 5 lines
package/zeromq/0002-acinclude.m4-make-kernel-specific-flags-cacheable.patch new file +5 -0
+# Assume these flags are always available. It is true, at least for
+# SOCK_CLOEXEC, since linux v2.6.27.
+# Note: the flag TCP_KEEPALIVE is NOT available so we do not include it.
+ZEROMQ_CONF_ENV = libzmq_cv_sock_cloexec=yes \
+				  libzmq_cv_so_keepalive=yes \

Only one tab for indentation on continuation lines.

Also, I must say I still don't quite understand why an AC_TRY_RUN() is needed here. Isn't an AC_TRY_LINK() to test if the relevant flags exists sufficient?

Thanks,

Thomas

Signature · 3 lines
Thomas Petazzoni, CTO, Free Electrons
Embedded Linux, Kernel and Android engineering
http://free-electrons.com
#2 lore raw

PATCH 1/1 package/zeromq: enable kernel-based feature flags

Hello,

Quoted 34 lines · Thomas Petazzoni

Dear Lionel Orry,

Quoted 31 lines · Lionel Orry

The current configuration system does not check for cached variables for these flags, and thus they are always disabled when cross-compiling. This patch fixes the configuration system to use cached variables and enables them at configuration time.

---
 ...e.m4-make-kernel-specific-flags-cacheable.patch | 204 +++++++++++++++++++++
 package/zeromq/zeromq.mk                           |  10 +
 2 files changed, 214 insertions(+)
 create mode 100644 package/zeromq/0002-acinclude.m4-make-kernel-specific-flags-cacheable.patch
package/zeromq/0002-acinclude.m4-make-kernel-specific-flags-cacheable.patch new file +13 -0
new file mode 100644
index 0000000..9b6e808
@@ -0,0 +1,204 @@
+From 2eee4dd2b1668124f377f6da1d511249086a1449 Mon Sep 17 00:00:00 2001
+From: Lionel Orry <[email protected]>
+Date: Fri, 6 Feb 2015 09:45:21 +0100
+Subject: [PATCH 1/1] acinclude.m4: make kernel-specific flags cacheable
+
+Specifically when cross-compiling, one can be willing to force these
+variable values using the environment of a config.cache file. This
+commit makes this possible.
+
+The affected variables are:
+
+* libzmq_cv_sock_cloexec
+* libzmq_cv_so_keepalive
Quoted 8 lines

package/zeromq/0002-acinclude.m4-make-kernel-specific-flags-cacheable.patch line 19

Quoted 6 lines
package/zeromq/0002-acinclude.m4-make-kernel-specific-flags-cacheable.patch new file +6 -0
+* libzmq_cv_tcp_keepcnt
+* libzmq_cv_tcp_keepidle
+* libzmq_cv_tcp_keepintvl
+* libzmq_cv_tcp_keepalive
+
+Signed-off-by: Lionel Orry <[email protected]>

Could you state whether this patch is upstream or not?

This patch is upstream in v4.1.x branch, so it will be included upstream as soon as zeromq v4.1.0 is released.

Quoted 8 lines

package/zeromq/0002-acinclude.m4-make-kernel-specific-flags-cacheable.patch line 24

Quoted 6 lines
package/zeromq/0002-acinclude.m4-make-kernel-specific-flags-cacheable.patch new file +5 -0
+# Assume these flags are always available. It is true, at least for
+# SOCK_CLOEXEC, since linux v2.6.27.
+# Note: the flag TCP_KEEPALIVE is NOT available so we do not include it.
+ZEROMQ_CONF_ENV = libzmq_cv_sock_cloexec=yes \
+                               libzmq_cv_so_keepalive=yes \

Only one tab for indentation on continuation lines.

Will correct.

Quoted 4 lines

Also, I must say I still don't quite understand why an AC_TRY_RUN() is needed here. Isn't an AC_TRY_LINK() to test if the relevant flags exists sufficient?

Arnout stated something about it:
http://article.gmane.org/gmane.comp.lib.uclibc.buildroot/110044

What do you think about it ?

Quoted 8 lines

Thanks,

Thomas
--
Thomas Petazzoni, CTO, Free Electrons
Embedded Linux, Kernel and Android engineering
http://free-electrons.com

Regards,
Lionel

#3 lore raw

PATCH 1/1 package/zeromq: enable kernel-based feature flags

Quoted 47 lines · Lionel Orry

Hello,

Quoted 34 lines · Thomas Petazzoni

Dear Lionel Orry,

Quoted 31 lines · Lionel Orry

The current configuration system does not check for cached variables for these flags, and thus they are always disabled when cross-compiling. This patch fixes the configuration system to use cached variables and enables them at configuration time.

---
 ...e.m4-make-kernel-specific-flags-cacheable.patch | 204 +++++++++++++++++++++
 package/zeromq/zeromq.mk                           |  10 +
 2 files changed, 214 insertions(+)
 create mode 100644 package/zeromq/0002-acinclude.m4-make-kernel-specific-flags-cacheable.patch
package/zeromq/0002-acinclude.m4-make-kernel-specific-flags-cacheable.patch new file +13 -0
new file mode 100644
index 0000000..9b6e808
@@ -0,0 +1,204 @@
+From 2eee4dd2b1668124f377f6da1d511249086a1449 Mon Sep 17 00:00:00 2001
+From: Lionel Orry <[email protected]>
+Date: Fri, 6 Feb 2015 09:45:21 +0100
+Subject: [PATCH 1/1] acinclude.m4: make kernel-specific flags cacheable
+
+Specifically when cross-compiling, one can be willing to force these
+variable values using the environment of a config.cache file. This
+commit makes this possible.
+
+The affected variables are:
+
+* libzmq_cv_sock_cloexec
+* libzmq_cv_so_keepalive
Quoted 8 lines

package/zeromq/0002-acinclude.m4-make-kernel-specific-flags-cacheable.patch line 19

Quoted 6 lines
package/zeromq/0002-acinclude.m4-make-kernel-specific-flags-cacheable.patch new file +6 -0
+* libzmq_cv_tcp_keepcnt
+* libzmq_cv_tcp_keepidle
+* libzmq_cv_tcp_keepintvl
+* libzmq_cv_tcp_keepalive
+
+Signed-off-by: Lionel Orry <[email protected]>

Could you state whether this patch is upstream or not?

Quoted 2 lines

This patch is upstream in v4.1.x branch, so it will be included upstream as soon as zeromq v4.1.0 is released.

If the patch is already upstream, and the upstream patch applies cleanly,
please use the upstream patch instead (adding you Sob if necessary and adding a reference to the upstream commit sha). If the upstream patch does not apply cleanly you can keep using this custom patch, but please still add a reference to the upstream sha.

Regards,
Arnout

[snip]

Signature · 6 lines
Arnout Vandecappelle                          arnout at mind be
Senior Embedded Software Architect            +32-16-286500
Essensium/Mind                                http://www.mind.be
G.Geenslaan 9, 3001 Leuven, Belgium           BE 872 984 063 RPR Leuven
LinkedIn profile: http://www.linkedin.com/in/arnoutvandecappelle
GPG fingerprint:  7CB5 E4CC 6C2E EFD4 6E3D A754 F963 ECAB 2450 2F1F
#4 lore raw

PATCH 1/1 package/zeromq: enable kernel-based feature flags

Hi Arnout,

Quoted 48 lines · Arnout Vandecappelle
Quoted 47 lines · Lionel Orry

Hello,

Quoted 42 lines · Thomas Petazzoni

Dear Lionel Orry,

Quoted 27 lines · Lionel Orry

The current configuration system does not check for cached variables for these flags, and thus they are always disabled when cross-compiling. This patch fixes the configuration system to use cached variables and enables them at configuration time.

---
 ...e.m4-make-kernel-specific-flags-cacheable.patch | 204 +++++++++++++++++++++
 package/zeromq/zeromq.mk                           |  10 +
 2 files changed, 214 insertions(+)
 create mode 100644 package/zeromq/0002-acinclude.m4-make-kernel-specific-flags-cacheable.patch
package/zeromq/0002-acinclude.m4-make-kernel-specific-flags-cacheable.patch new file +9 -0
new file mode 100644
index 0000000..9b6e808
@@ -0,0 +1,204 @@
+From 2eee4dd2b1668124f377f6da1d511249086a1449 Mon Sep 17 00:00:00 2001
+From: Lionel Orry <[email protected]>
+Date: Fri, 6 Feb 2015 09:45:21 +0100
+Subject: [PATCH 1/1] acinclude.m4: make kernel-specific flags cacheable
+
+Specifically when cross-compiling, one can be willing to force these
+variable values using the environment of a config.cache file. This
+commit makes this possible.
+

package/zeromq/0002-acinclude.m4-make-kernel-specific-flags-cacheable.patch line 19

Quoted 10 lines
package/zeromq/0002-acinclude.m4-make-kernel-specific-flags-cacheable.patch new file +10 -0
+The affected variables are:
+
+* libzmq_cv_sock_cloexec
+* libzmq_cv_so_keepalive
+* libzmq_cv_tcp_keepcnt
+* libzmq_cv_tcp_keepidle
+* libzmq_cv_tcp_keepintvl
+* libzmq_cv_tcp_keepalive
+
+Signed-off-by: Lionel Orry <[email protected]>

Could you state whether this patch is upstream or not?

Quoted 8 lines
Quoted 2 lines

This patch is upstream in v4.1.x branch, so it will be included upstream as soon as zeromq v4.1.0 is released.

If the patch is already upstream, and the upstream patch applies cleanly,
please use the upstream patch instead (adding you Sob if necessary and adding a reference to the upstream commit sha). If the upstream patch does not apply cleanly you can keep using this custom patch, but please still add a reference to the upstream sha.

It applies successfully, with a 20 lines offset. Should I use the upstream patch in these conditions ?

Another question, how do I make a proper buildroot patch file from a cmmit ? Is there a recommended way ?

I did, on libzmq repository:

git show 9daf6 > 0002-acinclude.m4-make-kernel-specific-flags-cacheable.patch

And tested this patch. Is this correct ?

Quoted 14 lines

Regards,
Arnout

[snip]

--

Arnout Vandecappelle                          arnout at mind be
Senior Embedded Software Architect            +32-16-286500
Essensium/Mind                                http://www.mind.be
G.Geenslaan 9, 3001 Leuven, Belgium           BE 872 984 063 RPR Leuven
LinkedIn profile: http://www.linkedin.com/in/arnoutvandecappelle
GPG fingerprint:  7CB5 E4CC 6C2E EFD4 6E3D A754 F963 ECAB 2450 2F1F
#5 lore raw

PATCH 1/1 package/zeromq: enable kernel-based feature flags

Dear Lionel Orry,

Quoted 5 lines · Lionel Orry

I did, on libzmq repository:

git show 9daf6 > 0002-acinclude.m4-make-kernel-specific-flags-cacheable.patch

And tested this patch. Is this correct ?

Yes, this is OK. You could also do something like:

git checkout -b buildroot 4.0.5
git cherry-pick 9daf6
git format-patch HEAD^

This will "rebase" the patch on top of 4.0.5, which will allow to avoid the 20 lines offset. You can also edit the patch to add the upstream commit ID.

Best regards,

Thomas

Signature · 3 lines
Thomas Petazzoni, CTO, Free Electrons
Embedded Linux, Kernel and Android engineering
http://free-electrons.com
#6 lore raw

PATCH 1/1 package/zeromq: enable kernel-based feature flags

In reply to Lionel Orry

Hi all,

Quoted 47 lines · Lionel Orry

Hello,

Quoted 34 lines · Thomas Petazzoni

Dear Lionel Orry,

Quoted 31 lines · Lionel Orry

The current configuration system does not check for cached variables for these flags, and thus they are always disabled when cross-compiling. This patch fixes the configuration system to use cached variables and enables them at configuration time.

---
 ...e.m4-make-kernel-specific-flags-cacheable.patch | 204 +++++++++++++++++++++
 package/zeromq/zeromq.mk                           |  10 +
 2 files changed, 214 insertions(+)
 create mode 100644 package/zeromq/0002-acinclude.m4-make-kernel-specific-flags-cacheable.patch
package/zeromq/0002-acinclude.m4-make-kernel-specific-flags-cacheable.patch new file +13 -0
new file mode 100644
index 0000000..9b6e808
@@ -0,0 +1,204 @@
+From 2eee4dd2b1668124f377f6da1d511249086a1449 Mon Sep 17 00:00:00 2001
+From: Lionel Orry <[email protected]>
+Date: Fri, 6 Feb 2015 09:45:21 +0100
+Subject: [PATCH 1/1] acinclude.m4: make kernel-specific flags cacheable
+
+Specifically when cross-compiling, one can be willing to force these
+variable values using the environment of a config.cache file. This
+commit makes this possible.
+
+The affected variables are:
+
+* libzmq_cv_sock_cloexec
+* libzmq_cv_so_keepalive
Quoted 8 lines

package/zeromq/0002-acinclude.m4-make-kernel-specific-flags-cacheable.patch line 19

Quoted 6 lines
package/zeromq/0002-acinclude.m4-make-kernel-specific-flags-cacheable.patch new file +6 -0
+* libzmq_cv_tcp_keepcnt
+* libzmq_cv_tcp_keepidle
+* libzmq_cv_tcp_keepintvl
+* libzmq_cv_tcp_keepalive
+
+Signed-off-by: Lionel Orry <[email protected]>

Could you state whether this patch is upstream or not?

Quoted 3 lines

This patch is upstream in v4.1.x branch, so it will be included upstream as soon as zeromq v4.1.0 is released.

My bad, I made a mistake here : not v4.1.x branch, but master branch of libzmq which will become v4.2.x branch.
So it will not be included before v4.2.0 is released.

Sorry for the typo...

Quoted 32 lines
Quoted 8 lines

package/zeromq/0002-acinclude.m4-make-kernel-specific-flags-cacheable.patch line 24

Quoted 6 lines
package/zeromq/0002-acinclude.m4-make-kernel-specific-flags-cacheable.patch new file +5 -0
+# Assume these flags are always available. It is true, at least for
+# SOCK_CLOEXEC, since linux v2.6.27.
+# Note: the flag TCP_KEEPALIVE is NOT available so we do not include it.
+ZEROMQ_CONF_ENV = libzmq_cv_sock_cloexec=yes \
+                               libzmq_cv_so_keepalive=yes \

Only one tab for indentation on continuation lines.

Will correct.

Quoted 4 lines

Also, I must say I still don't quite understand why an AC_TRY_RUN() is needed here. Isn't an AC_TRY_LINK() to test if the relevant flags exists sufficient?

Arnout stated something about it:
http://article.gmane.org/gmane.comp.lib.uclibc.buildroot/110044

What do you think about it ?

Quoted 8 lines

Thanks,

Thomas
--
Thomas Petazzoni, CTO, Free Electrons
Embedded Linux, Kernel and Android engineering
http://free-electrons.com

Regards,
Lionel