Compare commits

..

35 commits

Author SHA1 Message Date
Jerry James
904970fbfa Reflow the description text
- More precise globbing in %files
- Update the project URL
2026-01-09 21:35:00 -07:00
Fedora Release Engineering
3fe9a69c07 Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild 2025-07-23 17:45:17 +00:00
Fedora Release Engineering
01271737bd Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild 2025-01-16 12:37:04 +00:00
Jerry James
3f184f2082 Move configuration steps to %conf 2025-01-13 13:33:07 -07:00
Fedora Release Engineering
b28f4e9be3 Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild 2024-07-17 18:23:34 +00:00
Jerry James
eddbe1b092 Minor spec file simplifications 2024-07-16 12:32:51 -06:00
Jerry James
3a843bd252 Build the SCIP fork
- Do not build for 32-bit x86
2024-02-22 10:09:49 -07:00
Fedora Release Engineering
44dbaa0ac3 Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild 2024-01-23 00:31:55 +00:00
Fedora Release Engineering
55be07512b Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild 2024-01-19 14:29:31 +00:00
Fedora Release Engineering
4de9c81283 Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild
Signed-off-by: Fedora Release Engineering <releng@fedoraproject.org>
2023-07-19 14:42:59 +00:00
Fedora Release Engineering
d8bf91f114 Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild
Signed-off-by: Fedora Release Engineering <releng@fedoraproject.org>
2023-01-18 22:58:18 +00:00
Jerry James
cd8680b6fe Clarify bliss-devel license. 2022-11-22 11:30:52 -07:00
Jerry James
066f0a2cb7 Convert License tag to SPDX. 2022-08-15 11:38:45 -06:00
Jerry James
547f37482f Remove dot from %cmake invocation to fix FTBFS. 2022-07-20 16:27:51 -06:00
Fedora Release Engineering
ee3e440473 Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild
Signed-off-by: Fedora Release Engineering <releng@fedoraproject.org>
2022-07-20 22:04:07 +00:00
Fedora Release Engineering
37f08de0bc - Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild
Signed-off-by: Fedora Release Engineering <releng@fedoraproject.org>
2022-01-19 22:24:53 +00:00
Jerry James
2e62169ff3 Version 0.77. Switch to new upstream URLs. 2021-10-07 10:55:37 -06:00
Fedora Release Engineering
cae5bb8b44 - Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild
Signed-off-by: Fedora Release Engineering <releng@fedoraproject.org>
2021-07-21 18:41:33 +00:00
Fedora Release Engineering
8c56cad10d - Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild
Signed-off-by: Fedora Release Engineering <releng@fedoraproject.org>
2021-07-21 13:44:34 +00:00
Jerry James
ac2dc434ab Switch to github URLs. 2021-07-19 13:25:05 -06:00
Fedora Release Engineering
43625a9843 - Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild
Signed-off-by: Fedora Release Engineering <releng@fedoraproject.org>
2021-01-26 01:12:47 +00:00
Jerry James
15f8d38833 Switch to using the sagemath sources.
- Drop -error patch; nobody else uses it and it changes the contract.
2020-12-07 12:01:33 -07:00
Fedora Release Engineering
05889bae34 - Second attempt - Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild
Signed-off-by: Fedora Release Engineering <releng@fedoraproject.org>
2020-08-01 00:11:07 +00:00
Fedora Release Engineering
4f3f287f35 - Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild
Signed-off-by: Fedora Release Engineering <releng@fedoraproject.org>
2020-07-27 13:12:31 +00:00
Fedora Release Engineering
24a85375a1 - Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild
Signed-off-by: Fedora Release Engineering <releng@fedoraproject.org>
2020-01-28 13:04:21 +00:00
Fedora Release Engineering
43403c4bb6 - Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild
Signed-off-by: Fedora Release Engineering <releng@fedoraproject.org>
2019-07-24 19:22:54 +00:00
Fedora Release Engineering
8bc8438475 - Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild
Signed-off-by: Fedora Release Engineering <releng@fedoraproject.org>
2019-01-31 14:43:21 +00:00
Fedora Release Engineering
79fdeb9145 - Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild
Signed-off-by: Fedora Release Engineering <releng@fedoraproject.org>
2018-07-12 21:11:14 +00:00
Jerry James
427e926dcc Use %ldconfig_scriptlets. 2018-05-30 19:17:45 -06:00
Jerry James
24f69d1b65 Fix timestamp code to be reproducible and compilable. 2018-02-13 20:24:05 -07:00
Fedora Release Engineering
89a769e769 - Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild
Signed-off-by: Fedora Release Engineering <releng@fedoraproject.org>
2018-02-07 03:57:26 +00:00
Fedora Release Engineering
2e9b11efd6 - Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild 2017-08-02 18:18:39 +00:00
Fedora Release Engineering
b4597cf83a - Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild 2017-07-26 04:03:33 +00:00
Fedora Release Engineering
609c30d2a9 - Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild 2017-02-10 06:56:00 +00:00
Jerry James
7d98e933a4 Add BR on gcc-c++. 2017-01-28 11:10:19 -07:00
6 changed files with 185 additions and 584 deletions

4
.gitignore vendored
View file

@ -1,2 +1,2 @@
/bliss-0.72.zip
/bliss-0.73.zip
/bliss-*.zip
/*.tar.gz

5
README.md Normal file
View file

@ -0,0 +1,5 @@
# bliss
Bliss is an open source tool for computing automorphism groups and
canonical forms of graphs. It has both a command line user interface as
well as C++ and C programming language APIs.

View file

@ -1,471 +0,0 @@
--- ./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();

View file

@ -1,23 +1,25 @@
--- ./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:
--- include/bliss/abstractgraph.hh.orig 2022-06-17 07:24:11.000000000 -0600
+++ include/bliss/abstractgraph.hh 2023-02-01 09:32:06.289384074 -0700
@@ -493,10 +493,14 @@ protected:
*/
unsigned int cr_component_elements;
+ std::vector<PathInfo> first_path_info;
+public:
-
-
+ /**
+ * Get an information vector about the first path.
+ */
+ std::vector<PathInfo> get_first_path_info() { return first_path_info; }
};
-
-
-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
--- src/abstractgraph.cc.orig 2022-06-17 07:24:11.000000000 -0600
+++ src/abstractgraph.cc 2023-02-01 09:31:50.377694086 -0700
@@ -745,7 +745,6 @@ AbstractGraph::search(const bool canonic
initialize_certificate();
std::vector<TreeNode> search_stack;
@ -25,7 +27,9 @@
std::vector<PathInfo> best_path_info;
search_stack.clear();
@@ -5477,7 +5466,7 @@ Graph::nucr_find_first_component(const u
--- src/graph.cc.orig 2022-06-17 07:24:11.000000000 -0600
+++ src/graph.cc 2023-02-01 09:32:06.290384054 -0700
@@ -1551,7 +1551,7 @@ Graph::nucr_find_first_component(const u
component.clear();
component_elements = 0;
sh_return = 0;
@ -34,41 +38,3 @@
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; }
};

View file

@ -1,95 +1,112 @@
%global giturl https://github.com/scipopt/Bliss
Name: bliss
Version: 0.73
Release: 2%{?dist}
Version: 0.77
Release: 11%{?dist}
Summary: Compute automorphism groups and canonical labelings of graphs
License: LGPLv3
URL: http://www.tcs.hut.fi/Software/bliss/
Source0: http://www.tcs.hut.fi/Software/bliss/%{name}-%{version}.zip
License: LGPL-3.0-only
URL: https://users.aalto.fi/~tjunttil/bliss/
VCS: git:%{giturl}.git
Source0: %{giturl}/archive/v%{version}/Bliss-%{version}.tar.gz
# 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.
Source1: bliss.1
# Sent upstream 28 Oct 2011. Don't call exit() in library code.
Patch0: bliss-error.patch
# Patch from Thomas Rehn, also sent upstream. Fix one bug and add one
# Patch from Thomas Rehn, sent upstream 28 Oct 2011. Fix one bug and add one
# performance enhancement.
Patch1: bliss-rehn.patch
Patch: bliss-rehn.patch
# See https://fedoraproject.org/wiki/Changes/EncourageI686LeafRemoval
ExcludeArch: %{ix86}
BuildRequires: cmake
BuildRequires: doxygen
BuildRequires: gcc-c++
BuildRequires: gmp-devel
BuildRequires: make
Requires: %{name}-libs%{?_isa} = %{version}-%{release}
%global sover %(echo %{version} | cut -d. -f1)
%description
Bliss is an open source tool for computing automorphism groups and
canonical forms of graphs. It has both a command line user interface as
well as C++ and C programming language APIs.
Bliss is an open source tool for computing automorphism groups and canonical
forms of graphs. It has both a command line user interface as well as C++ and
C programming language APIs.
%package devel
# The content is LGPL-3.0-only. Other licenses are due to files installed by
# doxygen.
# html/bc_s.png: GPL-1.0-or-later
# html/bdwn.png: GPL-1.0-or-later
# html/closed.png: GPL-1.0-or-later
# html/doc.png: GPL-1.0-or-later
# html/doxygen.css: GPL-1.0-or-later
# html/doxygen.svg: GPL-1.0-or-later
# html/dynsections.js: MIT
# html/folderclosed.png: GPL-1.0-or-later
# html/folderopen.png: GPL-1.0-or-later
# html/jquery.js: MIT
# html/menu.js: MIT
# html/menudata.js: MIT
# html/nav_f.png: GPL-1.0-or-later
# html/nav_g.png: GPL-1.0-or-later
# html/nav_h.png: GPL-1.0-or-later
# html/open.png: GPL-1.0-or-later
# html/splitbar.png: GPL-1.0-or-later
# html/sync_off.png: GPL-1.0-or-later
# html/sync_on.png: GPL-1.0-or-later
# html/tab_a.png: GPL-1.0-or-later
# html/tab_b.png: GPL-1.0-or-later
# html/tab_h.png: GPL-1.0-or-later
# html/tab_s.png: GPL-1.0-or-later
# html/tabs.css: GPL-1.0-or-later
License: LGPL-3.0-only AND MIT AND GPL-1.0-or-later
Summary: Headers and library files for developing with bliss
Requires: %{name}-libs%{?_isa} = %{version}-%{release}
Requires: gmp-devel%{?_isa}
Provides: bundled(jquery)
%description devel
Headers and library files needed to develop applications that use the
bliss library.
Headers and library files needed to develop applications that use the bliss
library.
%package libs
Summary: Compute automorphism groups and canonical labelings of graphs
%description libs
A command-line bliss tool to access the functionality of the bliss
library.
A command-line bliss tool to access the functionality of the bliss library.
%prep
%setup -q
%patch0
%patch1
%autosetup -n Bliss-%{version} -p0
%conf
# Do not override Fedora build flags. The last sagemath version added an
# soname. Duplicate it for compatibility. Link the library with libgmp.
# Hidden symbols hide ALL symbols, meaning we can't use the library.
sed -e 's/ -O3//' \
-e '/POSITION_INDEPENDENT/a\ \ VERSION 2.0.0 SOVERSION 2' \
-e '/^install($/itarget_link_libraries(libbliss ${GMP_LIBRARIES})' \
-e '/VISIBILITY/d' \
-i CMakeLists.txt
# Fix installation directories
if [ "%{_lib}" != "lib" ]; then
sed -i 's,\(DESTINATION \)lib,\1%{_lib},' CMakeLists.txt
fi
%build
# The Makefile creates a static library, so we roll our own shared library
# here instead. Also, avoid an unused direct dependency on libm.
g++ $RPM_OPT_FLAGS -DBLISS_USE_GMP -fPIC -shared -o libbliss.so.%{version} \
-Wl,-soname,libbliss.so.%{sover} defs.cc graph.cc partition.cc orbit.cc \
uintseqhash.cc heap.cc timer.cc utils.cc bliss_C.cc -Wl,--as-needed \
$RPM_LD_FLAGS -lgmp
ln -s libbliss.so.%{version} libbliss.so.%{sover}
ln -s libbliss.so.%{sover} libbliss.so
# The Makefile doesn't know how to link the binary against a shared library.
# Also, once again avoid an unused direct dependency on libm.
g++ $RPM_OPT_FLAGS -DBLISS_USE_GMP -o bliss bliss.cc -Wl,--as-needed \
$RPM_LD_FLAGS -L. -lbliss -lgmp
%cmake -DUSE_GMP:BOOL=ON
%cmake_build
# Build the documentation
doxygen
%install
# The Makefile has no install target.
# Install the library
mkdir -p %{buildroot}%{_libdir}
cp -a libbliss.* %{buildroot}%{_libdir}
# Install the header files
mkdir -p %{buildroot}%{_includedir}/bliss
cp -p *.h *.hh %{buildroot}%{_includedir}/bliss
# Install the binary
mkdir -p %{buildroot}%{_bindir}
cp -p bliss %{buildroot}%{_bindir}
%cmake_install
# Install the man page
mkdir -p %{buildroot}%{_mandir}/man1
sed 's/@VERSION@/%{version}/' %{SOURCE1} > %{buildroot}%{_mandir}/man1/bliss.1
touch -r %{SOURCE1} %{buildroot}%{_mandir}/man1/bliss.1
%post libs -p /sbin/ldconfig
%postun libs -p /sbin/ldconfig
%files
%{_bindir}/bliss
%{_mandir}/man1/bliss.1*
@ -98,12 +115,96 @@ touch -r %{SOURCE1} %{buildroot}%{_mandir}/man1/bliss.1
%doc html
%{_includedir}/bliss
%{_libdir}/libbliss.so
%{_libdir}/cmake/Bliss/
%files libs
%doc CHANGES.txt
%license COPYING COPYING.LESSER
%{_libdir}/libbliss.so.*
%{_libdir}/libbliss.so.2{,.*}
%changelog
* Wed Jul 23 2025 Fedora Release Engineering <releng@fedoraproject.org> - 0.77-11
- Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild
* Thu Jan 16 2025 Fedora Release Engineering <releng@fedoraproject.org> - 0.77-10
- Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild
* Wed Jul 17 2024 Fedora Release Engineering <releng@fedoraproject.org> - 0.77-9
- Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild
* Thu Feb 22 2024 Jerry James <loganjerry@gmail.com> - 0.77-8
- Build the SCIP fork
- Do not build for 32-bit x86
* Tue Jan 23 2024 Fedora Release Engineering <releng@fedoraproject.org> - 0.77-7
- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild
* Fri Jan 19 2024 Fedora Release Engineering <releng@fedoraproject.org> - 0.77-6
- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild
* Wed Jul 19 2023 Fedora Release Engineering <releng@fedoraproject.org> - 0.77-5
- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild
* Wed Jan 18 2023 Fedora Release Engineering <releng@fedoraproject.org> - 0.77-4
- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild
* Mon Aug 15 2022 Jerry James <loganjerry@gmail.com> - 0.77-3
- Convert License tag to SPDX
* Wed Jul 20 2022 Fedora Release Engineering <releng@fedoraproject.org> - 0.77-3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild
* Wed Jan 19 2022 Fedora Release Engineering <releng@fedoraproject.org> - 0.77-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild
* Thu Oct 7 2021 Jerry James <loganjerry@gmail.com> - 0.77-1
- Version 0.77
- Switch to new upstream URLs
* Wed Jul 21 2021 Fedora Release Engineering <releng@fedoraproject.org> - 0.73-15
- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild
* Mon Jul 19 2021 Jerry James <loganjerry@gmail.com> - 0.73-15
- Switch to github URLs
* Tue Jan 26 2021 Fedora Release Engineering <releng@fedoraproject.org> - 0.73-14
- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild
* Mon Dec 7 2020 Jerry James <loganjerry@gmail.com> - 0.73-13
- Switch to using the sagemath sources
- Drop -error patch; nobody else uses it and it changes the contract
* Sat Aug 01 2020 Fedora Release Engineering <releng@fedoraproject.org> - 0.73-12
- Second attempt - Rebuilt for
https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild
* Mon Jul 27 2020 Fedora Release Engineering <releng@fedoraproject.org> - 0.73-11
- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild
* Tue Jan 28 2020 Fedora Release Engineering <releng@fedoraproject.org> - 0.73-10
- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild
* Wed Jul 24 2019 Fedora Release Engineering <releng@fedoraproject.org> - 0.73-9
- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild
* Thu Jan 31 2019 Fedora Release Engineering <releng@fedoraproject.org> - 0.73-8
- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild
* Thu Jul 12 2018 Fedora Release Engineering <releng@fedoraproject.org> - 0.73-7
- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild
* Wed Feb 07 2018 Fedora Release Engineering <releng@fedoraproject.org> - 0.73-6
- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild
* Wed Aug 02 2017 Fedora Release Engineering <releng@fedoraproject.org> - 0.73-5
- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild
* Wed Jul 26 2017 Fedora Release Engineering <releng@fedoraproject.org> - 0.73-4
- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild
* Fri Feb 10 2017 Fedora Release Engineering <releng@fedoraproject.org> - 0.73-3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild
* Wed Feb 03 2016 Fedora Release Engineering <releng@fedoraproject.org> - 0.73-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild

View file

@ -1 +1 @@
72f2e310786923b5c398ba0fc40b42ce bliss-0.73.zip
SHA512 (Bliss-0.77.tar.gz) = 27bd44695f2c1f3dfcb2f39f75fea3f61db29dfde4bef545bd14017830cd3d399b2e448ae7a703a5886bd433b22f6eddfaa99618c8714340d366d8e387ae6583