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
|