Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 16 Mar 2013 14:25:20 GMT
From:      Bojan Petrovic <bojan_petrovic@fastmail.fm>
To:        freebsd-gnats-submit@FreeBSD.org
Subject:   ports/177023: x11-toolkits/flowcanvas doesn't build with recent graphviz
Message-ID:  <201303161425.r2GEPKp7021861@red.freebsd.org>
Resent-Message-ID: <201303161430.r2GEU0BA034597@freefall.freebsd.org>

next in thread | raw e-mail | index | archive | help

>Number:         177023
>Category:       ports
>Synopsis:       x11-toolkits/flowcanvas doesn't build with recent graphviz
>Confidential:   no
>Severity:       non-critical
>Priority:       low
>Responsible:    freebsd-ports-bugs
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:
>Class:          sw-bug
>Submitter-Id:   current-users
>Arrival-Date:   Sat Mar 16 14:30:00 UTC 2013
>Closed-Date:
>Last-Modified:
>Originator:     Bojan Petrovic
>Release:        
>Organization:
>Environment:
FreeBSD alpha-60 9.0-STABLE FreeBSD 9.0-STABLE #5: Wed Jul 11 22:57:50 CEST 2012     root@alpha-60:/usr/obj/usr/src/sys/SL510_9.0  amd64
>Description:
The x11-toolkits/flowcanvas is already marked as BROKEN because it cannot compile with recent graphviz library.

The problem seems to be twofold:

First, flowcanvas relies on deprecated libraph graphviz library. Libcgraph has different function signatures and names.

Second, `pkg-config --libs libgvc` reports `-L/usr/local/lib/graphviz -lgvc -lgraph -lcdt`, although libgraph is not installed by graphviz port.

>How-To-Repeat:
Try building x11-toolkits/flowcanvas
>Fix:
In the patch, src/Canvas.cpp is updated to use cgraph functions

Also, wscript now replaces 'graph' with 'cgraph' in linker flags after autoconfiguring gvc library.

Patch attached with submission follows:

Index: Makefile
===================================================================
--- Makefile	(revision 314352)
+++ Makefile	(working copy)
@@ -10,8 +10,6 @@
 MAINTAINER=	ports@FreeBSD.org
 COMMENT=	An interactive Gtkmm/Gnomecanvasmm widget
 
-BROKEN=		Does not build with recent graphviz
-
 LICENSE=	GPLv2 GPLv3
 LICENSE_COMB=	dual
 
Index: files/patch-src_Canvas.cpp
===================================================================
--- files/patch-src_Canvas.cpp	(revision 0)
+++ files/patch-src_Canvas.cpp	(working copy)
@@ -0,0 +1,46 @@
+--- src/Canvas.cpp.orig	2011-01-10 00:19:58.000000000 +0100
++++ src/Canvas.cpp	2013-03-16 13:45:17.797462753 +0100
+@@ -1253,21 +1253,21 @@
+ 	 */
+ 
+ 	GVC_t* gvc = gvContext();
+-	Agraph_t* G = agopen((char*)"g", AGDIGRAPH);
++	Agraph_t* G = agopen((char*)"g", Agdirected, NULL);
+ 
+ 	nodes.gvc = gvc;
+ 	nodes.G = G;
+ 
+ 	if (_direction == HORIZONTAL)
+-		agraphattr(G, (char*)"rankdir", (char*)"LR");
++		agattr(G, AGRAPH, (char*)"rankdir", (char*)"LR");
+ 	else
+-		agraphattr(G, (char*)"rankdir", (char*)"TD");
++		agattr(G, AGRAPH, (char*)"rankdir", (char*)"TD");
+ 
+ 	unsigned id = 0;
+ 	for (ItemList::const_iterator i = _items.begin(); i != _items.end(); ++i) {
+ 		std::ostringstream ss;
+ 		ss << "n" << id++;
+-		Agnode_t* node = agnode(G, strdup(ss.str().c_str()));
++		Agnode_t* node = agnode(G, strdup(ss.str().c_str()), true);
+ 		if (boost::dynamic_pointer_cast<Module>(*i)) {
+ 			ss.str("");
+ 			ss << (*i)->width() / 96.0;
+@@ -1310,7 +1310,7 @@
+ 
+ 		assert(src_node && dst_node);
+ 
+-		Agedge_t* edge = agedge(G, src_node, dst_node);
++		Agedge_t* edge = agedge(G, src_node, dst_node, NULL, true);
+ 
+ 		if (use_length_hints && c->length_hint() != 0) {
+ 			std::ostringstream len_ss;
+@@ -1325,7 +1325,7 @@
+ 		if (partner) {
+ 			GVNodes::iterator p = nodes.find(partner);
+ 			if (p != nodes.end())
+-				agedge(G, i->second, p->second);
++				agedge(G, i->second, p->second, NULL, true);
+ 		}
+ 	}
+ 
Index: files/patch-wscript
===================================================================
--- files/patch-wscript	(revision 0)
+++ files/patch-wscript	(working copy)
@@ -0,0 +1,10 @@
+--- wscript.orig	2011-01-12 00:09:31.000000000 +0100
++++ wscript	2013-03-16 14:19:43.577462602 +0100
+@@ -41,6 +41,7 @@
+ 	conf.check_tool('compiler_cxx')
+ 	autowaf.check_pkg(conf, 'libgvc', uselib_store='AGRAPH',
+ 	                  atleast_version='2.8', mandatory=False)
++	conf.env['LIB_AGRAPH'] = ['cgraph' if l == 'graph' else l for l in conf.env['LIB_AGRAPH']]
+ 	autowaf.check_pkg(conf, 'gtkmm-2.4', uselib_store='GLIBMM',
+ 	                  atleast_version='2.10.0', mandatory=True)
+ 	autowaf.check_pkg(conf, 'libgnomecanvasmm-2.6', uselib_store='GNOMECANVASMM',


>Release-Note:
>Audit-Trail:
>Unformatted:



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201303161425.r2GEPKp7021861>