GNU bug report logs -
#64446
[PATCH] gnu: Add bliss.
Previous Next
To add a comment to this bug, you must first unarchive it, by sending
a message to control AT debbugs.gnu.org, with unarchive 64446 in the body.
You can then email your comments to 64446 AT debbugs.gnu.org in the normal way.
Toggle the display of automated, internal messages from the tracker.
Report forwarded
to
andreas <at> enge.fr, efraim <at> flashner.co.il, bavier <at> posteo.net, guix-patches <at> gnu.org
:
bug#64446
; Package
guix-patches
.
(Mon, 03 Jul 2023 21:25:01 GMT)
Full text and
rfc822 format available.
Acknowledgement sent
to
David Elsing <david.elsing <at> posteo.net>
:
New bug report received and forwarded. Copy sent to
andreas <at> enge.fr, efraim <at> flashner.co.il, bavier <at> posteo.net, guix-patches <at> gnu.org
.
(Mon, 03 Jul 2023 21:25:01 GMT)
Full text and
rfc822 format available.
Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):
* gnu/packages/maths.scm (bliss): New variable.
---
The Makefile is rudimentary, so it is easier to call g++ directly.
I did not include GMP, as it is only used to express group sizes exactly.
gnu/packages/maths.scm | 87 ++++++++++++++++++++++++++++++++++++++++++
1 file changed, 87 insertions(+)
diff --git a/gnu/packages/maths.scm b/gnu/packages/maths.scm
index 653e76027a..ff0aa6170b 100644
--- a/gnu/packages/maths.scm
+++ b/gnu/packages/maths.scm
@@ -8529,3 +8529,90 @@ (define-public scilab
optimization, and modeling, simulation of explicit and implicit dynamical
systems and symbolic manipulations.")
(license license:cecill))) ;CeCILL v2.1
+
+(define-public bliss
+ (package
+ (name "bliss")
+ (version "0.73")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "http://www.tcs.hut.fi/Software/bliss/bliss-"
+ version ".zip"))
+ (sha256
+ (base32
+ "110ggzyn4fpsq3haisv7pzkgfs5x1m7802r4n5cas30l0hlg6yzm"))))
+ (outputs (list "out" "doc"))
+ (build-system gnu-build-system)
+ (arguments
+ (list
+ #:tests? #f ; No tests
+ #:phases
+ #~(modify-phases %standard-phases
+ (add-after 'unpack 'fix-string-macro
+ (lambda _
+ (substitute* "bliss.cc"
+ (("\"__DATE__\"") "\" __DATE__ \""))))
+ ;; Move headers under the bliss/ prefix
+ (add-after 'unpack 'move-headers
+ (lambda _
+ (substitute* (find-files "." "\\.(h|hh|cc)$")
+ (("#include \"(.*)\"" all path)
+ (string-append "#include <bliss/" path ">")))
+ (mkdir-p "bliss")
+ (for-each
+ (lambda (file)
+ (rename-file file
+ (string-append "bliss/" (basename file))))
+ (find-files "." "\\.(h|hh)$"))))
+ (add-after 'move-headers 'disable-gmp
+ (lambda _
+ (substitute* "bliss/bignum.hh"
+ (("defined\\(BLISS_USE_GMP\\)") "0"))))
+ (delete 'configure)
+ (replace 'build
+ (lambda _
+ (let ((source-files
+ '("defs" "graph" "partition" "orbit" "uintseqhash" "heap"
+ "timer" "utils")))
+ (for-each
+ (lambda (file)
+ (display (string-append "Compiling " file "\n"))
+ (invoke "g++" "-I." "-fPIC" "-c" "-o"
+ (string-append file ".o")
+ (string-append file ".cc")))
+ source-files)
+ (let ((object-files
+ (map (lambda (file) (string-append file ".o"))
+ source-files)))
+ (display (string-append "Linking shared library\n"))
+ (apply invoke "g++" "-I." "-fPIC" "-shared"
+ "-o" "libbliss.so"
+ "bliss_C.cc"
+ object-files)
+ (display (string-append "Building bliss\n"))
+ (apply invoke "g++" "-I." "-o" "bliss.out" "bliss.cc"
+ "-L." "-lbliss"
+ (string-append "-Wl,-rpath=" #$output:out "/lib")
+ object-files)))))
+ (add-after 'build 'build-doc
+ (lambda _
+ (substitute* "Doxyfile"
+ (("INPUT *=.*") "INPUT = . bliss\n"))
+ (invoke "doxygen")))
+ (replace 'install
+ (lambda _
+ (install-file "libbliss.so" (string-append #$output:out "/lib"))
+ (mkdir-p (string-append #$output:out "/bin/"))
+ (copy-file "bliss.out" (string-append #$output:out "/bin/bliss"))
+ (copy-recursively "bliss"
+ (string-append #$output:out "/include/bliss"))
+ (copy-recursively
+ "html" (string-append #$output:doc "/share/doc/"
+ #$name "-" #$version "/html")))))))
+ (native-inputs (list doxygen unzip))
+ (home-page "http://www.tcs.hut.fi/Software/bliss/index.shtml")
+ (synopsis "Tool for computing automorphism groups and canonical labelings of graphs")
+ (description "@code{bliss} is a library 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.")
+ (license license:lgpl3)))
--
2.40.1
Information forwarded
to
guix-patches <at> gnu.org
:
bug#64446
; Package
guix-patches
.
(Wed, 26 Jul 2023 16:11:02 GMT)
Full text and
rfc822 format available.
Message #8 received at 64446 <at> debbugs.gnu.org (full text, mbox):
Hello,
I have spent quite a long time on this package, trying to simplify your
recipe.
Am Mon, Jul 03, 2023 at 09:21:32PM +0000 schrieb David Elsing:
> + (add-after 'unpack 'fix-string-macro
> + (lambda _
> + (substitute* "bliss.cc"
> + (("\"__DATE__\"") "\" __DATE__ \""))))
This so far is only a warning with newer gcc versions, so we do not really
need it.
> + ;; Move headers under the bliss/ prefix
> + (add-after 'unpack 'move-headers
> + (lambda _
> + (substitute* (find-files "." "\\.(h|hh|cc)$")
> + (("#include \"(.*)\"" all path)
> + (string-append "#include <bliss/" path ">")))
> + (mkdir-p "bliss")
> + (for-each
> + (lambda (file)
> + (rename-file file
> + (string-append "bliss/" (basename file))))
> + (find-files "." "\\.(h|hh)$"))))
All surprising phases need more comments for their rationale.
I added this:
;; Move headers under the bliss/ prefix. This is a Guix choice,
;; since the header names are sufficiently generic to cause
;; confusions with other packages ("heap.hh").
> + (add-after 'move-headers 'disable-gmp
> + (lambda _
> + (substitute* "bliss/bignum.hh"
> + (("defined\\(BLISS_USE_GMP\\)") "0"))))
This looks like it is not needed if using the Makefile.
> + (replace 'build
Here I am not convinced. You end up rewriting the Makefile in Guile.
The Makefile works, but it tries to create a binary "bliss", which
collides with the new file for the headers. This could be solved by
moving the content of the 'move-headers phase between the installation
of the bliss binary (after which it can be deleted) and the installation
of the headers.
Moreover, the Makefile does not create a dynamic, but only a static
library, and your build phase adds a dynamic library. Is this our role
as packagers?
According to the time stamps of the files inside the .zip, the software
dates from 2015 and is apparently unmaintained (otherwise I would have
suggested to get in touch with the developers to improve the Makefile).
So I wonder whether this software meets the quality standards for inclusion
into Guix.
Hm, I just found a new version here:
https://users.aalto.fi/~tjunttil/bliss/index.html :
"Compiling
In Linux and macOS, one can use GNU Make to compile the bliss executable, as well as the static and shared libraries, with (...)"!
And the author is here:
https://users.aalto.fi/~tjunttil/
Would you like to give it another try, David? And maybe discuss with the
author whether they would be willing to implement the bliss/ subdirectory
for the headers? (Given that there are now separate src/ and build/
subdirectories that would be quite easy.) And add an "install" target?
Andreas
Information forwarded
to
guix-patches <at> gnu.org
:
bug#64446
; Package
guix-patches
.
(Wed, 26 Jul 2023 16:23:01 GMT)
Full text and
rfc822 format available.
Message #11 received at 64446 <at> debbugs.gnu.org (full text, mbox):
Am Mon, Jul 03, 2023 at 09:21:32PM +0000 schrieb David Elsing:
> + (outputs (list "out" "doc"))
Oh, and I think the documentation is sufficiently small to be kept in the
same package.
Andreas
Information forwarded
to
guix-patches <at> gnu.org
:
bug#64446
; Package
guix-patches
.
(Wed, 20 Sep 2023 22:15:01 GMT)
Full text and
rfc822 format available.
Message #14 received at 64446 <at> debbugs.gnu.org (full text, mbox):
Andreas Enge <andreas <at> enge.fr> writes:
Hello,
thanks for your comments! I noticed that igraph actually contains a
bundled copy of bliss which uses GMP, so I added it as a dependency
here.
> ;; Move headers under the bliss/ prefix. This is a Guix choice,
> ;; since the header names are sufficiently generic to cause
> ;; confusions with other packages ("heap.hh").
In igraph, the bundled copy also has the files under the bliss/ prefix,
so I think it's good we do the same.
> Would you like to give it another try, David? And maybe discuss with the
> author whether they would be willing to implement the bliss/ subdirectory
> for the headers? (Given that there are now separate src/ and build/
> subdirectories that would be quite easy.) And add an "install" target?
I updated the package using the CMake build files in the new version.
During unbundling bliss from igraph, I saw that it also contains
a copy of CXSparse, which led me to split SuiteSparse into its
subpackages: https://issues.guix.gnu.org/66129.
When updating the igraph package, it would be good to use the
suitesparse-cxsparse package right away, so I did not include it yet.
The build with the bliss package succeeds however.
Cheers,
David
Information forwarded
to
guix-patches <at> gnu.org
:
bug#64446
; Package
guix-patches
.
(Wed, 20 Sep 2023 22:21:01 GMT)
Full text and
rfc822 format available.
Message #17 received at 64446 <at> debbugs.gnu.org (full text, mbox):
* gnu/packages/maths.scm (bliss): New variable.
---
gnu/packages/maths.scm | 85 ++++++++++++++++++++++++++++++++++++++++++
1 file changed, 85 insertions(+)
diff --git a/gnu/packages/maths.scm b/gnu/packages/maths.scm
index 6141c09886..76ac34a5d9 100644
--- a/gnu/packages/maths.scm
+++ b/gnu/packages/maths.scm
@@ -8567,3 +8567,88 @@ (define-public ruy
architecture.")
(license license:asl2.0))))
+(define-public bliss
+ (package
+ (name "bliss")
+ (version "0.77")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append
+ "https://users.aalto.fi/~tjunttil/bliss/downloads/bliss-"
+ version ".zip"))
+ (sha256
+ (base32
+ "193jb63kdwfas2cf61xj3fgkvhb6v2mnbwwpr0jas3zk6j0bkj5c"))))
+ (build-system cmake-build-system)
+ (arguments
+ (list
+ ;; There are no tests
+ #:tests? #f
+ #:configure-flags #~(list "-DUSE_GMP=ON") ; Used by igraph
+ #:phases
+ #~(modify-phases %standard-phases
+ ;; Ensure that GMP is used, otherwise the BigNum type changes.
+ (add-after 'unpack 'define-use-gmp
+ (lambda _
+ (substitute* "src/bignum.hh"
+ (("#pragma once.*" all)
+ (string-append all "#define BLISS_USE_GMP")))))
+ ;; Move headers under the bliss/ prefix. This is a Guix choice,
+ ;; since there are no upstream installation instructions and the
+ ;; header names are sufficiently generic to cause confusions with
+ ;; other packages (e.g. "heap.hh").
+ (add-after 'define-use-gmp 'move-headers
+ (lambda _
+ (substitute* (find-files "src")
+ (("#include \"(.*)\"" _ path)
+ (string-append "#include <bliss/" path ">")))
+ (mkdir-p "include/bliss")
+ (for-each
+ (lambda (file)
+ (rename-file file
+ (string-append "include/bliss/" (basename file))))
+ (find-files "src" "\\.(h|hh)$"))
+ (substitute* "Doxyfile"
+ (("INPUT *=.*") "INPUT = bliss"))))
+ (add-after 'move-headers 'patch-cmake
+ (lambda _
+ (let ((port (open-file "CMakeLists.txt" "a")))
+ (display
+ (apply
+ string-append
+ ;; Install the executable and the shared library.
+ "install(TARGETS bliss)\n"
+ "install(TARGETS bliss-executable)\n"
+ "install(DIRECTORY include/bliss DESTINATION include)\n"
+ "target_link_libraries(bliss PUBLIC ${GMP_LIBRARIES})\n"
+ ;; Missing include directories.
+ (map
+ (lambda (name)
+ (string-append
+ "target_include_directories(" name " PUBLIC\n"
+ "${CMAKE_CURRENT_SOURCE_DIR}/include"
+ " ${GMP_INCLUDE_DIR})\n"))
+ '("bliss" "bliss_static" "bliss-executable")))
+ port)
+ (close-port port))))
+ (add-after 'build 'build-doc
+ (lambda _
+ (mkdir "doc")
+ (with-directory-excursion "doc"
+ (let ((srcdir (string-append "../../bliss-" #$version)))
+ (copy-recursively (string-append srcdir "/include/bliss")
+ "bliss")
+ (invoke "doxygen" (string-append srcdir "/Doxyfile"))))))
+ (add-after 'install 'install-doc
+ (lambda _
+ (copy-recursively
+ "doc/html" (string-append #$output "/share/doc/"
+ #$name "-" #$version "/html")))))))
+ (native-inputs (list doxygen graphviz unzip))
+ (propagated-inputs (list gmp))
+ (home-page "https://users.aalto.fi/~tjunttil/bliss/index.html")
+ (synopsis "Tool for computing automorphism groups and canonical labelings of graphs")
+ (description "@code{bliss} is a library 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.")
+ (license license:lgpl3)))
--
2.41.0
Reply sent
to
Ludovic Courtès <ludo <at> gnu.org>
:
You have taken responsibility.
(Wed, 11 Oct 2023 17:13:01 GMT)
Full text and
rfc822 format available.
Notification sent
to
David Elsing <david.elsing <at> posteo.net>
:
bug acknowledged by developer.
(Wed, 11 Oct 2023 17:13:02 GMT)
Full text and
rfc822 format available.
Message #22 received at 64446-done <at> debbugs.gnu.org (full text, mbox):
Hi,
David Elsing <david.elsing <at> posteo.net> skribis:
> * gnu/packages/maths.scm (bliss): New variable.
I believe this version addresses the concerns Andreas raised. Applied!
Ludo’.
bug archived.
Request was from
Debbugs Internal Request <help-debbugs <at> gnu.org>
to
internal_control <at> debbugs.gnu.org
.
(Thu, 09 Nov 2023 12:24:09 GMT)
Full text and
rfc822 format available.
This bug report was last modified 1 year and 181 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.