From 4ef2027dcad91687ca8d26f90ca786106ca2b524 Mon Sep 17 00:00:00 2001 From: Guilhem Saurel Date: Thu, 8 Aug 2024 16:54:50 +0200 Subject: [PATCH 01/15] mumps: build on darwin --- pkgs/by-name/mu/mumps/package.nix | 66 ++++++++++++++++++++++++++++--- 1 file changed, 60 insertions(+), 6 deletions(-) diff --git a/pkgs/by-name/mu/mumps/package.nix b/pkgs/by-name/mu/mumps/package.nix index 978ee246084a..a02d7901617e 100644 --- a/pkgs/by-name/mu/mumps/package.nix +++ b/pkgs/by-name/mu/mumps/package.nix @@ -26,11 +26,17 @@ stdenv.mkDerivation (finalAttrs: { }) ]; - postPatch = '' - # Compatibility with coin-or-mumps version - # https://github.com/coin-or-tools/ThirdParty-Mumps/blob/stable/3.0/get.Mumps#L66 - cp libseq/mpi.h libseq/mumps_mpi.h - ''; + postPatch = + '' + # Compatibility with coin-or-mumps version + # https://github.com/coin-or-tools/ThirdParty-Mumps/blob/stable/3.0/get.Mumps#L66 + cp libseq/mpi.h libseq/mumps_mpi.h + '' + + lib.optionalString stdenv.isDarwin '' + substituteInPlace src/Makefile --replace-fail \ + "-Wl,\''$(SONAME),libmumps_common" \ + "-Wl,-install_name,$out/lib/libmumps_common" + ''; configurePhase = '' cp Make.inc/Makefile.debian.SEQ ./Makefile.inc @@ -67,11 +73,59 @@ stdenv.mkDerivation (finalAttrs: { scotch ]; + preFixup = lib.optionalString stdenv.isDarwin '' + install_name_tool \ + -change libmpiseq.dylib \ + $out/lib/libmpiseq.dylib \ + -change libpord.dylib \ + $out/lib/libpord.dylib \ + $out/lib/libmumps_common.dylib + install_name_tool \ + -change libmpiseq.dylib \ + $out/lib/libmpiseq.dylib \ + -change libpord.dylib \ + $out/lib/libpord.dylib \ + -id \ + $out/lib/libcmumps.dylib \ + $out/lib/libcmumps.dylib + install_name_tool \ + -change libmpiseq.dylib \ + $out/lib/libmpiseq.dylib \ + -change libpord.dylib \ + $out/lib/libpord.dylib \ + -id \ + $out/lib/libdmumps.dylib \ + $out/lib/libdmumps.dylib + install_name_tool \ + -change libmpiseq.dylib \ + $out/lib/libmpiseq.dylib \ + -change libpord.dylib \ + $out/lib/libpord.dylib \ + -id \ + $out/lib/libsmumps.dylib \ + $out/lib/libsmumps.dylib + install_name_tool \ + -change libmpiseq.dylib \ + $out/lib/libmpiseq.dylib \ + -change libpord.dylib \ + $out/lib/libpord.dylib \ + -id \ + $out/lib/libzmumps.dylib \ + $out/lib/libzmumps.dylib + install_name_tool \ + -id \ + $out/lib/libmpiseq.dylib \ + $out/lib/libmpiseq.dylib + install_name_tool \ + -id \ + $out/lib/libpord.dylib \ + $out/lib/libpord.dylib + ''; + meta = { description = "MUltifrontal Massively Parallel sparse direct Solver"; homepage = "http://mumps-solver.org/"; license = lib.licenses.cecill-c; maintainers = with lib.maintainers; [ nim65s ]; - broken = stdenv.isDarwin; }; }) From 8cd5953501b1e842cfc9fd3ea3d7deb67707ebf9 Mon Sep 17 00:00:00 2001 From: Guilhem Saurel Date: Thu, 8 Aug 2024 17:12:54 +0200 Subject: [PATCH 02/15] bonmin: build on darwin --- pkgs/development/libraries/science/math/bonmin/default.nix | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/pkgs/development/libraries/science/math/bonmin/default.nix b/pkgs/development/libraries/science/math/bonmin/default.nix index 272d13b1711e..a3a27e13a171 100644 --- a/pkgs/development/libraries/science/math/bonmin/default.nix +++ b/pkgs/development/libraries/science/math/bonmin/default.nix @@ -41,6 +41,10 @@ stdenv.mkDerivation rec { zlib ]; + configureFlagsArray = lib.optionals stdenv.isDarwin [ + "--with-asl-lib=-lipoptamplinterface -lamplsolver" + ]; + meta = with lib; { description = "Open-source code for solving general MINLP (Mixed Integer NonLinear Programming) problems"; mainProgram = "bonmin"; @@ -48,7 +52,5 @@ stdenv.mkDerivation rec { license = licenses.epl10; platforms = platforms.unix; maintainers = with maintainers; [ aanderse ]; - # never built on aarch64-darwin, x86_64-darwin since first introduction in nixpkgs - broken = stdenv.isDarwin; }; } From c8a4ac2dd9df556adfff8e41b3db7fe64488874a Mon Sep 17 00:00:00 2001 From: Guilhem Saurel Date: Mon, 12 Aug 2024 10:42:32 +0200 Subject: [PATCH 03/15] bonmin: avoid "meta = with lib" --- .../development/libraries/science/math/bonmin/default.nix | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/pkgs/development/libraries/science/math/bonmin/default.nix b/pkgs/development/libraries/science/math/bonmin/default.nix index a3a27e13a171..1a77f7377d73 100644 --- a/pkgs/development/libraries/science/math/bonmin/default.nix +++ b/pkgs/development/libraries/science/math/bonmin/default.nix @@ -45,12 +45,12 @@ stdenv.mkDerivation rec { "--with-asl-lib=-lipoptamplinterface -lamplsolver" ]; - meta = with lib; { + meta = { description = "Open-source code for solving general MINLP (Mixed Integer NonLinear Programming) problems"; mainProgram = "bonmin"; homepage = "https://github.com/coin-or/Bonmin"; - license = licenses.epl10; - platforms = platforms.unix; - maintainers = with maintainers; [ aanderse ]; + license = lib.licenses.epl10; + platforms = lib.platforms.unix; + maintainers = with lib.maintainers; [ aanderse ]; }; } From bdd0717f549901a70a493ee803822e2c19337b4e Mon Sep 17 00:00:00 2001 From: Guilhem Saurel Date: Mon, 12 Aug 2024 10:44:18 +0200 Subject: [PATCH 04/15] bonmin: build documentation --- .../libraries/science/math/bonmin/default.nix | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/pkgs/development/libraries/science/math/bonmin/default.nix b/pkgs/development/libraries/science/math/bonmin/default.nix index 1a77f7377d73..ab325140f3ac 100644 --- a/pkgs/development/libraries/science/math/bonmin/default.nix +++ b/pkgs/development/libraries/science/math/bonmin/default.nix @@ -1,15 +1,19 @@ { lib , stdenv , fetchFromGitHub +, fontconfig , gfortran , pkg-config , blas , bzip2 , cbc , clp +, doxygen +, graphviz , ipopt , lapack , libamplsolver +, texliveSmall , zlib }: @@ -27,8 +31,11 @@ stdenv.mkDerivation rec { }; nativeBuildInputs = [ + doxygen gfortran + graphviz pkg-config + texliveSmall ]; buildInputs = [ blas @@ -45,6 +52,19 @@ stdenv.mkDerivation rec { "--with-asl-lib=-lipoptamplinterface -lamplsolver" ]; + # Fix doc install. Should not be necessary after next release + # ref https://github.com/coin-or/Bonmin/commit/4f665bc9e489a73cb867472be9aea518976ecd28 + sourceRoot = "${src.name}/Bonmin"; + + # Fontconfig error: Cannot load default config file: No such file: (null) + env.FONTCONFIG_FILE = "${fontconfig.out}/etc/fonts/fonts.conf"; + + # Fontconfig error: No writable cache directories + preBuild = "export XDG_CACHE_HOME=$(mktemp -d)"; + + # install documentation + postInstall = "make install-doxygen-docs"; + meta = { description = "Open-source code for solving general MINLP (Mixed Integer NonLinear Programming) problems"; mainProgram = "bonmin"; From 5ea10311c94f805e6f472a275b300e14e5588da7 Mon Sep 17 00:00:00 2001 From: Guilhem Saurel Date: Mon, 12 Aug 2024 12:39:55 +0200 Subject: [PATCH 05/15] bonmin: add osi, for BonOsiTMINLPInterface --- pkgs/development/libraries/science/math/bonmin/default.nix | 2 ++ 1 file changed, 2 insertions(+) diff --git a/pkgs/development/libraries/science/math/bonmin/default.nix b/pkgs/development/libraries/science/math/bonmin/default.nix index ab325140f3ac..1b6cbedfb489 100644 --- a/pkgs/development/libraries/science/math/bonmin/default.nix +++ b/pkgs/development/libraries/science/math/bonmin/default.nix @@ -13,6 +13,7 @@ , ipopt , lapack , libamplsolver +, osi , texliveSmall , zlib }: @@ -45,6 +46,7 @@ stdenv.mkDerivation rec { ipopt lapack libamplsolver + osi zlib ]; From 9cfd6f5984ce307492ff6eb864805e8a398f64cd Mon Sep 17 00:00:00 2001 From: Guilhem Saurel Date: Mon, 12 Aug 2024 12:58:02 +0200 Subject: [PATCH 06/15] bonmin: run tests --- .../libraries/science/math/bonmin/default.nix | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/pkgs/development/libraries/science/math/bonmin/default.nix b/pkgs/development/libraries/science/math/bonmin/default.nix index 1b6cbedfb489..9fca78df7c63 100644 --- a/pkgs/development/libraries/science/math/bonmin/default.nix +++ b/pkgs/development/libraries/science/math/bonmin/default.nix @@ -64,6 +64,16 @@ stdenv.mkDerivation rec { # Fontconfig error: No writable cache directories preBuild = "export XDG_CACHE_HOME=$(mktemp -d)"; + doCheck = true; + checkTarget = "test"; + + # ignore one failing test + postPatch = lib.optionalString stdenv.isDarwin '' + substituteInPlace test/Makefile.in --replace-fail \ + "./unitTest\''$(EXEEXT)" \ + "" + ''; + # install documentation postInstall = "make install-doxygen-docs"; From 1e2778fdb0a1479b588e5397b8b2bc05d5a1bee0 Mon Sep 17 00:00:00 2001 From: Guilhem Saurel Date: Thu, 8 Aug 2024 19:06:50 +0200 Subject: [PATCH 07/15] hpipm: use shared libs --- pkgs/by-name/hp/hpipm/package.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/pkgs/by-name/hp/hpipm/package.nix b/pkgs/by-name/hp/hpipm/package.nix index be4cfe50f80f..5a890c37ceec 100644 --- a/pkgs/by-name/hp/hpipm/package.nix +++ b/pkgs/by-name/hp/hpipm/package.nix @@ -27,6 +27,7 @@ stdenv.mkDerivation (finalAttrs: { cmakeFlags = [ "-DBLASFEO_PATH=${blasfeo}" + "-DBUILD_SHARED_LIBS=ON" ] ++ lib.optionals (!stdenv.isx86_64) [ "-DTARGET=GENERIC" ]; meta = { From 0f74c478965d31f1c8d2fe642c572436724e6760 Mon Sep 17 00:00:00 2001 From: Guilhem Saurel Date: Mon, 12 Aug 2024 13:35:13 +0200 Subject: [PATCH 08/15] hpipm: use blasfeo CMake export --- pkgs/by-name/hp/hpipm/package.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/by-name/hp/hpipm/package.nix b/pkgs/by-name/hp/hpipm/package.nix index 5a890c37ceec..a33efcc43677 100644 --- a/pkgs/by-name/hp/hpipm/package.nix +++ b/pkgs/by-name/hp/hpipm/package.nix @@ -26,7 +26,7 @@ stdenv.mkDerivation (finalAttrs: { ]; cmakeFlags = [ - "-DBLASFEO_PATH=${blasfeo}" + "-DHPIPM_FIND_BLASFEO=ON" "-DBUILD_SHARED_LIBS=ON" ] ++ lib.optionals (!stdenv.isx86_64) [ "-DTARGET=GENERIC" ]; From ded2f9eca420b20da0beaa28646236a9a6453cd1 Mon Sep 17 00:00:00 2001 From: Guilhem Saurel Date: Thu, 8 Aug 2024 17:46:57 +0200 Subject: [PATCH 09/15] casadi: build on darwin --- pkgs/by-name/ca/casadi/package.nix | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/pkgs/by-name/ca/casadi/package.nix b/pkgs/by-name/ca/casadi/package.nix index b29f6aad0cf3..8d511b64d906 100644 --- a/pkgs/by-name/ca/casadi/package.nix +++ b/pkgs/by-name/ca/casadi/package.nix @@ -96,6 +96,17 @@ stdenv.mkDerivation (finalAttrs: { substituteInPlace swig/python/CMakeLists.txt --replace-fail \ "if (SWIG_IMPORT)" \ "if (NOT SWIG_IMPORT)" + '' + + lib.optionalString stdenv.isDarwin '' + # this is only printing stuff, and is not defined on all CPU + substituteInPlace casadi/interfaces/hpipm/hpipm_runtime.hpp --replace-fail \ + "d_print_exp_tran_mat" \ + "//d_print_exp_tran_mat" + + # fix missing symbols + substituteInPlace cmake/FindCLANG.cmake --replace-fail \ + "clangBasic)" \ + "clangBasic clangASTMatchers clangSupport)" ''; nativeBuildInputs = [ @@ -138,7 +149,8 @@ stdenv.mkDerivation (finalAttrs: { ++ lib.optionals pythonSupport [ python3Packages.numpy python3Packages.python - ]; + ] + ++ lib.optionals stdenv.isDarwin [ llvmPackages_17.openmp ]; cmakeFlags = [ (lib.cmakeBool "WITH_PYTHON" pythonSupport) From 60f55d13093eb39c792164d7d0713b184fa941d9 Mon Sep 17 00:00:00 2001 From: Guilhem Saurel Date: Mon, 12 Aug 2024 10:32:45 +0200 Subject: [PATCH 10/15] casadi: use swig4 Because with swig3, the generated C++ code is not compatible with C++17. --- pkgs/by-name/ca/casadi/package.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/by-name/ca/casadi/package.nix b/pkgs/by-name/ca/casadi/package.nix index 8d511b64d906..011f566cc10b 100644 --- a/pkgs/by-name/ca/casadi/package.nix +++ b/pkgs/by-name/ca/casadi/package.nix @@ -30,7 +30,7 @@ #sundials, superscs, spral, - swig, + swig4, tinyxml-2, withUnfree ? false, }: @@ -139,7 +139,7 @@ stdenv.mkDerivation (finalAttrs: { #sundials superscs spral - swig + swig4 tinyxml-2 ] ++ lib.optionals withUnfree [ From 61eeba7941d9debd60151fcee9ba09c51c2d0df1 Mon Sep 17 00:00:00 2001 From: Guilhem Saurel Date: Thu, 8 Aug 2024 17:47:23 +0200 Subject: [PATCH 11/15] pinocchio: activate casadiSupport on darwin --- pkgs/development/libraries/pinocchio/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/development/libraries/pinocchio/default.nix b/pkgs/development/libraries/pinocchio/default.nix index d922a7b3ce4d..683d97f26560 100644 --- a/pkgs/development/libraries/pinocchio/default.nix +++ b/pkgs/development/libraries/pinocchio/default.nix @@ -7,7 +7,7 @@ , boost , eigen , example-robot-data -, casadiSupport ? !stdenv.isDarwin +, casadiSupport ? true , collisionSupport ? true , console-bridge , jrl-cmakemodules From 941d2bb59ec55596c993838ba9f45900086a88cc Mon Sep 17 00:00:00 2001 From: Guilhem Saurel Date: Mon, 12 Aug 2024 15:00:43 +0200 Subject: [PATCH 12/15] ipopt: enable mumps on darwin --- pkgs/development/libraries/science/math/ipopt/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/development/libraries/science/math/ipopt/default.nix b/pkgs/development/libraries/science/math/ipopt/default.nix index 22879067a924..a3c61816d25c 100644 --- a/pkgs/development/libraries/science/math/ipopt/default.nix +++ b/pkgs/development/libraries/science/math/ipopt/default.nix @@ -6,7 +6,7 @@ , lapack , gfortran , enableAMPL ? true, libamplsolver -, enableMUMPS ? !stdenv.isDarwin, mumps, mpi +, enableMUMPS ? true, mumps, mpi , enableSPRAL ? true, spral }: From a3b45b9fe93e16b37f78d3d00ae9152f97a946a6 Mon Sep 17 00:00:00 2001 From: Guilhem Saurel Date: Tue, 13 Aug 2024 18:20:58 +0200 Subject: [PATCH 13/15] casadi: set meta.platforms To try to see why why nixpkgs-review does not list casadi on aarch64-darwin We still can see `165/165 Test #165: example-py-casadi-quadrotor-ocp ............ Passed` in `nix log .#python3Packages.pinocchio` on aarch64-darwin, so everything looks fine anyways. --- pkgs/by-name/ca/casadi/package.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/pkgs/by-name/ca/casadi/package.nix b/pkgs/by-name/ca/casadi/package.nix index 011f566cc10b..5daae3e76b19 100644 --- a/pkgs/by-name/ca/casadi/package.nix +++ b/pkgs/by-name/ca/casadi/package.nix @@ -213,5 +213,6 @@ stdenv.mkDerivation (finalAttrs: { homepage = "https://github.com/casadi/casadi"; license = lib.licenses.lgpl3Only; maintainers = with lib.maintainers; [ nim65s ]; + platforms = lib.platforms.all; }; }) From 098a7874e21c64c118c100801f6b189b49fa6f1b Mon Sep 17 00:00:00 2001 From: Doron Behar Date: Tue, 13 Aug 2024 20:58:02 +0300 Subject: [PATCH 14/15] casadi: always set PYTHON_PREFIX, using `placeholder "out"`. --- pkgs/by-name/ca/casadi/package.nix | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/pkgs/by-name/ca/casadi/package.nix b/pkgs/by-name/ca/casadi/package.nix index 5daae3e76b19..9c39449704df 100644 --- a/pkgs/by-name/ca/casadi/package.nix +++ b/pkgs/by-name/ca/casadi/package.nix @@ -155,6 +155,9 @@ stdenv.mkDerivation (finalAttrs: { cmakeFlags = [ (lib.cmakeBool "WITH_PYTHON" pythonSupport) (lib.cmakeBool "WITH_PYTHON3" pythonSupport) + # We don't mind always setting this cmake variable, it will be read only if + # pythonSupport is enabled. + "-DPYTHON_PREFIX=${placeholder "out"}/${python3Packages.python.sitePackages}" (lib.cmakeBool "WITH_JSON" false) (lib.cmakeBool "WITH_INSTALL_INTERNAL_HEADERS" true) (lib.cmakeBool "INSTALL_INTERNAL_HEADERS" true) @@ -201,11 +204,6 @@ stdenv.mkDerivation (finalAttrs: { #(lib.cmakeBool "WITH_ALPAQA" true) # this requires casadi... ]; - # I don't know how to pass absolute $out path from cmakeFlags - postConfigure = lib.optionalString pythonSupport '' - cmake -DPYTHON_PREFIX=$out/${python3Packages.python.sitePackages} .. - ''; - doCheck = true; meta = { From c07ae91b46217693ae1f5079e3cc2f4d7004aabf Mon Sep 17 00:00:00 2001 From: Guilhem Saurel Date: Tue, 13 Aug 2024 21:23:03 +0200 Subject: [PATCH 15/15] proxsuite: disable a failing test on aarch64-linux --- pkgs/by-name/pr/proxsuite/package.nix | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/pkgs/by-name/pr/proxsuite/package.nix b/pkgs/by-name/pr/proxsuite/package.nix index 66b04d930008..dcaf8bc6f7f2 100644 --- a/pkgs/by-name/pr/proxsuite/package.nix +++ b/pkgs/by-name/pr/proxsuite/package.nix @@ -61,11 +61,15 @@ stdenv.mkDerivation (finalAttrs: { "out" ]; - cmakeFlags = [ - (lib.cmakeBool "BUILD_DOCUMENTATION" true) - (lib.cmakeBool "INSTALL_DOCUMENTATION" true) - (lib.cmakeBool "BUILD_PYTHON_INTERFACE" pythonSupport) - ]; + cmakeFlags = + [ + (lib.cmakeBool "BUILD_DOCUMENTATION" true) + (lib.cmakeBool "INSTALL_DOCUMENTATION" true) + (lib.cmakeBool "BUILD_PYTHON_INTERFACE" pythonSupport) + ] + ++ lib.optionals (stdenv.hostPlatform.system == "aarch64-linux") [ + "-DCMAKE_CTEST_ARGUMENTS=--exclude-regex;ProxQP::dense: test primal infeasibility solving" + ]; strictDeps = true;