diff options
author | Emily Trau <emily@downunderctf.com> | 2023-05-18 22:04:13 +1000 |
---|---|---|
committer | Emily Trau <emily@downunderctf.com> | 2023-05-18 22:05:30 +1000 |
commit | 1412b439704bba22e9f6c2e54501472875f58613 (patch) | |
tree | 43b62b2fc50435c1de4a3a39f1ecca3c03270dfe /pkgs/os-specific/linux/minimal-bootstrap | |
parent | 6ee60f0bec473da453f149664b431d9aa3216604 (diff) | |
download | nixlib-1412b439704bba22e9f6c2e54501472875f58613.tar nixlib-1412b439704bba22e9f6c2e54501472875f58613.tar.gz nixlib-1412b439704bba22e9f6c2e54501472875f58613.tar.bz2 nixlib-1412b439704bba22e9f6c2e54501472875f58613.tar.lz nixlib-1412b439704bba22e9f6c2e54501472875f58613.tar.xz nixlib-1412b439704bba22e9f6c2e54501472875f58613.tar.zst nixlib-1412b439704bba22e9f6c2e54501472875f58613.zip |
minimal-bootstrap.bash_2_05: init at 2.05b
Diffstat (limited to 'pkgs/os-specific/linux/minimal-bootstrap')
-rw-r--r-- | pkgs/os-specific/linux/minimal-bootstrap/bash/2.nix | 146 | ||||
-rw-r--r-- | pkgs/os-specific/linux/minimal-bootstrap/default.nix | 3 |
2 files changed, 149 insertions, 0 deletions
diff --git a/pkgs/os-specific/linux/minimal-bootstrap/bash/2.nix b/pkgs/os-specific/linux/minimal-bootstrap/bash/2.nix new file mode 100644 index 000000000000..41e3547a7861 --- /dev/null +++ b/pkgs/os-specific/linux/minimal-bootstrap/bash/2.nix @@ -0,0 +1,146 @@ +{ lib +, derivationWithMeta +, fetchurl +, kaem +, tinycc +, gnumake +, gnupatch +, coreutils +, mescc-tools-extra +, bash_2_05 +}: +let + pname = "bash"; + version = "2.05b"; + + src = fetchurl { + url = "mirror://gnu/bash/bash-${version}.tar.gz"; + sha256 = "1r1z2qdw3rz668nxrzwa14vk2zcn00hw7mpjn384picck49d80xs"; + }; + + # Thanks to the live-bootstrap project! + # See https://github.com/fosslinux/live-bootstrap/blob/1bc4296091c51f53a5598050c8956d16e945b0f5/sysa/bash-2.05b/bash-2.05b.kaem + liveBootstrap = "https://github.com/fosslinux/live-bootstrap/raw/1bc4296091c51f53a5598050c8956d16e945b0f5/sysa/bash-2.05b"; + + main_mk = fetchurl { + url = "${liveBootstrap}/mk/main.mk"; + sha256 = "0hj29q3pq3370p18sxkpvv9flb7yvx2fs96xxlxqlwa8lkimd0j4"; + }; + + common_mk = fetchurl { + url = "${liveBootstrap}/mk/common.mk"; + sha256 = "09rigxxf85p2ybnq248sai1gdx95yykc8jmwi4yjx389zh09mcr8"; + }; + + builtins_mk = fetchurl { + url = "${liveBootstrap}/mk/builtins.mk"; + sha256 = "0939dy5by1xhfmsjj6w63nlgk509fjrhpb2crics3dpcv7prl8lj"; + }; + + patches = [ + # mes libc does not have locale support + (fetchurl { + url = "${liveBootstrap}/patches/mes-libc.patch"; + sha256 = "0zksdjf6zbb3p4hqg6plq631y76hhhgab7kdvf7cnpk8bcykn12z"; + }) + # int name, namelen; is wrong for mes libc, it is char* name, so we modify tinycc + # to reflect this. + (fetchurl { + url = "${liveBootstrap}/patches/tinycc.patch"; + sha256 = "042d2kr4a8klazk1hlvphxr6frn4mr53k957aq3apf6lbvrjgcj2"; + }) + # add ifdef's for features we don't want + (fetchurl { + url = "${liveBootstrap}/patches/missing-defines.patch"; + sha256 = "1q0k1kj5mrvjkqqly7ki5575a5b3hy1ywnmvhrln318yh67qnkj4"; + }) + # mes libc + setting locale = not worky + (fetchurl { + url = "${liveBootstrap}/patches/locale.patch"; + sha256 = "1p1q1slhafsgj8x4k0dpn9h6ryq5fwfx7dicbbxhldbw7zvnnbx9"; + }) + # We do not have /dev at this stage of the bootstrap, including /dev/tty + (fetchurl { + url = "${liveBootstrap}/patches/dev-tty.patch"; + sha256 = "1315slv5f7ziajqyxg4jlyanf1xwd06xw14y6pq7xpm3jzjk55j9"; + }) + ]; +in +kaem.runCommand "${pname}-${version}" { + inherit pname version; + + nativeBuildInputs = [ + tinycc.compiler + gnumake + gnupatch + coreutils + ]; + + passthru.runCommand = name: env: buildCommand: + derivationWithMeta ({ + inherit name buildCommand; + builder = "${bash_2_05}/bin/bash"; + args = [ + "-e" + (builtins.toFile "bash-builder.sh" '' + export CONFIG_SHELL=$SHELL + bash -eux $buildCommandPath + '') + ]; + passAsFile = [ "buildCommand" ]; + + SHELL = "${bash_2_05}/bin/bash"; + PATH = lib.makeBinPath ((env.nativeBuildInputs or []) ++ [ + bash_2_05 + coreutils + # provides untar, ungz, and unbz2 + mescc-tools-extra + ]); + } // (builtins.removeAttrs env [ "nativeBuildInputs" ])); + + passthru.tests.get-version = result: + kaem.runCommand "${pname}-get-version-${version}" {} '' + ${result}/bin/bash --version + mkdir ''${out} + ''; + + meta = with lib; { + description = "GNU Bourne-Again Shell, the de facto standard shell on Linux"; + homepage = "https://www.gnu.org/software/bash"; + license = licenses.gpl3Plus; + maintainers = teams.minimal-bootstrap.members; + platforms = platforms.unix; + }; +} '' + # Unpack + ungz --file ${src} --output bash.tar + untar --file bash.tar + rm bash.tar + cd bash-${version} + + # Patch + ${lib.concatMapStringsSep "\n" (f: "patch -Np0 -i ${f}") patches} + + # Configure + cp ${main_mk} Makefile + cp ${builtins_mk} builtins/Makefile + cp ${common_mk} common.mk + touch config.h + touch include/version.h + touch include/pipesize.h + + # Build + make \ + CC="tcc -B ${tinycc.libs}/lib" \ + mkbuiltins + cd builtins + make \ + CC="tcc -B ${tinycc.libs}/lib" \ + libbuiltins.a + cd .. + make CC="tcc -B ${tinycc.libs}/lib" + + # Install + install -D bash ''${out}/bin/bash + ln -s bash ''${out}/bin/sh +'' diff --git a/pkgs/os-specific/linux/minimal-bootstrap/default.nix b/pkgs/os-specific/linux/minimal-bootstrap/default.nix index f4f81a70fac0..fb4a455a3e96 100644 --- a/pkgs/os-specific/linux/minimal-bootstrap/default.nix +++ b/pkgs/os-specific/linux/minimal-bootstrap/default.nix @@ -11,6 +11,8 @@ lib.makeScope (extra: lib.callPackageWith ({ inherit lib config buildPlatform hostPlatform; } // extra)) (self: with self; { + bash_2_05 = callPackage ./bash/2.nix { tinycc = tinycc-mes; }; + coreutils = callPackage ./coreutils { tinycc = tinycc-mes; }; gnupatch = callPackage ./gnupatch { tinycc = tinycc-mes; }; @@ -34,6 +36,7 @@ lib.makeScope test = kaem.runCommand "minimal-bootstrap-test" {} '' echo ${mes.compiler.tests.get-version} echo ${tinycc-mes.compiler.tests.chain} + echo ${bash_2_05.tests.get-version} mkdir ''${out} ''; }) |