diff options
author | Emily Trau <emily@downunderctf.com> | 2023-05-28 12:48:24 -0700 |
---|---|---|
committer | Emily Trau <emily@downunderctf.com> | 2023-06-05 08:44:45 -0700 |
commit | fb7ca344ad5116261be724aa3325c2358d7b3b5d (patch) | |
tree | 1a9e43ba702f267ee313408e71aa2e554be80883 /pkgs/os-specific/linux/minimal-bootstrap | |
parent | 9d83529d7f1d359a90040069f7040f429288ab06 (diff) | |
download | nixlib-fb7ca344ad5116261be724aa3325c2358d7b3b5d.tar nixlib-fb7ca344ad5116261be724aa3325c2358d7b3b5d.tar.gz nixlib-fb7ca344ad5116261be724aa3325c2358d7b3b5d.tar.bz2 nixlib-fb7ca344ad5116261be724aa3325c2358d7b3b5d.tar.lz nixlib-fb7ca344ad5116261be724aa3325c2358d7b3b5d.tar.xz nixlib-fb7ca344ad5116261be724aa3325c2358d7b3b5d.tar.zst nixlib-fb7ca344ad5116261be724aa3325c2358d7b3b5d.zip |
minimal-bootstrap.heirloom-devtools: init at 070527
Diffstat (limited to 'pkgs/os-specific/linux/minimal-bootstrap')
-rw-r--r-- | pkgs/os-specific/linux/minimal-bootstrap/default.nix | 2 | ||||
-rw-r--r-- | pkgs/os-specific/linux/minimal-bootstrap/heirloom-devtools/default.nix | 97 |
2 files changed, 99 insertions, 0 deletions
diff --git a/pkgs/os-specific/linux/minimal-bootstrap/default.nix b/pkgs/os-specific/linux/minimal-bootstrap/default.nix index 6659be076f59..1b4d5a82fff1 100644 --- a/pkgs/os-specific/linux/minimal-bootstrap/default.nix +++ b/pkgs/os-specific/linux/minimal-bootstrap/default.nix @@ -51,6 +51,8 @@ lib.makeScope tinycc = tinycc-mes; }; + heirloom-devtools = callPackage ./heirloom-devtools { tinycc = tinycc-mes; }; + ln-boot = callPackage ./ln-boot { }; mes = lib.recurseIntoAttrs (callPackage ./mes { }); diff --git a/pkgs/os-specific/linux/minimal-bootstrap/heirloom-devtools/default.nix b/pkgs/os-specific/linux/minimal-bootstrap/heirloom-devtools/default.nix new file mode 100644 index 000000000000..88637811b953 --- /dev/null +++ b/pkgs/os-specific/linux/minimal-bootstrap/heirloom-devtools/default.nix @@ -0,0 +1,97 @@ +{ 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 +'' |