summaryrefslogtreecommitdiffstats
path: root/pkgs
diff options
context:
space:
mode:
authorjanus <janus@xn--kn-1ia.guru>2015-11-26 02:35:12 +0000
committerjanus <janus@xn--kn-1ia.guru>2016-01-01 17:01:13 +0000
commitf351aaaf85c6b6323660db6ce638f057947a333f (patch)
treed6202c827b8a46d35c4a5d2c601af7dee3f1e248 /pkgs
parent2d00f27230764ed8be9ddff575d64e773ea84d62 (diff)
FreeBSD: use own stdenv, do not run libtiff tests, use PIC for zlib
Diffstat (limited to 'pkgs')
-rw-r--r--pkgs/development/compilers/llvm/3.7/libc++abi.nix2
-rw-r--r--pkgs/development/libraries/libtiff/default.nix2
-rw-r--r--pkgs/development/libraries/zlib/default.nix2
-rw-r--r--pkgs/stdenv/default.nix3
-rw-r--r--pkgs/stdenv/freebsd/default.nix131
-rw-r--r--pkgs/stdenv/freebsd/trivial-bootstrap.sh183
-rw-r--r--pkgs/stdenv/native/default.nix2
7 files changed, 320 insertions, 5 deletions
diff --git a/pkgs/development/compilers/llvm/3.7/libc++abi.nix b/pkgs/development/compilers/llvm/3.7/libc++abi.nix
index 97f182a9af81..a495e1860ad2 100644
--- a/pkgs/development/compilers/llvm/3.7/libc++abi.nix
+++ b/pkgs/development/compilers/llvm/3.7/libc++abi.nix
@@ -5,7 +5,7 @@ stdenv.mkDerivation {
src = fetch "libcxxabi" "1swvnhrf9g67579c5picg0l869f8l2bwi4xqpbcb4n296gyp9c28";
- buildInputs = [ cmake ] ++ stdenv.lib.optional (!stdenv.isDarwin) libunwind;
+ buildInputs = [ cmake ] ++ stdenv.lib.optional (!stdenv.isDarwin && !stdenv.isFreeBSD) libunwind;
postUnpack = ''
unpackFile ${libcxx.src}
diff --git a/pkgs/development/libraries/libtiff/default.nix b/pkgs/development/libraries/libtiff/default.nix
index 2c559d221abe..7e9c11d700a5 100644
--- a/pkgs/development/libraries/libtiff/default.nix
+++ b/pkgs/development/libraries/libtiff/default.nix
@@ -22,7 +22,7 @@ stdenv.mkDerivation rec {
enableParallelBuilding = true;
- doCheck = true;
+ doCheck = !stdenv.isFreeBSD;
meta = with stdenv.lib; {
description = "Library and utilities for working with the TIFF image file format";
diff --git a/pkgs/development/libraries/zlib/default.nix b/pkgs/development/libraries/zlib/default.nix
index 93474d14344e..99be5162010d 100644
--- a/pkgs/development/libraries/zlib/default.nix
+++ b/pkgs/development/libraries/zlib/default.nix
@@ -31,7 +31,7 @@ stdenv.mkDerivation (rec {
# As zlib takes part in the stdenv building, we don't want references
# to the bootstrap-tools libgcc (as uses to happen on arm/mips)
- NIX_CFLAGS_COMPILE = stdenv.lib.optionalString (!stdenv.isDarwin) "-static-libgcc";
+ NIX_CFLAGS_COMPILE = stdenv.lib.optionalString (!stdenv.isDarwin) "-static-libgcc " + stdenv.lib.optionalString (stdenv.isFreeBSD) "-fPIC";
crossAttrs = {
dontStrip = static;
diff --git a/pkgs/stdenv/default.nix b/pkgs/stdenv/default.nix
index da93229ce94c..37e90faf6d0e 100644
--- a/pkgs/stdenv/default.nix
+++ b/pkgs/stdenv/default.nix
@@ -33,6 +33,8 @@ rec {
pkgs = stdenvNativePkgs;
};
+ stdenvFreeBSD = (import ./freebsd { inherit system allPackages platform config; }).stdenvFreeBSD;
+
# Linux standard environment.
stdenvLinux = (import ./linux { inherit system allPackages platform config lib; }).stdenvLinux;
@@ -58,5 +60,6 @@ rec {
if system == "x86_64-solaris" then stdenvNix else
if system == "i686-cygwin" then stdenvNative else
if system == "x86_64-cygwin" then stdenvNative else
+ if system == "x86_64-freebsd" then stdenvFreeBSD else
stdenvNative;
}
diff --git a/pkgs/stdenv/freebsd/default.nix b/pkgs/stdenv/freebsd/default.nix
new file mode 100644
index 000000000000..de39e79102f9
--- /dev/null
+++ b/pkgs/stdenv/freebsd/default.nix
@@ -0,0 +1,131 @@
+{ system ? builtins.currentSystem
+, allPackages ? import ../../top-level/all-packages.nix
+, platform ? null
+, config ? {}
+}:
+
+rec {
+ allPackages = import ../../top-level/all-packages.nix;
+
+ bootstrapTools = derivation {
+ inherit system;
+
+ name = "trivial-bootstrap-tools";
+ builder = "/bin/sh";
+ args = [ ./trivial-bootstrap.sh ];
+
+ mkdir = "/bin/mkdir";
+ 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";
+
+ 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;
+ };
+ };
+
+ stage3 = with stage2; import ../generic {
+ name = "stdenv-freebsd-boot-3";
+
+ inherit system config;
+ inherit (stdenv) fetchurlBoot;
+
+ initialPath = [ bootstrapTools ];
+
+ preHook = preHook + "\n" + ''
+ export NIX_ENFORCE_PURITY=1
+ '';
+
+ cc = import ../../build-support/cc-wrapper {
+ inherit stdenv;
+ nativeTools = true;
+ nativePrefix = "/usr/local/bin";
+ nativeLibc = true;
+ cc = stage2.stdenv.cc; #pkgs.llvmPackages.clang-unwrapped;
+ isClang = true;
+ };
+
+ shell = "/usr/local/bin/bash";
+ };
+
+ stdenvFreeBSD = stage3;
+}
diff --git a/pkgs/stdenv/freebsd/trivial-bootstrap.sh b/pkgs/stdenv/freebsd/trivial-bootstrap.sh
new file mode 100644
index 000000000000..f0b861d1a180
--- /dev/null
+++ b/pkgs/stdenv/freebsd/trivial-bootstrap.sh
@@ -0,0 +1,183 @@
+
+# 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
+
+$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/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
+
+# 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
+
+#pkg info -l llvm37 | grep usr/local/bin
diff --git a/pkgs/stdenv/native/default.nix b/pkgs/stdenv/native/default.nix
index 2a1acba41bb1..93d1c7e971c2 100644
--- a/pkgs/stdenv/native/default.nix
+++ b/pkgs/stdenv/native/default.nix
@@ -27,8 +27,6 @@ rec {
alias patch=gpatch # pcre relied on this for patching binary files
- alias cc=clang37
-
# we need GNU cp for --reflink, need to alias all of coreutils
alias basename=gbasename
alias cat=gcat