summary refs log blame commit diff
path: root/pkgs/stdenv/freebsd/default.nix
blob: ddcdc6a66e0871874ee27b4cb4d4eee66d04f3e5 (plain) (tree)
1
2
3
4
5
     
                                                                

  
                                  

































































































































































                                                                      
 
 

                 
 
                                  
                     


                                           

                                       
                        
                                        
                             

                           




                                                                        







                                                    

                          

                            
 

                                     


                                   
                     

                                           

                          
                                
        





                 

                                       

                                     
                     
                                                 
                                

                                                 





                                        
                            
                                    
                                     
                     

                                

                                                 
 
                                                                        
                    


                              
                                      


                                     


                                  
                                             

                            









                                                                 
        
 
                                             
      
    
 
 
{ lib
, localSystem, crossSystem, config, overlays, crossOverlays ? []
}:

assert crossSystem == localSystem;
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
[

  ({}: {
    __raw = true;

    bootstrapTools = derivation ({
      inherit system;
      inherit make bash coreutils findutils
        diffutils grep patch gawk cpio sed
        curl;

      name = "trivial-bootstrap-tools";
      builder = bashExe;
      args = [ ./trivial-bootstrap.sh ];
      buildInputs = [ make ];
      mkdir = "/bin/mkdir";
      ln = "/bin/ln";
    } // lib.optionalAttrs (config.contentAddressedByDefault or false) {
      __contentAddressed = true;
      outputHashAlgo = "sha256";
      outputHashMode = "recursive";
    });
  })

  ({ bootstrapTools, ... }: rec {
    __raw = true;

    inherit bootstrapTools;

    fetchurl = import ../../build-support/fetchurl {
      inherit lib;
      stdenvNoCC = stdenv;
      curl = bootstrapTools;
    };

    stdenv = import ../generic {
      name = "stdenv-freebsd-boot-1";
      buildPlatform = localSystem;
      hostPlatform = localSystem;
      targetPlatform = localSystem;
      inherit config;
      initialPath = [ "/" "/usr" ];
      shell = "${bootstrapTools}/bin/bash";
      fetchurlBoot = null;
      cc = null;
      overrides = self: super: {
      };
    };
  })

  (prevStage: {
    __raw = true;

    inherit (prevStage) bootstrapTools;

    stdenv = import ../generic {
      name = "stdenv-freebsd-boot-0";
      inherit config;
      initialPath = [ prevStage.bootstrapTools ];
      inherit (prevStage.stdenv)
        buildPlatform hostPlatform targetPlatform
        shell;
      fetchurlBoot = prevStage.fetchurl;
      cc = null;
    };
  })

  (prevStage: {
    inherit config overlays;
    stdenv = import ../generic rec {
      name = "stdenv-freebsd-boot-3";
      inherit config;

      inherit (prevStage.stdenv)
        buildPlatform hostPlatform targetPlatform
        initialPath shell fetchurlBoot;

      cc = lib.makeOverridable (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 = 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";
    };
  })

]