summaryrefslogtreecommitdiff
path: root/pkgs/development/libraries/physics/cernlib/default.nix
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/development/libraries/physics/cernlib/default.nix')
-rw-r--r--pkgs/development/libraries/physics/cernlib/default.nix126
1 files changed, 49 insertions, 77 deletions
diff --git a/pkgs/development/libraries/physics/cernlib/default.nix b/pkgs/development/libraries/physics/cernlib/default.nix
index b589524113d2..e4a2f2435b97 100644
--- a/pkgs/development/libraries/physics/cernlib/default.nix
+++ b/pkgs/development/libraries/physics/cernlib/default.nix
@@ -1,102 +1,74 @@
-{ lib, stdenv, fetchurl, gfortran, imake, makedepend, motif, xorg, libxcrypt }:
+{
+ lib,
+ stdenv,
+ fetchpatch,
+ fetchurl,
+ cmake,
+ freetype,
+ gfortran,
+ gnused,
+ openssl,
+ libnsl,
+ motif,
+ xorg,
+ libxcrypt,
+}:
stdenv.mkDerivation rec {
- version = "2006";
+ version = "2024.06.12.0";
pname = "cernlib";
+ year = lib.versions.major version;
src = fetchurl {
urls = [
- "https://ftp.riken.jp/cernlib/download/${version}_source/tar/${version}_src.tar.gz"
- "https://cernlib.web.cern.ch/cernlib/download/${version}_source/tar/${version}_src.tar.gz"
+ "https://ftp.riken.jp/cernlib/download/${year}_source/tar/cernlib-cernlib-${version}-free.tar.gz"
+ "https://cernlib.web.cern.ch/download/${year}_source/tar/cernlib-cernlib-${version}-free.tar.gz"
];
- sha256 = "0awla1rl96z82br7slcmg8ks1d2a7slk6dj79ywb871j2ksi3fky";
+ hash = "sha256-SEFgQjPBkmRoaMD/7yXiXO9DZNrRhqZ01kptSDQur84=";
};
- buildInputs = with xorg; [ gfortran motif libX11 libXft libXt libxcrypt ];
- nativeBuildInputs = [ imake makedepend ];
- sourceRoot = ".";
-
- patches = [ ./patch.patch ./0001-Use-strerror-rather-than-sys_errlist-to-fix-compilat.patch ];
+ patches = [
+ (fetchpatch {
+ url = "https://github.com/user-attachments/files/16832928/geant321-fix-weak-alias-on-darwin.patch";
+ hash = "sha256-YzaUh4rJBszGdp5s/HDQMI5qQhCGrTt9P6XCgZOFn1I=";
+ })
+ ];
postPatch = ''
- echo 'InstallBinSubdirs(packlib scripts)' >> 2006/src/Imakefile
- substituteInPlace 2006/src/config/site.def \
- --replace "# define MakeCmd gmake" "# define MakeCmd make"
- substituteInPlace 2006/src/config/lnxLib.rules \
- --replace "# lib" "// lib"
-
- substituteInPlace 2006/src/config/linux.cf \
- --replace "# ifdef Hasgfortran" "# if 1" \
- --replace "# define CcCmd gcc4" "# define CcCmd gcc"
- substituteInPlace 2006/src/scripts/cernlib \
- --replace "-lnsl" ""
-
- # binutils 2.37 fix
- substituteInPlace 2006/src/config/Imake.tmpl --replace "clq" "cq"
+ substituteInPlace CMakeLists.txt \
+ --replace-fail "find_program ( SED NAMES gsed" "find_program ( SED NAMES sed"
'';
+ # gfortran warning's on iframework messes with CMake's check_fortran_compiler_flag
+ # see also https://github.com/NixOS/nixpkgs/issues/27218
preConfigure = ''
- export CERN=`pwd`
- export CERN_LEVEL=${version}
- export CERN_ROOT=$CERN/$CERN_LEVEL
- export CVSCOSRC=`pwd`/$CERN_LEVEL/src
- export PATH=$PATH:$CERN_ROOT/bin
+ export NIX_CFLAGS_COMPILE="$(echo $NIX_CFLAGS_COMPILE | sed 's|-iframework [^ ]*||g')"
'';
- FFLAGS = lib.optionals (lib.versionAtLeast gfortran.version "10.0.0") [
- # Fix https://github.com/vmc-project/geant3/issues/17
- "-fallow-invalid-boz"
-
- # Fix for gfortran 10
- "-fallow-argument-mismatch"
- ];
-
- NIX_CFLAGS = [ "-Wno-return-type" ];
-
- # Workaround build failure on -fno-common toolchains:
- # ld: libpacklib.a(kedit.o):kuip/klink1.h:11: multiple definition of `klnkaddr';
- # libzftplib.a(zftpcdf.o):zftp/zftpcdf.c:155: first defined here
- env.NIX_CFLAGS_COMPILE = "-fcommon";
-
- makeFlags = [
- "FORTRANOPTIONS=$(FFLAGS)"
- "CCOPTIONS=$(NIX_CFLAGS)"
- ];
-
- configurePhase = ''
- runHook preConfigure
-
- cd $CERN_ROOT
- mkdir -p build
- cd $CERN_ROOT/build
- $CVSCOSRC/config/imake_boot
-
- runHook postConfigure
- '';
-
- preBuild = ''
- make -j $NIX_BUILD_CORES $makeFlags bin/kuipc
- make -j $NIX_BUILD_CORES $makeFlags scripts/Makefile
- pushd scripts
- make -j $NIX_BUILD_CORES $makeFlags bin/cernlib
- popd
- '';
-
- installTargets = [ "install.bin" "install.lib" "install.include" ];
- installFlags = [
- "CERN_BINDIR=${placeholder "out"}/bin"
- "CERN_INCLUDEDIR=${placeholder "out"}/include"
- "CERN_LIBDIR=${placeholder "out"}/lib"
- "CERN_SHLIBDIR=${placeholder "out"}/libexec"
- ];
+ nativeBuildInputs = [ cmake ];
+ buildInputs = with xorg; [
+ freetype
+ gfortran
+ openssl
+ libX11
+ libXaw
+ libXft
+ libXt
+ libxcrypt
+ motif
+ ] ++ lib.optional stdenv.isLinux libnsl;
setupHook = ./setup-hook.sh;
meta = {
homepage = "http://cernlib.web.cern.ch";
description = "Legacy collection of libraries and modules for data analysis in high energy physics";
- broken = stdenv.isDarwin;
- platforms = [ "i686-linux" "x86_64-linux" "x86_64-darwin" ];
+ platforms = [
+ "aarch64-linux"
+ "i686-linux"
+ "x86_64-linux"
+ "x86_64-darwin"
+ ];
maintainers = with lib.maintainers; [ veprbl ];
license = lib.licenses.gpl2;
};