Compare commits

...
Sign in to create a new pull request.

47 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
Dennis Gilmore
7e674e6ca5 - Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild 2016-02-03 17:05:26 +00:00
Jerry James
5afc32e53f New upstream version. 2015-09-19 20:50:22 -06:00
Dennis Gilmore
496a9b21d2 - Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild 2015-06-17 01:53:48 +00:00
Jerry James
b20fb0df78 Fix the version number in the man page. 2015-06-15 22:27:11 -06:00
Kalev Lember
f5a362fa4c Rebuilt for GCC 5 C++11 ABI change 2015-05-02 12:47:43 +02:00
Jerry James
c3a010e697 Link with $RPM_LD_FLAGS. 2015-03-06 14:33:19 -07:00
Jerry James
f5a1a48336 Note bundled jquery.
Use license macro.
2015-02-11 15:05:47 -07:00
Peter Robinson
81a4f6223b - Rebuilt for https://fedoraproject.org/wiki/Fedora_21_22_Mass_Rebuild 2014-08-15 22:47:14 +00:00
Dennis Gilmore
90259ef4dc - Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild 2014-06-06 22:10:30 -05:00
Dennis Gilmore
27c1593f5a - Rebuilt for https://fedoraproject.org/wiki/Fedora_20_Mass_Rebuild 2013-08-02 22:36:34 -05:00
Dennis Gilmore
e24589ba04 - Rebuilt for https://fedoraproject.org/wiki/Fedora_19_Mass_Rebuild 2013-02-13 11:51:37 -06:00
Dennis Gilmore
e3d7aaa027 - Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild 2012-07-18 12:57:56 -05:00
6 changed files with 223 additions and 626 deletions

3
.gitignore vendored
View file

@ -1 +1,2 @@
/bliss-0.72.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,511 +0,0 @@
--- ./graph.cc.orig 2011-05-12 06:29:46.000000000 -0600
+++ ./graph.cc 2011-10-28 21:22:57.464203395 -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;
-}
-
@@ -618,7 +607,7 @@
} PathInfo;
-void
+bool
AbstractGraph::search(const bool canonical, Stats& stats)
{
const unsigned int N = get_nof_vertices();
@@ -658,7 +647,7 @@
if(N == 0)
{
/* Nothing to do, return... */
- return;
+ return true;
}
/* Initialize the partition ... */
@@ -696,10 +685,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 +699,7 @@
update_labeling(best_path_labeling);
/* Update statistics */
stats.nof_leaf_nodes = 1;
- return;
+ return true;
}
/*
@@ -718,20 +707,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
@@ -974,7 +982,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 +992,6 @@
*ep < next_split_element and
first_path_orbits.is_minimal_representative(*ep)) {
next_split_element = *ep;
- next_split_element_pos = ep;
}
}
}
@@ -1001,7 +1007,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 +1020,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 +1207,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 +1372,7 @@
goto handle_first_path_automorphism;
/* Should never get here because of CR:FP */
_INTERNAL_ERROR();
+ return false;
}
}
@@ -1598,8 +1605,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 +1675,7 @@
_INTERNAL_ERROR();
+ return false;
handle_first_path_automorphism:
@@ -1701,8 +1711,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 +1761,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 +1777,8 @@
report_hook = hook;
report_user_param = user_param;
- search(false, stats);
+ if (!search(false, stats))
+ return false;
if(first_path_labeling)
{
@@ -1776,6 +1790,7 @@
free(best_path_labeling);
best_path_labeling = 0;
}
+ return true;
}
@@ -1790,7 +1805,8 @@
report_hook = hook;
report_user_param = user_param;
- search(true, stats);
+ if (!search(true, stats))
+ return NULL;
return best_path_labeling;
}
@@ -3480,15 +3496,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 +3525,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 +3538,10 @@
ei++)
edges2.insert(*ei);
if(!(edges1 == edges2))
- return false;
+ return 0;
}
- return true;
+ return 1;
}
bool
@@ -4330,8 +4348,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 +5290,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 +5320,10 @@
edges2.insert(*ei);
if(!(edges1 == edges2))
- return false;
+ return 0;
}
- return true;
+ return 1;
}
--- ./bliss_C.cc.orig 2011-05-12 06:29:46.000000000 -0600
+++ ./bliss_C.cc 2011-10-28 21:22:39.428577545 -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();
--- ./bliss.cc.orig 2011-05-12 06:29:46.000000000 -0600
+++ ./bliss.cc 2011-10-28 21:22:39.429577524 -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);
--- ./defs.cc.orig 2011-05-12 06:29:46.000000000 -0600
+++ ./defs.cc 2011-10-28 21:22:39.429577524 -0600
@@ -33,7 +33,6 @@
vfprintf(stderr, fmt, ap);
fprintf(stderr, "\nAborting!\n");
va_end(ap);
- exit(1);
}
}
--- ./bliss_C.h.orig 2011-05-12 06:29:46.000000000 -0600
+++ ./bliss_C.h 2011-10-28 21:22:39.430577503 -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,
--- ./graph.hh.orig 2011-05-12 06:29:46.000000000 -0600
+++ ./graph.hh 2011-10-28 21:27:16.463811606 -0600
@@ -270,7 +270,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 +284,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,
@@ -362,7 +366,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 +431,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 +454,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,
@@ -615,7 +623,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 +864,7 @@
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 2012-03-16 10:55:45.139266642 -0600 --- include/bliss/abstractgraph.hh.orig 2022-06-17 07:24:11.000000000 -0600
+++ ./graph.cc 2012-03-16 10:57:42.429090440 -0600 +++ include/bliss/abstractgraph.hh 2023-02-01 09:32:06.289384074 -0700
@@ -597,16 +597,6 @@ public: @@ -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; }
}; };
--- 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
-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(); initialize_certificate();
std::vector<TreeNode> search_stack; std::vector<TreeNode> search_stack;
@ -25,7 +27,9 @@
std::vector<PathInfo> best_path_info; std::vector<PathInfo> best_path_info;
search_stack.clear(); search_stack.clear();
@@ -5466,7 +5455,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.clear();
component_elements = 0; component_elements = 0;
sh_return = 0; sh_return = 0;
@ -34,41 +38,3 @@
unsigned int sh_size = 0; unsigned int sh_size = 0;
unsigned int sh_nuconn = 0; unsigned int sh_nuconn = 0;
--- ./graph.hh.orig 2012-03-16 10:55:45.153266622 -0600
+++ ./graph.hh 2012-03-16 11:00:26.851843429 -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;
/**
@@ -355,7 +358,7 @@ protected:
*/
unsigned int cr_component_elements;
-
+ std::vector<PathInfo> first_path_info;
public:
@@ -508,6 +511,10 @@ public:
opt_use_long_prune = active;
}
+ /**
+ * Get an information vector about the first path.
+ */
+ std::vector<PathInfo> get_first_path_info() { return first_path_info; }
};

View file

@ -1,93 +1,111 @@
%global giturl https://github.com/scipopt/Bliss
Name: bliss Name: bliss
Version: 0.72 Version: 0.77
Release: 4%{?dist} Release: 11%{?dist}
Summary: Compute automorphism groups and canonical labelings of graphs Summary: Compute automorphism groups and canonical labelings of graphs
Group: Applications/Engineering License: LGPL-3.0-only
License: GPLv3 URL: https://users.aalto.fi/~tjunttil/bliss/
URL: http://www.tcs.hut.fi/Software/bliss/ VCS: git:%{giturl}.git
Source0: http://www.tcs.hut.fi/Software/bliss/%{name}-%{version}.zip Source0: %{giturl}/archive/v%{version}/Bliss-%{version}.tar.gz
# Man page written by Jerry James using text borrowed from the sources. # 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. # The man page therefore has the same copyright and license as the sources.
Source1: bliss.1 Source1: bliss.1
# Sent upstream 28 Oct 2011. Don't call exit() in library code. # Patch from Thomas Rehn, sent upstream 28 Oct 2011. Fix one bug and add one
Patch0: bliss-error.patch
# Patch from Thomas Rehn, also sent upstream. Fix one bug and add one
# performance enhancement. # performance enhancement.
Patch1: bliss-rehn.patch Patch: bliss-rehn.patch
# See https://fedoraproject.org/wiki/Changes/EncourageI686LeafRemoval
ExcludeArch: %{ix86}
BuildRequires: cmake
BuildRequires: doxygen BuildRequires: doxygen
BuildRequires: gcc-c++
BuildRequires: gmp-devel BuildRequires: gmp-devel
BuildRequires: make
Requires: %{name}-libs%{?_isa} = %{version}-%{release} Requires: %{name}-libs%{?_isa} = %{version}-%{release}
%global sover %(echo %{version} | cut -d. -f1)
%description %description
Bliss is an open source tool for computing automorphism groups and Bliss is an open source tool for computing automorphism groups and canonical
canonical forms of graphs. It has both a command line user interface as forms of graphs. It has both a command line user interface as well as C++ and
well as C++ and C programming language APIs. C programming language APIs.
%package devel %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 Summary: Headers and library files for developing with bliss
Group: Development/Libraries
Requires: %{name}-libs%{?_isa} = %{version}-%{release} Requires: %{name}-libs%{?_isa} = %{version}-%{release}
Requires: gmp-devel%{?_isa} Requires: gmp-devel%{?_isa}
%description devel %description devel
Headers and library files needed to develop applications that use the Headers and library files needed to develop applications that use the bliss
bliss library. library.
%package libs %package libs
Summary: Compute automorphism groups and canonical labelings of graphs Summary: Compute automorphism groups and canonical labelings of graphs
Group: Development/Libraries
%description libs %description libs
A command-line bliss tool to access the functionality of the bliss A command-line bliss tool to access the functionality of the bliss library.
library.
%prep %prep
%setup -q %autosetup -n Bliss-%{version} -p0
%patch0
%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 %build
# The Makefile creates a static library, so we roll our own shared library %cmake -DUSE_GMP:BOOL=ON
# here instead. Also, avoid an unused direct dependency on libm. %cmake_build
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 -lgmp -Wl,--as-needed
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 -L. -lbliss -lgmp \
-Wl,--as-needed
# Build the documentation # Build the documentation
doxygen doxygen
%install %install
# The Makefile has no install target. %cmake_install
# Install the library
mkdir -p $RPM_BUILD_ROOT%{_libdir}
cp -a libbliss.* $RPM_BUILD_ROOT%{_libdir}
# Install the header files
mkdir -p $RPM_BUILD_ROOT%{_includedir}/bliss
cp -p *.h *.hh $RPM_BUILD_ROOT%{_includedir}/bliss
# Install the binary
mkdir -p $RPM_BUILD_ROOT%{_bindir}
cp -p bliss $RPM_BUILD_ROOT%{_bindir}
# Install the man page # Install the man page
mkdir -p $RPM_BUILD_ROOT%{_mandir}/man1 mkdir -p %{buildroot}%{_mandir}/man1
cp -p %{SOURCE1} $RPM_BUILD_ROOT%{_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 %files
%{_bindir}/bliss %{_bindir}/bliss
@ -97,12 +115,130 @@ cp -p %{SOURCE1} $RPM_BUILD_ROOT%{_mandir}/man1
%doc html %doc html
%{_includedir}/bliss %{_includedir}/bliss
%{_libdir}/libbliss.so %{_libdir}/libbliss.so
%{_libdir}/cmake/Bliss/
%files libs %files libs
%doc COPYING.txt %doc CHANGES.txt
%{_libdir}/libbliss.so.* %license COPYING COPYING.LESSER
%{_libdir}/libbliss.so.2{,.*}
%changelog %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
* Sat Sep 19 2015 Jerry James <loganjerry@gmail.com> - 0.73-1
- New upstream version
* Wed Jun 17 2015 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 0.72-13
- Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild
* Sat May 02 2015 Kalev Lember <kalevlember@gmail.com> - 0.72-12
- Rebuilt for GCC 5 C++11 ABI change
* Fri Mar 6 2015 Jerry James <loganjerry@gmail.com> - 0.72-11
- Link with RPM_LD_FLAGS
* Wed Feb 11 2015 Jerry James <loganjerry@gmail.com> - 0.72-10
- Note bundled jquery
- Use license macro
* Fri Aug 15 2014 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 0.72-9
- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_22_Mass_Rebuild
* Sat Jun 07 2014 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 0.72-8
- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild
* Sat Aug 03 2013 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 0.72-7
- Rebuilt for https://fedoraproject.org/wiki/Fedora_20_Mass_Rebuild
* Wed Feb 13 2013 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 0.72-6
- Rebuilt for https://fedoraproject.org/wiki/Fedora_19_Mass_Rebuild
* Wed Jul 18 2012 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 0.72-5
- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild
* Fri Mar 16 2012 Jerry James <loganjerry@gmail.com> - 0.72-4 * Fri Mar 16 2012 Jerry James <loganjerry@gmail.com> - 0.72-4
- Apply bug fix and performance enhancement patch from Thomas Rehn - Apply bug fix and performance enhancement patch from Thomas Rehn

View file

@ -1 +1 @@
6f0e114944fa0863870b7f631850abb2 bliss-0.72.zip SHA512 (Bliss-0.77.tar.gz) = 27bd44695f2c1f3dfcb2f39f75fea3f61db29dfde4bef545bd14017830cd3d399b2e448ae7a703a5886bd433b22f6eddfaa99618c8714340d366d8e387ae6583