python313Packages.traits: fix build (#373698)
[NixPkgs.git] / pkgs / development / compilers / chicken / 5 / chicken.nix
blob8ef82e0e7d5efc6962273a5944779c0db1b2c38c
2   lib,
3   stdenv,
4   fetchurl,
5   makeWrapper,
6   darwin,
7   bootstrap-chicken ? null,
8   testers,
9 }:
11 let
12   platform =
13     with stdenv;
14     if isDarwin then
15       "macosx"
16     else if isCygwin then
17       "cygwin"
18     else if (isFreeBSD || isOpenBSD) then
19       "bsd"
20     else if isSunOS then
21       "solaris"
22     else
23       "linux"; # Should be a sane default
25 stdenv.mkDerivation (finalAttrs: {
26   pname = "chicken";
27   version = "5.4.0";
29   binaryVersion = 11;
31   src = fetchurl {
32     url = "https://code.call-cc.org/releases/${finalAttrs.version}/chicken-${finalAttrs.version}.tar.gz";
33     sha256 = "sha256-PF1KphwRZ79tm/nq+JHadjC6n188Fb8JUVpwOb/N7F8=";
34   };
36   # Disable two broken tests: "static link" and "linking tests"
37   postPatch = ''
38     sed -i tests/runtests.sh -e "/static link/,+4 { s/^/# / }"
39     sed -i tests/runtests.sh -e "/linking tests/,+11 { s/^/# / }"
40   '';
42   setupHook = lib.optional (bootstrap-chicken != null) ./setup-hook.sh;
44   makeFlags =
45     [
46       "PLATFORM=${platform}"
47       "PREFIX=$(out)"
48       "C_COMPILER=$(CC)"
49       "CXX_COMPILER=$(CXX)"
50     ]
51     ++ (lib.optionals stdenv.hostPlatform.isDarwin [
52       "XCODE_TOOL_PATH=${darwin.binutils.bintools}/bin"
53       "LINKER_OPTIONS=-headerpad_max_install_names"
54       "POSTINSTALL_PROGRAM=install_name_tool"
55     ])
56     ++ (lib.optionals (stdenv.hostPlatform != stdenv.buildPlatform) [
57       "HOSTSYSTEM=${stdenv.hostPlatform.config}"
58       "TARGET_C_COMPILER=${stdenv.cc}/bin/${stdenv.cc.targetPrefix}cc"
59       "TARGET_CXX_COMPILER=${stdenv.cc}/bin/${stdenv.cc.targetPrefix}c++"
60     ]);
62   nativeBuildInputs =
63     [
64       makeWrapper
65     ]
66     ++ lib.optionals (stdenv.hostPlatform.isDarwin && stdenv.hostPlatform.isAarch64) [
67       darwin.autoSignDarwinBinariesHook
68     ];
70   buildInputs = lib.optionals (bootstrap-chicken != null) [
71     bootstrap-chicken
72   ];
74   doCheck = !stdenv.hostPlatform.isDarwin;
75   postCheck = ''
76     ./csi -R chicken.pathname -R chicken.platform \
77        -p "(assert (equal? \"${toString finalAttrs.binaryVersion}\" (pathname-file (car (repository-path)))))"
78   '';
80   passthru.tests.version = testers.testVersion {
81     package = finalAttrs.finalPackage;
82     command = "csi -version";
83   };
85   meta = {
86     homepage = "https://call-cc.org/";
87     license = lib.licenses.bsd3;
88     maintainers = with lib.maintainers; [
89       corngood
90       nagy
91       konst-aa
92     ];
93     platforms = lib.platforms.unix;
94     description = "Portable compiler for the Scheme programming language";
95     longDescription = ''
96       CHICKEN is a compiler for the Scheme programming language.
97       CHICKEN produces portable and efficient C, supports almost all
98       of the R5RS Scheme language standard, and includes many
99       enhancements and extensions. CHICKEN runs on Linux, macOS,
100       Windows, and many Unix flavours.
101     '';
102   };