397ffc81e6
This refactor performs a mechanical migration of gnuplot to the by-name
layout and updates the derivation to the modern finalAttrs style.
Key changes:
* Move gnuplot from pkgs/tools/graphics/gnuplot/ to pkgs/by-name/gn/gnuplot/
and rename set-gdfontpath-from-fontconfig.sh accordingly.
* Replace the old `rec { ... }` form with `stdenv.mkDerivation (finalAttrs: { ... })`
following current Nixpkgs conventions.
* Remove the unused mkDerivation argument and stop switching the derivation
function based on `withQt`. gnuplot does not require libsForQt5.mkDerivation;
Qt support is handled entirely through inputs and configure flags.
* Replace qttools/qtbase/qtsvg with libsForQt5.qttools/qtbase/qtsvg when
`withQt = true`.
* Convert `${pname}-${version}` to `${finalAttrs.version}` and update
`sha256` → `hash`.
* Add by-name variants gnuplot_qt and gnuplot_aquaterm using override
wrappers.
* Remove the old top-level aliases for gnuplot, gnuplot_qt, and
gnuplot_aquaterm from all-packages.nix; by-name exposure now handles them.
This change is purely structural and does not modify gnuplot’s build
behaviour beyond adopting the standard finalAttrs pattern.
132 lines
2.8 KiB
Nix
132 lines
2.8 KiB
Nix
{
|
|
lib,
|
|
stdenv,
|
|
fetchurl,
|
|
makeWrapper,
|
|
pkg-config,
|
|
texinfo,
|
|
cairo,
|
|
gd,
|
|
libcerf,
|
|
pango,
|
|
readline,
|
|
zlib,
|
|
withTeXLive ? false,
|
|
texliveSmall,
|
|
withLua ? false,
|
|
lua,
|
|
withCaca ? false,
|
|
libcaca,
|
|
libx11,
|
|
libxt,
|
|
libxpm,
|
|
libxaw,
|
|
aquaterm ? false,
|
|
withWxGTK ? false,
|
|
wxwidgets_3_2,
|
|
fontconfig,
|
|
gnused,
|
|
coreutils,
|
|
withQt ? false,
|
|
qt5,
|
|
}:
|
|
|
|
let
|
|
withX = !aquaterm && !stdenv.hostPlatform.isDarwin;
|
|
in
|
|
stdenv.mkDerivation (finalAttrs: {
|
|
pname = "gnuplot";
|
|
version = "6.0.4";
|
|
|
|
src = fetchurl {
|
|
url = "mirror://sourceforge/gnuplot/gnuplot-${finalAttrs.version}.tar.gz";
|
|
hash = "sha256-RY2UdpYl5z1fYjJQD0nLrcsrGDOA1D0iZqD5cBrrnFs=";
|
|
};
|
|
|
|
nativeBuildInputs = [
|
|
makeWrapper
|
|
pkg-config
|
|
texinfo
|
|
]
|
|
++ lib.optionals withQt [
|
|
qt5.qttools
|
|
qt5.wrapQtAppsHook
|
|
];
|
|
|
|
buildInputs = [
|
|
cairo
|
|
gd
|
|
libcerf
|
|
pango
|
|
readline
|
|
zlib
|
|
]
|
|
++ lib.optional withTeXLive texliveSmall
|
|
++ lib.optional withLua lua
|
|
++ lib.optional withCaca libcaca
|
|
++ lib.optionals withX [
|
|
libx11
|
|
libxpm
|
|
libxt
|
|
libxaw
|
|
]
|
|
++ lib.optionals withQt [
|
|
qt5.qtbase
|
|
qt5.qtsvg
|
|
]
|
|
++ lib.optional withWxGTK wxwidgets_3_2;
|
|
|
|
postPatch = ''
|
|
# lrelease is in qttools, not in qtbase.
|
|
sed -i configure -e 's|''${QT5LOC}/lrelease|lrelease|'
|
|
'';
|
|
|
|
configureFlags = [
|
|
(if withX then "--with-x" else "--without-x")
|
|
(if withQt then "--with-qt=qt5" else "--without-qt")
|
|
(if aquaterm then "--with-aquaterm" else "--without-aquaterm")
|
|
]
|
|
++ lib.optional withCaca "--with-caca"
|
|
++ lib.optional withTeXLive "--with-texdir=${placeholder "out"}/share/texmf/tex/latex/gnuplot";
|
|
|
|
env = lib.optionalAttrs (stdenv.hostPlatform.isDarwin && withQt) {
|
|
CXXFLAGS = "-std=c++11";
|
|
};
|
|
|
|
# we'll wrap things ourselves
|
|
dontWrapGApps = true;
|
|
dontWrapQtApps = true;
|
|
|
|
# binary wrappers don't support --run
|
|
postInstall = lib.optionalString withX ''
|
|
wrapProgramShell $out/bin/gnuplot \
|
|
--prefix PATH : '${
|
|
lib.makeBinPath [
|
|
gnused
|
|
coreutils
|
|
fontconfig.bin
|
|
]
|
|
}' \
|
|
"''${gappsWrapperArgs[@]}" \
|
|
"''${qtWrapperArgs[@]}" \
|
|
--run '. ${./set-gdfontpath-from-fontconfig.sh}'
|
|
'';
|
|
|
|
# When cross-compiling, don't build docs and demos.
|
|
# Inspiration taken from https://sourceforge.net/p/gnuplot/gnuplot-main/merge-requests/10/
|
|
makeFlags = lib.optionals (!stdenv.buildPlatform.canExecute stdenv.hostPlatform) [
|
|
"-C src"
|
|
];
|
|
|
|
enableParallelBuilding = true;
|
|
|
|
meta = {
|
|
homepage = "http://www.gnuplot.info/";
|
|
description = "Portable command-line driven graphing utility for many platforms";
|
|
platforms = lib.platforms.linux ++ lib.platforms.darwin;
|
|
license = lib.licenses.gnuplot;
|
|
maintainers = [ ];
|
|
mainProgram = "gnuplot";
|
|
};
|
|
})
|