diff options
author | V3n3RiX <venerix@redcorelinux.org> | 2017-10-09 18:53:29 +0100 |
---|---|---|
committer | V3n3RiX <venerix@redcorelinux.org> | 2017-10-09 18:53:29 +0100 |
commit | 4f2d7949f03e1c198bc888f2d05f421d35c57e21 (patch) | |
tree | ba5f07bf3f9d22d82e54a462313f5d244036c768 /sci-libs/bliss |
reinit the tree, so we can have metadata
Diffstat (limited to 'sci-libs/bliss')
-rw-r--r-- | sci-libs/bliss/Manifest | 9 | ||||
-rw-r--r-- | sci-libs/bliss/bliss-0.73-r1.ebuild | 48 | ||||
-rw-r--r-- | sci-libs/bliss/files/bliss-0.73-autotools.patch | 99 | ||||
-rw-r--r-- | sci-libs/bliss/files/bliss-0.73-error.patch | 471 | ||||
-rw-r--r-- | sci-libs/bliss/files/bliss-0.73-rehn.patch | 74 | ||||
-rw-r--r-- | sci-libs/bliss/files/bliss-0.73.1.in | 55 | ||||
-rw-r--r-- | sci-libs/bliss/metadata.xml | 12 |
7 files changed, 768 insertions, 0 deletions
diff --git a/sci-libs/bliss/Manifest b/sci-libs/bliss/Manifest new file mode 100644 index 000000000000..56f3f18ebf0b --- /dev/null +++ b/sci-libs/bliss/Manifest @@ -0,0 +1,9 @@ +AUX bliss-0.73-autotools.patch 3117 SHA256 bdfb47b25d02b4cd7300381ce4fe416507644f91ecccb6830cce957594e0feea SHA512 98333e4d97eca83776148b06e8ec41b283fa2a85a77a2c1281084a5af5efefb22ca34b9b6a11e2b9fdb71af944c6c56247291ea6721bd6d6dcf855e73116351e WHIRLPOOL 3904d788687f9da80934579d437b2736f5b326f4cf1c21df5143a4f77713c3518c42fe32c1c3013840d6f3debf62c2dd0e937e9d92fd45686f6abb8150727c80 +AUX bliss-0.73-error.patch 14317 SHA256 75a3833f7b61a0059f1076ad4bdf9f2857447c214013b524867dc7505380b79a SHA512 d4adcd652016d4b62e4b366cdbd5bd60f1dbaf89619e1d8d4dad6092a3dbb4e27e12aa13c1fc1f12481f144696b2e1392ecbc67dab0485959450d39013613a14 WHIRLPOOL 385a41cef1ceeb8fc13ed15b359861377e85bb0d862edebf9666f27f324294f5073ebe9d5ca03ae558e42d4a087f9bdba1ffabc1869af2cc652a866403a1891a +AUX bliss-0.73-rehn.patch 1669 SHA256 b03799a0cc7f8377b2f640ff57cd7dd67a50361c37f58ba81b0afad6cf94d767 SHA512 ae70ebcd3d9ef2f744e951dfb9cc2b48bee741ee7ead557a0fdfdacbd1895b015bb9a8da986fa36b084d4c92f7a28adad1df14c0814847d84c46f73cb69123b7 WHIRLPOOL f06a7ca86b030c6bda0c03332f4daec6af6f261cb52d54a02ec1e0fd2cc7855c48419de64dd8076d76674a27a30531969123d6dd8f092082b754c3d1b6194775 +AUX bliss-0.73.1.in 1482 SHA256 3fdbf91955a075ff40c647ed2076442594531aff65bc0f2b082798503a066d9d SHA512 7eb1d08f9c40358ef986d8fe31d42eb90dc57879cb399f45dcf5df85eecdc6fd86208f1bf06c21a6875e5a3fb5a634d818edd75ce2ccd855910feeb22b714f4b WHIRLPOOL 711be890a84f02993de7c04c0deb6b555b737897126544caaba4839a08b27477f4c726518f8963d593d77619ac9c36b5abeef6a3fb88be81cef530fa96e3da9c +DIST bliss-0.73.zip 94108 SHA256 f57bf32804140cad58b1240b804e0dbd68f7e6bf67eba8e0c0fa3a62fd7f0f84 SHA512 30f505945c577d8bcb265a349f5bc9d4dcd96555fa3add285199cdd95ea2710f04409008ff06432daffab62c132e884845eae7f823191407906202862509e05d WHIRLPOOL 08402453515e092604105f17f5889d252c0207fa31a1125e87e04c4792cbeb77b7a585a134fd2b3108e8620bbd643cd8b7826dee8a56cf47908a922298b70ad1 +EBUILD bliss-0.73-r1.ebuild 1043 SHA256 9d0ab0c652d946a8995409edd9556c48cda0091719315bafe4acefe274067bfa SHA512 81c15201073a7151be82baeb4438f9677332c30b89f9154c55e62e4438caa8992558f307f60f068d53f216bddbf9b9fa7006d44bb1afbba29db4d7ca562b0b46 WHIRLPOOL ed4d81d688617a25c87eaa2c2b8f8b44a70a3c3cff623ffe3b588bcd04565c9640d08ed1be6c5d0d613d935789fc3b10e1766ba27b05763100a1b11632e0278c +MISC ChangeLog 2753 SHA256 d761ffe8bef6dc4eedb6112e42f6dbb4ff51fc2f1eded49242ee15b708138ac8 SHA512 ce3a2d7f5ada218b8305308caf4987be550efeba9b5da1f915e359f8976fe3126f2f6ae43bfff1ae5b0cf1c20b647a2543410299cf9945a77bc1ffa0e15e4ff4 WHIRLPOOL c14c187969b26dab8b04d531f5368e0041716951f5a052e1787eb39661a0a29302f72275e2354d7dbccd49fe0db4f5b79496c0aa117ad04e6980654a80b956ad +MISC ChangeLog-2015 602 SHA256 faa76a783fffa957ce5d4c4fd90ecfd0039c2d06bfdfa28880cec3a0dec2f53f SHA512 16273c662bb222dc3552ab46b60d183a7eb9dcbd3f64394fb1c87d9f5f2893aa1f3b9cb7706d963bcf65db7f0f2bdf3fdc0fc97f021b4913b7d1c6265dbf3f33 WHIRLPOOL 1c141e7285d68a73b1be8754326bd61eff955f05b1226dcb6a8f9da5eb8e0c422a33d5c9356f9d66ece316bf11c96446c40f90ee0618203600cede69b2e92462 +MISC metadata.xml 377 SHA256 0792512ebf944eec93eb89c9cb406e981cff319977e4518f949d3bce971d9752 SHA512 c1a74f1feabe9c0b1179889514cffb7bf130a483990de7d235e177e345c0d1813c09b9751a1c94ced6f9d5c19b1428a0d62ab4d2e8876502dfeb5b7f5806afbf WHIRLPOOL 25d2f8442e8f5fc281448744d8b5c380d39ca0b28c02f3cda844aedc21074359f9fa99b7f3c1eb97369ea4152a6a5f047533d10a0812daae13aa0a7e35cc3fbf diff --git a/sci-libs/bliss/bliss-0.73-r1.ebuild b/sci-libs/bliss/bliss-0.73-r1.ebuild new file mode 100644 index 000000000000..de9e1f385274 --- /dev/null +++ b/sci-libs/bliss/bliss-0.73-r1.ebuild @@ -0,0 +1,48 @@ +# Copyright 1999-2017 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 + +EAPI=6 + +inherit autotools + +SRC_URI="http://www.tcs.hut.fi/Software/${PN}/${P}.zip" +DESCRIPTION="Compute Automorphism Groups and Canonical Labelings of Graphs" +HOMEPAGE="http://www.tcs.hut.fi/Software/bliss/" + +LICENSE="LGPL-3" +SLOT="0/1" +KEYWORDS="~amd64 ~x86 ~amd64-linux ~x86-linux" +IUSE="doc gmp static-libs" + +RDEPEND="gmp? ( dev-libs/gmp:0= )" +DEPEND="${RDEPEND} + app-arch/unzip + doc? ( app-doc/doxygen )" + +#patches from http://pkgs.fedoraproject.org/cgit/rpms/bliss.git/tree/ +PATCHES=( + "${FILESDIR}"/${P}-error.patch + "${FILESDIR}"/${P}-rehn.patch + "${FILESDIR}"/${P}-autotools.patch +) + +src_prepare() { + default + cp "${FILESDIR}/${P}.1.in" "${PN}.1.in" || die + rm Makefile || die + eautoreconf +} + +src_configure() { + econf $(use_with gmp) $(use_enable static-libs static) +} + +src_compile() { + emake all $(usex doc html "") +} + +src_install() { + default + use static-libs || find "${ED}" -name '*.la' -delete + use doc && dodoc -r html +} diff --git a/sci-libs/bliss/files/bliss-0.73-autotools.patch b/sci-libs/bliss/files/bliss-0.73-autotools.patch new file mode 100644 index 000000000000..efdbcb81b42a --- /dev/null +++ b/sci-libs/bliss/files/bliss-0.73-autotools.patch @@ -0,0 +1,99 @@ +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,32 @@ ++AC_PREREQ([2.65]) ++AC_INIT([bliss], [0.73], [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_gmp=no]) ++AS_IF([test "x$with_gmp" != 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_CONFIG_FILES([bliss.1]) ++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.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.73-error.patch b/sci-libs/bliss/files/bliss-0.73-error.patch new file mode 100644 index 000000000000..cd0f5457219f --- /dev/null +++ b/sci-libs/bliss/files/bliss-0.73-error.patch @@ -0,0 +1,471 @@ +--- ./bliss.cc.orig 2015-09-01 10:23:10.000000000 -0600 ++++ ./bliss.cc 2015-09-04 15:04:09.946602735 -0600 +@@ -276,13 +276,16 @@ main(const int argc, const char** argv) + 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 @@ main(const int argc, const char** argv) + 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); +--- ./bliss_C.cc.orig 2015-09-01 10:23:10.000000000 -0600 ++++ ./bliss_C.cc 2015-09-04 15:04:09.945602814 -0600 +@@ -131,7 +131,7 @@ BlissGraph *bliss_permute(BlissGraph *gr + } + + extern "C" +-void ++int + bliss_find_automorphisms(BlissGraph *graph, + void (*hook)(void *user_param, + unsigned int n, +@@ -142,7 +142,8 @@ bliss_find_automorphisms(BlissGraph *gra + 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 @@ bliss_find_automorphisms(BlissGraph *gra + stats->nof_generators = s.get_nof_generators(); + stats->max_level = s.get_max_level(); + } ++ return 1; + } + + +@@ -173,7 +175,7 @@ bliss_find_canonical_labeling(BlissGraph + + 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(); +--- ./bliss_C.h.orig 2015-09-01 10:23:10.000000000 -0600 ++++ ./bliss_C.h 2015-09-04 15:04:09.947602656 -0600 +@@ -156,6 +156,7 @@ unsigned int bliss_hash(BlissGraph *grap + * 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 @@ BlissGraph *bliss_permute(BlissGraph *gr + * 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 @@ bliss_find_automorphisms(BlissGraph *gra + * 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, +--- ./defs.cc.orig 2015-09-01 10:23:12.000000000 -0600 ++++ ./defs.cc 2015-09-04 15:04:09.947602656 -0600 +@@ -32,7 +32,6 @@ fatal_error(const char* fmt, ...) + vfprintf(stderr, fmt, ap); + fprintf(stderr, "\nAborting!\n"); + va_end(ap); +- exit(1); + } + + } +--- ./graph.cc.orig 2015-09-01 10:23:10.000000000 -0600 ++++ ./graph.cc 2015-09-04 15:04:09.927604245 -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 @@ AbstractGraph::reset_permutation(unsigne + *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; +-} +- + + + +@@ -618,7 +607,7 @@ typedef struct { + } PathInfo; + + +-void ++bool + AbstractGraph::search(const bool canonical, Stats& stats) + { + const unsigned int N = get_nof_vertices(); +@@ -658,7 +647,7 @@ AbstractGraph::search(const bool canonic + if(N == 0) + { + /* Nothing to do, return... */ +- return; ++ return true; + } + + /* Initialize the partition ... */ +@@ -696,10 +685,10 @@ AbstractGraph::search(const bool canonic + */ + 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 +699,7 @@ AbstractGraph::search(const bool canonic + update_labeling(best_path_labeling); + /* Update statistics */ + stats.nof_leaf_nodes = 1; +- return; ++ return true; + } + + /* +@@ -718,20 +707,39 @@ AbstractGraph::search(const bool canonic + */ + 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 +@@ -1203,8 +1211,10 @@ AbstractGraph::search(const bool canonic + + #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 + + /* +@@ -1596,8 +1606,10 @@ AbstractGraph::search(const bool canonic + + #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; +@@ -1664,6 +1676,7 @@ AbstractGraph::search(const bool canonic + + + _INTERNAL_ERROR(); ++ return false; + + + handle_first_path_automorphism: +@@ -1699,8 +1712,10 @@ AbstractGraph::search(const bool canonic + + #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) +@@ -1747,12 +1762,13 @@ AbstractGraph::search(const bool canonic + /* 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, +@@ -1762,7 +1778,8 @@ AbstractGraph::find_automorphisms(Stats& + report_hook = hook; + report_user_param = user_param; + +- search(false, stats); ++ if (!search(false, stats)) ++ return false; + + if(first_path_labeling) + { +@@ -1774,6 +1791,7 @@ AbstractGraph::find_automorphisms(Stats& + free(best_path_labeling); + best_path_labeling = 0; + } ++ return true; + } + + +@@ -1788,7 +1806,8 @@ AbstractGraph::canonical_form(Stats& sta + report_hook = hook; + report_user_param = user_param; + +- search(true, stats); ++ if (!search(true, stats)) ++ return NULL; + + return best_path_labeling; + } +@@ -3479,15 +3498,17 @@ Digraph::initialize_certificate() + * 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++) +@@ -3506,7 +3527,7 @@ Digraph::is_automorphism(unsigned int* c + ei++) + edges2.insert(*ei); + if(!(edges1 == edges2)) +- return false; ++ return 0; + + edges1.clear(); + for(std::vector<unsigned int>::iterator ei = v1.edges_out.begin(); +@@ -3519,10 +3540,10 @@ Digraph::is_automorphism(unsigned int* c + ei++) + edges2.insert(*ei); + if(!(edges1 == edges2)) +- return false; ++ return 0; + } + +- return true; ++ return 1; + } + + bool +@@ -4337,8 +4358,10 @@ Graph* + 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()); +@@ -5278,15 +5301,17 @@ Graph::initialize_certificate() + * + *-------------------------------------------------------------------------*/ + +-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++) +@@ -5306,10 +5331,10 @@ Graph::is_automorphism(unsigned int* con + edges2.insert(*ei); + + if(!(edges1 == edges2)) +- return false; ++ return 0; + } + +- return true; ++ return 1; + } + + +--- ./graph.hh.orig 2015-09-01 10:23:10.000000000 -0600 ++++ ./graph.hh 2015-09-04 15:09:17.261182632 -0600 +@@ -159,7 +159,7 @@ public: + * 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; + + + /** Activate/deactivate failure recording. +@@ -211,8 +211,10 @@ public: + * 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), +@@ -232,6 +234,8 @@ public: + * 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, +@@ -436,7 +440,7 @@ protected: + 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; +@@ -450,7 +454,11 @@ protected: + 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, +@@ -634,7 +642,7 @@ protected: + + 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); +@@ -875,7 +883,7 @@ protected: + + void initialize_certificate(); + +- bool is_automorphism(unsigned int* const perm); ++ int is_automorphism(unsigned int* const perm); + + void sort_edges(); + diff --git a/sci-libs/bliss/files/bliss-0.73-rehn.patch b/sci-libs/bliss/files/bliss-0.73-rehn.patch new file mode 100644 index 000000000000..f37eedb4a6bd --- /dev/null +++ b/sci-libs/bliss/files/bliss-0.73-rehn.patch @@ -0,0 +1,74 @@ +--- ./graph.cc.orig 2015-09-04 15:04:09.927604245 -0600 ++++ ./graph.cc 2015-09-04 15:09:46.999819514 -0600 +@@ -597,16 +597,6 @@ public: + }; + + +- +- +-typedef struct { +- unsigned int splitting_element; +- unsigned int certificate_index; +- unsigned int subcertificate_length; +- UintSeqHash eqref_hash; +-} PathInfo; +- +- + bool + AbstractGraph::search(const bool canonical, Stats& stats) + { +@@ -753,7 +743,6 @@ AbstractGraph::search(const bool canonic + initialize_certificate(); + + std::vector<TreeNode> search_stack; +- std::vector<PathInfo> first_path_info; + std::vector<PathInfo> best_path_info; + + search_stack.clear(); +@@ -5477,7 +5466,7 @@ Graph::nucr_find_first_component(const u + 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; + +--- ./graph.hh.orig 2015-09-04 15:09:17.261182632 -0600 ++++ ./graph.hh 2015-09-04 15:09:47.001819355 -0600 +@@ -109,9 +109,12 @@ public: + 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; + + + /** +@@ -524,7 +527,7 @@ protected: + */ + unsigned int cr_component_elements; + +- ++ std::vector<PathInfo> first_path_info; + + + }; +@@ -756,6 +759,10 @@ public: + void set_splitting_heuristic(const SplittingHeuristic shs) {sh = shs; } + + ++ /** ++ * Get an information vector about the first path. ++ */ ++ std::vector<PathInfo> get_first_path_info() { return first_path_info; } + }; + + diff --git a/sci-libs/bliss/files/bliss-0.73.1.in b/sci-libs/bliss/files/bliss-0.73.1.in new file mode 100644 index 000000000000..f652c3d1307a --- /dev/null +++ b/sci-libs/bliss/files/bliss-0.73.1.in @@ -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 --git a/sci-libs/bliss/metadata.xml b/sci-libs/bliss/metadata.xml new file mode 100644 index 000000000000..0668c1ada0d5 --- /dev/null +++ b/sci-libs/bliss/metadata.xml @@ -0,0 +1,12 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd"> +<pkgmetadata> + <maintainer type="person"> + <email>junghans@gentoo.org</email> + <name>Christoph Junghans</name> + </maintainer> +<maintainer type="project"> + <email>sci@gentoo.org</email> + <name>Gentoo Science Project</name> + </maintainer> +</pkgmetadata> |