FreeBSD: minor fixes, add notes and make stdenv more robust

This commit is contained in:
janus
2016-01-01 17:01:13 +00:00
parent a472d836f6
commit 55aa9163cc
12 changed files with 223 additions and 279 deletions
+28 -94
View File
@@ -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;
initialPath = null;
shell = "foo";
fetchurlBoot = null;
cc = null;
};
curl = bootstrapTools;
};
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;
};
};
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;
}
+172 -168
View File
@@ -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
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"
}
PATH=$out/bin/
ln /usr/local/bin/bash
ln /bin/sh
cd $out/bin
ln /usr/local/bin/gmake make
ln -s $mkdir
ln /usr/local/bin/lbzip2
ln -s /usr/local/bin/bash
ln -s /bin/sh
ln /usr/local/bin/gdiff diff
ln -s /usr/local/bin/gmake make
ln /usr/bin/locale
ln -s /usr/local/bin/lbzip2
ln /usr/bin/more
ln -s /usr/local/bin/gdiff diff
ln /usr/bin/hexdump # for bitcoin
ln -s /usr/bin/locale
ln /usr/bin/bzip2
ln /usr/bin/bunzip2
ln /usr/bin/bzcat
ln /usr/bin/bzip2recover
ln -s /usr/bin/more
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 -s /usr/bin/bzip2
ln -s /usr/bin/bunzip2
ln -s /usr/bin/bzcat
ln -s /usr/bin/bzip2recover
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 -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 /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 -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 /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