Message ID | 1436188343-11234-1-git-send-email-gustavo@zacarias.com.ar |
---|---|
State | Accepted |
Headers | show |
Dear Gustavo Zacarias, On Mon, 6 Jul 2015 10:12:23 -0300, Gustavo Zacarias wrote: > +diff -Nura collectd-5.5.0.orig/src/daemon/Makefile.am collectd-5.5.0/src/daemon/Makefile.am > +--- collectd-5.5.0.orig/src/daemon/Makefile.am 2015-07-06 10:01:17.820506239 -0300 > ++++ collectd-5.5.0/src/daemon/Makefile.am 2015-07-06 10:02:03.364054763 -0300 > +@@ -49,7 +49,7 @@ > + collectd_CFLAGS = $(AM_CFLAGS) > + collectd_LDFLAGS = -export-dynamic > + collectd_LDADD = libavltree.la libcommon.la libheap.la -lm > +-collectd_DEPENDENCIES = > ++collectd_DEPENDENCIES = libavltree.la libcommon.la libheap.la Can you try instead to get rid of the empty collectd_DEPENDENCIES definition? Because when undefined foo_DEPENDENCIES automatically contains the contents of foo_LDADD. From http://www.gnu.org/software/automake/manual/html_node/Program-and-Library-Variables.html: """ If _DEPENDENCIES is not supplied, it is computed by Automake. The automatically-assigned value is the contents of _LDADD or _LIBADD, with most configure substitutions, -l, -L, -dlopen and -dlpreopen options removed. The configure substitutions that are left in are only ‘$(LIBOBJS)’ and ‘$(ALLOCA)’; these are left because it is known that they will not cause an invalid value for _DEPENDENCIES to be generated. """ Best regards, Thomas
On 06/07/15 10:22, Thomas Petazzoni wrote: > Dear Gustavo Zacarias, > > On Mon, 6 Jul 2015 10:12:23 -0300, Gustavo Zacarias wrote: > >> +diff -Nura collectd-5.5.0.orig/src/daemon/Makefile.am collectd-5.5.0/src/daemon/Makefile.am >> +--- collectd-5.5.0.orig/src/daemon/Makefile.am 2015-07-06 10:01:17.820506239 -0300 >> ++++ collectd-5.5.0/src/daemon/Makefile.am 2015-07-06 10:02:03.364054763 -0300 >> +@@ -49,7 +49,7 @@ >> + collectd_CFLAGS = $(AM_CFLAGS) >> + collectd_LDFLAGS = -export-dynamic >> + collectd_LDADD = libavltree.la libcommon.la libheap.la -lm >> +-collectd_DEPENDENCIES = >> ++collectd_DEPENDENCIES = libavltree.la libcommon.la libheap.la > > Can you try instead to get rid of the empty collectd_DEPENDENCIES > definition? Because when undefined foo_DEPENDENCIES automatically > contains the contents of foo_LDADD. > > From > http://www.gnu.org/software/automake/manual/html_node/Program-and-Library-Variables.html: > > """ > If _DEPENDENCIES is not supplied, it is computed by Automake. The > automatically-assigned value is the contents of _LDADD or _LIBADD, with > most configure substitutions, -l, -L, -dlopen and -dlpreopen options > removed. The configure substitutions that are left in are only > ‘$(LIBOBJS)’ and ‘$(ALLOCA)’; these are left because it is known that > they will not cause an invalid value for _DEPENDENCIES to be generated. > """ > > Best regards, Hi. That won't work in this case since it's added upon later (if BUILD_WITH_OWN_LIBOCONFIG ... ). Regards.
Dear Gustavo Zacarias, On Mon, 06 Jul 2015 10:33:40 -0300, Gustavo Zacarias wrote: > > """ > > If _DEPENDENCIES is not supplied, it is computed by Automake. The > > automatically-assigned value is the contents of _LDADD or _LIBADD, with > > most configure substitutions, -l, -L, -dlopen and -dlpreopen options > > removed. The configure substitutions that are left in are only > > ‘$(LIBOBJS)’ and ‘$(ALLOCA)’; these are left because it is known that > > they will not cause an invalid value for _DEPENDENCIES to be generated. > > """ > > > > Best regards, > > Hi. > That won't work in this case since it's added upon later (if > BUILD_WITH_OWN_LIBOCONFIG ... ). That same addition should be useless I believe: collectd_LDADD += $(LIBLTDL) $(top_builddir)/src/liboconfig/liboconfig.la collectd_DEPENDENCIES += $(top_builddir)/src/liboconfig/liboconfig.la So LDADD already contains $(top_builddir)/src/liboconfig/liboconfig.la, and LIBLTDL will be -lltdl, which will be ignored for foo_DEPENDENCIES. But oh, well, maybe you don't want to fix the entire collectd build system :-) Thomas
On 06/07/15 10:38, Thomas Petazzoni wrote: > That same addition should be useless I believe: > > collectd_LDADD += $(LIBLTDL) $(top_builddir)/src/liboconfig/liboconfig.la > collectd_DEPENDENCIES += $(top_builddir)/src/liboconfig/liboconfig.la > > So LDADD already contains $(top_builddir)/src/liboconfig/liboconfig.la, > and LIBLTDL will be -lltdl, which will be ignored for foo_DEPENDENCIES. > > But oh, well, maybe you don't want to fix the entire collectd build system :-) In theory it should, but yes i didn't go on a rampage about it since they seem to want automatic dependencies but aren't consistent about it. Let's see what upstream says/applies. Regards.
Dear Gustavo Zacarias, On Mon, 6 Jul 2015 10:12:23 -0300, Gustavo Zacarias wrote: > For version 5.5.x a reorganization was made and some common funtionality > was moved to libraries, however proper dependency accounting isn't > handled in the Makefile thus causing build breakage on some parallel > builds. Fixes: > http://autobuild.buildroot.net/results/a5e/a5e6891e9ea66ac8216d3302da3702770ef7247b/ > > Signed-off-by: Gustavo Zacarias <gustavo@zacarias.com.ar> > --- > ...-libavltree-libcommon-libheap-dependencies.patch | 21 +++++++++++++++++++++ > package/collectd/collectd.mk | 2 ++ > 2 files changed, 23 insertions(+) > create mode 100644 package/collectd/0001-build-add-libavltree-libcommon-libheap-dependencies.patch Applied, thanks. Thomas
diff --git a/package/collectd/0001-build-add-libavltree-libcommon-libheap-dependencies.patch b/package/collectd/0001-build-add-libavltree-libcommon-libheap-dependencies.patch new file mode 100644 index 0000000..1ee1e7c --- /dev/null +++ b/package/collectd/0001-build-add-libavltree-libcommon-libheap-dependencies.patch @@ -0,0 +1,21 @@ +build: add libavltree, libcommon & libheap dependencies + +Otherwise it can break on very parallel builds since collectd link time +arrives before one or more of these were built. + +Status: requested github pull (patch slightly different for newer rev). + +Signed-off-by: Gustavo Zacarias <gustavo@zacarias.com.ar> + +diff -Nura collectd-5.5.0.orig/src/daemon/Makefile.am collectd-5.5.0/src/daemon/Makefile.am +--- collectd-5.5.0.orig/src/daemon/Makefile.am 2015-07-06 10:01:17.820506239 -0300 ++++ collectd-5.5.0/src/daemon/Makefile.am 2015-07-06 10:02:03.364054763 -0300 +@@ -49,7 +49,7 @@ + collectd_CFLAGS = $(AM_CFLAGS) + collectd_LDFLAGS = -export-dynamic + collectd_LDADD = libavltree.la libcommon.la libheap.la -lm +-collectd_DEPENDENCIES = ++collectd_DEPENDENCIES = libavltree.la libcommon.la libheap.la + + # Link to these libraries.. + if BUILD_WITH_LIBRT diff --git a/package/collectd/collectd.mk b/package/collectd/collectd.mk index 7649f72..6e1ea5c 100644 --- a/package/collectd/collectd.mk +++ b/package/collectd/collectd.mk @@ -11,6 +11,8 @@ COLLECTD_CONF_ENV = ac_cv_lib_yajl_yajl_alloc=yes COLLECTD_INSTALL_STAGING = YES COLLECTD_LICENSE = GPLv2 LGPLv2.1 COLLECTD_LICENSE_FILES = COPYING +# For 0001-build-add-libavltree-libcommon-libheap-dependencies.patch +COLLECTD_AUTORECONF = YES # These require unmet dependencies, are fringe, pointless or deprecated COLLECTD_PLUGINS_DISABLE = \
For version 5.5.x a reorganization was made and some common funtionality was moved to libraries, however proper dependency accounting isn't handled in the Makefile thus causing build breakage on some parallel builds. Fixes: http://autobuild.buildroot.net/results/a5e/a5e6891e9ea66ac8216d3302da3702770ef7247b/ Signed-off-by: Gustavo Zacarias <gustavo@zacarias.com.ar> --- ...-libavltree-libcommon-libheap-dependencies.patch | 21 +++++++++++++++++++++ package/collectd/collectd.mk | 2 ++ 2 files changed, 23 insertions(+) create mode 100644 package/collectd/0001-build-add-libavltree-libcommon-libheap-dependencies.patch