nixpkgs/pkgs/development/libraries/boost/default.nix
Peter Simons 7f94a9ffbf boost: fix "locale::facet::_S_create_c_locale name not valid" error
One would assume that the boost maintainers would have been able to apply this
two line change within the last 10 months or so, but apparently not.

svn path=/nixpkgs/trunk/; revision=27864
2011-07-20 23:11:16 +00:00

84 lines
2.7 KiB
Nix

{ stdenv, fetchurl, icu, expat, zlib, bzip2, python
, enableRelease ? true
, enableDebug ? false
, enableSingleThreaded ? false
, enableMultiThreaded ? true
, enableShared ? true
, enableStatic ? false
, enablePIC ? false
}:
let
variant = stdenv.lib.concatStringsSep ","
(stdenv.lib.optional enableRelease "release" ++
stdenv.lib.optional enableDebug "debug");
threading = stdenv.lib.concatStringsSep ","
(stdenv.lib.optional enableSingleThreaded "single" ++
stdenv.lib.optional enableMultiThreaded "multi");
link = stdenv.lib.concatStringsSep ","
(stdenv.lib.optional enableShared "shared" ++
stdenv.lib.optional enableStatic "static");
# To avoid library name collisions
finalLayout = if ((enableRelease && enableDebug) ||
(enableSingleThreaded && enableMultiThreaded) ||
(enableShared && enableStatic)) then
"tagged" else "system";
cflags = if (enablePIC) then "cflags=-fPIC cxxflags=-fPIC linkflags=-fPIC" else "";
in
stdenv.mkDerivation {
name = "boost-1.47.0";
meta = {
homepage = "http://boost.org/";
description = "Boost C++ Library Collection";
license = "boost-license";
maintainers = [ stdenv.lib.maintainers.simons ];
};
src = fetchurl {
url = "mirror://sourceforge/boost/boost_1_47_0.tar.bz2";
sha256 = "815a5d9faac4dbd523fbcf3fe1065e443c0bbf43427c44aa423422c6ec4c2e31";
};
# See <http://svn.boost.org/trac/boost/ticket/4688>.
patches = [ ./boost_filesystem.patch ];
enableParallelBuilding = true;
buildInputs = [icu expat zlib bzip2 python];
configureScript = "./bootstrap.sh";
configureFlags = "--with-icu=${icu} --with-python=${python}/bin/python";
buildPhase = "./b2 -j$NIX_BUILD_CORES -sEXPAT_INCLUDE=${expat}/include -sEXPAT_LIBPATH=${expat}/lib --layout=${finalLayout} variant=${variant} threading=${threading} link=${link} ${cflags} install";
installPhase = ":";
crossAttrs = rec {
buildInputs = [ expat.hostDrv zlib.hostDrv bzip2.hostDrv ];
# all buildInputs set previously fell into propagatedBuildInputs, as usual, so we have to
# override them.
propagatedBuildInputs = buildInputs;
# We want to substitute the contents of configureFlags, removing thus the
# usual --build and --host added on cross building.
preConfigure = ''
export configureFlags="--prefix=$out --without-icu"
'';
buildPhase = ''
set -x
cat << EOF > user-config.jam
using gcc : cross : $crossConfig-g++ ;
EOF
./b2 -j$NIX_BUILD_CORES -sEXPAT_INCLUDE=${expat.hostDrv}/include -sEXPAT_LIBPATH=${expat.hostDrv}/lib --layout=${finalLayout} --user-config=user-config.jam toolset=gcc-cross variant=${variant} threading=${threading} link=${link} ${cflags} --without-python install
'';
};
}