As suggested in pull request discussion
https://github.com/NixOS/nixpkgs/pull/243838
Explicitly verify that the installed Tcl can find tzdata. If the fix
from 8d0dce91bc
is commented out, the
test fails.
83 lines
2.5 KiB
Nix
83 lines
2.5 KiB
Nix
{ lib, stdenv, callPackage, makeSetupHook, runCommand
|
|
, tzdata
|
|
|
|
# Version specific stuff
|
|
, release, version, src
|
|
, ...
|
|
}:
|
|
|
|
let
|
|
baseInterp =
|
|
stdenv.mkDerivation rec {
|
|
pname = "tcl";
|
|
inherit version src;
|
|
|
|
outputs = [ "out" "man" ];
|
|
|
|
setOutputFlags = false;
|
|
|
|
postPatch = ''
|
|
substituteInPlace library/clock.tcl \
|
|
--replace "/usr/share/zoneinfo" "${tzdata}/share/zoneinfo" \
|
|
--replace "/usr/share/lib/zoneinfo" "" \
|
|
--replace "/usr/lib/zoneinfo" "" \
|
|
--replace "/usr/local/etc/zoneinfo" ""
|
|
'';
|
|
|
|
preConfigure = ''
|
|
cd unix
|
|
'';
|
|
|
|
configureFlags = [
|
|
"--enable-threads"
|
|
# Note: using $out instead of $man to prevent a runtime dependency on $man.
|
|
"--mandir=${placeholder "out"}/share/man"
|
|
"--enable-man-symlinks"
|
|
# Don't install tzdata because NixOS already has a more up-to-date copy.
|
|
"--with-tzdata=no"
|
|
"tcl_cv_strtod_unbroken=ok"
|
|
] ++ lib.optional stdenv.is64bit "--enable-64bit";
|
|
|
|
enableParallelBuilding = true;
|
|
|
|
postInstall = let
|
|
dllExtension = stdenv.hostPlatform.extensions.sharedLibrary;
|
|
in ''
|
|
make install-private-headers
|
|
ln -s $out/bin/tclsh${release} $out/bin/tclsh
|
|
ln -s $out/lib/libtcl${release}${dllExtension} $out/lib/libtcl${dllExtension}
|
|
'';
|
|
|
|
meta = with lib; {
|
|
description = "The Tcl scripting language";
|
|
homepage = "https://www.tcl.tk/";
|
|
license = licenses.tcltk;
|
|
platforms = platforms.all;
|
|
maintainers = with maintainers; [ agbrooks ];
|
|
};
|
|
|
|
passthru = rec {
|
|
inherit release version;
|
|
libPrefix = "tcl${release}";
|
|
libdir = "lib/${libPrefix}";
|
|
tclPackageHook = callPackage ({ buildPackages }: makeSetupHook {
|
|
name = "tcl-package-hook";
|
|
propagatedBuildInputs = [ buildPackages.makeWrapper ];
|
|
} ./tcl-package-hook.sh) {};
|
|
# verify that Tcl's clock library can access tzdata
|
|
tests.tzdata = runCommand "${pname}-test-tzdata" {} ''
|
|
${baseInterp}/bin/tclsh <(echo "set t [clock scan {2004-10-30 05:00:00} \
|
|
-format {%Y-%m-%d %H:%M:%S} \
|
|
-timezone :America/New_York]") > $out
|
|
'';
|
|
};
|
|
};
|
|
|
|
mkTclDerivation = callPackage ./mk-tcl-derivation.nix { tcl = baseInterp; };
|
|
|
|
in baseInterp.overrideAttrs (self: {
|
|
passthru = self.passthru // {
|
|
inherit mkTclDerivation;
|
|
};
|
|
})
|