gnu: Add cube.

* gnu/packages/profiling.scm(cube): New variable.
* gnu/packages/patches/cube-nocheck.patch: New file.
* gnu/local.mk: Add it.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
This commit is contained in:
Dave Love 2017-10-02 21:48:45 +01:00 committed by Ludovic Courtès
parent 3c8d1f9492
commit a66408f8c0
No known key found for this signature in database
GPG Key ID: 090B11993D9AEBB5
3 changed files with 155 additions and 1 deletions

View File

@ -577,6 +577,7 @@ dist_patch_DATA = \
%D%/packages/patches/crda-optional-gcrypt.patch \
%D%/packages/patches/crossmap-allow-system-pysam.patch \
%D%/packages/patches/clucene-contribs-lib.patch \
%D%/packages/patches/cube-nocheck.patch \
%D%/packages/patches/curl-bounds-check.patch \
%D%/packages/patches/cursynth-wave-rand.patch \
%D%/packages/patches/cvs-2017-12836.patch \

View File

@ -0,0 +1,16 @@
Unconditionally disable network check for new versions (from Fedora).
diff -u /home/dlove/rpmbuild/BUILD/cube-4.3.4/src/GUI-qt/display/VersionCheckWidget.cpp\~ /home/dlove/rpmbuild/BUILD/cube-4.3.4/src/GUI-qt/display/VersionCheckWidget.cpp
--- cube-4.3.4/src/GUI-qt/display/VersionCheckWidget.cpp~ 2016-04-03 00:05:37.942066948 +0100
+++ cube-4.3.4/src/GUI-qt/display/VersionCheckWidget.cpp 2016-05-06 17:16:31.648143908 +0100
@@ -52,7 +52,8 @@
url = QUrl( UPDATE_CHECK_URL );
download = NULL;
update_Available = false;
- bool no_http = env_str2bool( getenv( "CUBE_DISABLE_HTTP_DOCS" ) );
+ // bool no_http = env_str2bool( getenv( "CUBE_DISABLE_HTTP_DOCS" ) );
+ bool no_http = true;
if ( !no_http )
{
updateDescription = tr( "Check for update is not performed yet." );

View File

@ -25,13 +25,18 @@
#:use-module (gnu packages)
#:use-module (gnu packages autotools)
#:use-module (gnu packages base) ;for "which"
#:use-module (gnu packages compression)
#:use-module (gnu packages documentation)
#:use-module (gnu packages fabric-management)
#:use-module (gnu packages gawk)
#:use-module (gnu packages gcc)
#:use-module (gnu packages glib)
#:use-module (gnu packages libunwind)
#:use-module (gnu packages linux)
#:use-module (gnu packages ncurses)
#:use-module (gnu packages python))
#:use-module (gnu packages perl)
#:use-module (gnu packages python)
#:use-module (gnu packages qt))
;; Fixme: Separate out lib and fix resulting cycle errors; separate libpfm
;; output(?); build libmsr and add that component.
@ -193,3 +198,135 @@ efficient event trace data format plus support library.")
and hybrid codes. It surrounds OpenMP directives and runtime library calls
with calls to the POMP2 measurement interface.")
(license license:bsd-3)))
(define-public cube
(package
(name "cube")
(version "4.3.5")
(source
(origin
(method url-fetch)
(uri (string-append
"http://apps.fz-juelich.de/scalasca/releases/cube/4.3/dist/cube-"
version ".tar.gz"))
(sha256 (base32 "04irflia4rfw02093w9nx7rr98r640y4q8hisjywvd4b7r3nzhhx"))
(patches (search-patches "cube-nocheck.patch"))))
(inputs `(("dbus" ,dbus)
("zlib" ,zlib)))
(native-inputs `(("perl" ,perl)
("qtbase" ,qtbase) ; native because of qmake
("which" ,which)))
;; FIXME: The doc is 14MB, but adding a doc output results in a cycle.
(outputs '("out" ;"doc"
"lib"))
(build-system gnu-build-system)
(arguments
`(#:configure-flags
`("--enable-shared" "--disable-static" "--disable-silent-rules"
,(string-append "LDFLAGS=-L" (assoc-ref %outputs "lib") "/lib"))
#:parallel-tests? #f
#:phases
(modify-phases %standard-phases
(add-after 'configure 'rpath
;; Account for moving GUI stuff
(lambda* (#:key outputs #:allow-other-keys)
(let ((wl (string-append "-Wl,-rpath=" (assoc-ref outputs "out")
"/lib")))
(substitute* "build-backend/Makefile"
(("^cube_LDFLAGS =") (string-append "cube_LDFLAGS = " wl))
(("^libheatmap_plugin_la_LDFLAGS =")
(string-append "libheatmap_plugin_la_LDFLAGS = " wl))
(("^libbarplot_plugin_la_LDFLAGS =")
(string-append "libbarplot_plugin_la_LDFLAGS = " wl)))
#t)))
(add-before 'install 'includes-cube
;; It tries to install here before include exists.
(lambda* (#:key outputs #:allow-other-keys)
(let ((inc (string-append (assoc-ref outputs "lib") "/include")))
(mkdir-p (string-append inc "/cube"))
(mkdir-p (string-append inc "/cubew"))
#t)))
(add-after 'install 'licence
(lambda* (#:key outputs #:allow-other-keys)
(let ((doc (string-append (assoc-ref outputs "lib")
"/share/doc/cube")))
(install-file "COPYING" doc)
#t)))
;; XXX: Commented due to cycle (see comment above.)
;; (add-after 'install 'doc
;; (lambda _
;; (let ((share (string-append (assoc-ref %outputs "doc")
;; "/share")))
;; (mkdir-p share)
;; (rename-file (string-append %output "/share/doc")
;; (string-append share "/doc")))))
(add-after 'install 'gui-stuff
;; Get the Qt horror dependencies out of the lib closure
(lambda _
(let ((outlib (string-append (assoc-ref %outputs "out") "/lib"))
(lib (string-append (assoc-ref %outputs "lib") "/lib")))
(mkdir-p outlib)
(rename-file (string-append lib "/cube-plugins")
(string-append outlib "/cube-plugins"))
(for-each (lambda (file)
(rename-file
file (string-append outlib "/" (basename file))))
(append (find-files lib "libgraphwidgetcommon-plugin\\..*")
(find-files lib "libcube4gui\\.so.*")))
#t)))
(add-after 'install 'move-include
;; Most of the headers end up under %output for some reason,
;; despite --includedir in configure.
(lambda* (#:key outputs #:allow-other-keys)
(let ((outinc (string-append (assoc-ref outputs "out")
"/include"))
(libinc (string-append (assoc-ref outputs "lib")
"/include")))
(for-each (lambda (file)
(let ((from (string-append outinc "/" file)))
(copy-recursively from libinc)
(delete-file-recursively from)))
'("cube" "cubew"))
#t)))
;; XXX: This doesn't work because cube-config, which is needed for
;; building stuff, sources cube-config-frontend. We don't want that
;; in the lib output because it pulls in >1GB via QT.
;;
;; (add-after 'install 'cube-config
;; (lambda _
;; (let* ((lib (assoc-ref %outputs "lib"))
;; (libbin (string-append lib "/bin")))
;; (mkdir-p libbin)
;; (system (string-append "mv " (assoc-ref %outputs "out")
;; "/bin/cube-config* " libbin))
;; (substitute* (list (string-append libbin "/cube-config"))
;; (("^prefix=.*") (string-append "prefix=" lib))
;; (("^exec_prefix=\"\\$\\{prefix\\}\"")
;; (string-append "exec_prefix=" lib))))))
(add-after 'install 'cube-config
(lambda* (#:key outputs #:allow-other-keys)
(let* ((lib (assoc-ref outputs "lib"))
(libbin (string-append lib "/bin")))
(mkdir-p libbin)
(install-file (string-append %output "/bin/cube-config") libbin)
(install-file (string-append %output "/bin/cube-config-backend")
libbin)
(substitute* (list (string-append libbin "/cube-config"))
(("^source .*frontend.*$") "")
(((assoc-ref outputs "out")) lib))
#t))))))
(home-page "http://www.scalasca.org/software/cube-4.x/download.html")
(synopsis "Performance report explorer for parallel programs")
(description
"CUBE (CUBE Uniform Behavioral Encoding) is a tool to display a variety
of performance metrics for parallel programs including MPI and OpenMP
applications. CUBE allows interactive exploration of a multidimensional
performance space in a scalable fashion. Scalability is achieved in two ways:
hierarchical decomposition of individual dimensions and aggregation across
different dimensions. All performance metrics are uniformly accommodated in
the same display and thus provide the ability to easily compare the effects of
different kinds of performance behavior.")
(license license:bsd-3)))