nixpkgs/pkgs/os-specific/linux/minimal-bootstrap/heirloom-devtools/default.nix

98 lines
2.8 KiB
Nix

{ lib
, fetchurl
, kaem
, tinycc
, gnumake
, gnupatch
, coreutils
}:
let
pname = "heirloom-devtools";
version = "070527";
src = fetchurl {
url = "mirror://sourceforge/heirloom/heirloom-devtools/heirloom-devtools-${version}.tar.bz2";
sha256 = "9f233d8b78e4351fe9dd2d50d83958a0e5af36f54e9818521458a08e058691ba";
};
# Thanks to the live-bootstrap project!
# See https://github.com/fosslinux/live-bootstrap/blob/d918b984ad6fe4fc7680f3be060fd82f8c9fddd9/sysa/heirloom-devtools-070527/heirloom-devtools-070527.kaem
liveBootstrap = "https://github.com/fosslinux/live-bootstrap/raw/d918b984ad6fe4fc7680f3be060fd82f8c9fddd9/sysa/heirloom-devtools-070527";
patches = [
# Remove all kinds of wchar support. Mes Libc does not support wchar in any form
(fetchurl {
url = "${liveBootstrap}/patches/yacc_remove_wchar.patch";
sha256 = "0wgiz02bb7xzjy2gnbjp8y31qy6rc4b29v01zi32zh9lw54j68hc";
})
# Similarly to yacc, remove wchar. See yacc patch for further information
(fetchurl {
url = "${liveBootstrap}/patches/lex_remove_wchar.patch";
sha256 = "168dfngi51ljjqgd55wbvmffaq61gk48gak50ymnl1br92qkp4zh";
})
];
in
kaem.runCommand "${pname}-${version}" {
inherit pname version;
nativeBuildInputs = [
tinycc.compiler
gnumake
gnupatch
coreutils
];
meta = with lib; {
description = "Portable yacc and lex derived from OpenSolaris";
homepage = "https://heirloom.sourceforge.net/devtools.html";
license = with licenses; [ cddl bsdOriginalUC caldera ];
maintainers = teams.minimal-bootstrap.members;
platforms = platforms.unix;
};
} ''
# Unpack
unbz2 --file ${src} --output heirloom-devtools.tar
untar --file heirloom-devtools.tar
rm heirloom-devtools.tar
build=''${NIX_BUILD_TOP}/heirloom-devtools-${version}
cd ''${build}
# Patch
${lib.concatLines (map (f: "patch -Np0 -i ${f}") patches)}
# Build yacc
cd yacc
make -f Makefile.mk \
CC="tcc -B ${tinycc.libs}/lib" \
AR="tcc -ar" \
CFLAGS="-DMAXPATHLEN=4096 -DEILSEQ=84 -DMB_LEN_MAX=100" \
LDFLAGS="-lgetopt" \
RANLIB=true \
LIBDIR=''${out}/lib
# Install yacc
install -D yacc ''${out}/bin/yacc
install -Dm 444 liby.a ''${out}/lib/liby.a
install -Dm 444 yaccpar ''${out}/lib/yaccpar
# Make yacc available to lex
PATH="''${out}/bin:''${PATH}"
# Build lex
cd ../lex
make -f Makefile.mk \
CC="tcc -B ${tinycc.libs}/lib" \
AR="tcc -ar" \
CFLAGS="-DEILSEQ=84 -DMB_LEN_MAX=100" \
LDFLAGS="-lgetopt" \
RANLIB=true \
LIBDIR=''${out}/lib
# Install lex
install -D lex ''${out}/bin/lex
install -Dm 444 ncform ''${out}/lib/lex/ncform
install -Dm 444 nceucform ''${out}/lib/lex/nceucform
install -Dm 444 nrform ''${out}/lib/lex/nrform
install -Dm 444 libl.a ''${out}/lib/libl.a
''