From 50313ffaabe53bc9964f37a5656f2f01896008da Mon Sep 17 00:00:00 2001 From: connordennyomalley Date: Mon, 27 Apr 2026 13:30:11 +0100 Subject: [PATCH 1/2] ginac: build using gcc On Darwin the stdenv uses clang, which builds binaries that crash with example inputs, "SIGSEGV (Address boundary error)". Ginac documentation says "We used GCC for development so if you have a different compiler you are on your own." Switching to always using gcc aligns the derivation with the build instructions. --- pkgs/by-name/gi/ginac/package.nix | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/pkgs/by-name/gi/ginac/package.nix b/pkgs/by-name/gi/ginac/package.nix index 87406bb062c0..046ff433ed28 100644 --- a/pkgs/by-name/gi/ginac/package.nix +++ b/pkgs/by-name/gi/ginac/package.nix @@ -1,6 +1,7 @@ { lib, stdenv, + gccStdenv, fetchurl, cln, pkg-config, @@ -9,7 +10,7 @@ python3, }: -stdenv.mkDerivation (finalAttrs: { +gccStdenv.mkDerivation (finalAttrs: { pname = "ginac"; version = "1.8.10"; From eb64f95d201badf76e4d4745747ad5346ed4d472 Mon Sep 17 00:00:00 2001 From: connordennyomalley Date: Tue, 28 Apr 2026 12:44:30 +0100 Subject: [PATCH 2/2] ginac: Test using example Build and run an example program from the ginac documentation. --- pkgs/by-name/gi/ginac/ginac-example-test.nix | 36 ++++++++++++++++++++ pkgs/by-name/gi/ginac/package.nix | 3 ++ 2 files changed, 39 insertions(+) create mode 100644 pkgs/by-name/gi/ginac/ginac-example-test.nix diff --git a/pkgs/by-name/gi/ginac/ginac-example-test.nix b/pkgs/by-name/gi/ginac/ginac-example-test.nix new file mode 100644 index 000000000000..501beb499683 --- /dev/null +++ b/pkgs/by-name/gi/ginac/ginac-example-test.nix @@ -0,0 +1,36 @@ +{ + runCommand, + gccStdenv, + cln, + ginac, +}: +runCommand "ginac-example-test" + { + nativeBuildInputs = [ + gccStdenv.cc + ginac + cln + ]; + } + '' + echo " + #include + #include + using namespace std; + using namespace GiNaC; + + int main() { + symbol x(\"x\"), y(\"y\"); + ex poly; + + for (int i=0; i<3; ++i) { + poly += factorial(i+16)*pow(x,i)*pow(y,2-i); + } + + cout << poly << endl; + return 0; + }" > hello.cc + c++ -lginac -lcln hello.cc -o hello + ./hello + mkdir $out + '' diff --git a/pkgs/by-name/gi/ginac/package.nix b/pkgs/by-name/gi/ginac/package.nix index 046ff433ed28..1937b6577fa4 100644 --- a/pkgs/by-name/gi/ginac/package.nix +++ b/pkgs/by-name/gi/ginac/package.nix @@ -2,6 +2,7 @@ lib, stdenv, gccStdenv, + callPackage, fetchurl, cln, pkg-config, @@ -36,6 +37,8 @@ gccStdenv.mkDerivation (finalAttrs: { configureFlags = [ "--disable-rpath" ]; + passthru.tests.example = callPackage ./ginac-example-test.nix { ginac = finalAttrs.finalPackage; }; + meta = { description = "GiNaC C++ library for symbolic manipulations"; homepage = "https://www.ginac.de/";