[bug#64504] gnu: Add unsio.
Commit Message
Am Tue, Aug 08, 2023 at 01:37:14PM +0200 schrieb Iliya Tikhonenko:
> On 8/8/23 11:29, Andreas Enge wrote:
> > For the #:build-type, the default value (release with debug information) also works and results in a package of the same size. Is there a reason to change it? Modified patch attached.
> The debug build type is unnecessary verbose (see src/uns.cc line 71-73 for
> an example) to the point that it impacts performance sometimes, which is
> important considering the usecase of the library.
Okay, I have reinstated your line and added a comment.
> > I can also compile the package without the configure flags, are they useful?
> Checked again, I still cannot compile it without -DCMAKE_CXX_STANDARD=14
I can... Patch attached.
> > And there are lots of warnings about 34 bit shifts in a 32 bit type.
> > But I suppose you tested that the library works.
> I have not noticed any issues using it during the past two years, but this
> cannot be considered a proper test because I am actually using a small
> subset of the library. Perhaps, this warning should be reported upstream,
> thanks!
/tmp/guix-build-unsio-1.3.3-0.25e5246.drv-0/source/src/snapshotinterface.cc:125:45: warning: result of ‘(-2147483648 << 2)’ requires 34 bits to represent, but ‘int’ only has 32 bits [-Wshift-overflow=]
125 | req_bits = (unsigned int) (( 1 << 31 )<<2)-1;
| ~~~~~~~~~~~~^~~~
Here is the offending line. This is indeed a bit surprising, as "int"
usually has 32 bits. The 1 to be shifted is a signed int; 1*2^31 is not
representable in the type, so if I understand the C standard correctly,
the result is undefined. Then I have seen a Stackoverflow comment that
it is okay in C++20. And indeed:
#:configure-flags #~(list "-DCMAKE_CXX_STANDARD=20")
passes without these warnings. Should we add this?
Although such constructs look a bit brittle to me, and it is not
suggested by the author.
There is still the question about the lib64/ installation directory,
I think this should be changed.
Andreas
From ebfdbb4941d1151d15ecc0efb5aacdd3532b30cb Mon Sep 17 00:00:00 2001
Message-ID: <ebfdbb4941d1151d15ecc0efb5aacdd3532b30cb.1691508861.git.andreas@enge.fr>
From: Sharlatan Hellseher <sharlatanus@gmail.com>
Date: Thu, 6 Jul 2023 23:13:05 +0100
Subject: [PATCH] gnu: Add unsio.
* gnu/packages/astronomy.scm (unsio): New variable.
Co-Authored-By: Iliya Tikhonenko <tikhonenko@mpe.mpg.de>
Signed-off-by: Andreas Enge <andreas@enge.fr>
---
gnu/packages/astronomy.scm | 31 +++++++++++++++++++++++++++++++
1 file changed, 31 insertions(+)
base-commit: 782ef67a59f4b564f16101cf23c30a3777b3f734
Comments
On 8/8/23 17:49, Andreas Enge wrote:
> Am Tue, Aug 08, 2023 at 01:37:14PM +0200 schrieb Iliya Tikhonenko:
>> On 8/8/23 11:29, Andreas Enge wrote:
>> The debug build type is unnecessary verbose (see src/uns.cc line 71-73 for
>> an example) to the point that it impacts performance sometimes, which is
>> important considering the usecase of the library.
> Okay, I have reinstated your line and added a comment.Fine, maybe "to disable debug printing" would sound slightly more clear,
but I am not sure.
>> Checked again, I still cannot compile it without -DCMAKE_CXX_STANDARD=14
> I can... Patch attached.
Yeah, it builds now.
> #:configure-flags #~(list "-DCMAKE_CXX_STANDARD=20")
> passes without these warnings. Should we add this?
> Although such constructs look a bit brittle to me, and it is not suggested by the author.
>
> There is still the question about the lib64/ installation directory,
> I think this should be changed.
I think I am fine with both changes. I did a few quick tests and have
not noticed any issues.
All the best,
Iliya
Hello,
On 8/8/23 17:49, Andreas Enge wrote:
> There is still the question about the lib64/ installation directory,
> I think this should be changed.
I just did with a little snippet; this has been programmed manually by the
author, so could not be changed using cmake variables.
Pushed, thanks for the new package!
Andreas
@@ -9,6 +9,7 @@
;;; Copyright © 2021, 2022 Vinicius Monego <monego@posteo.net>
;;; Copyright © 2021 Greg Hogan <code@greghogan.com>
;;; Copyright © 2021 Foo Chuan Wei <chuanwei.foo@hotmail.com>
+;;; Copyright © 2023 Iliya Tikhonenko <tikhonenko@mpe.mpg.de>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -75,6 +76,7 @@ (define-module (gnu packages astronomy)
#:use-module (gnu packages python-xyz)
#:use-module (gnu packages qt)
#:use-module (gnu packages readline)
+ #:use-module (gnu packages sqlite)
#:use-module (gnu packages sphinx)
#:use-module (gnu packages textutils)
#:use-module (gnu packages time)
@@ -3951,3 +3953,32 @@ (define-public python-wiimatch
for optimal @code{matching} of weighted N-dimensional image intensity data
using (multivariate) polynomials.")
(license license:bsd-3)))
+
+(define-public unsio
+ ;; There is no versioned tag, use the latest commit.
+ (let ((commit "25e52468298e1194c9726ef5dba9d5fbb46870f5")
+ (revision "0"))
+ (package
+ (name "unsio")
+ (version (git-version "1.3.3" revision commit))
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://gitlab.lam.fr/infrastructure/unsio")
+ (commit commit)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "110i2p5608zhh5w3pf3b5r2651hykw2ayspgq6vpqsffhya1p170"))))
+ (build-system cmake-build-system)
+ (arguments
+ (list #:tests? #f ;No tests
+ #:build-type "Release")) ; to improve performace
+ (inputs (list gfortran hdf5 perl sqlite zlib))
+ (home-page "https://projets.lam.fr/projects/unsio/wiki")
+ (synopsis "Input and output routines for n-body file formats")
+ (description
+ "@acronym{UNSIO, Universal Nbody Snapshot Input Output} provides
+an API for performing input and output operations on different kinds of
+n-body file formats (nemo, Gadget binaries 1 and 2, Gadget hdf5, Ramses).")
+ (license license:cecill))))