diff options
author | Ashish SHUKLA <ashish.is@lostca.se> | 2020-03-02 00:52:16 +0530 |
---|---|---|
committer | Alyssa Ross <hi@alyssa.is> | 2021-02-07 15:24:16 +0000 |
commit | 1c39662e6304f6c8d9a0984bed0bf7b57ceeb8b3 (patch) | |
tree | c24f642738fa43d154072d9f5770db4d4f5cf8ac /pkgs/stdenv/freebsd/default.nix | |
parent | 14700018de8ddac2ff3e05054283516b707066a8 (diff) |
stdenv: Improve/fix FreeBSD support
Able to bootstrap stdenv on FreeBSD by compiling various dependencies using built-in FreeBSD tools so mostly works now Closes: https://github.com/NixOS/nixpkgs/pull/81459
Diffstat (limited to 'pkgs/stdenv/freebsd/default.nix')
-rw-r--r-- | pkgs/stdenv/freebsd/default.nix | 194 |
1 files changed, 186 insertions, 8 deletions
diff --git a/pkgs/stdenv/freebsd/default.nix b/pkgs/stdenv/freebsd/default.nix index 38b168c0e72d1..5aadfd81a20f5 100644 --- a/pkgs/stdenv/freebsd/default.nix +++ b/pkgs/stdenv/freebsd/default.nix @@ -1,11 +1,170 @@ { lib -, localSystem, crossSystem, config, overlays +, localSystem, crossSystem, config, overlays, crossOverlays ? [] }: assert crossSystem == localSystem; -let inherit (localSystem) system; in - - +let inherit (localSystem) system; + fetchURL = import <nix/fetchurl.nix>; + trivialBuilder = (import ./trivial-builder.nix); + make = trivialBuilder rec { + inherit (localSystem) system; + name = "make"; + ver = "4.3"; + url = "https://ftp.gnu.org/gnu/${name}/${name}-${ver}.tar.gz"; + sha256 = "06cfqzpqsvdnsxbysl5p2fgdgxgl9y4p7scpnrfa8z2zgkjdspz0"; + configureArgs = [ "--disable-nls" + "--without-libintl-prefix" + "--without-libiconv-prefix" + ]; + }; + bash = trivialBuilder rec { + inherit (localSystem) system; + name = "bash"; + ver = "4.4.18"; + url = "https://ftp.gnu.org/gnu/${name}/${name}-${ver}.tar.gz"; + sha256 = "08vz660768mnnax7n8d4d85jxafwdmsxsi7fh0hzvmafbvn9wkb0"; + configureArgs = [ "--disable-nls" + "--without-libintl-prefix" + "--without-libiconv-prefix" + ]; + }; + coreutils = trivialBuilder rec { + inherit (localSystem) system; + name = "coreutils"; + ver = "8.31"; + url = "https://ftp.gnu.org/gnu/${name}/${name}-${ver}.tar.xz"; + sha256 = "1zg9m79x1i2nifj4kb0waf9x3i5h6ydkypkjnbsb9rnwis8rqypz"; + configureArgs = [ "--disable-nls" + "--without-libintl-prefix" + "--without-libiconv-prefix" + "--without-gmp" + "--without-libpth-prefix" + ]; + }; + findutils = trivialBuilder rec { + inherit (localSystem) system; + name = "findutils"; + ver = "4.7.0"; + url = "https://ftp.gnu.org/gnu/${name}/${name}-${ver}.tar.xz"; + sha256 = "16kqz9yz98dasmj70jwf5py7jk558w96w0vgp3zf9xsqk3gzpzn5"; + configureArgs = [ "--disable-nls" + "--without-libintl-prefix" + "--without-libiconv-prefix" + "--without-gmp" + "--without-libpth-prefix" + ]; + }; + diffutils = trivialBuilder rec { + inherit (localSystem) system; + name = "diffutils"; + ver = "3.7"; + url = "https://ftp.gnu.org/gnu/${name}/${name}-${ver}.tar.xz"; + sha256 = "09isrg0isjinv8c535nxsi1s86wfdfzml80dbw41dj9x3hiad9xk"; + configureArgs = [ "--disable-nls" + "--without-libintl-prefix" + "--without-libiconv-prefix" + "--without-libsigsegv-prefix" + ]; + }; + grep = trivialBuilder rec { + inherit (localSystem) system; + name = "grep"; + ver = "3.4"; + url = "https://ftp.gnu.org/gnu/${name}/${name}-${ver}.tar.xz"; + sha256 = "1yy33kiwrxrwj2nxa4fg15bvmwyghqbs8qwkdvy5phm784f7brjq"; + configureArgs = [ "--disable-nls" + "--without-libintl-prefix" + "--without-libiconv-prefix" + "--disable-perl-regexp" + "--without-libsegsegv-prefix" + ]; + }; + patch = trivialBuilder rec { + inherit (localSystem) system; + name = "patch"; + ver = "2.7.6"; + url = "https://ftp.gnu.org/gnu/${name}/${name}-${ver}.tar.xz"; + sha256 = "1zfqy4rdcy279vwn2z1kbv19dcfw25d2aqy9nzvdkq5bjzd0nqdc"; + }; + gawk = trivialBuilder rec { + inherit (localSystem) system; + name = "gawk"; + ver = "5.0.1"; + url = "https://ftp.gnu.org/gnu/${name}/${name}-${ver}.tar.xz"; + sha256 = "15570p7g2x54asvr2fsc56sxzmm08fbk4mzpcs5n92fp9vq8cklf"; + configureArgs = [ "--disable-nls" + "--disable-mpfr" + "--without-libintl-prefix" + "--without-libiconv-prefix" + "--without-libsegsegv-prefix" + ]; + }; + cpio = trivialBuilder rec { + inherit (localSystem) system; + name = "cpio"; + ver = "2.13"; + url = "https://ftp.gnu.org/gnu/${name}/${name}-${ver}.tar.gz"; + sha256 = "126vyg4a8wcdwh6npgvxy6gq433bzgz3ph37hmjpycc4r7cp0x78"; + configureArgs = [ "--disable-nls" + "--without-libintl-prefix" + "--without-libiconv-prefix" + ]; + }; + sed = trivialBuilder rec { + inherit (localSystem) system; + name = "sed"; + ver = "4.8"; + url = "https://ftp.gnu.org/gnu/${name}/${name}-${ver}.tar.xz"; + sha256 = "0cznxw73fzv1n3nj2zsq6nf73rvsbxndp444xkpahdqvlzz0r6zp"; + configureArgs = [ "--disable-nls" + "--without-libintl-prefix" + "--without-libiconv-prefix" + ]; + }; + cacert = fetchURL rec { + url = "https://curl.haxx.se/ca/cacert-2020-01-01.pem"; + sha256 = "07q808n307gzaga93abpf6an7c3rd35p18psdc1dd83lspgp1xxd"; + executable = false; + }; + curl = trivialBuilder rec { + inherit (localSystem) system; + name = "curl"; + ver = "7.68.0"; + url = "https://curl.haxx.se/download/${name}-${ver}.tar.xz"; + sha256 = "0nh3j90w6b97wqcgxjfq55qhkz9s38955fbhwzv2fsi7483j895p"; + configureArgs = [ "--disable-nls" + "--disable-ares" + "--disable-debug" + "--disable-ldap" + "--disable-ldaps" + "--disable-rtsp" + "--disable-dict" + "--disable-telnet" + "--disable-tftp" + "--disable-pop3" + "--disable-imap" + "--disable-smb" + "--disable-smtp" + "--disable-gopher" + "--disable-manual" + "--disable-verbose" + "--disable-sspi" + "--disable-tls-srp" + "--disable-unix-sockets" + "--without-brotli" + "--without-gnutls" + "--without-mbedtls" + "--without-wolfssl" + "--without-bearssl" + "--without-libidn2" + "--without-librtmp" + "--without-nghttp2" + "--with-ssl=/usr" + "--with-ca-bundle=${cacert}" + ]; + }; + bashExe = "${bash}/bin/bash"; +in [ ({}: { @@ -13,11 +172,14 @@ let inherit (localSystem) system; in bootstrapTools = derivation { inherit system; + inherit make bash coreutils findutils + diffutils grep patch gawk cpio sed + curl; name = "trivial-bootstrap-tools"; - builder = "/usr/local/bin/bash"; + builder = bashExe; args = [ ./trivial-bootstrap.sh ]; - + buildInputs = [ make ]; mkdir = "/bin/mkdir"; ln = "/bin/ln"; }; @@ -52,6 +214,8 @@ let inherit (localSystem) system; in (prevStage: { __raw = true; + inherit (prevStage) bootstrapTools; + stdenv = import ../generic { name = "stdenv-freebsd-boot-0"; inherit config; @@ -66,7 +230,7 @@ let inherit (localSystem) system; in (prevStage: { inherit config overlays; - stdenv = import ../generic { + stdenv = import ../generic rec { name = "stdenv-freebsd-boot-3"; inherit config; @@ -75,16 +239,30 @@ let inherit (localSystem) system; in initialPath shell fetchurlBoot; cc = import ../../build-support/cc-wrapper { + inherit lib; nativeTools = true; nativePrefix = "/usr"; nativeLibc = true; stdenvNoCC = prevStage.stdenv; + buildPackages = { + inherit (prevStage) stdenv; + }; cc = { name = "clang-9.9.9"; cc = "/usr"; - outPath = "/usr"; + outPath = prevStage.bootstrapTools; }; isClang = true; + bintools = import ../../build-support/bintools-wrapper { + inherit lib; + stdenvNoCC = prevStage.stdenv; + nativeTools = true; + nativeLibc = true; + propagateDoc = false; + nativePrefix = "/usr"; + bintools = { name = "${name}-binutils"; + outPath = prevStage.bootstrapTools; }; + }; }; preHook = "export NIX_NO_SELF_RPATH=1"; |