python312Packages.types-aiobotocore: 2.15.2 -> 2.15.2.post3 (#361801)
[NixPkgs.git] / pkgs / by-name / tr / trealla / package.nix
blob7c31c43ac7164332a1887a03d0d73174c05dfb2d
2   lib,
3   fetchFromGitHub,
4   libffi,
5   openssl,
6   readline,
7   stdenv,
8   testers,
9   valgrind,
10   xxd,
11   # Boolean flags
12   checkLeaks ? false,
13   enableFFI ? true,
14   enableSSL ? true,
15   enableThreads ? true,
16   # Configurable inputs
17   lineEditingLibrary ? "isocline",
20 assert lib.elem lineEditingLibrary [
21   "isocline"
22   "readline"
24 stdenv.mkDerivation (finalAttrs: {
25   pname = "trealla";
26   version = "2.60.18";
28   src = fetchFromGitHub {
29     owner = "trealla-prolog";
30     repo = "trealla";
31     rev = "v${finalAttrs.version}";
32     hash = "sha256-ajTEagfMWiwJYZ1spKeamyeB1Rc7SeORUSWZO0fg408=";
33   };
35   postPatch = ''
36     substituteInPlace Makefile \
37       --replace '-I/usr/local/include' "" \
38       --replace '-L/usr/local/lib' "" \
39       --replace 'GIT_VERSION :=' 'GIT_VERSION ?='
40   '';
42   nativeBuildInputs = [ xxd ];
44   buildInputs =
45     lib.optionals enableFFI [ libffi ]
46     ++ lib.optionals enableSSL [ openssl ]
47     ++ lib.optionals (lineEditingLibrary == "readline") [ readline ];
49   nativeCheckInputs = lib.optionals finalAttrs.finalPackage.doCheck [ valgrind ];
51   strictDeps = true;
53   makeFlags =
54     [ "GIT_VERSION=\"v${finalAttrs.version}\"" ]
55     ++ lib.optionals (lineEditingLibrary == "isocline") [ "ISOCLINE=1" ]
56     ++ lib.optionals (!enableFFI) [ "NOFFI=1" ]
57     ++ lib.optionals (!enableSSL) [ "NOSSL=1" ]
58     ++ lib.optionals enableThreads [ "THREADS=1" ];
60   enableParallelBuilding = true;
62   installPhase = ''
63     runHook preInstall
64     install -Dm755 -t $out/bin tpl
65     runHook postInstall
66   '';
68   doCheck = !valgrind.meta.broken;
70   checkFlags = [ "test" ] ++ lib.optionals checkLeaks [ "leaks" ];
72   passthru = {
73     tests = {
74       version = testers.testVersion {
75         package = finalAttrs.finalPackage;
76         version = "v${finalAttrs.version}";
77       };
78     };
79   };
81   meta = {
82     homepage = "https://trealla-prolog.github.io/trealla/";
83     description = "Compact, efficient Prolog interpreter written in ANSI C";
84     longDescription = ''
85       Trealla is a compact, efficient Prolog interpreter with ISO Prolog
86       aspirations.
87       Trealla is not WAM-based. It uses tree-walking, structure-sharing and
88       deep-binding. Source is byte-code compiled to an AST that is interpreted
89       at runtime. The intent and continued aim of Trealla is to be a small,
90       easily ported, Prolog core.
91       The name Trealla comes from the Liaden Universe books by Lee & Miller
92       (where it doesn't seem to mean anything) and also a reference to the
93       Trealla region of Western Australia.
94     '';
95     changelog = "https://github.com/trealla-prolog/trealla/releases/tag/v${finalAttrs.version}";
96     license = lib.licenses.mit;
97     maintainers = with lib.maintainers; [
98       siraben
99       AndersonTorres
100     ];
101     mainProgram = "tpl";
102     platforms = lib.platforms.all;
103     broken = stdenv.hostPlatform.isDarwin && stdenv.hostPlatform.isx86_64;
104   };