diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..6061766 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +SOURCES/graphviz-2.30.1.tar.gz diff --git a/.graphviz.metadata b/.graphviz.metadata new file mode 100644 index 0000000..dd3bcc6 --- /dev/null +++ b/.graphviz.metadata @@ -0,0 +1 @@ +96739220c4bbcf1bd3bd52e7111f4e60497185c6 SOURCES/graphviz-2.30.1.tar.gz diff --git a/SOURCES/graphviz-2.26.0-rtest-errout-fix.patch b/SOURCES/graphviz-2.26.0-rtest-errout-fix.patch new file mode 100644 index 0000000..83f0cb2 --- /dev/null +++ b/SOURCES/graphviz-2.26.0-rtest-errout-fix.patch @@ -0,0 +1,22 @@ +--- graphviz-2.26.0/rtest/rtest.sh.old 2009-12-06 00:27:49.000000000 +0100 ++++ graphviz-2.26.0/rtest/rtest.sh 2010-10-22 10:37:42.952893435 +0200 +@@ -279,14 +279,16 @@ + $testcmd 2> errout + RVAL=$? + ++ if [[ -s errout ]] ++ then ++ cat errout ++ fi ++ + if [[ $RVAL != 0 || ! -s $OUTPATH ]] + then + (( CRASH_CNT+=1 )) + print -u 2 "Test $TESTNAME:$i : == Layout failed ==" + print -u 2 " $testcmd" +- elif [[ -s errout ]] +- then +- cat errout + elif [[ $GENERATE == 1 ]] + then + continue diff --git a/SOURCES/graphviz-2.26.0-testsuite-sigsegv-fix.patch b/SOURCES/graphviz-2.26.0-testsuite-sigsegv-fix.patch new file mode 100644 index 0000000..d278bc1 --- /dev/null +++ b/SOURCES/graphviz-2.26.0-testsuite-sigsegv-fix.patch @@ -0,0 +1,26 @@ +--- graphviz-2.26.0/lib/gvc/gvconfig.c.old 2009-07-08 17:14:20.000000000 +0200 ++++ graphviz-2.26.0/lib/gvc/gvconfig.c 2010-10-20 11:51:21.238392202 +0200 +@@ -471,6 +471,7 @@ + libdir = gvconfig_libdir(gvc); + rc = stat(libdir, &libdir_st); + if (rc == -1) { ++ gvtextlayout_select(gvc); /* choose best available textlayout plugin immediately */ + /* if we fail to stat it then it probably doesn't exist so just fail silently */ + return; + } +@@ -485,6 +486,7 @@ + if (rescan) { + config_rescan(gvc, gvc->config_path); + gvc->config_found = TRUE; ++ gvtextlayout_select(gvc); /* choose best available textlayout plugin immediately */ + return; + } + +@@ -492,6 +494,7 @@ + + rc = stat(gvc->config_path, &config_st); + if (rc == -1) { ++ gvtextlayout_select(gvc); /* choose best available textlayout plugin immediately */ + /* silently return without setting gvc->config_found = TRUE */ + return; + } diff --git a/SOURCES/graphviz-2.30.1-CVE-2014-0978-CVE-2014-1235.patch b/SOURCES/graphviz-2.30.1-CVE-2014-0978-CVE-2014-1235.patch new file mode 100644 index 0000000..67b051d --- /dev/null +++ b/SOURCES/graphviz-2.30.1-CVE-2014-0978-CVE-2014-1235.patch @@ -0,0 +1,41 @@ +diff --git a/lib/cgraph/scan.l b/lib/cgraph/scan.l +index e2215d1..f41049d 100644 +--- a/lib/cgraph/scan.l ++++ b/lib/cgraph/scan.l +@@ -16,6 +16,7 @@ + %{ + #include + #include ++#include + #include + #define GRAPH_EOF_TOKEN '@' /* lex class must be defined below */ + /* this is a workaround for linux flex */ +@@ -192,13 +193,22 @@ ID ({NAME}|{NUMBER}) + %% + void yyerror(char *str) + { ++ unsigned char xbuf[BUFSIZ]; + char buf[BUFSIZ]; +- if (InputFile) +- sprintf(buf,"%s:%d: %s in line %d near '%s'\n",InputFile, line_num, +- str,line_num,yytext); +- else +- sprintf(buf," %s in line %d near '%s'\n", str,line_num,yytext); +- agerr(AGWARN,buf); ++ agxbuf xb; ++ ++ agxbinit(&xb, BUFSIZ, xbuf); ++ if (InputFile) { ++ agxbput (&xb, InputFile); ++ agxbput (&xb, ": "); ++ } ++ agxbput (&xb, str); ++ sprintf(buf," in line %d near '", line_num); ++ agxbput (&xb, buf); ++ agxbput (&xb, yytext); ++ agxbput (&xb,"'\n"); ++ agerr(AGWARN,agxbuse(&xb)); ++ agxbfree(&xb); + } + /* must be here to see flex's macro defns */ + void aglexeof() { unput(GRAPH_EOF_TOKEN); } diff --git a/SOURCES/graphviz-2.30.1-CVE-2014-1236.patch b/SOURCES/graphviz-2.30.1-CVE-2014-1236.patch new file mode 100644 index 0000000..ad58569 --- /dev/null +++ b/SOURCES/graphviz-2.30.1-CVE-2014-1236.patch @@ -0,0 +1,58 @@ +From 1d1bdec6318746f6f19f245db589eddc887ae8ff Mon Sep 17 00:00:00 2001 +From: "Emden R. Gansner" +Date: Wed, 8 Jan 2014 11:31:04 -0500 +Subject: [PATCH] Fix possible buffer overflow problem in chkNum of scanner. + +--- + lib/cgraph/scan.l | 35 ++++++++++++++++++++++++++--------- + 1 file changed, 26 insertions(+), 9 deletions(-) + +diff --git a/lib/cgraph/scan.l b/lib/cgraph/scan.l +index 212967c..d065b61 100644 +--- a/lib/cgraph/scan.l ++++ b/lib/cgraph/scan.l +@@ -129,15 +129,32 @@ static void ppDirective (void) + * and report this to the user. + */ + static int chkNum(void) { +- unsigned char c = (unsigned char)yytext[yyleng-1]; /* last character */ +- if (!isdigit(c) && (c != '.')) { /* c is letter */ +- char buf[BUFSIZ]; +- sprintf(buf,"syntax error - badly formed number '%s' in line %d of %s\n",yytext,line_num, InputFile); +- strcat (buf, "splits into two name tokens\n"); +- agerr(AGWARN,buf); +- return 1; +- } +- else return 0; ++ unsigned char c = (unsigned char)yytext[yyleng-1]; /* last character */ ++ if (!isdigit(c) && (c != '.')) { /* c is letter */ ++ unsigned char xbuf[BUFSIZ]; ++ char buf[BUFSIZ]; ++ agxbuf xb; ++ char* fname; ++ ++ if (InputFile) ++ fname = InputFile; ++ else ++ fname = "input"; ++ ++ agxbinit(&xb, BUFSIZ, xbuf); ++ ++ agxbput(&xb,"syntax ambiguity - badly delimited number '"); ++ agxbput(&xb,yytext); ++ sprintf(buf,"' in line %d of ", line_num); ++ agxbput(&xb,buf); ++ agxbput(&xb,fname); ++ agxbput(&xb, " splits into two tokens\n"); ++ agerr(AGWARN,agxbuse(&xb)); ++ ++ agxbfree(&xb); ++ return 1; ++ } ++ else return 0; + } + + /* The LETTER class below consists of ascii letters, underscore, all non-ascii +-- +1.8.5.1 + diff --git a/SOURCES/graphviz-2.30.1-guile2-fix.patch b/SOURCES/graphviz-2.30.1-guile2-fix.patch new file mode 100644 index 0000000..a952aee --- /dev/null +++ b/SOURCES/graphviz-2.30.1-guile2-fix.patch @@ -0,0 +1,27 @@ +diff -up graphviz-2.30.1/configure.ac.orig graphviz-2.30.1/configure.ac +--- graphviz-2.30.1/configure.ac.orig 2013-02-14 14:27:39.000000000 +0100 ++++ graphviz-2.30.1/configure.ac 2013-02-15 11:43:17.794608767 +0100 +@@ -710,7 +710,7 @@ else + GUILE_LIBS= + # don't die if PKG_CHECK_MODULES not available - el4, el5 + PKG_CHECK_MODULES([GUILE], +- [guile >= "$GUILE_VERSION_MAJOR.$GUILE_VERSION_MINOR"], ++ [guile-2.0 >= "$GUILE_VERSION_MAJOR.$GUILE_VERSION_MINOR"], + GUILE_INCLUDES="$GUILE_CFLAGS", + [ + PKG_CHECK_MODULES([GUILE], +diff -up graphviz-2.30.1/configure.orig graphviz-2.30.1/configure +--- graphviz-2.30.1/configure.orig 2013-02-15 11:44:09.552556536 +0100 ++++ graphviz-2.30.1/configure 2013-02-14 14:30:22.000000000 +0100 +@@ -21028,9 +21028,9 @@ else + _pkg_short_errors_supported=no + fi + if test $_pkg_short_errors_supported = yes; then +- GUILE_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors "guile >= "$GUILE_VERSION_MAJOR.$GUILE_VERSION_MINOR"" 2>&1` ++ GUILE_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors "guile-2.0 >= "$GUILE_VERSION_MAJOR.$GUILE_VERSION_MINOR"" 2>&1` + else +- GUILE_PKG_ERRORS=`$PKG_CONFIG --print-errors "guile >= "$GUILE_VERSION_MAJOR.$GUILE_VERSION_MINOR"" 2>&1` ++ GUILE_PKG_ERRORS=`$PKG_CONFIG --print-errors "guile-2.0 >= "$GUILE_VERSION_MAJOR.$GUILE_VERSION_MINOR"" 2>&1` + fi + # Put the nasty error message in config.log where it belongs + echo "$GUILE_PKG_ERRORS" >&5 diff --git a/SOURCES/graphviz-2.30.1-gv2gml-options-fix.patch b/SOURCES/graphviz-2.30.1-gv2gml-options-fix.patch new file mode 100644 index 0000000..37c3f1a --- /dev/null +++ b/SOURCES/graphviz-2.30.1-gv2gml-options-fix.patch @@ -0,0 +1,12 @@ +diff -up graphviz-2.30.1/cmd/tools/gv2gml.c.orig5 graphviz-2.30.1/cmd/tools/gv2gml.c +--- graphviz-2.30.1/cmd/tools/gv2gml.c.orig5 2013-02-14 14:27:39.000000000 +0100 ++++ graphviz-2.30.1/cmd/tools/gv2gml.c 2013-07-11 13:54:56.661096922 +0200 +@@ -712,7 +712,7 @@ static void initargs(int argc, char **ar + + CmdName = cmdName(argv[0]); + opterr = 0; +- while ((c = getopt(argc, argv, ":io:")) != -1) { ++ while ((c = getopt(argc, argv, "o:")) != -1) { + switch (c) { + case 'o': + outFile = openFile(optarg, "w"); diff --git a/SOURCES/graphviz-2.30.1-gvc.pc-no-libgraph.patch b/SOURCES/graphviz-2.30.1-gvc.pc-no-libgraph.patch new file mode 100644 index 0000000..dc9c996 --- /dev/null +++ b/SOURCES/graphviz-2.30.1-gvc.pc-no-libgraph.patch @@ -0,0 +1,11 @@ +diff -up graphviz-2.30.1/lib/gvc/libgvc.pc.in.cgraph graphviz-2.30.1/lib/gvc/libgvc.pc.in +--- graphviz-2.30.1/lib/gvc/libgvc.pc.in.cgraph 2013-04-23 16:13:09.034471849 -0400 ++++ graphviz-2.30.1/lib/gvc/libgvc.pc.in 2013-04-23 16:13:12.209471736 -0400 +@@ -7,6 +7,6 @@ plugins=@GVPLUGIN_VERSION@ + Name: libgvc + Description: The GraphVizContext library + Version: @VERSION@ +-Libs: -L${libdir} -lgvc -lgraph -lcdt ++Libs: -L${libdir} -lgvc -lcgraph -lcdt + Cflags: -I${includedir} + diff --git a/SOURCES/graphviz-2.30.1-lefty-help.patch b/SOURCES/graphviz-2.30.1-lefty-help.patch new file mode 100644 index 0000000..94426fe --- /dev/null +++ b/SOURCES/graphviz-2.30.1-lefty-help.patch @@ -0,0 +1,82 @@ +diff -up graphviz-2.30.1/cmd/lefty/lefty.c.orig8 graphviz-2.30.1/cmd/lefty/lefty.c +--- graphviz-2.30.1/cmd/lefty/lefty.c.orig8 2013-02-14 14:27:39.000000000 +0100 ++++ graphviz-2.30.1/cmd/lefty/lefty.c 2013-07-12 12:46:23.730664708 +0200 +@@ -86,6 +86,8 @@ static void processargs (int, char **); + static void processstr (char *); + static void printusage (void); + ++static char *cmd; ++ + #if defined(FEATURE_X11) || defined(FEATURE_NONE) + + int main (int argc, char **argv) { +@@ -100,6 +102,8 @@ int main (int argc, char **argv) { + stime = time (NULL); + #endif + ++ cmd = argv[0]; ++ + idlerunmode = 0; + exprstr = NULL; + fp = NULL; +@@ -393,6 +397,25 @@ static int processinput (int waitflag) { + return rtn; + } + ++static char* usestr = ++" acceptable options are:\n\ ++ -x - exit after processing the input file.\n\ ++ -e E - parse and execute expression E.\n\ ++ -el N - set error reporting level. (0)\n\ ++ -sd N - how much of the stack to show if error is printed. (2)\n\ ++ -sb N - how much of each function in the stack show if error is printed. (2)\n\ ++ -df S - set default font.\n\ ++ -ps F - specify a default file name for postscript files.\n\ ++ -? - show help.\n\ ++ -V - print version.\n"; ++ ++static void usage(char *cmd, int eval) ++{ ++ fprintf (stderr, "Usage: %s [options] [file]\n", cmd); ++ fputs (usestr, stderr); ++ exit (eval); ++} ++ + static void processstr (char *buf) { + char *words[100]; + char *s, *s1; +@@ -441,11 +466,19 @@ static void processargs (int argc, char + fprintf (stderr, "lefty version %s\n", LEFTYVERSION); + fprintf (stderr, "graphviz version %s (%s)\n", VERSION, BUILDDATE); + } ++ else if (strcmp (argv[0], "-?") == 0) ++ usage(cmd, 0); + else if (strcmp (argv[0], "-") == 0) + fp = stdin; ++ else if (argv[0][0] == '-') { ++ fprintf (stderr, "option %s unrecognized - ignored\n", argv[0]); ++ usage (cmd, 1); ++ } + else { +- if ((fp = fopen (argv[0], "r")) == NULL) +- panic1 (POS, "main", "cannot open input file: %s", argv[0]); ++ if ((fp = fopen (argv[0], "r")) == NULL) { ++ fprintf (stderr, "cannot open input file: %s", argv[0]); ++ exit(2); ++ } + } + argv++, argc--; + } +diff -up graphviz-2.30.1/cmd/lefty/lefty.1.orig8 graphviz-2.30.1/cmd/lefty/lefty.1 +--- graphviz-2.30.1/cmd/lefty/lefty.1.orig8 2013-02-14 14:27:39.000000000 +0100 ++++ graphviz-2.30.1/cmd/lefty/lefty.1 2013-07-12 12:48:37.829553144 +0200 +@@ -115,6 +115,9 @@ call. The default file name is + .TP + .B -V + Prints the version. ++.TP ++.B -? ++Prints the usage and exits. + .SH SEE ALSO + .I lefty + user guide. diff --git a/SOURCES/graphviz-2.30.1-lua-5.2.patch b/SOURCES/graphviz-2.30.1-lua-5.2.patch new file mode 100644 index 0000000..a4b87de --- /dev/null +++ b/SOURCES/graphviz-2.30.1-lua-5.2.patch @@ -0,0 +1,99 @@ +diff -up graphviz-2.30.1/configure.ac.lua-52 graphviz-2.30.1/configure.ac +--- graphviz-2.30.1/configure.ac.lua-52 2013-05-15 14:55:05.523513480 -0400 ++++ graphviz-2.30.1/configure.ac 2013-05-15 14:59:48.628517728 -0400 +@@ -874,7 +874,7 @@ else + if test "x$PKGCONFIG" != "x"; then + AC_MSG_CHECKING(for Lua headers and libraries with pkg-config) + echo +- for l in "$lua_suffix" "" "51" "5.1" "50" "5.0" ; do ++ for l in "$lua_suffix" "" "52" "5.2" "51" "5.1" "50" "5.0" ; do + pkgconfig_lua_found=`$PKGCONFIG --exists lua$l 2>/dev/null` + if test "x$?" == "x0" ; then + LUA_VERSION=`$PKGCONFIG --modversion lua$l` +@@ -895,7 +895,7 @@ else + + if test "x$LUA_INCLUDES" == "x" -o "x$LUA_LIBS" == "x" ; then + LUACONFIG="" +- AC_CHECK_PROGS(LUACONFIG, lua-config lua-config51 lua-config5.1 lua-config50 lua-config5.0) ++ AC_CHECK_PROGS(LUACONFIG, lua-config lua-config52 lua-config5.2 lua-config51 lua-config5.1 lua-config50 lua-config5.0) + if test "x$LUACONFIG" != "x" ; then + AC_MSG_CHECKING(for Lua headers and libraries with lua-config) + echo +@@ -914,39 +914,53 @@ else + if test "x$ac_found_lua_header" == "xyes" -a "x$ac_found_liblua_header" == "xyes"; then + LUA_INCLUDES="$CFLAGS" + fi +- for l in "$lua_suffix" "" "51" "5.1" "50" "5.0" ; do +- AC_CHECK_LIB(lua$l,lua_call,ac_found_lua_lib="yes",ac_found_lua_lib="no") ++ for l in "$lua_suffix" "" "52" "5.2" "51" "5.1" "50" "5.0" ; do ++ AC_CHECK_LIB(lua$l,lua_callk,ac_found_lua_lib="yes",ac_found_lua_lib="no") + if test "x$ac_found_lua_lib" == "xyes" ; then +- LUA_VERSION=">=5.1.0" +- +- LUA_LIBS="$LDFLAGS -llua$l -lm" +- +- ac2_save_LDFLAGS="$LDFLAGS" +- LDFLAGS="$LDFLAGS -llua$l -lm" +- +- if echo "$host_os" | grep "^linux" 1>/dev/null 2>&1 ; then +- LDFLAGS="$LDFLAGS -ldl" +- fi ++ LUA_VERSION=">=5.2.0" ++ ++ LUA_LIBS="$LDFLAGS -llua$l -lm" ++ ++ ac2_save_LDFLAGS="$LDFLAGS" ++ LDFLAGS="$LDFLAGS -llua$l -lm" ++ ++ if echo "$host_os" | grep "^linux" 1>/dev/null 2>&1 ; then ++ LDFLAGS="$LDFLAGS -ldl" ++ fi ++ ++ AC_CHECK_LIB(lua$l,lua_call,ac_found_lua_lib="yes",ac_found_lua_lib="no") ++ if test "x$ac_found_lua_lib" == "xyes" ; then ++ LUA_VERSION=">=5.1.0" + +- AC_CHECK_LIB(lualib$l,luaL_openlib,ac_found_liblua_lib="yes",ac_found_liblua_lib="no") +- if test "x$ac_found_liblua_lib" == "xyes" ; then +- LUA_VERSION="5.0.x" ++ LUA_LIBS="$LDFLAGS -llua$l -lm" + +- LUA_LIBS="$LUA_LFLAGS -llualib$l" ++ ac2_save_LDFLAGS="$LDFLAGS" ++ LDFLAGS="$LDFLAGS -llua$l -lm" + +- if echo "$host_os" | grep "^linux" 1>/dev/null 2>&1 ; then +- LUA_LIBS="$LUA_LFLAGS -ldl" +- fi +- fi ++ if echo "$host_os" | grep "^linux" 1>/dev/null 2>&1 ; then ++ LDFLAGS="$LDFLAGS -ldl" ++ fi + +- LDFLAGS="$ac2_save_LDFLAGS" +- break +- fi ++ AC_CHECK_LIB(lualib$l,luaL_openlib,ac_found_liblua_lib="yes",ac_found_liblua_lib="no") ++ if test "x$ac_found_liblua_lib" == "xyes" ; then ++ LUA_VERSION="5.0.x" ++ ++ LUA_LIBS="$LUA_LFLAGS -llualib$l" ++ ++ if echo "$host_os" | grep "^linux" 1>/dev/null 2>&1 ; then ++ LUA_LIBS="$LUA_LFLAGS -ldl" ++ fi ++ fi ++ ++ LDFLAGS="$ac2_save_LDFLAGS" ++ break ++ fi ++ fi + done + fi + + AC_MSG_CHECKING(for Lua compiling and linking) +- LUA_TEST=`LT=luatest.c ; echo "#include " > $LT; echo "#include " >> $LT; echo "int main() { luaopen_base((lua_State *)lua_open()); return 0; }" >> $LT ; $CC -Wall $LT -o $LT.out $LUA_INCLUDES $LUA_LIBS $CFLAGS $LDFLAGS 1>/dev/null 2>&1 ; echo $?; rm -f $LT $LT.out 1>/dev/null 2>&1` ++ LUA_TEST=`LT=luatest.c ; echo "#include " > $LT; echo "#include " >> $LT; echo "int main() { luaopen_base((lua_State *)luaL_newstate()); return 0; }" >> $LT ; $CC -Wall $LT -o $LT.out $LUA_INCLUDES $LUA_LIBS $CFLAGS $LDFLAGS 1>/dev/null 2>&1 ; echo $?; rm -f $LT $LT.out 1>/dev/null 2>&1` + if test "x$LUA_TEST" != "x0" ; then + AC_MSG_RESULT(no) + AC_MSG_WARN([ diff --git a/SOURCES/graphviz-2.30.1-man-fix.patch b/SOURCES/graphviz-2.30.1-man-fix.patch new file mode 100644 index 0000000..c741fb4 --- /dev/null +++ b/SOURCES/graphviz-2.30.1-man-fix.patch @@ -0,0 +1,172 @@ +diff -up graphviz-2.30.1/cmd/dot/dot.1.orig2 graphviz-2.30.1/cmd/dot/dot.1 +--- graphviz-2.30.1/cmd/dot/dot.1.orig2 2013-02-14 14:27:39.000000000 +0100 ++++ graphviz-2.30.1/cmd/dot/dot.1 2013-07-09 14:34:22.000000000 +0200 +@@ -22,6 +22,17 @@ sfdp \- filter for drawing large undirec + [\fB\-P\fR] + [\fB\-v\fR] + [\fB\-V\fR] ++[\fB\-Lg\fR] ++[\fB\-LO\fR] ++[\fB\-Ln\fIiter\fR] ++[\fB\-LU\fIfuns\fR] ++[\fB\-LC\fIfover\fR] ++[\fB\-LT\fR[\fB*\fR]\fIftemp\fR] ++[\fB\-c\fR] ++[\fB\-m\fR] ++[\fB\-q\fIlevel\fR] ++[\fB\-s\fIfscale\fR] ++[\fB\-y\fR] + [files] + .br + \fBneato\fR +@@ -645,6 +656,28 @@ As usual, edge layout is guided by the \ + .PP + \fB\-v\fP (verbose) prints various information useful for debugging. + .PP ++\fB\-Lg\fP do not use grid. ++.PP ++\fB\-LO\fP use old attractive force. ++.PP ++\fB\-Ln\fP\fIiter\fP set number of iterations to \fIiter\fP. ++.PP ++\fB\-LU\fP\fIfuns\fP set unscaled factor to \fIfuns\fP. ++.PP ++\fB\-LC\fP\fIfover\fP set overlap expansion factor to \fIfover\fP. ++.PP ++\fB\-LT\fP[\fB*\fP]\fIftemp\fP set temperature factor to \fIftemp\fP. ++.PP ++\fB\-c\fP configure plugins (write $prefix/lib/graphviz/config). ++.PP ++\fB\-m\fP memory test (observe no growth with top, kill when done). ++.PP ++\fB\-q\fIlevel\fP set level of message suppression, the default is 1. ++.PP ++\fB\-s\fIfscale\fP scale input by \fIfscale\fP, the default is 72. ++.PP ++\fB\-y\fR invert y coordinate in output. ++.PP + \fB\-V\fP (version) prints version information and exits. + .PP + \fB\-?\fP prints the usage and exits. +diff -up graphviz-2.30.1/cmd/dotty/dotty.1.orig3 graphviz-2.30.1/cmd/dotty/dotty.1 +--- graphviz-2.30.1/cmd/dotty/dotty.1.orig3 2013-02-14 14:27:39.000000000 +0100 ++++ graphviz-2.30.1/cmd/dotty/dotty.1 2013-07-11 10:47:53.050605825 +0200 +@@ -6,6 +6,10 @@ dotty \- A Customizable Graph Editor + [ + .B -V + ] [ ++.BI -lm mode ++] [ ++.BI -el lev ++] [ + .I file + ] + .SH DESCRIPTION +@@ -48,6 +54,12 @@ window. + .TP + .B -V + Prints the version. ++.TP ++.BI -lm mode ++Sets the layout mode. The \fImode\fP can be \fBsync\fP or \fBasync\fP. The default is \fBasync\fP. ++.TP ++.BI -el lev ++Sets the mesage level. The \fIlev\fP can be \fB0\fP or \fB1\fP. The default is \fB0\fP. + .SH BUGS + The lefty parser does not accept anonymous graphs. + .SH SEE ALSO +diff -up graphviz-2.30.1/cmd/gvmap/cluster.1.orig2 graphviz-2.30.1/cmd/gvmap/cluster.1 +--- graphviz-2.30.1/cmd/gvmap/cluster.1.orig2 2013-02-14 14:27:39.000000000 +0100 ++++ graphviz-2.30.1/cmd/gvmap/cluster.1 2013-07-11 10:20:14.181466011 +0200 +@@ -13,6 +13,9 @@ cluster \- find clusters in a graph and + .BI \-C k + ] + [ ++.BI \-c k ++] ++[ + .B \-o + .I outfile + ] +@@ -37,6 +40,10 @@ specifies a targeted number of clusters + The specified number \fIk\fP is only a suggestion and may not be realisable. + If \fIk == 0\fP, the default, the number of clusters that approximately optimizes the modularity is returned. + .TP ++.BI \-c k ++specifies clustering method. ++If \fIk == 0\fP, the default, the modularity will be used. If \fIk == 1\fP modularity quality will be used. ++.TP + .BI \-o outfile + Specifies that output should go into the file \fIoutfile\fP. By default, + \fIstdout\fP is used. +diff -up graphviz-2.30.1/cmd/tools/gc.1.orig4 graphviz-2.30.1/cmd/tools/gc.1 +--- graphviz-2.30.1/cmd/tools/gc.1.orig4 2013-02-14 14:27:39.000000000 +0100 ++++ graphviz-2.30.1/cmd/tools/gc.1 2013-07-11 13:36:14.847815612 +0200 +@@ -4,7 +4,7 @@ gc \- count graph components + .SH SYNOPSIS + .B gc + [ +-.B \-necCaDUrs? ++.B \-necCaDUrsv? + ] + [ + .I files +@@ -50,6 +50,9 @@ Only analyze directed graphs. + .B \-U + Only analyze undirected graphs. + .TP ++.B \-v ++Verbose output. ++.TP + .B \-? + Print usage information. + .LP +diff -up graphviz-2.30.1/cmd/tools/gvgen.1.orig6 graphviz-2.30.1/cmd/tools/gvgen.1 +--- graphviz-2.30.1/cmd/tools/gvgen.1.orig6 2013-02-14 14:27:39.000000000 +0100 ++++ graphviz-2.30.1/cmd/tools/gvgen.1 2013-07-11 14:58:56.599050271 +0200 +@@ -4,7 +4,7 @@ gvgen \- generate graphs + .SH SYNOPSIS + .B gvgen + [ +-.B \-d? ++.B \-dV? + ] + [ + .BI -i n +@@ -198,6 +198,9 @@ Otherwise, the graph is written to stand + .B \-d + Make the generated graph directed. + .TP ++.B \-V ++Verbose output. ++.TP + .B \-? + Print usage information. + .SH "EXIT STATUS" +diff -up graphviz-2.30.1/cmd/lneato/lneato.1.orig9 graphviz-2.30.1/cmd/lneato/lneato.1 +--- graphviz-2.30.1/cmd/lneato/lneato.1.orig9 2013-02-14 14:27:39.000000000 +0100 ++++ graphviz-2.30.1/cmd/lneato/lneato.1 2013-07-12 13:24:46.817426092 +0200 +@@ -6,6 +6,10 @@ lneato \- A Customizable Graph Editor + [ + .B -V + ] [ ++.BI -lm mode ++] [ ++.BI -el lev ++] [ + .I file + ] + .SH DESCRIPTION +@@ -48,6 +52,12 @@ window. + .TP + .B -V + Prints the version. ++.TP ++.BI -lm mode ++Sets the layout mode. The \fImode\fP can be \fBsync\fP or \fBasync\fP. The default is \fBasync\fP. ++.TP ++.BI -el lev ++Sets the mesage level. The \fIlev\fP can be \fB0\fP or \fB1\fP. The default is \fB0\fP. + .SH SEE ALSO + neato(1), lefty(1), dotty(1), xdot(3), + .br diff --git a/SOURCES/graphviz-2.30.1-ocaml-int64-fix.patch b/SOURCES/graphviz-2.30.1-ocaml-int64-fix.patch new file mode 100644 index 0000000..2e02fb4 --- /dev/null +++ b/SOURCES/graphviz-2.30.1-ocaml-int64-fix.patch @@ -0,0 +1,11 @@ +--- graphviz-2.30.1.old/tclpkg/gv/Makefile.am 2013-02-14 13:27:39.000000000 +0000 ++++ graphviz-2.30.1/tclpkg/gv/Makefile.am 2017-09-16 12:12:11.571092950 +0100 +@@ -109,7 +109,7 @@ + libgv_ocaml_la_SOURCES = $(BASESOURCES) gv_dummy_init.c + libgv_ocaml_la_LIBADD = $(BASELIBS) $(OCAML_LIBS) + libgv_ocaml_la_LDFLAGS = -module -avoid-version +-libgv_ocaml_la_CPPFLAGS = $(BASECPPFLAGS) $(OCAML_INCLUDES) ++libgv_ocaml_la_CPPFLAGS = $(BASECPPFLAGS) $(OCAML_INCLUDES) -Dint64=int64_t + gv.ml gv.mli: gv_ocaml.cpp + gv_ocaml.cpp: gv.i + $(SWIG) -c++ -ocaml -o gv_ocaml.cpp $(srcdir)/gv.i diff --git a/SOURCES/graphviz-2.30.1-ppc64le-fix.patch b/SOURCES/graphviz-2.30.1-ppc64le-fix.patch new file mode 100644 index 0000000..556067b --- /dev/null +++ b/SOURCES/graphviz-2.30.1-ppc64le-fix.patch @@ -0,0 +1,13 @@ +diff --git a/configure.ac b/configure.ac +index 8b79117..eb8aae0 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -100,7 +100,7 @@ LIBPOSTFIX= + case "${host_os}" in + *linux* ) + case "${host_cpu}" in +- powerpc64 | s390x | x86_64 | sparc64 | aarch64) ++ powerpc64* | s390x | x86_64 | sparc64 | aarch64) + LIBPOSTFIX="64" + ;; + esac diff --git a/SOURCES/graphviz-2.30.1-prune-help.patch b/SOURCES/graphviz-2.30.1-prune-help.patch new file mode 100644 index 0000000..3db1411 --- /dev/null +++ b/SOURCES/graphviz-2.30.1-prune-help.patch @@ -0,0 +1,45 @@ +diff -up graphviz-2.30.1/contrib/prune/prune.c.orig10 graphviz-2.30.1/contrib/prune/prune.c +--- graphviz-2.30.1/contrib/prune/prune.c.orig10 2013-02-14 14:27:39.000000000 +0100 ++++ graphviz-2.30.1/contrib/prune/prune.c 2013-07-12 13:35:44.315004975 +0200 +@@ -128,7 +128,11 @@ int main(int argc, char **argv) + break; + } + case '?': +- if (isprint(optopt)) { ++ if (optopt == '?') ++ { ++ help_message(progname); ++ exit(EXIT_SUCCESS); ++ } else if (isprint(optopt)) { + fprintf(stderr, "Unknown option `-%c'.\n", optopt); + } else { + fprintf(stderr, "Unknown option character `\\x%X'.\n", +diff -up graphviz-2.30.1/contrib/prune/prune.1.orig10 graphviz-2.30.1/contrib/prune/prune.1 +--- graphviz-2.30.1/contrib/prune/prune.1.orig10 2013-02-14 14:27:39.000000000 +0100 ++++ graphviz-2.30.1/contrib/prune/prune.1 2013-07-12 13:45:30.544918729 +0200 +@@ -20,6 +20,12 @@ prune \- Prune directed graphs + .BI \-N " attrspec" + ] + [ ++.B \-v ++] ++[ ++.BR \- ( h | ? ) ++] ++[ + .I files ... + ] + .SH DESCRIPTION +@@ -54,6 +60,12 @@ pruned node. + .I attrspec + is a string of the form + .IR attr "=" value. ++.TP ++.B \-v ++Verbose output. ++.TP ++.BR \-h " "\-? ++Prints the usage and exits. + + .SH EXAMPLES + An input graph diff --git a/SOURCES/graphviz-2.30.1-smyrna-doc-opt.patch b/SOURCES/graphviz-2.30.1-smyrna-doc-opt.patch new file mode 100644 index 0000000..b117167 --- /dev/null +++ b/SOURCES/graphviz-2.30.1-smyrna-doc-opt.patch @@ -0,0 +1,17 @@ +diff -up graphviz-2.30.1/cmd/smyrna/Makefile.am.orig2 graphviz-2.30.1/cmd/smyrna/Makefile.am +--- graphviz-2.30.1/cmd/smyrna/Makefile.am.orig2 2013-02-14 14:27:39.000000000 +0100 ++++ graphviz-2.30.1/cmd/smyrna/Makefile.am 2013-07-09 13:18:30.792483754 +0200 +@@ -2,10 +2,13 @@ + ## Process this file with automake to produce Makefile.in + + pdfdir = $(pkgdatadir)/doc/pdf ++ ++if WITH_SMYRNA + man = smyrna.1 + pdf = smyrna.1.pdf + man_MANS = $(man) + pdf_DATA = $(pdf) ++endif + + AM_CPPFLAGS = \ + -DSMYRNA_PATH=\""$(pkgdatadir)/smyrna"\" \ diff --git a/SOURCES/graphviz-2.32.0-aarch64.patch b/SOURCES/graphviz-2.32.0-aarch64.patch new file mode 100644 index 0000000..4a7ecdb --- /dev/null +++ b/SOURCES/graphviz-2.32.0-aarch64.patch @@ -0,0 +1,13 @@ +diff --git a/configure.ac b/configure.ac +index 5bde0a0..3726921 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -100,7 +100,7 @@ LIBPOSTFIX= + case "${host_os}" in + *linux* ) + case "${host_cpu}" in +- powerpc64 | s390x | x86_64 | sparc64 ) ++ powerpc64 | s390x | x86_64 | sparc64 | aarch64) + LIBPOSTFIX="64" + ;; + esac diff --git a/SOURCES/graphviz-2.34.0-lefty-getaddrinfo.patch b/SOURCES/graphviz-2.34.0-lefty-getaddrinfo.patch new file mode 100644 index 0000000..e091f2d --- /dev/null +++ b/SOURCES/graphviz-2.34.0-lefty-getaddrinfo.patch @@ -0,0 +1,45 @@ +diff -up graphviz-2.34.0/cmd/lefty/os/unix/io.c.orig graphviz-2.34.0/cmd/lefty/os/unix/io.c +--- graphviz-2.34.0/cmd/lefty/os/unix/io.c.orig 2013-09-07 03:07:52.000000000 +0200 ++++ graphviz-2.34.0/cmd/lefty/os/unix/io.c 2013-10-30 17:38:59.746296595 +0100 +@@ -285,9 +285,8 @@ int IOwriteline (int ioi, char *bufp) { + + static FILE *serverconnect (char *name) { + char *host, *portp, buf[1024]; +- int port; +- struct hostent *hp; +- struct sockaddr_in sin; ++ struct addrinfo *ai; ++ struct addrinfo hints; + int cfd; + + strcpy (buf, name); +@@ -295,17 +294,18 @@ static FILE *serverconnect (char *name) + portp = strchr (host, '/'); + if (*host == 0 || !portp) + return NULL; +- *portp++ = 0, port = atoi (portp); +- if (!(hp = gethostbyname (host))) +- return NULL; +- memset ((char *) &sin, 1, sizeof (sin)); +- memcpy ((char *) &sin.sin_addr, hp->h_addr, hp->h_length); +- sin.sin_family = hp->h_addrtype; +- sin.sin_port = htons (port); +- if ((cfd = socket (hp->h_addrtype, SOCK_STREAM, 0)) < 0) +- return NULL; +- if (connect (cfd, (struct sockaddr *) &sin, sizeof (sin)) < 0) +- return NULL; ++ *portp++ = 0; ++ memset (&hints, 0, sizeof (hints)); ++ hints.ai_family = AF_UNSPEC; ++ hints.ai_flags = AI_ADDRCONFIG | AI_NUMERICSERV; ++ hints.ai_socktype = SOCK_STREAM; ++ if (getaddrinfo (host, portp, &hints, &ai)) ++ return freeaddrinfo(ai), NULL; ++ if ((cfd = socket (ai->ai_family, ai->ai_socktype, ai->ai_protocol)) < 0) ++ return freeaddrinfo(ai), NULL; ++ if (connect (cfd, ai->ai_addr, ai->ai_addrlen) < 0) ++ return freeaddrinfo(ai), NULL; ++ freeaddrinfo(ai); + return fdopen (cfd, "w+"); + } + diff --git a/SPECS/graphviz.spec b/SPECS/graphviz.spec new file mode 100644 index 0000000..e211d4a --- /dev/null +++ b/SPECS/graphviz.spec @@ -0,0 +1,910 @@ +# Necessary conditionals +%ifarch ppc64 s390 s390x sparc64 %{arm} alpha +%global SHARP 0 +%else +%global SHARP 1 +%endif + +%ifarch %{ocaml_arches} +%global OCAML 1 +%else +%global OCAML 0 +%endif + +%global DEVIL 1 +%global ARRRR 1 + +# Build with QT applications (currently only gvedit) +# Disabled until the package gets better structuring, see bug #447133 +%global QTAPPS 0 + +%global GTS 1 +%global LASI 1 + +# Not in Fedora yet. +%global MING 0 + +%if 0%{?rhel} +%global SHARP 0 +%global ARRRR 0 +%global DEVIL 0 +%global GTS 0 +%global LASI 0 +%endif + +# Plugins version +%global pluginsver 6 + +%global php_extdir %(php-config --extension-dir 2>/dev/null || echo %{_libdir}/php4) +# Fix private-shared-object-provides +# RPM 4.9 +%global __provides_exclude_from %{?__provides_exclude_from:%__provides_exclude_from|}%{php_extdir}/.*\\.so$ + +# Fix for the 387 extended precision (rhbz#772637) +%ifarch i386 i686 +%global FFSTORE -ffloat-store +%endif + +Name: graphviz +Summary: Graph Visualization Tools +Version: 2.30.1 +Release: 21%{?dist} +Group: Applications/Multimedia +License: EPL +URL: http://www.graphviz.org/ +Source0: http://www.graphviz.org/pub/graphviz/ARCHIVE/%{name}-%{version}.tar.gz +Patch2: graphviz-2.30.1-guile2-fix.patch +# Fix SIGSEGVs on testsuite (#645703). +Patch3: graphviz-2.26.0-testsuite-sigsegv-fix.patch +# Testsuite now do diff check also in case of err output (#645703). +Patch4: graphviz-2.26.0-rtest-errout-fix.patch +# Now that libgraph is gone, reflect that in libgvc.pc +Patch5: graphviz-2.30.1-gvc.pc-no-libgraph.patch +# Lua 5.2 +Patch6: graphviz-2.30.1-lua-5.2.patch +# Accepted upstream, ticket #2302 +Patch7: graphviz-2.30.1-smyrna-doc-opt.patch +# Accepted upstream, ticket #2304 +Patch8: graphviz-2.30.1-gv2gml-options-fix.patch +# Sent upstream, ticket #2305 +Patch9: graphviz-2.30.1-lefty-help.patch +# Sent upstream, ticket #2306 +Patch10: graphviz-2.30.1-prune-help.patch +# Sent upstream, ticket #2307 +Patch11: graphviz-2.30.1-man-fix.patch +# Already in upstream +Patch12: graphviz-2.32.0-aarch64.patch +# Upstream bug 0002387 +Patch13: graphviz-2.34.0-lefty-getaddrinfo.patch +# Fix yyerror overflow (CVE-2014-0978, CVE-2014-1235) +Patch14: graphviz-2.30.1-CVE-2014-0978-CVE-2014-1235.patch +# Fix chknum overflow (CVE-2014-1236) +Patch15: graphviz-2.30.1-CVE-2014-1236.patch +# Fix for ppc64le +Patch16: graphviz-2.30.1-ppc64le-fix.patch +# Fix for OCaml 4.05 +Patch17: graphviz-2.30.1-ocaml-int64-fix.patch +BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) +BuildRequires: zlib-devel, libpng-devel, libjpeg-devel, expat-devel, freetype-devel >= 2 +BuildRequires: ksh, bison, m4, flex, tk-devel, tcl-devel >= 8.3, swig +BuildRequires: fontconfig-devel, libtool-ltdl-devel, ruby-devel, ruby, guile-devel, python-devel +BuildRequires: libXaw-devel, libSM-devel, libXext-devel, java-devel, php-devel +BuildRequires: cairo-devel >= 1.1.10, pango-devel, gmp-devel, lua-devel, gtk2-devel, libgnomeui-devel +BuildRequires: gd-devel, perl-devel, swig >= 1.3.33, automake, autoconf, libtool, qpdf +# Temporary workaound for perl(Carp) not pulled +BuildRequires: perl-Carp +%if %{SHARP} +BuildRequires: mono-core +%endif +%if %{DEVIL} +BuildRequires: DevIL-devel +%endif +%if %{ARRRR} +BuildRequires: R-devel +%endif +%if %{OCAML} +BuildRequires: ocaml +%endif +%if %{QTAPPS} +BuildRequires: qt-devel +%endif +%if %{GTS} +BuildRequires: gts-devel +%endif +%if %{LASI} +BuildRequires: lasi-devel +%endif +BuildRequires: urw-fonts, perl-ExtUtils-Embed, ghostscript-devel, librsvg2-devel +Requires: urw-fonts +Requires(post): /sbin/ldconfig +Requires(postun): /sbin/ldconfig + +%description +A collection of tools for the manipulation and layout of graphs (as in nodes +and edges, not as in barcharts). + +%package devel +Group: Development/Libraries +Summary: Development package for graphviz +Requires: %{name} = %{version}-%{release}, pkgconfig +Requires: %{name}-gd = %{version}-%{release} + +%description devel +A collection of tools for the manipulation and layout of graphs (as in nodes +and edges, not as in barcharts). This package contains development files for +graphviz. + +%if %{DEVIL} +%package devil +Group: Applications/Multimedia +Summary: Graphviz plugin for renderers based on DevIL +Requires: %{name} = %{version}-%{release} + +%description devil +Graphviz plugin for renderers based on DevIL. (Unless you absolutely have +to use BMP, TIF, or TGA, you are recommended to use the PNG format instead +supported directly by the cairo+pango based renderer in the base graphviz rpm.) +%endif + +%package doc +Group: Documentation +Summary: PDF and HTML documents for graphviz + +%description doc +Provides some additional PDF and HTML documentation for graphviz. + +%package gd +Group: Applications/Multimedia +Summary: Graphviz plugin for renderers based on gd +Requires: %{name} = %{version}-%{release} +Requires(post): %{_bindir}/dot /sbin/ldconfig +Requires(postun): %{_bindir}/dot /sbin/ldconfig + +%description gd +Graphviz plugin for renderers based on gd. (Unless you absolutely have to use +GIF, you are recommended to use the PNG format instead because of the better +quality anti-aliased lines provided by the cairo+pango based renderer.) + +%package graphs +Group: Applications/Multimedia +Summary: Demo graphs for graphviz + +%description graphs +Some demo graphs for graphviz. + +%package guile +Group: Applications/Multimedia +Summary: Guile extension for graphviz +Requires: %{name} = %{version}-%{release}, guile + +%description guile +Guile extension for graphviz. + +%package java +Group: Applications/Multimedia +Summary: Java extension for graphviz +Requires: %{name} = %{version}-%{release} + +%description java +Java extension for graphviz. + +%package lua +Group: Applications/Multimedia +Summary: Lua extension for graphviz +Requires: %{name} = %{version}-%{release}, lua + +%description lua +Lua extension for graphviz. + +%if %{MING} +%package ming +Group: Applications/Multimedia +Summary: Graphviz plugin for flash renderer based on ming +Requires: %{name} = %{version}-%{release} + +%description ming +Graphviz plugin for -Tswf (flash) renderer based on ming. +%endif + +%if %{OCAML} +%package ocaml +Group: Applications/Multimedia +Summary: Ocaml extension for graphviz +Requires: %{name} = %{version}-%{release}, ocaml + +%description ocaml +Ocaml extension for graphviz. +%endif + +%package perl +Group: Applications/Multimedia +Summary: Perl extension for graphviz +Requires: %{name} = %{version}-%{release} +Requires: perl(:MODULE_COMPAT_%(eval "`%{__perl} -V:version`"; echo $version)) + +%description perl +Perl extension for graphviz. + +%package php +Group: Applications/Multimedia +Summary: PHP extension for graphviz +Requires: %{name} = %{version}-%{release} +Requires: php(zend-abi) = %{php_zend_api} +Requires: php(api) = %{php_core_api} + +%description php +PHP extension for graphviz. + +%package python +Group: Applications/Multimedia +Summary: Python extension for graphviz +Requires: %{name} = %{version}-%{release}, python + +%description python +Python extension for graphviz. + +%if %{ARRRR} +%package R +Group: Applications/Multimedia +Summary: R extension for graphviz +Requires: %{name} = %{version}-%{release}, R-core + +%description R +R extension for graphviz. +%endif + +%package ruby +Group: Applications/Multimedia +Summary: Ruby extension for graphviz +Requires: %{name} = %{version}-%{release}, ruby + +%description ruby +Ruby extension for graphviz. + +%if %{SHARP} +%package sharp +Group: Applications/Multimedia +Summary: C# extension for graphviz +Requires: %{name} = %{version}-%{release}, mono-core + +%description sharp +C# extension for graphviz. +%endif + +%package tcl +Group: Applications/Multimedia +Summary: Tcl extension & tools for graphviz +Requires: %{name} = %{version}-%{release}, tcl >= 8.3, tk + +%description tcl +Various tcl packages (extensions) for the graphviz tools. + +%prep +%setup -q +%patch2 -p1 -b .guile2-fix +%patch3 -p1 -b .testsuite-sigsegv-fix +%patch4 -p1 -b .rtest-errout-fix +%patch5 -p1 -b .cgraph +%patch6 -p1 -b .lua-52 +%patch7 -p1 -b .smyrna-doc-opt +%patch8 -p1 -b .gv2gml-options-fix +%patch9 -p1 -b .lefty-help +%patch10 -p1 -b .prune-help +%patch11 -p1 -b .man-fix +%patch12 -p1 -b .aarch64 +%patch13 -p1 -b .lefty-getaddrinfo +%patch14 -p1 -b .CVE-2014-0978-CVE-2014-1235 +%patch15 -p1 -b .CVE-2014-1236 +%patch16 -p1 -b .ppc64le-fix +%patch17 -p1 -b .ocaml-int64-fix + +# Attempt to fix rpmlint warnings about executable sources +find -type f -regex '.*\.\(c\|h\)$' -exec chmod a-x {} ';' + +%build +autoreconf -if +# Hack in the java includes we need +sed -i '/JavaVM.framework/!s/JAVA_INCLUDES=/JAVA_INCLUDES=\"_MY_JAVA_INCLUDES_\"/g' configure +sed -i 's|_MY_JAVA_INCLUDES_|-I%{java_home}/include/ -I%{java_home}/include/linux/|g' configure +# Rewrite config_ruby.rb to work with Ruby 1.9 +sed -i 's|expand(|expand(Config::|' config/config_ruby.rb +sed -i 's|sitearchdir|vendorarchdir|' config/config_ruby.rb + +# get the path to search for ruby/config.h to CPPFLAGS, so that configure can find it +export CPPFLAGS=-I`ruby -e "puts File.join(RbConfig::CONFIG['includedir'], RbConfig::CONFIG['sitearch'])" || echo /dev/null` +%configure --with-x --disable-static --disable-dependency-tracking --without-mylibgd --with-ipsepcola --with-pangocairo --with-gdk-pixbuf \ +%if ! %{LASI} + --without-lasi \ +%endif +%if ! %{GTS} + --without-gts \ +%endif +%if ! %{SHARP} + --disable-sharp \ +%endif +%if ! %{OCAML} + --disable-ocaml \ +%endif +%if ! %{MING} + --without-ming \ +%endif +%if ! %{ARRRR} + --disable-r \ +%endif +%if ! %{DEVIL} + --without-devil \ +%endif +%if ! %{QTAPPS} + --without-qt \ +%endif + +make %{?_smp_mflags} CFLAGS="$RPM_OPT_FLAGS -fno-strict-aliasing -fno-strict-overflow %{?FFSTORE}" \ + CXXFLAGS="$RPM_OPT_FLAGS -fno-strict-aliasing -fno-strict-overflow %{?FFSTORE}" + +%install +rm -rf %{buildroot} +make DESTDIR=%{buildroot} \ + docdir=%{buildroot}%{_docdir}/%{name}-%{version} \ + pkgconfigdir=%{_libdir}/pkgconfig \ + install +find %{buildroot} -type f -name "*.la" -exec rm -f {} ';' +chmod -x %{buildroot}%{_datadir}/%{name}/lefty/* + +# Move docs to the right place +mkdir -p %{buildroot}%{_docdir}/%{name}-%{version} +mv %{buildroot}%{_datadir}/%{name}/doc/* %{buildroot}%{_docdir}/%{name}-%{version} + +# Install README +install -m0644 README %{buildroot}%{_docdir}/%{name}-%{version} + +# PHP configuration file +%{__mkdir_p} %{buildroot}%{_sysconfdir}/php.d +%{__cat} << __EOF__ > %{buildroot}%{_sysconfdir}/php.d/%{name}.ini +; Enable %{name} extension module +extension=gv.so +__EOF__ + +# Remove executable modes from demos +find %{buildroot}%{_datadir}/%{name}/demo -type f -exec chmod a-x {} ';' + +# Move demos to doc +mv %{buildroot}%{_datadir}/%{name}/demo %{buildroot}%{_docdir}/%{name}-%{version}/ + +# Rename python demos to prevent byte compilation +find %{buildroot}%{_docdir}/%{name}-%{version}/demo -type f -name "*.py" -exec mv {} {}.demo ';' + +# Remove dot_builtins, on demand loading should be sufficient +rm -f %{buildroot}%{_bindir}/dot_builtins + +# Remove metadata from generated PDFs +pushd %{buildroot}%{_docdir}/%{name}-%{version}/pdf +for f in prune lneato.1 lefty.1 gvgen.1 gc.1 dotty.1 dot.1 cluster.1 +do + if [ -f $f.pdf ] + then +# ugly, but there is probably no better solution + qpdf --empty --static-id --pages $f.pdf -- $f.pdf.$$ + mv -f $f.pdf.$$ $f.pdf + fi +done + +# Ghost plugins config +touch %{buildroot}%{_libdir}/graphviz/config%{pluginsver} + +%check +# Minimal load test of php extension +LD_LIBRARY_PATH=%{buildroot}%{_libdir} \ +php --no-php-ini \ + --define extension_dir=%{buildroot}%{_libdir}/graphviz/php/ \ + --define extension=libgv_php.so \ + --modules | grep gv + +# upstream test suite +cd rtest +make rtest + +%clean +rm -rf %{buildroot} + +%post +/sbin/ldconfig +%{_bindir}/dot -c + +%postun +/sbin/ldconfig + +%if %{DEVIL} +# run "dot -c" to generate plugin config in %%{_libdir}/graphviz/config* +%post devil +%{_bindir}/dot -c 2>/dev/null || : +/sbin/ldconfig + +%postun devil +%{_bindir}/dot -c 2>/dev/null || : +/sbin/ldconfig +%endif + +# run "dot -c" to generate plugin config in %%{_libdir}/graphviz/config* +%post gd +%{_bindir}/dot -c 2>/dev/null || : +/sbin/ldconfig + +%postun gd +%{_bindir}/dot -c 2>/dev/null || : +/sbin/ldconfig + +%if %{MING} +# run "dot -c" to generate plugin config in %%{_libdir}/graphviz/config* +%post ming +%{_bindir}/dot -c 2>/dev/null || : +/sbin/ldconfig + +%postun ming +%{_bindir}/dot -c 2>/dev/null || : +/sbin/ldconfig +%endif + +%files +%defattr(-,root,root,-) +%doc %{_docdir}/%{name}-%{version} +%{_bindir}/* +%dir %{_libdir}/graphviz +%{_libdir}/*.so.* +%{_libdir}/graphviz/*.so.* +%{_mandir}/man1/*.1* +%{_mandir}/man7/*.7* +%dir %{_datadir}/graphviz +%exclude %{_docdir}/%{name}-%{version}/html +%exclude %{_docdir}/%{name}-%{version}/pdf +%exclude %{_docdir}/%{name}-%{version}/demo +%{_datadir}/graphviz/lefty +%{_datadir}/graphviz/gvpr +%ghost %{_libdir}/graphviz/config%{pluginsver} + +%if %{QTAPPS} +%{_datadir}/graphviz/gvedit +%endif + +%exclude %{_libdir}/graphviz/*/* +%exclude %{_libdir}/graphviz/libgvplugin_gd.* +%if %{DEVIL} +%exclude %{_libdir}/graphviz/libgvplugin_devil.* +%endif +%if %{MING} +%exclude %{_libdir}/graphviz/libgvplugin_ming.* +%exclude %{_libdir}/graphviz/*fdb +%endif + +%files devel +%defattr(-,root,root,-) +%{_includedir}/graphviz +%{_libdir}/*.so +%{_libdir}/graphviz/*.so +%{_libdir}/pkgconfig/*.pc +%{_mandir}/man3/*.3.gz + +%if %{DEVIL} +%files devil +%defattr(-,root,root,-) +%{_libdir}/graphviz/libgvplugin_devil.so.* +%endif + +%files doc +%defattr(-,root,root,-) +%doc %{_docdir}/%{name}-%{version}/html +%doc %{_docdir}/%{name}-%{version}/pdf +%doc %{_docdir}/%{name}-%{version}/demo + +%files gd +%defattr(-,root,root,-) +%{_libdir}/graphviz/libgvplugin_gd.so.* + +%files graphs +%defattr(-,root,root,-) +%dir %{_datadir}/graphviz +%{_datadir}/graphviz/graphs + +%files guile +%defattr(-,root,root,-) +%{_libdir}/graphviz/guile/ +%{_mandir}/man3/gv.3guile* + +%files java +%defattr(-,root,root,-) +%{_libdir}/graphviz/java/ +%{_mandir}/man3/gv.3java* + +%files lua +%defattr(-,root,root,-) +%{_libdir}/graphviz/lua/ +%{_libdir}/lua*/* +%{_mandir}/man3/gv.3lua* + +%if %{MING} +%files ming +%defattr(-,root,root,-) +%{_libdir}/graphviz/libgvplugin_ming.so.* +%{_libdir}/graphviz/*fdb +%endif + +%if %{OCAML} +%files ocaml +%defattr(-,root,root,-) +%{_libdir}/graphviz/ocaml/ +%{_mandir}/man3/gv.3ocaml* +%endif + +%files perl +%defattr(-,root,root,-) +%{_libdir}/graphviz/perl/ +%{_libdir}/perl*/* +%{_mandir}/man3/gv.3perl* + +%files php +%defattr(-,root,root,-) +%config(noreplace) %{_sysconfdir}/php.d/%{name}.ini +%{_libdir}/graphviz/php/ +%{php_extdir}/gv.so +%{_datadir}/php*/* +%{_mandir}/man3/gv.3php* + +%files python +%defattr(-,root,root,-) +%{_libdir}/graphviz/python/ +%{_libdir}/python*/* +%{_mandir}/man3/gv.3python* + +%if %{ARRRR} +%files R +%defattr(-,root,root,-) +%{_libdir}/graphviz/R/ +%{_mandir}/man3/gv.3r.gz +%endif + +%files ruby +%defattr(-,root,root,-) +%{_libdir}/graphviz/ruby/ +%{_libdir}/*ruby*/* +%{_mandir}/man3/gv.3ruby* + +%if %{SHARP} +%files sharp +%defattr(-,root,root,-) +%{_libdir}/graphviz/sharp/ +%{_mandir}/man3/gv.3sharp* +%endif + +%files tcl +%defattr(-,root,root,-) +%{_libdir}/graphviz/tcl/ +%{_libdir}/tcl*/* +# hack to include gv.3tcl only if available +# always includes tcldot.3tcl, gdtclft.3tcl +%{_mandir}/man3/*.3tcl* +%{_mandir}/man3/tkspline.3tk* + + +%changelog +* Sat Sep 16 2017 Richard W.M. Jones - 2.30.1-21 +- Rebuild for OCaml 4.05.0 + resolves: rhbz#1447982 + +* Thu Aug 31 2017 Jaroslav Škarvada - 2.30.1-20 +- Rebuilt for enabling ocaml binding on aarch64 and ppc64l + Resolves: rhbz#1378657 + +* Wed Aug 20 2014 Jaroslav Škarvada - 2.30.1-19 +- Fixed build on ppc64le and other ppc64 variants (lua bindings) + Resolves: rhbz#1125538 + +* Fri Jan 24 2014 Daniel Mach - 2.30.1-18 +- Mass rebuild 2014-01-24 + +* Fri Jan 10 2014 Jaroslav Škarvada - 2.30.1-17 +- Prevent possible buffer overflow in yyerror() + Resolves: CVE-2014-1235 +- Fix possible buffer overflow problem in chkNum of scanner + Resolves: CVE-2014-1236 + +* Tue Jan 7 2014 Jaroslav Škarvada - 2.30.1-16 +- Fixed overflow in yyerror + Resolves: CVE-2014-0978 + +* Fri Dec 27 2013 Daniel Mach - 2.30.1-15 +- Mass rebuild 2013-12-27 + +* Thu Oct 31 2013 Jaroslav Škarvada - 2.30.1-14 +- Removed metadata from generated PDFs + Related: rhbz#881173 + +* Thu Oct 31 2013 Jaroslav Škarvada - 2.30.1-13 +- Fixed multilib conflicts + Rewrote lefty IO lib to use getaddrinfo instead of gethostbyname + (by lefty-getaddrinfo patch) + Resolves: rhbz#881173 + +* Tue Oct 29 2013 Jaroslav Škarvada - 2.30.1-12 +- Fixed build on aarch64 + Resolves: rhbz#1023792 + +* Fri Aug 30 2013 Jaroslav Škarvada - 2.30.1-11 +- Rebuild due to php macros change + Resolves: rhbz#1002865 + +* Fri Jul 12 2013 Jaroslav Škarvada - 2.30.1-10 +- Various man and built-in help fixes + +* Tue Jun 25 2013 Jaroslav Škarvada - 2.30.1-9 +- Fixed handling of the libdir/graphviz directory + +* Tue Jun 11 2013 Remi Collet - 2.30.1-8 +- rebuild for new GD 2.1.0 + +* Wed May 15 2013 Tom Callaway - 2.30.1-7 +- rebuild for lua 5.2 + +* Tue Apr 23 2013 Tom Callaway - 2.30.1-6 +- patch libgvc.pc.in to refer to -lcgraph (-lgraph is dead and gone) + +* Thu Apr 11 2013 Tom Callaway - 2.30.1-5 +- rebuild for R3 (may not be needed, but better safe than sorry) + +* Mon Mar 25 2013 Jaroslav Škarvada - 2.30.1-4 +- Added support for aarch64 + Resolves: rhbz#925487 + +* Fri Mar 22 2013 Remi Collet - 2.30.1-3 +- rebuild for http://fedoraproject.org/wiki/Features/Php55 +- add explicit BuildRequires: perl-Carp (workaround) + +* Thu Mar 14 2013 Vít Ondruch - 2.30.1-2 +- Rebuild for https://fedoraproject.org/wiki/Features/Ruby_2.0.0 + +* Fri Feb 15 2013 Jaroslav Škarvada - 2.30.1-1 +- New version + Resolves: rhbz#911520 + Resolves: rhbz#704529 + +* Thu Jan 24 2013 Jaroslav Škarvada - 2.30.0-3 +- Used ocaml_arches macros to enable ocaml on supported arches + +* Fri Jan 18 2013 Adam Tkac - 2.30.0-2 +- rebuild due to "jpeg8-ABI" feature drop + +* Mon Jan 14 2013 Jaroslav Škarvada - 2.30.0-1 +- New version + Resolves: rhbz#895027 +- Dropped guile-detect, ocaml4 patches (not needed) +- Fixed bogus date in changelog (guessing) + +* Wed Jan 9 2013 Jaroslav Škarvada - 2.28.0-26 +- Rebuilt with -fno-strict-overflow to workaround the overflow problem + (upstream ticket: http://www.graphviz.org/mantisbt/view.php?id=2244) +- The dot_builtins was removed rather then excluded to fix the dangling + symlinks problem in debuginfo + +* Fri Dec 21 2012 Adam Tkac - 2.28.0-25 +- rebuild against new libjpeg + +* Wed Oct 17 2012 Jaroslav Škarvada - 2.28.0-24 +- Rebuilt for new ocaml + +* Fri Aug 17 2012 Jaroslav Škarvada - 2.28.0-23 +- Silenced 'dot -c' errors/warnings in post/postun +- Do not remove dot config in plugins post/postun + +* Fri Aug 17 2012 Jaroslav Škarvada - 2.28.0-22 +- dot_builtins no longer installed (lowers implicit deps) +- Fixed post/postuns for plugins +- Removed -ffast-math, added -ffloat-store (on i386) to fix arithmetic on i386 + +* Thu Jul 19 2012 Fedora Release Engineering - 2.28.0-21 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild + +* Sun Jun 10 2012 Petr Pisar - 2.28.0-20 +- Perl 5.16 rebuild + +* Sat Jun 9 2012 Richard W.M. Jones - 2.28.0-19 +- Rebuild for OCaml 4.00.0. +- Enable OCaml on arm and ppc64, since there are working native compilers + for both. + +* Wed May 23 2012 Jaroslav Škarvada - 2.28.0-18 +- Improved docs handling code in spec to be backward compatible with older RPM + +* Tue May 22 2012 Jaroslav Škarvada - 2.28.0-17 +- All docs are now installed into /usr/share/doc/graphviz-%%{version} +- Demos packaged as docs not to automatically bring in unnecessary deps + +* Tue Feb 28 2012 Fedora Release Engineering - 2.28.0-16 +- Rebuilt for c++ ABI breakage + +* Thu Feb 16 2012 Peter Robinson - 2.28.0-15 +- fix CPPFLAGS export so it doesn't cause issues on ARM + +* Mon Feb 06 2012 Vít Ondruch - 2.28.0-14 +- Rebuilt for Ruby 1.9.3. + +* Wed Jan 18 2012 Remi Collet - 2.28.0-13 +- build against php 5.4.0 +- add filter to fix private-shared-object-provides +- add %%check for php extension + +* Sun Jan 08 2012 Richard W.M. Jones - 2.28.0-12 +- Rebuild for OCaml 3.12.1. + +* Thu Dec 8 2011 Jaroslav Škarvada - 2.28.0-11 +- Added conditionals for ARRRR, DEVIL, QTAPPS (gvedit), GTS, LASI +- Fixed conditionals for SHARP, OCAML +- Built with gts, ghostscript, rsvg and lasi + Resolves: rhbz#760926 +- Disabled gvedit + Resolves: rhbz#751807 +- Fixed rpmlint warnings about executable sources + +* Wed Nov 9 2011 Tom Callaway - 2.28.0-10 +- rebuild for R 2.14.0 + +* Thu Jul 21 2011 Petr Sabata - 2.28.0-9 +- Perl mass rebuild + +* Wed Jul 20 2011 Petr Sabata - 2.28.0-8 +- Perl mass rebuild + +* Thu Jul 07 2011 Jaroslav Škarvada - 2.28.0-7 +- Added gd as devel requirement + +* Fri Jun 17 2011 Marcela Mašláňová - 2.28.0-6 +- Perl mass rebuild + +* Fri Jun 10 2011 Marcela Mašláňová - 2.28.0-5 +- Perl 5.14 mass rebuild + +* Thu May 19 2011 Jaroslav Škarvada - 2.28.0-4 +- Fixed detection of guile 2.x + Resolves: rhbz#704529 + +* Fri May 13 2011 Jaroslav Škarvada - 2.28.0-3 +- Corrected license tag, the graphviz license is now EPL + +* Fri May 13 2011 Jaroslav Škarvada - 2.28.0-2 +- Recompiled with -fno-strict-aliasing in CXXFLAGS + +* Tue May 10 2011 Jaroslav Škarvada - 2.28.0-1 +- New version 2.28.0 +- Added perl-ExtUtils-Embed to BuildRequires, it is now required +- Fixed build failure due to change in php_zend_api macro type +- Removed sparc64, gtk-progname, doc-index-fix, ppc-darwinhack + patches (all were upstreamed) + +* Thu Mar 03 2011 Oliver Falk - 2.26.3-5 +- Disable mono and ocaml on alpha + +* Tue Feb 22 2011 Jaroslav Škarvada - 2.26.3-4 +- Added urw-fonts to requires (#677114) + +* Wed Feb 09 2011 Fedora Release Engineering - 2.26.3-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_15_Mass_Rebuild + +* Fri Jan 21 2011 Karsten Hopp 2.26.3-2 +- fix hack for powerpc-darwin8 in configure + +* Thu Jan 06 2011 Jaroslav Škarvada - 2.26.3-1 +- New version (#580017) +- Fixed gtk plugin program-name (#640671, gtk-progname patch) +- Fixed broken links in doc index (#642536, doc-index-fix patch) +- Fixed SIGSEGVs on testsuite (#645703, testsuite-sigsegv-fix patch) +- Testsuite now do diff check also in case of err output (#645703, + rtest-errout-fix patch) +- Testsuite enabled on all arches (#645703) +- Added urw-fonts to BuildRequires +- Compiled with -fno-strict-aliasing +- Fixed rpmlint warnings on spec file +- Removed unused patches + +* Wed Jul 21 2010 David Malcolm - 2.26.0-4 +- Rebuilt for https://fedoraproject.org/wiki/Features/Python_2.7/MassRebuild + +* Tue Jun 01 2010 Marcela Maslanova - 2.26.0-3 +- Mass rebuild with perl-5.12.0 + +* Mon Jan 04 2010 Patrick "Jima" Laughton 2.26.0-2 +- Rebuild for updated ocaml +- Happy new year, Fedora! + +* Fri Dec 18 2009 Patrick "Jima" Laughton 2.26.0-1 +- Updated to latest release +- Removed patches that have been applied upstream +- Fixed man page paths (mann -> man3) +- Disabled mono and ocaml for ARM (Jitesh Shah, BZ#532047) +- Disabled regression tests on sparc64 as well as ppc/ppc64 (Dennis Gilmore) + +* Fri Jul 24 2009 Fedora Release Engineering - 2.20.3-5.1 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_12_Mass_Rebuild + +* Mon Jul 13 2009 Remi Collet 2.20.3-4.1 +- fix mistake in make rtest fix + +* Mon Jul 13 2009 Remi Collet 2.20.3-4 +- rebuild for new PHP 5.3.0 ABI (20090626) +- add PHP ABI check +- use php_extdir (and don't own it) +- add php configuration file (/etc/php.d/graphviz.ini) + +* Mon Mar 2 2009 Tom "spot" Callaway 2.20.3-3 +- this spec makes baby animals cry... massively clean it up +- hack in java includes to build against openjdk +- add ruby as a BuildRequires (configure checks for /usr/bin/ruby) + +* Wed Feb 25 2009 John Ellson 2.20.3-2.2 +- fixes for swig changes + +* Tue Feb 24 2009 Fedora Release Engineering - 2.20.3-1.3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_11_Mass_Rebuild + +* Wed Feb 11 2009 Karsten Hopp 2.20.3-.2 +- make it build on s390, s390x (#469044) + +* Sat Nov 29 2008 Ignacio Vazquez-Abrams - 2.20.3-1.1 +- Rebuild for Python 2.6 + +* Mon Nov 24 2008 Tom "spot" Callaway 2.20.3-1 +- update to 2.20.3 + +* Sat Nov 22 2008 Rex Dieter 2.16.1-0.7 +- respin (libtool) + +* Mon Jul 7 2008 Tom "spot" Callaway 2.16.1-0.6 +- fix conditional comparison + +* Tue Mar 18 2008 Tom "spot" Callaway 2.16.1-0.5 +- add Requires for versioned perl (libperl.so) + +* Tue Mar 04 2008 Patrick "Jima" Laughton 2.16.1-0.4 +- Disable R support + +* Mon Mar 03 2008 Patrick "Jima" Laughton 2.16.1-0.2 +- New upstream release (fixes BZ#433205, BZ#427376) +- Merged spec changes in from upstream +- Added patch from BZ#432683 + +* Tue Feb 12 2008 Patrick "Jima" Laughton 2.16-3.3 +- Added upstream-provided patch for building under GCC 4.3 (thanks John!) + +* Thu Jan 3 2008 Patrick "Jima" Laughton 2.16-3.2 +- Re-added tcl/tk 8.5 patch +- Tweaked ming stuff + +* Thu Jan 3 2008 Alex Lancaster - 2.16-3.1 +- Rebuild against new Tcl 8.5 + +* Wed Dec 12 2007 Patrick "Jima" Laughton 2.16-2 +- What the heck? Can't BR stuff that hasn't even gotten reviewed yet. + +* Wed Nov 28 2007 Patrick "Jima" Laughton 2.16-1 +- New upstream release +- Remove arith.h patch + +* Tue Sep 04 2007 Patrick "Jima" Laughton 2.14.1-3 +- Patch to resurrect arith.h + +* Thu Aug 23 2007 Patrick "Jima" Laughton 2.14.1-2 +- Added perl-devel to BR for F7+ + +* Wed Aug 15 2007 John Ellson +- release 2.14.1 - see ChangeLog for details +* Thu Aug 2 2007 John Ellson +- release 2.14 - see ChangeLog for details +* Fri Mar 16 2007 Stephen North +- remove xorg-X11-devel from rhel >= 5 +* Mon Dec 11 2006 John Ellson +- fix graphviz-lua description (Fedora BZ#218191) +* Tue Sep 13 2005 John Ellson +- split out language bindings into their own rpms so that + main rpm doesn't depend on (e.g.) ocaml + +* Sat Aug 13 2005 John Ellson +- imported various fixes from the Fedora-Extras .spec by Oliver Falk + +* Wed Jul 20 2005 John Ellson +- release 2.4