summary refs log tree commit diff
path: root/pkgs/stdenv/freebsd
diff options
context:
space:
mode:
authorjanus <janus@xn--kn-1ia.guru>2015-11-28 15:06:15 +0000
committerjanus <janus@xn--kn-1ia.guru>2016-01-01 17:01:13 +0000
commit55aa9163cca34107b3e3ce7ce8d7bb76fa5717a0 (patch)
tree3e35217e4909c42136534ea37d887b04baa7a402 /pkgs/stdenv/freebsd
parenta472d836f674fe388018aaee75983e3400a77db4 (diff)
downloadnixpkgs-55aa9163cca34107b3e3ce7ce8d7bb76fa5717a0.tar
nixpkgs-55aa9163cca34107b3e3ce7ce8d7bb76fa5717a0.tar.gz
nixpkgs-55aa9163cca34107b3e3ce7ce8d7bb76fa5717a0.tar.bz2
nixpkgs-55aa9163cca34107b3e3ce7ce8d7bb76fa5717a0.tar.lz
nixpkgs-55aa9163cca34107b3e3ce7ce8d7bb76fa5717a0.tar.xz
nixpkgs-55aa9163cca34107b3e3ce7ce8d7bb76fa5717a0.tar.zst
nixpkgs-55aa9163cca34107b3e3ce7ce8d7bb76fa5717a0.zip
FreeBSD: minor fixes, add notes and make stdenv more robust
Diffstat (limited to 'pkgs/stdenv/freebsd')
-rw-r--r--pkgs/stdenv/freebsd/default.nix122
-rw-r--r--pkgs/stdenv/freebsd/trivial-bootstrap.sh364
2 files changed, 212 insertions, 274 deletions
diff --git a/pkgs/stdenv/freebsd/default.nix b/pkgs/stdenv/freebsd/default.nix
index fcc3a14d487..5455c3d8fb9 100644
--- a/pkgs/stdenv/freebsd/default.nix
+++ b/pkgs/stdenv/freebsd/default.nix
@@ -18,114 +18,48 @@ rec {
     ln      = "/bin/ln";
   };
 
-  stage0 = rec {
-    fetchurl = import ../../build-support/fetchurl {
-      inherit stdenv;
-      curl = bootstrapTools;
-    };
-
-    stdenv = import ../generic {
-      inherit system config;
-      name         = "stdenv-freebsd-boot-0";
-      shell        = "/usr/local/bin/bash";
-      initialPath  = [ bootstrapTools ];
-      fetchurlBoot = fetchurl;
-      cc           = null;
-    };
-  };
-
-  buildTools = { #import ../../os-specific/freebsd/command-line-tools
-    inherit (stage0) stdenv fetchurl;
-    xar  = bootstrapTools;
-    gzip = bootstrapTools;
-    cpio = bootstrapTools;
-  };
-
-  preHook = ''
-    export NIX_IGNORE_LD_THROUGH_GCC=1
-    # export NIX_DONT_SET_RPATH=1
-    export NIX_NO_SELF_RPATH=1
-    dontFixLibtool=1
-    stripAllFlags=" " # the Darwin "strip" command doesn't know "-s"
-    xargsFlags=" "
-  '';
-
-  stage1 = rec {
-    nativePrefix = "/usr";
-
+  fetchurl = import ../../build-support/fetchurl {
     stdenv = import ../generic {
       name = "stdenv-freebsd-boot-1";
-
-      inherit system config;
-      inherit (stage0.stdenv) shell fetchurlBoot;
-
-      initialPath = stage0.stdenv.initialPath ++ [ nativePrefix ];
-
-      preHook = preHook + "\n" + ''
-        export NIX_LDFLAGS_AFTER+=" -L/usr/lib"
-        export NIX_ENFORCE_PURITY=
-        export NIX_CFLAGS_COMPILE+=" -isystem ${nativePrefix}/include/c++/v1"
-        export NIX_CFLAGS_LINK+=" -Wl,-rpath,${nativePrefix}/lib"
-      '';
-
-      cc = import ../../build-support/cc-wrapper {
-        nativeTools  = true;
-        nativePrefix = nativePrefix;
-        nativeLibc   = true;
-        stdenv       = stage0.stdenv;
-        shell        = "/usr/local/bin/bash";
-        cc           = {
-          name    = "clang-9.9.9";
-          cc      = "/usr";
-          outPath = nativePrefix;
-        };
-        isClang      = true;
-      };
-    };
-    pkgs = allPackages {
-      inherit system platform;
-      bootStdenv = stdenv;
-    };
-  };
-
-  stage2 = rec {
-    stdenv = import ../generic {
-      name = "stdenv-freebsd-boot-2";
-
       inherit system config;
-      inherit (stage1.stdenv) shell fetchurlBoot preHook cc;
 
-      initialPath = [ "/usr/local/bin" ] ++ stage1.stdenv.initialPath;
-    };
-    pkgs = allPackages {
-      inherit system platform;
-      bootStdenv = stdenv;
+      initialPath  = null;
+      shell        = "foo";
+      fetchurlBoot = null;
+      cc = null;
     };
+    curl = bootstrapTools;
   };
 
-  stage3 = with stage2; import ../generic {
+  stdenvFreeBSD = import ../generic {
     name = "stdenv-freebsd-boot-3";
 
     inherit system config;
-    inherit (stdenv) fetchurlBoot;
-
-    initialPath = [ bootstrapTools ];
 
-    preHook = preHook + "\n" + ''
-      export NIX_ENFORCE_PURITY=1
-    '';
+    initialPath  = [ bootstrapTools ];
+    shell        = "${bootstrapTools}/bin/bash";
+    fetchurlBoot = fetchurl;
 
     cc = import ../../build-support/cc-wrapper {
-      inherit stdenv;
-      nativeTools   = true;
-      nativePrefix  = "/usr/local";
-      nativeLibc    = true;
-      cc            = stage2.stdenv.cc; #pkgs.llvmPackages.clang-unwrapped; 
-      isClang       = true;
+      nativeTools  = true;
+      nativePrefix = "/usr";
+      nativeLibc   = true;
+      stdenv = import ../generic {
+        inherit system config;
+        name         = "stdenv-freebsd-boot-0";
+        initialPath  = [ bootstrapTools ];
+        shell = stdenvFreeBSD.shell;
+        fetchurlBoot = fetchurl;
+        cc           = null;
+      };
+      cc           = {
+        name    = "clang-9.9.9";
+        cc      = "/usr";
+        outPath = "/usr";
+      };
+      isClang      = true;
     };
 
-    shell = "/usr/local/bin/bash";
+    preHook = ''export NIX_NO_SELF_RPATH=1'';
   };
-
-  stdenvFreeBSD = stage3;
 }
diff --git a/pkgs/stdenv/freebsd/trivial-bootstrap.sh b/pkgs/stdenv/freebsd/trivial-bootstrap.sh
index 1d7478e158a..1dc59ea7dbc 100644
--- a/pkgs/stdenv/freebsd/trivial-bootstrap.sh
+++ b/pkgs/stdenv/freebsd/trivial-bootstrap.sh
@@ -1,189 +1,193 @@
-
-# Building bootstrap tools
 echo Building the trivial bootstrap environment...
-
-# needed FreeBSD packages:
-# findutils gcpio gawk gnugrep coreutils bash gsed gtar gmake xar binutils gpatch lbzip2 diffutils
+echo
+echo Needed FreeBSD packages:
+echo findutils gcpio gawk gnugrep coreutils bash gsed gtar gmake xar binutils gpatch lbzip2 diffutils
 
 $mkdir -p $out/bin
 
-$ln -s $ln $out/bin/ln
-
-PATH=$out/bin/
-
-cd $out/bin
-
-ln -s $mkdir
-
-ln -s /usr/local/bin/bash
-ln -s /bin/sh
-
-ln -s /usr/local/bin/gmake make
-
-ln -s /usr/local/bin/lbzip2
-
-ln -s /usr/local/bin/gdiff diff
-
-ln -s /usr/bin/locale
-
-ln -s /usr/bin/more
-
-ln -s /usr/bin/bzip2
-ln -s /usr/bin/bunzip2
-ln -s /usr/bin/bzcat
-ln -s /usr/bin/bzip2recover
-
-ln -s /usr/bin/xz
-ln -s /usr/bin/unxz
-ln -s /usr/bin/xzcat
-ln -s /usr/bin/lzma
-ln -s /usr/bin/unlzma
-ln -s /usr/bin/lzcat
-
-ln -s /usr/local/bin/gcp cp
-ln -s /usr/local/bin/gdd dd
-ln -s /usr/local/bin/gmv mv
-ln -s /usr/local/bin/grm rm
-ln -s /usr/local/bin/gls ls
-ln -s /bin/ps ps
-ln -s /usr/local/bin/gcat cat
-ln -s /usr/local/bin/gecho echo
-ln -s /usr/local/bin/gexpr expr
-ln -s /usr/local/bin/gtest test
-ln -s /usr/local/bin/gdate date
-ln -s /usr/local/bin/gchmod chmod
-ln -s /usr/local/bin/grmdir rmdir
-ln -s /usr/local/bin/gsleep sleep
-ln -s /bin/hostname hostname
-
-ln -s /usr/local/bin/gid id
-ln -s /usr/local/bin/god od
-ln -s /usr/local/bin/gtr tr
-ln -s /usr/local/bin/gwc wc
-ln -s /usr/local/bin/gcut cut
-ln -s /usr/bin/cmp cmp
-ln -s /usr/local/bin/gsed sed
-ln -s /usr/local/bin/gtar tar
-ln -s /usr/local/bin/xar xar
-ln -s /usr/local/bin/gawk awk
-ln -s /usr/local/bin/genv env
-ln -s /usr/local/bin/gtee tee
-ln -s /usr/local/bin/gcomm comm
-ln -s /usr/local/bin/gcpio cpio
-ln -s /usr/local/bin/curl curl
-ln -s /usr/local/bin/gfind find
-ln -s /usr/local/bin/grep grep #other grep is in /usr/bin
-ln -s /usr/bin/gzip
-ln -s /usr/bin/gunzip
-ln -s /usr/bin/zcat
-ln -s /usr/local/bin/ghead head
-ln -s /usr/bin/tail tail
-ln -s /usr/local/bin/guniq uniq
-ln -s /usr/bin/less less
-ln -s /usr/local/bin/gtrue true
-ln -s /usr/bin/diff diff
-ln -s /usr/local/bin/egrep egrep
-ln -s /usr/local/bin/fgrep fgrep
-ln -s /usr/local/bin/gpatch patch
-ln -s /usr/local/bin/guname uname
-ln -s /usr/local/bin/gtouch touch
-ln -s /usr/local/bin/gsplit split
-ln -s /usr/local/bin/gxargs xargs
-ln -s /usr/bin/which which
-ln -s /usr/local/bin/ginstall install
-ln -s /usr/local/bin/gbasename basename
-ln -s /usr/local/bin/gdirname dirname
-ln -s /usr/local/bin/greadlink readlink
-
-ln -fs /usr/local/bin/gln ln
-ln -s /usr/local/bin/gyes yes
-ln -s /usr/local/bin/gwhoami whoami
-ln -s /usr/local/bin/gvdir vdir
-ln -s /usr/local/bin/gusers users
-ln -s /usr/local/bin/guptime uptime
-ln -s /usr/local/bin/gunlink unlink
-ln -s /usr/local/bin/gtty tty
-ln -s /usr/local/bin/gunexpand unexpand
-ln -s /usr/local/bin/gtsort tsort
-ln -s /usr/local/bin/gtruncate truncate
-ln -s /usr/local/bin/gtimeout timeout
-ln -s /usr/local/bin/gtac tac
-ln -s /usr/local/bin/gsync sync
-ln -s /usr/local/bin/gsum sum
-ln -s /usr/local/bin/gstty stty
-ln -s /usr/local/bin/gstdbuf stdbuf
-ln -s /usr/local/bin/gsort sort
-ln -s /usr/local/bin/gruncon runcon
-ln -s /usr/local/bin/gseq seq
-ln -s /usr/local/bin/gsha1sum sha1sum
-ln -s /usr/local/bin/gsha224sum sha224sum
-ln -s /usr/local/bin/gsha256sum sha256sum
-ln -s /usr/local/bin/gsha384sum sha384sum
-ln -s /usr/local/bin/gsha512sum sha512sum
-ln -s /usr/local/bin/gshred shred
-ln -s /usr/local/bin/gshuf shuf
-ln -s /usr/local/bin/grealpath realpath
-ln -s "/usr/local/bin/g[" "["
-ln -s /usr/local/bin/gbase64 base64
-ln -s /usr/local/bin/gchcon chcon
-ln -s /usr/local/bin/gchgrp chgrp
-ln -s /usr/local/bin/gchown chown
-ln -s /usr/local/bin/gchroot chroot
-ln -s /usr/local/bin/gcksum cksum
-ln -s /usr/local/bin/gcsplit csplit
-ln -s /usr/local/bin/gdf df
-ln -s /usr/local/bin/gdircolors dircolors
-ln -s /usr/local/bin/gdu du
-ln -s /usr/local/bin/gexpand expand
-ln -s /usr/local/bin/gfactor factor
-ln -s /usr/local/bin/gfalse false
-ln -s /usr/local/bin/gfmt fmt
-ln -s /usr/local/bin/gfold fold
-ln -s /usr/local/bin/ggroups groups
-ln -s /usr/local/bin/ghostid hostid
-ln -s /usr/local/bin/gjoin join
-ln -s /usr/local/bin/gkill kill
-ln -s /usr/local/bin/glink link
-ln -s /usr/local/bin/glogname logname
-ln -s /usr/local/bin/gmd5sum md5sum
-ln -s /usr/local/bin/gmkdir mkdir
-ln -s /usr/local/bin/gmkfifo mkfifo
-ln -s /usr/local/bin/gmknod mknod
-ln -s /usr/local/bin/gmktemp mktemp
-ln -s /usr/local/bin/gnice nice
-ln -s /usr/local/bin/gnl nl
-ln -s /usr/local/bin/gnohup nohup
-ln -s /usr/local/bin/gnproc nproc
-ln -s /usr/local/bin/gnumfmt numfmt
-ln -s /usr/local/bin/gnustat nustat
-ln -s /usr/local/bin/gpaste paste
-ln -s /usr/local/bin/gpathchk pathchk
-ln -s /usr/local/bin/gpinky pinky
-ln -s /usr/local/bin/gpr pr
-ln -s /usr/local/bin/gprintenv printenv
-ln -s /usr/local/bin/gprintf printf
-ln -s /usr/local/bin/gptx ptx
-ln -s /usr/local/bin/gpwd pwd
+ln () {
+  if test "x$2" != x -a -f "$out/bin/$2"; then
+    echo "$2 exists"
+    exit 1;
+  fi;
+  if test ! -f "$1"; then
+    echo Target "$2" does not exist
+    exit 1;
+  fi
+  $ln -s "$1" "$out/bin/$2"
+}
+
+ln /usr/local/bin/bash
+ln /bin/sh
+
+ln /usr/local/bin/gmake make
+
+ln /usr/local/bin/lbzip2
+
+ln /usr/local/bin/gdiff diff
+
+ln /usr/bin/locale
+
+ln /usr/bin/more
+
+ln /usr/bin/hexdump # for bitcoin
+
+ln /usr/bin/bzip2
+ln /usr/bin/bunzip2
+ln /usr/bin/bzcat
+ln /usr/bin/bzip2recover
+
+ln /usr/bin/xz
+ln /usr/bin/unxz
+ln /usr/bin/xzcat
+ln /usr/bin/lzma
+ln /usr/bin/unlzma
+ln /usr/bin/lzcat
+
+ln /usr/local/bin/gcp cp
+ln /usr/local/bin/gdd dd
+ln /usr/local/bin/gmv mv
+ln /usr/local/bin/grm rm
+ln /usr/local/bin/gls ls
+ln /bin/ps ps
+ln /usr/local/bin/gcat cat
+ln /usr/local/bin/gecho echo
+ln /usr/local/bin/gexpr expr
+ln /usr/local/bin/gtest test
+ln /usr/local/bin/gdate date
+ln /usr/local/bin/gchmod chmod
+ln /usr/local/bin/grmdir rmdir
+ln /usr/local/bin/gsleep sleep
+ln /bin/hostname hostname
+
+ln /usr/local/bin/gid id
+ln /usr/local/bin/god od
+ln /usr/local/bin/gtr tr
+ln /usr/local/bin/gwc wc
+ln /usr/local/bin/gcut cut
+ln /usr/bin/cmp cmp
+ln /usr/local/bin/gsed sed
+ln /usr/local/bin/gtar tar
+ln /usr/local/bin/xar xar
+ln /usr/local/bin/gawk awk
+ln /usr/local/bin/genv env
+ln /usr/local/bin/gtee tee
+ln /usr/local/bin/gcomm comm
+ln /usr/local/bin/gcpio cpio
+ln /usr/local/bin/curl curl
+ln /usr/local/bin/gfind find
+ln /usr/local/bin/grep grep #other grep is in /usr/bin
+ln /usr/bin/gzip
+ln /usr/bin/gunzip
+ln /usr/bin/zcat
+ln /usr/local/bin/ghead head
+ln /usr/bin/tail tail
+ln /usr/local/bin/guniq uniq
+ln /usr/bin/less less
+ln /usr/local/bin/gtrue true
+# ln /usr/bin/diff diff
+ln /usr/local/bin/egrep egrep
+ln /usr/local/bin/fgrep fgrep
+ln /usr/local/bin/gpatch patch
+ln /usr/local/bin/guname uname
+ln /usr/local/bin/gtouch touch
+ln /usr/local/bin/gsplit split
+ln /usr/local/bin/gxargs xargs
+ln /usr/bin/which which
+ln /usr/local/bin/ginstall install
+ln /usr/local/bin/gbasename basename
+ln /usr/local/bin/gdirname dirname
+ln /usr/local/bin/greadlink readlink
+
+ln /usr/local/bin/gln ln
+ln /usr/local/bin/gyes yes
+ln /usr/local/bin/gwhoami whoami
+ln /usr/local/bin/gvdir vdir
+ln /usr/local/bin/gusers users
+ln /usr/local/bin/guptime uptime
+ln /usr/local/bin/gunlink unlink
+ln /usr/local/bin/gtty tty
+ln /usr/local/bin/gunexpand unexpand
+ln /usr/local/bin/gtsort tsort
+ln /usr/local/bin/gtruncate truncate
+ln /usr/local/bin/gtimeout timeout
+ln /usr/local/bin/gtac tac
+ln /usr/local/bin/gsync sync
+ln /usr/local/bin/gsum sum
+ln /usr/local/bin/gstty stty
+ln /usr/local/bin/gstdbuf stdbuf
+ln /usr/local/bin/gsort sort
+ln /usr/local/bin/gruncon runcon
+ln /usr/local/bin/gseq seq
+ln /usr/local/bin/gsha1sum sha1sum
+ln /usr/local/bin/gsha224sum sha224sum
+ln /usr/local/bin/gsha256sum sha256sum
+ln /usr/local/bin/gsha384sum sha384sum
+ln /usr/local/bin/gsha512sum sha512sum
+ln /usr/local/bin/gshred shred
+ln /usr/local/bin/gshuf shuf
+ln /usr/local/bin/grealpath realpath
+ln "/usr/local/bin/g[" "["
+ln /usr/local/bin/gbase64 base64
+ln /usr/local/bin/gchcon chcon
+ln /usr/local/bin/gchgrp chgrp
+ln /usr/local/bin/gchown chown
+ln /usr/local/bin/gchroot chroot
+ln /usr/local/bin/gcksum cksum
+ln /usr/local/bin/gcsplit csplit
+ln /usr/local/bin/gdf df
+ln /usr/local/bin/gdircolors dircolors
+ln /usr/local/bin/gdu du
+ln /usr/local/bin/gexpand expand
+ln /usr/local/bin/gfactor factor
+ln /usr/local/bin/gfalse false
+ln /usr/local/bin/gfmt fmt
+ln /usr/local/bin/gfold fold
+ln /usr/local/bin/ggroups groups
+ln /usr/local/bin/ghostid hostid
+ln /usr/local/bin/gjoin join
+ln /usr/local/bin/gkill kill
+ln /usr/local/bin/glink link
+ln /usr/local/bin/glogname logname
+ln /usr/local/bin/gmd5sum md5sum
+ln /usr/local/bin/gmkdir mkdir
+ln /usr/local/bin/gmkfifo mkfifo
+ln /usr/local/bin/gmknod mknod
+ln /usr/local/bin/gmktemp mktemp
+ln /usr/local/bin/gnice nice
+ln /usr/local/bin/gnl nl
+ln /usr/local/bin/gnohup nohup
+ln /usr/local/bin/gnproc nproc
+ln /usr/local/bin/gnumfmt numfmt
+ln /usr/local/bin/gnustat nustat
+ln /usr/local/bin/gpaste paste
+ln /usr/local/bin/gpathchk pathchk
+ln /usr/local/bin/gpinky pinky
+ln /usr/local/bin/gpr pr
+ln /usr/local/bin/gprintenv printenv
+ln /usr/local/bin/gprintf printf
+ln /usr/local/bin/gptx ptx
+ln /usr/local/bin/gpwd pwd
 
 # binutils
 # pkg info -l binutils | grep usr/local/bin
-ln -s /usr/local/bin/addr2line
-ln -s /usr/local/bin/ar
-ln -s /usr/local/bin/as
-ln -s /usr/local/bin/c++filt
-ln -s /usr/local/bin/dwp
-ln -s /usr/local/bin/elfedit
-ln -s /usr/local/bin/gprof
-ln -s /usr/local/bin/ld
-ln -s /usr/local/bin/ld.bfd
-ln -s /usr/local/bin/ld.gold
-ln -s /usr/local/bin/nm
-ln -s /usr/local/bin/objcopy
-ln -s /usr/local/bin/objdump
-ln -s /usr/local/bin/ranlib
-ln -s /usr/local/bin/readelf
-ln -s /usr/local/bin/size
-ln -s /usr/local/bin/strings
-ln -s /usr/local/bin/strip
+ln /usr/local/bin/addr2line
+ln /usr/local/bin/ar
+ln /usr/local/bin/as
+ln /usr/local/bin/c++filt
+ln /usr/local/bin/dwp
+ln /usr/local/bin/elfedit
+ln /usr/local/bin/gprof
+ln /usr/local/bin/ld
+ln /usr/local/bin/ld.bfd
+ln /usr/local/bin/ld.gold
+ln /usr/local/bin/nm
+ln /usr/local/bin/objcopy
+ln /usr/local/bin/objdump
+ln /usr/local/bin/ranlib
+ln /usr/local/bin/readelf
+ln /usr/local/bin/size
+ln /usr/local/bin/strings
+ln /usr/local/bin/strip
 
 #pkg info -l llvm37 | grep usr/local/bin