From eb28360c5a9f76e9ad0599a13f042a1ce10741f6 Mon Sep 17 00:00:00 2001 From: Doron Behar Date: Sun, 1 Jun 2025 00:35:17 +0300 Subject: [PATCH 1/5] libqalculate: no with lib; in meta --- pkgs/by-name/li/libqalculate/package.nix | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/pkgs/by-name/li/libqalculate/package.nix b/pkgs/by-name/li/libqalculate/package.nix index 95edb8e19d5a..391fcccf8fe9 100644 --- a/pkgs/by-name/li/libqalculate/package.nix +++ b/pkgs/by-name/li/libqalculate/package.nix @@ -78,15 +78,15 @@ stdenv.mkDerivation (finalAttrs: { popd ''; - meta = with lib; { + meta = { description = "Advanced calculator library"; homepage = "http://qalculate.github.io"; - license = licenses.gpl2Plus; - maintainers = with maintainers; [ + license = lib.licenses.gpl2Plus; + maintainers = with lib.maintainers; [ doronbehar alyaeanyx ]; mainProgram = "qalc"; - platforms = platforms.all; + platforms = lib.platforms.all; }; }) From 30f92cdaba23696b9cc0d599f6d16f96e3054102 Mon Sep 17 00:00:00 2001 From: Doron Behar Date: Sun, 1 Jun 2025 00:36:31 +0300 Subject: [PATCH 2/5] libqalculate: Remove not happening patchPhase substitution Also use --replace-fail so these substitutions will raise a build failure and be removed if needed. --- pkgs/by-name/li/libqalculate/package.nix | 15 +++++---------- 1 file changed, 5 insertions(+), 10 deletions(-) diff --git a/pkgs/by-name/li/libqalculate/package.nix b/pkgs/by-name/li/libqalculate/package.nix index 391fcccf8fe9..f7ac403eadcc 100644 --- a/pkgs/by-name/li/libqalculate/package.nix +++ b/pkgs/by-name/li/libqalculate/package.nix @@ -61,16 +61,11 @@ stdenv.mkDerivation (finalAttrs: { intltoolize -f ''; - patchPhase = - '' - substituteInPlace libqalculate/Calculator-plot.cc \ - --replace 'commandline = "gnuplot"' 'commandline = "${gnuplot}/bin/gnuplot"' \ - --replace '"gnuplot - ' '"${gnuplot}/bin/gnuplot - ' - '' - + lib.optionalString stdenv.cc.isClang '' - substituteInPlace src/qalc.cc \ - --replace 'printf(_("aborted"))' 'printf("%s", _("aborted"))' - ''; + patchPhase = '' + substituteInPlace libqalculate/Calculator-plot.cc \ + --replace-fail 'commandline = "gnuplot"' 'commandline = "${gnuplot}/bin/gnuplot"' \ + --replace-fail '"gnuplot - ' '"${gnuplot}/bin/gnuplot - ' + ''; preBuild = '' pushd docs/reference From 3cddbe116c3b04ae07d50645169073ee25326c86 Mon Sep 17 00:00:00 2001 From: Doron Behar Date: Sun, 1 Jun 2025 00:37:10 +0300 Subject: [PATCH 3/5] libqalculate: use tag and not rev in src. --- pkgs/by-name/li/libqalculate/package.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/by-name/li/libqalculate/package.nix b/pkgs/by-name/li/libqalculate/package.nix index f7ac403eadcc..b150d8b4ae15 100644 --- a/pkgs/by-name/li/libqalculate/package.nix +++ b/pkgs/by-name/li/libqalculate/package.nix @@ -24,7 +24,7 @@ stdenv.mkDerivation (finalAttrs: { src = fetchFromGitHub { owner = "qalculate"; repo = "libqalculate"; - rev = "v${finalAttrs.version}"; + tag = "v${finalAttrs.version}"; hash = "sha256-sjVvsgDQbKXU+N7JrA36zezDfAGcDbyQ0fn1zMThYXQ="; }; From 961dda9c6aa099e0900cb109825d4b5daef57cdb Mon Sep 17 00:00:00 2001 From: Doron Behar Date: Sun, 1 Jun 2025 00:42:55 +0300 Subject: [PATCH 4/5] libqalculate: Don't overrde patchPhase completely See also: https://github.com/jtojnar/nixpkgs-hammering/blob/main/explanations/explicit-phases.md --- pkgs/by-name/li/libqalculate/package.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/by-name/li/libqalculate/package.nix b/pkgs/by-name/li/libqalculate/package.nix index b150d8b4ae15..e6baedf68b18 100644 --- a/pkgs/by-name/li/libqalculate/package.nix +++ b/pkgs/by-name/li/libqalculate/package.nix @@ -61,7 +61,7 @@ stdenv.mkDerivation (finalAttrs: { intltoolize -f ''; - patchPhase = '' + postPatch = '' substituteInPlace libqalculate/Calculator-plot.cc \ --replace-fail 'commandline = "gnuplot"' 'commandline = "${gnuplot}/bin/gnuplot"' \ --replace-fail '"gnuplot - ' '"${gnuplot}/bin/gnuplot - ' From 90760d4ca7b815e9c932627ae0f685e68658008c Mon Sep 17 00:00:00 2001 From: Doron Behar Date: Sun, 1 Jun 2025 00:59:24 +0300 Subject: [PATCH 5/5] libqalculate: Make it easier to change gnuplot hardcoding --- pkgs/by-name/li/libqalculate/package.nix | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/pkgs/by-name/li/libqalculate/package.nix b/pkgs/by-name/li/libqalculate/package.nix index e6baedf68b18..0362bebfc3ec 100644 --- a/pkgs/by-name/li/libqalculate/package.nix +++ b/pkgs/by-name/li/libqalculate/package.nix @@ -14,7 +14,15 @@ libxml2, mpfr, icu, + # Upstream's `plot` UX is not ideal - it doesn't write a good message + # suggesting the user to install this optional dependency when they write + # `plot(..)`. Not to mention support for non-x dependent `gnuplot_qt` + # executable. Hence we hardcode a path to a gnuplot binary by default, and + # changing this is possible via putting an empty string as a `gnuplotBinary` + # - to let `libqalculate` pick it from $PATH during runtime. See also: + # https://github.com/Qalculate/libqalculate/issues/796 gnuplot, + gnuplotBinary ? lib.getExe gnuplot, }: stdenv.mkDerivation (finalAttrs: { @@ -61,10 +69,10 @@ stdenv.mkDerivation (finalAttrs: { intltoolize -f ''; - postPatch = '' + postPatch = lib.optionalString (gnuplotBinary != "") '' substituteInPlace libqalculate/Calculator-plot.cc \ - --replace-fail 'commandline = "gnuplot"' 'commandline = "${gnuplot}/bin/gnuplot"' \ - --replace-fail '"gnuplot - ' '"${gnuplot}/bin/gnuplot - ' + --replace-fail 'commandline = "gnuplot"' 'commandline = "${gnuplotBinary}"' \ + --replace-fail '"gnuplot - ' '"${gnuplotBinary} - ' ''; preBuild = ''