core/pkgs/by-name/tc/tcl/mk-tcl-derivation.nix

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

86 lines
2.1 KiB
Nix
Raw Normal View History

2024-05-02 00:46:19 +00:00
# Generic builder for tcl packages/applications, generally based on mk-python-derivation.nix
{
tcl,
lib,
makeWrapper,
runCommand,
writeScript,
}:
{
buildInputs ? [ ],
nativeBuildInputs ? [ ],
propagatedBuildInputs ? [ ],
checkInputs ? [ ],
nativeCheckInputs ? [ ],
# true if we should skip the configuration phase altogether
dontConfigure ? false,
# Extra flags passed to configure step
configureFlags ? [ ],
# Whether or not we should add common Tcl-related configure flags
addTclConfigureFlags ? true,
meta ? { },
passthru ? { },
doCheck ? true,
...
}@attrs:
let
inherit (tcl) stdenv;
inherit (lib) getBin optionalAttrs;
defaultTclPkgConfigureFlags = [
"--with-tcl=${tcl}/lib"
"--with-tclinclude=${tcl}/include"
"--exec-prefix=${placeholder "out"}"
];
self = (
stdenv.mkDerivation (
(builtins.removeAttrs attrs [
"addTclConfigureFlags"
"checkPhase"
"checkInputs"
"nativeCheckInputs"
"doCheck"
])
// {
2024-06-30 08:12:46 +00:00
2024-05-02 00:46:19 +00:00
buildInputs = buildInputs ++ [ tcl.tclPackageHook ];
nativeBuildInputs = nativeBuildInputs ++ [
makeWrapper
tcl
];
propagatedBuildInputs = propagatedBuildInputs ++ [ tcl ];
2024-06-30 08:12:46 +00:00
2024-05-02 00:46:19 +00:00
TCLSH = "${getBin tcl}/bin/tclsh";
2024-06-30 08:12:46 +00:00
2024-05-02 00:46:19 +00:00
# Run tests after install, at which point we've done all TCLLIBPATH setup
doCheck = false;
doInstallCheck = attrs.doCheck or (attrs.doInstallCheck or false);
installCheckInputs = checkInputs ++ (attrs.installCheckInputs or [ ]);
nativeInstallCheckInputs = nativeCheckInputs ++ (attrs.nativeInstallCheckInputs or [ ]);
2024-06-30 08:12:46 +00:00
2024-05-02 00:46:19 +00:00
# Add typical values expected by TEA for configureFlags
configureFlags =
if (!dontConfigure && addTclConfigureFlags) then
(configureFlags ++ defaultTclPkgConfigureFlags)
else
configureFlags;
2024-06-30 08:12:46 +00:00
2024-05-02 00:46:19 +00:00
meta = {
platforms = tcl.meta.platforms;
} // meta;
2024-06-30 08:12:46 +00:00
2024-05-02 00:46:19 +00:00
}
// optionalAttrs (attrs ? checkPhase) { installCheckPhase = attrs.checkPhase; }
2024-06-30 08:12:46 +00:00
)
2024-05-02 00:46:19 +00:00
);
2024-06-30 08:12:46 +00:00
2024-05-02 00:46:19 +00:00
in
lib.extendDerivation true passthru self