nixpkgs mirror (for testing)
github.com/NixOS/nixpkgs
nix
1{ stdenv, fetchurl, jdk, makeWrapper }:
2with stdenv.lib;
3
4stdenv.mkDerivation rec {
5 name = "picoLisp-${version}";
6 version = "18.12";
7 src = fetchurl {
8 url = "https://www.software-lab.de/${name}.tgz";
9 sha256 = "0hvgq2vc03bki528jqn95xmvv7mw8xx832spfczhxc16wwbrnrhk";
10 };
11 buildInputs = [makeWrapper] ++ optional stdenv.is64bit jdk;
12 patchPhase = ''
13 sed -i "s/which java/command -v java/g" mkAsm
14
15 ${optionalString stdenv.isAarch32 ''
16 sed -i s/-m32//g Makefile
17 cat >>Makefile <<EOF
18 ext.o: ext.c
19 \$(CC) \$(CFLAGS) -fPIC -D_OS='"\$(OS)"' \$*.c
20 ht.o: ht.c
21 \$(CC) \$(CFLAGS) -fPIC -D_OS='"\$(OS)"' \$*.c
22 EOF
23 ''}
24 '';
25 sourceRoot = ''picoLisp/src${optionalString stdenv.is64bit "64"}'';
26 installPhase = ''
27 cd ..
28
29 mkdir -p "$out/share/picolisp" "$out/lib" "$out/bin"
30 cp -r . "$out/share/picolisp/build-dir"
31 ln -s "$out/share/picolisp/build-dir" "$out/lib/picolisp"
32 ln -s "$out/lib/picolisp/bin/picolisp" "$out/bin/picolisp"
33
34
35 makeWrapper $out/bin/picolisp $out/bin/pil \
36 --add-flags "$out/lib/picolisp/lib.l" \
37 --add-flags "@lib/misc.l" \
38 --add-flags "@lib/btree.l" \
39 --add-flags "@lib/db.l" \
40 --add-flags "@lib/pilog.l"
41
42 mkdir -p "$out/share/emacs"
43 ln -s "$out/lib/picolisp/lib/el" "$out/share/emacs/site-lisp"
44 '';
45
46 meta = {
47 description = "A simple Lisp with an integrated database";
48 homepage = https://picolisp.com/;
49 license = licenses.mit;
50 platforms = platforms.all;
51 broken = stdenv.isDarwin; # times out
52 maintainers = with maintainers; [ raskin tohl ];
53 };
54
55 passthru = {
56 updateInfo = {
57 downloadPage = "http://www.software-lab.de/down.html";
58 };
59 };
60}