Bug 180896 - sysutils/cfengine35: can't use edit_xml because libxml2 not found
Summary: sysutils/cfengine35: can't use edit_xml because libxml2 not found
Status: Closed FIXED
Alias: None
Product: Ports & Packages
Classification: Unclassified
Component: Individual Port(s) (show other bugs)
Version: Latest
Hardware: Any Any
: Normal Affects Only Me
Assignee: Cy Schubert
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2013-07-27 21:50 UTC by Lawrence Chen
Modified: 2016-01-17 12:38 UTC (History)
2 users (show)

See Also:


Attachments
patch (2.28 KB, patch)
2014-04-20 03:32 UTC, Lawrence Chen
no flags Details | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description Lawrence Chen 2013-07-27 21:50:00 UTC
	Can't use edit_xml in promises, because reports that LIBXML2 is
	required for it.  But, libxml2 is present.

Fix: 

configure fails to find -lxml2, because it doesn't call
	"xml2-config --libs" to get that -L/usr/local/lib is needed.

	So, to get things working on my FreeBSD systems, I added this patch:

	--- files/patch-configure.orig	1969-12-31 18:00:00.000000000 -0600
	+++ files/patch-configure	2013-07-27 15:33:51.954665402 -0500
	@@ -0,0 +1,10 @@
	+--- configure.orig	2013-07-11 03:26:15.000000000 -0500
	++++ configure	2013-07-26 19:51:44.843664757 -0500
	+@@ -15122,6 +15122,7 @@
	+    if test "x$cross_compiling" = "xno"; then
	+       if test x`which $XML2_CONFIG` != x ; then
	+          CPPFLAGS="$CPPFLAGS `$XML2_CONFIG --cflags`"
	++         LDFLAGS="$LDFLAGS `$XML2_CONFIG --libs`"
	+       fi
	+    fi
	+ 

	Though port should probably have a dependency for libxml2, so
	probably not the correct solution to this problem.
How-To-Repeat: 	run a promise that uses edit_xml, messages of
	"cannot edit_xml without LIBXML2" appear.
Comment 1 Edwin Groothuis freebsd_committer freebsd_triage 2013-07-27 21:50:08 UTC
Responsible Changed
From-To: freebsd-ports-bugs->cy

Over to maintainer (via the GNATS Auto Assign Tool)
Comment 2 Lawrence Chen 2014-04-20 03:32:47 UTC
Due to this entry in /usr/ports/UPDATING

20140416:
  AFFECTS: users of print/freetype2 textproc/libxml2 x11/pixman
           x11/libxcb and graphics/freeglut
  AUTHOR: x11@FreeBSD.org and gnome@FreeBSD.org

  The library version of the above libraries has been brought in line
  with what upstream expects. To do this all users of these ports need
  to be rebuilt. Portrevisions have been bumped as a consequence.

my cfengine35 installations broke.  Even though I did reinstall cfengine35
as part of this work.

Tried portmaster, but ran into the "Argument list too long" error.  So,
switched to pkg_libchk method.

Problem is cf-execd is trying to run cf-agent from /var/cfengine/bin, so it
can't update itself or do anything.  Which I realized why previous co-worker
had cursed lots in getting cfengine22 to build fully static.

So, as I was working on trying to do that to cfengine35, I discovered the
problem isn't that the auto-activation of libxml2 in upstream configure is
wrong, but that we don't have a knob to correctly control its activation.

LIBXML2_CONFIGURE_ON=	--with-libxml2=${LOCALBASE}
LIBXML2_CONFIGURE_OFF=	--without-libxml2
+
LIBXML2_LIB_DEPENDS=	...

The attached patch also includes my work to make cf-agent and cf-promises
static.  (partial only results in static linkage of libpromises and libxml2, I
had wanted libtokyocabinet, but there's no libtool file for it...so cfengine's
libtool outsmarts me by linking to the shared libraries, even if I had
specified the *.a libraries.  The alternative is full static builds...which
means including the other static libraries that tokyocabinet requires.

I went with PARTIAL for my FreeBSD servers.
Comment 3 Martin Wilke freebsd_committer freebsd_triage 2016-01-17 12:38:21 UTC
I think that has been fixed. Close.