From 3f2edde8a177932734218a370c7d674a1f00cfe4 Mon Sep 17 00:00:00 2001 From: qbisi Date: Fri, 9 Jan 2026 18:41:02 +0800 Subject: [PATCH] pagmo2: modernize; drop use of gold --- pkgs/by-name/pa/pagmo2/package.nix | 73 +++++++++++-------- .../python-modules/pygmo/default.nix | 6 -- 2 files changed, 43 insertions(+), 36 deletions(-) diff --git a/pkgs/by-name/pa/pagmo2/package.nix b/pkgs/by-name/pa/pagmo2/package.nix index bd390f7445af..04dd5b35123c 100644 --- a/pkgs/by-name/pa/pagmo2/package.nix +++ b/pkgs/by-name/pa/pagmo2/package.nix @@ -1,54 +1,67 @@ { - fetchFromGitHub, lib, stdenv, + fetchFromGitHub, cmake, eigen, nlopt, ipopt, boost, onetbb, - # tests pass but take 30+ minutes - runTests ? false, + testers, }: -stdenv.mkDerivation rec { +stdenv.mkDerivation (finalAttrs: { pname = "pagmo2"; version = "2.19.1"; src = fetchFromGitHub { owner = "esa"; repo = "pagmo2"; - rev = "v${version}"; + rev = "v${finalAttrs.version}"; sha256 = "sha256-ido3e0hQLDEPT0AmsfAVTPlGbWe5QBkxgRO6Fg1wp/c="; }; - nativeBuildInputs = [ cmake ]; - buildInputs = [ - eigen - nlopt - boost - onetbb - ] - ++ lib.optional (!stdenv.hostPlatform.isDarwin) ipopt; - - cmakeFlags = [ - "-DPAGMO_BUILD_TESTS=${if runTests then "ON" else "OFF"}" - "-DPAGMO_WITH_EIGEN3=yes" - "-DPAGMO_WITH_NLOPT=yes" - "-DNLOPT_LIBRARY=${nlopt}/lib/libnlopt${stdenv.hostPlatform.extensions.sharedLibrary}" - ] - ++ lib.optionals stdenv.hostPlatform.isLinux [ - "-DPAGMO_WITH_IPOPT=yes" - "-DCMAKE_CXX_FLAGS='-fuse-ld=gold'" - ] - ++ lib.optionals stdenv.hostPlatform.isDarwin [ - # FIXME: fails ipopt test with Invalid_Option on darwin, so disable. - "-DPAGMO_WITH_IPOPT=no" - "-DLLVM_USE_LINKER=gold" + outputs = [ + "out" + "dev" ]; - doCheck = runTests; + nativeBuildInputs = [ cmake ]; + + buildInputs = [ + onetbb + ]; + + propagatedBuildInputs = [ + eigen + nlopt + ipopt + boost + ]; + + cmakeFlags = [ + (lib.cmakeBool "PAGMO_BUILD_TESTS" finalAttrs.finalPackage.doCheck) + (lib.cmakeBool "PAGMO_WITH_EIGEN3" true) + (lib.cmakeBool "PAGMO_WITH_NLOPT" true) + (lib.cmakeBool "PAGMO_WITH_IPOPT" true) + ]; + + env = { + # Workaround clang17+ / lto bug + # See https://github.com/esa/pagmo2/pull/585 + # Should be removed in new release + NIX_CFLAGS_COMPILE = lib.optionalString stdenv.cc.isClang "-fno-assume-unique-vtables"; + }; + + doCheck = true; + + passthru = { + tests.cmake-config = testers.hasCmakeConfigModules { + moduleNames = [ "pagmo" ]; + package = finalAttrs.finalPackage; + }; + }; meta = { homepage = "https://esa.github.io/pagmo2/"; @@ -57,4 +70,4 @@ stdenv.mkDerivation rec { platforms = lib.platforms.unix; maintainers = [ lib.maintainers.costrouc ]; }; -} +}) diff --git a/pkgs/development/python-modules/pygmo/default.nix b/pkgs/development/python-modules/pygmo/default.nix index 3f42f2e7e7b3..af1195baf61b 100644 --- a/pkgs/development/python-modules/pygmo/default.nix +++ b/pkgs/development/python-modules/pygmo/default.nix @@ -5,9 +5,6 @@ fetchFromGitHub, cmake, boost, - eigen, - ipopt, - nlopt, pagmo2, python, cloudpickle, @@ -43,9 +40,6 @@ toPythonModule ( buildInputs = [ boost - eigen - ipopt - nlopt pagmo2 pybind11 ];