summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristoph Junghans <junghans@gentoo.org>2017-01-01 11:16:50 -0700
committerChristoph Junghans <junghans@gentoo.org>2017-01-01 11:17:10 -0700
commitc9e7aeca7d21e133bb1eea3132997c851ef1d069 (patch)
tree0a31a127d729a8eb636fcc1e9f5f640cb7585c12 /sci-libs/bliss/files
parentsci-libs/bliss: version bump (diff)
downloadgentoo-c9e7aeca7d21e133bb1eea3132997c851ef1d069.tar.gz
gentoo-c9e7aeca7d21e133bb1eea3132997c851ef1d069.tar.bz2
gentoo-c9e7aeca7d21e133bb1eea3132997c851ef1d069.zip
sci-libs/bliss: remove old
Package-Manager: portage-2.3.0
Diffstat (limited to 'sci-libs/bliss/files')
-rw-r--r--sci-libs/bliss/files/bliss-0.72-autotools.patch159
-rw-r--r--sci-libs/bliss/files/bliss-0.72-fedora.patch648
2 files changed, 0 insertions, 807 deletions
diff --git a/sci-libs/bliss/files/bliss-0.72-autotools.patch b/sci-libs/bliss/files/bliss-0.72-autotools.patch
deleted file mode 100644
index 30006b9a9ab2..000000000000
--- a/sci-libs/bliss/files/bliss-0.72-autotools.patch
+++ /dev/null
@@ -1,159 +0,0 @@
-Replace simple Makefile by autotools
-- allow shared library
-- parallel build
-- added pkg-config support
-
-Author: Christoph Junghans <junghans@gentoo.org>
-
-diff -Naur bliss-0.72-fedora/config/.dummy bliss-0.72/config/.dummy
---- bliss-0.72-fedora/config/.dummy 1969-12-31 17:00:00.000000000 -0700
-+++ bliss-0.72/config/.dummy 2013-04-28 14:43:06.143760368 -0600
-@@ -0,0 +1 @@
-+Dummy file to make patch create config dir, which is needed for autotools
-diff -Naur bliss-0.72-fedora/configure.ac bliss-0.72/configure.ac
---- bliss-0.72-fedora/configure.ac 1969-12-31 17:00:00.000000000 -0700
-+++ bliss-0.72/configure.ac 2013-04-28 14:40:42.283242722 -0600
-@@ -0,0 +1,31 @@
-+AC_PREREQ([2.65])
-+AC_INIT([bliss], [0.72], [Tommi.Junttil@kk.fi])
-+
-+AC_CONFIG_AUX_DIR(config)
-+AC_CONFIG_MACRO_DIR(config)
-+
-+AM_INIT_AUTOMAKE([1.8 foreign])
-+
-+SHARED_VERSION_INFO="1:0:0"
-+AC_SUBST(SHARED_VERSION_INFO)
-+
-+# Checks for programs.
-+AC_PROG_CXX
-+
-+LT_INIT
-+# Checks for libraries.
-+AC_ARG_WITH([gmp],
-+ [AS_HELP_STRING([--with-gmp], [enable support for GNU Multiple Precision Arithmetic Library @<:@default=check@:>@])],
-+ [], [with_readline=no])
-+AS_IF([test "x$with_readline" != xno],
-+ [AC_CHECK_HEADERS([gmp.h],,AC_MSG_ERROR([Cannot find gmp.h header]))
-+ AC_CHECK_LIB([gmp],_init,,AC_MSG_ERROR([Cannot find gmp library]))
-+ AC_SUBST([GMP],[-lgmp])
-+ [CPPFLAGS="$CPPFLAGS -DBLISS_USE_GMP"]])
-+
-+AC_CHECK_PROG(DOXYGEN,doxygen,doxygen,no)
-+AM_CONDITIONAL(HAVE_DOXYGEN,[test .$DOXYGEN != .no])
-+
-+AC_CONFIG_FILES([Makefile])
-+AC_CONFIG_FILES([bliss.pc])
-+AC_OUTPUT
-diff -Naur bliss-0.72-fedora/bliss.pc.in bliss-0.72/bliss.pc.in
---- bliss-0.72-fedora/bliss.pc.in 1969-12-31 17:00:00.000000000 -0700
-+++ bliss-0.72/bliss.pc.in 2013-04-28 14:40:54.223285686 -0600
-@@ -0,0 +1,13 @@
-+prefix=@prefix@
-+exec_prefix=@exec_prefix@
-+libdir=@libdir@
-+includedir=@includedir@
-+
-+Name: bliss
-+Description: Library for Computing Automorphism Groups and Canonical Labelings of Graphs
-+URL: http://www.tcs.hut.fi/Software/bliss/index.shtml
-+Version: @VERSION@
-+Requires:
-+Libs: -L${libdir} -lbliss @GMP@
-+Libs.private: -lm
-+Cflags: -I${includedir}
-diff -Naur bliss-0.72-fedora/Makefile bliss-0.72/Makefile
---- bliss-0.72-fedora/Makefile 2013-04-28 14:40:10.543128514 -0600
-+++ bliss-0.72/Makefile 1969-12-31 17:00:00.000000000 -0700
-@@ -1,57 +0,0 @@
--CFLAGS = -I.
--CFLAGS += -g
--#CFLAGS += -pg
--CFLAGS += -Wall
--CFLAGS += --pedantic
--CFLAGS += -O9
--#CFLAGS += -DBLISS_DEBUG
--CFLAGS += -fPIC
--
--SRCS = defs.cc graph.cc partition.cc orbit.cc uintseqhash.cc heap.cc
--SRCS += timer.cc utils.cc bliss_C.cc
--
--OBJS = $(addsuffix .o, $(basename $(SRCS)))
--
--GMPOBJS = $(addsuffix g, $(OBJS))
--
--LIB =
--#LIB += /usr/lib/ccmalloc.o -ldl
--
--CC = g++
--RANLIB = ranlib
--AR = ar
--BLISSLIB = libbliss.a
--
--gmp: LIB += -lgmp
--gmp: CFLAGS += -DBLISS_USE_GMP
--
--normal: bliss
--gmp: bliss_gmp
--
--
--all:: lib bliss
--
--%.o %.og: %.cc
-- $(CC) $(CFLAGS) -c -o $@ $<
--
--lib: $(OBJS)
-- rm -f $(BLISSLIB)
-- $(AR) cr $(BLISSLIB) $(OBJS)
-- $(RANLIB) $(BLISSLIB)
--
--lib_gmp: $(GMPOBJS)
-- rm -f $(BLISSLIB)
-- $(AR) cr $(BLISSLIB) $(GMPOBJS)
-- $(RANLIB) $(BLISSLIB)
--
--bliss: bliss.o lib $(OBJS)
-- $(CC) $(CFLAGS) -o bliss bliss.o $(OBJS) $(LIB)
--
--bliss_gmp: bliss.og lib_gmp $(GMPOBJS)
-- $(CC) $(CFLAGS) -o bliss bliss.og $(GMPOBJS) $(LIB)
--
--
--clean:
-- rm -f bliss $(BLISSLIB) $(OBJS) bliss.o $(GMPOBJS) bliss.og
--
--# DO NOT DELETE
-diff -Naur bliss-0.72-fedora/Makefile.am bliss-0.72/Makefile.am
---- bliss-0.72-fedora/Makefile.am 1969-12-31 17:00:00.000000000 -0700
-+++ bliss-0.72/Makefile.am 2013-04-28 14:47:26.944698789 -0600
-@@ -0,0 +1,30 @@
-+ACLOCAL_AMFLAGS = -I config
-+
-+lib_LTLIBRARIES = libbliss.la
-+
-+libbliss_la_LDFLAGS = -no-undefined -version-info @SHARED_VERSION_INFO@
-+libbliss_la_SOURCES = \
-+ defs.cc graph.cc partition.cc orbit.cc uintseqhash.cc heap.cc \
-+ timer.cc utils.cc bliss_C.cc
-+
-+pkginclude_HEADERS = \
-+ bignum.hh bliss_C.h defs.hh graph.hh heap.hh kqueue.hh kstack.hh \
-+ orbit.hh partition.hh timer.hh uintseqhash.hh utils.hh
-+
-+bin_PROGRAMS = bliss
-+bliss_SOURCES = bliss.cc
-+bliss_LDADD = libbliss.la
-+dist_man1_MANS = bliss.1
-+
-+pkgconfigdir = $(libdir)/pkgconfig
-+pkgconfig_DATA = bliss.pc
-+
-+html-local: Doxyfile
-+if HAVE_DOXYGEN
-+ $(DOXYGEN) $(srcdir)/Doxyfile
-+else
-+ @echo "doxygen was not found, please re-run configure"
-+endif
-+
-+clean-local:
-+ -rm -rf html
diff --git a/sci-libs/bliss/files/bliss-0.72-fedora.patch b/sci-libs/bliss/files/bliss-0.72-fedora.patch
deleted file mode 100644
index e1f8b6685109..000000000000
--- a/sci-libs/bliss/files/bliss-0.72-fedora.patch
+++ /dev/null
@@ -1,648 +0,0 @@
-Pulled on 28-04-13 from
-http://pkgs.fedoraproject.org/cgit/bliss.git/tree/
-
-- Man page written by Jerry James using text borrowed from the sources.
- The man page therefore has the same copyright and license as the sources.
-- Don't call exit() in library code.
-- Patch from Thomas Rehn, also sent upstream. Fix one bug and add one
- performance enhancement.
-
-diff -Naur bliss-0.72.orig/bliss.1 bliss-0.72/bliss.1
---- bliss-0.72.orig/bliss.1 1969-12-31 17:00:00.000000000 -0700
-+++ bliss-0.72/bliss.1 2013-04-28 14:35:37.000000000 -0600
-@@ -0,0 +1,55 @@
-+.TH "BLISS" "1" "@VERSION@" "Tommi Junttila & Petteri Kaski" "User Commands"
-+.SH "NAME"
-+bliss \- Compute automorphism groups and canonical labelings of graphs
-+.SH "SYNOPSIS"
-+.B bliss
-+[\fIOPTIONS\fR] [<\fIGRAPH FILE\fR>]
-+.SH "DESCRIPTION"
-+.PP
-+Bliss is an open source tool for computing automorphism groups and
-+canonical forms of graphs. The graphs are specified in DIMACS format.
-+.TP
-+\fB\-directed\fR
-+the input graph is directed
-+.TP
-+\fB\-can\fR
-+compute canonical form
-+.TP
-+\fB\-ocan\fR=\fIf\fR
-+compute canonical form and output it in file \fIf\fR
-+.TP
-+\fB\-v\fR=\fIN\fR
-+set verbosity level to N [N >= 0, default: 1]
-+.TP
-+\fB\-sh\fR=\fIX\fR
-+select splitting heuristics, where X is:
-+.TS
-+tab(;);
-+R L.
-+f;first non-singleton cell
-+fl;first largest non-singleton cell
-+fs;first smallest non-singleton cell
-+fm;first maximally non-trivially connected non-singleton cell
-+flm;first largest maximally non-trivially connected
-+;non-singleton cell
-+fsm;first smallest maximally non-trivially connected
-+;non-singleton cell (default)
-+.TE
-+.TP
-+\fB\-fr\fR=\fIX\fR
-+use failure recording? [X=y/n, default: y]
-+.TP
-+\fB\-cr\fR=\fIX\fR
-+use component recursion? [X=y/n, default: y]
-+.TP
-+\fB\-version\fR
-+print the version number and exit
-+.TP
-+\fB\-help\fR
-+print this help and exit
-+.SH "AUTHORS"
-+Bliss was written by Tommi Junttila <Tommi.Junttila@tkk.fi> and
-+Petteri Kaski <petteri.kaski@aalto.fi>.
-+.PP
-+This man page was written by Jerry James <loganjerry@gmail.com>.
-+It is distributed under the same terms as bliss.
-diff -Naur bliss-0.72.orig/bliss.cc bliss-0.72/bliss.cc
---- bliss-0.72.orig/bliss.cc 2013-04-28 14:35:20.582085167 -0600
-+++ bliss-0.72/bliss.cc 2013-04-28 14:36:28.792330603 -0600
-@@ -276,13 +276,16 @@
- if(opt_canonize == false)
- {
- /* No canonical labeling, only automorphism group */
-- g->find_automorphisms(stats, &report_aut, stdout);
-+ if (!g->find_automorphisms(stats, &report_aut, stdout))
-+ exit(1);
- }
- else
- {
- /* Canonical labeling and automorphism group */
- const unsigned int* cl = g->canonical_form(stats, &report_aut, stdout);
-
-+ if (!cl)
-+ exit(1);
- fprintf(stdout, "Canonical labeling: ");
- bliss::print_permutation(stdout, g->get_nof_vertices(), cl, 1);
- fprintf(stdout, "\n");
-@@ -290,6 +293,8 @@
- if(opt_output_can_file)
- {
- bliss::AbstractGraph* cf = g->permute(cl);
-+ if (!cf)
-+ exit(1);
- FILE* const fp = fopen(opt_output_can_file, "w");
- if(!fp)
- _fatal("Cannot open '%s' for outputting the canonical form, aborting", opt_output_can_file);
-diff -Naur bliss-0.72.orig/bliss_C.cc bliss-0.72/bliss_C.cc
---- bliss-0.72.orig/bliss_C.cc 2013-04-28 14:35:20.582085167 -0600
-+++ bliss-0.72/bliss_C.cc 2013-04-28 14:36:28.792330603 -0600
-@@ -131,7 +131,7 @@
- }
-
- extern "C"
--void
-+int
- bliss_find_automorphisms(BlissGraph *graph,
- void (*hook)(void *user_param,
- unsigned int n,
-@@ -142,7 +142,8 @@
- bliss::Stats s;
- assert(graph);
- assert(graph->g);
-- graph->g->find_automorphisms(s, hook, hook_user_param);
-+ if (!graph->g->find_automorphisms(s, hook, hook_user_param))
-+ return 0;
-
- if(stats)
- {
-@@ -154,6 +155,7 @@
- stats->nof_generators = s.get_nof_generators();
- stats->max_level = s.get_max_level();
- }
-+ return 1;
- }
-
-
-@@ -173,7 +175,7 @@
-
- canonical_labeling = graph->g->canonical_form(s, hook, hook_user_param);
-
-- if(stats)
-+ if(canonical_labeling && stats)
- {
- stats->group_size_approx = s.get_group_size_approx();
- stats->nof_nodes = s.get_nof_nodes();
-diff -Naur bliss-0.72.orig/bliss_C.h bliss-0.72/bliss_C.h
---- bliss-0.72.orig/bliss_C.h 2013-04-28 14:35:20.582085167 -0600
-+++ bliss-0.72/bliss_C.h 2013-04-28 14:36:28.792330603 -0600
-@@ -156,6 +156,7 @@
- * The argument \a perm should be an array of
- * N=bliss::bliss_get_nof_vertices(\a graph) elements describing
- * a bijection on {0,...,N-1}.
-+ * Returns NULL if insufficient memory or internal error.
- */
- BlissGraph *bliss_permute(BlissGraph *graph, const unsigned int *perm);
-
-@@ -174,8 +175,9 @@
- * if you want to use the automorphism later, you have to take a copy of it.
- * Do not call bliss_* functions in the hook.
- * If \a stats is non-null, then some search statistics are copied there.
-+ * \return nonzero if successful, zero if insufficient memory or internal error
- */
--void
-+int
- bliss_find_automorphisms(BlissGraph *graph,
- void (*hook)(void *user_param,
- unsigned int N,
-@@ -194,6 +196,7 @@
- * then bliss_permute() with the returned canonical labeling.
- * Note that the computed canonical version may depend on the applied version
- * of bliss.
-+ * Returns NULL if insufficient memory or internal error.
- */
- const unsigned int *
- bliss_find_canonical_labeling(BlissGraph *graph,
-diff -Naur bliss-0.72.orig/defs.cc bliss-0.72/defs.cc
---- bliss-0.72.orig/defs.cc 2013-04-28 14:35:20.582085167 -0600
-+++ bliss-0.72/defs.cc 2013-04-28 14:36:28.792330603 -0600
-@@ -33,7 +33,6 @@
- vfprintf(stderr, fmt, ap);
- fprintf(stderr, "\nAborting!\n");
- va_end(ap);
-- exit(1);
- }
-
- }
-diff -Naur bliss-0.72.orig/graph.cc bliss-0.72/graph.cc
---- bliss-0.72.orig/graph.cc 2013-04-28 14:35:20.582085167 -0600
-+++ bliss-0.72/graph.cc 2013-04-28 14:37:16.162501050 -0600
-@@ -34,7 +34,10 @@
- namespace bliss {
-
- #define _INTERNAL_ERROR() fatal_error("%s:%d: internal error",__FILE__,__LINE__)
--#define _OUT_OF_MEMORY() fatal_error("%s:%d: out of memory",__FILE__,__LINE__)
-+#define _OUT_OF_MEMORY(label) do { \
-+ fatal_error("%s:%d: out of memory",__FILE__,__LINE__); \
-+ goto label; \
-+ } while (0)
-
- /*-------------------------------------------------------------------------
- *
-@@ -279,20 +282,6 @@
- *perm = i;
- }
-
--bool
--AbstractGraph::is_automorphism(unsigned int* const perm)
--{
-- _INTERNAL_ERROR();
-- return false;
--}
--
--bool
--AbstractGraph::is_automorphism(const std::vector<unsigned int>& perm) const
--{
-- _INTERNAL_ERROR();
-- return false;
--}
--
-
-
-
-@@ -608,17 +597,7 @@
- };
-
-
--
--
--typedef struct {
-- unsigned int splitting_element;
-- unsigned int certificate_index;
-- unsigned int subcertificate_length;
-- UintSeqHash eqref_hash;
--} PathInfo;
--
--
--void
-+bool
- AbstractGraph::search(const bool canonical, Stats& stats)
- {
- const unsigned int N = get_nof_vertices();
-@@ -658,7 +637,7 @@
- if(N == 0)
- {
- /* Nothing to do, return... */
-- return;
-+ return true;
- }
-
- /* Initialize the partition ... */
-@@ -696,10 +675,10 @@
- */
- if(first_path_labeling) free(first_path_labeling);
- first_path_labeling = (unsigned int*)calloc(N, sizeof(unsigned int));
-- if(!first_path_labeling) _OUT_OF_MEMORY();
-+ if(!first_path_labeling) _OUT_OF_MEMORY(oom1);
- if(best_path_labeling) free(best_path_labeling);
- best_path_labeling = (unsigned int*)calloc(N, sizeof(unsigned int));
-- if(!best_path_labeling) _OUT_OF_MEMORY();
-+ if(!best_path_labeling) _OUT_OF_MEMORY(oom2);
-
- /*
- * Is the initial partition discrete?
-@@ -710,7 +689,7 @@
- update_labeling(best_path_labeling);
- /* Update statistics */
- stats.nof_leaf_nodes = 1;
-- return;
-+ return true;
- }
-
- /*
-@@ -718,20 +697,39 @@
- */
- if(first_path_labeling_inv) free(first_path_labeling_inv);
- first_path_labeling_inv = (unsigned int*)calloc(N, sizeof(unsigned int));
-- if(!first_path_labeling_inv) _OUT_OF_MEMORY();
-+ if(!first_path_labeling_inv) _OUT_OF_MEMORY(oom3);
- if(best_path_labeling_inv) free(best_path_labeling_inv);
- best_path_labeling_inv = (unsigned int*)calloc(N, sizeof(unsigned int));
-- if(!best_path_labeling_inv) _OUT_OF_MEMORY();
-+ if(!best_path_labeling_inv) _OUT_OF_MEMORY(oom4);
-
- /*
- * Allocate space for the automorphisms
- */
- if(first_path_automorphism) free(first_path_automorphism);
- first_path_automorphism = (unsigned int*)malloc(N * sizeof(unsigned int));
-- if(!first_path_automorphism) _OUT_OF_MEMORY();
-+ if(!first_path_automorphism) _OUT_OF_MEMORY(oom5);
- if(best_path_automorphism) free(best_path_automorphism);
- best_path_automorphism = (unsigned int*)malloc(N * sizeof(unsigned int));
-- if(!best_path_automorphism) _OUT_OF_MEMORY();
-+ if(!best_path_automorphism) {
-+ _OUT_OF_MEMORY(oom6);
-+ oom6:
-+ free(first_path_automorphism);
-+ first_path_automorphism = NULL;
-+ oom5:
-+ free(best_path_labeling_inv);
-+ best_path_labeling_inv = NULL;
-+ oom4:
-+ free(first_path_labeling_inv);
-+ first_path_labeling_inv = NULL;
-+ oom3:
-+ free(best_path_labeling);
-+ best_path_labeling = NULL;
-+ oom2:
-+ free(first_path_labeling);
-+ first_path_labeling = NULL;
-+ oom1:
-+ return false;
-+ }
-
- /*
- * Initialize orbit information so that all vertices are in their own orbits
-@@ -745,7 +743,6 @@
- initialize_certificate();
-
- std::vector<TreeNode> search_stack;
-- std::vector<PathInfo> first_path_info;
- std::vector<PathInfo> best_path_info;
-
- search_stack.clear();
-@@ -974,7 +971,6 @@
- */
- {
- unsigned int next_split_element = UINT_MAX;
-- unsigned int* next_split_element_pos = 0;
- unsigned int* ep = p.elements + cell->first;
- if(current_node.fp_on)
- {
-@@ -985,7 +981,6 @@
- *ep < next_split_element and
- first_path_orbits.is_minimal_representative(*ep)) {
- next_split_element = *ep;
-- next_split_element_pos = ep;
- }
- }
- }
-@@ -1001,7 +996,6 @@
- current_node.long_prune_redundant.find(*ep) ==
- current_node.long_prune_redundant.end())) {
- next_split_element = *ep;
-- next_split_element_pos = ep;
- }
- }
- }
-@@ -1015,7 +1009,6 @@
- current_node.long_prune_redundant.find(*ep) ==
- current_node.long_prune_redundant.end())) {
- next_split_element = *ep;
-- next_split_element_pos = ep;
- }
- }
- }
-@@ -1203,8 +1196,10 @@
-
- #if defined(BLISS_VERIFY_EQUITABLEDNESS)
- /* The new partition should be equitable */
-- if(!is_equitable())
-+ if(!is_equitable()) {
- fatal_error("consistency check failed - partition after refinement is not equitable");
-+ return false;
-+ }
- #endif
-
- /*
-@@ -1366,6 +1361,7 @@
- goto handle_first_path_automorphism;
- /* Should never get here because of CR:FP */
- _INTERNAL_ERROR();
-+ return false;
- }
- }
-
-@@ -1598,8 +1594,10 @@
-
- #if defined(BLISS_VERIFY_AUTOMORPHISMS)
- /* Verify that it really is an automorphism */
-- if(!is_automorphism(best_path_automorphism))
-+ if(!is_automorphism(best_path_automorphism)) {
- fatal_error("Best path automorhism validation check failed");
-+ return false;
-+ }
- #endif
-
- unsigned int gca_level_with_first = 0;
-@@ -1666,6 +1664,7 @@
-
-
- _INTERNAL_ERROR();
-+ return false;
-
-
- handle_first_path_automorphism:
-@@ -1701,8 +1700,10 @@
-
- #if defined(BLISS_VERIFY_AUTOMORPHISMS)
- /* Verify that it really is an automorphism */
-- if(!is_automorphism(first_path_automorphism))
-+ if(!is_automorphism(first_path_automorphism)) {
- fatal_error("First path automorphism validation check failed");
-+ return false;
-+ }
- #endif
-
- if(opt_use_long_prune)
-@@ -1749,12 +1750,13 @@
- /* Release component recursion data in partition */
- if(opt_use_comprec)
- p.cr_free();
-+ return true;
- }
-
-
-
-
--void
-+bool
- AbstractGraph::find_automorphisms(Stats& stats,
- void (*hook)(void *user_param,
- unsigned int n,
-@@ -1764,7 +1766,8 @@
- report_hook = hook;
- report_user_param = user_param;
-
-- search(false, stats);
-+ if (!search(false, stats))
-+ return false;
-
- if(first_path_labeling)
- {
-@@ -1776,6 +1779,7 @@
- free(best_path_labeling);
- best_path_labeling = 0;
- }
-+ return true;
- }
-
-
-@@ -1790,7 +1794,8 @@
- report_hook = hook;
- report_user_param = user_param;
-
-- search(true, stats);
-+ if (!search(true, stats))
-+ return NULL;
-
- return best_path_labeling;
- }
-@@ -3480,15 +3485,17 @@
- * Check whether perm is an automorphism.
- * Slow, mainly for debugging and validation purposes.
- */
--bool
-+int
- Digraph::is_automorphism(unsigned int* const perm)
- {
- std::set<unsigned int, std::less<unsigned int> > edges1;
- std::set<unsigned int, std::less<unsigned int> > edges2;
-
- #if defined(BLISS_CONSISTENCY_CHECKS)
-- if(!is_permutation(get_nof_vertices(), perm))
-+ if(!is_permutation(get_nof_vertices(), perm)) {
- _INTERNAL_ERROR();
-+ return -1;
-+ }
- #endif
-
- for(unsigned int i = 0; i < get_nof_vertices(); i++)
-@@ -3507,7 +3514,7 @@
- ei++)
- edges2.insert(*ei);
- if(!(edges1 == edges2))
-- return false;
-+ return 0;
-
- edges1.clear();
- for(std::vector<unsigned int>::iterator ei = v1.edges_out.begin();
-@@ -3520,10 +3527,10 @@
- ei++)
- edges2.insert(*ei);
- if(!(edges1 == edges2))
-- return false;
-+ return 0;
- }
-
-- return true;
-+ return 1;
- }
-
- bool
-@@ -4330,8 +4337,10 @@
- Graph::permute(const unsigned int* perm) const
- {
- #if defined(BLISS_CONSISTENCY_CHECKS)
-- if(!is_permutation(get_nof_vertices(), perm))
-+ if(!is_permutation(get_nof_vertices(), perm)) {
- _INTERNAL_ERROR();
-+ return NULL;
-+ }
- #endif
-
- Graph* const g = new Graph(get_nof_vertices());
-@@ -5270,15 +5279,17 @@
- *
- *-------------------------------------------------------------------------*/
-
--bool
-+int
- Graph::is_automorphism(unsigned int* const perm)
- {
- std::set<unsigned int, std::less<unsigned int> > edges1;
- std::set<unsigned int, std::less<unsigned int> > edges2;
-
- #if defined(BLISS_CONSISTENCY_CHECKS)
-- if(!is_permutation(get_nof_vertices(), perm))
-+ if(!is_permutation(get_nof_vertices(), perm)) {
- _INTERNAL_ERROR();
-+ return -1;
-+ }
- #endif
-
- for(unsigned int i = 0; i < get_nof_vertices(); i++)
-@@ -5298,10 +5309,10 @@
- edges2.insert(*ei);
-
- if(!(edges1 == edges2))
-- return false;
-+ return 0;
- }
-
-- return true;
-+ return 1;
- }
-
-
-@@ -5444,7 +5455,7 @@
- component.clear();
- component_elements = 0;
- sh_return = 0;
-- unsigned int sh_first = 0;
-+ unsigned int sh_first = 1 << 31;
- unsigned int sh_size = 0;
- unsigned int sh_nuconn = 0;
-
-diff -Naur bliss-0.72.orig/graph.hh bliss-0.72/graph.hh
---- bliss-0.72.orig/graph.hh 2013-04-28 14:35:20.582085167 -0600
-+++ bliss-0.72/graph.hh 2013-04-28 14:37:16.162501050 -0600
-@@ -109,9 +109,12 @@
- unsigned long int get_max_level() const {return max_level;}
- };
-
--
--
--
-+typedef struct {
-+ unsigned int splitting_element;
-+ unsigned int certificate_index;
-+ unsigned int subcertificate_length;
-+ UintSeqHash eqref_hash;
-+} PathInfo;
-
-
- /**
-@@ -270,7 +273,7 @@
- void reset_permutation(unsigned int *perm);
-
- /* Mainly for debugging purposes */
-- virtual bool is_automorphism(unsigned int* const perm);
-+ virtual int is_automorphism(unsigned int* const perm) = 0;
-
- std::vector<unsigned int> certificate_current_path;
- std::vector<unsigned int> certificate_first_path;
-@@ -284,7 +287,11 @@
- virtual Partition::Cell* find_next_cell_to_be_splitted(Partition::Cell *cell) = 0;
-
-
-- void search(const bool canonical, Stats &stats);
-+ /**
-+ * \return true if successful, false if insufficient memory to complete or
-+ * other internal error
-+ */
-+ bool search(const bool canonical, Stats &stats);
-
-
- void (*report_hook)(void *user_param,
-@@ -351,7 +358,7 @@
- */
- unsigned int cr_component_elements;
-
--
-+ std::vector<PathInfo> first_path_info;
-
-
- public:
-@@ -362,7 +369,7 @@
- * Check whether \a perm is an automorphism of this graph.
- * Unoptimized, mainly for debugging purposes.
- */
-- virtual bool is_automorphism(const std::vector<unsigned int>& perm) const;
-+ virtual bool is_automorphism(const std::vector<unsigned int>& perm) const = 0;
-
-
-
-@@ -427,8 +434,10 @@
- * if you want to use the automorphism later, you have to take a copy of it.
- * Do not call any member functions in the hook.
- * The search statistics are copied in \a stats.
-+ * \return true if successful, false if insufficient memory to search or
-+ * other internal error.
- */
-- void find_automorphisms(Stats& stats,
-+ bool find_automorphisms(Stats& stats,
- void (*hook)(void* user_param,
- unsigned int n,
- const unsigned int* aut),
-@@ -448,6 +457,8 @@
- * Note that the computed canonical version may depend on the applied version
- * of bliss as well as on some other options (for instance, the splitting
- * heuristic selected with bliss::Graph::set_splitting_heuristic()).
-+ * This function returns NULL if there is insufficient memory, or another
-+ * internal error occurs.
- */
- const unsigned int* canonical_form(Stats& stats,
- void (*hook)(void* user_param,
-@@ -500,6 +511,10 @@
- opt_use_long_prune = active;
- }
-
-+ /**
-+ * Get an information vector about the first path.
-+ */
-+ std::vector<PathInfo> get_first_path_info() { return first_path_info; }
- };
-
-
-@@ -615,7 +630,7 @@
-
- void initialize_certificate();
-
-- bool is_automorphism(unsigned int* const perm);
-+ int is_automorphism(unsigned int* const perm);
-
-
- bool nucr_find_first_component(const unsigned int level);
-@@ -856,7 +871,7 @@
-
- void initialize_certificate();
-
-- bool is_automorphism(unsigned int* const perm);
-+ int is_automorphism(unsigned int* const perm);
-
- void sort_edges();
-