From 4b27d2870197b26b7c170caa333944231715d4a3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Llu=C3=ADs=20Batlle=20i=20Rossell?= Date: Sun, 8 Nov 2009 00:32:12 +0000 Subject: [PATCH 001/232] Porting changes from stdenv-updates into this branch. This comes from: svn diff ^/nixpkgs/trunk/@18255 ^/nixpkgs/branches/stdenv-updates/ > diff patch -p0 < diff and then adding into svn all files new from the patch. trunk@18255 comes from the last time I updated stdenv-updates from trunk. svn path=/nixpkgs/stdenv-updates2/; revision=18272 --- .../networking/p2p/mldonkey/default.nix | 16 +- pkgs/build-support/gcc-wrapper/builder.sh | 28 +- pkgs/build-support/gcc-wrapper/default.nix | 7 +- pkgs/build-support/gcc-wrapper/setup-hook.sh | 4 + pkgs/build-support/kernel/make-initrd.nix | 9 +- pkgs/build-support/kernel/make-initrd.sh | 5 + pkgs/build-support/kernel/modules-closure.sh | 2 +- .../development/compilers/gcc-4.3/default.nix | 12 +- pkgs/development/compilers/ocaml/3.11.1.nix | 13 +- pkgs/development/compilers/ocaml/cvs.nix | 31 + .../interpreters/perl-5.10/default.nix | 30 +- pkgs/development/libraries/eglibc/builder.sh | 63 + pkgs/development/libraries/eglibc/default.nix | 32 + .../libraries/freetype/default.nix | 8 +- .../libraries/glibc-2.9/binutils-2.20.patch | 42 + .../libraries/glibc-2.9/builder.sh | 9 +- .../libraries/glibc-2.9/default.nix | 33 +- pkgs/development/libraries/glibc-2.9/info.nix | 5 + .../libraries/glibc-2.9/locales.nix | 32 +- .../libraries/glibc-2.9/localesbuilder.sh | 50 + pkgs/development/libraries/icu/default.nix | 3 + .../libraries/libxcrypt/default.nix | 3 + .../readline/link-against-ncurses.patch | 18 + .../libraries/readline/readline-patches.nix | 8 + .../libraries/readline/readline6.nix | 17 +- .../tools/misc/binutils/default.nix | 12 +- .../development/tools/misc/strace/default.nix | 2 + .../strace/strace-4.5.18-arm-syscalls.patch | 162 ++ pkgs/misc/uboot/default.nix | 53 + pkgs/misc/uboot/gas220.patch | 18 + pkgs/os-specific/linux/hal/default.nix | 7 +- .../linux/kernel-headers/2.6.28.nix | 1 + pkgs/os-specific/linux/kernel/builder.sh | 16 +- .../linux/kernel/config-2.6.31-armv5tel | 1786 +++++++++++++++++ pkgs/os-specific/linux/kernel/generic.nix | 10 +- .../os-specific/linux/kernel/linux-2.6.28.nix | 1 + .../os-specific/linux/kernel/linux-2.6.29.nix | 1 + .../os-specific/linux/kernel/linux-2.6.31.nix | 7 +- pkgs/os-specific/linux/klibc/default.nix | 2 + pkgs/os-specific/linux/pam_unix2/default.nix | 4 +- pkgs/os-specific/linux/uclibc/default.nix | 38 + .../linux/zen-kernel/2.6.31-zen5.nix | 97 +- pkgs/shells/bash/bash-patches.nix | 37 + pkgs/shells/bash/default.nix | 39 +- pkgs/shells/bash/update-patch-set.sh | 47 + pkgs/stdenv/default.nix | 1 + pkgs/stdenv/generic/default.nix | 3 +- .../linux/bootstrap/armv5tel/default.nix | 13 + pkgs/stdenv/linux/default.nix | 18 +- pkgs/stdenv/linux/make-bootstrap-tools.nix | 19 +- .../scripts/unpack-bootstrap-tools-arm.sh | 48 + .../linux/scripts/unpack-bootstrap-tools.sh | 19 +- pkgs/tools/compression/bzip2/default.nix | 8 +- pkgs/tools/compression/gzip/default.nix | 36 +- pkgs/tools/compression/gzip/getopt.patch | 54 + .../compression/gzip/gnulib-futimens.patch | 42 - pkgs/tools/misc/coreutils/7.5.nix | 28 + pkgs/tools/misc/coreutils/default.nix | 10 +- pkgs/tools/networking/curl/default.nix | 10 +- pkgs/tools/networking/wget/default.nix | 43 +- .../networking/wget/gnutls-support.patch | 16 + pkgs/tools/text/gawk/default.nix | 32 +- pkgs/top-level/all-packages.nix | 69 +- 63 files changed, 3088 insertions(+), 201 deletions(-) create mode 100644 pkgs/development/compilers/ocaml/cvs.nix create mode 100644 pkgs/development/libraries/eglibc/builder.sh create mode 100644 pkgs/development/libraries/eglibc/default.nix create mode 100644 pkgs/development/libraries/glibc-2.9/binutils-2.20.patch create mode 100644 pkgs/development/libraries/glibc-2.9/localesbuilder.sh create mode 100644 pkgs/development/libraries/readline/link-against-ncurses.patch create mode 100644 pkgs/development/libraries/readline/readline-patches.nix create mode 100644 pkgs/development/tools/misc/strace/strace-4.5.18-arm-syscalls.patch create mode 100644 pkgs/misc/uboot/default.nix create mode 100644 pkgs/misc/uboot/gas220.patch create mode 100644 pkgs/os-specific/linux/kernel/config-2.6.31-armv5tel create mode 100644 pkgs/os-specific/linux/uclibc/default.nix create mode 100644 pkgs/shells/bash/bash-patches.nix create mode 100644 pkgs/shells/bash/update-patch-set.sh create mode 100644 pkgs/stdenv/linux/bootstrap/armv5tel/default.nix create mode 100644 pkgs/stdenv/linux/scripts/unpack-bootstrap-tools-arm.sh create mode 100644 pkgs/tools/compression/gzip/getopt.patch create mode 100644 pkgs/tools/misc/coreutils/7.5.nix create mode 100644 pkgs/tools/networking/wget/gnutls-support.patch diff --git a/pkgs/applications/networking/p2p/mldonkey/default.nix b/pkgs/applications/networking/p2p/mldonkey/default.nix index 6e950df0a75..02a5e22eb23 100644 --- a/pkgs/applications/networking/p2p/mldonkey/default.nix +++ b/pkgs/applications/networking/p2p/mldonkey/default.nix @@ -1,4 +1,4 @@ -{stdenv, fetchurl, ocaml, zlib, ncurses}: +{stdenv, fetchurl, ocaml, zlib, ncurses, gd, libpng}: stdenv.mkDerivation { name = "mldonkey-3.0.0"; @@ -13,6 +13,16 @@ stdenv.mkDerivation { homepage = http://mldonkey.sourceforge.net/; }; - buildInputs = [ ocaml zlib ncurses ]; - configureFlags = "--disable-gd --disable-gui"; + buildInputs = [ ocaml zlib ncurses gd libpng ]; + configureFlags = [ "--disable-gui" "--enable-ocamlver=3.11.1" ]; + + # Byte code compilation (the ocaml opt compiler is not supported in many platforms) + buildPhase = "make mlnet.byte"; + installPhase = '' + ensureDir $out/bin + cp mlnet.byte $out/bin/mlnet + ''; + + # ocaml bytecode selfcontained binaries loose the bytecode if stripped + dontStrip = true; } diff --git a/pkgs/build-support/gcc-wrapper/builder.sh b/pkgs/build-support/gcc-wrapper/builder.sh index 0fe3f3768f2..cf4d6dfed96 100644 --- a/pkgs/build-support/gcc-wrapper/builder.sh +++ b/pkgs/build-support/gcc-wrapper/builder.sh @@ -83,7 +83,7 @@ mkGccWrapper() { if ! test -f "$src"; then echo "$src does not exist (skipping)" - return + return 1 fi gccProg="$src" @@ -91,18 +91,24 @@ mkGccWrapper() { chmod +x "$dst" } -mkGccWrapper $out/bin/gcc $gccPath/gcc -ln -s gcc $out/bin/cc - -mkGccWrapper $out/bin/g++ $gccPath/g++ -ln -s g++ $out/bin/c++ - -if test -e $gccPath/gfortran; then - mkGccWrapper $out/bin/gfortran $gccPath/gfortran - ln -s gfortran $out/bin/g77 - ln -s gfortran $out/bin/f77 +if mkGccWrapper $out/bin/gcc $gccPath/gcc +then + ln -sv gcc $out/bin/cc fi +if mkGccWrapper $out/bin/g++ $gccPath/g++ +then + ln -sv g++ $out/bin/c++ +fi + +if mkGccWrapper $out/bin/gfortran $gccPath/gfortran +then + ln -sv gfortran $out/bin/g77 + ln -sv gfortran $out/bin/f77 +fi + +mkGccWrapper $out/bin/gcj $gccPath/gcj || true + # Create a symlink to as (the assembler). This is useful when a # gcc-wrapper is installed in a user environment, as it ensures that diff --git a/pkgs/build-support/gcc-wrapper/default.nix b/pkgs/build-support/gcc-wrapper/default.nix index d517a472d74..339aba74288 100644 --- a/pkgs/build-support/gcc-wrapper/default.nix +++ b/pkgs/build-support/gcc-wrapper/default.nix @@ -6,11 +6,11 @@ # variables so that the compiler and the linker just "work". { name ? "", stdenv, nativeTools, nativeLibc, nativePrefix ? "" -, gcc ? null, libc ? null, binutils ? null, shell ? "" +, gcc ? null, libc ? null, binutils ? null, coreutils ? null, shell ? "" }: assert nativeTools -> nativePrefix != ""; -assert !nativeTools -> gcc != null && binutils != null; +assert !nativeTools -> gcc != null && binutils != null && coreutils != null; assert !nativeLibc -> libc != null; let @@ -35,6 +35,8 @@ stdenv.mkDerivation { inherit nativeTools nativeLibc nativePrefix gcc; libc = if nativeLibc then null else libc; binutils = if nativeTools then null else binutils; + # The wrapper scripts use 'cat', so we may need coreutils + coreutils = if nativeTools then null else coreutils; langC = if nativeTools then true else gcc.langC; langCC = if nativeTools then true else gcc.langCC; @@ -54,6 +56,7 @@ stdenv.mkDerivation { if !nativeLibc then (if stdenv.system == "i686-linux" then "ld-linux.so.2" else if stdenv.system == "x86_64-linux" then "ld-linux-x86-64.so.2" else + if stdenv.system == "armv5tel-linux" then "ld-linux.so.3" else if stdenv.system == "powerpc-linux" then "ld.so.1" else abort "don't know the name of the dynamic linker for this platform") else ""; diff --git a/pkgs/build-support/gcc-wrapper/setup-hook.sh b/pkgs/build-support/gcc-wrapper/setup-hook.sh index 76167df3c31..513ab8053a7 100644 --- a/pkgs/build-support/gcc-wrapper/setup-hook.sh +++ b/pkgs/build-support/gcc-wrapper/setup-hook.sh @@ -27,3 +27,7 @@ fi if test -n "@libc@"; then addToSearchPath PATH @libc@/bin fi + +if test -n "@coreutils@"; then + addToSearchPath PATH @coreutils@/bin +fi diff --git a/pkgs/build-support/kernel/make-initrd.nix b/pkgs/build-support/kernel/make-initrd.nix index b62ed984045..92142b5ef43 100644 --- a/pkgs/build-support/kernel/make-initrd.nix +++ b/pkgs/build-support/kernel/make-initrd.nix @@ -12,12 +12,17 @@ # `contents = {object = ...; symlink = /init;}' is a typical # argument. -{stdenv, perl, cpio, contents}: +{stdenv, perl, cpio, contents, uboot ? null}: + +assert stdenv.system == "armv5tel-linux" -> uboot != null; stdenv.mkDerivation { name = "initrd"; builder = ./make-initrd.sh; - buildInputs = [perl cpio]; + buildInputs = [perl cpio] + ++ stdenv.lib.optional (stdenv.system == "armv5tel-linux") [ uboot ]; + + makeUInitrd = if (stdenv.system == "armv5tel-linux") then true else false; # !!! should use XML. objects = map (x: x.object) contents; diff --git a/pkgs/build-support/kernel/make-initrd.sh b/pkgs/build-support/kernel/make-initrd.sh index d930e51a03f..69931bad113 100644 --- a/pkgs/build-support/kernel/make-initrd.sh +++ b/pkgs/build-support/kernel/make-initrd.sh @@ -37,3 +37,8 @@ storePaths=$(perl $pathsFromGraph closure-*) # Put the closure in a gzipped cpio archive. ensureDir $out (cd root && find * -print0 | cpio -ov -H newc --null | gzip -9 > $out/initrd) + +if [ -n "$makeUInitrd" ]; then + mv $out/initrd $out/initrd.gz + mkimage -A arm -O linux -T ramdisk -C gzip -d $out/initrd.gz $out/initrd +fi diff --git a/pkgs/build-support/kernel/modules-closure.sh b/pkgs/build-support/kernel/modules-closure.sh index e75ef927baa..af1faa7708c 100644 --- a/pkgs/build-support/kernel/modules-closure.sh +++ b/pkgs/build-support/kernel/modules-closure.sh @@ -22,7 +22,7 @@ for module in $rootModules; do done echo "closure:" -ensureDir $out +ensureDir $out/lib/modules/"$version" for module in $closure; do target=$(echo $module | sed "s^/nix/store/.*/lib/modules/^$out/lib/modules/^") if test -e "$target"; then continue; fi diff --git a/pkgs/development/compilers/gcc-4.3/default.nix b/pkgs/development/compilers/gcc-4.3/default.nix index aad9f820744..9823fc82051 100644 --- a/pkgs/development/compilers/gcc-4.3/default.nix +++ b/pkgs/development/compilers/gcc-4.3/default.nix @@ -3,6 +3,7 @@ , langJava ? false , profiledCompiler ? false , staticCompiler ? false +, enableShared ? true , texinfo ? null , gmp, mpfr , bison ? null, flex ? null @@ -15,7 +16,7 @@ assert langTreelang -> bison != null && flex != null; with stdenv.lib; -let version = "4.3.3"; in +let version = "4.3.4"; in stdenv.mkDerivation ({ name = "${name}-${version}"; @@ -25,19 +26,19 @@ stdenv.mkDerivation ({ src = optional /*langC*/ true (fetchurl { url = "mirror://gcc/releases/gcc-${version}/gcc-core-${version}.tar.bz2"; - sha256 = "08yksvipnqmqbmif30rwjkg3y0m6ray5r84wa2argv8q0bpz9426"; + sha256 = "1yk80nwyw8vkpw8d3x7lkg3zrv3ngjqlvj0i8zslzgj7a27q729i"; }) ++ optional langCC (fetchurl { url = "mirror://gcc/releases/gcc-${version}/gcc-g++-${version}.tar.bz2"; - sha256 = "12z2zh03yq214qs2cqzh8c64jjfz544nk1lzi9rygjwm8yjsvzm9"; + sha256 = "0d8pyk5c9zmph25f4fl63vd8vhljj6ildbxpz2hr594g5i6pplpq"; }) ++ optional langFortran (fetchurl { url = "mirror://gcc/releases/gcc-${version}/gcc-fortran-${version}.tar.bz2"; - sha256 = "1b2wbysviyh7l9fqbd6zy5y6y89xgysy99gr8wx8xkc1hy2nwdsq"; + sha256 = "1xf2njykv1qcgxiqwj693dxjf77ss1rcxirylvnsp5hs89mdlj12"; }) ++ optional langJava (fetchurl { url = "mirror://gcc/releases/gcc-${version}/gcc-java-${version}.tar.bz2"; - sha256 = "1mlazpydd9qv7zwxkbb5sw3clfawfndhcc3f5lzycminvn6qmfkb"; + sha256 = "1v3krhxi3zyaqfj0x8dbxvg67fjp29cr1psyf71r9zf757p3vqsw"; }); patches = @@ -56,6 +57,7 @@ stdenv.mkDerivation ({ configureFlags = " ${if enableMultilib then "" else "--disable-multilib"} + ${if enableShared then "" else "--disable-shared"} --disable-libstdcxx-pch --with-system-zlib --enable-languages=${ diff --git a/pkgs/development/compilers/ocaml/3.11.1.nix b/pkgs/development/compilers/ocaml/3.11.1.nix index f5955c7c78c..d7053d583c2 100644 --- a/pkgs/development/compilers/ocaml/3.11.1.nix +++ b/pkgs/development/compilers/ocaml/3.11.1.nix @@ -1,5 +1,10 @@ args: with args; +let + useX11 = (stdenv.system != "armv5tel-linux"); + useNativeCompilers = (stdenv.system != "armv5tel-linux"); + inherit (stdenv.lib) optionals optionalString; +in stdenv.mkDerivation (rec { name = "ocaml-3.11.1"; @@ -10,10 +15,10 @@ stdenv.mkDerivation (rec { }; prefixKey = "-prefix "; - configureFlags = ["-no-tk" "-x11lib" x11]; - buildFlags = "world bootstrap world.opt"; - buildInputs = [x11 ncurses]; - installTargets = "install installopt"; + configureFlags = ["-no-tk"] ++ optionals useX11 [ "-x11lib" x11 ]; + buildFlags = "world" + optionalString useNativeCompilers " bootstrap world.opt"; + buildInputs = [ncurses] ++ optionals useX11 [ x11 ]; + installTargets = "install" + optionalString useNativeCompilers " installopt"; patchPhase = '' CAT=$(type -tp cat) sed -e "s@/bin/cat@$CAT@" -i config/auto-aux/sharpbang diff --git a/pkgs/development/compilers/ocaml/cvs.nix b/pkgs/development/compilers/ocaml/cvs.nix new file mode 100644 index 00000000000..475a1d46d58 --- /dev/null +++ b/pkgs/development/compilers/ocaml/cvs.nix @@ -0,0 +1,31 @@ +args: with args; + +stdenv.mkDerivation (rec { + + name = "ocaml-cvs-2009-09-24"; + + src = fetchcvs { + cvsRoot = ":pserver:anoncvs@camlcvs.inria.fr:/caml"; + module = "ocaml"; + date = "2009-09-24"; + sha256 = "3909bffebc9ce36ca51711d7d95596cba94376ebb1975c6ed46b09c9892c3ef1"; + }; + + prefixKey = "-prefix "; + configureFlags = ["-no-tk"]; + buildFlags = "world" + + (if (stdenv.system != "armv5tel-linux") then "bootstrap world.opt" else ""); + buildInputs = [ncurses]; + installTargets = "install" + (if (stdenv.system != "armv5tel-linux") then "installopt" else ""); + patchPhase = '' + CAT=$(type -tp cat) + sed -e "s@/bin/cat@$CAT@" -i config/auto-aux/sharpbang + ''; + + meta = { + homepage = http://caml.inria.fr/ocaml; + license = "QPL, LGPL2 (library part)"; + desctiption = "Most popular variant of the Caml language"; + }; + +}) diff --git a/pkgs/development/interpreters/perl-5.10/default.nix b/pkgs/development/interpreters/perl-5.10/default.nix index 442f428ac6f..94fda842bb1 100644 --- a/pkgs/development/interpreters/perl-5.10/default.nix +++ b/pkgs/development/interpreters/perl-5.10/default.nix @@ -2,6 +2,13 @@ , impureLibcPath ? null }: +let + preBuildNoNative = '' + # Make Cwd work on NixOS (where we don't have a /bin/pwd). + substituteInPlace lib/Cwd.pm --replace "'/bin/pwd'" "'$(type -tP pwd)'" + ''; + preBuildNative = ""; +in stdenv.mkDerivation { name = "perl-5.10.0"; @@ -24,16 +31,21 @@ stdenv.mkDerivation { # "installstyle" option to ensure that modules are put under # $out/lib/perl5 - this is the general default, but because $out # contains the string "perl", Configure would select $out/lib. - configureFlags = '' - -de -Dcc=gcc -Uinstallusrbinperl -Dinstallstyle=lib/perl5 -Duseshrplib - ${if stdenv ? glibc then "-Dusethreads" else ""} - ''; + # Miniperl needs -lm. perl needs -lrt. + configureFlags = [ + "-de" + "-Dcc=gcc" + "-Uinstallusrbinperl" + "-Dinstallstyle=lib/perl5" + "-Duseshrplib" + (if stdenv ? glibc then "-Dusethreads" else "") + ]; configureScript = "${stdenv.shell} ./Configure"; dontAddPrefix = true; - preConfigure = + configurePhase = '' configureFlags="$configureFlags -Dprefix=$out -Dman1dir=$out/share/man/man1 -Dman3dir=$out/share/man/man3" @@ -41,13 +53,11 @@ stdenv.mkDerivation { GLIBC=${if impureLibcPath == null then "$(cat $NIX_GCC/nix-support/orig-libc)" else impureLibcPath} configureFlags="$configureFlags -Dlocincpth=$GLIBC/include -Dloclibpth=$GLIBC/lib" fi + ${stdenv.shell} ./Configure $configureFlags \ + ${if stdenv.system == "armv5tel-linux" then "-Dldflags=\"-lm -lrt\"" else ""}; ''; - preBuild = - '' - # Make Cwd work on NixOS (where we don't have a /bin/pwd). - ${if stdenv.system == "i686-darwin" then "" else "substituteInPlace lib/Cwd.pm --replace \"'/bin/pwd'\" \"'$(type -tP pwd)'\""} - ''; + preBuild = if (stdenv.gcc.nativeTools) then preBuildNative else preBuildNoNative; setupHook = ./setup-hook.sh; } diff --git a/pkgs/development/libraries/eglibc/builder.sh b/pkgs/development/libraries/eglibc/builder.sh new file mode 100644 index 00000000000..47cd1b5e252 --- /dev/null +++ b/pkgs/development/libraries/eglibc/builder.sh @@ -0,0 +1,63 @@ +# Glibc cannot have itself in its RPATH. +export NIX_NO_SELF_RPATH=1 + +source $stdenv/setup + +# Explicitly tell glibc to use our pwd, not /bin/pwd. +export PWD_P=$(type -tP pwd) + +# Needed to install share/zoneinfo/zone.tab. Set to impure /bin/sh to +# prevent a retained dependency on the bootstrap tools in the +# stdenv-linux bootstrap. +export BASH_SHELL=/bin/sh + +preConfigure() { + + for i in libc/configure libc/io/ftwtest-sh; do + # Can't use substituteInPlace here because replace hasn't been + # built yet in the bootstrap. + sed -i "$i" -e "s^/bin/pwd^$PWD_P^g" + done + + # Include source for debugging + ensureDir $out/src + cp -R libc ports $out/src + ln -s $out/src/ports $out/src/libc/ports + # glibc wants -O2 minimum + export CFLAGS="-pipe -g -O2" + + mkdir $NIX_BUILD_TOP/build + cd $NIX_BUILD_TOP/build + + configureScript=$out/src/libc/configure +} + + +postConfigure() { + # Hack: get rid of the `-static' flag set by the bootstrap stdenv. + # This has to be done *after* `configure' because it builds some + # test binaries. + export NIX_CFLAGS_LINK= + export NIX_LDFLAGS_BEFORE= + + export NIX_DONT_SET_RPATH=1 + unset CFLAGS +} + + +postInstall() { + if test -n "$installLocales"; then + make localedata/install-locales + fi + rm $out/etc/ld.so.cache + (cd $out/include && ln -s $kernelHeaders/include/* .) || exit 1 + + # Fix for NIXOS-54 (ldd not working on x86_64). Make a symlink + # "lib64" to "lib". + if test -n "$is64bit"; then + ln -s lib $out/lib64 + fi +} + + +genericBuild diff --git a/pkgs/development/libraries/eglibc/default.nix b/pkgs/development/libraries/eglibc/default.nix new file mode 100644 index 00000000000..a27d0f53fbf --- /dev/null +++ b/pkgs/development/libraries/eglibc/default.nix @@ -0,0 +1,32 @@ +{ stdenv, fetchsvn, kernelHeaders +, installLocales ? true +, profilingLibraries ? false +}: + +stdenv.mkDerivation rec { + name = "eglibc-2.10"; + + src = fetchsvn { + url = svn://svn.eglibc.org/branches/eglibc-2_10; + rev = 8690; + sha256 = "029hklrx2rlhsb5r2csd0gapjm0rbr8n28ib6jnnhms12x302viq"; + }; + + inherit kernelHeaders installLocales; + + configureFlags = [ + "--with-headers=${kernelHeaders}/include" + "--without-fp" + "--enable-add-ons=libidn,ports,nptl" + "--disable-profile" + "--host=arm-linux-gnueabi" + "--build=arm-linux-gnueabi" + ]; + + builder = ./builder.sh; + + meta = { + homepage = http://www.gnu.org/software/libc/; + description = "The GNU C Library"; + }; +} diff --git a/pkgs/development/libraries/freetype/default.nix b/pkgs/development/libraries/freetype/default.nix index 0bf2db03cd8..d3814bdb972 100644 --- a/pkgs/development/libraries/freetype/default.nix +++ b/pkgs/development/libraries/freetype/default.nix @@ -1,5 +1,4 @@ { stdenv, fetchurl - , # FreeType supports hinting using a TrueType bytecode interpreter, # as well as sub-pixel rendering. These are patented by Apple and # Microsoft, respectively, so they are disabled by default. This @@ -8,7 +7,7 @@ useEncumberedCode ? false }: -stdenv.mkDerivation rec { +stdenv.mkDerivation (rec { name = "freetype-2.3.11"; src = fetchurl { @@ -26,4 +25,7 @@ stdenv.mkDerivation rec { homepage = http://www.freetype.org/; license = "GPLv2+"; # or the FreeType License (BSD + advertising clause) }; -} +} // +# The asm for armel is written with the 'asm' keyword. +(if (stdenv.system == "armv5tel-linux") then + {CFLAGS = "-std=gnu99";} else {})) diff --git a/pkgs/development/libraries/glibc-2.9/binutils-2.20.patch b/pkgs/development/libraries/glibc-2.9/binutils-2.20.patch new file mode 100644 index 00000000000..ab3d6144d6e --- /dev/null +++ b/pkgs/development/libraries/glibc-2.9/binutils-2.20.patch @@ -0,0 +1,42 @@ +Support GNU Binutils 2.20 and beyond. Patch from +http://sourceware.org/ml/libc-alpha/2009-09/msg00009.html . + +diff --git a/configure b/configure +index 48e6952..b1d84d7 100755 +--- a/configure ++++ b/configure +@@ -4841,7 +4841,7 @@ $as_echo_n "checking version of $AS... " >&6; } + ac_prog_version=`$AS --version 2>&1 | sed -n 's/^.*GNU assembler.* \([0-9]*\.[0-9.]*\).*$/\1/p'` + case $ac_prog_version in + '') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;; +- 2.1[3-9]*) ++ 2.1[3-9]*|[2-9].[2-9]*) + ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;; + *) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;; + +@@ -4904,7 +4904,7 @@ $as_echo_n "checking version of $LD... " >&6; } + ac_prog_version=`$LD --version 2>&1 | sed -n 's/^.*GNU ld.* \([0-9][0-9]*\.[0-9.]*\).*$/\1/p'` + case $ac_prog_version in + '') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;; +- 2.1[3-9]*) ++ 2.1[3-9]*|[2-9].[2-9]*) + ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;; + *) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;; + +diff --git a/configure.in b/configure.in +index 4584afe..7c4f71f 100644 +--- a/configure.in ++++ b/configure.in +@@ -897,10 +897,10 @@ AC_SUBST(MIG)dnl Needed by sysdeps/mach/configure.in + # Accept binutils 2.13 or newer. + AC_CHECK_PROG_VER(AS, $AS, --version, + [GNU assembler.* \([0-9]*\.[0-9.]*\)], +- [2.1[3-9]*], AS=: critic_missing="$critic_missing as") ++ [2.1[3-9]*|[2-9].[2-9]*], AS=: critic_missing="$critic_missing as") + AC_CHECK_PROG_VER(LD, $LD, --version, + [GNU ld.* \([0-9][0-9]*\.[0-9.]*\)], +- [2.1[3-9]*], LD=: critic_missing="$critic_missing ld") ++ [2.1[3-9]*|[2-9].[2-9]*], LD=: critic_missing="$critic_missing ld") + + # We need the physical current working directory. We cannot use the + # "pwd -P" shell builtin since that's not portable. Instead we try to diff --git a/pkgs/development/libraries/glibc-2.9/builder.sh b/pkgs/development/libraries/glibc-2.9/builder.sh index 8cc6be4cf73..adb73656c2a 100644 --- a/pkgs/development/libraries/glibc-2.9/builder.sh +++ b/pkgs/development/libraries/glibc-2.9/builder.sh @@ -26,11 +26,13 @@ preConfigure() { # don't want as a dependency in the Nixpkgs bootstrap. So force # the output file to be newer. touch locale/C-translit.h + + tar xvjf "$srcPorts" - mkdir ../build - cd ../build + mkdir build + cd build - configureScript=../$sourceRoot/configure + configureScript=../configure } @@ -42,6 +44,7 @@ postConfigure() { export NIX_LDFLAGS_BEFORE= export NIX_DONT_SET_RPATH=1 + unset CFLAGS } diff --git a/pkgs/development/libraries/glibc-2.9/default.nix b/pkgs/development/libraries/glibc-2.9/default.nix index c94cedab018..33f93befb21 100644 --- a/pkgs/development/libraries/glibc-2.9/default.nix +++ b/pkgs/development/libraries/glibc-2.9/default.nix @@ -9,8 +9,13 @@ stdenv.mkDerivation rec { builder = ./builder.sh; src = fetchurl { - url = http://nixos.org/tarballs/glibc-2.9-20081208.tar.bz2; - sha256 = "0zhxbgcsl97pf349m0lz8d5ljvvzrcqc23yf08d888xlk4ms8m3h"; + url = http://ftp.gnu.org/gnu/glibc/glibc-2.9.tar.bz2; + sha256 = "0v53m7flx6qcx7cvrvvw6a4dx4x3y6k8nvpc4wfv5xaaqy2am2q9"; + }; + + srcPorts = fetchurl { + url = http://ftp.gnu.org/gnu/glibc/glibc-ports-2.9.tar.bz2; + sha256 = "0r2sn527wxqifi63di7ns9wbjh1cainxn978w178khhy7yw9fk42"; }; inherit kernelHeaders installLocales; @@ -46,12 +51,28 @@ stdenv.mkDerivation rec { /* Have rpcgen(1) look for cpp(1) in $PATH. */ ./rpcgen-path.patch + + /* Support GNU Binutils 2.20 and above. */ + ./binutils-2.20.patch ]; - configureFlags = '' - --enable-add-ons - --with-headers=${kernelHeaders}/include - ${if profilingLibraries then "--enable-profile" else "--disable-profile"} + configureFlags = [ + "--enable-add-ons" + "--with-headers=${kernelHeaders}/include" + (if profilingLibraries then "--enable-profile" else "--disable-profile") + ] ++ (if (stdenv.system == "armv5tel-linux") then [ + "--host=arm-linux-gnueabi" + "--build=arm-linux-gnueabi" + "--without-fp" + ] else []); + + preInstall = '' + ensureDir $out/lib + ln -s ${stdenv.gcc.gcc}/lib/libgcc_s.so.1 $out/lib/libgcc_s.so.1 + ''; + + postInstall = '' + rm $out/lib/libgcc_s.so.1 ''; # Workaround for this bug: diff --git a/pkgs/development/libraries/glibc-2.9/info.nix b/pkgs/development/libraries/glibc-2.9/info.nix index 9653690606a..3201bb47440 100644 --- a/pkgs/development/libraries/glibc-2.9/info.nix +++ b/pkgs/development/libraries/glibc-2.9/info.nix @@ -8,6 +8,11 @@ stdenv.mkDerivation rec { sha256 = "0zhxbgcsl97pf349m0lz8d5ljvvzrcqc23yf08d888xlk4ms8m3h"; }; + patches = [ + /* Support GNU Binutils 2.20 and above. */ + ./binutils-2.20.patch + ]; + preConfigure = '' export PWD_P=$(type -tP pwd) for i in configure io/ftwtest-sh; do diff --git a/pkgs/development/libraries/glibc-2.9/locales.nix b/pkgs/development/libraries/glibc-2.9/locales.nix index a5ef4797810..3046374ca34 100644 --- a/pkgs/development/libraries/glibc-2.9/locales.nix +++ b/pkgs/development/libraries/glibc-2.9/locales.nix @@ -10,13 +10,35 @@ stdenv.mkDerivation rec { name = "glibc-locales-2.9"; - + + builder = ./localesbuilder.sh; + src = fetchurl { - url = http://nixos.org/tarballs/glibc-2.9-20081208.tar.bz2; - sha256 = "0zhxbgcsl97pf349m0lz8d5ljvvzrcqc23yf08d888xlk4ms8m3h"; + url = http://ftp.gnu.org/gnu/glibc/glibc-2.9.tar.bz2; + sha256 = "0v53m7flx6qcx7cvrvvw6a4dx4x3y6k8nvpc4wfv5xaaqy2am2q9"; }; - configurePhase = "true"; + srcPorts = fetchurl { + url = http://ftp.gnu.org/gnu/glibc/glibc-ports-2.9.tar.bz2; + sha256 = "0r2sn527wxqifi63di7ns9wbjh1cainxn978w178khhy7yw9fk42"; + }; + + inherit (stdenv) is64bit; + + configureFlags = [ + "--enable-add-ons" + "--without-headers" + "--disable-profile" + ] ++ (if (stdenv.system == "armv5tel-linux") then [ + "--host=arm-linux-gnueabi" + "--build=arm-linux-gnueabi" + "--without-fp" + ] else []); + + patches = [ + /* Support GNU Binutils 2.20 and above. */ + ./binutils-2.20.patch + ]; # Awful hack: `localedef' doesn't allow the path to `locale-archive' # to be overriden, but you *can* specify a prefix, i.e. it will use @@ -25,8 +47,6 @@ stdenv.mkDerivation rec { # $TMPDIR/nix/store/...-glibc-.../lib/locale/locale-archive. buildPhase = '' - touch config.make - touch config.status mkdir -p $TMPDIR/"$(dirname $(readlink -f $(type -p localedef)))/../lib/locale" make localedata/install-locales \ LOCALEDEF="localedef --prefix=$TMPDIR" \ diff --git a/pkgs/development/libraries/glibc-2.9/localesbuilder.sh b/pkgs/development/libraries/glibc-2.9/localesbuilder.sh new file mode 100644 index 00000000000..a28f6bcbaeb --- /dev/null +++ b/pkgs/development/libraries/glibc-2.9/localesbuilder.sh @@ -0,0 +1,50 @@ +# Glibc cannot have itself in its RPATH. +export NIX_NO_SELF_RPATH=1 + +source $stdenv/setup + +# Explicitly tell glibc to use our pwd, not /bin/pwd. +export PWD_P=$(type -tP pwd) + +# Needed to install share/zoneinfo/zone.tab. Set to impure /bin/sh to +# prevent a retained dependency on the bootstrap tools in the +# stdenv-linux bootstrap. +export BASH_SHELL=/bin/sh + + +preConfigure() { + + for i in configure io/ftwtest-sh; do + # Can't use substituteInPlace here because replace hasn't been + # built yet in the bootstrap. + sed -i "$i" -e "s^/bin/pwd^$PWD_P^g" + done + + # In the glibc 2.6/2.7 tarballs C-translit.h is a little bit older + # than C-translit.h.in, forcing Make to rebuild it unnecessarily. + # This wouldn't be problem except that it requires Perl, which we + # don't want as a dependency in the Nixpkgs bootstrap. So force + # the output file to be newer. + touch locale/C-translit.h + + tar xvjf "$srcPorts" + + mkdir build + cd build + + configureScript=../configure +} + + +postConfigure() { + # Hack: get rid of the `-static' flag set by the bootstrap stdenv. + # This has to be done *after* `configure' because it builds some + # test binaries. + export NIX_CFLAGS_LINK= + export NIX_LDFLAGS_BEFORE= + + export NIX_DONT_SET_RPATH=1 + unset CFLAGS +} + +genericBuild diff --git a/pkgs/development/libraries/icu/default.nix b/pkgs/development/libraries/icu/default.nix index 82ea06508f0..47217d7fa98 100644 --- a/pkgs/development/libraries/icu/default.nix +++ b/pkgs/development/libraries/icu/default.nix @@ -10,6 +10,9 @@ stdenv.mkDerivation { patchFlags = "-p0"; + CFLAGS = "-O0"; + CXXFLAGS = "-O0"; + patches = [ (fetchurl { url = "http://sources.gentoo.org/viewcvs.py/*checkout*/gentoo-x86/dev-libs/icu/files/icu-3.8-setBreakType-public.diff?rev=1.1"; diff --git a/pkgs/development/libraries/libxcrypt/default.nix b/pkgs/development/libraries/libxcrypt/default.nix index 7124fc72eee..1ae5d3054f4 100644 --- a/pkgs/development/libraries/libxcrypt/default.nix +++ b/pkgs/development/libraries/libxcrypt/default.nix @@ -1,4 +1,7 @@ {stdenv, fetchurl}: + +# I could not build it in armv5tel-linux +assert stdenv.system != "armv5tel-linux"; stdenv.mkDerivation { name = "libxcrypt-3.0.2"; diff --git a/pkgs/development/libraries/readline/link-against-ncurses.patch b/pkgs/development/libraries/readline/link-against-ncurses.patch new file mode 100644 index 00000000000..0fd0598f465 --- /dev/null +++ b/pkgs/development/libraries/readline/link-against-ncurses.patch @@ -0,0 +1,18 @@ +This patch is to make sure that `libncurses' is among the `NEEDED' +dependencies of `libreadline.so' and `libhistory.so'. + +Failing to do that, applications linking against Readline are +forced to explicitly link against libncurses as well; in addition, +this trick doesn't work when using GNU ld's `--as-needed'. + +--- shlib/Makefile.in 2009-01-06 18:03:22.000000000 +0100 ++++ shlib/Makefile.in 2009-07-27 14:43:25.000000000 +0200 +@@ -84,7 +84,7 @@ SHOBJ_LDFLAGS = @SHOBJ_LDFLAGS@ + SHOBJ_XLDFLAGS = @SHOBJ_XLDFLAGS@ + SHOBJ_LIBS = @SHOBJ_LIBS@ + +-SHLIB_XLDFLAGS = @LDFLAGS@ @SHLIB_XLDFLAGS@ ++SHLIB_XLDFLAGS = @LDFLAGS@ @SHLIB_XLDFLAGS@ -lncurses + SHLIB_LIBS = @SHLIB_LIBS@ + + SHLIB_DOT = @SHLIB_DOT@ diff --git a/pkgs/development/libraries/readline/readline-patches.nix b/pkgs/development/libraries/readline/readline-patches.nix new file mode 100644 index 00000000000..701d5fc94ce --- /dev/null +++ b/pkgs/development/libraries/readline/readline-patches.nix @@ -0,0 +1,8 @@ +# Automatically generated by `update-patch-set.sh'; do not edit. + +patch: [ +(patch "001" "1wbqnsxm4nd8rjckl8mdqcb82pphnsj2yxs4f2nf88kyhwzy544i") +(patch "002" "070c3jz8fs5q17yy3l70wxklgnw6hp5ac9zhb0jdnrr9hf0wi6kl") +(patch "003" "1gwssafy42hcijcynmlpqsasch7kqxbv2cqw0p7f9p2y6vp9ng2j") +(patch "004" "1yzaycdfqjs5jdl0k7qg9cx47bdlq9xs0m6lfq42ys3yscmb1jzm") +] diff --git a/pkgs/development/libraries/readline/readline6.nix b/pkgs/development/libraries/readline/readline6.nix index fcf89207da3..60232a8b80b 100644 --- a/pkgs/development/libraries/readline/readline6.nix +++ b/pkgs/development/libraries/readline/readline6.nix @@ -9,7 +9,20 @@ stdenv.mkDerivation rec { }; propagatedBuildInputs = [ncurses]; - + + patchFlags = "-p0"; + patches = + [ ./link-against-ncurses.patch ] + ++ + (let + patch = nr: sha256: + fetchurl { + url = "mirror://gnu/readline/readline-6.0-patches/readline60-${nr}"; + inherit sha256; + }; + in + import ./readline-patches.nix patch); + meta = { description = "GNU Readline, a library for interactive line editing"; @@ -31,5 +44,7 @@ stdenv.mkDerivation rec { homepage = http://savannah.gnu.org/projects/readline/; license = "GPLv3+"; + + maintainers = [ stdenv.lib.maintainers.ludo ]; }; } diff --git a/pkgs/development/tools/misc/binutils/default.nix b/pkgs/development/tools/misc/binutils/default.nix index 5bf14919f85..4987dafd511 100644 --- a/pkgs/development/tools/misc/binutils/default.nix +++ b/pkgs/development/tools/misc/binutils/default.nix @@ -1,11 +1,11 @@ {stdenv, fetchurl, noSysDirs}: stdenv.mkDerivation rec { - name = "binutils-2.19.1"; - + name = "binutils-2.20"; + src = fetchurl { url = "mirror://gnu/binutils/${name}.tar.bz2"; - sha256 = "1xirhxwc94bk6hn2k6i5ly4knbcjsqgy2lp7kl1s5q5csys2b0iy"; + sha256 = "1c3m789p5rwmmnck5ms4zcnc40axss3gxzivz571al1vmbq0kpz1"; }; patches = [ @@ -14,16 +14,16 @@ stdenv.mkDerivation rec { # RUNPATH can be overriden using LD_LIBRARY_PATH at runtime. ./new-dtags.patch ]; - + inherit noSysDirs; preConfigure = '' # Clear the default library search path. if test "$noSysDirs" = "1"; then - echo 'NATIVE_LIB_DIRS=' >> ld/configure.tgt + echo 'NATIVE_LIB_DIRS=' >> ld/configure.tgt fi ''; - + configureFlags = "--disable-werror"; # needed for dietlibc build meta = { diff --git a/pkgs/development/tools/misc/strace/default.nix b/pkgs/development/tools/misc/strace/default.nix index 38c4445d220..6300304cf6b 100644 --- a/pkgs/development/tools/misc/strace/default.nix +++ b/pkgs/development/tools/misc/strace/default.nix @@ -3,6 +3,8 @@ stdenv.mkDerivation { name = "strace-4.5.18"; + patches = [ ./strace-4.5.18-arm-syscalls.patch ]; + src = fetchurl { url = mirror://sourceforge/strace/strace-4.5.18.tar.bz2; sha256 = "1l16vax3mn2wak288g1inmn30i49vlghnvfwr0z2rwh41r3vgrwm"; diff --git a/pkgs/development/tools/misc/strace/strace-4.5.18-arm-syscalls.patch b/pkgs/development/tools/misc/strace/strace-4.5.18-arm-syscalls.patch new file mode 100644 index 00000000000..a2f50fd152f --- /dev/null +++ b/pkgs/development/tools/misc/strace/strace-4.5.18-arm-syscalls.patch @@ -0,0 +1,162 @@ +From f5da8d0c38ea0eb660cb17de7aa62cda6899eb75 Mon Sep 17 00:00:00 2001 +From: ldv +Date: Thu, 1 Jan 2009 23:20:38 +0000 +Subject: [PATCH] 2008-11-13 Kirill A. Shutemov + + * linux/arm/syscallent.h: Fix build on ARM EABI which does not + provide syscalls socketcall and ipc. +--- + ChangeLog | 5 +++++ + linux/arm/syscallent.h | 4 +++- + 2 files changed, 8 insertions(+), 1 deletions(-) + +diff --git a/linux/arm/syscallent.h b/linux/arm/syscallent.h +index 5ccef2f..edc3641 100644 +--- a/linux/arm/syscallent.h ++++ b/linux/arm/syscallent.h +@@ -431,6 +431,7 @@ + { 5, 0, printargs, "SYS_398" }, /* 398 */ + { 5, 0, printargs, "SYS_399" }, /* 399 */ + ++#ifndef __ARM_EABI__ + #if SYS_socket_subcall != 400 + #error fix me + #endif +@@ -481,3 +482,4 @@ + { 4, TI, sys_shmdt, "shmdt" }, /* 440 */ + { 4, TI, sys_shmget, "shmget" }, /* 441 */ + { 4, TI, sys_shmctl, "shmctl" }, /* 442 */ ++#endif +-- +1.6.1.3 + +From 885d06bc92bae2f6aad85ef2fe0b806a06f60712 Mon Sep 17 00:00:00 2001 +From: ldv +Date: Thu, 1 Jan 2009 23:23:47 +0000 +Subject: [PATCH] 2008-11-13 Kirill A. Shutemov + + * linux/arm/syscallent.h: Update syscalls. + Based on patch by Enrico Scholz. +--- + ChangeLog | 3 + + linux/arm/syscallent.h | 98 ++++++++++++++++++++++++------------------------ + 2 files changed, 52 insertions(+), 49 deletions(-) + +diff --git a/linux/arm/syscallent.h b/linux/arm/syscallent.h +index edc3641..6dd783a 100644 +--- a/linux/arm/syscallent.h ++++ b/linux/arm/syscallent.h +@@ -328,63 +328,63 @@ + { 5, TN, sys_getsockopt, "getsockopt" }, /* 295 */ + { 3, TN, sys_sendmsg, "sendmsg" }, /* 296 */ + { 3, TN, sys_recvmsg, "recvmsg" }, /* 297 */ +- { 5, 0, printargs, "SYS_298" }, /* 298 */ +- { 5, 0, printargs, "SYS_299" }, /* 299 */ +- { 5, 0, printargs, "SYS_300" }, /* 300 */ +- { 5, 0, printargs, "SYS_301" }, /* 301 */ +- { 5, 0, printargs, "SYS_302" }, /* 302 */ +- { 5, 0, printargs, "SYS_303" }, /* 303 */ +- { 5, 0, printargs, "SYS_304" }, /* 304 */ +- { 5, 0, printargs, "SYS_305" }, /* 305 */ +- { 5, 0, printargs, "SYS_306" }, /* 306 */ +- { 5, 0, printargs, "SYS_307" }, /* 307 */ +- { 5, 0, printargs, "SYS_308" }, /* 308 */ +- { 5, 0, printargs, "SYS_309" }, /* 309 */ +- { 5, 0, printargs, "SYS_310" }, /* 310 */ +- { 5, 0, printargs, "SYS_311" }, /* 311 */ +- { 5, 0, printargs, "SYS_312" }, /* 312 */ +- { 5, 0, printargs, "SYS_313" }, /* 313 */ +- { 5, 0, printargs, "SYS_314" }, /* 314 */ +- { 5, 0, printargs, "SYS_315" }, /* 315 */ +- { 5, 0, printargs, "SYS_316" }, /* 316 */ +- { 5, 0, printargs, "SYS_317" }, /* 317 */ +- { 5, 0, printargs, "SYS_318" }, /* 318 */ +- { 5, 0, printargs, "SYS_319" }, /* 319 */ +- { 5, 0, printargs, "SYS_320" }, /* 320 */ +- { 5, 0, printargs, "SYS_321" }, /* 321 */ +- { 5, 0, printargs, "SYS_322" }, /* 322 */ +- { 5, 0, printargs, "SYS_323" }, /* 323 */ +- { 5, 0, printargs, "SYS_324" }, /* 324 */ +- { 5, 0, printargs, "SYS_325" }, /* 325 */ +- { 5, 0, printargs, "SYS_326" }, /* 326 */ +- { 5, 0, printargs, "SYS_327" }, /* 327 */ +- { 5, 0, printargs, "SYS_328" }, /* 328 */ +- { 5, 0, printargs, "SYS_329" }, /* 329 */ +- { 5, 0, printargs, "SYS_330" }, /* 330 */ +- { 5, 0, printargs, "SYS_331" }, /* 331 */ +- { 5, 0, printargs, "SYS_332" }, /* 332 */ +- { 5, 0, printargs, "SYS_333" }, /* 333 */ +- { 5, 0, printargs, "SYS_334" }, /* 334 */ ++ { 4, TI, sys_semop, "semop" }, /* 298 */ ++ { 4, TI, sys_semget, "semget" }, /* 299 */ ++ { 4, TI, sys_semctl, "semctl" }, /* 300 */ ++ { 4, TI, sys_msgsnd, "msgsnd" }, /* 301 */ ++ { 4, TI, sys_msgrcv, "msgrcv" }, /* 302 */ ++ { 4, TI, sys_msgget, "msgget" }, /* 303 */ ++ { 4, TI, sys_msgctl, "msgctl" }, /* 304 */ ++ { 4, TI, sys_shmat, "shmat" }, /* 305 */ ++ { 4, TI, sys_shmdt, "shmdt" }, /* 306 */ ++ { 4, TI, sys_shmget, "shmget" }, /* 307 */ ++ { 4, TI, sys_shmctl, "shmctl" }, /* 308 */ ++ { 5, 0, printargs, "add_key" }, /* 309 */ ++ { 4, 0, printargs, "request_key" }, /* 310 */ ++ { 5, 0, printargs, "keyctl" }, /* 311 */ ++ { 5, TI, sys_semtimedop, "semtimedop" }, /* 312 */ ++ { 5, 0, printargs, "vserver" }, /* 313 */ ++ { 3, 0, printargs, "ioprio_set" }, /* 314 */ ++ { 2, 0, printargs, "ioprio_get" }, /* 315 */ ++ { 0, TD, printargs, "inotify_init" }, /* 316 */ ++ { 3, TD, sys_inotify_add_watch, "inotify_add_watch" }, /* 317 */ ++ { 2, TD, sys_inotify_rm_watch, "inotify_rm_watch" }, /* 318 */ ++ { 6, 0, sys_mbind, "mbind" }, /* 319 */ ++ { 3, 0, sys_set_mempolicy, "set_mempolicy" }, /* 320 */ ++ { 5, 0, sys_get_mempolicy, "get_mempolicy" }, /* 321 */ ++ { 4, TD|TF, sys_openat, "openat" }, /* 322 */ ++ { 3, TD|TF, sys_mkdirat, "mkdirat" }, /* 323 */ ++ { 4, TD|TF, sys_mknodat, "mknodat" }, /* 324 */ ++ { 5, TD|TF, sys_fchownat, "fchownat" }, /* 325 */ ++ { 3, TD|TF, sys_futimesat, "futimesat" }, /* 326 */ ++ { 4, TD|TD, sys_newfstatat, "newfstatat" }, /* 327 */ ++ { 3, TD|TF, sys_unlinkat, "unlinkat" }, /* 328 */ ++ { 4, TD|TF, sys_renameat, "renameat" }, /* 329 */ ++ { 5, TD|TF, sys_linkat, "linkat" }, /* 330 */ ++ { 3, TD|TF, sys_symlinkat, "symlinkat" }, /* 331 */ ++ { 4, TD|TF, sys_readlinkat, "readlinkat" }, /* 332 */ ++ { 3, TD|TF, sys_fchmodat, "fchmodat" }, /* 333 */ ++ { 3, TD|TF, sys_faccessat, "faccessat" }, /* 334 */ + { 5, 0, printargs, "SYS_335" }, /* 335 */ + { 5, 0, printargs, "SYS_336" }, /* 336 */ +- { 5, 0, printargs, "SYS_337" }, /* 337 */ +- { 5, 0, printargs, "SYS_338" }, /* 338 */ +- { 5, 0, printargs, "SYS_339" }, /* 339 */ +- { 5, 0, printargs, "SYS_340" }, /* 340 */ ++ { 1, TP, sys_unshare, "unshare" }, /* 337 */ ++ { 2, 0, printargs, "set_robust_list" }, /* 338 */ ++ { 3, 0, printargs, "get_robust_list" }, /* 339 */ ++ { 6, TD, printargs, "splice" }, /* 340 */ + { 5, 0, printargs, "SYS_341" }, /* 341 */ +- { 5, 0, printargs, "SYS_342" }, /* 342 */ +- { 5, 0, printargs, "SYS_343" }, /* 343 */ ++ { 4, TD, printargs, "tee" }, /* 342 */ ++ { 4, TD, printargs, "vmsplice" }, /* 343 */ + { 6, 0, sys_move_pages, "move_pages" }, /* 344 */ + { 3, 0, sys_getcpu, "getcpu" }, /* 345 */ + { 5, 0, printargs, "SYS_346" }, /* 346 */ +- { 5, 0, printargs, "SYS_347" }, /* 347 */ +- { 5, 0, printargs, "SYS_348" }, /* 348 */ ++ { 5, 0, printargs, "kexec_load" }, /* 347 */ ++ { 4, TD|TF, sys_utimensat, "utimensat" }, /* 348 */ + { 3, TD|TS, sys_signalfd, "signalfd" }, /* 349 */ + { 4, TD, sys_timerfd, "timerfd" }, /* 350 */ + { 1, TD, sys_eventfd, "eventfd" }, /* 351 */ +- { 5, 0, printargs, "SYS_352" }, /* 352 */ +- { 5, 0, printargs, "SYS_353" }, /* 353 */ +- { 5, 0, printargs, "SYS_354" }, /* 354 */ ++ { 6, TF, sys_fallocate, "fallocate" }, /* 352 */ ++ { 4, TD, sys_timerfd_settime, "timerfd_settime"}, /* 353 */ ++ { 2, TD, sys_timerfd_gettime, "timerfd_gettime"}, /* 354 */ + { 5, 0, printargs, "SYS_355" }, /* 355 */ + { 5, 0, printargs, "SYS_356" }, /* 356 */ + { 5, 0, printargs, "SYS_357" }, /* 357 */ +-- +1.6.1.3 diff --git a/pkgs/misc/uboot/default.nix b/pkgs/misc/uboot/default.nix new file mode 100644 index 00000000000..eeb76df6221 --- /dev/null +++ b/pkgs/misc/uboot/default.nix @@ -0,0 +1,53 @@ +{stdenv, fetchurl, unzip}: + +assert stdenv.system == "armv5tel-linux"; + +# All this file is made for the Marvell Sheevaplug + +stdenv.mkDerivation { + name = "uboot-sheevaplug-3.4.19"; + + src = fetchurl { + url = "ftp://ftp.denx.de/pub/u-boot/u-boot-1.1.4.tar.bz2"; + sha256 = "19vp4rlikz7h72pqsjhgz7nmgjy4c6vabvxkw67wni70vy5ddy8s"; + }; + + srcAddon = fetchurl { + url = "http://www.plugcomputer.org/data/uboot/u-boot-3.4.19.zip"; + sha256 = "1wag1l6agr8dbnnfaw6bgcrwynwwgry4ihb3gp438699wmkmy91k"; + }; + + postUnpack = '' + mv u-boot-1.1.4 u-boot-3.4.19 + unzip -o $srcAddon + sourceRoot=u-boot-3.4.19 + ''; + + patches = [ ./gas220.patch ]; + + # Remove the cross compiler prefix, and add reiserfs support + configurePhase = '' + make mrproper + make rd88f6281Sheevaplug_config NBOOT=1 LE=1 + sed -i /CROSS_COMPILE/d include/config.mk + ''; + + buildPhase = '' + unset src + make clean all + ''; + + buildInputs = [ unzip ]; + + dontStrip = true; + NIX_STRIP_DEBUG = false; + + installPhase = '' + ensureDir $out + cp u-boot-rd88f6281Sheevaplug_400db_nand.bin $out + cp u-boot u-boot.map $out + + ensureDir $out/bin + cp tools/{envcrc,mkimage} $out/bin + ''; +} diff --git a/pkgs/misc/uboot/gas220.patch b/pkgs/misc/uboot/gas220.patch new file mode 100644 index 00000000000..c5a91b0f3d0 --- /dev/null +++ b/pkgs/misc/uboot/gas220.patch @@ -0,0 +1,18 @@ +Patch to allow assembling with binutils 2.20. It worked without this patch in 2.19.1 +diff --git a/board/mv_feroceon/USP/jump.S b/board/mv_feroceon/USP/jump.S +index 4b6b9ee..58037fc 100644 +--- a/board/mv_feroceon/USP/jump.S ++++ b/board/mv_feroceon/USP/jump.S +@@ -29,9 +29,11 @@ disclaimer. + #include "sys/mvCpuIfRegs.h" + + +-jumpStart: + + .section ".reset_vector_sect",#alloc, #execinstr ++ ++jumpStart: ++ + #if defined(MV_88F6082) || defined(MV_88F6183) || defined(DB_88F5181_OLD) || defined(DB_FPGA) || \ + defined(MV88F6281) || defined(MV88F6192) || defined(MV88F6180) || defined(MV_88F6183L) || \ + defined(MV88F6190) diff --git a/pkgs/os-specific/linux/hal/default.nix b/pkgs/os-specific/linux/hal/default.nix index 1cce0334dc2..2ca2d32ab41 100644 --- a/pkgs/os-specific/linux/hal/default.nix +++ b/pkgs/os-specific/linux/hal/default.nix @@ -13,9 +13,9 @@ stdenv.mkDerivation rec { buildInputs = [ pkgconfig python pciutils expat libusb dbus.libs dbus_glib glib libuuid perl perlXMLParser gettext zlib gperf - consolekit policykit libsmbios + consolekit policykit # !!! libsmbios is broken; it doesn't install headers. - ]; + ] ++ stdenv.lib.optional (stdenv.system != "armv5tel-linux") [ libsmbios ]; # !!! Hm, maybe the pci/usb.ids location should be in /etc, so that # we don't have to rebuild HAL when we update the PCI/USB IDs. @@ -28,7 +28,8 @@ stdenv.mkDerivation rec { --enable-umount-helper ''; - propagatedBuildInputs = [libusb libsmbios]; + propagatedBuildInputs = [ libusb ] + ++ stdenv.lib.optional (stdenv.system != "armv5tel-linux") [ libsmbios ]; preConfigure = '' for i in hald/linux/probing/probe-smbios.c hald/linux/osspec.c \ diff --git a/pkgs/os-specific/linux/kernel-headers/2.6.28.nix b/pkgs/os-specific/linux/kernel-headers/2.6.28.nix index 3136f52db8e..37891e6325b 100644 --- a/pkgs/os-specific/linux/kernel-headers/2.6.28.nix +++ b/pkgs/os-specific/linux/kernel-headers/2.6.28.nix @@ -16,6 +16,7 @@ stdenv.mkDerivation { if stdenv.system == "i686-linux" then "i386" else if stdenv.system == "x86_64-linux" then "x86_64" else if stdenv.system == "powerpc-linux" then "powerpc" else + if stdenv.system == "armv5tel-linux" then "arm" else abort "don't know what the kernel include directory is called for this platform"; buildInputs = [perl]; diff --git a/pkgs/os-specific/linux/kernel/builder.sh b/pkgs/os-specific/linux/kernel/builder.sh index 89d46418924..88946b4a18f 100644 --- a/pkgs/os-specific/linux/kernel/builder.sh +++ b/pkgs/os-specific/linux/kernel/builder.sh @@ -54,6 +54,11 @@ configurePhase() { cat .config } +postBuild() { + if [ -n "$makeUImage" ]; then + make uImage + fi +} installPhase() { @@ -65,15 +70,24 @@ installPhase() { archDir=x86 fi + # Copy the bzImage and System.map. cp System.map $out if test "$arch" = um; then ensureDir $out/bin cp linux $out/bin else - cp arch/$archDir/boot/bzImage $out/vmlinuz + if [ -n "$makeUImage" ]; then + image=arch/$archDir/boot/uImage + cp arch/$archDir/boot/uImage $out + else + cp arch/$archDir/boot/bzImage $out/vmlinuz + fi + fi + cp vmlinux $out + # Install the modules in $out/lib/modules with matching paths # in modules.dep (i.e., refererring to $out/lib/modules, not # /lib/modules). The depmod_opts= is to prevent the kernel diff --git a/pkgs/os-specific/linux/kernel/config-2.6.31-armv5tel b/pkgs/os-specific/linux/kernel/config-2.6.31-armv5tel new file mode 100644 index 00000000000..827f9711511 --- /dev/null +++ b/pkgs/os-specific/linux/kernel/config-2.6.31-armv5tel @@ -0,0 +1,1786 @@ +# +# Automatically generated make config: don't edit +# Linux kernel version: 2.6.31 +# Tue Sep 22 01:20:57 2009 +# +CONFIG_ARM=y +CONFIG_SYS_SUPPORTS_APM_EMULATION=y +CONFIG_GENERIC_GPIO=y +CONFIG_GENERIC_TIME=y +CONFIG_GENERIC_CLOCKEVENTS=y +CONFIG_MMU=y +CONFIG_GENERIC_HARDIRQS=y +CONFIG_STACKTRACE_SUPPORT=y +CONFIG_HAVE_LATENCYTOP_SUPPORT=y +CONFIG_LOCKDEP_SUPPORT=y +CONFIG_TRACE_IRQFLAGS_SUPPORT=y +CONFIG_HARDIRQS_SW_RESEND=y +CONFIG_GENERIC_IRQ_PROBE=y +CONFIG_RWSEM_GENERIC_SPINLOCK=y +CONFIG_GENERIC_HWEIGHT=y +CONFIG_GENERIC_CALIBRATE_DELAY=y +CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y +CONFIG_VECTORS_BASE=0xffff0000 +CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" +CONFIG_CONSTRUCTORS=y + +# +# General setup +# +CONFIG_EXPERIMENTAL=y +CONFIG_BROKEN_ON_SMP=y +CONFIG_LOCK_KERNEL=y +CONFIG_INIT_ENV_ARG_LIMIT=32 +CONFIG_LOCALVERSION="" +CONFIG_LOCALVERSION_AUTO=y +CONFIG_SWAP=y +CONFIG_SYSVIPC=y +CONFIG_SYSVIPC_SYSCTL=y +# CONFIG_POSIX_MQUEUE is not set +# CONFIG_BSD_PROCESS_ACCT is not set +# CONFIG_TASKSTATS is not set +# CONFIG_AUDIT is not set + +# +# RCU Subsystem +# +CONFIG_CLASSIC_RCU=y +# CONFIG_TREE_RCU is not set +# CONFIG_PREEMPT_RCU is not set +# CONFIG_TREE_RCU_TRACE is not set +# CONFIG_PREEMPT_RCU_TRACE is not set +# CONFIG_IKCONFIG is not set +CONFIG_LOG_BUF_SHIFT=19 +# CONFIG_GROUP_SCHED is not set +# CONFIG_CGROUPS is not set +# CONFIG_SYSFS_DEPRECATED_V2 is not set +# CONFIG_RELAY is not set +CONFIG_NAMESPACES=y +# CONFIG_UTS_NS is not set +# CONFIG_IPC_NS is not set +# CONFIG_USER_NS is not set +# CONFIG_PID_NS is not set +# CONFIG_NET_NS is not set +CONFIG_BLK_DEV_INITRD=y +CONFIG_CC_OPTIMIZE_FOR_SIZE=y +CONFIG_SYSCTL=y +CONFIG_ANON_INODES=y +# CONFIG_EMBEDDED is not set +CONFIG_UID16=y +CONFIG_SYSCTL_SYSCALL=y +CONFIG_KALLSYMS=y +# CONFIG_KALLSYMS_ALL is not set +# CONFIG_KALLSYMS_EXTRA_PASS is not set +CONFIG_HOTPLUG=y +CONFIG_PRINTK=y +CONFIG_BUG=y +CONFIG_ELF_CORE=y +CONFIG_BASE_FULL=y +CONFIG_FUTEX=y +CONFIG_EPOLL=y +CONFIG_SIGNALFD=y +CONFIG_TIMERFD=y +CONFIG_EVENTFD=y +CONFIG_SHMEM=y +CONFIG_AIO=y + +# +# Performance Counters +# +CONFIG_VM_EVENT_COUNTERS=y +CONFIG_PCI_QUIRKS=y +CONFIG_SLUB_DEBUG=y +# CONFIG_STRIP_ASM_SYMS is not set +CONFIG_COMPAT_BRK=y +# CONFIG_SLAB is not set +CONFIG_SLUB=y +# CONFIG_SLOB is not set +CONFIG_PROFILING=y +CONFIG_TRACEPOINTS=y +CONFIG_MARKERS=y +CONFIG_OPROFILE=y +CONFIG_HAVE_OPROFILE=y +CONFIG_KPROBES=y +CONFIG_KRETPROBES=y +CONFIG_HAVE_KPROBES=y +CONFIG_HAVE_KRETPROBES=y + +# +# GCOV-based kernel profiling +# +# CONFIG_GCOV_KERNEL is not set +# CONFIG_SLOW_WORK is not set +CONFIG_HAVE_GENERIC_DMA_COHERENT=y +CONFIG_SLABINFO=y +CONFIG_RT_MUTEXES=y +CONFIG_BASE_SMALL=0 +CONFIG_MODULES=y +# CONFIG_MODULE_FORCE_LOAD is not set +CONFIG_MODULE_UNLOAD=y +# CONFIG_MODULE_FORCE_UNLOAD is not set +# CONFIG_MODVERSIONS is not set +# CONFIG_MODULE_SRCVERSION_ALL is not set +CONFIG_BLOCK=y +CONFIG_LBDAF=y +# CONFIG_BLK_DEV_BSG is not set +# CONFIG_BLK_DEV_INTEGRITY is not set + +# +# IO Schedulers +# +CONFIG_IOSCHED_NOOP=y +CONFIG_IOSCHED_AS=y +CONFIG_IOSCHED_DEADLINE=y +CONFIG_IOSCHED_CFQ=y +# CONFIG_DEFAULT_AS is not set +# CONFIG_DEFAULT_DEADLINE is not set +CONFIG_DEFAULT_CFQ=y +# CONFIG_DEFAULT_NOOP is not set +CONFIG_DEFAULT_IOSCHED="cfq" +# CONFIG_FREEZER is not set + +# +# System Type +# +# CONFIG_ARCH_AAEC2000 is not set +# CONFIG_ARCH_INTEGRATOR is not set +# CONFIG_ARCH_REALVIEW is not set +# CONFIG_ARCH_VERSATILE is not set +# CONFIG_ARCH_AT91 is not set +# CONFIG_ARCH_CLPS711X is not set +# CONFIG_ARCH_GEMINI is not set +# CONFIG_ARCH_EBSA110 is not set +# CONFIG_ARCH_EP93XX is not set +# CONFIG_ARCH_FOOTBRIDGE is not set +# CONFIG_ARCH_MXC is not set +# CONFIG_ARCH_STMP3XXX is not set +# CONFIG_ARCH_NETX is not set +# CONFIG_ARCH_H720X is not set +# CONFIG_ARCH_IOP13XX is not set +# CONFIG_ARCH_IOP32X is not set +# CONFIG_ARCH_IOP33X is not set +# CONFIG_ARCH_IXP23XX is not set +# CONFIG_ARCH_IXP2000 is not set +# CONFIG_ARCH_IXP4XX is not set +# CONFIG_ARCH_L7200 is not set +CONFIG_ARCH_KIRKWOOD=y +# CONFIG_ARCH_LOKI is not set +# CONFIG_ARCH_MV78XX0 is not set +# CONFIG_ARCH_ORION5X is not set +# CONFIG_ARCH_MMP is not set +# CONFIG_ARCH_KS8695 is not set +# CONFIG_ARCH_NS9XXX is not set +# CONFIG_ARCH_W90X900 is not set +# CONFIG_ARCH_PNX4008 is not set +# CONFIG_ARCH_PXA is not set +# CONFIG_ARCH_MSM is not set +# CONFIG_ARCH_RPC is not set +# CONFIG_ARCH_SA1100 is not set +# CONFIG_ARCH_S3C2410 is not set +# CONFIG_ARCH_S3C64XX is not set +# CONFIG_ARCH_SHARK is not set +# CONFIG_ARCH_LH7A40X is not set +# CONFIG_ARCH_U300 is not set +# CONFIG_ARCH_DAVINCI is not set +# CONFIG_ARCH_OMAP is not set + +# +# Marvell Kirkwood Implementations +# +CONFIG_MACH_DB88F6281_BP=y +CONFIG_MACH_RD88F6192_NAS=y +CONFIG_MACH_RD88F6281=y +CONFIG_MACH_MV88F6281GTW_GE=y +CONFIG_MACH_SHEEVAPLUG=y +CONFIG_MACH_TS219=y +CONFIG_PLAT_ORION=y + +# +# Processor Type +# +CONFIG_CPU_32=y +CONFIG_CPU_FEROCEON=y +# CONFIG_CPU_FEROCEON_OLD_ID is not set +CONFIG_CPU_32v5=y +CONFIG_CPU_ABRT_EV5T=y +CONFIG_CPU_PABRT_NOIFAR=y +CONFIG_CPU_CACHE_VIVT=y +CONFIG_CPU_COPY_FEROCEON=y +CONFIG_CPU_TLB_FEROCEON=y +CONFIG_CPU_CP15=y +CONFIG_CPU_CP15_MMU=y + +# +# Processor Features +# +CONFIG_ARM_THUMB=y +# CONFIG_CPU_ICACHE_DISABLE is not set +# CONFIG_CPU_DCACHE_DISABLE is not set +CONFIG_OUTER_CACHE=y +CONFIG_CACHE_FEROCEON_L2=y +# CONFIG_CACHE_FEROCEON_L2_WRITETHROUGH is not set + +# +# Bus support +# +CONFIG_PCI=y +CONFIG_PCI_SYSCALL=y +# CONFIG_ARCH_SUPPORTS_MSI is not set +CONFIG_PCI_LEGACY=y +# CONFIG_PCI_DEBUG is not set +# CONFIG_PCI_STUB is not set +# CONFIG_PCI_IOV is not set +# CONFIG_PCCARD is not set + +# +# Kernel Features +# +CONFIG_TICK_ONESHOT=y +CONFIG_NO_HZ=y +CONFIG_HIGH_RES_TIMERS=y +CONFIG_GENERIC_CLOCKEVENTS_BUILD=y +CONFIG_VMSPLIT_3G=y +# CONFIG_VMSPLIT_2G is not set +# CONFIG_VMSPLIT_1G is not set +CONFIG_PAGE_OFFSET=0xC0000000 +CONFIG_PREEMPT=y +CONFIG_HZ=100 +CONFIG_AEABI=y +# CONFIG_OABI_COMPAT is not set +# CONFIG_ARCH_SPARSEMEM_DEFAULT is not set +# CONFIG_ARCH_SELECT_MEMORY_MODEL is not set +# CONFIG_HIGHMEM is not set +CONFIG_SELECT_MEMORY_MODEL=y +CONFIG_FLATMEM_MANUAL=y +# CONFIG_DISCONTIGMEM_MANUAL is not set +# CONFIG_SPARSEMEM_MANUAL is not set +CONFIG_FLATMEM=y +CONFIG_FLAT_NODE_MEM_MAP=y +CONFIG_PAGEFLAGS_EXTENDED=y +CONFIG_SPLIT_PTLOCK_CPUS=4096 +# CONFIG_PHYS_ADDR_T_64BIT is not set +CONFIG_ZONE_DMA_FLAG=0 +CONFIG_VIRT_TO_BUS=y +CONFIG_HAVE_MLOCK=y +CONFIG_HAVE_MLOCKED_PAGE_BIT=y +CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 +CONFIG_ALIGNMENT_TRAP=y +CONFIG_UACCESS_WITH_MEMCPY=y + +# +# Boot options +# +CONFIG_ZBOOT_ROM_TEXT=0x0 +CONFIG_ZBOOT_ROM_BSS=0x0 +CONFIG_CMDLINE="" +# CONFIG_XIP_KERNEL is not set +# CONFIG_KEXEC is not set + +# +# CPU Power Management +# +CONFIG_CPU_IDLE=y +CONFIG_CPU_IDLE_GOV_LADDER=y +CONFIG_CPU_IDLE_GOV_MENU=y + +# +# Floating point emulation +# + +# +# At least one emulation must be selected +# +# CONFIG_VFP is not set + +# +# Userspace binary formats +# +CONFIG_BINFMT_ELF=y +# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set +CONFIG_HAVE_AOUT=y +# CONFIG_BINFMT_AOUT is not set +# CONFIG_BINFMT_MISC is not set + +# +# Power management options +# +# CONFIG_PM is not set +CONFIG_ARCH_SUSPEND_POSSIBLE=y +CONFIG_NET=y + +# +# Networking options +# +CONFIG_PACKET=y +CONFIG_PACKET_MMAP=y +CONFIG_UNIX=y +CONFIG_XFRM=y +# CONFIG_XFRM_USER is not set +# CONFIG_XFRM_SUB_POLICY is not set +# CONFIG_XFRM_MIGRATE is not set +# CONFIG_XFRM_STATISTICS is not set +# CONFIG_NET_KEY is not set +CONFIG_INET=y +CONFIG_IP_MULTICAST=y +# CONFIG_IP_ADVANCED_ROUTER is not set +CONFIG_IP_FIB_HASH=y +CONFIG_IP_PNP=y +CONFIG_IP_PNP_DHCP=y +CONFIG_IP_PNP_BOOTP=y +# CONFIG_IP_PNP_RARP is not set +# CONFIG_NET_IPIP is not set +# CONFIG_NET_IPGRE is not set +# CONFIG_IP_MROUTE is not set +# CONFIG_ARPD is not set +# CONFIG_SYN_COOKIES is not set +# CONFIG_INET_AH is not set +# CONFIG_INET_ESP is not set +# CONFIG_INET_IPCOMP is not set +# CONFIG_INET_XFRM_TUNNEL is not set +# CONFIG_INET_TUNNEL is not set +CONFIG_INET_XFRM_MODE_TRANSPORT=y +CONFIG_INET_XFRM_MODE_TUNNEL=y +CONFIG_INET_XFRM_MODE_BEET=y +CONFIG_INET_LRO=y +CONFIG_INET_DIAG=y +CONFIG_INET_TCP_DIAG=y +# CONFIG_TCP_CONG_ADVANCED is not set +CONFIG_TCP_CONG_CUBIC=y +CONFIG_DEFAULT_TCP_CONG="cubic" +# CONFIG_TCP_MD5SIG is not set +# CONFIG_IPV6 is not set +# CONFIG_NETWORK_SECMARK is not set +# CONFIG_NETFILTER is not set +# CONFIG_IP_DCCP is not set +# CONFIG_IP_SCTP is not set +# CONFIG_TIPC is not set +# CONFIG_ATM is not set +# CONFIG_BRIDGE is not set +CONFIG_NET_DSA=y +# CONFIG_NET_DSA_TAG_DSA is not set +CONFIG_NET_DSA_TAG_EDSA=y +# CONFIG_NET_DSA_TAG_TRAILER is not set +CONFIG_NET_DSA_MV88E6XXX=y +# CONFIG_NET_DSA_MV88E6060 is not set +# CONFIG_NET_DSA_MV88E6XXX_NEED_PPU is not set +# CONFIG_NET_DSA_MV88E6131 is not set +CONFIG_NET_DSA_MV88E6123_61_65=y +# CONFIG_VLAN_8021Q is not set +# CONFIG_DECNET is not set +# CONFIG_LLC2 is not set +# CONFIG_IPX is not set +# CONFIG_ATALK is not set +# CONFIG_X25 is not set +# CONFIG_LAPB is not set +# CONFIG_ECONET is not set +# CONFIG_WAN_ROUTER is not set +# CONFIG_PHONET is not set +# CONFIG_IEEE802154 is not set +# CONFIG_NET_SCHED is not set +# CONFIG_DCB is not set + +# +# Network testing +# +CONFIG_NET_PKTGEN=m +# CONFIG_NET_TCPPROBE is not set +# CONFIG_NET_DROP_MONITOR is not set +# CONFIG_HAMRADIO is not set +# CONFIG_CAN is not set +# CONFIG_IRDA is not set +# CONFIG_BT is not set +# CONFIG_AF_RXRPC is not set +CONFIG_WIRELESS=y +CONFIG_CFG80211=y +# CONFIG_CFG80211_REG_DEBUG is not set +# CONFIG_CFG80211_DEBUGFS is not set +CONFIG_WIRELESS_OLD_REGULATORY=y +CONFIG_WIRELESS_EXT=y +CONFIG_WIRELESS_EXT_SYSFS=y +CONFIG_LIB80211=y +# CONFIG_LIB80211_DEBUG is not set +CONFIG_MAC80211=y +CONFIG_MAC80211_DEFAULT_PS=y +CONFIG_MAC80211_DEFAULT_PS_VALUE=1 + +# +# Rate control algorithm selection +# +CONFIG_MAC80211_RC_MINSTREL=y +# CONFIG_MAC80211_RC_DEFAULT_PID is not set +CONFIG_MAC80211_RC_DEFAULT_MINSTREL=y +CONFIG_MAC80211_RC_DEFAULT="minstrel" +# CONFIG_MAC80211_LEDS is not set +# CONFIG_MAC80211_DEBUGFS is not set +# CONFIG_MAC80211_DEBUG_MENU is not set +# CONFIG_WIMAX is not set +# CONFIG_RFKILL is not set +# CONFIG_NET_9P is not set + +# +# Device Drivers +# + +# +# Generic Driver Options +# +CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" +CONFIG_STANDALONE=y +CONFIG_PREVENT_FIRMWARE_BUILD=y +CONFIG_FW_LOADER=y +CONFIG_FIRMWARE_IN_KERNEL=y +CONFIG_EXTRA_FIRMWARE="" +# CONFIG_DEBUG_DRIVER is not set +# CONFIG_DEBUG_DEVRES is not set +# CONFIG_SYS_HYPERVISOR is not set +# CONFIG_CONNECTOR is not set +CONFIG_MTD=y +# CONFIG_MTD_DEBUG is not set +# CONFIG_MTD_CONCAT is not set +CONFIG_MTD_PARTITIONS=y +# CONFIG_MTD_TESTS is not set +# CONFIG_MTD_REDBOOT_PARTS is not set +CONFIG_MTD_CMDLINE_PARTS=y +# CONFIG_MTD_AFS_PARTS is not set +# CONFIG_MTD_AR7_PARTS is not set + +# +# User Modules And Translation Layers +# +CONFIG_MTD_CHAR=y +CONFIG_MTD_BLKDEVS=y +CONFIG_MTD_BLOCK=y +# CONFIG_FTL is not set +# CONFIG_NFTL is not set +# CONFIG_INFTL is not set +# CONFIG_RFD_FTL is not set +# CONFIG_SSFDC is not set +# CONFIG_MTD_OOPS is not set + +# +# RAM/ROM/Flash chip drivers +# +CONFIG_MTD_CFI=y +CONFIG_MTD_JEDECPROBE=y +CONFIG_MTD_GEN_PROBE=y +CONFIG_MTD_CFI_ADV_OPTIONS=y +CONFIG_MTD_CFI_NOSWAP=y +# CONFIG_MTD_CFI_BE_BYTE_SWAP is not set +# CONFIG_MTD_CFI_LE_BYTE_SWAP is not set +CONFIG_MTD_CFI_GEOMETRY=y +CONFIG_MTD_MAP_BANK_WIDTH_1=y +CONFIG_MTD_MAP_BANK_WIDTH_2=y +# CONFIG_MTD_MAP_BANK_WIDTH_4 is not set +# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set +# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set +# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set +CONFIG_MTD_CFI_I1=y +CONFIG_MTD_CFI_I2=y +# CONFIG_MTD_CFI_I4 is not set +# CONFIG_MTD_CFI_I8 is not set +# CONFIG_MTD_OTP is not set +CONFIG_MTD_CFI_INTELEXT=y +# CONFIG_MTD_CFI_AMDSTD is not set +CONFIG_MTD_CFI_STAA=y +CONFIG_MTD_CFI_UTIL=y +# CONFIG_MTD_RAM is not set +# CONFIG_MTD_ROM is not set +# CONFIG_MTD_ABSENT is not set + +# +# Mapping drivers for chip access +# +# CONFIG_MTD_COMPLEX_MAPPINGS is not set +CONFIG_MTD_PHYSMAP=y +# CONFIG_MTD_PHYSMAP_COMPAT is not set +# CONFIG_MTD_ARM_INTEGRATOR is not set +# CONFIG_MTD_IMPA7 is not set +# CONFIG_MTD_INTEL_VR_NOR is not set +# CONFIG_MTD_PLATRAM is not set + +# +# Self-contained MTD device drivers +# +# CONFIG_MTD_PMC551 is not set +# CONFIG_MTD_DATAFLASH is not set +CONFIG_MTD_M25P80=y +CONFIG_M25PXX_USE_FAST_READ=y +# CONFIG_MTD_SLRAM is not set +# CONFIG_MTD_PHRAM is not set +# CONFIG_MTD_MTDRAM is not set +# CONFIG_MTD_BLOCK2MTD is not set + +# +# Disk-On-Chip Device Drivers +# +# CONFIG_MTD_DOC2000 is not set +# CONFIG_MTD_DOC2001 is not set +# CONFIG_MTD_DOC2001PLUS is not set +CONFIG_MTD_NAND=y +# CONFIG_MTD_NAND_VERIFY_WRITE is not set +# CONFIG_MTD_NAND_ECC_SMC is not set +# CONFIG_MTD_NAND_MUSEUM_IDS is not set +# CONFIG_MTD_NAND_GPIO is not set +CONFIG_MTD_NAND_IDS=y +# CONFIG_MTD_NAND_DISKONCHIP is not set +# CONFIG_MTD_NAND_CAFE is not set +# CONFIG_MTD_NAND_NANDSIM is not set +# CONFIG_MTD_NAND_PLATFORM is not set +# CONFIG_MTD_ALAUDA is not set +CONFIG_MTD_NAND_ORION=y +# CONFIG_MTD_ONENAND is not set + +# +# LPDDR flash memory drivers +# +# CONFIG_MTD_LPDDR is not set + +# +# UBI - Unsorted block images +# +CONFIG_MTD_UBI=y +# CONFIG_PARPORT is not set +CONFIG_BLK_DEV=y +# CONFIG_BLK_CPQ_DA is not set +# CONFIG_BLK_CPQ_CISS_DA is not set +# CONFIG_BLK_DEV_DAC960 is not set +# CONFIG_BLK_DEV_UMEM is not set +# CONFIG_BLK_DEV_COW_COMMON is not set +CONFIG_BLK_DEV_LOOP=y +# CONFIG_BLK_DEV_CRYPTOLOOP is not set +# CONFIG_BLK_DEV_NBD is not set +# CONFIG_BLK_DEV_SX8 is not set +# CONFIG_BLK_DEV_UB is not set +# CONFIG_BLK_DEV_RAM is not set +# CONFIG_CDROM_PKTCDVD is not set +# CONFIG_ATA_OVER_ETH is not set +# CONFIG_MG_DISK is not set +# CONFIG_MISC_DEVICES is not set +CONFIG_HAVE_IDE=y +# CONFIG_IDE is not set + +# +# SCSI device support +# +# CONFIG_RAID_ATTRS is not set +CONFIG_SCSI=y +CONFIG_SCSI_DMA=y +# CONFIG_SCSI_TGT is not set +# CONFIG_SCSI_NETLINK is not set +# CONFIG_SCSI_PROC_FS is not set + +# +# SCSI support type (disk, tape, CD-ROM) +# +CONFIG_BLK_DEV_SD=y +# CONFIG_CHR_DEV_ST is not set +# CONFIG_CHR_DEV_OSST is not set +CONFIG_BLK_DEV_SR=m +# CONFIG_BLK_DEV_SR_VENDOR is not set +CONFIG_CHR_DEV_SG=m +# CONFIG_CHR_DEV_SCH is not set +# CONFIG_SCSI_MULTI_LUN is not set +# CONFIG_SCSI_CONSTANTS is not set +# CONFIG_SCSI_LOGGING is not set +# CONFIG_SCSI_SCAN_ASYNC is not set +CONFIG_SCSI_WAIT_SCAN=m + +# +# SCSI Transports +# +# CONFIG_SCSI_SPI_ATTRS is not set +# CONFIG_SCSI_FC_ATTRS is not set +# CONFIG_SCSI_ISCSI_ATTRS is not set +# CONFIG_SCSI_SAS_LIBSAS is not set +# CONFIG_SCSI_SRP_ATTRS is not set +CONFIG_SCSI_LOWLEVEL=y +# CONFIG_ISCSI_TCP is not set +# CONFIG_SCSI_BNX2_ISCSI is not set +# CONFIG_BLK_DEV_3W_XXXX_RAID is not set +# CONFIG_SCSI_3W_9XXX is not set +# CONFIG_SCSI_ACARD is not set +# CONFIG_SCSI_AACRAID is not set +# CONFIG_SCSI_AIC7XXX is not set +# CONFIG_SCSI_AIC7XXX_OLD is not set +# CONFIG_SCSI_AIC79XX is not set +# CONFIG_SCSI_AIC94XX is not set +# CONFIG_SCSI_MVSAS is not set +# CONFIG_SCSI_DPT_I2O is not set +# CONFIG_SCSI_ADVANSYS is not set +# CONFIG_SCSI_ARCMSR is not set +# CONFIG_MEGARAID_NEWGEN is not set +# CONFIG_MEGARAID_LEGACY is not set +# CONFIG_MEGARAID_SAS is not set +# CONFIG_SCSI_MPT2SAS is not set +# CONFIG_SCSI_HPTIOP is not set +# CONFIG_LIBFC is not set +# CONFIG_LIBFCOE is not set +# CONFIG_FCOE is not set +# CONFIG_SCSI_DMX3191D is not set +# CONFIG_SCSI_FUTURE_DOMAIN is not set +# CONFIG_SCSI_IPS is not set +# CONFIG_SCSI_INITIO is not set +# CONFIG_SCSI_INIA100 is not set +# CONFIG_SCSI_STEX is not set +# CONFIG_SCSI_SYM53C8XX_2 is not set +# CONFIG_SCSI_IPR is not set +# CONFIG_SCSI_QLOGIC_1280 is not set +# CONFIG_SCSI_QLA_FC is not set +# CONFIG_SCSI_QLA_ISCSI is not set +# CONFIG_SCSI_LPFC is not set +# CONFIG_SCSI_DC395x is not set +# CONFIG_SCSI_DC390T is not set +# CONFIG_SCSI_NSP32 is not set +# CONFIG_SCSI_DEBUG is not set +# CONFIG_SCSI_SRP is not set +# CONFIG_SCSI_DH is not set +# CONFIG_SCSI_OSD_INITIATOR is not set +CONFIG_ATA=y +# CONFIG_ATA_NONSTANDARD is not set +CONFIG_SATA_PMP=y +CONFIG_SATA_AHCI=y +# CONFIG_SATA_SIL24 is not set +CONFIG_ATA_SFF=y +# CONFIG_SATA_SVW is not set +# CONFIG_ATA_PIIX is not set +CONFIG_SATA_MV=y +# CONFIG_SATA_NV is not set +# CONFIG_PDC_ADMA is not set +# CONFIG_SATA_QSTOR is not set +# CONFIG_SATA_PROMISE is not set +# CONFIG_SATA_SX4 is not set +# CONFIG_SATA_SIL is not set +# CONFIG_SATA_SIS is not set +# CONFIG_SATA_ULI is not set +# CONFIG_SATA_VIA is not set +# CONFIG_SATA_VITESSE is not set +# CONFIG_SATA_INIC162X is not set +# CONFIG_PATA_ALI is not set +# CONFIG_PATA_AMD is not set +# CONFIG_PATA_ARTOP is not set +# CONFIG_PATA_ATIIXP is not set +# CONFIG_PATA_CMD640_PCI is not set +# CONFIG_PATA_CMD64X is not set +# CONFIG_PATA_CS5520 is not set +# CONFIG_PATA_CS5530 is not set +# CONFIG_PATA_CYPRESS is not set +# CONFIG_PATA_EFAR is not set +# CONFIG_ATA_GENERIC is not set +# CONFIG_PATA_HPT366 is not set +# CONFIG_PATA_HPT37X is not set +# CONFIG_PATA_HPT3X2N is not set +# CONFIG_PATA_HPT3X3 is not set +# CONFIG_PATA_IT821X is not set +# CONFIG_PATA_IT8213 is not set +# CONFIG_PATA_JMICRON is not set +# CONFIG_PATA_TRIFLEX is not set +# CONFIG_PATA_MARVELL is not set +# CONFIG_PATA_MPIIX is not set +# CONFIG_PATA_OLDPIIX is not set +# CONFIG_PATA_NETCELL is not set +# CONFIG_PATA_NINJA32 is not set +# CONFIG_PATA_NS87410 is not set +# CONFIG_PATA_NS87415 is not set +# CONFIG_PATA_OPTI is not set +# CONFIG_PATA_OPTIDMA is not set +# CONFIG_PATA_PDC_OLD is not set +# CONFIG_PATA_RADISYS is not set +# CONFIG_PATA_RZ1000 is not set +# CONFIG_PATA_SC1200 is not set +# CONFIG_PATA_SERVERWORKS is not set +# CONFIG_PATA_PDC2027X is not set +# CONFIG_PATA_SIL680 is not set +# CONFIG_PATA_SIS is not set +# CONFIG_PATA_VIA is not set +# CONFIG_PATA_WINBOND is not set +# CONFIG_PATA_SCH is not set +# CONFIG_MD is not set +# CONFIG_FUSION is not set + +# +# IEEE 1394 (FireWire) support +# + +# +# You can enable one or both FireWire driver stacks. +# + +# +# See the help texts for more information. +# +# CONFIG_FIREWIRE is not set +# CONFIG_IEEE1394 is not set +# CONFIG_I2O is not set +CONFIG_NETDEVICES=y +# CONFIG_DUMMY is not set +# CONFIG_BONDING is not set +# CONFIG_MACVLAN is not set +# CONFIG_EQUALIZER is not set +# CONFIG_TUN is not set +# CONFIG_VETH is not set +# CONFIG_ARCNET is not set +CONFIG_PHYLIB=y + +# +# MII PHY device drivers +# +CONFIG_MARVELL_PHY=y +# CONFIG_DAVICOM_PHY is not set +# CONFIG_QSEMI_PHY is not set +# CONFIG_LXT_PHY is not set +# CONFIG_CICADA_PHY is not set +# CONFIG_VITESSE_PHY is not set +# CONFIG_SMSC_PHY is not set +# CONFIG_BROADCOM_PHY is not set +# CONFIG_ICPLUS_PHY is not set +# CONFIG_REALTEK_PHY is not set +# CONFIG_NATIONAL_PHY is not set +# CONFIG_STE10XP is not set +# CONFIG_LSI_ET1011C_PHY is not set +# CONFIG_FIXED_PHY is not set +# CONFIG_MDIO_BITBANG is not set +CONFIG_NET_ETHERNET=y +CONFIG_MII=y +# CONFIG_AX88796 is not set +# CONFIG_HAPPYMEAL is not set +# CONFIG_SUNGEM is not set +# CONFIG_CASSINI is not set +# CONFIG_NET_VENDOR_3COM is not set +# CONFIG_SMC91X is not set +# CONFIG_DM9000 is not set +# CONFIG_ENC28J60 is not set +# CONFIG_ETHOC is not set +# CONFIG_SMC911X is not set +# CONFIG_SMSC911X is not set +# CONFIG_DNET is not set +# CONFIG_NET_TULIP is not set +# CONFIG_HP100 is not set +# CONFIG_IBM_NEW_EMAC_ZMII is not set +# CONFIG_IBM_NEW_EMAC_RGMII is not set +# CONFIG_IBM_NEW_EMAC_TAH is not set +# CONFIG_IBM_NEW_EMAC_EMAC4 is not set +# CONFIG_IBM_NEW_EMAC_NO_FLOW_CTRL is not set +# CONFIG_IBM_NEW_EMAC_MAL_CLR_ICINTSTAT is not set +# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set +CONFIG_NET_PCI=y +# CONFIG_PCNET32 is not set +# CONFIG_AMD8111_ETH is not set +# CONFIG_ADAPTEC_STARFIRE is not set +# CONFIG_B44 is not set +# CONFIG_FORCEDETH is not set +# CONFIG_E100 is not set +# CONFIG_FEALNX is not set +# CONFIG_NATSEMI is not set +# CONFIG_NE2K_PCI is not set +# CONFIG_8139CP is not set +# CONFIG_8139TOO is not set +# CONFIG_R6040 is not set +# CONFIG_SIS900 is not set +# CONFIG_EPIC100 is not set +# CONFIG_SMSC9420 is not set +# CONFIG_SUNDANCE is not set +# CONFIG_TLAN is not set +# CONFIG_KS8842 is not set +# CONFIG_KS8851 is not set +# CONFIG_VIA_RHINE is not set +# CONFIG_SC92031 is not set +# CONFIG_ATL2 is not set +CONFIG_NETDEV_1000=y +# CONFIG_ACENIC is not set +# CONFIG_DL2K is not set +# CONFIG_E1000 is not set +# CONFIG_E1000E is not set +# CONFIG_IP1000 is not set +# CONFIG_IGB is not set +# CONFIG_IGBVF is not set +# CONFIG_NS83820 is not set +# CONFIG_HAMACHI is not set +# CONFIG_YELLOWFIN is not set +# CONFIG_R8169 is not set +# CONFIG_SIS190 is not set +# CONFIG_SKGE is not set +# CONFIG_SKY2 is not set +# CONFIG_VIA_VELOCITY is not set +# CONFIG_TIGON3 is not set +# CONFIG_BNX2 is not set +# CONFIG_CNIC is not set +CONFIG_MV643XX_ETH=y +# CONFIG_QLA3XXX is not set +# CONFIG_ATL1 is not set +# CONFIG_ATL1E is not set +# CONFIG_ATL1C is not set +# CONFIG_JME is not set +# CONFIG_NETDEV_10000 is not set +# CONFIG_TR is not set + +# +# Wireless LAN +# +# CONFIG_WLAN_PRE80211 is not set +CONFIG_WLAN_80211=y +CONFIG_LIBERTAS=y +# CONFIG_LIBERTAS_USB is not set +CONFIG_LIBERTAS_SDIO=y +# CONFIG_LIBERTAS_SPI is not set +# CONFIG_LIBERTAS_DEBUG is not set +# CONFIG_LIBERTAS_THINFIRM is not set +# CONFIG_ATMEL is not set +# CONFIG_AT76C50X_USB is not set +# CONFIG_PRISM54 is not set +# CONFIG_USB_ZD1201 is not set +# CONFIG_USB_NET_RNDIS_WLAN is not set +# CONFIG_RTL8180 is not set +# CONFIG_RTL8187 is not set +# CONFIG_ADM8211 is not set +# CONFIG_MAC80211_HWSIM is not set +# CONFIG_MWL8K is not set +# CONFIG_P54_COMMON is not set +# CONFIG_ATH5K is not set +# CONFIG_ATH9K is not set +# CONFIG_AR9170_USB is not set +# CONFIG_IPW2100 is not set +# CONFIG_IPW2200 is not set +# CONFIG_IWLWIFI is not set +# CONFIG_HOSTAP is not set +# CONFIG_B43 is not set +# CONFIG_B43LEGACY is not set +# CONFIG_ZD1211RW is not set +# CONFIG_RT2X00 is not set +# CONFIG_HERMES is not set +# CONFIG_WL12XX is not set +# CONFIG_IWM is not set + +# +# Enable WiMAX (Networking options) to see the WiMAX drivers +# + +# +# USB Network Adapters +# +# CONFIG_USB_CATC is not set +# CONFIG_USB_KAWETH is not set +# CONFIG_USB_PEGASUS is not set +# CONFIG_USB_RTL8150 is not set +# CONFIG_USB_USBNET is not set +# CONFIG_WAN is not set +# CONFIG_FDDI is not set +# CONFIG_HIPPI is not set +# CONFIG_PPP is not set +# CONFIG_SLIP is not set +# CONFIG_NET_FC is not set +# CONFIG_NETCONSOLE is not set +# CONFIG_NETPOLL is not set +# CONFIG_NET_POLL_CONTROLLER is not set +# CONFIG_ISDN is not set + +# +# Input device support +# +CONFIG_INPUT=y +# CONFIG_INPUT_FF_MEMLESS is not set +# CONFIG_INPUT_POLLDEV is not set + +# +# Userland interfaces +# +CONFIG_INPUT_MOUSEDEV=y +CONFIG_INPUT_MOUSEDEV_PSAUX=y +CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024 +CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768 +# CONFIG_INPUT_JOYDEV is not set +CONFIG_INPUT_EVDEV=y +# CONFIG_INPUT_EVBUG is not set + +# +# Input Device Drivers +# +CONFIG_INPUT_KEYBOARD=y +CONFIG_KEYBOARD_ATKBD=y +# CONFIG_KEYBOARD_LKKBD is not set +CONFIG_KEYBOARD_GPIO=y +# CONFIG_KEYBOARD_MATRIX is not set +# CONFIG_KEYBOARD_LM8323 is not set +# CONFIG_KEYBOARD_NEWTON is not set +# CONFIG_KEYBOARD_STOWAWAY is not set +# CONFIG_KEYBOARD_SUNKBD is not set +# CONFIG_KEYBOARD_XTKBD is not set +# CONFIG_INPUT_MOUSE is not set +# CONFIG_INPUT_JOYSTICK is not set +# CONFIG_INPUT_TABLET is not set +# CONFIG_INPUT_TOUCHSCREEN is not set +# CONFIG_INPUT_MISC is not set + +# +# Hardware I/O ports +# +CONFIG_SERIO=y +CONFIG_SERIO_SERPORT=y +# CONFIG_SERIO_PCIPS2 is not set +CONFIG_SERIO_LIBPS2=y +# CONFIG_SERIO_RAW is not set +# CONFIG_GAMEPORT is not set + +# +# Character devices +# +CONFIG_VT=y +CONFIG_CONSOLE_TRANSLATIONS=y +CONFIG_VT_CONSOLE=y +CONFIG_HW_CONSOLE=y +# CONFIG_VT_HW_CONSOLE_BINDING is not set +# CONFIG_DEVKMEM is not set +# CONFIG_SERIAL_NONSTANDARD is not set +# CONFIG_NOZOMI is not set + +# +# Serial drivers +# +CONFIG_SERIAL_8250=y +CONFIG_SERIAL_8250_CONSOLE=y +CONFIG_SERIAL_8250_PCI=y +CONFIG_SERIAL_8250_NR_UARTS=4 +CONFIG_SERIAL_8250_RUNTIME_UARTS=2 +# CONFIG_SERIAL_8250_EXTENDED is not set + +# +# Non-8250 serial port support +# +# CONFIG_SERIAL_MAX3100 is not set +CONFIG_SERIAL_CORE=y +CONFIG_SERIAL_CORE_CONSOLE=y +# CONFIG_SERIAL_JSM is not set +CONFIG_UNIX98_PTYS=y +# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set +CONFIG_LEGACY_PTYS=y +CONFIG_LEGACY_PTY_COUNT=16 +# CONFIG_IPMI_HANDLER is not set +# CONFIG_HW_RANDOM is not set +# CONFIG_R3964 is not set +# CONFIG_APPLICOM is not set +# CONFIG_RAW_DRIVER is not set +# CONFIG_TCG_TPM is not set +CONFIG_DEVPORT=y +CONFIG_I2C=y +CONFIG_I2C_BOARDINFO=y +CONFIG_I2C_CHARDEV=y +CONFIG_I2C_HELPER_AUTO=y + +# +# I2C Hardware Bus support +# + +# +# PC SMBus host controller drivers +# +# CONFIG_I2C_ALI1535 is not set +# CONFIG_I2C_ALI1563 is not set +# CONFIG_I2C_ALI15X3 is not set +# CONFIG_I2C_AMD756 is not set +# CONFIG_I2C_AMD8111 is not set +# CONFIG_I2C_I801 is not set +# CONFIG_I2C_ISCH is not set +# CONFIG_I2C_PIIX4 is not set +# CONFIG_I2C_NFORCE2 is not set +# CONFIG_I2C_SIS5595 is not set +# CONFIG_I2C_SIS630 is not set +# CONFIG_I2C_SIS96X is not set +# CONFIG_I2C_VIA is not set +# CONFIG_I2C_VIAPRO is not set + +# +# I2C system bus drivers (mostly embedded / system-on-chip) +# +# CONFIG_I2C_GPIO is not set +CONFIG_I2C_MV64XXX=y +# CONFIG_I2C_OCORES is not set +# CONFIG_I2C_SIMTEC is not set + +# +# External I2C/SMBus adapter drivers +# +# CONFIG_I2C_PARPORT_LIGHT is not set +# CONFIG_I2C_TAOS_EVM is not set +# CONFIG_I2C_TINY_USB is not set + +# +# Graphics adapter I2C/DDC channel drivers +# +# CONFIG_I2C_VOODOO3 is not set + +# +# Other I2C/SMBus bus drivers +# +# CONFIG_I2C_PCA_PLATFORM is not set +# CONFIG_I2C_STUB is not set + +# +# Miscellaneous I2C Chip support +# +# CONFIG_DS1682 is not set +# CONFIG_SENSORS_PCF8574 is not set +# CONFIG_PCF8575 is not set +# CONFIG_SENSORS_PCA9539 is not set +# CONFIG_SENSORS_TSL2550 is not set +# CONFIG_I2C_DEBUG_CORE is not set +# CONFIG_I2C_DEBUG_ALGO is not set +# CONFIG_I2C_DEBUG_BUS is not set +# CONFIG_I2C_DEBUG_CHIP is not set +CONFIG_SPI=y +# CONFIG_SPI_DEBUG is not set +CONFIG_SPI_MASTER=y + +# +# SPI Master Controller Drivers +# +# CONFIG_SPI_BITBANG is not set +# CONFIG_SPI_GPIO is not set +CONFIG_SPI_ORION=y + +# +# SPI Protocol Masters +# +# CONFIG_SPI_SPIDEV is not set +# CONFIG_SPI_TLE62X0 is not set +CONFIG_ARCH_REQUIRE_GPIOLIB=y +CONFIG_GPIOLIB=y +# CONFIG_DEBUG_GPIO is not set +# CONFIG_GPIO_SYSFS is not set + +# +# Memory mapped GPIO expanders: +# + +# +# I2C GPIO expanders: +# +# CONFIG_GPIO_MAX732X is not set +# CONFIG_GPIO_PCA953X is not set +# CONFIG_GPIO_PCF857X is not set + +# +# PCI GPIO expanders: +# +# CONFIG_GPIO_BT8XX is not set + +# +# SPI GPIO expanders: +# +# CONFIG_GPIO_MAX7301 is not set +# CONFIG_GPIO_MCP23S08 is not set +# CONFIG_W1 is not set +# CONFIG_POWER_SUPPLY is not set +# CONFIG_HWMON is not set +# CONFIG_THERMAL is not set +# CONFIG_THERMAL_HWMON is not set +# CONFIG_WATCHDOG is not set +CONFIG_SSB_POSSIBLE=y + +# +# Sonics Silicon Backplane +# +# CONFIG_SSB is not set + +# +# Multifunction device drivers +# +# CONFIG_MFD_CORE is not set +# CONFIG_MFD_SM501 is not set +# CONFIG_MFD_ASIC3 is not set +# CONFIG_HTC_EGPIO is not set +# CONFIG_HTC_PASIC3 is not set +# CONFIG_TPS65010 is not set +# CONFIG_TWL4030_CORE is not set +# CONFIG_MFD_TMIO is not set +# CONFIG_MFD_TC6393XB is not set +# CONFIG_PMIC_DA903X is not set +# CONFIG_MFD_WM8400 is not set +# CONFIG_MFD_WM8350_I2C is not set +# CONFIG_MFD_PCF50633 is not set +# CONFIG_AB3100_CORE is not set +# CONFIG_EZX_PCAP is not set +# CONFIG_MEDIA_SUPPORT is not set + +# +# Graphics support +# +# CONFIG_DRM is not set +# CONFIG_VGASTATE is not set +# CONFIG_VIDEO_OUTPUT_CONTROL is not set +# CONFIG_FB is not set +# CONFIG_BACKLIGHT_LCD_SUPPORT is not set + +# +# Display device support +# +# CONFIG_DISPLAY_SUPPORT is not set + +# +# Console display driver support +# +# CONFIG_VGA_CONSOLE is not set +CONFIG_DUMMY_CONSOLE=y +# CONFIG_SOUND is not set +CONFIG_HID_SUPPORT=y +CONFIG_HID=y +# CONFIG_HID_DEBUG is not set +# CONFIG_HIDRAW is not set + +# +# USB Input Devices +# +CONFIG_USB_HID=y +# CONFIG_HID_PID is not set +# CONFIG_USB_HIDDEV is not set + +# +# Special HID drivers +# +CONFIG_HID_A4TECH=y +CONFIG_HID_APPLE=y +CONFIG_HID_BELKIN=y +CONFIG_HID_CHERRY=y +CONFIG_HID_CHICONY=y +CONFIG_HID_CYPRESS=y +CONFIG_HID_DRAGONRISE=y +# CONFIG_DRAGONRISE_FF is not set +CONFIG_HID_EZKEY=y +CONFIG_HID_KYE=y +CONFIG_HID_GYRATION=y +CONFIG_HID_KENSINGTON=y +CONFIG_HID_LOGITECH=y +# CONFIG_LOGITECH_FF is not set +# CONFIG_LOGIRUMBLEPAD2_FF is not set +CONFIG_HID_MICROSOFT=y +CONFIG_HID_MONTEREY=y +CONFIG_HID_NTRIG=y +CONFIG_HID_PANTHERLORD=y +# CONFIG_PANTHERLORD_FF is not set +CONFIG_HID_PETALYNX=y +CONFIG_HID_SAMSUNG=y +CONFIG_HID_SONY=y +CONFIG_HID_SUNPLUS=y +CONFIG_HID_GREENASIA=y +# CONFIG_GREENASIA_FF is not set +CONFIG_HID_SMARTJOYPLUS=y +# CONFIG_SMARTJOYPLUS_FF is not set +CONFIG_HID_TOPSEED=y +CONFIG_HID_THRUSTMASTER=y +# CONFIG_THRUSTMASTER_FF is not set +CONFIG_HID_ZEROPLUS=y +# CONFIG_ZEROPLUS_FF is not set +CONFIG_USB_SUPPORT=y +CONFIG_USB_ARCH_HAS_HCD=y +CONFIG_USB_ARCH_HAS_OHCI=y +CONFIG_USB_ARCH_HAS_EHCI=y +CONFIG_USB=y +# CONFIG_USB_DEBUG is not set +# CONFIG_USB_ANNOUNCE_NEW_DEVICES is not set + +# +# Miscellaneous USB options +# +CONFIG_USB_DEVICEFS=y +CONFIG_USB_DEVICE_CLASS=y +# CONFIG_USB_DYNAMIC_MINORS is not set +# CONFIG_USB_OTG is not set +# CONFIG_USB_MON is not set +# CONFIG_USB_WUSB is not set +# CONFIG_USB_WUSB_CBAF is not set + +# +# USB Host Controller Drivers +# +# CONFIG_USB_C67X00_HCD is not set +# CONFIG_USB_XHCI_HCD is not set +CONFIG_USB_EHCI_HCD=y +CONFIG_USB_EHCI_ROOT_HUB_TT=y +CONFIG_USB_EHCI_TT_NEWSCHED=y +# CONFIG_USB_OXU210HP_HCD is not set +# CONFIG_USB_ISP116X_HCD is not set +# CONFIG_USB_ISP1760_HCD is not set +# CONFIG_USB_OHCI_HCD is not set +# CONFIG_USB_UHCI_HCD is not set +# CONFIG_USB_SL811_HCD is not set +# CONFIG_USB_R8A66597_HCD is not set +# CONFIG_USB_WHCI_HCD is not set +# CONFIG_USB_HWA_HCD is not set + +# +# USB Device Class drivers +# +# CONFIG_USB_ACM is not set +CONFIG_USB_PRINTER=m +# CONFIG_USB_WDM is not set +# CONFIG_USB_TMC is not set + +# +# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may +# + +# +# also be needed; see USB_STORAGE Help for more info +# +CONFIG_USB_STORAGE=y +# CONFIG_USB_STORAGE_DEBUG is not set +CONFIG_USB_STORAGE_DATAFAB=y +CONFIG_USB_STORAGE_FREECOM=y +# CONFIG_USB_STORAGE_ISD200 is not set +# CONFIG_USB_STORAGE_USBAT is not set +CONFIG_USB_STORAGE_SDDR09=y +CONFIG_USB_STORAGE_SDDR55=y +CONFIG_USB_STORAGE_JUMPSHOT=y +# CONFIG_USB_STORAGE_ALAUDA is not set +# CONFIG_USB_STORAGE_ONETOUCH is not set +# CONFIG_USB_STORAGE_KARMA is not set +# CONFIG_USB_STORAGE_CYPRESS_ATACB is not set +# CONFIG_USB_LIBUSUAL is not set + +# +# USB Imaging devices +# +# CONFIG_USB_MDC800 is not set +# CONFIG_USB_MICROTEK is not set + +# +# USB port drivers +# +# CONFIG_USB_SERIAL is not set + +# +# USB Miscellaneous drivers +# +# CONFIG_USB_EMI62 is not set +# CONFIG_USB_EMI26 is not set +# CONFIG_USB_ADUTUX is not set +# CONFIG_USB_SEVSEG is not set +# CONFIG_USB_RIO500 is not set +# CONFIG_USB_LEGOTOWER is not set +# CONFIG_USB_LCD is not set +# CONFIG_USB_BERRY_CHARGE is not set +# CONFIG_USB_LED is not set +# CONFIG_USB_CYPRESS_CY7C63 is not set +# CONFIG_USB_CYTHERM is not set +# CONFIG_USB_IDMOUSE is not set +# CONFIG_USB_FTDI_ELAN is not set +# CONFIG_USB_APPLEDISPLAY is not set +# CONFIG_USB_SISUSBVGA is not set +# CONFIG_USB_LD is not set +# CONFIG_USB_TRANCEVIBRATOR is not set +# CONFIG_USB_IOWARRIOR is not set +# CONFIG_USB_TEST is not set +# CONFIG_USB_ISIGHTFW is not set +# CONFIG_USB_VST is not set +# CONFIG_USB_GADGET is not set + +# +# OTG and related infrastructure +# +# CONFIG_USB_GPIO_VBUS is not set +# CONFIG_NOP_USB_XCEIV is not set +# CONFIG_UWB is not set +CONFIG_MMC=y +# CONFIG_MMC_DEBUG is not set +# CONFIG_MMC_UNSAFE_RESUME is not set + +# +# MMC/SD/SDIO Card Drivers +# +CONFIG_MMC_BLOCK=y +CONFIG_MMC_BLOCK_BOUNCE=y +CONFIG_SDIO_UART=y +# CONFIG_MMC_TEST is not set + +# +# MMC/SD/SDIO Host Controller Drivers +# +# CONFIG_MMC_SDHCI is not set +# CONFIG_MMC_TIFM_SD is not set +CONFIG_MMC_MVSDIO=y +# CONFIG_MMC_SPI is not set +# CONFIG_MMC_CB710 is not set +# CONFIG_MMC_VIA_SDMMC is not set +# CONFIG_MEMSTICK is not set +# CONFIG_ACCESSIBILITY is not set +CONFIG_NEW_LEDS=y +CONFIG_LEDS_CLASS=y + +# +# LED drivers +# +# CONFIG_LEDS_PCA9532 is not set +CONFIG_LEDS_GPIO=y +CONFIG_LEDS_GPIO_PLATFORM=y +# CONFIG_LEDS_LP3944 is not set +# CONFIG_LEDS_PCA955X is not set +# CONFIG_LEDS_DAC124S085 is not set +# CONFIG_LEDS_BD2802 is not set + +# +# LED Triggers +# +CONFIG_LEDS_TRIGGERS=y +CONFIG_LEDS_TRIGGER_TIMER=y +CONFIG_LEDS_TRIGGER_HEARTBEAT=y +# CONFIG_LEDS_TRIGGER_BACKLIGHT is not set +# CONFIG_LEDS_TRIGGER_GPIO is not set +CONFIG_LEDS_TRIGGER_DEFAULT_ON=y + +# +# iptables trigger is under Netfilter config (LED target) +# +CONFIG_RTC_LIB=y +CONFIG_RTC_CLASS=y +CONFIG_RTC_HCTOSYS=y +CONFIG_RTC_HCTOSYS_DEVICE="rtc0" +# CONFIG_RTC_DEBUG is not set + +# +# RTC interfaces +# +CONFIG_RTC_INTF_SYSFS=y +CONFIG_RTC_INTF_PROC=y +CONFIG_RTC_INTF_DEV=y +# CONFIG_RTC_INTF_DEV_UIE_EMUL is not set +# CONFIG_RTC_DRV_TEST is not set + +# +# I2C RTC drivers +# +# CONFIG_RTC_DRV_DS1307 is not set +# CONFIG_RTC_DRV_DS1374 is not set +# CONFIG_RTC_DRV_DS1672 is not set +# CONFIG_RTC_DRV_MAX6900 is not set +# CONFIG_RTC_DRV_RS5C372 is not set +# CONFIG_RTC_DRV_ISL1208 is not set +# CONFIG_RTC_DRV_X1205 is not set +# CONFIG_RTC_DRV_PCF8563 is not set +# CONFIG_RTC_DRV_PCF8583 is not set +# CONFIG_RTC_DRV_M41T80 is not set +CONFIG_RTC_DRV_S35390A=y +# CONFIG_RTC_DRV_FM3130 is not set +# CONFIG_RTC_DRV_RX8581 is not set +# CONFIG_RTC_DRV_RX8025 is not set + +# +# SPI RTC drivers +# +# CONFIG_RTC_DRV_M41T94 is not set +# CONFIG_RTC_DRV_DS1305 is not set +# CONFIG_RTC_DRV_DS1390 is not set +# CONFIG_RTC_DRV_MAX6902 is not set +# CONFIG_RTC_DRV_R9701 is not set +# CONFIG_RTC_DRV_RS5C348 is not set +# CONFIG_RTC_DRV_DS3234 is not set + +# +# Platform RTC drivers +# +# CONFIG_RTC_DRV_CMOS is not set +# CONFIG_RTC_DRV_DS1286 is not set +# CONFIG_RTC_DRV_DS1511 is not set +# CONFIG_RTC_DRV_DS1553 is not set +# CONFIG_RTC_DRV_DS1742 is not set +# CONFIG_RTC_DRV_STK17TA8 is not set +# CONFIG_RTC_DRV_M48T86 is not set +# CONFIG_RTC_DRV_M48T35 is not set +# CONFIG_RTC_DRV_M48T59 is not set +# CONFIG_RTC_DRV_BQ4802 is not set +# CONFIG_RTC_DRV_V3020 is not set + +# +# on-CPU RTC drivers +# +CONFIG_RTC_DRV_MV=y +CONFIG_DMADEVICES=y + +# +# DMA Devices +# +CONFIG_MV_XOR=y +CONFIG_DMA_ENGINE=y + +# +# DMA Clients +# +# CONFIG_NET_DMA is not set +# CONFIG_ASYNC_TX_DMA is not set +# CONFIG_DMATEST is not set +# CONFIG_AUXDISPLAY is not set +# CONFIG_REGULATOR is not set +# CONFIG_UIO is not set +# CONFIG_STAGING is not set + +# +# File systems +# +CONFIG_EXT2_FS=y +# CONFIG_EXT2_FS_XATTR is not set +# CONFIG_EXT2_FS_XIP is not set +CONFIG_EXT3_FS=y +# CONFIG_EXT3_DEFAULTS_TO_ORDERED is not set +# CONFIG_EXT3_FS_XATTR is not set +# CONFIG_EXT4_FS is not set +CONFIG_JBD=y +# CONFIG_JBD_DEBUG is not set +CONFIG_REISERFS_FS=y +# CONFIG_JFS_FS is not set +# CONFIG_FS_POSIX_ACL is not set +# CONFIG_XFS_FS is not set +# CONFIG_GFS2_FS is not set +# CONFIG_OCFS2_FS is not set +# CONFIG_BTRFS_FS is not set +CONFIG_FILE_LOCKING=y +CONFIG_FSNOTIFY=y +CONFIG_DNOTIFY=y +CONFIG_INOTIFY=y +CONFIG_INOTIFY_USER=y +# CONFIG_QUOTA is not set +# CONFIG_AUTOFS_FS is not set +# CONFIG_AUTOFS4_FS is not set +CONFIG_FUSE_FS=y + +# +# Caches +# +# CONFIG_FSCACHE is not set + +# +# CD-ROM/DVD Filesystems +# +CONFIG_ISO9660_FS=y +CONFIG_JOLIET=y +# CONFIG_ZISOFS is not set +CONFIG_UDF_FS=m +CONFIG_UDF_NLS=y + +# +# DOS/FAT/NT Filesystems +# +CONFIG_FAT_FS=y +CONFIG_MSDOS_FS=y +CONFIG_VFAT_FS=y +CONFIG_FAT_DEFAULT_CODEPAGE=437 +CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1" +# CONFIG_NTFS_FS is not set + +# +# Pseudo filesystems +# +CONFIG_PROC_FS=y +CONFIG_PROC_SYSCTL=y +CONFIG_PROC_PAGE_MONITOR=y +CONFIG_SYSFS=y +CONFIG_TMPFS=y +# CONFIG_TMPFS_POSIX_ACL is not set +# CONFIG_HUGETLB_PAGE is not set +# CONFIG_CONFIGFS_FS is not set +CONFIG_MISC_FILESYSTEMS=y +# CONFIG_ADFS_FS is not set +# CONFIG_AFFS_FS is not set +# CONFIG_HFS_FS is not set +# CONFIG_HFSPLUS_FS is not set +# CONFIG_BEFS_FS is not set +# CONFIG_BFS_FS is not set +# CONFIG_EFS_FS is not set +CONFIG_JFFS2_FS=y +CONFIG_JFFS2_FS_DEBUG=0 +CONFIG_JFFS2_FS_WRITEBUFFER=y +# CONFIG_JFFS2_FS_WBUF_VERIFY is not set +# CONFIG_JFFS2_SUMMARY is not set +# CONFIG_JFFS2_FS_XATTR is not set +# CONFIG_JFFS2_COMPRESSION_OPTIONS is not set +CONFIG_JFFS2_ZLIB=y +# CONFIG_JFFS2_LZO is not set +CONFIG_JFFS2_RTIME=y +# CONFIG_JFFS2_RUBIN is not set +CONFIG_CRAMFS=y +# CONFIG_SQUASHFS is not set +# CONFIG_VXFS_FS is not set +# CONFIG_MINIX_FS is not set +# CONFIG_OMFS_FS is not set +# CONFIG_HPFS_FS is not set +# CONFIG_QNX4FS_FS is not set +# CONFIG_ROMFS_FS is not set +# CONFIG_SYSV_FS is not set +# CONFIG_UFS_FS is not set +# CONFIG_NILFS2_FS is not set +CONFIG_NETWORK_FILESYSTEMS=y +CONFIG_NFS_FS=y +CONFIG_NFS_V3=y +# CONFIG_NFS_V3_ACL is not set +# CONFIG_NFS_V4 is not set +CONFIG_ROOT_NFS=y +# CONFIG_NFSD is not set +CONFIG_LOCKD=y +CONFIG_LOCKD_V4=y +CONFIG_NFS_COMMON=y +CONFIG_SUNRPC=y +# CONFIG_RPCSEC_GSS_KRB5 is not set +# CONFIG_RPCSEC_GSS_SPKM3 is not set +# CONFIG_SMB_FS is not set +# CONFIG_CIFS is not set +# CONFIG_NCP_FS is not set +# CONFIG_CODA_FS is not set +# CONFIG_AFS_FS is not set + +# +# Partition Types +# +# CONFIG_PARTITION_ADVANCED is not set +CONFIG_MSDOS_PARTITION=y +CONFIG_NLS=y +CONFIG_NLS_DEFAULT="iso8859-1" +CONFIG_NLS_CODEPAGE_437=y +# CONFIG_NLS_CODEPAGE_737 is not set +# CONFIG_NLS_CODEPAGE_775 is not set +CONFIG_NLS_CODEPAGE_850=y +# CONFIG_NLS_CODEPAGE_852 is not set +# CONFIG_NLS_CODEPAGE_855 is not set +# CONFIG_NLS_CODEPAGE_857 is not set +# CONFIG_NLS_CODEPAGE_860 is not set +# CONFIG_NLS_CODEPAGE_861 is not set +# CONFIG_NLS_CODEPAGE_862 is not set +# CONFIG_NLS_CODEPAGE_863 is not set +# CONFIG_NLS_CODEPAGE_864 is not set +# CONFIG_NLS_CODEPAGE_865 is not set +# CONFIG_NLS_CODEPAGE_866 is not set +# CONFIG_NLS_CODEPAGE_869 is not set +# CONFIG_NLS_CODEPAGE_936 is not set +# CONFIG_NLS_CODEPAGE_950 is not set +# CONFIG_NLS_CODEPAGE_932 is not set +# CONFIG_NLS_CODEPAGE_949 is not set +# CONFIG_NLS_CODEPAGE_874 is not set +# CONFIG_NLS_ISO8859_8 is not set +# CONFIG_NLS_CODEPAGE_1250 is not set +# CONFIG_NLS_CODEPAGE_1251 is not set +# CONFIG_NLS_ASCII is not set +CONFIG_NLS_ISO8859_1=y +CONFIG_NLS_ISO8859_2=y +# CONFIG_NLS_ISO8859_3 is not set +# CONFIG_NLS_ISO8859_4 is not set +# CONFIG_NLS_ISO8859_5 is not set +# CONFIG_NLS_ISO8859_6 is not set +# CONFIG_NLS_ISO8859_7 is not set +# CONFIG_NLS_ISO8859_9 is not set +# CONFIG_NLS_ISO8859_13 is not set +# CONFIG_NLS_ISO8859_14 is not set +# CONFIG_NLS_ISO8859_15 is not set +# CONFIG_NLS_KOI8_R is not set +# CONFIG_NLS_KOI8_U is not set +CONFIG_NLS_UTF8=y +# CONFIG_DLM is not set + +# +# Kernel hacking +# +# CONFIG_PRINTK_TIME is not set +CONFIG_ENABLE_WARN_DEPRECATED=y +CONFIG_ENABLE_MUST_CHECK=y +CONFIG_FRAME_WARN=1024 +CONFIG_MAGIC_SYSRQ=y +# CONFIG_UNUSED_SYMBOLS is not set +CONFIG_DEBUG_FS=y +# CONFIG_HEADERS_CHECK is not set +CONFIG_DEBUG_KERNEL=y +# CONFIG_DEBUG_SHIRQ is not set +CONFIG_DETECT_SOFTLOCKUP=y +# CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC is not set +CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC_VALUE=0 +CONFIG_DETECT_HUNG_TASK=y +# CONFIG_BOOTPARAM_HUNG_TASK_PANIC is not set +CONFIG_BOOTPARAM_HUNG_TASK_PANIC_VALUE=0 +# CONFIG_SCHED_DEBUG is not set +# CONFIG_SCHEDSTATS is not set +# CONFIG_TIMER_STATS is not set +# CONFIG_DEBUG_OBJECTS is not set +# CONFIG_SLUB_DEBUG_ON is not set +# CONFIG_SLUB_STATS is not set +# CONFIG_DEBUG_KMEMLEAK is not set +# CONFIG_DEBUG_PREEMPT is not set +# CONFIG_DEBUG_RT_MUTEXES is not set +# CONFIG_RT_MUTEX_TESTER is not set +# CONFIG_DEBUG_SPINLOCK is not set +# CONFIG_DEBUG_MUTEXES is not set +# CONFIG_DEBUG_LOCK_ALLOC is not set +# CONFIG_PROVE_LOCKING is not set +# CONFIG_LOCK_STAT is not set +# CONFIG_DEBUG_SPINLOCK_SLEEP is not set +# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set +CONFIG_STACKTRACE=y +# CONFIG_DEBUG_KOBJECT is not set +CONFIG_DEBUG_BUGVERBOSE=y +CONFIG_DEBUG_INFO=y +# CONFIG_DEBUG_VM is not set +# CONFIG_DEBUG_WRITECOUNT is not set +CONFIG_DEBUG_MEMORY_INIT=y +# CONFIG_DEBUG_LIST is not set +# CONFIG_DEBUG_SG is not set +# CONFIG_DEBUG_NOTIFIERS is not set +# CONFIG_BOOT_PRINTK_DELAY is not set +# CONFIG_RCU_TORTURE_TEST is not set +# CONFIG_RCU_CPU_STALL_DETECTOR is not set +# CONFIG_KPROBES_SANITY_TEST is not set +# CONFIG_BACKTRACE_SELF_TEST is not set +# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set +# CONFIG_LKDTM is not set +# CONFIG_FAULT_INJECTION is not set +# CONFIG_LATENCYTOP is not set +CONFIG_SYSCTL_SYSCALL_CHECK=y +# CONFIG_PAGE_POISONING is not set +CONFIG_NOP_TRACER=y +CONFIG_HAVE_FUNCTION_TRACER=y +CONFIG_RING_BUFFER=y +CONFIG_EVENT_TRACING=y +CONFIG_CONTEXT_SWITCH_TRACER=y +CONFIG_TRACING=y +CONFIG_TRACING_SUPPORT=y +CONFIG_FTRACE=y +# CONFIG_FUNCTION_TRACER is not set +# CONFIG_IRQSOFF_TRACER is not set +# CONFIG_PREEMPT_TRACER is not set +# CONFIG_SCHED_TRACER is not set +# CONFIG_ENABLE_DEFAULT_TRACERS is not set +# CONFIG_BOOT_TRACER is not set +CONFIG_BRANCH_PROFILE_NONE=y +# CONFIG_PROFILE_ANNOTATED_BRANCHES is not set +# CONFIG_PROFILE_ALL_BRANCHES is not set +# CONFIG_STACK_TRACER is not set +# CONFIG_KMEMTRACE is not set +# CONFIG_WORKQUEUE_TRACER is not set +# CONFIG_BLK_DEV_IO_TRACE is not set +# CONFIG_RING_BUFFER_BENCHMARK is not set +# CONFIG_DYNAMIC_DEBUG is not set +# CONFIG_SAMPLES is not set +CONFIG_HAVE_ARCH_KGDB=y +# CONFIG_KGDB is not set +CONFIG_ARM_UNWIND=y +CONFIG_DEBUG_USER=y +CONFIG_DEBUG_ERRORS=y +# CONFIG_DEBUG_STACK_USAGE is not set +CONFIG_DEBUG_LL=y +# CONFIG_DEBUG_ICEDCC is not set + +# +# Security options +# +# CONFIG_KEYS is not set +# CONFIG_SECURITY is not set +# CONFIG_SECURITYFS is not set +# CONFIG_SECURITY_FILE_CAPABILITIES is not set +CONFIG_CRYPTO=y + +# +# Crypto core or helper +# +# CONFIG_CRYPTO_FIPS is not set +CONFIG_CRYPTO_ALGAPI=y +CONFIG_CRYPTO_ALGAPI2=y +CONFIG_CRYPTO_AEAD2=y +CONFIG_CRYPTO_BLKCIPHER=y +CONFIG_CRYPTO_BLKCIPHER2=y +CONFIG_CRYPTO_HASH=y +CONFIG_CRYPTO_HASH2=y +CONFIG_CRYPTO_RNG2=y +CONFIG_CRYPTO_PCOMP=y +CONFIG_CRYPTO_MANAGER=y +CONFIG_CRYPTO_MANAGER2=y +# CONFIG_CRYPTO_GF128MUL is not set +# CONFIG_CRYPTO_NULL is not set +CONFIG_CRYPTO_WORKQUEUE=y +# CONFIG_CRYPTO_CRYPTD is not set +# CONFIG_CRYPTO_AUTHENC is not set +# CONFIG_CRYPTO_TEST is not set + +# +# Authenticated Encryption with Associated Data +# +# CONFIG_CRYPTO_CCM is not set +# CONFIG_CRYPTO_GCM is not set +# CONFIG_CRYPTO_SEQIV is not set + +# +# Block modes +# +CONFIG_CRYPTO_CBC=m +# CONFIG_CRYPTO_CTR is not set +# CONFIG_CRYPTO_CTS is not set +CONFIG_CRYPTO_ECB=y +# CONFIG_CRYPTO_LRW is not set +CONFIG_CRYPTO_PCBC=m +# CONFIG_CRYPTO_XTS is not set + +# +# Hash modes +# +# CONFIG_CRYPTO_HMAC is not set +# CONFIG_CRYPTO_XCBC is not set + +# +# Digest +# +CONFIG_CRYPTO_CRC32C=y +# CONFIG_CRYPTO_MD4 is not set +# CONFIG_CRYPTO_MD5 is not set +# CONFIG_CRYPTO_MICHAEL_MIC is not set +# CONFIG_CRYPTO_RMD128 is not set +# CONFIG_CRYPTO_RMD160 is not set +# CONFIG_CRYPTO_RMD256 is not set +# CONFIG_CRYPTO_RMD320 is not set +# CONFIG_CRYPTO_SHA1 is not set +# CONFIG_CRYPTO_SHA256 is not set +# CONFIG_CRYPTO_SHA512 is not set +# CONFIG_CRYPTO_TGR192 is not set +# CONFIG_CRYPTO_WP512 is not set + +# +# Ciphers +# +CONFIG_CRYPTO_AES=y +# CONFIG_CRYPTO_ANUBIS is not set +CONFIG_CRYPTO_ARC4=y +# CONFIG_CRYPTO_BLOWFISH is not set +# CONFIG_CRYPTO_CAMELLIA is not set +# CONFIG_CRYPTO_CAST5 is not set +# CONFIG_CRYPTO_CAST6 is not set +# CONFIG_CRYPTO_DES is not set +# CONFIG_CRYPTO_FCRYPT is not set +# CONFIG_CRYPTO_KHAZAD is not set +# CONFIG_CRYPTO_SALSA20 is not set +# CONFIG_CRYPTO_SEED is not set +# CONFIG_CRYPTO_SERPENT is not set +# CONFIG_CRYPTO_TEA is not set +# CONFIG_CRYPTO_TWOFISH is not set + +# +# Compression +# +# CONFIG_CRYPTO_DEFLATE is not set +# CONFIG_CRYPTO_ZLIB is not set +# CONFIG_CRYPTO_LZO is not set + +# +# Random Number Generation +# +# CONFIG_CRYPTO_ANSI_CPRNG is not set +CONFIG_CRYPTO_HW=y +# CONFIG_CRYPTO_DEV_HIFN_795X is not set +CONFIG_BINARY_PRINTF=y + +# +# Library routines +# +CONFIG_BITREVERSE=y +CONFIG_GENERIC_FIND_LAST_BIT=y +CONFIG_CRC_CCITT=y +CONFIG_CRC16=y +# CONFIG_CRC_T10DIF is not set +CONFIG_CRC_ITU_T=m +CONFIG_CRC32=y +# CONFIG_CRC7 is not set +CONFIG_LIBCRC32C=y +CONFIG_ZLIB_INFLATE=y +CONFIG_ZLIB_DEFLATE=y +CONFIG_HAS_IOMEM=y +CONFIG_HAS_IOPORT=y +CONFIG_HAS_DMA=y +CONFIG_NLATTR=y diff --git a/pkgs/os-specific/linux/kernel/generic.nix b/pkgs/os-specific/linux/kernel/generic.nix index 909efca247e..31af236ffae 100644 --- a/pkgs/os-specific/linux/kernel/generic.nix +++ b/pkgs/os-specific/linux/kernel/generic.nix @@ -37,10 +37,12 @@ , preConfigure ? "" , extraMeta ? {} +, platform ? { uboot = null; } , ... }: -assert stdenv.system == "i686-linux" || stdenv.system == "x86_64-linux"; +assert stdenv.system == "i686-linux" || stdenv.system == "x86_64-linux" + || stdenv.system == "armv5tel-linux"; let @@ -71,13 +73,15 @@ stdenv.mkDerivation { map (p: if p ? extraConfig then p.extraConfig else "") kernelPatches; in lib.concatStrings (addNewlines (configFromPatches ++ extraConfig)); - buildInputs = [perl mktemp]; + buildInputs = [perl mktemp] + ++ lib.optional (platform.uboot != null) [platform.uboot]; arch = if xen then "xen" else if userModeLinux then "um" else if stdenv.system == "i686-linux" then "i386" else if stdenv.system == "x86_64-linux" then "x86_64" else + if stdenv.system == "armv5tel-linux" then "arm" else abort "Platform ${stdenv.system} is not supported."; makeFlags = if userModeLinux then "ARCH=um SHELL=bash" else ""; @@ -87,6 +91,8 @@ stdenv.mkDerivation { allowLocalVersion = false; # don't allow patches to set a suffix inherit localVersion; # but do allow the user to set one. + makeUImage = if (platform.uboot != null) then true else false; + meta = { description = (if userModeLinux then diff --git a/pkgs/os-specific/linux/kernel/linux-2.6.28.nix b/pkgs/os-specific/linux/kernel/linux-2.6.28.nix index 8ec7fd0c07b..eefa0303d92 100644 --- a/pkgs/os-specific/linux/kernel/linux-2.6.28.nix +++ b/pkgs/os-specific/linux/kernel/linux-2.6.28.nix @@ -19,6 +19,7 @@ import ./generic.nix ( config = if stdenv.system == "i686-linux" then ./config-2.6.28-i686-smp else if stdenv.system == "x86_64-linux" then ./config-2.6.28-x86_64-smp else + if stdenv.system == "armv5tel-linux" then ./config-2.6.28-arm else abort "No kernel configuration for your platform!"; } diff --git a/pkgs/os-specific/linux/kernel/linux-2.6.29.nix b/pkgs/os-specific/linux/kernel/linux-2.6.29.nix index f9a55dd1f2c..793d1bd74c7 100644 --- a/pkgs/os-specific/linux/kernel/linux-2.6.29.nix +++ b/pkgs/os-specific/linux/kernel/linux-2.6.29.nix @@ -19,6 +19,7 @@ import ./generic.nix ( config = if stdenv.system == "i686-linux" then ./config-2.6.29-i686-smp else if stdenv.system == "x86_64-linux" then ./config-2.6.29-x86_64-smp else + if stdenv.system == "armv5tel-linux" then ./config-2.6.29-arm else abort "No kernel configuration for your platform!"; } diff --git a/pkgs/os-specific/linux/kernel/linux-2.6.31.nix b/pkgs/os-specific/linux/kernel/linux-2.6.31.nix index 8be1f202332..70022c6abd3 100644 --- a/pkgs/os-specific/linux/kernel/linux-2.6.31.nix +++ b/pkgs/os-specific/linux/kernel/linux-2.6.31.nix @@ -20,7 +20,7 @@ import ./generic.nix ( iwlwifi = true; }; - preConfigure = '' + preConfigure = if (stdenv.system != "armv5tel-linux") then '' killOption () { sed -re 's/^('"$1"')=[ym]/# \1 is not set/' -i .config } @@ -55,9 +55,10 @@ import ./generic.nix ( setOptionYes CONFIG_PREEMPT_VOLUNTARY cp .config ${config} - ''; + '' else ""; - config = "./kernel-config"; + config = if (stdenv.system == "armv5tel-linux") then + (./config-2.6.31-armv5tel) else "./kernel-config"; } // args diff --git a/pkgs/os-specific/linux/klibc/default.nix b/pkgs/os-specific/linux/klibc/default.nix index 7f4229efe85..bfb76f32821 100644 --- a/pkgs/os-specific/linux/klibc/default.nix +++ b/pkgs/os-specific/linux/klibc/default.nix @@ -15,6 +15,8 @@ stdenv.mkDerivation { makeFlags = ["V=1" "prefix=$out" "SHLIBDIR=$out/lib"]; preBuild = '' + sed -i /CONFIG_AEABI/d defconfig + echo "CONFIG_AEABI=y" >> defconfig makeFlags=$(eval "echo $makeFlags") mkdir linux diff --git a/pkgs/os-specific/linux/pam_unix2/default.nix b/pkgs/os-specific/linux/pam_unix2/default.nix index f215d69ea8a..090c3e9e541 100644 --- a/pkgs/os-specific/linux/pam_unix2/default.nix +++ b/pkgs/os-specific/linux/pam_unix2/default.nix @@ -1,4 +1,4 @@ -{stdenv, fetchurl, pam, libxcrypt}: +{stdenv, fetchurl, pam, libxcrypt ? null}: stdenv.mkDerivation { name = "pam_unix2-2.6"; @@ -8,5 +8,5 @@ stdenv.mkDerivation { sha256 = "067xnyd3q8ik73glxwyx1lydk4bgl78lzq44mnqqp4jrpnpd04ml"; }; - buildInputs = [pam libxcrypt]; + buildInputs = [pam ]; } diff --git a/pkgs/os-specific/linux/uclibc/default.nix b/pkgs/os-specific/linux/uclibc/default.nix new file mode 100644 index 00000000000..1edcc933e57 --- /dev/null +++ b/pkgs/os-specific/linux/uclibc/default.nix @@ -0,0 +1,38 @@ +{stdenv, fetchurl, kernelHeaders}: + +assert stdenv.isLinux; + +stdenv.mkDerivation { + name = "uclibc-0.9.30.1"; + src = fetchurl { + url = http://www.uclibc.org/downloads/uClibc-0.9.30.1.tar.bz2; + sha256 = "132cf27hkgi0q4qlwbiyj4ffj76sja0jcxm0aqzzgks65jh6k5rd"; + }; + + configurePhase = '' + make defconfig + sed -e s@/usr/include@${kernelHeaders}@ \ + -e 's@^RUNTIME_PREFIX.*@RUNTIME_PREFIX="/"@' \ + -e 's@^DEVEL_PREFIX.*@DEVEL_PREFIX="/"@' \ + ${if stdenv.system=="armv5tel-linux" then + ''-e 's/.*CONFIG_ARM_OABI.*//' \ + -e 's/.*CONFIG_ARM_EABI.*/CONFIG_ARM_EABI=y/' \ + -e 's/.*ARCH_BIG_ENDIAN.*/#ARCH_BIG_ENDIAN=y/' \ + -e 's/.*ARCH_WANTS_BIG_ENDIAN.*/#ARCH_WANTS_BIG_ENDIAN=y/' \ + -e 's/.*ARCH_WANTS_LITTLE_ENDIAN.*/ARCH_WANTS_LITTLE_ENDIAN=y/' '' else ""} \ + -i .config + make oldconfig + ''; + + installPhase = '' + mkdir -p $out + make PREFIX=$out install + (cd $out/include && ln -s ${kernelHeaders}/include/* .) || exit 1 + ''; + + meta = { + homepage = http://www.uclibc.org/; + description = "A small implementation of the C library"; + license = "LGPLv2"; + }; +} diff --git a/pkgs/os-specific/linux/zen-kernel/2.6.31-zen5.nix b/pkgs/os-specific/linux/zen-kernel/2.6.31-zen5.nix index c736396a8e3..cb0a07ec289 100644 --- a/pkgs/os-specific/linux/zen-kernel/2.6.31-zen5.nix +++ b/pkgs/os-specific/linux/zen-kernel/2.6.31-zen5.nix @@ -3,7 +3,10 @@ let s = import ./src-for-2.6.31-zen5.nix; in (import ../kernel/generic.nix) (rec { - inherit (a) stdenv fetchurl perl mktemp module_init_tools; + inherit (a) stdenv fetchurl perl mktemp module_init_tools platform; + + uboot = if (platform.name == "sheevaplug") then + platform.uboot else null; src = a.builderDefs.fetchGitFromSrcInfo s; version = "2.6.31-zen5"; @@ -11,7 +14,7 @@ let features = { iwlwifi = true; zen = true; - fbConDecor = true; + fbConDecor = if (platform.name == "pc") then true else false; aufs = true; }; @@ -23,7 +26,7 @@ let linux; }; - preConfigure = '' + configFunctions = '' killOption () { sed -re 's/^('"$1"')=.*/# \1 is not set/' -i .config } @@ -38,7 +41,10 @@ let setOptionYes () { setOptionVal "$1" y } + ''; + + configurePC = '' make allmodconfig killOption CONFIG_CMDLINE_OVERRIDE @@ -99,4 +105,89 @@ let '' cp .config ${config} ''; + + configureBaseSheevaplug = '' + ARCH=arm make kirkwood_defconfig + ''; + + configureBaseVersatileARM = '' + ARCH=arm make versatile_defconfig + ''; + + configureARM = '' + killOption CONFIG_CMDLINE_OVERRIDE + + killOption 'CONFIG_.*_DEBUG.*' + killOption 'CONFIG_DEBUG.*' + killOption CONFIG_AUDIT_ARCH + killOption CONFIG_PERF_COUNTERS + killOption 'CONFIG_GCOV.*' + killOption 'CONFIG_KGDB.*' + killOption 'CONFIG_.*_TEST' + killOption CONFIG_TASKSTATS + + killOption CONFIG_SLQB + killOption CONFIG_SLQB_ALLOCATOR + setOptionYes CONFIG_SLUB_ALLOCATOR + setOptionYes CONFIG_SLUB + killOption CONFIG_ACPI_CUSTOM_DSDT_INITRD + killOption CONFIG_DEVTMPFS + killOption CONFIG_DEVTMPFS_MOUNT + + killOption CONFIG_IMA + '' + + '' + killOption CONFIG_USB_OTG_BLACKLIST_HUB + ''+ + '' + killOption CONFIG_KERNEL_BZIP2 + killOption CONFIG_KERNEL_LZMA + setOptionYes CONFIG_KERNEL_GZIP + ''+ + '' + killOption CONFIG_FB_TILEBLITTING + killOption CONFIG_FB_S3 + killOption CONFIG_FB_VT8623 + killOption CONFIG_FB_ARK + killOption CONFIG_FRAMEBUFFER_CONSOLE + killOption CONFIG_FB + make oldconfig + killOption CONFIG_FB_CON_DECOR + killOption CONFIG_FB_VESA + ''+ + '' + killOption CONFIG_PREEMPT_NONE + setOptionYes CONFIG_PREEMPT_VOLUNTARY + ''+ + '' + killOption CONFIG_PRAMFS + ''+ + '' + setOptionYes CONFIG_MTD_UBI + setOptionYes CONFIG_REISERFS_FS + setOptionYes CONFIG_FUSE_FS + setOptionYes CONFIG_ISO9660_FS + ''+ + (if a.lib.attrByPath ["ckSched"] false a then '' + killOption CONFIG_CPU_CFS + setOptionYes CONFIG_CPU_BFS + killOption CONFIG_NO_HZ + killOption CONFIG_HZ_1000 + setOptionYes CONFIG_HZ_250 + setOptionVal CONFIG_HZ 250 + ''else "") + + '' + cp .config ${config} + ''; + + + preConfigure = configFunctions + + (if (platform.name == "pc") then + (configureBaseSheevaplug + configureARM) + else if (platform.name == "sheevaplug") then + (configureBaseSheevaplug + configureARM) + else if (platform.name == "versatileARM") then + (configureBaseVersatileARM + configureARM) + else throw "platform not supported" + ); }) diff --git a/pkgs/shells/bash/bash-patches.nix b/pkgs/shells/bash/bash-patches.nix new file mode 100644 index 00000000000..93a4f982e17 --- /dev/null +++ b/pkgs/shells/bash/bash-patches.nix @@ -0,0 +1,37 @@ +# Automatically generated by `update-patch-set.sh'; do not edit. + +patch: [ +(patch "001" "06q3y3i2kp09bnjd99lxa95psdmj2haril7pxhdbz9sx9qh19dg3") +(patch "002" "1x2w3mmz1qga30zf95wmnpjsdp8cnd2ljl29mfq9r6q1cvjifla9") +(patch "003" "1n3vg6p4nc7kd896s0fp48y9f6ddf3bkpdqzgmdpgqxi243c8073") +(patch "004" "1bnja962g9isrqhrw8dzxsx7ssvc2ayk1a9vmg2dx6gai8gys0sb") +(patch "005" "0l4l62riap2kqy20789x7f6bfx361yvixds0gnh10rli4v05h1j2") +(patch "006" "1r429n2b5cs2gi5zjv1hlr8k7jplnjg3y563369z799x1x9651y7") +(patch "007" "0vb11vy8r5ayr88hrlli8xj2qcird1qg8l99nknrwnni4jg5b3am") +(patch "008" "1z6q0lq1yxwpf6nf1z39jbyycv6cfv6gwpaqmgg7pnw31z029nw7") +(patch "009" "0avyvz8rkj66x715zf1b3w2pgbwwzaj977v9pcrscjksc50c4iq0") +(patch "010" "05j8xq2s1wnii1za1s6nglzga9xp7q1dmcs1bqqrlggz8mmnyhgj") +(patch "011" "1m2lhfhy6bl3j88qi9kcn6n1qb439n8pmhl4cqsmi2g8xwli9j7z") +(patch "012" "1ww327ga4s7607jgr0xd6nh8bg4xgf2vk63p2yy9b1iaq7lxdi5j") +(patch "013" "0fjc3qj4q6q2zfq1qmiarp6s4hhbh80q47xwws0mvgpks7wwl33n") +(patch "014" "16n3l7627n8b1p9s9ss9fcj7nbn1s6yndwmlh3v751knj73c9v8k") +(patch "015" "0548fm4vd3sv3y4g3csysm1mm7jk5hvyfwglw1c0pj2lvyzf583v") +(patch "016" "06fmf6jmgzl0x1vd7pkyi90sa1wjywkd42gi1phqmrwgj9p96flg") +(patch "017" "08gh63spac39z90n1d8gpx571x7n4bwzp2yqm3ik9c1rcgz2mvib") +(patch "018" "0cg6q3fn0j8kzd9w7plnwrbyxv8hzwx9vjp3ij9vx1p3n26vpcqx") +(patch "019" "0xbl1f5l04pmrs5dsq2nbpcs58zgz0f48nj4hqic143h0y7r8jah") +(patch "020" "11371hsarqc5czij1lmkj79c0h1b7hninkzrzmqpr1hnwgmrm6hw") +(patch "021" "0k8ii0yb4zhxmc90n3y2wpkczrxh7j1avjflnsi42j8hidpjsiq2") +(patch "022" "04lh6n91bif6wbcmizps40yc9qwfw720xq3vmmrkz1m13b3isnh4") +(patch "023" "11nwbnp4gmsjw46gq9gahzlbdagl3r1vdvcxvxfwlqppflim42sq") +(patch "024" "1aqp6z2mlp1m921ckgiiqd42fnvjrhil4bkkw58vjcgygv2bm7m5") +(patch "025" "023aixd4v3adsvnni9jf2qcfgpsza544k76k2ny78d036vb00ygp") +(patch "026" "1jzn8185iw49126mngbz8007dd6ca9m04n5yhhc5c9b6ki0g9gd9") +(patch "027" "1wkp9ci0ccvgmnjyg5z3qkcfh2z7p3rgdm8cc5k8mk5sn5mw4pgn") +(patch "028" "06id09sb9rvlw7phibs6aw7ncjddikia0mjr9jdis75byfx2q8jv") +(patch "029" "0rpsam2m9mxnxcgcdr461sijprqi9wv6i9gg5c7c46gwj4gs5x8m") +(patch "030" "1wwajl7fb5vy25m08fp4jshgqdh02m66zj7yq8i0j65675ldx1bz") +(patch "031" "037viyi9n9hnc5yyfgrr1ssvqr2vkasn08x3qvyxak7f0s4k2gv0") +(patch "032" "1pma7w85vq831izaqc4p9831hfsfl31s4n155azkrxywpqv4fsza") +(patch "033" "1x845nfqg8wr1x4wls9jdrzdq1lbig02w07wpmfr4h4r6bhgd5n4") +] diff --git a/pkgs/shells/bash/default.nix b/pkgs/shells/bash/default.nix index 8a58f7aec00..02736dec285 100644 --- a/pkgs/shells/bash/default.nix +++ b/pkgs/shells/bash/default.nix @@ -3,7 +3,7 @@ assert interactive -> readline != null; stdenv.mkDerivation rec { - name = "bash-4.0-p17"; + name = "bash-4.0-p28"; src = fetchurl { url = "mirror://gnu/bash/bash-4.0.tar.gz"; @@ -19,8 +19,6 @@ stdenv.mkDerivation rec { -DSSH_SOURCE_BASHRC ''; - postInstall = "ln -s bash $out/bin/sh"; - patchFlags = "-p0"; patches = @@ -30,25 +28,8 @@ stdenv.mkDerivation rec { url = "mirror://gnu/bash/bash-4.0-patches/bash40-${nr}"; inherit sha256; }; - in [ - (patch "001" "06q3y3i2kp09bnjd99lxa95psdmj2haril7pxhdbz9sx9qh19dg3") - (patch "002" "1x2w3mmz1qga30zf95wmnpjsdp8cnd2ljl29mfq9r6q1cvjifla9") - (patch "003" "1n3vg6p4nc7kd896s0fp48y9f6ddf3bkpdqzgmdpgqxi243c8073") - (patch "004" "1bnja962g9isrqhrw8dzxsx7ssvc2ayk1a9vmg2dx6gai8gys0sb") - (patch "005" "0l4l62riap2kqy20789x7f6bfx361yvixds0gnh10rli4v05h1j2") - (patch "006" "1r429n2b5cs2gi5zjv1hlr8k7jplnjg3y563369z799x1x9651y7") - (patch "007" "0vb11vy8r5ayr88hrlli8xj2qcird1qg8l99nknrwnni4jg5b3am") - (patch "008" "1z6q0lq1yxwpf6nf1z39jbyycv6cfv6gwpaqmgg7pnw31z029nw7") - (patch "009" "0avyvz8rkj66x715zf1b3w2pgbwwzaj977v9pcrscjksc50c4iq0") - (patch "010" "05j8xq2s1wnii1za1s6nglzga9xp7q1dmcs1bqqrlggz8mmnyhgj") - (patch "011" "1m2lhfhy6bl3j88qi9kcn6n1qb439n8pmhl4cqsmi2g8xwli9j7z") - (patch "012" "1ww327ga4s7607jgr0xd6nh8bg4xgf2vk63p2yy9b1iaq7lxdi5j") - (patch "013" "0fjc3qj4q6q2zfq1qmiarp6s4hhbh80q47xwws0mvgpks7wwl33n") - (patch "014" "16n3l7627n8b1p9s9ss9fcj7nbn1s6yndwmlh3v751knj73c9v8k") - (patch "015" "0548fm4vd3sv3y4g3csysm1mm7jk5hvyfwglw1c0pj2lvyzf583v") - (patch "016" "06fmf6jmgzl0x1vd7pkyi90sa1wjywkd42gi1phqmrwgj9p96flg") - (patch "017" "08gh63spac39z90n1d8gpx571x7n4bwzp2yqm3ik9c1rcgz2mvib") - ]; + in + import ./bash-patches.nix patch; # Note: Bison is needed because the patches above modify parse.y. buildInputs = [bison] @@ -57,6 +38,18 @@ stdenv.mkDerivation rec { configureFlags = "--with-installed-readline"; + postInstall = '' + # Add an `sh' -> `bash' symlink. + ln -s bash "$out/bin/sh" + + # Install the completion examples. + ensureDir "$out/etc" + cp -v "examples/complete/bash_completion" "$out/etc" + + ensureDir "$out/etc/bash_completion.d" + cp -v "examples/complete/complete.gnu-longopt" "$out/etc/bash_completion.d" + ''; + meta = { homepage = http://www.gnu.org/software/bash/; description = @@ -75,5 +68,7 @@ stdenv.mkDerivation rec { ''; license = "GPLv3+"; + + maintainers = [ stdenv.lib.maintainers.ludo ]; }; } diff --git a/pkgs/shells/bash/update-patch-set.sh b/pkgs/shells/bash/update-patch-set.sh new file mode 100644 index 00000000000..ded684571b0 --- /dev/null +++ b/pkgs/shells/bash/update-patch-set.sh @@ -0,0 +1,47 @@ +#!/bin/sh + +# Update patch set for GNU Bash or Readline. + +if [ $# -ne 2 ] +then + echo "Usage: $(basename $0) PROJECT VERSION" + echo "" + echo "Update the patch set for PROJECT (one of \`bash' or \`readline') for" + echo "the given version (e.g., \`4.0'). Produce \`PROJECT-patches.nix'." + exit 1 +fi + +PROJECT="$1" +VERSION="$2" +VERSION_CONDENSED="$(echo $VERSION | sed -es/\\.//g)" + +GPG="$(if $(type -P gpg2 > /dev/null); then echo gpg2; else echo gpg; fi)" +PATCH_LIST="$PROJECT-patches.nix" + +set -e + +start=1 +end=100 # must be > 99 for correct padding + +rm -vf "$PATCH_LIST" + +( echo "# Automatically generated by \`$(basename $0)'; do not edit." ; \ + echo "" ; \ + echo "patch: [" ) \ +>> "$PATCH_LIST" + +for i in `seq -w $start $end` +do + wget ftp.gnu.org/gnu/$PROJECT/$PROJECT-$VERSION-patches/$PROJECT$VERSION_CONDENSED-$i || break + wget ftp.gnu.org/gnu/$PROJECT/$PROJECT-$VERSION-patches/$PROJECT$VERSION_CONDENSED-$i.sig + "$GPG" --verify $PROJECT$VERSION_CONDENSED-$i.sig + echo "(patch \"$i\" \"$(nix-hash --flat --type sha256 --base32 $PROJECT$VERSION_CONDENSED-$i)\")" \ + >> "$PATCH_LIST" + + rm -f $PROJECT$VERSION_CONDENSED-$i{,.sig} +done + +echo "]" >> "$PATCH_LIST" + +echo "Got $(expr $i - 1) patches." +echo "Patch list has been written to \`$PATCH_LIST'." diff --git a/pkgs/stdenv/default.nix b/pkgs/stdenv/default.nix index 7f44037c701..ed8f0e39f5f 100644 --- a/pkgs/stdenv/default.nix +++ b/pkgs/stdenv/default.nix @@ -54,6 +54,7 @@ rec { stdenv = if stdenvType == "i686-linux" then stdenvLinux else if stdenvType == "x86_64-linux" then stdenvLinux else + if stdenvType == "armv5tel-linux" then stdenvLinux else if stdenvType == "powerpc-linux" then /* stdenvLinux */ stdenvNative else if stdenvType == "i686-mingw" then stdenvMinGW else if stdenvType == "i686-darwin" then stdenvNix else diff --git a/pkgs/stdenv/generic/default.nix b/pkgs/stdenv/generic/default.nix index 6513c9be7e7..de525d479f9 100644 --- a/pkgs/stdenv/generic/default.nix +++ b/pkgs/stdenv/generic/default.nix @@ -71,7 +71,8 @@ let isDarwin = result.system == "i686-darwin" || result.system == "powerpc-darwin"; isLinux = result.system == "i686-linux" || result.system == "x86_64-linux" - || result.system == "powerpc-linux"; + || result.system == "powerpc-linux" + || result.system == "armv5tel-linux"; isi686 = result.system == "i686-linux" || result.system == "i686-darwin" || result.system == "i686-freebsd" diff --git a/pkgs/stdenv/linux/bootstrap/armv5tel/default.nix b/pkgs/stdenv/linux/bootstrap/armv5tel/default.nix new file mode 100644 index 00000000000..4369777d18d --- /dev/null +++ b/pkgs/stdenv/linux/bootstrap/armv5tel/default.nix @@ -0,0 +1,13 @@ +{ + sh = ./sh; + bzip2 = ./bzip2; + mkdir = ./mkdir; + cpio = ./cpio; + ln = ./ln; + curl = ./curl.bz2; + + bootstrapTools = { + url = "http://vicerveza.homeunix.net/~viric/tmp/bootstrap-tools-armv5tel-linux.cpio.bz2"; + sha256 = "0b7mrcl7naj1xpqx1qnlmd825dxzikzhxir3mw4pr3dy28n0b2ka"; + }; +} diff --git a/pkgs/stdenv/linux/default.nix b/pkgs/stdenv/linux/default.nix index b74258120b3..05f92825733 100644 --- a/pkgs/stdenv/linux/default.nix +++ b/pkgs/stdenv/linux/default.nix @@ -13,6 +13,7 @@ rec { if system == "i686-linux" then import ./bootstrap/i686 else if system == "x86_64-linux" then import ./bootstrap/x86_64 else if system == "powerpc-linux" then import ./bootstrap/powerpc + else if system == "armv5tel-linux" then import ./bootstrap/armv5tel else abort "unsupported platform for the pure Linux stdenv"; @@ -50,7 +51,10 @@ rec { builder = bootstrapFiles.sh; - args = [ ./scripts/unpack-bootstrap-tools.sh ]; + args = if (system == "armv5tel-linux") then + ([ ./scripts/unpack-bootstrap-tools-arm.sh ]) + else + ([ ./scripts/unpack-bootstrap-tools.sh ]); inherit (bootstrapFiles) bzip2 mkdir curl cpio; @@ -120,12 +124,12 @@ rec { # A helper function to call gcc-wrapper. wrapGCC = - {gcc ? bootstrapTools, libc, binutils, shell ? "", name ? "bootstrap-gcc"}: + {gcc ? bootstrapTools, libc, binutils, coreutils, shell ? "", name ? "bootstrap-gcc-wrapper"}: import ../../build-support/gcc-wrapper { nativeTools = false; nativeLibc = false; - inherit gcc binutils libc shell name; + inherit gcc binutils coreutils libc shell name; stdenv = stdenvLinuxBoot0; }; @@ -134,7 +138,8 @@ rec { # of bootstrap tools only, and a minimal Glibc to keep the GCC # configure script happy. stdenvLinuxBoot1 = stdenvBootFun { - gcc = wrapGCC {libc = bootstrapGlibc; binutils = bootstrapTools;}; + gcc = wrapGCC {libc = bootstrapGlibc; binutils = bootstrapTools; + coreutils = bootstrapTools; }; inherit fetchurl; }; @@ -156,7 +161,8 @@ rec { # this one uses the Glibc built in step 3. It still uses # the rest of the bootstrap tools, including GCC. stdenvLinuxBoot2 = removeAttrs (stdenvBootFun { - gcc = wrapGCC {binutils = bootstrapTools; libc = stdenvLinuxGlibc;}; + gcc = wrapGCC {binutils = bootstrapTools; coreutils = bootstrapTools; + libc = stdenvLinuxGlibc;}; extraAttrs = {glibc = stdenvLinuxGlibc;}; inherit fetchurl; }) ["gcc" "binutils"]; @@ -176,6 +182,7 @@ rec { stdenvLinuxBoot3 = stdenvBootFun { gcc = wrapGCC rec { inherit (stdenvLinuxBoot2Pkgs) binutils; + coreutils = bootstrapTools; libc = stdenvLinuxGlibc; gcc = stdenvLinuxBoot2Pkgs.gcc.gcc; name = ""; @@ -210,6 +217,7 @@ rec { gcc = wrapGCC rec { inherit (stdenvLinuxBoot2Pkgs) binutils; + inherit (stdenvLinuxBoot3Pkgs) coreutils; libc = stdenvLinuxGlibc; gcc = stdenvLinuxBoot2Pkgs.gcc.gcc; shell = stdenvLinuxBoot3Pkgs.bash + "/bin/bash"; diff --git a/pkgs/stdenv/linux/make-bootstrap-tools.nix b/pkgs/stdenv/linux/make-bootstrap-tools.nix index de8a25c6f64..0a19adbdbb4 100644 --- a/pkgs/stdenv/linux/make-bootstrap-tools.nix +++ b/pkgs/stdenv/linux/make-bootstrap-tools.nix @@ -10,20 +10,26 @@ rec { aclSupport = false; }); + gccLinkStatic = wrapGCCWith (import ../../build-support/gcc-wrapper) uclibc + stdenv.gcc.gcc; + stdenvLinkStatic = overrideGCC stdenv gccLinkStatic; - curlDiet = import ../../tools/networking/curl { + curlStatic = import ../../tools/networking/curl { + stdenv = stdenvLinkStatic; inherit fetchurl; - stdenv = useDietLibC stdenv; zlibSupport = false; sslSupport = false; + linkStatic = true; }; - bzip2Diet = import ../../tools/compression/bzip2 { + bzip2Static = import ../../tools/compression/bzip2 { + stdenv = stdenvLinkStatic; inherit fetchurl; - stdenv = useDietLibC stdenv; + linkStatic = true; }; + #gccNoShared = wrapGCC ( gcc.gcc.override { enableShared = false; } ); build = @@ -33,6 +39,7 @@ rec { buildInputs = [nukeReferences cpio]; buildCommand = '' + set -x ensureDir $out/bin $out/lib $out/libexec # Copy what we need of Glibc. @@ -132,8 +139,8 @@ rec { cp ${klibc}/lib/klibc/bin.static/cpio $out/in-nixpkgs cp ${klibc}/lib/klibc/bin.static/mkdir $out/in-nixpkgs cp ${klibc}/lib/klibc/bin.static/ln $out/in-nixpkgs - cp ${curlDiet}/bin/curl $out/in-nixpkgs - cp ${bzip2Diet}/bin/bzip2 $out/in-nixpkgs + cp ${curlStatic}/bin/curl $out/in-nixpkgs + cp ${bzip2Static}/bin/bzip2 $out/in-nixpkgs chmod u+w $out/in-nixpkgs/* strip $out/in-nixpkgs/* nuke-refs $out/in-nixpkgs/* diff --git a/pkgs/stdenv/linux/scripts/unpack-bootstrap-tools-arm.sh b/pkgs/stdenv/linux/scripts/unpack-bootstrap-tools-arm.sh new file mode 100644 index 00000000000..0f4ad24f0cb --- /dev/null +++ b/pkgs/stdenv/linux/scripts/unpack-bootstrap-tools-arm.sh @@ -0,0 +1,48 @@ +set -e + +# Unpack the bootstrap tools tarball. +echo Unpacking the bootstrap tools... +$mkdir $out +$bzip2 -d < $tarball | (cd $out && $cpio -V -i) + +# Set the ELF interpreter / RPATH in the bootstrap binaries. +echo Patching the bootstrap tools... + +# On x86_64, ld-linux-x86-64.so.2 barfs on patchelf'ed programs. So +# use a copy of patchelf. +LD_LIBRARY_PATH=$out/lib $out/lib/ld-linux*.so.? $out/bin/cp $out/bin/patchelf . + +for i in $out/bin/* $out/libexec/gcc/*/*/*; do + echo patching $i + if ! test -L $i; then + LD_LIBRARY_PATH=$out/lib $out/lib/ld-linux*.so.? \ + $out/bin/patchelf --set-interpreter $out/lib/ld-linux*.so.? --set-rpath $out/lib --force-rpath $i + LD_LIBRARY_PATH=$out/lib $out/lib/ld-linux*.so.? \ + $out/bin/patchelf --set-interpreter $out/lib/ld-linux*.so.? --set-rpath $out/lib --force-rpath $i + fi +done +for i in $out/lib/librt* ; do + echo patching $i + if ! test -L $i; then + LD_LIBRARY_PATH=$out/lib $out/lib/ld-linux*.so.? \ + $out/bin/patchelf --set-interpreter $out/lib/ld-linux*.so.? --set-rpath $out/lib --force-rpath $i + LD_LIBRARY_PATH=$out/lib $out/lib/ld-linux*.so.? \ + $out/bin/patchelf --set-interpreter $out/lib/ld-linux*.so.? --set-rpath $out/lib --force-rpath $i + fi +done + +# Fix the libc linker script. +export PATH=$out/bin +cat $out/lib/libc.so | sed "s|/nix/store/e*-[^/]*/|$out/|g" > $out/lib/libc.so.tmp +mv $out/lib/libc.so.tmp $out/lib/libc.so +cat $out/lib/libpthread.so | sed "s|/nix/store/e*-[^/]*/|$out/|g" > $out/lib/libpthread.so.tmp +mv $out/lib/libpthread.so.tmp $out/lib/libpthread.so + +# Provide some additional symlinks. +ln -s bash $out/bin/sh + +ln -s bzip2 $out/bin/bunzip2 + +# fetchurl needs curl. +bzip2 -d < $curl > $out/bin/curl +chmod +x $out/bin/curl diff --git a/pkgs/stdenv/linux/scripts/unpack-bootstrap-tools.sh b/pkgs/stdenv/linux/scripts/unpack-bootstrap-tools.sh index c1fa8582ed8..0f4ad24f0cb 100644 --- a/pkgs/stdenv/linux/scripts/unpack-bootstrap-tools.sh +++ b/pkgs/stdenv/linux/scripts/unpack-bootstrap-tools.sh @@ -10,13 +10,24 @@ echo Patching the bootstrap tools... # On x86_64, ld-linux-x86-64.so.2 barfs on patchelf'ed programs. So # use a copy of patchelf. -LD_LIBRARY_PATH=$out/lib $out/lib/ld-linux*.so.2 $out/bin/cp $out/bin/patchelf . +LD_LIBRARY_PATH=$out/lib $out/lib/ld-linux*.so.? $out/bin/cp $out/bin/patchelf . for i in $out/bin/* $out/libexec/gcc/*/*/*; do echo patching $i if ! test -L $i; then - LD_LIBRARY_PATH=$out/lib $out/lib/ld-linux*.so.2 \ - ./patchelf --set-interpreter $out/lib/ld-linux*.so.2 --set-rpath $out/lib --force-rpath $i + LD_LIBRARY_PATH=$out/lib $out/lib/ld-linux*.so.? \ + $out/bin/patchelf --set-interpreter $out/lib/ld-linux*.so.? --set-rpath $out/lib --force-rpath $i + LD_LIBRARY_PATH=$out/lib $out/lib/ld-linux*.so.? \ + $out/bin/patchelf --set-interpreter $out/lib/ld-linux*.so.? --set-rpath $out/lib --force-rpath $i + fi +done +for i in $out/lib/librt* ; do + echo patching $i + if ! test -L $i; then + LD_LIBRARY_PATH=$out/lib $out/lib/ld-linux*.so.? \ + $out/bin/patchelf --set-interpreter $out/lib/ld-linux*.so.? --set-rpath $out/lib --force-rpath $i + LD_LIBRARY_PATH=$out/lib $out/lib/ld-linux*.so.? \ + $out/bin/patchelf --set-interpreter $out/lib/ld-linux*.so.? --set-rpath $out/lib --force-rpath $i fi done @@ -24,6 +35,8 @@ done export PATH=$out/bin cat $out/lib/libc.so | sed "s|/nix/store/e*-[^/]*/|$out/|g" > $out/lib/libc.so.tmp mv $out/lib/libc.so.tmp $out/lib/libc.so +cat $out/lib/libpthread.so | sed "s|/nix/store/e*-[^/]*/|$out/|g" > $out/lib/libpthread.so.tmp +mv $out/lib/libpthread.so.tmp $out/lib/libpthread.so # Provide some additional symlinks. ln -s bash $out/bin/sh diff --git a/pkgs/tools/compression/bzip2/default.nix b/pkgs/tools/compression/bzip2/default.nix index ddc31de6196..0523067cbad 100644 --- a/pkgs/tools/compression/bzip2/default.nix +++ b/pkgs/tools/compression/bzip2/default.nix @@ -1,4 +1,4 @@ -{stdenv, fetchurl}: +{stdenv, fetchurl, linkStatic ? false}: stdenv.mkDerivation { name = "bzip2-1.0.5"; @@ -11,7 +11,11 @@ stdenv.mkDerivation { }; sharedLibrary = - !stdenv.isDarwin && !(stdenv ? isDietLibC) && !(stdenv ? isStatic) && stdenv.system != "i686-cygwin"; + !stdenv.isDarwin && !(stdenv ? isDietLibC) && !(stdenv ? isStatic) && stdenv.system != "i686-cygwin" && !linkStatic; + + makeFlags = if linkStatic then "LDFLAGS=-static" else ""; + + inherit linkStatic; meta = { homepage = http://www.bzip.org; diff --git a/pkgs/tools/compression/gzip/default.nix b/pkgs/tools/compression/gzip/default.nix index 0a2afd05372..7a25b69c013 100644 --- a/pkgs/tools/compression/gzip/default.nix +++ b/pkgs/tools/compression/gzip/default.nix @@ -1,17 +1,35 @@ {stdenv, fetchurl}: -stdenv.mkDerivation { - name = "gzip-1.3.12"; - +stdenv.mkDerivation rec { + name = "gzip-1.3.13"; + src = fetchurl { - url = http://ftp.gnu.org/gnu/gzip/gzip-1.3.12.tar.gz; - sha256 = "1bw7sm68xjlnlzgcx66hnw80ac1qqyvhw0vw27zilgbzbzh5nmiz"; + url = "mirror://gnu/gzip/${name}.tar.gz"; + sha256 = "18vwa7x0b1sql9bs2d15n94fx3him1m6xpnwsfz52djjbjgzy1hx"; }; + patches = [ ./getopt.patch ]; + + doCheck = true; + meta = { - homepage = http://www.gzip.org/; - description = "The gzip compression program"; + homepage = http://www.gnu.org/software/gzip/; + description = "Gzip, the GNU zip compression program"; + + longDescription = + ''gzip (GNU zip) is a popular data compression program written by + Jean-loup Gailly for the GNU project. Mark Adler wrote the + decompression part. + + We developed this program as a replacement for compress because of + the Unisys and IBM patents covering the LZW algorithm used by + compress. These patents made it impossible for us to use compress, + and we needed a replacement. The superior compression ratio of gzip + is just a bonus. + ''; + + license = "GPLv3+"; + + maintainers = [ stdenv.lib.maintainers.ludo ]; }; - - patches = [./gnulib-futimens.patch]; } diff --git a/pkgs/tools/compression/gzip/getopt.patch b/pkgs/tools/compression/gzip/getopt.patch new file mode 100644 index 00000000000..e61dd977810 --- /dev/null +++ b/pkgs/tools/compression/gzip/getopt.patch @@ -0,0 +1,54 @@ +See http://lists.gnu.org/archive/html/bug-gnulib/2009-10/msg00089.html . + +From dd0ebefe4fe761f6f422a400430db53c64dbffd7 Mon Sep 17 00:00:00 2001 +From: Eric Blake +Date: Tue, 6 Oct 2009 20:44:13 -0600 +Subject: [PATCH] getopt: fix compilation on darwin +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +* lib/getopt.in.h (includes): Leave breadcrumbs during system +include. +* lib/unistd.in.h (getopt): Use them to avoid recursive include. +Reported by Ludovic Courtès. + +Signed-off-by: Eric Blake +--- + ChangeLog | 5 +++++ + lib/getopt.in.h | 6 +++++- + lib/unistd.in.h | 2 +- + 3 files changed, 11 insertions(+), 2 deletions(-) + +diff --git a/lib/getopt.in.h b/lib/getopt.in.h +index 9de467a..7377f3c 100644 +--- a/lib/getopt.in.h ++++ b/lib/getopt.in.h +@@ -22,9 +22,13 @@ + @PRAGMA_SYSTEM_HEADER@ + #endif + +-/* The include_next requires a split double-inclusion guard. */ ++/* The include_next requires a split double-inclusion guard. We must ++ also inform the replacement unistd.h to not recursively use ++ ; our definitions will be present soon enough. */ + #if @HAVE_GETOPT_H@ ++# define _GL_SYSTEM_GETOPT + # @INCLUDE_NEXT@ @NEXT_GETOPT_H@ ++# undef _GL_SYSTEM_GETOPT + #endif + + #ifndef _GL_GETOPT_H +diff --git a/lib/unistd.in.h b/lib/unistd.in.h +index 38e2e13..b6ea889 100644 +--- a/lib/unistd.in.h ++++ b/lib/unistd.in.h +@@ -49,7 +49,7 @@ + #endif + + /* Get getopt(), optarg, optind, opterr, optopt. */ +-#if @GNULIB_UNISTD_H_GETOPT@ ++#if @GNULIB_UNISTD_H_GETOPT@ && !defined _GL_SYSTEM_GETOPT + # include + #endif + diff --git a/pkgs/tools/compression/gzip/gnulib-futimens.patch b/pkgs/tools/compression/gzip/gnulib-futimens.patch index 5804bf27ff3..e69de29bb2d 100644 --- a/pkgs/tools/compression/gzip/gnulib-futimens.patch +++ b/pkgs/tools/compression/gzip/gnulib-futimens.patch @@ -1,42 +0,0 @@ -now hat glibc-2.6 declares futimens. -http://lists.gnu.org/archive/html/bug-gnulib/2007-05/msg00089.html - -diff -ru cpio-2.7.orig/lib/utimens.c cpio-2.7/lib/utimens.c ---- cpio-2.7.orig/lib/utimens.c 2007-05-20 21:23:57.000000000 +0900 -+++ cpio-2.7/lib/utimens.c 2007-05-21 08:40:22.000000000 +0900 -@@ -73,7 +73,7 @@ - Return 0 on success, -1 (setting errno) on failure. */ - - int --futimens (int fd ATTRIBUTE_UNUSED, -+gl_futimens (int fd ATTRIBUTE_UNUSED, - char const *file, struct timespec const timespec[2]) - { - /* There's currently no interface to set file timestamps with -@@ -166,5 +166,5 @@ - int - utimens (char const *file, struct timespec const timespec[2]) - { -- return futimens (-1, file, timespec); -+ return gl_futimens (-1, file, timespec); - } -diff -ru cpio-2.7.orig/lib/utimens.h cpio-2.7/lib/utimens.h ---- cpio-2.7.orig/lib/utimens.h 2007-05-20 21:23:57.000000000 +0900 -+++ cpio-2.7/lib/utimens.h 2007-05-21 08:39:57.000000000 +0900 -@@ -1,3 +1,3 @@ - #include "timespec.h" --int futimens (int, char const *, struct timespec const [2]); -+int gl_futimens (int, char const *, struct timespec const [2]); - int utimens (char const *, struct timespec const [2]); -diff -ur gzip-1.3.12.orig/gzip.c gzip-1.3.12/gzip.c ---- gzip-1.3.12.orig/gzip.c 2007-05-21 09:12:46.000000000 +0900 -+++ gzip-1.3.12/gzip.c 2007-05-21 09:13:14.000000000 +0900 -@@ -1637,7 +1637,7 @@ - } - } - -- if (futimens (ofd, ofname, timespec) != 0) -+ if (gl_futimens (ofd, ofname, timespec) != 0) - { - int e = errno; - WARN ((stderr, "%s: ", program_name)); diff --git a/pkgs/tools/misc/coreutils/7.5.nix b/pkgs/tools/misc/coreutils/7.5.nix new file mode 100644 index 00000000000..90223c35483 --- /dev/null +++ b/pkgs/tools/misc/coreutils/7.5.nix @@ -0,0 +1,28 @@ +{stdenv, fetchurl, aclSupport ? false, acl}: + +stdenv.mkDerivation rec { + name = "coreutils-7.5"; + + src = fetchurl { + url = "mirror://gnu/coreutils/${name}.tar.gz"; + sha256 = "1hf333y85fm0q7f1apx2zjjhivwj620nc8kcifdcm0sg8fwlj7rl"; + }; + + buildInputs = stdenv.lib.optional aclSupport acl; + + meta = { + homepage = http://www.gnu.org/software/coreutils/; + description = "The basic file, shell and text manipulation utilities of the GNU operating system"; + + longDescription = '' + The GNU Core Utilities are the basic file, shell and text + manipulation utilities of the GNU operating system. These are + the core utilities which are expected to exist on every + operating system. + ''; + + license = "GPLv3+"; + + maintainers = [ stdenv.lib.maintainers.ludo ]; + }; +} diff --git a/pkgs/tools/misc/coreutils/default.nix b/pkgs/tools/misc/coreutils/default.nix index 5cff1d5712e..d1cccfa7196 100644 --- a/pkgs/tools/misc/coreutils/default.nix +++ b/pkgs/tools/misc/coreutils/default.nix @@ -1,15 +1,15 @@ {stdenv, fetchurl, aclSupport ? false, acl}: stdenv.mkDerivation rec { - name = "coreutils-7.2"; - + name = "coreutils-7.6"; + src = fetchurl { url = "mirror://gnu/coreutils/${name}.tar.gz"; - sha256 = "1cpx66kwcg5w78by8i27wb24j0flz2ivv9fqmd4av8z5jbnbyxyx"; + sha256 = "1m153jmnrg9v4x6qiw7azd3cjms13s32yihbzb7zi9bw8a5zx6qx"; }; buildInputs = stdenv.lib.optional aclSupport acl; - + meta = { homepage = http://www.gnu.org/software/coreutils/; description = "The basic file, shell and text manipulation utilities of the GNU operating system"; @@ -22,5 +22,7 @@ stdenv.mkDerivation rec { ''; license = "GPLv3+"; + + maintainers = [ stdenv.lib.maintainers.ludo ]; }; } diff --git a/pkgs/tools/networking/curl/default.nix b/pkgs/tools/networking/curl/default.nix index a29b8de1987..4a5fe228b22 100644 --- a/pkgs/tools/networking/curl/default.nix +++ b/pkgs/tools/networking/curl/default.nix @@ -1,4 +1,4 @@ -{stdenv, fetchurl, zlibSupport ? false, zlib ? null, sslSupport ? false, openssl ? null}: +{stdenv, fetchurl, zlibSupport ? false, zlib ? null, sslSupport ? false, openssl ? null, linkStatic ? false}: assert zlibSupport -> zlib != null; assert sslSupport -> openssl != null; @@ -20,12 +20,20 @@ stdenv.mkDerivation rec { configureFlags = '' ${if sslSupport then "--with-ssl=${openssl}" else "--without-ssl"} + ${if linkStatic then "--enable-static --disable-shared" else ""} ''; + + dontDisableStatic = if linkStatic then true else false; CFLAGS = if stdenv ? isDietLibC then "-DHAVE_INET_NTOA_R_2_ARGS=1" else ""; + LDFLAGS = if linkStatic then "-static" else ""; CXX = "g++"; CXXCPP = "g++ -E"; + # libtool hack to get a static binary. Notice that to 'configure' I passed + # other LDFLAGS, because it doesn't use libtool for linking in the tests. + makeFlags = if linkStatic then "LDFLAGS=-all-static" else ""; + passthru = { inherit sslSupport openssl; }; diff --git a/pkgs/tools/networking/wget/default.nix b/pkgs/tools/networking/wget/default.nix index a4618a53452..1e3171da00b 100644 --- a/pkgs/tools/networking/wget/default.nix +++ b/pkgs/tools/networking/wget/default.nix @@ -1,17 +1,46 @@ -{stdenv, fetchurl, gettext, openssl ? null}: +{ stdenv, fetchurl, gettext, perl, gnutls ? null }: stdenv.mkDerivation rec { - name = "wget-1.11.4"; - + name = "wget-1.12"; + src = fetchurl { url = "mirror://gnu/wget/${name}.tar.bz2"; - sha256 = "1yr7w182n7lvkajvq07wnw65sw2vmxjkc3611kpc728vhvi54zwb"; + sha256 = "16msgly5xn0qj6ngsw34q9j7ag8jkci6020w21d30jgqw8wdj8y8"; }; - buildInputs = [gettext openssl]; + patches = [ ./gnutls-support.patch ]; + + preConfigure = + '' for i in "doc/texi2pod.pl" "tests/run-px" "util/rmold.pl" + do + sed -i "$i" -e 's|/usr/bin.*perl|${perl}/bin/perl|g' + done + ''; + + buildInputs = [ gettext perl ] + ++ stdenv.lib.optional (gnutls != null) gnutls; + + configureFlags = + if gnutls != null + then "--with-ssl=gnutls" + else ""; + + doCheck = true; meta = { - description = "A console downloading program. Has some features for mirroring sites."; - homepage = http://www.gnu.org/software/wget; + description = "GNU Wget, a tool for retrieving files using HTTP, HTTPS, and FTP"; + + longDescription = + '' GNU Wget is a free software package for retrieving files using HTTP, + HTTPS and FTP, the most widely-used Internet protocols. It is a + non-interactive commandline tool, so it may easily be called from + scripts, cron jobs, terminals without X-Windows support, etc. + ''; + + license = "GPLv3+"; + + homepage = http://www.gnu.org/software/wget/; + + maintainers = [ stdenv.lib.maintainers.ludo ]; }; } diff --git a/pkgs/tools/networking/wget/gnutls-support.patch b/pkgs/tools/networking/wget/gnutls-support.patch new file mode 100644 index 00000000000..fa0c5cc06c0 --- /dev/null +++ b/pkgs/tools/networking/wget/gnutls-support.patch @@ -0,0 +1,16 @@ +This patch fixes GnuTLS support: + + http.o: In function `gethttp': + http.c:(.text+0x26c6): undefined reference to `ssl_connect_wget' + +--- wget-1.12/src/http.c 2009-09-22 05:02:18.000000000 +0200 ++++ wget-1.12/src/http.c 2009-10-03 17:24:46.000000000 +0200 +@@ -1762,7 +1762,7 @@ gethttp (struct url *u, struct http_stat + + if (conn->scheme == SCHEME_HTTPS) + { +- if (!ssl_connect_wget (sock)) ++ if (!ssl_connect (sock)) + { + fd_close (sock); + return CONSSLERR; diff --git a/pkgs/tools/text/gawk/default.nix b/pkgs/tools/text/gawk/default.nix index 10dd08214af..138b4e01f78 100644 --- a/pkgs/tools/text/gawk/default.nix +++ b/pkgs/tools/text/gawk/default.nix @@ -1,15 +1,35 @@ {stdenv, fetchurl}: -stdenv.mkDerivation { - name = "gawk-3.1.6"; - +stdenv.mkDerivation rec { + name = "gawk-3.1.7"; + src = fetchurl { - url = mirror://gnu/gawk/gawk-3.1.6.tar.bz2; - sha256 = "0v6ba4hxfiiy3bny5japd3zmzxlh8vdkmswk96yngd6i1dddsgsi"; + url = "mirror://gnu/gawk/${name}.tar.bz2"; + sha256 = "0wfyiqc28cxb5wjbdph4y33h1fdf56nj6cm7as546niwjsw7cazi"; }; + doCheck = true; + meta = { homepage = http://www.gnu.org/software/gawk/; - description = "GNU implementation of the AWK programming language"; + description = "GNU implementation of the Awk programming language"; + + longDescription = '' + Many computer users need to manipulate text files: extract and then + operate on data from parts of certain lines while discarding the rest, + make changes in various text files wherever certain patterns appear, + and so on. To write a program to do these things in a language such as + C or Pascal is a time-consuming inconvenience that may take many lines + of code. The job is easy with awk, especially the GNU implementation: + Gawk. + + The awk utility interprets a special-purpose programming language that + makes it possible to handle many data-reformatting jobs with just a few + lines of code. + ''; + + license = "GPLv3+"; + + maintainers = [ stdenv.lib.maintainers.ludo ]; }; } diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index f27dfab7434..18ec7f4f189 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -321,7 +321,7 @@ let }; makeInitrd = {contents}: import ../build-support/kernel/make-initrd.nix { - inherit stdenv perl cpio contents; + inherit stdenv perl cpio contents uboot; }; makeSetupHook = script: runCommand "hook" {} '' @@ -409,6 +409,23 @@ let ''; + platformPC = assert system == "i686-linux" || system == "x86_64-linux"; { + name = "pc"; + uboot = null; + }; + + platformSheevaplug = assert system == "armv5tel-linux"; { + name = "sheevaplug"; + inherit uboot; + }; + + platformVersatileARM = assert system == "armv5tel-linux"; { + name = "versatileARM"; + uboot = null; + }; + + platform = platformPC; + ### TOOLS darwinArchUtility = import ../os-specific/darwin/arch { @@ -589,14 +606,22 @@ let inherit fetchurl stdenv ppl; }; - coreutils = useFromStdenv "coreutils" - (makeOverridable (if stdenv ? isDietLibC + coreutils75_real = makeOverridable (import ../tools/misc/coreutils/7.5.nix) { + inherit fetchurl stdenv acl; + aclSupport = stdenv.isLinux; + }; + + coreutils_real = makeOverridable (if stdenv ? isDietLibC then import ../tools/misc/coreutils-5 else import ../tools/misc/coreutils) { inherit fetchurl stdenv acl; aclSupport = stdenv.isLinux; - }); + }; + + coreutils = useFromStdenv "coreutils" + (if system == "armv5tel-linux" then coreutils75_real + else coreutils_real); cpio = import ../tools/archivers/cpio { inherit fetchurl stdenv; @@ -1096,7 +1121,7 @@ let }; mldonkey = import ../applications/networking/p2p/mldonkey { - inherit fetchurl stdenv ocaml zlib ncurses; + inherit fetchurl stdenv ocaml zlib ncurses gd libpng; }; monit = builderDefsPackage ../tools/system/monit { @@ -1682,7 +1707,7 @@ let }; wget = import ../tools/networking/wget { - inherit fetchurl stdenv gettext openssl; + inherit fetchurl stdenv gettext gnutls perl; }; which = import ../tools/system/which { @@ -2171,7 +2196,7 @@ let ocaml = ocaml_3_11_1; ocaml_3_08_0 = import ../development/compilers/ocaml/3.08.0.nix { - inherit fetchurl stdenv x11 ncurses; + inherit fetchurl stdenv fetchcvs x11 ncurses; }; ocaml_3_09_1 = import ../development/compilers/ocaml/3.09.1.nix { @@ -2264,7 +2289,7 @@ let nativePrefix = if stdenv ? gcc then stdenv.gcc.nativePrefix else ""; gcc = baseGCC; libc = glibc; - inherit stdenv binutils; + inherit stdenv binutils coreutils; }; wrapGCC = wrapGCCWith (import ../build-support/gcc-wrapper) glibc; @@ -3446,11 +3471,16 @@ let #installLocales = false; }; - glibc29 = import ../development/libraries/glibc-2.9 { + glibc29 = makeOverridable (import ../development/libraries/glibc-2.9) { inherit fetchurl stdenv kernelHeaders; installLocales = getPkgConfig "glibc" "locales" false; }; + eglibc = import ../development/libraries/eglibc { + inherit fetchsvn stdenv kernelHeaders; + installLocales = getPkgConfig "glibc" "locales" false; + }; + glibcLocales = makeOverridable (import ../development/libraries/glibc-2.9/locales.nix) { inherit fetchurl stdenv; }; @@ -3491,13 +3521,11 @@ let gmp = import ../development/libraries/gmp { inherit fetchurl stdenv m4; - cxx = false; }; - gmpxx = import ../development/libraries/gmp { - inherit fetchurl stdenv m4; - cxx = true; - }; + # `gmpxx' used to mean "GMP with C++ bindings". Now `gmp' has C++ bindings + # by default, so that distinction is obsolete. + gmpxx = gmp; goffice = import ../development/libraries/goffice { inherit fetchurl stdenv pkgconfig libgsf libxml2 cairo @@ -5550,13 +5578,14 @@ let }; kernel_2_6_31 = makeOverridable (import ../os-specific/linux/kernel/linux-2.6.31.nix) { - inherit fetchurl stdenv perl mktemp module_init_tools; + inherit fetchurl stdenv perl mktemp module_init_tools platform; kernelPatches = []; }; kernel_2_6_31_zen5 = makeOverridable (import ../os-specific/linux/zen-kernel/2.6.31-zen5.nix) { inherit fetchurl stdenv perl mktemp module_init_tools lib builderDefs; + inherit platform; }; kernel_2_6_31_zen5_bfs = kernel_2_6_31_zen5.override { @@ -5860,7 +5889,7 @@ let }; pam_unix2 = import ../os-specific/linux/pam_unix2 { - inherit stdenv fetchurl pam libxcrypt; + inherit stdenv fetchurl pam; }; pcmciaUtils = composedArgsAndFun (import ../os-specific/linux/pcmciautils) { @@ -5984,6 +6013,14 @@ let inherit (xlibs) libX11 xproto; };*/ + uboot = import ../misc/uboot { + inherit fetchurl stdenv unzip; + }; + + uclibc = import ../os-specific/linux/uclibc { + inherit fetchurl stdenv kernelHeaders; + }; + udev = makeOverridable (import ../os-specific/linux/udev) { inherit fetchurl stdenv gperf pkgconfig acl libusb usbutils pciutils glib; }; From 17876de2c5b763017c75cdc7527cec78765c1c56 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Llu=C3=ADs=20Batlle=20i=20Rossell?= Date: Sun, 8 Nov 2009 00:40:07 +0000 Subject: [PATCH 002/232] Updating from trunk. Many property change come, all on merge info, because those files have explicit merge info in trunk already. It is a problem in trunk, not in stdenv-updates. Every time we will update from trunk, the explcit merge info for these files will be updated. svn path=/nixpkgs/branches/stdenv-updates2/; revision=18274 --- pkgs/applications/networking/browsers/uzbl/experimental.nix | 6 +++++- pkgs/top-level/python-packages.nix | 4 ++-- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/pkgs/applications/networking/browsers/uzbl/experimental.nix b/pkgs/applications/networking/browsers/uzbl/experimental.nix index e793d4731de..7d467056db8 100644 --- a/pkgs/applications/networking/browsers/uzbl/experimental.nix +++ b/pkgs/applications/networking/browsers/uzbl/experimental.nix @@ -13,7 +13,11 @@ rec { configureFlags = []; /* doConfigure should be removed if not needed */ - phaseNames = ["addInputs" "doMakeInstall" "doWrap"]; + phaseNames = ["setVars" "addInputs" "doMakeInstall" "doWrap"]; + + setVars = a.noDepEntry '' + export NIX_LDFLAGS="$NIX_LDFLAGS -lX11" + ''; doWrap = a.makeManyWrappers "$out/bin/uzbl*" '' diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index 4ee6fec488d..2c83521c846 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -243,8 +243,8 @@ rec { name = "pysqlite-2.5.5"; src = fetchurl { - url = "http://oss.itsystementwicklung.de/download/pysqlite/2.5/2.5.5/${name}.tar.gz"; - sha256 = "0kylyjzxc4kd0z3xsvs0i63163kphfh0xcc4f0d0wyck93safz7g"; + url = "http://pysqlite.googlecode.com/files/${name}.tar.gz"; + sha256 = "ef7ca7f44893790e1a7084b10ea083770e138689406fddc7076d12d6bff4d44f"; }; # Since the `.egg' file is zipped, the `NEEDED' of the `.so' files From b78e001b52cd55d4127a4bbf5d0c315785e35e53 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Llu=C3=ADs=20Batlle=20i=20Rossell?= Date: Sun, 8 Nov 2009 00:45:09 +0000 Subject: [PATCH 003/232] Adding the binary files from stdenv that did not came with the recent 'diff | patch' I did to get the stdenv-updates changes. svn path=/nixpkgs/branches/stdenv-updates2/; revision=18275 --- pkgs/stdenv/linux/bootstrap/armv5tel/bzip2 | Bin 0 -> 124936 bytes pkgs/stdenv/linux/bootstrap/armv5tel/cpio | Bin 0 -> 20280 bytes pkgs/stdenv/linux/bootstrap/armv5tel/curl.bz2 | Bin 0 -> 151568 bytes pkgs/stdenv/linux/bootstrap/armv5tel/ln | Bin 0 -> 13728 bytes pkgs/stdenv/linux/bootstrap/armv5tel/mkdir | Bin 0 -> 15484 bytes pkgs/stdenv/linux/bootstrap/armv5tel/sh | Bin 0 -> 82672 bytes 6 files changed, 0 insertions(+), 0 deletions(-) create mode 100755 pkgs/stdenv/linux/bootstrap/armv5tel/bzip2 create mode 100755 pkgs/stdenv/linux/bootstrap/armv5tel/cpio create mode 100644 pkgs/stdenv/linux/bootstrap/armv5tel/curl.bz2 create mode 100755 pkgs/stdenv/linux/bootstrap/armv5tel/ln create mode 100755 pkgs/stdenv/linux/bootstrap/armv5tel/mkdir create mode 100755 pkgs/stdenv/linux/bootstrap/armv5tel/sh diff --git a/pkgs/stdenv/linux/bootstrap/armv5tel/bzip2 b/pkgs/stdenv/linux/bootstrap/armv5tel/bzip2 new file mode 100755 index 0000000000000000000000000000000000000000..5c9be292fe8b8aa9fc1778588dc5ed5a824b056c GIT binary patch literal 124936 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�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 literal 0 HcmV?d00001 diff --git a/pkgs/stdenv/linux/bootstrap/armv5tel/curl.bz2 b/pkgs/stdenv/linux/bootstrap/armv5tel/curl.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..1f2985bd347b0967278c5ca3046a0115c8c79c91 GIT binary patch literal 151568 zcmafa1CKB~)Aic6ZQHhO+qP}nwr$(CZC-2de)seKf$t>kWSTUYOfv0hPew?~f|F5D zlT2CjQlPLAP;Jfs@BfD*InlC@TJW~Edw1`(-Y|gw0RS8$RR_Ttff=Am6ySE(_&(PVWHg0x;S&?_OSe?YZtP?--P{v#?|JUM?f4!Zw#8?+d5gO^)04Lw@4U@>U)whCJIiTfZ%`rcdCK0b_YMH> z4FKLL)BwORqU5$JTMh2+0&CsrT|KIv_nf=u6|bXn0C!i1d77`6-ZxiYd2$DN@7&kd zm56HFbMy7=UA=kd`$WEZ-2(th*Qzd9m~(@7lW)7NBx|YO&F<}9uI%h(AAP)d_wDVi zX?r(a;|6Zy(sp^VM-?Jbz0T?F;k|WkFF3K-%i=ON+<7mwcdZ;17t5|TFL`%&XP++x z0D#2qt9|s{)_Kd`u|uWj`ug&fmn*t60K2JbyIZ9yEo@t=QZbpnS??8ajT^wl%X^Om zHM_#)-nPO-S**pbXJz-c*|Yb#?+a-9)>6)zZ|h#yyS%mb8DQDlX5TX@yWO{U;jL}$ zZ8@9Gol~dXZUHD{&fVp%Fi`;P1@FPy?rm}3?9B_8cE=b{p;(K|M%L`xl?Zg#o_lxW z-Oash)p_CZdU5x7U$9rT4A0JyHZIflzKX=BWyAW;cg>!r+jhsfTXj3F>oSK&hn@MF zu1VfhxqZ3aZg2M*!o5B%+4nw0Q4*+&>lkZuv)XVz@ycD---r4%*ym*gyr!{-4 z+UvdnUI&6tvn<)&a^3FEwFSAm=<}vp*PF6?)->L;H?&>5?Cd?w>*~wr>#e(U!#6Ad zuFp<^N>YHnO?4w5y=8!&w|l*H&l~T(E#IflxAU~sVwrsN~sDvt11w|#c58iEe4tSfy*?>;Hr3dx0*FbaK z9ph;43*dmyg11!Wa#vm79Taa{Z);Xu?lsj0-wmf_f$ys;vv2ds=SX$yyYKtld~t2v z*WL5=?pXBWF`$K9^Ztj!dvQmSls*2Y3WE=+9zEG!o2HdVUMo^($!1*n1qKw{h8 zol6^l0$9^^0+j3I1PcoQxbSH~U7iiAE&#Y#3Mfo!ZIf64(*j_rGTSP}e>VVNZ;Kc3 zLiFOb{|iRpzwsY{Jog>2{gZDs9e} zR0&X}0HR9%ZxaB3$Ra=h0FY&w!2kJ>L5whAVqpRQbAT9#5eqP4Sy(JAU;zvMTL5H~ zSFkby0)PMj0e~!)1wa-6KnB7x8L=z?GMOv`#KM#ZVPz~UBa^LcK~{bydBBvHS%g)7 zR34a2mSvgpDjPAxGTBmIft42^f`EVkkP*manV7KhvSgM_c?}lID=!lZCS=3_E6bA@ zvC6-Q{46W~%z{bzq5LgVd8;x;R(atU%CpL^DSjcZc#bEw%0qcA z0TV1ELJ$Zb0J2~KWW+LJVp&)yPnIb!CWG=)e&I=GqVitIK;>8DEr#;4EHYE^Q@mt( zEhDyqWl7#DmRH`AWqFbD5?%o>lCk8KS7v3F6)Yn!0g_iK3CTjByjUPm{!!VBmAqK7 z>_yqiURjnA6DxiZyz)>cTVYvVfwziR7OxmtEU;LNNdP0@6}-aa6|cau@RC z%hf_ibMkl-5w_mjoelFYZPDtv*Dt))WreA{{wZU$fQ1HGzUUWvnuKm?Q}0Tzqge3% z_x8NZtok1`^8U2m3dX-BlgP(kk@`BncIA{Gic;TNuHsmRRKFaFgPU>N8tl6lQfKO{ z=%)jxB=X3P3X_N4p$)e=y`g&>1ET_=;s*=8dw49hd$qi6X-b>W;y_nAfCzRTB`#!B zMGiQG07azCP4)6T!hu|X0==i}X;npahBGw<>hpKS>C zrt{d|&$_i2@V0g~#nMn^NK4{r4=y|qD6^vY3r#FhjQDd)&9Ws3Lo;C+EdNhM+{Zp{ z?Vpn3kY^9PK0n^RoaLT@$!~q{Kk1~$Yj9+7@Kt3S{xUjapLplS5P5C^;<#Ol5wRhr)(!pd(L^2;_E_z^2!W>o!t zizG~K{3tuo_fL?Qh4$!2DJ(UKi3!JU>MsFL?NI` z<0sOYGwB?jXOk!cJCgZ4a2y9F!N)m<0#BEFstfsDP(1aL@cVA*m@@;v@NJKkQXszK z(R=Ua470)sHe*=L?<*Xb17GgBmu6waXnW&oZj_f9vC+ClH+^Bf%54O?@R@Vn$k@6@ z(6~jn1`PcUR-Pi#gbCMjhiD61d$J^0XU3vo-Qbn){3t$rP4J-FG7C3yjWc~0q67Oo zK5Y^sIT6W&6i38NY#3LG5ks9%bjrjfw^lL5qlY2<>X)5g>f7~x$Y;vS$Jf*|8Px5! zMt0V|wPD_4fcNcka~#5Aq!0q7(VPxofu)oK9iTKuv~vSkj$kTV$Y2*{xfBn^YQpz@ zOOI3v>P~h<6E^6m#}{6oA#KU*MEuzY_=T9?Oz#o~-8CP{V4)NNHf|FAm8~JNL>yBo zfJ&wz0wr_*v4}Nm=JJrA*|3on|w_5 zAb;Q=3Gh#6P;@*B^?e~qtUT;r?}BKZ@G#9Rzgb5Ab*;{z&^ac3`|PaJ$-)-K7-QSE zjp%Kx`HL@GgS(w%#eYYkdy{{CMuBK4#iych&85^a3$+M*n&5AKCUoX)CsPP+u#jLF z){&53bUCLOptu^*83-#ao^qc<+|qL*a&`H;5|jpDZWX0IBr@QGGou-h#g>4|pvu{L zV&t~DhYrsx@*PUwyaBSdaMWxvA7LdthD;w<9W}=(91z9|O3`fIKd8PWpNb8ipJanOqlLpAQiF)hMiu=(7kLa?*1iCrODqC{&`5;8ufyWXBkn&L;jI~Dtc#G zp*Y(TVDTEV83A;Ox#m=Q=1j)$@izVHwIP19!5MdV_)odt*+;Wry`lq;rf2Wd2Xhu{ zq5_cEOV`Izcr=N^U064dQn-*rYS0!3Qk=3e!Nugeo{Nj}hBB>OY&z?TZFss#e8lm9 z(qXRrU|6X! zJ=W>xIWaqXI4(UAG?BSebJF9ZmD7sRto9}&y2n!i#wy)cVzX7KfmF;!j6`Urdh9=Z zDxZ8HV6a-kBhr)dbk3^i7&%L^X0X0Ov8k!5NMNWezVGz#ooV`w5ZD3N0O8l5o%#N{WGI9tBdnx%Na;WQ`-5Ua9=)f(Nht$22fUa3260~-fMH8FYl*n9GOuS;<4 zK##PYqAuEfW_pn}Om^9zMI)O6{H4bn4p}46WX@;8H3E~o&I+?na{g$N<{_2JagWq# zpSvwg2Ag;|t~==wtG0mNbB7nQi!j+&la?TIo;>?ojUw-Ym=iRjN}g09f`AF4Mhd7P zvO|5eAZk%AfHKE?Pq$!XFlMCA>YH~=M=!&O7RU}JT zzPpl}az05>rH7xI?2Z3ylx=(!M)PIiS<>|Mq{LUF@0ESs!;>8~k@>SzyjG9Vofb%j zil%^#-{GWS2f93*Mda)Z`$wgT&^xY)Hob5tZ9e@cFQUa8&1?g{Cl?4l9CvwgL84Bj z5pz<5?Nrf)M?5yqs483><5nK(bp?!0oz)(kTyWTx?T*LK!a_Zd={eV0kD67efQAI= zt`x;moX;^(nwdf4D7kUe5Z@;(&Jpp(ZO=wbJ86JiBsJziw&p#_>-*k?qAZ2S7Z&V_ zI^~I2qNq`$M?gr+lrl%ff=p9*+X;u=u3xQP)=dMgs!7qWCTqsPE3`UbO?TKjui99O zk(-zc_tuMD+6cDUV_Ikk3m;+vF8$$nx5gUR92FHI=*$iQy~_=TV^;M+mBK)Q@>gPC zy(xx7Yq5ZSfsW@yOU~MhmTU2y;@I1oR7-wMThAFlr_9%l+;I?Ade{9l>A{=H>8Ua4 z5JO{crWU7W4A+&)idXf-pDR_a)b?kZ-_JO_CIlG-j=9R3bnWBw$8j4-bCGF%$*Zq125PlEypT@}sG1Ze&mJi$+V4nYKET zaf;+W5}!0B`&Oy)r@*x$v&)w!Y*?99oAXJqNOEdFdgEHNIK|`*F&FFoS?T)rUK~57 ziw;tKQr#jJbEL?!R#P*rFjQA63^Ah;7BTV$$MNAMeqX-ME>_-TRK<%a7G5jN!ypg1 zNwOJ2hz^)Rl9GAX!k|N2J%ibG$g}ZaynG``d&BCe+@m7u1F0Duobk0Fn?K-;*4A?- z=33MX;u6En1+LHq;r5~ghno-4PAxkd$kRD~qUY>xAEsXK@9H+ZA{*187T?yhAh+|IT4hwA1hJvbH5|G+JZ|4xRb?Bo@C~G?c1LO!=%(w5mXdD@V>T zg{K_q)lq$8tzz#1J&jO(nB-+5FKJG?xHzNp))md%yz$zQrE6xE4LSPp>9Ad#g!;)1Gn06O zMr5`yeRpF}oTKmgT)RZ0i&9eb0>J#1k-f`hf{oE0~?|NsYywx{$z+w&G6}hc7 zI9W5RNcD+2<;hwpq}h2?qGe_^i{)D|^BLbS$G`1LzZ!EPN9Xy{zx-aKOSF8_5_`y* zEP;B90?IJ6Ocis#o8~@eQm1CqTUnddRove|8f8-IPB8b3J$!r8=}GNBZSJBpNEVEKxlg0xyhpuAj zFwssxujKf{viezc6-u@WaiT>4b+#lU2cDuah2lp7-*P)kMd2omX*23sMK&fscz4Bj7gaBYIu_ z4r5JGsteSbq5-R*Q(9Wz!K(dHmzRs%Zf}0s9lxiLIc~Vgbi=OyXh+ae-1$Nz`*lC4if6eDzOL=9(BVpQZRGZ}7 z2p%+$iv*z1th$$n%}W}18T?f$b4F_o_P3(3DBRe29i8c4SDstKW^+ z=jb96v|vHl7-CSQxB{!8P^VeqlEIMlZxf7;cU^)jjIW&#`HEey|KLa08No6Ahsla{ z;K+3?JaPu#t*qGit}h7vW}x~9Lj*JKZV+EiD1KUugUvHaI1U~9&Io}QQ_B0j6K8~0 z%0RQ+E(7<1hm{V7r7sOB$Nc)#+n<~*aS6K}wwln93LWpsau8AQW;(u9@95jKMr7I9OiPMLk{_E;K3d%8uPD``Vh@N@ZrT^{>;D+NX@B_`n~ZN60~Oyn=PkzEV7kk*RbJn zzYjDXZ;ba_e1F#pfXq4OgZKj%O75EQ+Q+T@t@!MRYF_)s{FO=Nur>N8{XtUc@Opp2 zC+plpEeJTElyHOOkg`OMzis7~+_dlUt6k|+{ zpuQ@P;-{N>Ms$k=0|beAU`;bo0v3mYoe%*e#lcAF=lJw@ zU%iHky;`??u-8}D+uLoHg7=RjJuRWM!Em?@S-JpqMrkaU2#iM)CSWpJLNPH!kN`+X zBG|0Dp~6gIOOZ6?i>r(JWYH<}wRXL%+!4jR-R`;V_IB;0Y@gNb692i8HWHcTbN#ofW z7@MnoUP9BnEie297n&I>_r(0IXiM+SZN_q;4aF>hNKHeS37jx+#RSt93 zuD2}AV7SjZXW){{bh6Ei`S!e>ue$&bP3MK)@T*;Tb~*0Kv;zM1YL_duxxQYi7@Y)X z22KbV+!Jbo*(o*mrt`h^U#|I!8pI`+eGjiu&A>u}IBCK*75tNKsN(?Pq{7~9wP7E< zF%j2@g*S=h%t646VuZH3ZnVm5#btIsD;U#bTh>H+qAriNBlLkwgy_ccH>LtOA9&ADh4B+;v!QyJAixFu)T!Uh! zNl4WQTg*(F`EfxtRBO4p%HCRd>Qf%%-XcBAnEsuh;iHy{87&G1u^M79H3Gt#V>Z`| z)Zk`1i-pnDG^@B8&U&^CG+O+Tr3;5b3nS+1z@B<)l%=LraT;PXiZ^Zwpcz$*)nFYS7)?xgv|#jJ2{Bq|GliL#vydXfppt?1T}uMTOw7Duco1{w-83Dy87e7=ia{tE7m`{v zGe#4j0q74Aw<>43;;xb*?0pDFuuWZL5o4EPS~C+oOy>xRsF>*>;e5aZw zz3N|FY(cz|_(yNW-_|xyZ2qQ{O~#ZptU5O=r1lns8q~mufnqS}sP(OBEJZyt2D1X+ z)hE6uo?NWhIvbwgaImYUAbm0Qtj*MMBd#qP(zDuZ@|md^Ai3B~k+<5^6C_a^qZ2jW zdkx2v2~*ajm7rv>7|BrYT~x?cprxYH8^fK`fa(nx)Tz ziNM>oGj=m~zC&V40T)D5g0-UdoE#A!#kE8+syfR|GL4K1tc^f4aAHQAV(AfPbGP2* zEW}cLmuZw8`hZ&U1bFm9+Q0v*=hb80^m(DHQ+57*trdBe6_lMK&eSpdt6Y~s*qO*F zQ^r^Auq=YtYS|1<1L~%tbgGGis-nw9=T+JUeM9`g&rN5!%x&x4J>1Zx|m=dgAOEl7#Bx@NLU6748XD(Q1a8H7?y`I z2#c4LGDuh|6xsOYcwTQP_-YyB?(tqJUqf^8HY93fNFa(uw{ajMWS|i<5Ul9u7N@?# zrx9?CRJ>+ zT^^gy?;z}bZym^+4GrTB3V|4KMk3Wmi-c*Jl{&<60uLg~G()jXXF)g=Q~~G^t26>h zIXpvEbx#a`(y_5qrG#CYajjFg-*Ae1L!Auj#yAt>)UzX;Tlg^Uhg5^ns2TolM%T1b zhXWrQww_%fPCOI&(A*jCA&v8^=m=-&ouLstjf`3omZ{3gc`9~%W=ehi^$!*+AT|Ic zS@|6P?VtcA(7d)Z*!V48v|YQ6a}o0koO@6fkuWtA4eqd^8u$b9Jvhk%Xti3-PdajylO5WH z!x`D2D=vi^`sAs3MjdY?_sRfN2Y>)I&r@q&yv(K@UZCmcRfPIw+vLW>6}GoJZ*I`G zVtm{_o0lJl;1ili&i2K|PPZ&>r!;AzfgAds3ioC)maE6oa>`#TP$&=*vujXkQz~zz z5&|Fq)`0-pF`Sy!$`k+rd}rAF^oy^V-kStLt>ab$0%?lxBzmGWLwFtgL>tT_gJ*^7 z=syT{{P^SVNvbdaTNr!8BCg{@ndGU^&MvOLmw}fiX=G=D9prSx3H?gNQVs3R)N8D; za&Be;IJr0li!O?80wW4Rj9~*``nL*Np4y?{q;M-&1Szb%U=ps@qXrpVDq(brWRM^x z8*nOXRXDD9%u`KjH61$_RZBZ3eq$>%4%)($y|NQ3s6=^I-fT9DP+Y@bw`Y0&shdBo z9!%lGB1MFylW3IW58%XN(<|6fh6$i=lAGM>PEof|me)q-WEkM@{3^(3ZsQIju>PTh}8H_@i4>zRS*Fo{x;1vL5PHi z;qxCDnmo^Z#$p1hInQ#bjq%T&y6MbLNJw>P#`0t`f+=^yMh+}dS}>b+`MNyEEWc^X zBs&MB|JAgnHk_vE`IsZg@B4&Zbw7LSl*dd(YWwOnk4)gr{$FWip*jMp7LNG`s!NcV zrt7{X1OQ+~IVFVLKk$fhxV)N?GM#q+k!Y;#%ZtNlr#TKt?XjMu6msNyU852q}SCRAO?x<~M$<;KU`gc3FuA zG;gY_)iBebF$}w=c-K4>m=HBFX7OOAf{@3VH1qlN02Ex{gcne`tll;;)<|^ue%ZLy zF~?hLv-mYiV_bGiN^-C&>n*?97NAkf=-ldyt5e@qLgT~&B~cUhG`8>fz&u-Z$D__U z7rm?E`*#k0#Ef|{$=%Bh1!w_Xex5x)FZa?PGXosl9>P_*DqwW9-D{n5o&ebjh=2e9 z2wQrTTXb78+Ms3XEG!2g> zJBN^p^|>MZvKR8;zqeenKD}q#oFR89a&ne^muDB|6-+8O1=5Rz2dHIj;ifv=%)h-ncUt}3+Nno-IR@(j`mJx{ zN`j!y{nM>NN+7yNVU>O-7k|B!D85h@g7f8Xcwc#XPIspFn2m4x@ykBv1Rbr?vQY64 z*CRi8ZAP0k{Ies}lD=Rc%+!+IQf zZ*|4I=e^)oHeQ4$qbI(D zx;;%86XuLnG+Hg%1Gk*jpDKz;>M);pJx2(|sg8I>ul58S4@!0&+I87R!}v@VnJ7Ov z&u9T-TC}6DnwJ6Q_>f9xx>2`1c}=7mM(?-HP)iCG^Rb>S_+m*!Op)Z!dN4#A$qAua z!h;kzP$WktNK$_CaZT{P%+i-7Ym>QTq4RMrUfZluz?j8Wx~+w-F_z#p?ycvQ;K8^< zD{g)&^Du^3B#aJUPzVh(oV`iQH2jm&+MYv;<>xwb$-Y zJf{uIf1ST+3!&uMUEjX* z8omo_!0=spP<{FP(^_%&O!58>>11ZqXX80;PX`}7{P&NG9=<&BdUtVL>Qe2OPyBc} zIqqH)t6H|kxh!br2^5*%mHGSQrgvOUHd?=z-?@14rR}EwT)mS$X8f@$_VP9LS4EX^ zsZSN>M(P$srQl8_68Xbg$CFY_|5Kkq`{dI5lb7tfkx;$*z^{|?7RF5YTE67-o@X#$EPCb6%Zy6It3iIIN zsWG~e*sp50f17lqvd^>Y7x&%Fkyz8G= z)GtzKYtOh@qN&dguYc-Z9t#B!zqOQfN5WwIMLjKDXzvCo3+4}G#)N&&7#4B zANrA@U~Bn0&sp&2Cip-DmS(ynn3TyUi(t#r(%O_4p|iY$AHVgJXO=Js<8elWe_~#0 zQO$!P{5^^XiVOxxz2U;pz7rbJ0SWM#lLVPDbATRIB(LYceouT9EdI8PZ~Obr7_E$K z%u2kU&=|!(z$x{E9^3KKl46x2*)3ZpDJPkd1`ejfMTu+Y8y-$WYn? zETm8l;T3(zS-A#i!k4m`tLTku!Z)+Cn9=5D*xUL*1J=$2Ka#vAx7_~1v&#|IKLA9}1ql(tqDtE1&t+PeXUFC6ecG9A?NA>8eb+&r6 z6Fs)-vC4C2XZ2xwRIwGc9$K9W*7{KEu|2ljZKsVE|N8-8>`}YBDtGO)OVK`QJF7)e z6~)#ct9p67K6$n1lU9#C7K@d)+fLivMb)T!civSm^=N&xwa2JE61F>cwn!H1-meGS z^0@7Er1mD-&RQSu*E8GR?t*r<9-SV=Y1CpTHrcw5=h+_H&U#R1MbV?3b&4*V>D|uW ztj-oqwkYPqz3Z&AIRwkbZ|_&{#=EUIoh?cpCmtI+MdvIUb;fque_VC8 z?c@DCZ|ddc)W_W-k`}$R&UVh-t#g)MH+PMoMl;RpPNUAF9?6P&zk79h(Ai!(+smnQ zcXhVt(Mb|$&t0RKtSIWyp66PuVkMO(oQANJhQI{-hNj4Fz%a&wvkvLJQT)7vS=T8ka#-={Qp<5iEhhiN&GN)I zL4O%t&|HLXvZ;giMXU)KKhXYOyVy2-k1`ujL*0UX#YIB@wRR>>%Rj zGQ0Ic;yv6ga=5HCxqUxAP&@eCMH-bSG*Riw+s+5qIC@HJ!2RB5PmmEE7ulg3ZBF_5%-ERmQxYgd1xp{o6<9A+07guq}-)Ysv%o|qol-EPa- z5Fv-c42EUgRoo43nINFDT8>+X;(mo@aYYFBhlFWIi=!txBHjcc!54)8^1n6sL+=gZ zpi0_pyHeh#ySt?(R)A&0!0<%=_H!FjGd9AOux()jwS7Z7#rgs7*Q3@a+u0UWqdI35 z-4||Ek1aOZ7Ht%3qbg~|IwyMG&Kg_w*iO;TYG-4W8S4kEmq#mMw8m(oz3%qwJbHe9 zUUi~TFV)_yN3Hj}*6VJ;9`EWg_Bz*ny!NghwZ7rru5EX_cG}t9k+7Z7**aTq&#lMU zijDR0+7-gLTP(){xnj>6j zox%Z!@b4`r>ffcS#z_X;X7t5*WyO3yYwOK+)f`_qvO65;uH>ZQ9~kr-5i%CGFvk9I z^P_&kPz<(lwG_4q^OS%67iSLQ7yj!I)1R7<*f2F=jEM-+qa|K%(BCw6JBZ(0h5qmP z%Q9|vVqMuxzUj{Bwnn)V`JZ-dA}4wIgv?7HSqV%G%uqpqa^zbwge1`Wd(#ndV=;YU z3bh}SrD=j`ZH(>)DCLE3h@4KUoWTB|VUR69@|0oF(}Qa#1C9`Yl!>Y|kPWLqhzPJz z&>48kFWuT%IsJ!p*A#z@OB6)V1o`^!s z>up2fkE9w8ALyg!*5YFumqI2lFgqM!EK zE_2n?#8US}*fLjN8jYAZG-!>_RHk$-;)LEYR$eF2z$kUj3GF3p$?H7zWW|9P`IBQ) zC@vtb|J|{Ba~;l39&Qv9w#TmKn8v6rkRT|8&>%XCYO7Db;nlaq8Vq9|FX8UlD^ma2 zQ})J<;mn=p=3oA+;~oC#YhwV6+=Vj3S474nyW2nd{2jsI!81E-VkaQ5@|G7KRH#;% z+bniX7?}u(g>|+DVc{C2L1{r{FNDH{%ilVg*H`{2CUK%)R2WW9d=sNHDZEONjJQbw z1T2*Z-t2&C7>uN09@P6o?0K&SAGh?r4D{a_egdQGW|PU6)%m60-AeJ+(ZXxWHLawv zkqJeZ?Ffs%IiL*RoKzSA!SfxqosVOj-&mw9(r6@jczHuty1c$j#>w`h z3(XC4TgI|M_8N+5S-t6z>pBzmJU{yM$^s-sg39_>{`GS;qNzt=XDS7Ul(Kz7K{{I0 zIs@tokfMmKHpZW%`5^*oQWr#{w~4z7tQ|)_-Y%(vs|YN#dfBP`01dO4ge~N(IkUtr zgef#C47Qn?c>Im8%f!la^c2uvQZy;JBFAdGis*@1-&UZtKvGXA~6o?Mx%dgimpM*-e>b&##Kj(vtgGvgc`~q=X$N4J`woCaO~r`(Ae?)m4XJfEN&$P|u|;Ug|Js z%#yCm_lZM8cHK#yXCyIkfM#09Hf|8T+QuG4JcT5;p1pkh>4V2*(d#$`eY6_i7Qkl#8B5^R$j znIJ*ZRCKk>z%eF1c>T68TNm6iuEv%(w<{YZqzViqBX)fMio31EXy1DEo};q}1`pF> zpcue>h~tgOOfJf+f{N@Ha^!WxsE<-)Olkj(E5JRFy#eiTR|buQ&A>*puW$=|g9;mo z5Jj&CA@Q z63MQuty_VU#DnY8U1C~WK)KqYHtB#OBwU^QNU$B*fTYTDqjB{XHg#&edmQueraheGlOQ#$67-71Uh<$#9c`3pk&tIsA9co>)%alu-7E zX;I^YZSo(>ve4CnjSOyyY`^3B;@Q2{W#@vo?lmvltLxWY{5g{r!j^2n7;dt-!)YG) z!0{OB?fcQmASke%dQ~zvRVB_u%cmnqY>;fr#>Pyo@0$dFWHHbjANarzmh=%*&yLrZ z;SB+C6Bh)htY9<17}MRkr9;wk_dEsdvCB#l0gwR_p*bGCFAF{Bxj!r8_E1B|PQ^8( z66U?|DS^EQwkSeuONWaEW4s<6Zfl1cBf+pF3IYi+$TxY9AIUPB=LD4=?Ac8I3r`El zdP*4kaP7RztXXYAamOk}YY8fxYM%Tz`xQ8JtkL;eri9p#gt+PfCzGal`K^k-&X-Hj z90465p85z0LF1al!J2ETLPL*<#l?^$!}wn>O6w*E%hs4oILgs5CloD8g+gb8TSR4& zauNiA42sBM8&F87qg)a_nusQ&n6n{Nq0u0dk)@eMf>;?178=o*I6~Q)q*o+DVs{ao z@S?EHZDHr6sH-xAjAYcLCNuMffQFIXY!nQbo}3tka)`AWf?MIdu&>;NV&%>3Y zE0A_sfUD=$201_In8k4;A=3%$RH~giVsIP;i=9T*b|}v@2spT%B%Zb%@NotX@BDyY z_-en%Q{l7x+ynY(Qo@dBL;M}z`l9d+@xqR0hmz$W&zh&L+J#*^;?Q~4`OVgwKi&4n z{0+C*{+HV4>Ni*qeor3jQqi~Sy~Xh_&0uuM>fL+T8XpZ2mTjw9Yujw{>aevmybjk& zth{ZEY5y?7D!4lcC>CL0--6-|4`ZC>k>C(}aFSGH=$LP`JBN+Uk1Uo!d=HSM^kaVE>i|t5QIgP!;>tAxBSuh zT9|p8@Oy-dr`xrbu1@Q|PnkTXJ48y?kKc>9jway2)cHA}z$pllARy?b7pxF;C-Rwlr@j!4VB(vYDIITFCR9^|T z@6=e0)CO|p#wJgVl(+B1tu;E2{~*GA_U21?t|9DDK-dNw*)m4Ph%h!l7^XzMyM~>r zaZlrIdwsPJJ*UkzkP`Je=<>h-hVUZcC?LPJs+4PBptwxeVPR@gCzD9`Ufg z;b@&h3cKFmyMHPF=28D&Byb$YIZ()$Kq)JuTtsDwOv_f51ZjIzMfXBWRVJNOu}3So z+?mC)Rg~a7%Su)S6`7)n32Uek^m~~W61{gJLqw7!A*xQ#TCpIKLaXuR-r3s}oF?UZ z=|Ds^%y#3jI}}MQnk?G3hBhR!fv{#~w5XOG9&(ZqX5!AI5les%5)FC53xE(vBDoL+ zm1f(sesyvqYQA(A-kBkSzgrH5{`D2dkX@H zpa41s-+9b?#ZYjI_Nsy1HHb)`tHq8{dU0ey$`Xm!P9Lt}#DooMCM~IVp$lzV*m*J_ zoYpWzZ^FH?#bBxPGKgwq;|SSm7846kf?`Hf#oLT#mZ~Q{y)%$}rOUC}y{tah>X|=# z<}Xx<-eS*8vAF494qJIF__Re_7ozu}dTm)${;_}LCqI*XtWRRnN3`#D3SJCg#gbzc zoD~Tu2oR0{OYlDJWOiChL2IDk--s?l;A1Gvzc3DyP?Jpwm;lrIC@_Rc<&ZgC!57V; z<#-Lm+YRZj+-G=sStbGH}Q2c^Va_r&bF%zU*;@I6-8mXU=i%u`@gdSED&A`-z9v%ERt_b&tkN>q+;Ypax zzO}43xPNP)Q`RtxAs5L{y!2cxVr@NbI~dIR2M9>Zmd&5~^v0>3f>yH-H{BiL!n{kq z?hSoEONY&$dN~Vi`fpEzJP_PvH2ObUOgaZlE#7WUp^hlljyYmpSP!R0tFy$sgwi6N z=FIM2rYhzUOLU%Cy~@Wj-|YQ*9Dj_T+9}joggG}06^qG-LS_G@Qvav3cikHfm*8#Y z&#dcy?szuC;^40`j7DFwsv+^zX|(cJnan7dt9c?9&Jv1UU5K7UY^{sG*0Ax?Sw?4# zDUTU0;x7w<~A(_-p-eeHDe+{{`k@3;23Kj3U|*nU}oc=xHR zXjNDFV7}zEH8)9O!B%*rO)c58q6tHhH7YrA8l7{N`;;Oe;`tA1=F$wKTV^biJm;Kn zS4UG5h#-eUO(Yw;%;0Tx7B-scMnVKD=b3Y=scFpwMt2#FK%9Ld@s|8H0{6-9)4h>X ztKs%W`C`!Kr@M&ztEj%#g7)xs{)U&9c+h(ODAZdsYZh_&x=jpofYn3}W}7V0f=)hNFG?j%qRTfHlc zc6XLrS+s3XSa8-;!#^{W+c#ok;VONtRjB9ZG?%~SSiF66dBErY;j<^>+WOImS&S7(Uk)6ls9gSrERP3zTKG<@VVX}~8{}CY+-2|KCi%%Y>>o0Rt(hn0E`vs+nbjM( z&f=1xnx`%8@nCSH_4iA_)MCdlDKR@16jN-&(#Opa-(ua=h4`?=mQiO9J1OF9h;8%4 z@}U&HqVtQa=%trBhwCrrNgr5abLbO0k*k0cK5Nn}4GSOtg>jD=&IT8K%&P8>c&XGS ztV{mm?PYM>Q}b>Mt}{B`;$HK>cFA3bmyXTgv=@d$2k~>>Gz`A%J&RKgOEzFrJhc=) z?xS^4rW>t~Ym&_pC;smkau)ZSu;4l~d?J8nwgP%hr%r@+EyB9-RF^wGWJrJB#V~r` ziD1(zJ{3VT`{F*sZGMK&x*GNtp|BQvWqy@~j_f(411}8phR%o^t>Uz9j@U3mM!N3C zuUK<)$(nh~h~mMVGGSh8F&ZwHuropxi!|h2Ar+%^@ye8QL3QV)5zS$W<-d%X#U)R6 zW6!9=z-Bp|u&~s(KvSQLU~b~Mam8Rib~!lZX67Cb#bKjjm>6n07*F&WSlgCPm;o;> zZ5tKt9pCoTpKs0Rdc`GAUl9s_Mhf!HJe&ynfUccDVWRaP_(8m|*)9XqB&s|;4(f!I z2oM%PLN8dj&)a^X-mvuMP0%GUT33ylPaB;z3?>f+T6)b~^$U##>mx?@YzEwK zc&*c7+XDWf`J*R89JYAE+BdVCf+sCa%-_8$b__e_I-^a4rqchZiB?dW*KhxS06##$ zzhAp7QJCE&WZ*xo^9@6qL+D?od?J-vL1Z`g@TSP_DP&&Bw?fsaO2wuTI7%0xe$}OW z4oll2Qx%+mc9 z9OkXJ2Kf52q4VU|8P27R#<6xUHEE2L2%{0!NtgroW(6tW$#XqBP}R*V?|?mv4h9Rl zXVkU4(V>XF+Rk_SX$8*w*R#hA?iLVlehlIup;2#rGNK3;MvglI)q{`5in7l37rHoL zQMWEw+9>W~xv6zwXI2HBi}z-r=CJvPzj@fWc*aP(Bt;b&4Hz)i%q>zSBGp2$`5lR{k}K*5WVVgq1Rfl<;pl25K-Ts#*jFz|8pRMzjl z6b%f5t2yCeQ5|lNNHb4UxvoU z-{Z&PIG7s&v_l8PbEd`4=Y0W*_P@a?P2&64lnV5PMhAbMs;XICJjJS={2NQ=@(=q<0psvMOh%7X~M z(};%tW@;LD$XQY&N#3xr66^|ure;v2l9I7FLlbKxW-Jys?D+Xl*{)DS<7zgMdZjaQ z@!NYvQfl|L&1H?KR4A*T?{1*)$zD+@UPUz|WylIL@Cicpm!lmS+%WT6^p7htux)i% zmS1p02;apQ(DV*Q1@9wMbT%ZRYaol-P|(QGLFwK`Y*>S_+3o69r;QMsOG^dW6A`5O zMBMa}XeRCr4kfW;{&*2B(UA@Tv~?T@tRj+Y%>ZVIY(ASlxOu)=7&NV??g`0tCc_&T z*fbcpD+D(|C~StnWW;`e;`jsIk7v?BM!kbZEhsJ_EO4JzNs*N)FyXfiz~zwB8kit& zqtWad=(uaLXl=1JkTy06!ric4bRl-mZP#H*M#tH%^CZAV6lg;+aOi80%HX6n97bMi z8b{Oo+Zk4yBre#bT`>)qGL5z}P(;BIZq6+wU7)B(1>MjE=4hsSC`M&?MzZct$~91% z>-6t>EcNSbFo!L<6M-7hL7<~aC~0*Vw%N&O=`@LG0>6qxT+H%{u^)_4E}KY{yx_x? zLyh8C4o1usVmi$bED@EVux%#L*eDz9jU0A~XIl{Zjy54fM?vDsJdJv06k(F);if>` z5XA9h9t9H9dFw2fv}sq{jE~YI2~Y$30h^9c!_pb76gX8WMGdtB*>c9iZY(JK5(0aX z!UyW^B`JR|>~J`>jFxPGB)P<>gx*G>H8BAJ2j#k+_O%LM{;n-(ve@}g*hl0&h+Ye; z@>vx8j$Xz}vI4niLVVUv%vBcs&nx{hQlub`q7J-mjj6$YOhRX23uMqqb@sFD`iicd z+|Os1VoDhH(7gk^R|3wS-0p6E#Enmoci0j=G|lG5Cv0sA2~v>ssXDs1P`MWt-fFhQ zZXAfB6A&OA4y6C`k;$v%bIH{B#ZfD#FopSy3la7d+yzP!ITi>Y?c~*`Ud65(Yd9Qc zDSr2x#LYuIOrrMtpJft-i-s3M52O1Iws^d?pEN}Osa?{<`ah5C{U)oRk|*VFT)*G` z*U$fxWCI}?QxC)S{uKKHEJvQXJ`}H%6bJ4c0_OZXt3enrLNX|W3QIa0VB$y05)y_oQd?=X)F@cF z2F9VF_tP42k+UNa4%;`EKBGR;ZuN!_<|wUmso=@<}?mHoT#dJ-nJD9a^N_g5EwH~TZl83leTNtTIsaN8QXnvpA_Hcc%Rv|Q#Bg8qA5sQG{FeWX0n(${=Ke-QmxX_; zi*znL&ZxA@nYQ4tWyyg#Zfi6A?UBR?d?^<^$E;JlHq-R8b^3d{{tkK^1NZoUufN2N z;83%LB$Plw9R*6=LOTIS1?IH@5slVie?I%CDC~^g9KweyhEUgDZ=nNvg1(sn$Alo! zXA=R0TbA4a%mk1oBkwgqgKH>lHd)Y!8;1?d5W->;YFcd+(6HiiHQTZ{!jGrGEi?Y2 zO9%PrAELQak1mgNe$=bK z*golg%LQr7$fZUzY2X=UA_OW0=6hJ5OsVEF>%|Uih`2`v&WbiXfwTu#rsLl6R=4X_V2Jc$L`M(`$s$8=>>y z+2uJih(kXtdU~8YcBmf8C79O~GmG61gA%oZEUGFWG>3COvEr(wYS|XVU)Z;ruA(bL zinI{ah7U+QTqNHGss>DH{-)NOS~!TkSNvDvS^pSzL<|O@h&_L-#kMyzZHKF6CLBxk zcJ;ou#ix^Z-z3#xEantNd_ex7i z6nR+!hA|P)>*-JA|F*m_YONbl2DUD-MH< z%ODaaXa>5G34;R$OO~4*9}eH@v4WkI18uNqjcQB+0#cYj#wY-Yn>Z(p)sqqVv*+V}OG)@qk1y-Vd0n`5)sk&}W= zh`m{2^qF{!r>bR~o7H;+cY(&jmT*H6n7(H>d33r93@#oJk6Y76T;$?7Pt`ar1T@+k z8%w@?81EJz8RgsPmh4A^vyArSSOMFEHOrNvjI)zgNdYdYPl2msT(0f9-CW>&F4t=r zk^#(=!(fXwAcrBoUQa}!v2|LWu@PM`OiYBkaDLxjYv*Qs8YiC1Jh2vh_9GIwKRAv? zxiho)VYWH?6mB9+Ws0?{kKsK%r0qSzkq9&Wc|v`N?MG7$xY`LH5h&zThRekF-DwTr z%@iDdzM~b$DGl+V!3b@($9p52%${|2GOMzXQKbye9bY2??sq`U*^Vu*sJSKlts_et z7NMj=LKA39vQMpNQJUUdXQ@qLrzBc|_uRd?z9t;%xIb?lBNba}6HwO)koyH3o_3yX zBTo&)UrJ>LZ@B77AcUn2$zJEsFOM&pwXosq1_VB5KL3@m(zH!1gbq#UZw9uIWK*3c zw2T?X&|{3FsnF_qn(cMY{HZA>3MrZ#ysQaY#Ng5DonZu?jZ)No2FKf36v>8>>t065 z_xlMNpAZE1L4>_8$c&Gcn_UK74X|-Fjh?0)K9Q7ZqZXMCWDX3e1d6JoJ==Z6AB*^7mge4_AwmZ<;s=_tnG? zV~J}l#8`HbY-ob{ivacb505;iCSwW`x0xgMxzbZde;VG&+Z5Vmp{y!qI22Vzkabc- zLHc;EUz01gIU>Ug76VoBT?J~Y&EFW9(oXc|tnzo{BS`L8u_bXO5zI}RITBVpv6!1@ zo)R*>fvzd!IVhT5yVmvCcsZ3wQ8LN}uanP_%wpoKVP+aEV2%-1Pa)gQ)Bqp&Dy)Go ztrzYu4cl;8&b2z%b}{F}bC<2hSfP>iCFkn5lO)~`K`74s-R;V^wua?1?{s#zZ&)V} z&zgMrwrGlcl5R3K$9I2Mt>;IpTUxC>JY4b3tNFNlTf?-@$I0>EimtAIB8B7guCVN3 z1$gy8vGE8ZLNhu{7FXn4k%AYhhK9eRLB^V=U@S5SW=hRL*-Q}13=k#bVahzC;pq?% zxKRoW5?~h7Nef|?ht(kh0Dmv+{!t%i2*5$r9pynH?|vOoLm*=w2R3VLvNHWy)884URIvh=W_sZ8|p@Ef2s5I@o0%}Q)B z!D2#3JFP$i#sDoDG7fLsyBPks?d0xy-Dc9kn`!ip-lvd33AvE zNNm97p&FrBvP9m?vq{R1m6NpqqM0#~8XYDqtBobGS*T3~7y&ISG+z*CcRL0_A`u3c zhJkoU)Q6ceTFa6uln6t*92QWf!OMczL9C+ztkyw_%2q|N8pwwetT0n>jUZb}MIk0a zEDYR*U{o7I4KF}8i!$$QJuYdUCfNW;rG+9B8K{wwQd2^?nZ{1CMoNRq^IksJVs@>J zjW+MkXt6605-n;D6Uoe)Yi`yE1T7rOg9NMDWY}P3O2#t67Qn+X7Xblg=@OwWx$81C z%-A@Vpqmy=$V7k%HmNBL$%SBEW<;b2IChn`iy=cOLS+zxC?Y{6!2p=mJJQ7Eh9qby zfoV|EOAK0NflY@cq>D%-vLcQowSp?<4J#!Ou7V&D6od!{<0Ca84G<3nUT92^jHO_z zo+)4{N#}eU1Z3E#W>~P8NfZberqwX)qzr{J<>IO;)W{=B6|QwA;_yyWED6;%inXyu zCeE3L;Gc5;J#) z2yJRPmJpT+Ntww`S(I!@Mj{zX(0EpZl4lTF5)lLtQOIH#j2R*_Rg%&%gu!tE6BbH} zb|jEp9vD4~f-b^#BsXF#VWf$&+_5>vn#J|aL(vT^s)H2@L|C+D$pOrjwOS#O4nFTn$pvABd~R)~R_iG|6ST_~hO-I3UaQ0x;VfY@;;IVC2F zHmRx=h>@#y3uJataZG+fd1~mre>h48!(opMQk~pFo-Zv-Fcjwcv8`uPUaNRwUc@6 zXKpWZhhu|DFy#oA-8V2M^JgPjkuvXBq-<=4rf+DuxJ9%R$u{kYvo}&&i#9CoUG7zt z2Cuo+B#~h{UP)wVfpsq`G}Sc9F+nmanZn7;tV_$TvJ$2nNhXW3SR!2%xuEF8f<+MM zvqnrZ7F-cV+9XVwrI@~1K3CS5Dh!R0L#;4EZn#vJmv2KhhE%tlgeG!sElU$B)j3PE z#VactUg_ASR4rC=>eNJH|ClbYflCIEZRY=4ePj-O4Gcwo4SMRXHqK0#uh!NzpbpYgZ&? z%-k}0aFq>kgEI^*2XP&qig%6DADo? z1_9+rl27HONkAPYGxY1+@4xh~2>B#?tZ%)!H|Dz?mH{o?Mz)}6IuS&7y`Rhf0Ym=^ z`P;By_A~4P_1f|Qwm!Z7wh^hX zjdy8&irmdp(~m_o*=K&#T8&tI$JmOePL2~TE-{io$jn^*x;u&LczVrbtT03}>K_!& z&XhNi%e$d5vl+3x{?)zP`%7{>T3hX}SchV|3^Q9$*m+3IlhG^N7*;^i?&9{HKiJdM zV|79##fU}*?kUvVoMyWBe2Q&YjYG5~ETB- zX7rd#7&k^k2Glmi4|+;zUgES?A1nS*VITW{&P*?aF~3)tuSQc}LZQI#zpXQ3U9ncSEh6p91KYK6vTisuO&>nsxh<&mH_O^Th{;cJy{g$i^ zoJdh4L>RzBJ|_--OaEQ}Mt1+6nK*%vMTQT{u3uB0cSdus_T5$G{nu@BjcBXgt-_xU zHHzl9{qK+Oy{~oU?5n3{HU@;3*w3`~shzLfOiCq-{&l!N=b!rbvsvb>LZ>xFcpP2d z&6*c5K1JVu!b1hHd+udQAr?!9;RH}^lt4)o!40C)2)6+OQG`oq7XXA1O*WyHNo5j2 zNE91olF(q3Py`T2@l>!{k_3=afJi{ZklIP469mE~pc6yz0M0^td|@ZZy1YaP$8Ojl z6TsERn;}Rx{K&HCmcP$jo>mqiAT)N6YNHUC8Yw?@}r`~L!PhRPeiy^5`xVOWOq4GtmyH_(B9 z1FI6duY?{O05h;((Et0&uBj1~R8IwXmz^8-pUr>7{kQR-!T$s0|LyZWd+KfsImQi9`E7&``Yz+ zlij^fo6}L08q}{Ii}AMkd;j)-^uWQ5kN(fL>xv6DFuM+SnEWz`I`m?MYzRIf>3W2E zg-DP+bP#dt$XO83D?3jl`ycILioS9%tQzte6K!R7mjxyS%;OLr5uir=nI!J>Yc}b| zi2i=9WdCy`Mu}`=(YQI44jb2@QBkH20Y(7?Z=}H2^p1R=_AH|q0D^EyJtcz5B_uTs zKp~{4C`kaxNEH4RREZ?QK@_Q?V=nee2aMAD_KP%=XT3g50tsM^#s}pxuN(5;wQGO! zmbUb&BU=9PaMfSy+kW|L#x^$E`%6Zv`!CjZ+tYt~*CMrlu2su^>9+XuwH2dQ|8&*+ zhSsVu2GAq2Vgsi8&*_DGQJ=n*N594UdHG*s^&O|$e@E5b@P9Ac@Uh%}Kege((PciL zxo>Uqakec@J&-?~ARnh@0@1gNPQfS{_eFjWguEll+(8yZE7T-+TIc9D_bY7^!7Jb}g!l zmapzAEup$Idlr)d5%G5xpSxOLm50c|m6n;A@Ay63{Q1z8ek*CZ*xaNDbn%<%#@l*m z^W?3$_3b7YqIkyRHStqR4x1Y0LRMugv^hho-pjXy?qf>xWuh{{x|k`g%4-Si zqRB?<61$A!8VVTZMWxB^?KYu z;;F>XV4nL=C5vm1SM;ls9T$1(93B9luAMP~oYNVTgs(q$Nd{vgMYF zXF-Z{QZ62;_pu=&g~@wp6t`ayXnEGhTPI7I3Jm1Uci10yc2I#FU%$M^vW?dAw(hT| zgJg6RghW6@1VltgB=-I{KQ44C5di2vCbDP5eVJ8@`K73M#bh@x8BLqFpw)GzVCw>H zXsn33jXux^=kKu(m&|2!UQWC-o*vrgPb*%YUA+`me?*S+Ko&Vhrq1|FxD*t5X=2#c zwu@COF0(ZkwuWD-QIpLknP4@NU9bc1hdl`-5PWxGH9RmVbN>40TN~w)fwkARbC00h z@1p@0Q>ZlSK8Dh8ePk-McC{Lwv-OJhj%SAvtc6X&<egSh9~r+=OC-xJm9G4_ zn0YX!jIIr~{eQ*4ymNFlF~!X0p^i7_*Ga7GsA!JMYjL)eoa#k$`uwG~yPH$Q(l(-m zsmA?#Kfh;?X>S#$*u{ZrvNq9jaj=YGw3J$%5P)!OG9~K!Y2Ucf zP9WO{2}>e*l0f7&HPiQJi{+~mJ#TL)xb2PY!N(+U7^W^!%zf8;n}u1VNPUp7+l4E$J6K#$Howa37$(1koy zz9nNxT-48ScG81be6(C82u@l=N5#f2vuB!V#mlOIItWe+>w5ME7b4Vt&eok(PI9L%``4B~~?TM|)M9%G|P5-uu)ymu<6OGjM|KcN)%k z>g*lP%QnFYHn|;W<0&cRaBb8{^L2yjXtzs_$J1gec)vL_fs*x+hTIk%Tc)f$veI%A zpt`7`g_25(WYw2GM!e-X@PWU2bjG_D>%405^#!%hdI%@csB@X_$7tD+ zwA1xyPaRdfc&)7CZUs`Mll`|T7SHd_+p^QP&`HH;*&mHQpi;;ttq@9Cr3tOyp+&QV zcV2WYFIHQ(ZK6eB|MtJ~z*i+GLskD|jD-*q%+Y{A zG80oWTL@t!|4Wbl|NQ;W`_wXCp{6l|h9A{8|K2Xsu2TQ}cI1dj1eg99Fm#D*sDeTV z_1HubKqLZT{eSr52!qi7njAxg5~dLgO;RA?X5_kBPCw|9D?*=pcL?lC?71eIy>gX!t6D5)jyigV{M-8IyN6%{wbJ$XG4GJ`1bza{`ayBy?w3MMvGF8 zr!)5Bpm5fPv`S=DE_wIK2vLF+H>)o6S$EY>z#k0pV_H_-ssiIw>Kjz(2*YSsC?j%JmB zjfhq9G2nQGkwAqXM5Q7kB2fnl+O^s>Lw=-fcRfS;f0rsREoUNjGfm6ReH~-0IgW{$1x$cRxh_I;WvU z&xKju-*c{UuH4f=reRQ}EG#KITOh3^*GY2QWxgJ`uyl+Pw@sQRU-+&7=;f!>Rd}sh zzhaWZ^$%A)W8eU|hJ1&q9u`}lLv1JKHx&pMRAnImpdd`ZkO~4-z}s!7?~NBV) zA5td74S?DkLtw;20D>0ML01kBaokr#0BM?ku=U>`wWc44gog! zqeAT?lS+!Q36aKWS%D)8H!fxw1d-ZFppBIna*$|#DAC&kwcY>cn9icS34qJ5JI!b| z!5ZB>;y-1P4TGIak(u03ljZk+iPY-#V^hHJ%OpSOhID}Ec-iOlAgoFyGCQpi8%nTY zAqQ8+^1RxrtB&MVi}EYk**d2)#Ag061SAy$S2#r;AY&uVx9+}yj)*f|KVhAQwR_o% z(pFMCMJ6M&3yAifYX|lu2f8X!&&o)AQc@wr z22l4Z41~1XM{EhARQ1X;acfCT94BMo+nU-uG*Rn*S6FzBa}{^OHV74IHcy$s= zL?q-2DPT{jEz99!J9qB6{ zYhp7N`)R<^Z1$KD^`2_fT6mXlG#XFpyK^P~k@s;n|Mu1^RmJu>554-HH@x$h&s)Lp zZM&~m7p=zsyHAze-?Q2BdyNkJ`OI8ye2FL}cE_pxOJ`{HcI4JQN;oC2RZogx}B@B8qss0T1!kVeXK=28jb0%wC(?Au31>7;ZQh3C;>y zBuDnFEn%haIK~1$_=AkH6#S_7i{4e~W&V0G)A>nl1`{l0K@kBVJf-10%8oSr!T#T- z@JRY+^?8pJG%(Jp4U$xY0d&4R3GpVRonVStf98S3H|?8(<&F0fJ2Ges5*07wT8NP> z9-UaBC>2);6^BsY(0F$h)k$;&l3gz#Fb3zK3>qGY44qH8`b~aBNFxDJn>QgJWLh+0 z3l@W85WzZH&tnEmZk~Fah>%2QnnWmLHNx~Lz^hrr$_(C6b}UrKc(MkD0-9{H3v3n% zRyb;n7C~WXZSd!G{;URW-|TI8&NGtR*8T@%4f;p99^4;s{x6UIc6X8p6Wtu{kAB(= zhv5#-`)igzKYDtlufcwUa})8*E8A%Hg@Je?Ify)j2nRu3LNeU){|4>f7&}hna%hB`bAS+# z(S0k~{^uXazRkmj?^7J=n+Ot@OzFsgw_@Vv(s`Ur$n;8)+v1SMMvMfR9b5^TpimE5 zu@-ixn>wis@*0trS~=-o^?zmt%E$v0a!(?wGfy9I=Fmh6v{Y2Qt^QcsMNPI5jg<{C znFX)5MXBVYWV0Qd8!?{^S%o&hBqiZ&GU5=L^CRbDj$p%+2OQW~t*4ofX5%feXM4-I zl+$;^M!d8$`gDJD67G$!T#RAw4GpG2=7Exk4Hc8#o+NGOLsYPGzih~1Y9X=pDekX$ zLG*`UU~TB`=r?BO2s_(oQGnqAJ?#_BWnKs?DghHt1VUS1mV2=t?L0BPN)|jCu^vJE zk^6R-eCR!mgDmcp0Y0hXxw^UAQ4{7`HROo-WD{u6=B$=-9}*NmqeSPdi_nniIT`SC zLebD9Jw7967i!On{Qs+gn8^#YBcTu^u**FQfCLf@9S}np*c|&xB!)q^5bb4x9d~Oa z!4zaN2?(i3#fX>;h$bLi(+XPfqjKrG?vb;fjl*TbIV^ZU0Z5|+ZR$TKeeH{k1w%!K zX33J*xj<0M0dr2kP-xmKlG4cBeh#X!sc?bay1abqNhJ3pBiY63LMTO5QQ|1cNkB#j z+j&#H2DC*4o-J}MHfVMfY0G`KG1cSt3Cga8Ah8|hl(RMx#>@mh$Lwu%FeC->(HqfFCiLjLfS6X2ZcO0>gLfb@v zG$dMHYG}*^7zicCLkFTWoAf3MplKm|At|a0yprgq2yzZtrBMhs#A51;}zG zDagG69b=8_qk0(*0SXuihraumy@cvF;zZU$P|IUtQUR1!M3rS~xkiQQxo9%7R*X|~ zjyc&^Z0ooLVDI99pb<(|tYBzEYiKmY?jcAE(&6U(zV1}`xi1eL{E({NZZ(P zO2Uiz;1VT_L@r<4UPsK{qdCp?26@>Fo2D&6N$+4db=$jQyDxy<$TGco{u5*l!Xq+~ zf-R$CX`4uGS7vIf*~m}AclRVJmicgf23?jMv{%>SQ8+Q9s zEF+w~rh1GKP!(0dX&LLtcTVBL9`OV&^@eQ93o;Ic#vNg3sm#7~JI~-=q#?u_1oJG3 z|J@>*0U2VPv^NmQMi~s6AJ>vxkA}#r4CP<>pzuvp>TGU)liVKeNk+sECTsb;DWSIm zJDlDdt)K2J!KBLAUrY_C#gajjJtJkB=sO>kBcbS!IVdWU8QDN2HfY3y95ZHebeE@p z&D=WhHupvaq*_0t$eB)>RdY@2kC<&kz;$h{A1plU>H-GtwzSDbfVuR`$Y-o!hNzViALAmKQ@k_{%oNx4rkA277pYi}u?ZoAKO3>-;me!hzDsSeicfRSbq?@}NN6?{ zsxMZi47Y^F=v{TpIB;QnlZd!hH!chqws6xUS1!I1l>m|%VIr|6U_r`H*?4N9puy7H zFq=U|$}m)|vsdq!F>eU_$kV%n5e?0B@*(T*P9Fw3!bVHFKRPlCdKNFry}cW_s9>ORYBu#%RuzS&TTX_l6j3=F@i5$iqh~e9;0eNr zAW&LyM8z=2sI7G9)xJm5@(A<}omw2zcg=Vt+v;V_nz~ISSJ1L{?x1-5vsi>lj+6l} zXusI$r_Dog4S2ZsTWF7+!*^F=rJ?7goVm~&nKo$jY_)SBOM5H@MrM2n%qsjlzJx(_W71_PTeqsc-+U~$!dF(-)6vG_!fb7}n?rnttuT~b z+fs@cbSM;m1G)$8x;|`r=e^zaI8W;SqjIRD4;G$}!p*1LaW!mhZa5o8uYG*e*T-|{ zq5W)D%g~eXn|rvXtI}y@VHI`{obD&SX=Nvz5RN_J4}A7 zdlwt)A2+a<`Sk2q==|@|eB5+}T<5tlYQ#FaTCHyeXs$K8Ito3%i_-1fdHj1;eQwTg z&BNSt`V6Sl`ruY~JMZR0^X>n|z1DL<^Qx2WoXmJKwH%PI#2}i!v}_GyWO;}ul@S7O zwU&x;6vFLxo-AKqpO2#5`;i$#q5QdN%8cZkJ1w5mulG9eBKEP6!2=>ns_2;f+={7{ zN>(HZZ1XC)nE>MBb(B|S=`u!B_tP%UEZOYIH9hrMsHmM#6cS9a z=0P!l2Zo==r8(c|Y0XsLy+1ich`{!zRPn}Bx6efIB{@D;4$Jn(bmQ&)Y|MZ28D&dJ zVL34mAK`E{{r`6??vi48irHhX7G+Dpe1Kh>w8osObyTN^#ZsX2#VSg2ypNgu2=M$B3K zZy!qq(B`Zetl^6Qz`q&t>41(raXbqyMIJL*O>W|B2%jAtf7iYB>aT7^5`hXO4eP)9 zpw`?!jMfQMWBOT-!z?!KBhAxIDlL`7j;olOXR?e2gQ>L2^pp?6itJ;W2yn77z|k#dce1S_rAoA7tdZ8`*>035f@wL&_WM(RITF4tm|?}QW>^w<+-WyCV}R>PA1%A4va zSCZqXyWNVkvXQBEWg0aRzhrqg0Ap7ZnULzjyd#0clhAb(7GBWUi&7rF>&w(Z#dMs8 zL`|gv)=Dx37_n8aM0jm7WdABV@>(AXEuuo!o&f=bnL~XEF!y9p%+*N|w18Mp$ONL0 z>gkJ5M&a1$@rbVOV`tqF+~LcC>>AoS%ZxJ`kC4w5SlFP(j}_8P=Ja|>$)A-evh{Kp;~L;5ZhHF;*9p3GDTUMeyJie*I)d27xUTk)`<3D)nHduQ$VRHkgb=tU^f^UtYp<*N8t*=?`aIm) zH;VXM!(Mm4mjn|gCiUEuv}}JZ@4bAzp4+lp@3nrBg&ABSF_K#9Owg+LSVyMH8Nz6$4~EABz5BoZ|ti3E}csD_7y1*j1>Kr#kXE-j*5=tw1kt)-@5l5h9O zSj1_J<$(@e+IfGm)N9-uqJgn471sT2UI=0{BIJNr#@b_TjDCT`Y;41laWYS{Hp+Wx<9J zGF0tYUo~h+b9ZBLUaRLH@k=O_|6)-~3PFnx%>TQYv=kcxpj-JL(eJ3ee3n=CpXpDRyI^Uv`4f4Avr#r*N|?tfK5bsiHC-~<34E3oArHo5fvA3vsjkNLavwLx=U z0|`v?S_9-UcGz~lMqmF_txxwWv1i4!3$=2^Pq=|c*&ZCB`Y20AkKgUP3Z?J&=ux|L4x$ItSMXd#93Nf5W3`I$=lBz)^ zQ6z-OOotWCOc)jE*Y8zSlkogtxJVR9=Kg#1wTcWIYuv zV!Qh@I+UDq;&%Hqt2~ylXZkoIKqONQLEl97h*>2N%Su}4nsx(}o5t|w0$G~~$s{Ev zKtg(Xqt`H8M6!Xr0~ar?h6IxaMM4aR5d?M2ibSZ9R30nqz0&Av`Fet&a1x^GuuxOoZIFyDsjGcX>if>;VV+wm5iYr;2HfaPMKFv!2qD7~VUsg6 zazk9EK{3XFxdO{Avw-gHJ6uU~cuXmol+?@+f(8+eGb9Mq(=kj4w3Gpt`c6P+RSfVR z7msenLMeb`aO6DM;7!>9($8ya!rUfFvsNPdgIyM*9K)5cY$z+v0+)NLdMB$F>($5v z;B-(Lc(~^pePu=?0lH;>bWpXo8}*p4W@Uw60`R0$W(YJuBs4_uSkhkh*9#KS8kTZ8zYC%q7*94ZpPjU zK7}Ep#PpCKI*j(!Q6Hc5miv#V!RB$BVt6*TGKNKEGP>c(B#PT*+o5?-NGo*E%Rl?n z1qUIPdFE90lawfEg0m3eA_51Ls)d|$>4247xC9}zbDCa4U7`KbbbOtn%UMK|70yhq zq;x!?_3)b*>w$fpx%@z;Bx15)Q>>+$W)X}v z@s6O&ukhYDMGMRr+ik*%4je=`42m7F5p0dRTmyWO8h@u|Y2ET%iZ3h}*4s4+$fhth zddl&3)E{txef?-rx;8b1G3Hkd7GT5s@v1{Lk<|Y@WM56fZyL;lWyXIhL-}#H2Jdl` z100vbS2NZ|nHK^=YtIRU0rgFK2VgMYc|s3Yj=8u3X(5XCs9 z|4&ABUUXwjk}#}QPv346l_*8}o8->dp;UE@cz`LGxN)8gR&J)Evq z>Srn!lTL)Fql0F|4q_ixVax*^%!ft}u9Av&P!P*AqVHhbFrdK%Z&hRRC;*@ZCE$@0 zDlibD3Fh)^W{~u8pI&ck5eJ#%SLdN?3bE_Q(umt3wa#!p7ZQK;c=(0)UGBb5`mZUy zW8KHK<9qs-Hz&P=?<2&nuZidTPiPzVo`qU$B{T||9m=U{)EhmouYaBWWug0rMuIaD z8c1?1ev!a~Ly@j)^_9VcwjaA+W|=#0>inMJpM}|1{|V28kdB`J?=KU~ntHdZ@#iAo z%zf^*o&MDpbe=A+NWIiZ4~u49OgT@5dmkYm++;s*v%B4DuOz+?<3SB6YWtH5r2m%t zyQ%*Y*kM(VPyE^F|IJt5 z@%~(OAm8hU-@uZP4|RJM5ZRKH;r`=o=VhdQ9HzyHWnt}Gzxi7GujY3*jeC8(o&%Yv zp6ZnDGcVp-S@gv2p~5OoDWm8+zt&U8@T`La^5;u8$VqGSWsY5dBQOu4@mhXO>y^3t zA?9?{Ei&0#zwVL|R+uxc5U);$@?}foOv8SNya{?toi0D$Q1)QK4OLA>HRKyQNQ>SL z&4oLdH`WrY7}7T+Sgk`mg6OB(i=4P%s;t1z%1(2-QuS8fUR#rmzF!LsA({`t>?P!8 zhYmj5AtBP`$zXkv7L+nm@iQ!3$eQq*X}5i!zDEwjcXf+hMHTmLt7}rSC^HaooO}=Woqv< zn9^nV)Kd0bEyoW3H|Nt=E5|pwi^f;XXl8Sg`M|Q1;$tlpSX1Mpji76vs;Z3!(T<}c z?3)8{oNZ!R&E~sKbTc`odTDlm&_hp!2*w{ptnac@W34Ww;f}(^DGwKUmy(igLQWM3 z3_mae5Gf)xRkDc=Q@AUZd>%Jey?!DhH@V$2@ zsVAM|e zppZ&CU9#9Pz^{eZ-)3=-EA*;gTS{3<$v1gRK>4(f4u(R@aj?(nZ(M3M&D%;)@aL=A z=k>coxRe$47FadA29k_quL8c2vzj~}s8(sRg$e5IBI|i(STEyPWA>AK+?-3;%Y#Z& zL*^F4O!8?qG|O8e+SRowtfb|c!L(fN+K)Xau8dh1F{YuJzHu`dAm%q)l>6|b_wbQ4 z1kMDB(-O~jJB~xLnwRHSC*cqIrRxmNEEwFZ6-NwGc#a+h6uZHgC73_qR=6gArThGj! zVjy|^z0|xljRoFEb*$jYPp{Luu07s1j!IgTCFP*PI!{bTqV zl?$1u`1;1I7cc04DD4oCuC1@OkFV$N_w$jNQn$p>U7exWMl+0wW+pI;V>^lwF${ad z%jF^8EW*9Ap}flM65j7!R_dNl@M7UYlNT)_%5~$nMF=1!9h4?+Jur`!;Cbbn)97j& zPENQCjD{~R+xk2%Hxq1jPjxEn0`4TxhKY(mVvJehC~1uEq@$j5Dg73N<8u!iL8?jQO3L<+VI%p8zJiL{-pg)kY4Ih19#d^9AMv{^i<)u~cpT}Tj(tkHmv6q64S zP&gV+G}^54EDoty~4=2o=lYFPB(wY)j=j+QLW!D zwz@ugHWn51x~JxyPNF{&fz$i{{M9HDn|xORbNFI7G1n< zB)m;kPX~Xg*zcLzT1H$?ZzCeztFqV3SZA;&?dkSBFyZcQHSFi8HW{QR=dW33YhtnS z?Pqox4Rjqm3C{iYpAB@r_iw`AZ)-NPj-KkJD;ZEwS5WYC(f9Mvk^z;WR(1Vke=V)8 zTz?lMkP_nW_8Y8@KXsp>?KylG8N_0ySW+a_sO4yDVt9Gg)BGxhNN(tH*{$wlbIOmI z;74}6vE^5UC^f~Fkbn>%(CBcqH?*3lelBO1hpgkBmd)2avcItqVi1qr-vnPJ?V16u zXE~yOK;o_q?StpL3|>~vf^*|gjBITZv;}u8{*H zw}FhGp=V)DFm#+|*FMiC&d46JEBx~McWTmvQ*n%rT_)1qr6X9D`FiX(Fu6_FF`O(q zTFE_T=eUn0eri$d7r7_Pq*E)YJUUD5MYhv(IzyEn;}lh3adyE}6$TMC@NK+a z@HoB_O6J!WqD#vTwvaym7(W2=KHxJ#fmFa&xO(0=6cXa=gY@|N->1=W`mtqEui%m} z=6_mqb8q5i<4c6k@^eE4B)_pATGcRbW*wTELrIA3+#(2ai5in;T2r1@$9%axU8rWvY7d3Op`?MOtTyt&qI?FX$$W%)}Wgd?U{F05gg!vgBMIE5x&>vtEsxcwtA;uu|k$Q5#~>i2~tG=~9yXs1FZWAvBAVO4(|Ms|SO zFlJ9H?2tWg;4jDevPnI5=w5H|ro)&yB(gB%D}2y$7$npCePmwr%d;3P=40V>-GE5{ z#~;;vD=nf*QEfVHHSoh*WHk#S8RdvFR(l&UVlB8KK-6$6uhe&&NenX|@cf;Xa~vaX z1xZI~K^RUEQtK{bMhvzn(4J+|1uTh@a?dAArEj|5I2p_x5yHJEm8TRlFv&3GA`xUw z)RQoQG+d^_{i+KRu0S#hK$Qf9NhKmp-~RV&w@65{oa-k_sm{ zL*bz&js>$nY@YrYHIr0~)+lO}d$ z(oND)tH>!ZK8YE!O}#0xt?J$~o>iHt)5Sx(RLVAIj&>RVl~fUkPt@Ml{JXz#has}; z%X192L%GOSlq;DB{I~r|zd4|Eo}`M(EPTQgq7+zn1*zfSF!mLt?vs^qLP;t~Jsss} zNPyeXZuS|N#~bL<6MBZ9_(nlAK|0Lqhh(0%SDP{yM`N#zu@g~@j0zr3Vcgh*S-gP? z>f)4eFxwSuK?;--D)V;~YfZ4$rx05u1AFzc6f$(We_Hs7SqZMVbqB;5A?&|Xl9uy? za&ccyDVOs&y0h8X!#3RiW0ihtGy8lEwl|#_G?2Hq&GyqLAt2HNt)k`0jZ6!QFo?S~ z!fB`kh!SB8P0NUavr>P(y}QcBrQLslMT0Xk9%go(?i%#(TDNnbR51Y!xo_B_oU(J4 zSVoN252KQ_BhmQv$$q#dpN1X~SBnMd*ER-Reu-T684?K_k`fM< z=W)ws#b$6qp|g&`tgRJ1twdT35MdNS$b>fQPE~N3GB}eY=2TBE_DqrRjeo_|jxRg0 zng5i(l7b6mM$L(Hb!r@fOM;?n-c1nIorz@aGrB;rWMydKXdrIV)d(jP+G4B~+0myt z|1BhC_7NibWIJb(8C^`;|Tx7n-aF#mUH?$Rv!CsN16 zckcVua4{$pp85eD_;A9|Leen-NC-(E^zX2$p|FpFd;^(_S-WV52BRq`2CTrf>4Kls zawIVW)4R^qVq9mOMP)m7OTlOnj3UcFR8ByMkrI@I5Movb96F9nb!}G2W0%+A$La9y zDRdAq_1}}6+vJf9O`P6ij-%*$56kuR{OlnbA_doBKF6nBPc>j?_I;#C@Q*R#&^87H zG%zdmV4W$Di1HP9D#+3@9fU#g!GN^mzL5(d2yoE@QbiEag@nig?j+wT$4&Mlxm_4n z0zrhLAVJ0i;5_Art&MEx!8Hh;yN{zRY(5^$o||V&=rqOi{CsqF)NmRhwFEq)5Ra;1 z0^UUt5X?;&E0|P5>;>aabL4LsC^8kXgu$qUcDN)6cL|L%JQCkb0KT7oZ@1@`KaDrB2qfDha!*DKOvL0Reyv_ox6lRr94-78hvP@0b9o06yCo0XS;^O+DrZ07X-K@V> znSCn5WU9u~Z5v`uH%>JYk1DRYDw=aMoHqIA#b~`^hQR>NEz@qdT&xBjPR?!3>%_<9f-+h{Do8xCJAq$)o5&v^b{i`DK|)_P04 zsqDYIk4G<^?hG;%3ZjyzLex$VF_F~A+iJUI?9xCh*{fX05x(eUn z@)1QH7N}o>&Uz|`lj-`af6z8I1d&Wm?@Usns!(?aL@FA77>og-8tHYUNExcdMtDmv zLz$vZ+qQ@+yp0}RvJwhW2UOL)1Y0-R%ENmlWF;j+-n(T7sWzeNV;5&W?M42 zi#sAtSc}Y*CNP5c4@5%dvF?m7rc{9i4n-ag7}|HYS;*?un5#b$oi5GpZ$ZlHY3r-P zcX5smyN@X2#$PsQ!;*&aeR+84BzJo1*nLu^mXPm>3J}8TjIeDATA2G(jtJ@8yA$a0uP~3v4ZDp0Fj1p{x{iO;L2_R&UBE}JhnoNd>Km= zgLS)GuWWsd{?#gjG*w!z8h}^!F23{BSrTV4i$L?0eKpfaV+0e`qNdYQ2q2<^D(V!f zE>Ho}O@!kfNi37yyxwC&5kc!@Ew1~y@*h_xJ8x#L~%x z`uJVz7AMEzmCyBGrb$R;ZsWsH){HfvBnxuFBd?)uIoAzCXZuIqb37bTcipRBdU14E zh^1BtFwBTK2v?$eKj~(Na@pzvCk=`@7kc5-y{^HqY8S@;S9*pV;fZ*ZybPLk&r81C z_V+zWE3BTFGRRZH{qMWz(=3s3Rdtd}JsQ-{9Vc|Uh09)6>KQ~?uvEMR#f9w=sD!AC zSKGdB zkAjJp5P^wEctmHPu;@yNL*J;oK|HdY$v@$^N8um-o^*lpa>tP@{*0UtE-g-WH#R|G%P#`pl?L(vMv!KKYHmXG?&!N1-j4P`edaoG`+Wisd33F1G z0n~FoFM$vMBFkn<6=ox(u^^3NeD(@tLL;LxY)tUbCuB3|fx@R>+d!Yj>!iqXxvleH z@H5KL8eqa*lSdm2oFBz9#L2%VkBt!!QlO*@p-ehWmN+MA}reXF8rvGRb&p^3e%~uaWFXzDj4=qv51Vp7 zm%j99a3zw^au^=UP|Xiy!#-i-du<|5m%keXf<^6z2*xa+1WFAc7(uIQbd)7^+<#@m z>#WiAqo!dx9Ojc?h3pOI!PiVLGxKO8)aA78BdOI$@1<-n^HMVif;y=NVH)3g_dnrL z5`Q)r?Ya+n2wC6o$bRo@6Hm1A0O7g2Y6c8BGHkw)Yw&TGA~~@fOn|PTl`n>O5D|~Z z?!I3u)E4Po>4X+kA~!F&Sj_BK*VJv3go+$_kW6FPgyg&8kYdnAmqrWaS zYhvrMSR8WdGE};NWl?gRmuWEgG0z}J?vagI#vfHn|`yM^xFz2mQ$HxaJ7Xk zfQ4Ai-jAg3x03$B$%ajt75XoCx-i67MH`|}3{*gYC3w^`F|}m&m_y~#CisTl%)w?l zKtTR`k*nCf4Wi7eZ?I}7uagQ8;f@n(54G#PkNYdXWrY3D{m|TZGPgj`C zxeR}o?6NBd-x#?IvD!+idDlfqwiPJu-yw!QtRr>t)w`xr6x>CVEZ$Yddya{c+(NZu_$0$ReaO+}XLNoFbv1aLMjDg|~_216*2LkjgFlI4pSnqdZrr@6}@nhQ6G zZI60zs;2_!Wh$4YFz+Fmn#Bsa#7ATk5Cw5s#H%Qv*7}q5&HFbcc44K*}$!&-?_;X|2c7DTq(SMKezoR1h zELTl?d4B53j)8}7z2Vw#Uv8b{AI&v;Bw3clAO@ot$LgX7XegKeCcr5H0Fv*=#qshE z`agU5ljF!6Z=a9_sU&&q(I(9eFo32|Bo8GhsZ>EQ0U!bl0z_Wvs7WL!?$>j&eiw82 zy?tw2kCl>SKnI@wKXb=fQWagBgIv3)^j6HyLu*rmMP*Jn+WHziZ-^G&8Fqk8zh)0T-NWoFk zNQFEKCHAE4;NJbVY|8{K?VF!OXCXxVfX9&f$^JX<_2L*B_D__1u4^$sp!)rQ zoC!mk)filj_~X3;D9314WgBqD&e4##kqk1tIS%O+U70k6h3wHg-(D_~G;O$JQ$gYc0pg}=vG9bG% zA~3;_Q5D3u2T$?5A4R%z3?)Q|C-apw&?pa1zqGVw5I1#9`U+ynLRn%$EnaXYF3=`2 zvuC!@!OG-4feTia}N+JDr6fAj%!) zU>WeBx^g1gV%L>-8eA+ZNe-J`RiVFl?94A4H#Sz8iPhHalChi{-j_AuOy-cT7QAM& zM$5Ds@$RI^AiJn&I>Hg9pzKUi-Iwcn7Ov+*Cnk;3x+gkK%TSW-;w@m$px{9^|IvXXhP*mDm5`s4&8<0PYVUSJI5J&_uBJ0WP$*yO) z4nSUe7z-I}uI-B$3JtAb95RSSI&YT}*`H zt}jTBb7U*gyg19R85%e%f=40-U=aOET+o-svc|(Cf@tLBFu{PfAz3J*Nd}68KQX|9 zJK@Ih;xJqYSG%zeN6f?J+41$9r)@8Ig!f~)`5K3NgMO+bAqW^B0;y2Y%&p7nsK97aUqR3vjj;Y9~`E76FG#4-bQzGeC#mCTF6X;WPmLu zw;4YC{VgmiZZTbzLV-K>pte@HkAI6>-~Hf=1`b$3^-QsmwH{V$zb3|d%^(#^TIxB? zJk_^tceq)+dg{sgd~UwE>7rjOW41Fv@^{o%i64MQ3J6X4$}?FwAU3^jp!O0#fQN?G zd~?h`0U|<6a|C>xT*Ag-=s@4@cK%04owoZ>L~YRPFr@{+A{=ZE&_eN-Uh5a;=RIT6 zM=4`!BX~SeVU4khTWt!K+Q={V2_(qf&5D6p%M-*kfv4h6eBN%u%d(?0G?CQ2&ys`M zJIq!j=h%o*R7l%~X*`<)(S;#ig$m3{hm#n-hE<7?COd5a7`RjN&VQl(UV$Sb2{|NB zo$n^ymXpzH3tjayGufNK6Ynf6lDn-kts4|Kun-GxpQHL>W7i= zJMnn)w?Z+(rWB0z(2#l>>qtGWo5NnQj?s?<%d7v8$g9lM^)@1Z+p=qBN|_VE!(-Bk zr%=pylm(a`A_6)mq)JEIKwt@2B_k6Z70MzD_LeLH%fPmG9gV$neA){cC>-!Qb-BwuB%sKYZ%GYgO1hPVV z?6z~M3X`&46op|eE!jtjx~nrX`*S(8UV(sc;nfQ|z0^UBlebQ$rgF<;;clc_`BEHq z{jdGc$j|8aeN7%M2Y0W{PWtSjfF&E(ww5qeLPU#{CSj44JcbZVNQ2RQxJ+Z1c^M$% z(1DGy+5(eten;Gn(H}y6)4Qa?8yO^s1e=1kpZX)_5Txm{@5mV3+6YaX*B>r(!?p}wj(EB8C2!P9o7o^`b%Ga1yDy*2-M$Bbcl;$>uNgn@)CdYvh5q{ zta!e==>3=Se_*G6wzNu^mMRtm8A}*tQB_h-=77X8N~^&Fs_aBXvibJyFHn#Qv3C?{QbGu;Ge zgJ;*!MJXmFL_|P%I%#Pb;l^?FH# zq5cvB;m}z*7c|nC*gPDFVA~?{OkJfF~zWL4Ti3Uy{~P*+D$h4 z*MA2`)>F;C+(&z45JSPykT%z3<;dxCaNP1W?%l?%x1(s<0imWhL-sot_$AGmZv556 zil5w=*py9xIhHb_>VQq_H~WaT-cG8*)H{SM($-4Y{7}V=54lQuqT=|SEpkkod}(w? zW!i4)$z=)=i>pN{!`VJR^o7Ywm;BR5Ra1pwWQ z_)Vgfwe4FisHmB-s0R9*d~ZYiuiO6L_q&gk=HxVHfwIb?F{V+XENHQ@6m5-&3{4V`Wk0>=)92Hk{k_<=_9cr^sM;^I zw&=%i^`0`--Ek#tCrldV_(Fr&5Th*vH~I? zOi&u}v{qA-mjUMaIAz7hvKZKAOK}_V+BV$LsI}jLd%xLw-ZkvhZ?E${-+ixdYhCwx zuLLr;cWh8Z6yCjkl)b*!uU}razBTZ%v{<1dY?T%Ln_MT$_}9P1?f<9V<6rn1x@gp! z6j-d9FMoH{eZO1TJ$9|rHb2GtzLgC1fo0ss2R18ahS1pBV+7dP>9^16_Vd)HQH>aj zMv|jOcW=YS=Fp`*`;j4gb#+OoxwYQjzL(MM z?x_EIx=x*>%xySmV1{6k+b|p4gQI(UCy}#Id}Z1qRXCZ=t*$rA0Hk;NQWc8+i1F8!}k^XlzyWbUc0Mi?*hK63*sm>6y*>J@FENi0kVa*^b@$F1O^nVv0kWaXuo25GPuhI zqr^er#Me>9=`cgXDkO8W5|CvBx2xBD105VeIW2f!X$W>qY}kZfR`3fVvXaNC*0{Z* zq-;j)%8tMzuGn%F?=02WW0q-+A(KU9LIo`e1|cva0+Klbz?&8@fe!$bXj&7C5Y@;g z)sextyl-^{gE@q4-FRHX6en4frvy|%b2KrB?x3mrt+!$!Xd!D(sz|_)$PNbkUJmWI zn+G6V*^hK?T{nXDb9*Vlg>=>6HE3{M5Vq+1UL|0PH{FVu{H>^P;~;U$46s3RlrQrE zO|M6J6ZmhYw}ENh`i$J%q(K2-zHYp}bmcT6dfmzK2;IFck;*Wj4=CiM9`Q=~VUS?P zhQcs9$(D5t$1YEKeL{#CB_kpcd?-xh9RmAnG?dhZ5>j}QAX#^MJAS3~$5 zbIopd&f+^9h)zp5XhAQq*gWVUKqkeS9^F85O%ZmBUe(`9>vd;aY!=__^sU%r4g2sx z*ukcW=+H6Y8E5jGu)|{4(8Dzh6Ow}nZY&Ds`(cRdJ0C@^ASUi3d}4%p?ExA8wK z{x7%gepjcv|2>~C*!TBeJN7IB9mWQ)S-B}mT4T%y4tS*jAxalQcnBUUq(FJnKsG@O z>W(iLj11)JQ`WlVj@y-M+WkLy&ZjE9y8{f_HQ*__9#yiM*b)xj$G1^kaDva$enA9U z|CpB_;^loa1#uRUFmxE6mrC>*cvZ{!G0IIl){^BDtL^#k>k^>BRPTr_LWquI8W_OZ zhVm?4YTmI=)MQrNtQwRa3QoB=pDP2=lI@5U<704%QOIF5fM?NT^MXmCs|E-VKm-P_ z8_Lync;80dou-4ztLm?G-%<=&^xXkba+26&i0$XJm=xluPz09hu1^c{n>EK+;Y~Tm zzxWwUNN4|d#`?4e{l(os%keywyuDWs$C3LxeHXd+&uhOgzDH^D{+j&H!NT3m?;5w= zcs%Z=eyO<{ybkvSp-m~e&RT#5e_(Oq2Z-={|CiPMKX2n)hwW;++f7e!zRw*E(`|Uxqg$PM=N?%By_c^elRuWnM{##|E1K==%c!%?bnfNJ?d>Ze6@jdlD9LR# zMliD=mO~$mq8lnXFe+u)q6jd@zkfU7h?jUMN9cR?BuY{B<(-BCKf6D}c4+IpcRs`U zi*2v;2jPEN&QTX5=n(lwIv-lv0L7U3!u^RQ^G^8VC=<`9Nc%j-$rd0n^Q4#~W$(no ziKlJ^F!ya%I-aiVM*m9g%Npmt+FS+*%%&RXypsXlrOO0hPmge; zm-|~kvoLw#q;+3CSYLPee-po)d3&^UP(j4M+oLlW!0PvZFN>>Rs>;8iCm4sTb|P3& zge(Kj0*F&4dEjsqk5s}w|1(Lm8TCb&i)&F0iW4E^tHTGH;z^gYsbSqqTISYTPo}|V zu>L^E;v0X1z5cg{LGiAG)xYcazvW?wUi#Dhdc;Iq*zMU_i3q_jyd)Ty@J@40tX5vf z8iU9q1D|f#io9^tAha5?K$JDyRPA|ct}Y&oUrP+DTFMMCg%``0R(&s6EhFKSIt!Cn z;VZ7jmyz0vRS`m?(<$dz4>+o5EUXj<4-oNE6i?DF4OInbMl8uJ9J%{RaQ4mRnFm|l zf8)q>(8RX}Q>BM>5;}Y-YfQE(DVT{H$sCn6ag^t0>3*`BrL;zn_C&TEy<)P8nMW)H zgUEn52kJ6g(O~|Fu!e?xT#IYhLyMosS z#clUUvg3G?8vOoucgqfV%b6bH1HNHuYM(p72i^@np9I4!BARJ2e7RVqX_)Si+bGD0 zDcb@#h5~zot`6FB5(r3lcT(j7>Z;~qC8Jhw5S0=clGc^wRRjI^cH7Ni;AOu%_?Dp<{-5WjvAg@x z0CD~7k0H-Nb{$D0QAs6(W`%(u56wvsKV8l7ltk|}_wpoVQ3op5pg(h!JLvKth!cDd z1#jIKk`{lCU#%zltUspzJG)`b5BWK{Hf;RA+{j_WfLd)7S9#PvXRRoqYZ4qrBCXbd zgp0~~WOAJgR2(QkJ~w(ALUxUW9EdEPlvS}HLq5=Oa&|`k{_NWaB&@7I&wttegLDz7 z*`fh__HN}IQ=_9z&mb{`RP9WjlV>(x$iCmLcKwgu{onN7XlD*jI5+$)>|K{>zrdnL7sVZoZv{Zk+a~7;tOGbH2Qz9KSCD7>@RLOO<3%KPu zDUOZnWQVCxy|MmQaM7`5vVTA9VUHcw*L@mNkgNkO&>TuG=eX|42M!2ypp~><1Y|L> zL|lYrrP|@!oUheh?qqrSywntdCv8kh^M()bc?3YyNx@{htSsAn?enKec%1g2QqmS6 zu*c`kR<6MXg@fx#)ZpMOd@p4H2|8hV^@CK&k?UaQBUTqYgg?^M z=%U44Z2fqkgKV|2?o1ttR}=^k1PN5?igeNV)A4}SFd7u&2^s505^n8eX80?GmCcK`_w7xc z%e7#%q{Ur=;#N^tC5usCISE57F6=BRr4xlIP6d$5iIWnUFz9-JxT_==BF9&u@m02& zzKAj1D0J*YP;Ou?5FF&@7zRW{Krn^+8!qc>bG+Ui7r8s5w!(0*qXD`sSCv+SVSwmL>>ge?Qcswm2IXJoov=RYk4hnatB-7?&xJX$(z zrdc=mZ?VYU_o17me@yuL(XFMrMwo0optKBsmZxI^G&t2X6Fm>UF5EQN%}ic zSJA!9vw}XR%=vk_Xvw^g>E)x9Dbd!*aAsyE+@FoZiOV3s>dB^eol$JSW$dDVYk z;N|dK#}KwiqAWx%@kCWN&L607XX1M=TZ)Bq{2LF7Gkzx}LA%~5zrYc=>`65DadeL`7<`q zJWgTrDR6M0EX27(79|UOuc(ofxbD_%F|nxFM8Xe@q4kHX)egp&O&}_?X-}M4 z4#d=nrwe@0n-GN(3IrP6VA+Kzoz8YrN|Ct}I}6Ow5<&tJ6-+gh=++K|qg3Ma5oEzb zCBu*?hYm%-(W;t`Wt!JFyRmoHlJ?CB1j6K&z2QUXxD9w*GJ`RT2>6&0C>mqz&L+Ya zJ1|fYl|mLU%(x-4J8@MRBB(7XEek;ciduGZ9k*iFrMayLoHsYnYo+4(%gBt95QRLf zo#vs7QUwUeioL8Hi!$=kfHoGFB5!sblxEavrXwj8Hx3G5!eT6io-CMcp=`v`wOSgK zv%wIdA({h#!kP;lDu}w>gTyVIWa=>C9wfU4Ep)-KEoD+|ElBM+gxKpCd16>QjYYMo zH9KbKRaGD)8y00bLUP$>BwQ-BJIWgyQsxbctLEbjTrrkmy1UCKTSR47jVWHF)Q~vP zNXcDAw6I{J5d_Ewc2XqB@(cr~>MpF(5DCXvB-ou&(-~c?qTnV9pYIz{ve-~XAV?dK zD1xBephjcZmL=|*KS%K_9njh#MjK-C?4|ZbjO^NySQj>sY_|CXX`qXk*$Jr-^|BdQ zxt;r>y@V^78z=cA`lvwpkpmf)Hzg>7Mud2T5Bfi6cV=yPpYkCj>>+Y(>r6@FNEEsF z<@(v-M(^fyD5y_1{c{&|J*^Xd5e>S8AZ~BQ*^|eyY#@fV+U&lwwEKI$ z+u`N+`$rht_{1D)G1Kex&6=G44y6b?=&U_aUXJy82Mf{^=8rm%3JzyLqy!+pOyDr6%fDF3q;A^-SF%E#Sy_|{ zFgtCl%rzK^YJ$G*;Eqq5he-R+vxJ|Otx|l$zEV>4boP6aJ$5V3Y5bPsx{xDbon9;l zU?dAgt`_F<%kIG>-<-mYsY7gZ^y#xJl?y;N>agZ)nVtsTw>(i=!#_8qV6%OA;*Dm? zt%ODrE~7V-2t&)t$H7*z8M`g+n6-$QTS_j3Y?|HVy}U#|W_l_uysA667%;7#LgG1j zBJwfJZt_ce88vXTIhuVJ3WEtXDIppIc=vd4hGx~nwyT=8l6>^hkrA?yh{?L9gmWtu z8Bs>Ao_rbgv{a|=!6c{%OnBoVD{Yk@4wld+{GHEHa0O-*{Kc zfg%P2$y({5no@cPNuJjBWAk66Vxv@Ik4*_fqZL}y`#F9`tk>%|wy$2!VvpX`oDZj^XV~iYAESmMyS@EkYqRA?gRh(Q=#LTc&c!@%` zWs<>3ND7Y)ZC{bR;Ox09bbq&h;kN1bT@P+X))BC}y>Vj!;qHPrqt3E90zit2==W#0 zizp@uD_Sd58T6x7vqU4hL@$sDgC+3T^z?1*C23k7ddAsu$_JWy&C7hV{QVXiMs1kF zLVU2!mq?wPq`jyyLg>A3Vlmim9-yU;sWk}KHuO&Hh92~bj^B$V4B|GmvdBTv0q0Ob7)3wvZ&q7zI&5lbxvp*-JerRnh7%LXVgI$P%5Hk%nqFbM|4lk*&G_N!Y3>04`}+eQxO z_TK1#!iok#yeM%Wn#(aa^_`5LUfm16gak6J0UD!2Ao~a@d}SIXhknxS9Vho|>Z*b} z7`>u)VaN0T-=8^nph6V4> zv>mY46@E1oMAEaIEG;kuX3rJc{tIlY8N5&SlqdCSq!M3tmA3wQXp z8jTB)i5G2-!fg_B$i%d4pjFk`h=fRc;t|40h$s&v>k$DHlPuWud&PCTwJ)Mk>;mi{ zd6@X9<}5Qohw}Th*0ZLgX&w)5kArM&_DLDI{?1#>2`!*85X29)X4I ze)u`= ze>W>J46R?6#<+%p7xd8dMH8%9ewgiv40p04g8}6Eqp}SY7`qBQ$E_ z1Abfb%@JzGIS2B_SGERs2q5xNvIfEXtTJ;Az0?ph+Ib##t?GDwVtSt2#_gw~?B*;{ z@0x%viX8v7`IgI-bOm<}m4;zd=LwAc`wlg->|7GM+4ViuWs#1gh}(%F)fiI!azqP`M~&9buzmA`*bX*&Y#5pj9!JOy82*YizkMT@ z0%x5#f&-Tk0npE8iz}Kjq-AAmFcE9SaI--8sf|Z_k`Ap1L$e?V8g09bev9?LbsT@E$E2 zILNe!c(m|_ZUyXIUwxX$xJ}!}?O|BAaJl1Yjbr@VX(hx5Gz=B>Y>UMZ*DW_bcfGAO z`kPj+&JC+0HZ98}I=C%1lcjwZ;Jo!$@kYBPT1-nE+6^aPDQPoLz-|C(~##nyq zmzP8T;{)~Y)pU$WU5aJb!;$nSrxrLG?sg)Q_vuLHG9~`f*`RImgdn_DE@jb*#G*Tv zuZO7|BNNq}P!U*AW}*v9`Uek9H-%ew<6LI*c)UdYF?$M!qv~YMZ$r z!i58>P~BsZ+7-NqQDF1zaMV{c(|A)qY`%-^l1ZdFa|vLHKpU~=dk0DR42veSK-(VG zIACR83W$+Zmc=ax2Q_(rkO?7O8y}i!msFye#Cumg&l>fN?{2C~M4L!`4;&6%8!ZtA zNyLm4YqeC+Eeb3ZmVRb*;6HM##-o|E6P2iRs|v~QB~*Q?$p=diHW1;wby=-b-0u`1^CqEyMe)-eDc0vM*fZ79#2n8en zDGyqwBm@Jb8L4}1Rew`cNsMivQfUl23QI&bx!QnHOS|OaFU~(1a91Gl>@TGRfX{67 zqG1$ck|9AL8X6^yVn2%461y&$7XuF} zba8)c221VOHEVA}W0uQft`nov8#Jo)z@vsNVJXcE5Re1#Ts|^nr|3X5EHs{f9VM2v zzwNYoIoaB!ecM7pLN~G<%rq$s5ZO2Gh7<&(R#FeRkaSHL@yBKQGQA^ABm8m#JU_*; zf$oop%CP@pg>8@U$CGYTA@>3|E%6CdX%r$3meGrY!KHjFr;AKo(vlyU z4nzP!0uNkmg^mVUY2RbiH5GfYX4vFpLaRaa8B&&TuZHerN;O$<5=jg(#XV8oYHvTG z$ouG~{BFOwtMQHQ$T?|UOE)JEptINzjKKdiIHkx;fw~MZL`KGvPYM|vsS9}n7`1X6ZZ*%F*3G4w2xf-%huav2 zMWz*PL>&(jTAyuO+Lpv%5j$?MVckFoiWCABEO0N;f6f-V$YDXIk;UQs_j59_vr&0) zWpwsCL<9NxM28zlRjpYyOtyo_K50xpeZsCoj(E~svQ?=%hvBWikXuhQOoO z?8kcKSl5&cVtfj*p##A!6@uz$hHU;24M6rD2w;O1bA-5*O|e^KWMj#DUK_%RY69no zjDm9vAtkA5%-LITi#A`5u8-dSkN@xZKc@Xx`S17tv;Ob<@8EyN{vrAQ$@9PO`#xUI*W1E8&i0bn z-@S-Uv4Gb63K!}3(xhRaqReK(Xo@l^5tyKuFtDGFyI*Zx1M|(&QzIaQ_dU8Hjo+%g z@RXJ@NrN7MV!?Gx(3tUV4m$i6Akc*rJk?88pf5+<_63C=nwF zG_?(VPJ)J7839M={rkq5OsG(-5it-*TLIo?*xMUreRcFGn8AZi z8434({|>u_+wgTgruTLApKHj!zx!;T7q#YlO`WEh>Ngsvp+lAq#2ojg$K{8u`j;b=+A|95|Rxwe;~MtBtu=89Q`N(!O)T< zp6W5NK9NQ~k;T2_+03X^vD0Wpj8rjL0mT6*oCi+(pXcUu=PA|x4owBDG3>Q1&TuS> z)TtwD+xwS_v+eXqlDbMsweEk=*@ACqx^C?HLD03kJfV@8OtUULJ8P+ywzN1oTy(l} z=PqnadvIb6UCY9T^cM^{cj6oH69@s^O@=Mm{}}#K(_-F7e6#Hm8|)bKNJTa!sF_2} z)dP4R`Aj{J$MC-4`j9FA!LH>%4;$ySe~%P8iury5e;AH5PKO%=vUEL{@q4D z4?!3ckKU3}9dZUkA(?KINQ(KM14IXFO$t*u>lhpVukL?ahg-J&ey;#GK*+!GevBV8 z{+9F>!f|9<1Gr+h0^etMd(8HQ+HV71C5@1%h7WipD}x|*dWRo=Z-5?nfXtK-^C@yP# z6rb&2uknAt=GlYX`kscNqG(%LTLREA)9RvUCF8b%S<%+aU(5WA7uuXV?}%u9*skxgYYd3xm4}M-w#j~4 z=%F|)(?{)3PM^%7xFeYiYySk3>au3avZh%oUgdAQdjGyq(2<7(9ud`9Bh!sQmZFR+y-)rUDyev5Ynxd|&%@z1D00b}yg6j^iA` znJ8?G(t=qm3N zKWO%Mh>LP&q4>R!NK8{(C)0>nM za~D8;u4r3-Ypx}}gj!CsY6jC_+Otr_^{o=o=vs!A8*tNU4;7K^&G9C^-j(vVKz1sw zTQS{<#Ujf0v>)X8X_5BBEUROX1u05G0YO0t0zIrCTG|14A3M7KxjsC1{kc!1&d>U* z?tKTUvESoI(XWuPb$WOY=yRk zjAOm~tKaJ&ffpo!Q3v5l`(^ZvPuG;uB&)VPx%Gii_|!<&@7-LaFJ#$hCtj{Y;K-sq zSmxz^>b~8{h+o(k#r~H-Rb;Aw-5l-k*`i{A06OY25Kv%YYm}?jc@?H|cgX!_1aXFL z8^a2MJ?Od3kCf-*BwgvUC&1D?%S2hyXBjo?*!t4%{-hiU=JQgli(jUiXs9uY6Y;AWB-&< zl9!mCL9- zF=Txyf4@Oo**mt&r`pX<^;1SD@`ax6ZwK*sr5C9Yfq3(g7PY6<8HJX{Pr=|fa`D6; z(xIra0TB@^G@~|@o2WajR~OJ1CZfCX;22f^` z-yMkr_QHW+N#U1qwHoR ze4bSEj|gu)H#@WGmmhV`)5Z54r5Ot@9?xVEho|Lj+ z_n0&fU>;+s;d#$sify({97?C0`Ik6G>5fT7Fx%z@i0uUuHZ=lO3E}B&3I>08^e7kd zeZRuptc^ypwp_vR;kjHs_C+_58MG`urK1>=b5G2!V7zc>cq8CDwMns`be&CBNdg=2 zG}=lM7&Ch=qjMMQLKz5#$ZzKKFyo$yRpYIuQSjJlcQmFeA*dT*S*ZUfGwoT>_dP!Q zxSIERG-h$g`m6&#{som;5!@sE4+z#8S=hz{VPVUHCY+@bH!vm0#zr9v%@}7%5+pkE zZA3}aAiH;$S}V95P?H^+m|HxrK%Igr#Tl4hFMi;<=blA{4|TIW0LL7A>}Qt;OD{nR zUqqsXkVgts$4XZ8gveDG$DrZclyek!zWlEiTB>S0Vx;GSRgk6bhEtMBJ;4V1 z9yBrz$ByN}Y}MPk>LXsRK|qHNs5x>>CkQ5ANHpkLzZJohI>jvRcy_swL=z$#LO680 z$5jHrAs=zC*6YL9RAm+l zmm3D7K~1&uRxYuZ7josu8swcC9@E}yo}yEV;L#U>jwsskB`eK_LpeuM`aBaUFtYqT zYmPS)d)+fvP>z@%Ej{s_ctSUkebwOycbm2564j6D)fabT`Cef1cZ}$G1Q9sb*G-|1 z+G(ROJx-#}Hkp;(;A7hYacKueDN6T_*p?O?=0 z!e`6jAG@8r$aFj@z2oKq%e4Wu*Awg}&s$ow<=4PIj294aCg`v)g zG9tlLG`4cZf_pEw9gM8?ftEuR3{fltLv>ta-A*v~7hH1ji3ZFQZj$H2b+Xu#u#Ly$ zbGBQYqbdbvaUBIZ)TPb|djz}`M6mZ0QCoUAP)F+gcVBq%&V5FEj*j8sx32(IJtU>! z0@=KePAVNZnjeZ39;+F&4hGaldNspTDaCf$2Q&U!u)gs7vAmFMH1s`(aIxKO#Jz<~ zxsKl|vg}=|?!}{2`|4;}2}p{knOs%UphRI4bDXod%5({EC|vYuJibir;&#lr9tW6KSu^{~vCMT;NTDGGO%NfUGZczyxASt>HP^g2g5B#&UcC9w_%1SxG2 zFrqSdtj&dyg9md!QIKHU1?jn05<<$>3PMS>E694vg7ATLlFV|8aF2Bm^~e#gmLBU~ z9(#=Yy$e(ya_-ks6lSbR0;TXjbHk9Kv?RiD;O~(Q;CL53v$I9j|2|3#m;VftpgIm$=1zy0XCfGep zHM2woy7nV3ZVR6dL9+mHf$-}$>5{l^6W;UgMtqfa?!^LD0Dx51nieFb0~FWAI$g+W zCoNAKWJ5k>##Vv`LbQ@eB_$~mNhFddi8_Tl@@7Mm1M`THr2igadHArF>CxhN6` z?35ZoRgy^cjO>&j5g2Z@DW#RJ?LZ-autFJT#*7(IpmY82#O07C=zp{F(2>>%49SB7 zVi$VDNv%`nX6SzUE<0v%$F}nxtM`67-#pU3R_j~qCHTw^FNLJ;IPFYM{dOK!Ay7(F zbFbx;(Fg%$%J~ze*CnS3nP5G6avx8j$^vLZ4qFLaj>8X^ryNW0Wli&NAW)^0F?v&b z3tz7Nw;Ds~OeagN{(GTVNf>e|cW!}o)>21l83?T+L}J&oT1jK9|0Q->w@Vdtmf=|t zkqX8WO001Es<``6Gh<&wKW{Uw{?X7atfTxEU1gf@SD|5eI@bOtGV7Q$#hmHN$51CC zY6`(>s8$-_Z8g{a28uPYg}Pd`XR|ia{KMH5ct#XQEQ1lg0Nt$CNQ z=w3`KCv*0MVbJ-%@YwHN+|Vm&2#aRNOkK!**?$P^j%-WOb|M1A zBI4OrJWj7uhweg{SdNlJfmy^k*9u-notU%i;uQx^%c_gn|HH?;zlwRU)JKWu8IK)f zieYVy`p>V%0XfOi4eOgy)J|)S=^X)u4%0d`z&I?_B`tWb4oM6MNKc1sC+x{Di&22) zvPG>59VV$*hZ|JaKGI#w5N^bE7APrK1spqhU8ZSh=q0?U;KeUq{v|15vMPI4Kp@&< zWeX^b!!ECi!W_Asn4Lbk0fbyg|4mgXJO#*D7gIl@tA)(1ha|}f|cGykgY*h z5~;66i9?Bo5iTQzT5%@*nDPu5B6(k#Cc4@psiJtg9G#+s&S)xxWTDy_`+RO$4j`(5 z+0!_qX5wJ567kNhmtie}8)T_5M3$C`rTuk{3)Yn+hR@iMv5aDJEpy&GY5kWF|qa6P+D@~J9m|fdAoDv=F59kvq67NhSxB7G~P;RotayLXru=O zDY7Y1M6jTnGo{St)G%d0z;-T2%+T;uB&49IqQFo~&&hbnas#=uL`!FRqc!XN{NZ?H!5twBj)ywv9VazjHRnhU}cpo^|}U zj?9yHneb=lbnK^wJN(GDp5Cs`Aka4i#d9S2^;5q<%Y3u)YUW9YTT^n5h7D{xz7)Nk zep>mz)aQ<}yIpeXM0n9!1DKBuz{cpv7<-0~Etdb^#k(8E?KL4rUALu#kPZ-Fi+h?$ zCTJK$0!bj*dx`TXx6#Y!>KJ?j{BxN4gX-g58VAYT%=;Dt@K<}7cU7OOHf5S-YWUx# zl>zVT5lgt`mCi;a8ALWx*H4{S*xWBL)QL8=lr_{Z7eoJEEgR`4vmgNiQBr3OCv1Fo+-mBxQyv@Cd4EHO+c}|khn0os4--)4rP-9i6ug^0mujq zBghG3ebXj1SG%bvL=l#DLNW_<7rtUd)@hZ|8t@8S7fUMI@qm;sg^8tFK!we+cyKUX zrEjC6VSuAaE0MlVuOXe0LL|N05P>tGp@A(mCh#5zIGSQ{g1BRPd@dj~rP?)Es*Bwe z8!=#SX@n$ZcRC!YLX0ARbtfS2m0g4>Xu9uHK#JP6A>N&B_*_VjA!wd4t~Jkg#W2yT zY`pAus(2yUqD!+R7z=lXcPPlHkYMd@u&`zC7p}MClgn_>dF%7c*T<5~Yz#h(3%D5j zs6kf7HaySBo3rnJ9g4PnjbmxxckxGl(}1fmK|UwB*Ai)9!WJCt2M74*A~_0-C7)ZK zKYQ5Uu2>C25dB~F!>#-hy2qInR+DxTZtG&2nw>TPZQG$10scn+Dw0? zyU5QKBwHghxDKLMkvvKGR#1gsjIo8Xxlonl5H1IS=B)ke-mz5QiyG$JypJJ!eB;H1 z6!L_a=0{zcEX-xG3D!o^8r}ynzc*U_E{X_IO)5FpCRuhp2V#qhh3bCP{LN-20<|PV z1egsZaf%7$mxzM=NE~p(G02G>Dm$69sg zevIYRy&n%7jgv#T&{}WnBclLDsjLBT?2Z-G(qRS-)b|TN#4jVvAG^BU#;8Z)b&v^E z-bSrI+G;d2?mL>oQC<>4k;?`h0v36RU1X8|iWcl*s3tc(^iN}0*nU-YO=l`R#Uzro zViG_zWTLZ-i*@6kr%p@_OA6iPYUki4V(>xGTh)EXu^}XFEwpXVkcWVEI}XO%E-h+L zy!Ss<^1jpA9Q>EN<9(}IRf16fSgeYRj_0a9GI0uy;ex`iVhce)QcEqI_}852SI^*4 z{E6$FxCYTJ%*)0$JsZMhbY(m*lqhGF6_sFOz18-yywi~ZAo#p9Lx`B}6>lIGxCoZ! z13D-`BRJm;1u&yI8=cSl?<9nYWT6gTBsiri>VsT`1js{)fmUT8EwYM+Cani+0lA8N z`b*zNo>4=V19ebIJ(_0#iH z8PORIpK+mgFI6FgcU9xZ@bYj|Q3iLw7st&gVx%QTbh*_l@4LKidj~_xzmM&&LoCk6 zOL*F$zZ26H4jGk@xkl>ODwt0&;e@RM=%rQf^wCJGSq{5;;y~!paKR1SO0EP_F;Pt+ zqMyzF6eN%bSOx^;^?^tU8ctXQlJ#LC1ZX+#YJk27z#fNOdB;&tB*`c< zAkzoCk`UJe1)W4DWKsZb3(J5YZTPt*E_H%cTkU#drDul`_^wggXuCIvw}39r*m(-+xh-*WN_xGVNOD zv;51SD)a-LZ)bJ*)GLFXfED0zL+O&kXs^G}swNpxOr5UGvNzKJK_HL-Sr(>U+#fcJUA3#kkbQofthc``=lYI2@9a*chg+)ef>WIYfr0xX);0FuS72 z-W623(-%D*h|?I!o#L4VO2w-|9C_78ySTbVFvYXPaRuYn?2%4kW;zZE{5FjrtA?G1 z&rvtdL_g29tcuWQU{eL!>_ZW>h(sr8J{{MbZ{YxwO1${(Rfs2CvAO|M?Nmn9;(?4x zagPuy121-$Q_m}ei%*EO0DA&51nyR>ax=JI#RE`NrDK)M`>)vf-5ca0VKy46bJuA^ zBwbXPX-Yt5Q7x!}3e+`RZR>I#k}PE0s384?-^uu1?=j8erk@u4D++x-r25($3A<~1 zjTu@oVxljCx}cNi6`*F%P*OaDaVseCkOeS~p)sSFN)|3+nNqR(sR78V5m*)=z6H*O zXzRo@Bm?A z)|d}0vpT7A(Nur}`1{T}hk*$MK!mEms>6Y;Ls&S2@M740cXolKWa3q= z`Aw;S`~T!Fhk7J&m$#GEt;`p}Ijp6jnWZEa4iy$2VXX+tg(QPb{TPw9e`x>Y=Y7}u zyq=%gLca#dt)s`D;R0j9RMxF-S~xivyR0}6F?C;>a2sIO6q7QuIa;i&S^gE~YJw&; zZ{q#G7nj5D{cn@#{LJ=nAr3@&N|V9=ea|RBispZ$@$fRN&rNy$m2@puIud)|Kk7eE z^mL7Uh`KMfeo58PH*rKQN+5-F{C7{bx;ezJwrCF`!;}(w6!B}+af^mrSW5D+LE1UI@E4KNT-XU9Q37(I zg-ZdGlg&UHP&Qq5Ik6X)5SCQ)QQjYe%<=u;R=Y`Iq;y_cDgQG9f`-D8TM26 zwL2gBlU;rO^x>C;>fk9pqJ${%<+52De8kj+7On#Hyi+vtIi!6qhhbV(^S&?FPv2Ox z>ST)dR(2sm7^x}25HK1)OUS@&mmXcmcf&#0oquMoe?_UVR!{f2?fB|JZ`vj(xGJddDi z9$njVd4f-Y4&H(V7FEs6alngIHQ=e*C4&dZ+0wdmh7h)PcJJc4h(kANK*gc$96T~e zM5gby&PhdOAV<|7KafM(NsA;jcP4{_onRRUR|Pcp)QLPeW5%Sh#)8H;G-dqV`tFyZM>G) z|Lo|GKVy>amQwlZ+1~PG@Ho8c{zpy+r`+{3f2UK)t6zQZyxEBw0DV{xcq& zqLCYxQlPiW#q(leYv0LGO3*9Gu{6B_#w^U7##`)lt(C7)P+V?X8L#er1N6q2^`lVE=dLS*dryZbb}h#BKH~G$j!HfPJJ~N-Q4SNTr53 zM$-EEyjg;UxcMkt_Ln>}tvNl* zss@H^z{KEpA6rVX`{qOc`4<+;!80`4@ArG`ZKHpGLRvChN(O3hJ0qs8!YTGm0QW?q zyKBL%P9WR&zeUG=(&AL~k%37CC?ojTAd2QL&v9%T0}E2{(KlErHNH+Si@$dXm0wHl zOrQ7I!t@zJ7X36LQL z5E;m>{#sm;%>P~nhG5lhXCSUlRWla`YvJ!wKVg|)L-%V<9!EH8A_2JN@>j6!Yf+X= zZ@)gB-kbdIWohEUqkj;{*xMdhN7-cTzR5BTrFdciq- zEO(paSa9WWG5k57Y5$uy__u2vQ+2WIKL~+}uXF^Ahd3p++wS)rPss2)Y%F~iz!!(a zA5jPZ09^+B4>e!MZznT5FORVj5d;RT3b&pSLzH`{Im0hgR$wHEIOOa0SK@K7cow;s zSX8sBqZ!#X8mm(j;)x0&Mkt966kY|9j?bI|Cjj}rhNYXPS^w7W?foAU^uE8@b)V?X zn^VZrP3mKC!Lp2i`8yG-ol;-^J+EEb)AYIApTx~yAT-Pd{S8AZ4TWmi1!J&BVr9dv zw{K#{=eR+~j#p>@Ani42l(Lcce5sMM5CKbKlJEqCTDr8(rc7l&rPx`uxmD_OFuUG$ zWn9}mM_&<{8i0#W>Tm$ON4d7nA18o}F$gOT4pS&Fct=+MsJw!#s=UCaSiqUdo^tHm zZm0CG?>^7Jxb3uymM?f6?rU?Rh>apnH2q_a1!Ce*UJn$xGczDK^APfR(9dXBo$+{V zT({|ZerZ!N?6{Cbx~T)T>NN^dQ%rvZ^Zb8>=aNp|nOHjL_7iWsYyD=&m9Qa}$@zV{ zjEXlXL5^%jNHUrR5xIzniQe>hw?6jh6QO!_Q*XCi;srHK`H`ShA$g z-mq;@qYG2Pp$@u7{s4n~KQ~Q>XQ(@?-f&&n`#xjO2=oYI#CC{dGLrmmF$3^$C+!mN zW7GCq*wey3CJ4yXaNe|P^D`k3%vn^i3Q(~uw^vtx3%K@>iza3kSqyRhmFdg`73X_c zU@ep;yE4y50S|<2uu2D27$f^9UnM8l1mrxclrZ^~eu|3InAZbUfDD$0#sC)AC0IlN z7a+eXPz~Je?xC}`5rSpeZTz-C(%#E^;xIIhc(QPx7~{7WS>0YX2(aw}m%_{lsvWRD zGF(DuYo|Q=WMzbPxhZS?+Gq;=xW+1NWt@d7C*P2O&#wRposJK?h_hPZeSs5dx1e$gzHp zuCZpk?k?`j0Rcu$03u|iB{^IgP-*O*$uM{miM38ogUG(-v#2BJuT%dSItPyobLwST zx(ATS2lw!!{Y)Sq5O60(vb=@fe*%1wnXYbr@r{I+@DW#1r(YJT?*Xh`hBJ^w24yls zcOL2i7Vw-S1Ax|Kt+^g2cNBEktyG@@?Y*?YO0)Y)=+%S_a zcJ#5b2vS&d7_T+ZZtV)IIgDR+QOP$%7=;j4PzD_~n!agxkv5S57C4&ueixn+5!8iM zONwLbK!i+!0wOz20phW6nxbGfgRN)YQ~Y0VVg|jW5GLytnlf0}s_NALg%Jf@AS&gG zT1vDbLlETdo^#H69nNoFx#;xlY`osQ?Z|@x5@HOfZAxrPEU*a(gpq?{=@m*)8e?N? z@Ik8$DL~Olg;;=?fQBzh>F2K7%1K?_%Y|2a`n|ocZHl6UfTS3I#ZgWaD^r%C0zsmQ zKc-;-Xn=(jK_r+qSArchjRQvKAUg3PvL|%abCb_9n^Le00A%b3gAJ*r2H&xYyiBc{uWXjGAu&h9&D%2`3 zYEFgtwDrta#xF&|%dnU@qIBKxoF)nE)Dx)QD~5Vkmdly*;pw+I)#{frAVO2JC>|%V z0~lFXHA3FKB=e1y5IX`yj*8^9&CBJRS;u+QV)*Pn!rZ>Da;viPQo@$w=l21NU15R% zCQt#GUdpd9{-tcKU3TwtPBZjmcoL{E?M^_J5!JKPh(w7b2%1EK0IZK%c3$#qEMu;< z1Kf!+9O-a|2!fpvWJsf-$?CN@0%Ghce(Y*;6U!>3YC!@<8rCt#s7 z|cmhba4iWxwyRqxih)JuK@D`jQvAecx$S`QIdmkuw6W@~!SyPqx!# zz!L`&Z6o5}!R{Re+%K=|dNUGpS5!^sej}{`<JQD}0b>BLI1R|5k zl;?WhTsS*xz17~!z>ABX3|(`F7~l9cs4@VOGV}&)z*OGKt4t&Br{$Y4Ac9C3G@=ZJ z2~rv$DMUd6&k0TuY^&;Ai+a z{z-VNdTcm+tUq3CL}vf>%xcsp_Ywwt>g4^9-)9?0y0HPE*UW9X+t@9;wXp1Rt4Ajd zF!$`^xXwq4myk_{`tL|5hxPEy9KT2Sgm9|#m0|c7gloDb7TJd{<(HfHzv1^e6)(W1 zQJhLO$H%_Dc^~~v=xhBGc_@~kdTwUD`t6yH*(b9(CLYt<_q~nFirAM;5%&wOaXx(i z9A#2x(wW{r!xUS?vZEhB!1q6}_hfe8Uu89}x%%SqGz2A~h?ZTs-;W}Xl)l)cg@mVx z&rdK^VRwaISdK28w-Q0^>@*0FLP|-Z2qr-VMpE-Dz8s%u_)2b9ET3n~;+Ed`i$eS@ zt|t9R8KY8vzXu#Bc6$-o^sA(GtPb^hjLhtg)^!XDgL~9_>vk{VQaULzG64+7TC`+G z5fMgFa=_CwKOyU6|5@|k@Kvqr^pEKlspXq)c5-WLD&g}4mcfa4AfgSL*10!JDn)KA zsuiQrVEU=1gM;~n%G~%arB%(HfiuMhhCIt!eItS9ijlJ}6DY;qFg73XzU550q@fZ? zn^rzbdYTvTnrZeP=He|p&3_{1^PaEOKXh5+)SQkCAdO8aVi+>R_~_yI5t^Q5iL-ql z3Mh0$AijEhwg|}olixsh>-=Wi{T_d zjO)DZVP`Y5u(B2BVabEE=Vq8JxhW>Zd6@F|YAn}>btWb>ZW@qpOUnB`g+k?@G?t{a z#z;E%LvSHgzS4&LP~HDR@Xr^FLbj_CG%z+?=XktEn_7?ED9gu}Wga^YA^>`wlITY* zl;RB<+#0ZvWVQ?pkSqBKK>n$)kX`l&(hCHl8Kkt&@;GG(#-BsUN?n%LG=Y_!|7+*? z|BW>^bu+GJ3{+wp1lm_ILm`6aG924LavI`r;TRgJ3e9b6+@D!KRBiw+w*$#cMUD(W zr_fjx>2)V%T!w6x!(;O7DbMzhv1ES2*n=PMo{8r`(GK}P^DZL(%Z)?O{+IV6UdT|p zB+I5F^Nsp4#6S#+?{DTyoO(pdmO(xxr2>;OBV3C`)P^&~oy!qD!r+cOSz08ukGnlO zC;SH0bj|5i&@b`6nC`Y8(ck%9Obz^o-a8Mp;O!aNr$ME49vl(CE8bo8hD+hb#@y3= zkkmT92ET#v_9Efc!#5hxY(HgK&e7-fkb<6zr?3?D`p)j+K%!RFQv!L@Je9nROd*+x z-!9oq^emp+hi-$JzE-KFoaA~#uxgN?Ze+#eGRm`oM^Yq;sjVDQl_m-_VB#%{7v8Ls zqJr`oq4*zTV%S@wWS6hnp_@Qp!2L!hL6N+|C&c3Q=5D0%88Eqa=u;UovtwrIRUmLJ zMmHim;5frdGdB=yglbtTd4*BWk4|uzzFh9QXGM zh15W$L^5_MdsNMUwS`F?Le3?w`QP3on=Ii!N@ME3a~U|T?5-O_VS5#R3tUcNn}@GP zovP&2$aJkUbewJ|2QI9 z0TU5YU7sI#q zjQ5>y%gHGf@feLmW>Zi?K9Sy?$10-k*72e)HLa%M>`n;cY6NcsFH;_Hy$21ZaI{G% zz*8tMAo{-oGgz!Gjyf3@Tet`w>f{B@2N*hTrs{t`4df6HDn$!^Y6KGDNKwji%QQ6QIKTfF9Ok*i){T~7 zT`d$#mD%a)WQ6|TqiE?A)t{^8Y{bvk={;1#U%QhtodVH+5$BDE9s$vr$XX?mD7G#_ zwa*_4G30PS;xWZ5Lr5_Q4Xl_)-IIkTCt`#KS|Og;*g9WF6_zPp4OL5fn>|%qKdlpp zgW)7=qokcnwQ4B(Q46v(%YzoZ`}g5luuDb>8PS+M+w0txVbHqBCsuoBt~ukTTbO`s zbqQ>?1w{36wD8Sw>#*vI?)tCakg>z7O!C(~!i{FQ=yj0qFI93#o{@9Nl^cgW08-FO z`@V0KL)`SlJ~)hicj^KMWRuM?O}RmhlUoU=s3OZg55wn5=ad%&g|y{+$Vkx?nuNhy z%N!PzfkzBE)H1#dk`(p2%JLG>V9~YJyDZtm%g%@yQ9UgjMS)54a}o=Rw#CQnXEcpk z-V>=_itam%B$S8BlfLT)rXsg<+*kfB6DP4q>$@$39Tf))b9X z0IR!c1R{>d4a~O7Kx%hUKo3K;uysw+jv3Bm8w}B!9U({_H-~{i=>05eun__!EK@S3KY&n)N5VV;O@z)&To4$Zm0BACO7UEse(ttq*gYB$rtfn2`IVe*S*3TI)cZeRQu&v=)9D-BhEeag!2( zeWOE`9iD4UC)``GlJ<>vK?bFyVRS8bP&F_R4k-oHHA3XmrolxBAv12Z=2HK08EvS+Hi zPRNI3#l?MU-djkFkbz_21TqBMp9&DUe9N?Ex!ue_wQL(nTi}BjUU+ocrz_$1XgVes zNdt>!?!9ta)bw>QugUAAZR+~+S-Vg=HgpH|_c#*B=6+~lsL-Jie43AO_wn39Se(3L zBL~|e4u-di(C64DUVc~4)i5B0P9V<#W;7yYcC;mkej3eE7;$Nr#*G%m-MCqsC~pCG z%@nzepGnBxrz{v&nPrxOT`5d-&xzbbxbcunNm~-CAsuELL54nh%;I1eKNtdxV1@f- z$|SZ2851=?6i}9$+WJ!i#`q9(DPE?MJg3U@uAB3i@n234o`L-3LE5w9*mQ7dd~L@f z=dvhH$cow7JV;t$1(<}1k{C*Ih@Ch$L7itH(6i0}fu;jf_BB^eX|P^u1;%W_b*@1g zn7C)W+9XUf4A$Ry5y`4F6BJT9Of+s;N=jN8h&6FhuATW{iZxTD9~)i(iL}7Ygrnv9q(V-wPC-#5MJ@!=2kv)8|3^+*@=q%}_?@-j4?s zuD#A9$zolGwbotR){AaE{vB2JicPV#Te9EQ&^IRBlVV1SxAwGjcyjOcIQF|%!!SJ7 zY}3rfy=UI$$xgkK?)9vvf0j<4PnRn6ZbiA!o*~h~dtGZq?v$HP-oeAO#m9?W@uvmt zz0Ix*qiAN;XESQ9DcbF+aqn?9T$Sz~-RyPrwQ8j~ZWZ7r$FW0X>hvRtIjY{=;}N@? z%d2sHHKJ_CyGA+&#Ld&rX1sjPYH62~0OP*8ut#R~RN=E8E{^2wnQ)IzFk@==iD!y! z*+uJ@xSi4FGV}O$?^7PXLcz`L`u<-_KX5+dr`h(s*LmHJ8-8&}(EIrC9EkkbJW!P% zc@P|q*rpo+1my}9jS2=Xy$pB5dGLIorlF%oR9Jp{0#yhB%*qQzAUD#H5Yg+kZ_nhi z0^zLND@LmUie=D8VOd16w%6LR6<|9-*1Em;hTCI^*NA)Xt);vNA8g1TIkdcvDX(ql zzKNE)RJ*v5EEmaPW|!A~j0IbKW=1f!iOVXD&F1GIG!2cF5mb!HGU1K+>G^yVMNM}~ zou>kyg&)w$vZb24IYqXj4Gi}>G<7MR)E^-|1!Ej#=OD*j*i`B|l`6*fYW(Ou*^58C z-K1%v8Oa$PZ?-M>U;DRbG!6GIqdj7O=eS4D@lOBxsebJQX21?ATVYrAHf<4AD`Zf- zjme2}(51~XF6@}l!qvG4PYkAplR#1~Yz|?vNJp6DxaV7v=_ew&D{RHeE)*l(5yM!1 z%!pg6jB!h?_0IVjq)M=9g6intUa;3lQs(n@=)TB#+7t0PV)L_4y<`~;6%flNsLQK3 zY%_$KThh0wMqWfG`qNE1wvBmnOVzZ^Fm~?V#`{!fGck>%O5S!hH|wMX*#{N@1ErAL z*M2$-kV(G}>M@J>y|9+#jF4c3{>*;It4$G$4Hj7q5-iqwB;q-28XGROlA9N-aN5xX z159Y3V{p7LxZpUBN(BN4f<01!0Z@g&k%x=GmFny`R$X4Z9tW%Bcga_m>;G4Yf1ueh z5~S;1+PjEfAFO!Vyo9c=att(sbSFdkSfmRkK@?D&oU5x-il&IBp%27E~R8U+Ez0t8rK1I{T3b;&@& z4a`DZ_dG^H&F{3+#qVwEDFS0?VA;8nFlvJtsEz8y8ygtGu=~#fZS*3eZq5@J+YP4) zr!yWt&1dl39{$%&2kM$R?G&sgm{qSKudtO_9YU;!TkNB)d7Znxo$zgNSW8~dLkse2 zVbY-jE>s^*E|&)U+qc%?3F+UA@1^YCM}Nof!_^*IIPhp_``3rgghlgDb^Fkdzjh0n zG~qtlkdKe-JRd_t;Jtr;`j{JoRYN{REb07MIBfPGb9dbR_wG&^FPUuj6#H)So{zTh zH+!Llrk;Xrb=QyWWi@yX>erYEz(*f(iKHjULCeGUp=4Sn;#m9g3S)}Cul}$~s-ig} zs&1Vh36VTcK`v4u{a?4Ls>Lf?M?fX9VR81p4`JX?*~^ga8c*awcGj|fvrHqN^?yFh zhNqtm1paBJhZ2J}VsutP&GM;Flj*;srArMxAb?Uw@_~3n7tdZ?rmu-+9OCZ$TOhpV z%6HyNuT9T$yqBxFUiHWXa6JPLQLNAIX$zUzxeq%?e8&uQthjGQuxdK;L_pUW(StW>N*6^qGAU zP$if1I^8rynyYL$nP8WakOVUk!5Hkm(VKG%n=Bt}LL9tEb~-n548B{2PIpdeP3asV zksJD`Xwj9Ra6sb+G|WKH&tm?qTot*8c^rmKSqw(*S?=gV+!+536nBtBceJGLN0JR( z@~vU2jL-C}d#OL_Y?2+ialkx=w}HhZc;2&^`GdCdm_&Nu>5`TG+cUzQ0vvHfKy0MV ztIQODm4#1dkqO)l9#+TWM8CCZah}k+9vy{cXdJjce}~kk!|;dG_zBw+3l@B4H%M-7 zdldQZ7e>L8;I@O?UmBdmFxoeD3eMs_tg5j-;e88V@JRLUav|0KdYZlh9D1o)GS&uw6uFD z+G%QZkJ`HG8lh1ejW0&6tFTeAmcBT!Mhd-__bjHM3S)>;QUjyt1&LH-UCdA;-3^JLS$VG!Y-L`mEz%T}|QogISYnDgbe|Jx3sN6HFz|b8*O*YJX0}Gut zt`=f(@nzGusw~1Sdq@xda{B)O<i(AQ;4)7P>hIcp*1{G4X5Q;s|ix8cCubp2Tn8?);dY)(od%$!-Jgeer`UOc{d-o`?l4B zQ{cy46La@DD0YoJ92Yh*uK$5ssG}Xt?zXcu_cTbqnwf}gH8C$D>0-HJwSzd;898WG z$jeQ`#is^}Sy_(Y(uF^^3(H0)WwY}e-RczSrU{%iXRkF_CGo) zoVAeFi%mvhn-ZXra5)5;$k%J{E*5Y1bg-C2ZHNlvm7ZZU0-FR^9C?<%z|dX9XRY*k zs{!%yv%X2+qTlb-?^Y_)(AIvd6njKcHTqjC{iv&Gg2a@>SQLb%&me^klT?0~;MK7_ z!=>#uUb*M5$t+deZlaFIQr5ehfz8i>2ph)i80jn=pQi6$UE1YmZM4ds!v#4r0A@V; zEqx#c`6`Q536b8}>Jh^0ti3q3eT=j-6UwSCSBI?2?K1tjm8(eNZy-)A$(IZs^- z!OWv3DC}EopERpx(Op96n02rpLbutuP2JYTvO8aX&{uguey6^RV4^CG95?DD{ST4)Q)p~ESTD#zzo&V4SltJoE+k{h5=Ei6Fi;7reREQU zps{n&a%IHqS(*_JxaF5iP{=$pDmLDiyY4&xXXSTebIb+Oq$HYt;*!`m<}VxJK{g`$ z_$}zW9B?gqJwb83=2*Jh9c;*`(lHuKNxAGhvm5P2$aNY3Hlx#xk7-^8NV+!amxdq^ zTV=A#^5}dJZUJ)P0TKfxg)jpgiVuS#1x#CTq$r>|Q#Dl#Z>QpF`KF49W94oF)-55Umky z#X=RPLF?!RiHTHFxK_pW zlgefH99h-#o&dzfM;JWt$dQRfWhnWvC+!efIB;}&zOv7a;d6Xn8{_5kxbco7_<=&I zyB7`Q20Qr?P9r6rG(=-Kb3yRjevbrtuV&Bz?B|h^G-r%h;w53H<@UVp?)%Ie1b8!s z%Q3=#xI^6#*|>PBcI4*dPbx?kVD9DpxVPeaAqT_yP9JqlXhCP~vDZ}MgpJZABaDK_ zZK5*HFg7Bvd0?PY0;LuS>`Q>ICGA09be14%!jz#*C0qu?zC=(A*3TRdEcTjPRB4Xf z_*MX0K%~FBNrr&Ar9(Xd?nQH$>2)m~B3npF=`j0`Zl1nBy7wNxAGLJGnE0KZc>G4E zwtS`|yXC58GRxcKT01Hdk)aD9M}bWtB8YfpJ0GEwP1YDAp0M49;T81a1Powv z_#ak`{meG3K3=brAHS%+aey+>Pk~>oJsL@>YgfnbeeVao?kTH?WUIscf&j<`G=`c7 zp#!SA@W>+MVAb5|2Vgc(OeL<8>Ur%(Z_5KG6gp4~%gq4UL7lRcht}`ba8HDhS zY8S7}G6IEQRt3~4p9Cspy>1miNOh;KSws;93b_PfMw12QrWEYP9c3-nYP#=YjAUiR z#Br$E>(*a`r*eS%0~~0Pv_uOT5WM7T&snK+|?060xFXr7d{(ZG<~1yZ7g z8TkR}9@5QK!FE>{7?82er`Z)@tu~@UBc{B%puIg|?E;sZtI}{>U}#rS$*oFN>Rt7` z-*LWpS>|{gnx(94AA{7LG02%?9b<=bTG|rmQlY|RG~b1F^zQ4w?fpglGqXj??jG*x zkwjNv)M0bkcSGU$9{bsm=}l*-{=01p-!i>9{e0oCBE_At6xqf{jAJmGxFMyp?JY{W zw%PVl8aqY2oL(-r4sUaNJh%Cl&qAyWYRz^qjb0H%SS@gY`vYKac-uMZ!LTGsYepBE zK3k2r+|I-q4C6EsAfb>2{rA!EX860v2Wx8Hq= zO=X7Ll3j>ch^lPj(R8q41P~bHHSM*aB7wtD67Sg;sQ_xq6P0j z3P7kOiFqI($U#y);9xNtkQi4;nce%hhZx74h9IyACPND{(UoVhnHtBmO}sV5Q6^{0 z=$y!ruN>|lE5*hhMa^m{`-24BKSAQL6F3(|J2I>fYo~WXXyh$lOFSEn5 z=?8{wR6nF(6jg*e!mSY-!9^R1r1eu6&U=!Et+02(h=`V2&6#TZeQu?D|8sXPKZWQT_6Cz98DhZ9 zq(ssEa>j;GKz~OW*2j1J-_emH+10m?s}KMhUup6-!369pBJ3CxBM3gVl#kiFWTZGS z!b@E8kg1+IS!5I6) zB-(z0eA)AE!VM93@di9W0FV-R7K>vIYnaromn4$oaVTYvXvvF8qL|W>jn7s9(irGt zU*qAoW6QnA#7Z8)c8LUvEABZT2;N0^PohFLJ?f5ZXG-5~BjOn!4i1?EFKD^e++ zn*n~~z2vvE+fv>p5rN!Qbhf+z+WV{ccK+6)!%WzC&>+bbHJ-`?$RpF)uP&7X1wt7p zWr8Qv9S9%5r?zh4Ml{Qz!=HA zE>6UY-be95NHHa4X0Cg?ywzSUBiyjABsh%_DPWUg8$p?(28PCc&3=ALL0_!j`iffH z_1mT*D$xN(5=g;|Y&r{ee%nVot?dU>yzlyVtn!B3s`vM4x~C{1sT8Z1ch<6vw36F@ zk!mhx^`zpyQam2*u zKL0mI`LgQ2@F488GBR+i{x|Y}^Pagrzq_8b$C0tWn*k_of@z7gHj`-$f^u>(h}F&x zix&&KUL=|K!`QRN|5QlG>OsWfawphccfuw!AY`qS7sfpGYSkeONLp$*=qj4F=rRS& zN*0>!|3|9SVGmA1D>Y?7L#fpxbg`^;*t{SXnmKqJK?G4LOjsgyGmJwbkw{ZXm>@+~ z{`-CA&$;q&ydN4X#$dQu$q9w2N>ZI|GR|Vrz6|ZQgwtrf&P*O-hI~i{9R#2_Av=X2 z1@kO}OxiRghZ63MVHBSWll6H$UkAb-m!<6>s9aS0u{#j#=$vthYZ8Sx$p=%W$iS=5 zvegDpYMukyD2jdcT{N##B&;Eh8b+yp$Uf+S-SjE3;gMe6X0q}pHS1S9!E+176G`!NT+davU~^0n~tweglwy)*wq`Zfg#tBAAgN29vr|9SwpJO}h& zZn0W@99gM<2hwKF`y8Y2@<>^QZL)ad9wZ2!}R`u_y_Swu>A5Y2dqbvgkzca z`G=$K|0dV`z8+`7h%)q7OCBcSo%#N&B**j|W#CB?FEnOVnUN4826XJPiy{h;%!mRZ z_*cRHOD)l5-L5~QAN1_|i@!rB(Vn}-O*GR@G}BEq(@iw~1%oiVUg0c-qY45fGpx&(o+OzH-pBvG7j!Xkro8B4}tld(jO?Zf!hRTw3rLI zRfns@e&EFwpk*%fooe)1uVq%v4{2n}-GV`Y5j zEiaFouK&ODZ5w(&9^oM_W0$aX-#0LSCu0jG$n^)wigm}0R$r9VhF}Z4jpAKIp%7b0 zsoTWAns4T;HnGkjy0L(=o(t8Z^g3DiU0YaJeh52iaIz@;f54ot$cQizhc9*%;_brY z{gNEs($vpV2cDr2Un$fc2<86T+xRA?0SMst4x56hS-$?w;?{OIyJ)|%&Bqp^rc(+* z$FU0sXEq_XEd-%vp@Br<06`zcYKBXci81l)-reX3d@|03n1?Wkm|rN*1sz-A7{r(+ zltu9^rp7cjzRiJmLJda~hXx)DTrGyOf371^$7RXL$R7JClhm5Wz#)El!~G~ zlCHXfh0X6d}Z{%3U2sB`0Dh>k{ zzo7ws_|PU>NMYbTRITmUNB&%R-CpUcc@D7R9vT|&AT)kcyAiFr`saSYc;kM&I!<5F z{TERej;f|by5|s zNb`0_0x~ip_q;s?1NzUNU@6K$GSNuGF*g+LQnuT(%{!g6t**VD>>`SJy$cgW@QLu2 zS4RhMT;PoZ+)S1DR#Dsa(X48upK$`@IrpY#)UJ0>3TCdKLxbp`eBW1sDjV40W*K4G$BwmO%fxYAOT!#JQsIx(w6v z;{PldME@?sg0}?~QVtD<&|52GI_KUZp40T4SXE^=AzK4R6iSSTL6l`0RDPABSjMKP zn~>4pb7`sxs@bJ8X{0P;+?e7agAf6_fQ&|8O#%pHf?(e1NX1O4E-xVs47|{HN=z_g zVUS%G;DZK`S>eD6=s=SIfgqS$2qd;kESO6}TLXRc#N|jWo=KD==?hJz3zt!mWH~}_ zn+(IXMzRGFaty00HFW?kglv2&VGQggDTLp7K(QWjVtvqPh> z(_wptk1e8FIZX!!BrZ!;Xu2R<-wOE(G`evIy}~7gL^d2qgvM+TI2aF434l80jxdME z&+D9LggWG;H@Tuj;p?%D|^yJHxXRxB|d0Kp{8PvjcP}AmS zueE({T4{}JP)?7!>#yei8`cup-fjBA6YxFU#L{GadS1Jl^9#YaZ>IIAc$YUTMHtH^p%Z?&%kZh=e#nM!5C;kL3HVSADqeGVyeN z(L?!Or?SGl)GMv5+jKper`+g@urE6kzotW|>?K@6CHI6<+; zRh)FAkXi;Vh}pBO$Ob1n?(NMN;k86TQ(sHTGPB9sbpC%%kGoT6@?*4^p7v>}D!f=6 z{GL}JlXoxxwQ)v-3X`K($q*2JQpSptYN3#;03ZSzW0q{ysgBs(SH-4)9pic{Ji*FD z2m@bS;%ypspx{75wKt3z5Ix~h?Oq>82*(fg-$F`d{;Mm|xpbiRD8K1a|H$S2s#^%= zuODMBwXIIZSwX|5jVWX{FS@H8&8mF;jM|)CkSG-JF@&_VAS4PHk{mWwh#&$aIHV|# zbV9n5mu{Z{*(%K^s>-a*o?RA^TB|0^^>a!NfC#r=bh9n%#qAJUvc0xfD8{Eq%Soaj zXk^O}vm{_3Q&bH|eCnbo>2@{Vv~QCuSQVpKxn-I_QI?)7^AKWb&Y1w)hA!G=#_gUJrsW;P zq#Xan4%mcc3nGZqhn=SNDf_m5tf3AmkM=ss8bwyB(`}8Wc|LRRX+|O`9qTu14PA#8 zPF2KiVE0EWGpv|NO`tK%t%2+5p*=dP7}z!9-s!|+*4tH@)eOyE4B04!5hc=v9` zkU$Z#r+y-+8v+2}z=o^YpS1S(_V~`cHY*5H!>OSJpu?Ii~P9qM%XJZ z76KWhPnxx+%U($+4Sa{QD;ck>Bf;~nBFsBDFJe1RACn>InnF94F6od*@{P+e0DK+& z=MnG-1DNY20b+?4#L5Pcrkq~f9FYFS+m`eU%o#m5rTBjnpU7v&&SP-)(#!58F&9Q( z6QR_Yk+Z%OQ}kB3yMiO>em~?jW2M`me`Jm^b~oPI9zi<*B|-zV^No0T$H$1Z5hW}@ z1~95zBdEV&xc}(t*z|{*4`qbC(#G$rS7Erl;5CTgwD;~|gc$#34it4#@`r0T zhnstMmZ7=3!Eb~IhD58jFb1o<5v8kygtbK}5q#^rgh8<%+n`(y;T3WZ-S<`F>9gh1 zu_aA;Lb@8Oo(~_yoxuis0H+8%5{XgbspuXSFrN2$-p%Qa zjIp@S-dJh0s(!AsqL2$nAX(`2B&nmHB2 zbv;@?yE-YL$zCk7W$oV+A}nO?+}7U}()|pd$%_VQyH8nBQ$=IV;L*A-hg{nBIkRtNI&e4^_}+FS0;|Qb z$+LEh80@3dWpZvflj&%n$f8R_^W zm7xf1e&v%P^ED=$m+m~ywkc;nm>yuQ68 zh=9^$wNXG3?0ZS;bjUTgUe7CsQX6nEWWsuV43J8K6b-9B#invc^`s#KzTLHBkIwKI zfIAND_Th7E_jSsPcM9u@)plNSAPUV80p*!QJ%Bg@8twZa-3iS|gNAy1`qmK;`75iM znX2dvCCUYqek2AW%+uJ{5=$E`$=hwapMT)Bb!liQ&%EswUTzF+P^(2WNK=5)g+TMmGyO;(_0=sEtcp^gS;Yb0Afd<6-eS(8d;eP`^Nbg;`73S{a3c*m!86M>v5G@8 zEWW03(}bGuf3G$Wx3~0P8_n1?+-hr9IAy0`>1?_!)CH-CY#U94cD#=Ef?RRHE0UbK z2a`F(>Ih0gZvIS? zct40!DmY3?6u86|v{a-J+m9ZzR zloS(5iOOa@@ITP1gZyPXT|L&SqN65-JvO1eP7Y8{27}%qSZ`*n`OIIUSke`(G2b z3s;%vpv_8o>SLGCcj>dgzS!M>(nl9&APW+rkuih!+$(0G_cFw%E<=i0oMHD)16mAQ z8f}vcnbJ-mMkAnU3yq>tnpSZ(Fa-i_MFDuy6x(AOa#a%oA^>(Y=IOxzNWymkz37#< z-CLT*+?R0Yih7#5u9B++oyEDJvbG1)8T!hLqG}>Z0Kv=kl;Km11pwBM_|0;$weE2b zOf-5s0Ax@9)EF0};>&uANYR1>i*a4-tVJS3izO-o_pRJ7yd_E?fzf2@GIc! zp~w@S(Xj)yR_=;HO!N^=YAJiwqwEg1?~Fi15J@0x8ELf>8t1Wq{(6~}Q}Ghje?w3s zQ}|V5?PNpR1`7H+{vAvcjl*{=vjlHxTREWVZ@5?x1p5KG2&oj3#F96nrBk#8$&hSr z&A>`yQ=gA->d9571 zCZE2`(DwZs)`Z&)SKdw21^UPjNA4b;yvFk0al=iG?3m2=RQFcAv1;lrA|1``G5mSB zI6iN_~)aYeT2kpb`Yg4NRT zpx6p0yQw^q6Tp9baI(|hQ=Aj=%hpW@D+VY}fJzDQ2s&xn8UQIs7~(33?{jTaBgvD5 zuER$|E#BZSB%aBNLH{xbzzjA&$FuXksqtv|+-(!Ts(F0zBg$v}7zeCkh9MHc5X9L@ z7AnTtEw2|f8&>P~i=Zc!01`1#q@s}6s?k?1jUkN)q!fS(K~_SLaRi{?03^i3bB0i% z@M8TGNM7&k55kY{&8pC+A|W8~C7~g~A{|4?sJ^4xL|SR|^8KT1y#)q#?V|9AB$JYo zz+4~|^GKc!M!n#gCC_<>a>Pe{9pT=IqM9d_G<0XD1+e0Gj{gFP$lzccf`xq;vk@9% z1NxAMtmeEsW*Ehdj4_&>2Qpxg1j4U?rEOfG1jf4$Lksj$gsSJn1;FYhvR6qH@kBW>*Cqd}XK zk9G-+wB?%Ss44e$l&zCjlF{@1;j@Z`9<$NstoReSBgPT6fo~bWVa!arCY0NrE_&b z?5kEwL3|fQB**_QoJjwJW;+MHtXnJ_30GwJf0g3-?mT^@1{LJT9+qFf_uiW65vVyu zFh~)dJN0CWGL1u) zXw1r-oPiR7?(9YYgqU7h9-X7C6+d*oAH53jJ-ChNM|yHN&#ceo>8-22J8KYQIzrN< z{|Jmq0Yge2a7!UL7tRcu=SMXkSdUP%kr0WIr|AQ{VMwJTW-~mwt2eMXjRtqC z76^!E=QXA9G<*lp>@TWgzDI05gHCx5wMVzZiVd?9a4*JD5I_iJ}Te+W)2M5Z*4i-M}hS6Mp;$@sy3_Pa{%EkP7@154JU`zjxaR|eL5eBFs_|F$L zaDw+njmD_-u&*TVVVgi*2WZZ!46<7>3 zT^z_k3QHf1Lqn)k%4^(4SfULA#DZ)HL0QEMiW%Dn1}2F>=u^uKEW5UolDKqPxn`!3 zh>}#;pg?9&$qgv(#+lX?!Bim%G+mM5V@h{0UIoepC~E0XCNxJ7=pBee!iH2dou)BX zaVtB`kO-S1Gdbib){~QSRU;(BO$0>2i6JGj@)^agAxb3%^i-BbE=U7lXbu}m8?6Zt z(1d{4U>3Qmu2!RJjcpg=ty^-o+m%jALIk83t{=4B-6SRJp6-}6d?XdI2of{?p3CF> z51aY2WrSxm+@2}`efMtC7Sn-pQ&+{~Z|?D&4b+pyY=lTgP=h3F@y7$0bJ&wES&|4B zEpoMMm1xi_lf8^SEuKE6uKZ9+W{{8NRpbK+ED6oZ<=G|5EPU4)fceMxf8##;yve__ z;WleWe+tSnG zNLA&WuXd~m4Cz{cfq{{{7G1x$J_&mG(~RP|bL;LL#dXDL`^TmG4$mO|Yh|*J=Hor< z$$g32OFa*}St<8SJ}Nb|hIC*MmBj&%Z+h3SuDs}ygTKKP8uHaO1hN|(Hne5NPs!=# z;)cL85fTtdN>Tv|6QEEj2q-@;J*G>8pqa6I+RDs@1~N`+m6s`yGV%@-0uVklM~=?@ z4Do+j4;js7>Uix4yZ~8R5^V_wio`8VOAi&KgnKpu2Gfz^32pQs}B8I+R zQe+Q7fom3!65>gO&FyN8FQ%5R$hSwL`yJvq`*`h>#k$t)W@9BVMczja&eI4dIuWb@ zfes`90OLf_M8yS7bT9-c9c)vcdiR#;P|*Bdlwyz(ZC$sHr#(E1`9qj}f=|y*sxG|r zMl#T2wH-#@Sj(3w$<1((q6(m>*wEP1NrhZu=oaiNV?%y~g5y7o-U|AWeURF1HdQ3U zdVo-2Bw_cuFnYdSau4mIb~e2(uS=)(alp%(2ubY_Ejr+u(n{_q*qR0ADYnKm*4;AN z#+ynce+m&D+Xy`)^uBkFR)!291~$go!h8PT&iju_df2tC3k(9D>MG;xy<)!k4N_$~ z=!61hL^J|ZEg=EURm!!_ow&;}%iZPl*wxFlXwjoajT$s)(W6F<0!e*qKmp@x*-O2l z6rmogqiHOb*V5FRR=$?j*VL-|n^rch6alu-kX4BwY)Ndiim(!vY&0M>u_a~**QANm)v~b>pl3=5lJ$Ih83wPXl z!&=xZ`M3wPM#MK?JQ^Z~*O7F zV%))fW}Xo0nRmWJ3o_R165(gv2|Gi|b$*ZO<-ftDY>tea|qUvP{Czs7_kVpuF^I0VB|4q8}HyD*@0G+tDu34 zw}@Q9c6@(plA+vqoR397=Racp*T(8e(fT z{vrpbl)ZnByEGAedE*J?j&4*PqLYCLO>nEK!esah3lG2ZJo%n=gS`D z$vkCgRAi1k_|>M|arDM~n)TX-_>HxKyLIZZq&Z;Hqwj06IM zF$p6D<~n31%4xs@7|{VSG8e=$X{xjkmwdoRYE%KQLmf3Xm$$;l%j*L;CE4-m+d3c) z>4BMo?bx}4KuEz7B0yFkQ6Ljiu#zws75pKL8#0tGPy=L@szBn!vd8N3_E#2@HnMxa z*x90W7rf#%do_^Lz+3~qW-{k1z>CO{o}!lEfN_Na@Tj9FP_!Px;7hLd5P(=T2rbXt zf;fDPvh0e-jh82LQ=ez&x%CDt>Z2ZV0EtCjITO)5JV9y)o{*&4l8+qTp8BUL9j@Fk z(yl7O3z1n-P84{IIDoj@C!Nn;x4To#sLidd%1@Bhn@M+6TGe$R3 z?xLzD1I(HMQV2Xt)~ZtbYSE;X7PfA6$4;kpqAks8_RPVvP?I<$%zRqcBJ4W)_j1KN zO5g48E@Am`Q-htCF0U&|Hzawz^dMf5h*h9~A2yUp-BB@wq9@{5rg%`6u>jqbDHl{? zh$5R9&oucfN*ky~+(b@*Yci{?qPfek@Y zu=A4>M=feW-87JVHY!=|yUXLEJARFO2Yasyo)os(cf$1uq`}mokCofH)gkBzR1&}8Z?N&QJ(2q!_tKcKnap`@^%@BdHBM5?^>~26?1Y`U zDuKi3%0CBSx+s%uj2|^Ikcfo~=EKsUfG!bm%KiipZ((2sL<_&#(~P)9_(E_;5PzcL zi(#0|21b9C`tsaATReZw_%|UVE5)%U$93#?iv9gwOaJ& z&-Lr)f7RezX{Yl)C*DbZsN_nFC!fFs*>`Srj8KBP&M6fEsel9o7O$C``p#|0jirfT z2p}+^Dhz4!aVVaEo(2#IE1dMZqMxgX*yIT6$39%(Y@vXRc?AYEMIalD(Hl(N`kDP$ z@;q-#dbZ+3>h7cw+jj7lyN?qMZg`QZW_yl!2iA-97OOh@+~2E8 z#6Om`)PORRlrktujV=h5p!{Md8btstRWijS@ZhFxmtUN^!;H73E8qH`;r@(n zGnad8qJJajb$U>1tLirv6%Bj3tgkwYm9o$8^te09dO6A5o=<6w%3Scc(wEULq_ssY zc$LV<$_cLaY8|z z{>?ubhFk4Ubg-}i-ESYuNzTw_oAouHW3>kTONGyV6_>;7b4ZG`0hy?Gz+vTbQsL`{ zv4l14IE!P~$BVX!stfLTzHiw_3E=?&L76TvbKPn2`IUi%OJ~#Vi6rxcpp;Q20zpPd z-yfxgQ=wk7Ly~<=ALUYMAY;!Tylyn@Jm0YFP%WNYk z`37RnIaG_*uOwberuhHD$>Yi@_L(66teSLW8&Ov^Ejar-B1tF1zLrDk?OxVvJvU!4 zGz5?(qFF8friT2jXava)7#~?6B6V060aA!W5}mP0z`f=b?yrYey15exn*^Jx5_2rH zG5}jH7S1%Y7&tdEiB1eoB~@vXxV1H5I8O5j3rSGuDS5a+fn$2RqDU`P9HlsUDT{+P zOk!?i!7&~ZLM8uwhhv%oy#1+IGK?tUuihE)-$CY>3*Y%Zf7f9}o{&ScU(Ur!z`m)R zV&OCUxbX%MFfx1XT>m5tjiO|Zw&(r^NJIvtIoQgb_B1_OeSw5Q;4* zR3XBAI}nAU`Mo|1)xW>%_o?55#}I*#Z(CbeqxCZxX=vLC2@Fgtd3vc>hZNSAL1}H3 z%w`qhVoB_uuZA4V8E0W8g0qwZ5Xll$2s7_?xfGgH8<%sXC5!TZP2a5t{Ju0RKal(F z54Y;#7}+0UUB{E|SIs^^bkWFvg3rN)bA-d?$q>*-Z?J&aKeg+yaNma5(uNLqROTV! zx_zW%GBh*KWEC(CkCA8d7DU*_F{Z{h`VjGfOprr{i9gu*^4@vx_)7FE_j~v|cimkiXV(9Z z1dKPqwOS+>t8hEu`?eJ$B|yw>s7pZb zGcUSz7SmPGOGoz_2e|+QhT1Dn&h50|U;6K3Mh%IY&5e=LQ3Dg%C5@jF1q>R=aI}MC zX*Qca-3}OLg98M?-;vc=0N!RHG=!V_vvTHA^qmqO;fP)~%^Kz|Z1WnRn7&gUu0SL2T&W{?#qV&v%4{tZN=mC&8 z|9luI-hfZ=qcayDe2su+?x7Ev4YWG05VuQ!^BM4v1VVgFwog+zO+ ztm7s67ea4agltgNkRVdqB3g$NEr^6O*9K5V zM2z&!nhB3jeMGqWvgNK1K18yS4>fJIexbz74X1@{Wdaz=#04Wm8w;`^HGwqK7c7QU zMbJV`rr0)z5QR^Q#dAT3wGl#K8xLargOI(UtHFAjAig0gu)`~G?r=bgl%)-UnFrHo zRc^3|Vig>W{R%{o(;^uWW=ImvqX)1bU9nYiY8BHtTEFWw=-HsXb2gd*FsTSdTWPRO zfhtra8?wm_1p$wE{U#aSR@#0ufxU$2_aPf@t76hfd}-K7z^Y?2Hus*(Dh~71@BOzY z@TY7k1V3E5V44e$@(|IgI@UdbtbU>O#=J5-(A5!;%I6UVoqCw@8Z~K?| zMsc3^Im~AHL?RJujW_rR`zgPJoLc#2(L!Z`k~N7Vqj1iC^`aNd=r~d5pPwwAZL?L* zDCMjgA*eusl7bR|LI8+n2_L+M_{U>ww#g^kd8c-A7ZC}HN$&#k$uuXJKi_k=q|a(wznAd2Nu>dtZHRoq9L?Ol3~tRC`;DhM(cylS-1u=!$lF6NIu_T9+G$8A^6;DCnlrwIr1a?FzE7!uC8hU`C24KCeMER6Q={v1Je>y{84ZU0 zrwn5gV`9>esA;s=H-iWmvWlA>Cub#AStb2Jc1DO_4kg{KxE2S;cqFx^p%hE%2CU6E zLeM-#S~5&2oW>xA4X1o4W0X|Rh6`p9c--Jaa1cLHc~b}xhSQM+EVDIc3@?V#%9z>g zhux1wmdFH=!^s&Lt))=OrVYC629P?={_$}blJXkzc@UQkpyhI+TYXwmwDltP8og}5 z{3wqO1s>Mvp+OVtqF=imSnnVTC{kx#Zdh-(aOXNL+|8G=Rc@H$&$ZNUxix=3Y@lSh z8zUCk323;H>;9z*m9fmIYZ<+LluW`iDQZJWY+@xuVBEt2k1{4W zno&T>8%U|bhbSi?isi+A3Y)b#a-WX-@6}|zA1Ys`%0#`-v*tDo2AnJgI-H}1GP?Zz zq{Lq9N0`iKsWO?2#;-HW4bBoR<0J++vLJ9snvxhMJg_?+&2HAKU(JY=Ye95xYMS}p za3cF}l;#c@V*kxHWB7w9jrz^7jjodR)HuG52-H$rNkB6&+2jiXs0om8fF*=s&fwUx zQmv*H6Iy}+JWnsO7rpVZHm-3|u6I-^l)~Epp&AJg78=Mk3WIm7m6{E6Oo4g`3Zmm9 zNv8S5*pO}rV`RDuso3#X!D^YUgkm273k`&WxI`9eIJ#pz&UY)cYBDwde&-l(^T6Pkk3fATI;GIaPSl|=rN=WN+QB21U5|8wK8m$(HkNR4D6un z7hLz=X4Qj1gOo>Ak+)+jfi4m5?~s|)&Ti?2PDzdNYf{cnTc}) zmYA42?n@$143HvQ1CHWKFwV)+@+pb@BiQ>7_H5M5^$Z@kBS)oYldx~SmTXT7LKule z#L$_L>{uuYF(Y0?)?t_?4D$t4jf0-Aeqny^6-4}# z#Go)G%4Grv5fK6kw2|_vB@71u=@%VbmV|Ss4`FwZF*Ds$M*Vfvm0R=6I_epBSv2Se z=5`Ugvo7l@n2Fs%_9l*S6zI^q2_rKLOk!CG?I37iNsF9Xc+8;lyoO@zW?-4jx*7*D zFwFqh(pUkE7-0@H79kD+4v%XtXo4jrt*W4~lWP-T3d_974AVx?hy^^vR)hn+q!kwGxp3PlGsVZ;cC)M6k?=BJrh>7FpFrOw_L;2tvx5qtT&Vcx(V| zuuXx;VA>mOxW7Iw>pTGYMnDd78>XJeSb9S9ev$Efq2tsY`rdF{G9)vpf(ES$=P;<-e)*d7IkLvGri2 zi7O_k(V3%uzJ&dYpU_KUb~0yc@}!mj8Sv}`+$qdm7* zwYtRsh!DQQD)s}C!6_pMC8}IQ>^r0oKtVDD_5&L1cxR!dlZS*9(*&|MD>5zI0)TR2 z)FuwsXnv26qo1kB*5Lde|NmY*{#kuH#T%iKiq3Fu;WaZe@VhOJ$8R++O5Rdza*ZOi zQZdqDM>2voBqXqbgn$JQAvD545|oo?aiyY%qWHZ2-vZ0-{OT~jI4EdrL2wkejGG3; zn{50CNoaAR8dK;)Bg4IP9qGKRi3edWW-8 zgn%el-8%+Ir3=YRBfYK?ceGX9&>6!KepR#dUf$TBNCDlz19_(Vezx}eY6FTCU+SK8 zKH&_=$bSDm@X`yA)!uu9Q=b8_kk>+63sImTaErR(hG>W&DT(NfShbl;PK96~0Fss} z%5Xdhj?H~G*R|pNUaXE@|GD{k{&VzMBg6OH-v`9p>)J;dfowv0urXjC)f4AUBE-2{?=*va{OMZdv|FidhO|RHD%e#GQ`}d0MiLs#z z?(WNWff)oE**v^IitS3Stk^o>d3}$s&rL?U%Q_(Ut!ZOS{*!%EUD`e*E)qg~aYMs3 zQU!;*(pXER2hgfJ_to(K9^$m;cQLiI7(ORzXa@cNBY3HnGobR@hs)8iO*-^CpjTdsv{}oJrd4IDV@I%i%z5 zv&sFiez5$$ij8}#9w`WS_OY_*`;|T!yjEj4MT5C{{?{2tnBhb~A=l@v)OzBC+1I>3 zlJC5?sp0iLYm9CDlfCccufKf*<9!Hun%wt%&v)|tZPBMD1Fc-bWg^kR@g{|$Emx#i zAOry^P&3k?KB(!CDpDj}gFQrrR0K2?O~AqwUnrIh$bEVX&m{DfE-VL{$_)k`-?@ni8`_=>bzf} ze8CY4sHB=k5Wx{CD^9GPXvRunuBF~)GNE6JTMG7UgSZlaLwGkKwRCY>LIHEgEUHlW)Pke~El|;P}0(@cIpN!iGjQ zmiG8uBgil2jzBsrQcKgqaU-Cqec!g9OFFt>CctZ*diheI-p;17$)2|nA;d+wuYHS^ zD?M>*7oRrw272*J;AR|v+0>d7mAORErGaJec9GPii<{JnIfM7i@2_E8PEW{>GA~tn3H2{&}P03$i zis?-({mSe44g;2Ml^X16rAh)5vN1qPf*P1yAubB|ELB4Ydcy2SPN>OU=SyV^Y09*N zHUa7}Hltc~0&;BYF?#zU{9Glsn$av5B71MH`O}=?&FOL4#pUdCkeT1olM1zzNlQH| zN4u|Ao!klK#c@qWSRyN1UV!LY>!uXUbqB?~K?T_OxiSr*v0Mjvt_jMuEI;vhHQ|m6I+f5U9<+6#9^R%Gjjkn zK+3=Atol8jW%pj!v++JwO=lA>4V`snBN4D

M2@qm$}=Wi9Ykgb(l7z3%i8%E`1t0$S3T4?PqmCaGD;A%u-2-2@f$@}>N7`L3?KZcDoFn!IS< zdhV7!~P<8-YV6WR@W6i@VBfw0Olp%+Yg095ErZlByvDrGuIV;^Y#XnOeAN z!&eBg+q?LB2*Dl&Xu~5)JQx&YTJiyUK+j{W$f_J_ugey|vtDVy&)LR_}FK&BSgVjOk10q8+UArQfoiETuK5)m=YBjJ%i z#Ebdek9*gyrHp~i-umfYK8_6MUPhEQWguOR!Y-Xn1#dx`die;kX4_D*3g@%zyAr;0 zvowX91}4~=9mFBUa5S1%b#6*GwtYUHytjEJ2ZReIdV#Z8yc164c4q+)4V?ywL&njI zlU33_<}^PL6*DK7vjTx5#5>K`=u&Je2uhGKGK2xwhuW=@Q*`Dy8Q z88&|>*?(te{FoyjNx!*oYhh`+2fCa@K)YOWS*1abgHAy(D3EN>1b}530V@E2?Jeoq zx!msc)N@2n2#)%95Qm7a$-+6CnhV z3edtez3*==C$94AdauFi_TH^?+XRM*jl9`=5J)rbRuK%KS8Wy+1;+(?pfl23)OX6? zW9)a!>o$A7;@(2qqgxp?YRJ}r6JZHJ#886zlt;1(S?DbZv=-94coknw1gBkk{B4_W z-1+V0ZC!kZ#5}krW?39Z1kQxc3+PaE?VyHQy{e_OfnjZoX|^^1+hT1cW@}H1k~S94 zeb#HX%o`>nZ6RKv2}@9se5$oC5wII^1S>?$XvteU^LLf-URA#v+vLfZiMpf|L(`=} zA!xP0(WPwdY=#(`62A45DuyP|$RtL?6h3#mx%}Tz@Vx&*-DDkyXC49O_LJK7q$rDv z_?Tdb7oWnwe+fF5dX1hNlBOY-{ols!+5~-Dz6MWD+QO<)0I$VW`d4`EGY;a7*LK|8 z+wbn}=amCWCHbX&g^^a;6tF7Ltja{CAT5G{2Rj6Jcz4>i8^5;!Z#IF4vuQSgt&o)| zcf#(**h2y51+Py}tx_2X?!d>lJB3!EkU;=3s381Ml)Qkys@9M}BVGDuXRlVn!DdU% z>hXNF#;C-LLn0Ibva;;xxIP)fS8pV+hGNmMHN4xkf138%3a_r-?XSGAlGXMyv8krg zRTOEgtZ$FA*8DZEO;<(hy1zt%rH0Gzl7MWi!0{sM`4Be7m6Faar6^$rN=;0?_V(Lf zYtKRk39+m+rQ)HssHiYwOCU~7JkP1ys*W~<9A|qak(n`;QX-n68?d2y+kqBsh}3nf z+Gm5KU54nG_2uKvc2l~|gf!v^17mx`5toH-OC}oB*Cc^iDv2$%jq}^>Ex(R@JZ;^@ zNiwgV`xKO5fm?E;8W<82NGy=wmckJM02Rt~bDsQy0V!>QUIB*C%4MH=KV ztKnsU;YRw%w%~-)##ThqE@~L72~h%HzJI?zJLzq9C*z38_a75L>0V0A1zw)6_2wxtEp3$8>J3c4vRifx1%(-ab26RA~`puzJUxyy>t z0Vfcx3=8rlI5QR~J=tmb`mz>bohTgRMVp(PAYrRwDZF{BMMU?+ypl)=fRqr|1R4kc zCFR65qSj&4ez99v(!AxihI%C^dtK_1T|aw`HcPCL-S|EZ$Q96c_D}?EVGvS;63oQu zPX@Nll*EuPDyXdtSQcW+bHtGFHNR+lkAxfd1U@VXhxs=4nXdp0tSp?Mk2ChyOT6wB z3zRL=0y$8*Ak3VYJtX$h|B_`BB|@HEeRFI*5XyO7PZU{Lu7UxL3rH_aHodx6C?rM+ zd~;w$La|S63AURIOHSe5MtCftE{e6I_*jU-`| z;WY9tlL2ViENUn8Z~4a8EMqH8Bw z=4Rb>8UCps;vcvFKl@te81ohkW>=o*`T(;wutXHyrtC~HVF1`$(6*=f5N_8pt89rea(V_Ht@!UkzSFwFn-Rd&PhhrA z6<0CI&wx;ZBZ4jY_^ZxAE8RKpptuMQd@mdwa$>vLMTU#`}u00xCUa+E^EljWA|>wTEUEn#qC4Ix+-nS*4AAt3`Q znLwFDFlkEyN)&-sIp+r~oU7zPf(U4wG{MQV7)0Fz0g0J1P$WtMpdxWk5D^d%MDmE{ z^gFFDc;%;$|7AZ$ny!?aNT-do*k3NYf9d_+Q`=A0U6a{8q*4HFJ_RWt|803@NdK?; z*2YxN?!Na#=R^F)9R6?TZ}DujI%df>^YIge`CY^xRL}Nb3&T7QdrEc_GlU8^Y-kveGyr#v2%yc4SM3iZL(3F)p+T;*lN^6l?QT6y z_Vf`8_?UdYx74ZcBcppq!V(3CcO-hrgIYGveb#mS~%B}H;bCvRTYi#4f5XBCz?ie4#6ZNu}YV7w{V$i5o{JF9DP(xnm z~myU^URvM`3W0MpqL@Osf0^RO_MC;abkWKR}d2ccVq%_Y&cGn+|dg<(MB z;%P~+GJJ>@L^ezr5;dJx*rXN9GSI;oWXUTvW|W{ZTI1fb#4Tf(gdaALkN#|oKRD>3=e1iPF=aE0@!26ST9q>qx% zw9r9uxn*5|tpb9069wB4Rnkb7uZY`MTk{X8X{*MEh8fL@0-z+YFHlJgLdYL!1gcT7 z0|E@ocM!$4C~0x~y&=L7Y0|kG@7BzqC8J!K!L;4iIa0$jXr@WF`#$<#Z@%2ySMKB% zBuLi-ZNxy^P|8(6iXGCac1p?{C4@9RE({(s+!9dtLl&EFU=M#^~iUDTv$*ZfZhoW_r7 zi{}f;l#qvLg9}b3Eqt2>pc>PnNf7j(vm+%&QO05g!`kikxo>@Yek73*0Wg|WQHhK& zg=7qt#5Eu&f{Kih>{g=i4o~0B@w(lo+l%h*uX;1W+Wj*8%Se8 z%Jr~sFx}=rK6E5pHv3_6p%eF+78F#33GHVp>L`9=sh`vj+X0UQJW;#^hC9;4&NmjM z28^Nsa9u*$liwpNTtG;N$^w~E(14jlbqo@UgjvIZf;Jkf+1^2@AfZNU_wp^Bg)0#5 z(D=UPTw_yYj6O9CBXp?HAOhdqAXr&QdiQ%v$GnUZ6)Ef8O{`8fGr4UB~_$c!MiXs z<6@KM3Hs2-M7_;9r3>F1i%uY#VP&Z78mNB#cds7#9}= zgzRrro%kg&(jp+hGzL-&!BAlHRL_c{xvQ@kEw z7_-l?AYhwp8(Ja|Lm3oOn9&WG2)|Q?_~ktV1$Ec83{cd-u^N#LgBw(%*sV581zMQ0 zWQ2iffq5A(GwahBYK48;CwY$nXT7l;p=KfAsdh;)lniU$82LFVh0U!hK-?Zu1`UuR z%{IZdYvi`hQDT75Xeb2jFg~}R!#=VP3*N@<(itEM(KrYM3Sdg2OKZ{4c~-ha!4X|5 zEuH{_h(RmEr36kXU76$uE7&kTmner5C}hkHDuc=y_#L!wt4PL_PrTXZx4nL@&MSx~ zUAWVEjkUt=yHOy&q3KBFhrH#EQ8*vs{lDMu{y+KQyYHE&7o_FV@&Zf5ZwgRwe(JtA zf^!gd_0z*K0=k46cgM^q!#5Y z??PZjg-j^Ms_`Kd5Uf0jwQfrICSW+%0f@moyf^j7IwvnVt(p#Qu!(7)2;-Nu_!sf0t=b8a=lx%oZ;JWhb(%ZdW%p5ZY5YuIl=`lO50}XV%Z`FA(UKfkqYs&K_ z0^%!RTuB)_=T6AsLWrn$c0y8YD7%7F4b+7aEo!w;BF50llNJx=M&1xOE%BI%(iQ+z zGI5EBqY5%cp_E5^ViGf^je2yk2D1Y(ud(kpKp&lavOi5C%5DQCHUl6Q*km$^ZXCce z^a)sL3W5sll0lM50FzJ^6M&rLEwQU0odO0>N+VK~Wnt@tDJ?Glq`{~y9{SV>(X<9XrMj9jH`mMj~*|RI+2H_bQdjf+I zAY6khtc4{MY3Kr3B1CnJn@O-G0nkt!oQVuHJcb@Ez*b`jFSKIO;xdK6cdZyxb2kXc zQb&BSGc4Ou2U|Ob4^HDaRU#WVEs_|TVV>Wla1q_GIvl9_J@gBh`xBo#p~g42je~XS zTTBn)?*Bv}1CONsV3Jda{Ir|cur&hCBU=SUlf;PaOCM8H%stUk;jeS&NP`gI`@V(? z**48{eq9eYC07#$hzUkQWCjy+wx}J43%*^W_&w3unb=2w(cY}W&T(e?d>mEMQ`dx0 zn1vLqB!kxr!FY$lg+MIN_IS2JSa?bDE@0oYN9r(vhl10p55-|%FkUKSr5!$g!MC5o zS^fhwfn8x;4C068j3C}%$Ias^6yko9y#DP(nlCLMqo6? zRzU|E)P_>yB$+XaF++x%5gnVe(%wEO^pJBylW*BYIq{SQzX{dgOtIhfsKQZ4TZv9XK~N&yNA&} ze!a;iL=c%VYBmQ43a+}!Bp9kiTF5muN3vWEnWz)H|Ni0mcYCL?OJO$%=X=i=?sheC z@!&X0hWwpU%cgY>MNZ>>*B)aZT66k|z|St;9vfiqr#d?RV5;%EZQWu>bA{n;qg*vIg#vHxj{SS@G^6z#xbS zfQUmrE9r5U4Cw*hu?59Ay}xYG;Hy%XgD_6H!YsD#jm< z(HE&NyZL^H)QT@>AeSnQh%=&>c!o+`6HGxJpL2WYnZ!M8ZoNI}r(vpJG_!LNZ5Sm z`+4qC3;U08>$2)=l+YJuOd$H945kRxZY)9iY$a<%>BQum~0C-)0E!vZLj zgvXizQ$2IpR2Cdh)EK8Sk;nujJdu-tL2ba~1UngKu|?p;@D)ZL!C-ystxziQc!qeg zGqVzIjO!uj*%&=EFy`wtiwOh}K*$h%v?xB4hX=^JNiQo|0{o>>N@s)FJbaWIfIX`k z8ZQb|R{~e)7DLtZBcJ%4N^RGU4M6&7^*YN|jOLH!=-@)2DH1F|ib;au>3@%d{7?#oLO36VEUxDAbkZB|qC7Q_9;6ir zLH?H(C+x*0w(kBd434~?v1+RMu4ht4gJ_+1+UHI3;_49}G~)LT-2D_U-IGrl*uu86V|*0h9kZ zP~4&a8P*vSXWf7L{m0Sy7m`T<5fXtxIlu+`mM2ok@hUXuu@85xWdpZC-UAO z9Td2;o?o^XqR5tm_v{b`Apenlcg=3halDuEcz;HD4?AxV$AbG%36hY(gNsaxS}l%< z+zrLkdwczd_0#u^z6)lZ3~NwJ1WL&AvgEV%S?I2X%Er4VG>9{ z7j^JIMImt!X1E###SJz$j@JL?aQ1e3J$2W9McS7iat-$x;t>5VUYTO4ko;)Bkt?X^ zCj_YiI#vVbeIVTxusvdA5`N4;;P0Uso8va0gSp0I0Yp2uBFb2VqF#N+|4FdD_M&X+|4{!PXY*m`S5+5f zyLZ3sC*oiGlr+GCGAKW^Y?gLGkVqtG<^v$CANUQLle=RBO)|Zz(>{eGG)vITcOKLrVfi4MVhCy#ieR9pqIbjLxt7GSub6Qulj^fT5dde%}iJec!d?5B571 z;r=RsG&kIwe$SOZKCO_r`?jb23xtjJpTqn{BWc0#TH12N@%0n7*X*%=gAi`M<70!a z$XB_FR^4|eli1x; zKj)6+C@ZevU;pY3(TR*3U9QZ^SK!9YEK=ox7{GkCi2J_&b-UfnFL}nL$MKu=rNcEd zn$;Ukd88*Uhe&;{;U42F|`N$)WgbaK{~i83E8VwcCxHeC zl%!p{B*tYCCM;}({Mr3Evk05EtOTuQj_r^UynN}CWf&ovNFiIMb+xBM&FAqX!vD&4fVjIOI?l4t3cSipqe~nDVLwn-+Zd2EFfZ& z!BdhbE%c22>&c;8t$&6`H;JY!b{Nc$t%wW+g297hfaC<@(LuYQc=!g6ilhxAMGa6> zlbqS=p|#!=uF{tZ?JiEG$C(T5v%zfR5xHAuO!*Mb%#}x`gc?DRI8|2LS4Cv8ij^h` zr9gm)1fa62gvs(|N8Qz};9Aje5(t!mBP4+!k-;F?*x2Bgsj11$yQlOvX95VN`F$q- z^6{gDZ{*R1$KOF5QL(S9zQ^t`_+OvacJx7^^8Myu41Mms{VX?e)FS`p*|s>SQMk(2 z@)+d7D0K=z!2%EnqXoyL9f$UgQNcuwGh>sqjs>&xG3$0l#`mYAAXBdB{iQt(a?j*5 z24S)BeaE?+H!IlRrJs`5?z1ZoKd0BoT*IEj(fFJ1-cwHVUc{e)%z)6>mu{?-8841R zA_7aUV|zd!Zc(vOc(Zrn`eXlz$Be*49Tbc?25 z+{=jXtGU))aM(RCHjJ60da!kDOtuWq0*Ng;niJ$9XVTY(g0jJgMo5p5K?Z5U8J6sr z{+qo#)(x$(B1i#{WTd-a>!-5+36zGThBp2&^ZrMxIer|%6o@tuiz2eDRpN9`2-}so z@0b*#bl{K#qDgsIvLHHWsNJDcEJg2^HTrs};TqS)Nb z=QzgV)<1>kkhmYSvmAIc8jd$cJf}|HwJ85{+Vcu6x~J$HnY+=}jXr%3olo&9L7er$ zgG+G?$+ANkNm%upSMh-DGbjZuHBrZBs>~iaaU!CauT3CUDCjjU4CcXRv_AW_ijK|K z%bamBle@LjH**#)T0D0+MH;gkTfMjVs;S-Zc$K9yzTBm-^Zz%nug1%Eeb#1vLPUx} z0OutrMmhRWfIcNzgkaCsaPY5gb|_p91lXtb)E*_#@zWo}fWqjjMKeKmOQc#EgHRTf zoinECtPyn1cr@oajM|IZ4Y=MGPiEJ3Et@ZUefAi@uO$0Aa)yK{sx<20WzeWf&davSNLx!q;5r|w%g$2_FymR4-M-;(V3zvVe_|^N zCa74mz#KMS%p6IK(vD;uh@(V|Kay=c+QrP`6lzy+i6C7C1WC+H!X41Ui%W|kl{$$X zr&m^!cFJ$blkA|avd%~2p}&!oBpP3IF>KS8+)*p<822`h=z_VMOcyAuu2*mLfoV!Tc8V^I=k9eT?X*V zyn{TyHWv=~ON)d{4U9IV!N}HQ2tDJy&RE5xOA0UpWr56KWJf458UcJS3q%Fyi@7eO zA@iRxuO_Y>;OSE*A`t|mQj0+!B{mG9O?XE0usaNkBlzS)i6sPp0wm+C2+)ffI?I1E zbH)3cB`zJ6qz`Q+&#~^b@GyAWX=k~w+TP0`R#~iVbom$hnnz%8o z`U+hZ5MmF@yLb>3=a}=ae9HM+Fx*XJq9L8AKdm)9aCM zOo~aN$_xd@W4dXsCkW&`NQuqo@1ovdde|8NE;I7*bFsj^=gO&2@Z&UeWW&AwEDHDT zlh+;CV*aHQF{Ss;fZt%M`#Jj-GC7{%@ombsG+ahZN*+9B7D_TVfG0tmyFZTKY2f|! zk3U$%X!Gvoj(ZKat*;e_sKE7mTUYaolLz6v>T@H>P|g2A>@jXD!6uSKEzHCL?9rAHJN~yM7*9 z@gUONK$gAQjuH7^IivU|I7|F)WDT;kS?iJL5iBGm23SY3pmM`12?!Dne-p)#o$kT8 zT&?&8NoHq~+EwWbnb<(uLNY}YV#S4lpWM4?E@&B$Kb2~FWdMXSmI;{`Zn{WgMDepK zpg5A&Qy!rV21n-G+Rs+H-9dzw`P#uTAt{7`PY$+@WGKHzdL*-{reIAvU>FSfbQkRw zgN%Z}Qnw)xFiv~1JidIy5q+5XBw*?@zjE8?R?&0pt|1q&dZ1LejuIVZ#k0`he+mc6@BGqU?DD8ajXNP=H6Y!Zpxw8Ga2oUvc!8-DDRs9XoVr ziZo@d4vtthm+L-PH08P<%wJFS$1*WGuWLSQr-HKG9UYX~-@+^LqJG)sYt=@#&?Afb zEh}e3k|cej15xC|*pH1-?%h3p9&Pt=1`sgu^+%lHh1jm>cMyRHMcy_$lw?G9Y{FrC zKVxM(5goIPjEwFEq-ZZ>vNdMnnzrlC@)dMHs#qZXPx(_nQE$LqTFlIiTKkJyV&-P* z%8Q#-tyMN{J*@cV_~N|hhs=?eEDNNon6@$Cq#VAI!$=U7(})prJzqeNfIhu@9_a%= zPt5dczdy=b_kZJe-+Jy?uU~dta~m_ta7mbfcn-nFLSaPh;gd?R#2gcOF+~HBTDbQ| z^$L>c6NyL0Z5dtIF1abpnx|g{IWI0NJoqfv56dxokhSArQ(`g74nWX3zw+bllc0!);D6SRr=9US zpH!(!GZKk4+tuE`Yrjb8CY4Sx^H9C*&Lq4DSAsQkiZz_Q4AU>wlqYUzIQKsK-9YE_BrV$(x%-_VJO6Ob`nY8nE?2i< z&)dZNL)wJnFiG6aMAW(!?L{PVBq86$Nh|jIZT<;Md%672@9<-0e_bDyO08VF!wp%+ zon>NkXJt(X_+>dM^&6`wTkU%|w7!4is*ql}aF@F`w;n_K9FgNCNq& zZe*U;O|xc?%Ag$3$twx8<<}t&p$<+A0?6s#KP+qm!TPiJCNalnpt(iyKhPbS+6BC2 z?ez0$Lnbi2E%2Y;eQck+|N8TD=AxJQUz^$1iy_uH;9zZ>hZNY}ltzgDrJ(+bQO${}Pzx@mV|cqNff-yhuoJUL~j!hwa8Kr}ek{}t>9@dmT-e;@e1 z`dL3ZxX1s%LYz&KpL2f%g2vQ1+O@HO$XzdkgZ=4+1kYTj1c(xH7-A9nKhBA7pp1}uZ1SY8ip%o@biN$6jy};q3Q5`&SHq89wrrxLo# z|10uuJre!m{XgUPq*7x1?A6!rIk}jB8<#+f`~a?e3HYT@e%FPzyUTH`z40 zt$tHVt?a_)NeQQS@xUI*>^hI+J6{@HH9>-MekTDt*R^7tkcNmWk=r5n<-39t55Y#p6hds>ywL8c72iKXp(MH_)qe~+puC*lr-*zZzLzu`grl4 z5C1AmTsmgKxrjzC7~Q!;o~wBxo7}3ShmF}q5$HeE|8vo|?@xL$9r7FSP~Z!Z2iQ(j zsVyYw_=BZ{O5Ao9WD6AkuME_d94HqO`K+vgS`TygJeMJw5aIh>^@124C&W3oaC%5v zW{Rj>Y~noAgb`l+KOgwLAIsYDKD09SyL48^j>HsEPi$jQc___b8<2?BhKg%WF52fj zdM`AV-REpYvl^ONwC9rq(=%W4DW&9jiRg_J1yi2|~15 zTE5rgvya{zWJk$7#cM^R%VFV{@CeU$^6|qE6xDEQ90)|3Za_e0PIDJa4-LQ0#3=9( z{xS@3LB!D(I+3B_Xrt|1*%;Q>Q=n$MgXo(-XZP|6G0keTaJF6~L=!1n%v%55T4V_~ z6y1#bWDxyQjlbe|kcb?mY${J!xcCG6zuWsgEA>CU_$ee($jr<7pM8Em2OzRSNbwR4 zDD?T)5kJ5}-;AJ1W=S_n5dco%n&mm-?G1cq*7b6W4^k?a!G_Z^3L%9of-#zlieaBby|k2MnHwfh2`Kr6{^MT;?gOVsjFF9WK`b#rLj-yE zOUwyb7Nly`5+|a)ZBAnL%0iah+8#wUI`ns=+x_&57imuft`j3LL_ci}5Y<(N2%ccU zXW&0kW?RvHD%ir2`_$1!tbIpa9uME#JUq4SONOO_1EI?OvSQ~#>G zR4>5n-H;Ijn}1ANBs=uV+gq-a<@R6S(OYV;pP;J*#zwnHLnWbm}EYbRSZM%x8Zb?wYRu%q< z&`b9FCYG)|>k1O%2Xk9V#4^ITGyLclU`wQZUp4mBAkcT?#1@=yy46R`bSbwYFEe zPxqyZM28W+=qJxTTNm$A>7`GV5`RiT)p(X(31(&prV(1sMg`xZ&R%Xx{WDU&nJ6ks z_~1z_yu`xL@T%X%d++cv6qs0Eq9xha09~k-bnqI@ggNMe)vpGlMcei(U0L!q?}}kL zN`pZp2>Uczi-2>8APuxBK!3ydO+&JsYns@q@y$`OM%H1r{9g6s?yg0=SB>M8S2p3w zxv^N{)3<^RJl^MqT?pE`{}iYtfgvAv+0Q&lA70j4=A~jyi|}9BTJo3DSf2e~x1Q=l z7*_ioU3wX*lk!x|0tu0>r8%g1=2&PU@alfb&gxCY(4g3o@lAqE5Ec-EX)-j(Fp$XH zeP_tT5Rem=a)xw8sR`Xgn*S|TjSD+X5iX-r0x$`UM+F)Txs)u8{neQRYABJT)aqsV5uT2`k8(PQhVz73jMMdD4)RX$8RLtl!EtH$z7wBB-7~ zw0h?#qKh_Vn#!Yj!1)H+?`gl;6~Ea!>iQBwmV!34+6}YT&{YxC{$#R5o->A}BjC`q@Y6M4l&LIh_u0XeRCx!Hw-r$4TPaq zK~L+xI}GTdBa?E0Gud8@R z$U_cDb_HQW@7*rb9rMSLHHar>)t!RnLXFajtw?f|axJd2+gIITJXTDf%DaR8G`7RE z?3kR#QF@uw*^vTjlGo>f4|we=Y!HCoT2%e z2A!kvruLMXGS4b84q9A(S#Sv;6V)y$FGRxXs5QgO6i6%9PJ<+O**}+ETmMybfc!R{ zTF*(M?d@Ib5qGE+d087}S__4>@{P~bgfesbgq*4iWxq#kzloLbu#kA zM746E5YJES{g~gh_nnmc)9|Bm5%nf|QMG8~f|1AOmJ@UC8aQLmM0e>I&Q$TO)~&-M z!3IdOAV`?w%e(yEJ?3dIRS|NshKxu-5(J?Yg~p7{b!-vrvu4oXDx#cm#{*ND*BYlx z?n+Axh|+W&xb7jSiS?ehslVtwC#U(BfByBE@`evTP3Ur=htNa`0Dux;kGb&`4Iq0W zK< z^?LeepF`QjS=rRLt)rt~&-gMNOhTu~WV9n(G6^?CpuuKCwbLd-WFb`oY8;_cA^;#D zQAFjOb=)>!Q7n!LkaPH5e}S752O=>mv_#3I*%rR6 zarWA*D$4y&KQmSDO=4D6Ra8+>)>b{NtgNi8tgNi8tjs=xcM%r6_{>B@z6yGZDLQoY zSD^~HEmf}&tVn=SF<2@w^K>5TM6+mQ#l4OR{(}HR{9i%2h!MBg;=+V_gBxy#7fAa8 znFdk4F!Ih2x79d!&mhP?x__gNK70?4_Z-?QDN4lK6&vl4!!s9k8?Ie&lLO`G0e@uU3fB9HCuYL-#!8ihkh#kGqIU|WTS zaW-}Cm2Y2d5rh&+C3=`$Db~`+ zZfQ&UPRdc$E?6{x(OsZ)x{SO#ez};EE=QmC>&EEtoJV+fF!J_F0M-LA;DFQ6^JL63 zhW%B3&qi!4ZeZDmOWk^p^Hk6;&4LiaPvziYhHH$cR}HxZ$vZdKv*mlHuzv3B1C8;A z8X5-u{||1wI^SxwLq+>i&2GuL8JwIYqO9k9IAQ}48P@u6#*d{28Ti%cH6%g|VN?t0 zb;fG4d*{{q$p3iT8taO;l2G#{wnneK@)5M!(sR$FMh^*R;DAU}D(xuvkL)Y}6~go! zTl@N@`7gUlISi$&HnUw2vaB-+tW4S(5z#EAEWrokU)ugW2(BwvCyIRoJ0oK6#=s@G z)jL*Ql^25OrFxNN;2|JotSagAV`;;T)_tFD8?lv3Z8~h+Yn9rrR<5kW8gK1oP?4hO zbL{a9d9%*>4PULdX>N7Io%=R4_F4uPOYofTFT-h!9WUlP6_Yu#(uUMYm$1y{T;_8O z^D5;*@bRnfjBr~ov=x;X3|O$FxnRwv16HuDv2OD1u7o>Kk^+(OUxX~P(oKxun1o0X z5}qWNqUCFI#E4unF=oO_(P~gp=#@CLi!J{5w(~K4j2`t?NTRz)rGG2jQ%C9U?e8AY z^qaYt4JHr8x_BKSMNg31*?6lJ2K@{0hy&I5e(k;$M|k56eBJ37kA6qLIhx%={_eTJ zuusWH!aE`2cdy;BpVws|{4_Gk^*y3Pki(>od ztzdD)9$#eN+O!Kw2<{+>@DxIU9-6$ve%rOZ3;d&^RsF05+qN;Xhasn6wJ9CIKHa9x z&h9Q{8mF>mo>BhCQs#@IEW#MX1?jItAijd|i`!_PZ@>%y8??GiifMkc0`Art4Vlvv5OEW!bnsA zU<;5*c`hQxF7^~JjG;y)L^EZa-UJS~1IR%rOq8a|P%e-3d&Zx~ny3^NQ>BzRv!duP zgD?dKL-`5z82olV%dO_^`TiV#K(f~|C<8Ibp5(hv@;jeGe>a*VhX(}62$o7V49f^~ zI@Vg#!&h3QdM-zSUWf4iJ>@s|F(kp{;YNfVtD{DSKe^XAsn_Lt^Lp#_mNaWcM$c*M ze=a<>4cHdpaQf~mKOeR3Eyz1%!{SjajLW4E0g_=LpulW9ywD>n10y@DT;>B_NHYxN zS!&Nj{hJO9IaW2@q!2Yhs^v@>16Ump19SoiFpfa6lO|1CMVg*H?x^}M214*Ou8N;Y zAR%EYP)`ckAffhE0ZJ5Mk=hd*j#C~%hDfsFS)WpN*(?bSMsnx)E&kpAQNJWa$5)h4 z>-8f4(ssteBm3=SVwNC;Vgf)Q0zv@U#2K?0q%NfZIQl_fk(k@G%lzBU3O@(Tj~uOP z{Q9;}8nl)v!XO|b0aQae1A!9Do^T2Xm;@({ouAEYsp;tVbTy4~x#}+e=<|FYpJ%bq zPP{JRhp|k);~Vm2FWgu#WaN=u0_hN)xW{*Q&+<4{Q>*f${!5Ukb=KxYknPc098Mh(q~DR9C)*8qL_}R}S=9&3yP{KV- zLrXxGvNlf`+|fBIwBeG{rdwOBr>^dG<;GArWgurK-!Rx1!WxX>G52-@D&o?8*@M7@ zZaeql1~ICPXqKbVlqh`q7Q+YNdYI5$+}zxe49623D@dTo~FOhs@M?x-VTfz!ofXmOzF%7?(_=e_JO93BWT$~Y|zg?M_ia_W~sq=Gk( z7o!Ec&>6||~xw5Tz*#ZDenIH>;(B=Taw;2+2k|AHB1Txn}zu_;j;`jJkc}1gK5} zUU!t<6Pw;uHXV@9I?p+i&Rvi^2woFB7El^EM8ZZ5RiiT01S1FC-F5kI#)Dk0?8N||JK`lGE%!r$*}|SsRQuXYO%4riQxJD(#^P<)vn7XrAmaeZgLa&0N1jmaC3i*5M)rUWAEy z_|IV*;?`x7Q*Y91RYZvcZ{PD&{O&t-+4cKpO-?Lf2Rf$03Rj`N_0iUBP*w@eWivjy zB;sI==$M?k*>1-W%EqTsM2=%V!q|fAGWu%?ARy_Mi;V&ts5=-Kl@NhCwo#WoZe-3) z5I0P*!$BlG5pxK6h;;CgY2@lYZkmnbT0A!O#kBQKuVuB)K+O6E^LC9a4!I6ksi0<| zCkbyPDe6MY0?hz`Ag!I9u5pn>OY8qrd+a;+{>J1xmJR66W-$k)v(*8@$u4Y1zj|;2 zY642c@GuypnhgXgKr_*^f_94)4oH(kd3T~pdUA(~!vsaLV8!vhwYFV5`?msy0?bVe zXS_wj4kX0`2t(Wu|KMopeCQU3gFNGWkj*7wbJ8W*88R=Os zdN*Hj+g?D)vuh(fE)*2B5H$N}E`lWGkfkb#Qxcac%U@yRr8TY(ThW49(*t_Y7A=w3 zK&K8`czmm(U_IyD=Gl4~S7LqqhuK1e*}-O9p9k1OI~2KQr;m(6ytopi|4V&-S&@s3Z{ zb0_mV&+XXw6^DDtCX_ZHQNXYx&oSbIK`}JerV}6t!erd=rnoUUn}=_Bh)_q?7?HkI zJgdNNM$gFwoW}!bTMPX^698T=*T{0!jNpZlL_4PghL@dZeQvK5vy3WZ9aVU! z-t1rl7~kiC4pJiO7f^!9XiGv)i0gI4-9913EfW^Fxm9#_I4O&9ooXF%cL`=5ND!_k zRH-F^N+JZY08>D$zju9oXq&^ibJPrCvB)MxEQEqO?T)vdlf)5>O0FFeyZ&}2Dq@vp z>I~|85%rU;8DPU2P@0to$xsBbbri(*Ky@`b_bvUOt)4pr? zz5lZIRq4JJ(*$-!J4vLE>fm5NB|wCbq*eTn$I$lsl{lJ;H#NCi&Q)|R<<2`Twmu@h zq3a-YFGS9`Wut}NYuWvmj^GYppOLYI@Q+S@&yN+Iu zW6qT)sRKfFR+IZQmEEMmk`S&qw3px7!t+sTR!EhQv~>Agum9iCea-g_hlizq5w8}p zyzTycnY1=P$gTAAcH_L*RT+|o3>e#9-XXKtZ}I<2(0-nan>bmZF=?=D8sP1wS@pk* z#QP0ZEYl9RlRXBIP-tUJXHCY43a(`%&)rpXs~b&;?(s5Et5s>H*fyJkT#}cV$i@{N zUR)p@pc{xEmy-+f9P)ceZLi zISHF))V3XCr~QnC6gx{FKuXsS11IDe^(7Nh8__AOI+U1vNPaIH zW)xG-6&4iEJJ|^O0NcIiKe+IRJ%o1Is;K(z&$qX8DJ zX^eh;dPdSpbn8yku*07jcrp?3F{HbC@9@9%7$R`rz+-Q)4}xZ=gh9(9GYsEFB{4zQ znAm|v@kGdqg&>s?5GFQ7mP!*eXl;gq-<5Cn+QzDsb_(AV4ge7mzMzf+&ME*Xv@JC3 z_rvPq?fr#o;sISYs~J@YEyGQ-;`^8<8_@(f!R@3X*Jc+8BP7 z+91As-7xK82qr=VRvF@>-I=jb#`ke&6jBl_2$&o63N9+HYAPk5fn+FQe`jF*%MB=A z^P2$?qJO_Br$>%W8Q#_E;Q;_cBNxnH$v@~J)rE%#kPL_$CzSt3mM6%+jP z+_)3ZFX3mHv!_BOkdi5?=A8hNP8Ih2%%ogVu~RTcSPk>>Cl?pV%yFSDMhMMFEXXL{ zLJ9~?z;T^#)`fQJ;1`OuBj5#TBQw{%MV6SeUFHU1i4ET)M|`0SkaSuHq^_U8TP%jU zERJ@P6u|*TrmZ0=B9b9KKBg`xSQmUzW~B+`omfLLw`wP-G93>wOO-91M6@(lSjMKH zi>i6SFiWW^NOE#}0Ai>RZCr)kcEERf-TQHfay&*9=E=ye#VklD$T%jHgxQ@F7L_1% zb*}`I^3uk5z~7xUCLM(EO%#T=UvJo0rAw&o2YRVey10wVj-z z<<8DZ1F>tx$hi!phV^Z<*#^Z*n6e^}%Qt~wFwrQ(yDnc+laXRaj&Et`W3XPBSIHWV z%|t?FWk^2H69#gnA`areCPU3a&0W|OGib91MygB{n<%ZyXFPR{S#f4efda8WVtmLT zXl`o8#P}G#HATzqmG+agiMrTRRbc@(zC?~A(5($P?1KFyOJ!o*;vS~T9V8t z5hxCs*)l(vt;eXTyeynqnP}HC?TRp$1NE=BV(*PET?|GEG0P&DkgVctWPbwRpMFeQ zw=s#5(j})E1`XgtJ3F)oL$xxLH2LF2xSJuIgL7|)V4VsUa&{y$INK{WqN>Wbs1FGa z?bYSn=SqOhBN^OO!>aAqe@dw<0%zp41QA0d(H5DLD@DAEbD@2R3>po1;(D%5;{##G za_m58Y+crjg(brUmB^4LNYr9eur?w=85v@d+Gm`PGdW`DO*cDTK`+pivKKE30PIg$ zb`>HnS{&z;ogG0$9SXN#D8AGXc_ju^6I|89A(pQbK_ikTQ3y#G7~wm2D^?uH$&hNG z&KC7Ds*7R4+Ga^kXpYmkCj}2>GU2B9wd(b!k(G(JL1TS;!_ z_d+*`AoX|*z|G(6`SVV-N&ubPNpr|{^?ah;`m(ux9p_u{!0W!itfJo2+ zL^i{E*q7d??C0lzfPZmYU4g*(VrB~%Db>xxnatcVf;3VoMo4f?J2w9l(NDI;+=A@` zfGv{d>tV*sKRxyW)ajbFBbpYoGt}SrI_|=bcL>0q_x`yjZ(xQS_drykgi(*R=Kc-b zEJ*U&1}7YzeVV`n2-TS&*y+lmHZ=g#k(zQ?_ef4$pvmF_(7aO=5*okM5&A)t+`L9# zJrgh>t(JXcPDqhdNtu474Sp1kh{LatsMkk*pSiZ*dMt^|& zo94~9Qz_9#$wl12-P^J#<8T@9ce~TSyX{!M>UD5fc7DkA4w_!gDPXEA27=dAfskJtWUC1sRJG9)4KHCW;JmuW`c!bU;nL|KmguOpieY0DA-idu@?@ z?{nSF+j@4faj$)mbS`;|=M?zpsDjmWuZWgOxxsXaMlxXr#*Jx?vvsPm!(zg8C{i4u z9aJ26_(UN0J!GH*hzO@DiiY_m$AcVEOj4!t4{H--lsNEIz`wQg*TUYY=$5>*{?SR! zUPhidBJmGZcX*!9tBi6_hZXcqqV0nHVGe|DLA$FH72J}pLvvMs57z2Ra8a1C-Z06D zXa+(c{-1ok&c|guNu=y=UT=cKqN6>XgNj{xhHHfY+=jLNZJC()pdB*h#_u~}Qx7A# zl{HdgB`i$Yr4vd0t1oD-p#s`KCdZMBsmVnrS#r};QpPB53MY~`tBLhSRrz`;!yFRL z&DlG?&rF*Y0v)IMNyJL9Ui+K9Cq<0^eih(RcA2*$Zld-gWAliF#TQh6l)u&gI9#gG zR!zvYwolzH(%_#tJYw5M!%e$qs{@`+_tb4ha`SNLfZyH)jA)~VoN@(91l(mo)obi} z_7rg-=5}hg!g)H5#Q45`&Q2dCxTfr1*&#BfA~#>rbb6C;cKh(0Vj_ktS0rn@vr1b> z2kGd`@qXe0XwPK+gZqB|#|Ef8b$e-iUPo_XJ^r6J*!SG-W?h~y8urm_@|uu^?Tg^S z7Y!zaL_`4RT}1It_d=>=2=@ddAG)$6MI<||u|*ij!t+WvSvKIwk{6(58Zcp27NjM~ zanXdKmSf2oX$i0~jABB7fIuKzj6Z3oDJG(>_W4im)za%h+{{F4mR|J9VTP_wZaRKb zg^bA*Oi`JcsAWjtMy-s^8;%I+Rp4sX_5O^$$6NP#^zrk#_RG!WONxDalE#oBlh^r0 zrtpYHUE$uJ)Zxd<$K)${3~f3;6HGtN=D)w$9UXV&X9H46@{$Q4l1U_zNhC-S1jG^m zA__RWHz(+|-qJF;6lQ#3`Aj}B2bKVs|x zAFWvwscq?uXZ+9&E@ciFa)R2skS1j16yGf1iaa+5(7arPf5@7Be z_d>zDrWo4AV847S?4Hb~SjmWdS+;A-TRc8>*k8xu!&gV-OD|3eHG28rR24ImgZyqd zxHKFn+wtfcu3^gvsfhu6NJ5cTp56S-zTNQMHpT7wdam{=^y-E{?yKygj-35vtYyK_ z{9jde{G(VUL}kBAVkYl&^=Q3hvG0GKtJ5DQvdfHI+Q}%(xzp$44g5(sCw2TYx7p;} z!FHQBd3(eZ_dMXRd@; zn3Pj2fxk{N)J_^S#Z1bW~b+^~vZiuA4;k9SNW1%68F=@Q! zF{i3b^4R`x`{5jMFsvjbr;P&mjg8r2!o?ny=%{QO`QX$otxpr$e5KkYpGdZC+zC(8 zELrL+gj#xRli%oY!!)J0uGW`b48QqA`=h86@iZ4GrC4N@n?Pqz zbiTf$#r}SmscN>Ac88d=#|14J%oB6iqm-6y>fm z%P5NvjToI$7$7R2nJTGQh0ayJ3!N@_D=ZET8I3OqLr7MzQpt8yW<=Up+>frd%|-Js zrcINK4{^U%r?{Na3E8g5e9&CN0$GD>?QGogP9m5y&}H&j^^K9Ll_-!@osOF>z_^Zk z;zo^^3~Qvn{a+^IOu*sBCNKfeLLlUzS!^3tMu5uL7!oK`43Ldbm__XhqLrXA5MUA- zl9`)jZpXV3ZAmkI(*v zdFQqMKbii%Z#|r5MqVZ?7Jz4l<@(yRV^*+0@hxix4F2B%zz0320Ns1R@dpMk+eN#% z8=DUSkd_7sOvGrR+LkuXas-3+9}@AT;8$%eZV@^ld_tt8N(mU>^>M%?XmZLnk-6~! zj>Y`5vJ>SDQw^BlS*eOfLu#StRAV~kqIDXtPJD)d5;Qw7GoU^}d`hitn~M}BR5n5q zgny3)nWLAP;%CO#*ECRFdk7X(6;i|~9w}Fcvvb@8t; z7VID$W@yO60Vv%gVb1{##6hdL#|c)?7Jx4*1Qdlqw)t`kV#Z`rhmnz_lIHXs)>a5y zg_B~$TBYc6AO>QMh>hlOfg*?`VjzN1($`~4A%H-*YWmYuCS<#*n^Gnb=H%p$B(Qvz zru*=B;zN=Q&VAni>_y&X1%%{W#6l@ zh4wsYh9#kdHvC8GJse&C=JF_M0(x)Gz`L^3a)7qr3uapW$&H7_2YqCyAwdub$P{3) zEo(9*pw}p?oX_KJ^gK@1FL4(UBzGx^tMa~|8U|t^bQMz&m8DdxP-!b`SwAUmyW>(# z`_h^_m|?koBS3{OyEP?%T}bzYb~Ehl|GCd@&|c0&rXWX!D0eH7$7Ym~pjp7ZYD1QW zZE}|=f7!A|^C-145G77~rM6dn{>0!;$&?#6`0o0zq4TptUvF^n7P~p7Wp&q{z{*Jw z97GM@9N&9z@Hs(}lHQD18k#ZWTqq!FWuy=x2YH!qFoO9VYKgf2tm z>Xd>U3z728wipC4*5=il9>0xAEG>u<8u|6Hj{hFCLHPCJ?6JL*kI*I>-eeQ z&FV*7>x`Ezw5fKxf$d1klzUWH)F#Z>QEfkj|jy% z;b)a_OE_FdnbHfdHG)#fiXiH_kr4XNls#MztuL%g?8p1JT7)W)ok*&r)uIYVY zh~j-Z5a69PR?{d|z^K|(ZKZT*f`IM;tv0Z+4LRG}0#2FV6?N^fT+?ZBuRZQd#}>}b zUzBfKbDy{)V@~!^8n>xvBHw}c=p2Sb84ySt5d@Ho5N28#WS~1Rfpri7SvIYlHO^UZ zltJ0IdLc`O17mHqhG5^2X_k4ob3}xZOJs47J+}5v zEkB{=$xTMgp>x~DAHciv(d~LT8%4BE;J?~q)#ungW+Z4ux~7RDHjn^E<$@q01V+my z&gRXEtN?LwQ#HC^A_|bh0WY#ZA~{6xDPpn3*6QFDLfky9H`M_Q!XW9)4TZFyVSWWw_P~;pz(Ekm>X?&n7x7lI zK)yjRZk*7psBD)`?8UXNM}k`8ITv&repMy|{`=r4+}smI*`5$u85g=h98F;p)VEic zmX~we2c4$Uvzl$K!@V9fbGWD>cQnzx`glWULmzz)}p!`fdUcAJQ<_@iO*28fP?8aG`yT zMmbB#)C+>r!7RZIz+lN}WrWpZnLK;4$}eS@DC$9z2+;DoCrzFt6UFY=7<@)blKF>T zf&ChH|7XdZDj5mzU8aD7r>bM;V72Y50>x}4Mdf(3BG5=kUx3W9NJ znQp!G=S9`5t>&o3a|I0!u!!Qh$6pstOTmUBMhukq?p`g|jrIBXK6mPWQ~NKg*Wl%k zI_@K0UY%e(A>zxsf0m#j&&+ zTuNEE2L>=k1g6+3u!e=Vx3_*&tCI|mE;%ylT4L=ucFXdf4uaU6mU(cOZ4j?W=IA)f zROe!6H3);t0~{HWh7^bwV!;z=6~-|GV;UIg5H^_G%FGVK8}V8iMeSTTdN^`=ojW)F z#$e#z&zj4Qs5j-Kk-&AT;lM+)pZy#NfHrTUZ*Pg6}NU^46|q@ zo+M|ih9ks)ZJz}5(d_la>3T;|X37JuhE*vT2*EoDcAy*>d6*nEsnYO;_SI0UW?LgH z4i;j?ca=jSU3_`3tLLvxz8mOph}!epq9fyd9rN;SobgcDOB!aas5pZtjVb_V$(Te- z4MZF8twpVocTyG`)AqaCGQ5@{gDvjyVC0f{2>TKR7uJGpK(~9FbDMK5^AV=}_dTy- z6+av&6Qe=~<5Viu*Tn7hi{I3ne zF@xUa$%!W=v;WePCViyHBn@TKuEvkrkrZwahjd%0>z%D zBU+OtLpTC~@E{KGmq@>lg|PI7d2DM~WtM(xS&q1c8Ih+~)JCp zXps^7E6~zn#&bQqNZ{@4jgK(22*W@WR4gb!F}tRD%mG3PBM4c?$u9~{5-ZSQbBb_I z2E+%oI15^vrE<)87gAuD2j4IkF!GM9n@bF`I|NMK(U4h)xrYocCbjVGH!|jHj2w-?GX|lGLyFbYO%4XlEDX1) zAXtey;uj_HbxxvE)XCJ0%e1h{H_ZsShG-~R7INdu0%&H0xogg?9i0FPfcTDj{0BMO z01aKkf`LUCf`lef17cB-AT7uWE)93>F(ia;bzGiqm0}03L}CcOiW%BPi;|*>IrY8x z=(VqS7%csYfP?IL^K->uJ_&mYiUe}@2l7AxUMsJ{+BhwQl64C>6yLzd{T8aradxl> zIh1Qj5h9eIaAMT8B8~`+wG$ID)yYO=O^_%y0R(o4o--58F4D!(Oy#PZQDnufSn@f{R4mFe{lNY+3R9CyE9>n!P zVBpw}t3Wa(B+%*kLZfVqXV~fZ4x?tbc@FM~q=X~@L^#^BYh^ES*p5?fijqR|qIT)V z>%2ChK}2vF1PxZ#VK1Dc2qGbBP5Y|2n>Rz0y|E(Qb8!ClNTTv0Yu)E&4WVHQ#D%^=Eerh1OnKxYG{j+ zC?O_{f{0`T86b_P78a{E))GNiQnZrZhLV*a^eZJZwUwZNbA%%Gmr)X=yIn zBs498kW3V5`4yyENhvtHD2uI?V?45{lVKEB2E>jMkO`oITub2E`V=S3T8h^plz`QmJCJ46F0l(l!YOlP1=i7>L!5m zOBn{xO8M6pSKz#i4O*jSjN>Op*Fn*21Bv^GSW^ZFHUbD3J4&@AgUDr>-%x=QFhdDq zRkAV7HVk@p`+7juL<-_4NsHOO3Rxpf<^*b3Fe5k8HR9WGp}+(T&Uvvg#+qq27fO^w zTxU};^63KjwkVSz$^0v`9LU58KVzCKOrXng#QT!A*?T103-UP27P-ZCDO6!@l}wDS z^;-bU%oYtcC7KIkK*@%wwmT4+#VAveQ9?)E72=rSW54#OV2ry;F?`cd5rorLiJcWp zg$9`hOQa&A!FU6T@Qy`Kr@LSdQw10TiqQ z7;S`e8#uFiT@XPzVi6BX0_L)y+wIIm#xp~b>ZPHkf|F0U=w?9RVuTn1K@kdhUd*io z?wtX6ClG>Kt(ISxZL>zcslJML?ffjcwqI&dhyodHYL>$`nIW?_xMG%+XFPK|35h3- zU@}OGq|gXuJ^6Oh^RB2w47D<&IYPvOK?GRShYF88yAhcGA3Amb9&DEk<2MbbQ!CB_ zI9B5+N+Ssalhk2usLZQP=J#z}$%tko6#t}&vHIw%@q4Zp4Vzd6jVmdm&T?8)VlL{i z!RMoA%lcVP1#m%T%Lox8R?95jw!^Pbj6q9+H9jU!E2xW$aM%!{D{2-DC@N5GErCGh0nLIGj;++nAueGYuM;u%^k~VH`?jS5~1*D1nJf zbx7!k!5oEat9^5S@6J}7(~web)TEhdg^~h9yHgI3NgWK$k5!hFZARQ@QXL{`JVrX`$kU>^d zWxWW1I& zgfVEkr~_=1nN0Mw(9~?Y6-K0{PZbZ^&RXDiXeP zz}~2_kxriTuif9DEx66|^z<1)L`}Kj=>$;{`k+EWx*#x^MQ~Y`$_$i@mO`|(6cUc% zxXM_$A|(P-%M@&tjh5?+%QPS>1-BMtX_jXt*w1~p)^sKAYjcfOi%vp-CeyBY#iG`= zrg6f-UCEN zV+EfRt>S+7_&w|ADvn7JNkBs)?>(ovUW%6@wul}Mmz|HGpM$LD$+3P(eC?xH(Mu-0 ztM2Vro@D|5ubrufrOVP^;P(O2*TIZbt6f??F ze<1Wi?^VSYoCON`olfW87t^1@CbcLu11EIL#_Lc`CV1V=<4K|ZxwmLT(3?-aEe^!xy zjbruF+I}}&HgV9BSiYTaF{v9oaA4Wh;dgzfLys1u6&1)a%}8$LWaQA3P0Shv-<*t< z3P*|}M}7>{$brN-LQJBOWb5~Rwq~Qn+T`;80<4EJ0T?wr!UY{PKS$F4-xuAcdli>& z_k7azc*xC6#V+1*YY<)EyLjlmgI-$3!km}{c|^tmydzDeswf~tp>$mB|K;T-M8a}- z(ZU5W%FdlAw%>bF`C4!LPw@Ru=+-NCTFE$tdE{EvaOmVKt{}*2*0ITJCL?s&_LcZk z_ZIg1eRJ9@OPE)L5+N}k1GK*rA0#LiO%x#r^pnA3OoQ5Ze&J{6nzy29>@@hrJz^V1 z$ul7{skmfe@Q&8|v8nBy^?`hUWPG#0JEvrXF$8In905`0sAdKcIRlJ)61Doh z$>eQp`sphmh%7060~NRxxGvj$**~begy*pXCLI73!pO!2%L3>BqGC2bVq4)M7z_3V z2E_#`f@GzrDgweoIWBQN9tLykaKMjE z0Q}TFGZb_n4WYCuwIaU?R=8|qZ`!KDToA+hd%w4(a^KkGrnu^DuDlLk;pqN#GYeO@ zSYrT#eDiF%e@@@z*Q$-K*K2aYBW6>zrMVK6pi3r2AVRbju*aPY*#QC=;1i1fm%YPB z{9noNX!nzN9}?1Dv0@`&a11#Ydk>{Mt}0LkbF6r8Dt9q3*_tT04YRoi1_kYnNNMk4 zY1Vx(jZg>$Q8Kp0_bLxULbGE}@dkgdQ{Q@i=l^Zig4P9MXrX3xLtrhq$hfrb_-;N7 z&feZew-X$;-d_0?4z0*`o_^L-23xN^1avmZHUNS;;_(1NCCHc8^8IsK zpCFKCjCgX&3KDzVN6d`*CZ`kpbqa#W;F>kc`Ge3gCW3HJMr#>2`uVu+mucl;chMID zxsph9B_h}@=8VcU~UB$d7C5k6it*B>^|76 ztGRjnV2bgPc*bq@i}}f2wzIdsCT)@Zcju1z?|n4$FQpe>Gs2Bw*2sUAxWo{JDP?q( z|MPm5i#zCh-^_&N^|kPa5Saf;vkM|C{^`s8yzLJr82O#d*d5D7$+4U4Y!_nxTWXAq z(Yu#%tlv92l2RvY?Xe`tASgYb3-^P1P(Nu12@wK-4BXntd&~?WLCP|1zsz*g*#*n= ze|&Dlz^&O$T+b+7-XbTyWRU?XaGghDaSvct&ZRwm{g!pIB9cLI|9KzxH;MaZt}*_H zg{foZFb2`3su9C1dN!qPzSrb?pV#B}Qw72uyS6Z?~Xjh_BfocXdILj2VzK2sMl>7T$AD89Q z-uhmC|IPXSyq>wn%iodwUu`g`U{=Y#sDfJ+AQ%_eMwlY*qu0j(E4YwIBabDIFvd7R zZU)Mf^c6}5a&t3G#n57S^L%?S`zq|}*H6zX%Q+|*##SN1;f%%O#Mi9}49;{S(DxCs zoEV^A;@&p@D8O0>1nJo$1O_j?Eo=u%K4jJT`PmeYY=&z4!!9htC)w@8*g*m{5SJ-M zpO+m}F5TmIw#HJ$xm(P}_nNx^(*;Gj{W<`(R0{~QnrWera)Y9pGL-X#f%S?e6bvZD z=P@{`N}F_9axvSjTJ{gnBu>QjBkek$~7Sq}Ut`;AeSA zY-4PehQl)nq(g3_2pBep%ds-bGG=5GH~|A0K_ULnuVMM&qYx^jV=H1;AqMg(Hb1>C zi}rQFwCdES2}?m+H%p5tj=Vv*L2@MmkhtqJow+~|{Y2=zaexnt|J_@qK@Se1p*nC@ zs#ba>DBim)^DSk~pCeSYC5uY5adYggukg#eq(Z|(>DThEZE2UXc2Fxp!7vng3!5va z9?)>D%n}IfkqX#nckRsjISPV=wj;xM5^VP)xLAZDzYk*I(f;us;K>wX;zAI%9%2o4 z9d8cE#?}M=Zy)I8JSgYIQgqIB@=#oft|*x!n%DOHuC7zT|J;55KaJ6%{3qAXNy*E4 zHu!Y5L;`tWBoGiG1V{iP03rbh0ua(N6TLj%9C13?o-4tjD&d5X{*6D^BvwAbkkRr8 z20W57qJ+UPp{R2y!YIl>ln`wYPp2j3?nf=l|37)>dUbN%%a@Z+UO6CxD6PbOLl!X+ zBpU=QWws^?B`BHZa>|C0F(Bema={=I4lxqMnTW^o?&I_?mEcYoGGst0%*g{eQbbBf zf<&4!OUwwF2BpOiEI_p)DA~Iy2_QrZ5Gaco1R7M_Vp+1up-3W9NZtOqkPMNFqhvqt zBCY<7l+DTkktwkn5ZZ|_1dvRLZWtnnh!XslBt11^*il45g3?IhZ?bJ=i_0$bNZLfy zrb9@Ru);|gEGcjqfdOR9$s$aW7*PRX2%``QqafnYpt6Aytj6a7s{;~B%G#^&pW*Kv zgy;;)wPp!jd8r?`vF<$@1tL={PYQCfv?M~iA-u1#c6`LRj)WNEPh&&D+O&Mw1YMNE z{H5|FpraW7$gtZh06;iHi6m94N>yV7$1IfoJ-QE^Q-pR zNO^f2{EU_Ri3v35B=hhv-AnGgnQJqRl7~72y_3`8GER{?`z0OhW>29KA|NmxXnicz zH>vwd5EK;vLo_Vsa_5{dx^NC!Zee8Y{VEl!Mu2l!e}3?PVi7hT&1OKq*0_j6xgqjg=f{WJ1wnNloabu0oKNnh_H<&jJ5G9U zd!KO6RY;cXY5s|Rt4?ytJgw4*l$TgY;xzz7=-8;%fdKUj*KC^Gli9Pu@%xtLe3#>^ zIPkYMU$8M`8}9RL_- zqe(-P0uk|SgLMnamNym3mxY0$pH)#g1ZDb5N8y;Wq-K)lviu0EH@a|(yUNNh&jnd5 zH8As8y38J7iMNIuw4=e4<3jaSx=gIs5S3VE<8R7WyV!ar83$E9aso&J-5(ve2hA!0 zq&Rk49JHa3y%Qms=?AK3sARgd+U*!a;9{fMbE$Rh2b_J!%iZoHA1Udt-k!&maVC#8 z(CY9nv)Avi;*5Soo#vO}E3+nJ51j*#G5=(68FE-GE;o(mS@>XDElaWsTU zuKX1c=ZwPcGpaso+|$e_tvsbx^`mnTVuv8+8dXJeE6WCol0P8^a&F=VwtA9DyfXN- z9+~i+t7S05>G9H+@QrJLzyt-z(lQhfH|r!4iS{}A%@ylwU5uosr8@|;7f*f8-(r<8 zi>MM==KStUEVoNYaPZ+)jBr?QGh0p;_G^gzUk^*w5H{%h6>4`B6(#umAh1&k-W&nm zk%rHrcl0U-UDOaT_HsD5poZs%C2YN>qRZ>9w;LSr=Ds`+9{bJ?m%rr)nWi+`ZMGge z7pi2Pd!FMMPiOaMy|j1w?xMYrqQn<^6(~DColfrs6D!g!)4=uogk9kQSqKP& z0*OjefWk>dnCxJX{Rs5PK%INl+;*L>LhtL<`O<@i)=o!$d(X$&yT#-LKEV2~=;IFl zVtZdS7f~5$_R8kfSLLsq-BwW%eD4_lpJb!29f2q&VJR{-t zQ3S-^QS;G_F-QMuebiAP_@g{2W6TO12vD%ZC@#VK*LtUfyWDh5w4`0V-W~0Q#y)R3 zfmxTMjK^Y5w>n56h7e8*Xa|xV022U-^miA4fJnc69KI6vFJyG>BWmri(20_3D(&tq;7VfU;Q`u3JuK1A zvr|iC7ofSsjfhEe8uvFv2`R~!2O^GI_1Tr?I;Qh}L zLi!}2!X_Q5=E!-vsVvtTMJxo?Ib2f?`2fKei3Ucm#lM3D=+9EPT+~66xs;5Z6J_?z zmZuP1KE3l-k0fwYXnCH68U4f~l`>%Hpb7|g6)Kr8gq2k(jo88oNNlvUq`Eqqc#O6- zadt-=LK5812pj74&nmRHKIlQ6AHlJ^FM6XsOaYaK#@b-LzsI-wy2abfeu1~^1v`M(C+inw1-}r8APX` zV#U0o(W2s3-hF-$VN^AoTjBDxizpl{MgV*nk zT(TH3aiZ5T>t?^gGt76)Z4feFFLA&5-&6DV@Bh<*AcEzYVJOruDCKy}P(Cjylratj z(?0|bF_3q{+oon;*gZ_jDEaLe+2;Mn8pm!!nqI<4q@!d}Lhs#0J!kZc87B!5i||D%33S72M%}CnCS4QgE5dfQz0M&RlxAn_XoK{Qi4x~aey8TFfkN^ zeHj`xg(9=o{Kw-ySEp_~7u3Z+U;5PcolM-yC~Ee2%*xC=mM_j z(4wLKFc7eB_+a92(SVN20QI{Iu9s&48rH%&;NgS zhNyf=7ZxwZO%O=eJ zn4)P0laQk)>HfYI@7qPe(B-ZpJZT&{&vt8#`h58=%+I^uO#V7dZ^I+B{9gZEv`-Lf zrTCH=oM78$viEx2-7en>%HC?Rr9}aTf4nO;sRFaAToePU*30!$m9tIX%lY>h5WF7u z!asVxGFQ9=7wCT+7PBy;A~5)pPj`ljF4tL(6RmGCY8O>?WAvM!ck)){XcVFdir^L) zB8Jd-c`K%+V?>_vKhu}>Ft*=Y^sBS`w*JUYN=)pzejEI|WAOUl4*#!`IyX3SFE`vD z3s3EYExBVN(<)u&L1XPX?`jj1M5{xlTh45TXi6vxA#CWFFsolucBtZsCCWmABClnd z6!A4AHDdyh^Tr`@QxGfea`k)? zgMp2Sqr9j0VEaExwIhV{M?8f*o3-WMqRq#b`uIB?Y7@6NHZ`XzX$p1UZ;sj=I-j?0yN!N(qiR-4VU`h;dnQ2&48zxc1i}F8l-^BUr%n#0Y zBVvAQxCn@oSuw3%G8qCQ9U6Q87yi2L7#=;z{8fd~Dj}J4gp~L>Qf48=5Np3U3?L#k z=_~TQ0S_3<&M=7I9Kn)SM`26#KW{(I5L?rV&6ctURTXdZn?y2sE@iY@069R$ zzxAu(2JRjYar)nXA}73|Q{1hSGD2A}GW#K;Cr`R$WP^UkJF%Sf2k|^H;}J6pv9$gc z)XCCgVNbn46nX?(?MoY4eF#zWw2~tr34!E(DCG9Vo@=DW#qy9~pot3bTV2t(L<8wb z!GVxYF9)!8B(72oGq&>2%8`m|5_PJ$pSz(1;XR&A)qgj*_}>$}+V?%$rkgM_mMr6m zE_-hmVN0P(es12+Ti@x60=^lG36_UL98ie^fq0$fq!V7TRsG1t3Q5K9&O0)*aJV@b z9+EhchyqT8V75ChT+U>xk54$*$L$QEz|in12W!ktN2KaawKmOsW9qV(eQV-SjP>2+ zzZee;6tB<4-CDPP=!JAKLC_0mSLX!pFDw7v@0I+^%+e$V3FD zyF8$FoUs4exunn2^)Ki4ddPWQu}2a!S?DcIoMp=hrdi4WB=&4FgWhKGm;m><(=EKq zG7XW%5ttV&=rQf=&>~8sa<4K6$H&g9{r(?MW&C>@4d1c+v~sn37NA_ofTAJ-QnG4` zL=r-4=up9=4c@MI5q3O4(EmsOvrNLzi0`@v zj08gJ30j0XhJI(j1k9*I>q-hC{ zt|9D%dqXL!e67OWyJ~XH1XkacSj?y==>mT|U%%^NE<;RyRKifkIcYeC_>n(*>SooB zOS|m+`{q+RgbZMWNh*kBCGikmT_IpYpJZ=p(A=_BK7xN?+4dk$!oTy0EuKk4S@jat z2xwm>y`b2eE2(XSV>_r6MJMk(y1~aP#{9DV{))pZkdc>Q!~9lJi_p<;8D6(A%4FvF z7OUM9lr@%2xN(sgdg%KC9qmZ)l<+uwf9ArlI+B1UcwT5hxQq|L`8vZF$m99k6=Z13 zn}y|PxYJm}EC=DT-&qBJ1Ms<>SIiH&PovL(e^WBq7>j9|8g3hC%g3QYfY}Ue+lugT za=LGOs0bjC9mCv9IQ#Gn29SmgDPST9EUgs@d&_fQd%MMQ>AF#+@`&Oa*SCB^hAM{) zv?h{l8$)R}G&#|RDUn1H0#d;!q6#IZHqQZhA*q>%dpNxT)&dgZXK|RH| zmnU2H-7*RYYidy2^+u&|jk8eg7fgptXzu;%_!aa20)Id0(-@3|d=h~8IcTgA4WeL_ z+W?u1iGJXKFF+uT0xV&V(NHFI#s1+~MN$;z(oiWS#Q`DmWiXgmn97O?5cEXjgErog zsX~gB3g^C`srRnuWxh4I-feeB19z|5{LMSh){((2Ypp=S@!6z^^u`k10bp-o*dQmovlcHa7o?1!ydn^xBjh5F#p~Zv^Ux` z9bV77^px#cavFr&WzGlEr1Dyz)c3HV!vjQ^$9YQ(Dq-%RlpA{*w|TUYzH{qcc+;Nz zN5FTKrjx$zt9)MP=j(n8|JdO1qYgM!GSH zPY8p`2Z9Uy*i54T29w2~-%BUOA0WPWv~TV3|I)Zya$Xh8NUn*Rh??Gt*Px6&hW7(t z_q_Q|U0hFG|99*1l5{pf*!NP8cMJ~0pdWNXLTn--2i;cEHdVt!X@Xf8#tc474(k56 zI&ajmL+W;yO8*=6`MUjE*X&=gb9NKDOZfB7ymOEg*rDo>^itF&honIC$Pz^uLWX%x zL=q^P04Nbs=7kn?P18?quhz+DWtJ^eAhb**>!BEe7Q84YIexVk?Yg-A7N^U* z_kI%a>uWbMG79p-!-hc5yT>y75t4N;?kYg?kU$){3mGXBeIgX>X-Y4T_de@>>YYvb zkjT!cIEaXFIDs>@g##HxK}A9#7>u_jV`r`DA;O!YlJBA^0LlyWZRq7{vb|5+$di1K z6ht^aITaujk@jE9>0X&0mi@2qe=W_glJTg7V9XHf?@QY)D5w7Yk6~!k2zLEmXKqRy za`gpj2eEh7>{5kSDdi4pFys--26TEvUAJA%SyhZfO^j`Mok&x)S+g%?&|e@?<-eP1 zT4u}+Xy>qPkq91h-OX-<9P3cjir*kGsp2|FLoCRZ1)uAB z+#8**%BPBpgiZl12!eolWKaiZ>#Y=j zJK-`{bqvdH#bA9eZ;*QLt#{A4_-yogiKt5I9J^@| zao4k%_U|ywHikq=a!=DEOpLS_X=YQ_O?67I(p6L(54h1``JYedcYWqxZok-L?#Zkgy2^J8dC93z1kpVn8EJ^_~7Hy?8lBtMhljqYiN>?mh zsm?h5PHeAQWb@FO#wH zRezpO;ra5u9tZy|1_H!L#7Y4sG=(YR)v^)UB+@EJB!HY_90%2T9tVFFWqT#z@%O6M zh;D_129t*z4TOaeAc-N;Y9L`Nm^`F9WTnkM?PM=&>f<7Ok%Sc?C&o7)2V!NzEt(NV zfiK%;6^6^QPI@eF>nHDjwe9`K=y^AGJ(O;oF8`ZLnAj4^G}zr=WviXHvTQPVe<8_Y z@ACf^@%vx=@&7Z=t$GlpR=lJFt^utuK0LK__&bQ-HWd|09lz~#`gdsooF;KT5eWE) z_}|#{dVj$A$3VE*U!1}v!PdZ`Fktc!pn?J#J>&mQV%6rGcP=R97qb~Y+A5$`{(*E`F+QCWr3&jbi> zz&+q#)}XIYR4>a2sMN>CdHVijcY~3*;Kg@D28gRz$dP?UpKY;d(waRspuQqf%~!azQBR(v+G((;uG+5K za^kT>rg6nzSirgN)J zyATNR>IqB@@(mz4jr?7~s_tx7=r6s+&8p7KZ3Pv~XUD^f;@uv7g0dCz%m3?7alp+n z=}K>l3Oc%vRv^FU)ti;>3Q4eULz7!SA#?9qw`xDnntm~4L(OH3A<5A$U z6+}co&$P6mGakMC5%ZUc?&(&q@pu>*{&Qo3#Y+gEcWkSf(V~T7(9U#L!nGF>{lM-i zkSb$^*_uA@@_keT3wPVjxhBj!S+`e;-vhtjcjjPF?qw5Abpi+fgqm#{ee+}Z9Lsu0t;zyfFmK?f1nT+y-aIY8=GBLqU0loPN}#`Kh?NR2{leB zQbMFLhLMg$l~1Vg=f@uKxzT~;2|Edf|ik?x{eHm zkGUB6!#%xk@PBr0PR{l(()wE##sJ-#kCn%#y0Tb}=K68mUdwt;^f&Evei%-{Z5B?y zLrK*Z51-S8S0@C8)$K{&cm>wS6h)f-1JUQ$>K^O3(GCTat~s$Zz;}K;;Yi{3EIy<> zJJBbAfk#Fg8|9AznM&c!fejr^7A=qT-y<72#6sfFv*;6w{&Ht+0RL$BNAgQ0nsw&U zZXX_L`@Q-z$!NFwE>DLC+JO3-&WrgoMiGy(U0-@V zJ^TP&4Vm~eWU0&rqtX^SEA3L~t~9>KP0cvl>?ZW&o@*W06fSi?XGQ8SyXz2+`m7`#a$wSn;S4-o!zyAmj?J7;?FBTLM6F( zqxz?#cz?c?#3DM&wTYd5PwR==zU4sSJ@MWS>#@;GxszR4Bj@&9saM>Yp<5B%kCg)0 zeznTtvwvQX1CqE!;Wwl0f3AGddDYaJ3ANpfuw%=|C9Lr;b)XtWMZj__X`PD01rE;) zMKJK1HiC8KA)kAH54^pvGU4A9Q#EiQBr8v1-DD;vgD2U`ljuyP5*B^;JW}2B?Tl=LnHQy88d=tpDdX0 zZ&3YhTQf=6+s}jnh=$ajWrDmMtl#%vY0VjiO0LI`7Fw*p1tXPMn01|hjv_VS8@CNeVSqUHyVEXzvWNUNd6b341(qS=S~^bop~({qFK1atM+&g4(Ch4%(w?s!sx zXMu1jRBZk|ey?sDL<#&Ob$LWf$hLvYQO|;;6OsX42*7}H#WL&-;CKhdf+-2dIh`Wf zx^BO3b>xmx8f8=o0y|Bg&-wkg0oGxXeZ=MUf+05Dq%jf z7J-2J{CnlhkyWQ*R&x5XqA3PMx^u2X@ph{ycpE27c0&!06Q!`qS0QXuL@!pr2N;%& z_bs10hsiKi4x2UltCtANa*yexeLFAnXz{H(z2sdW3_YHw19YqbBYU4qbJ;X!8=MLX z@YJNm)7gV%g&Gb9w3h#WCW~Jr2v*?1Hgb=ep0G)oW_Yos9GW$EY z&e6F_@7{Aqj*X^wCYgLD31th>q zru&Z@-T0pb$GfI4snznmUbUTF_M3F$Q0Sl>w{JXRoM=J1IHoDW2Ml#Ul9-_`NOWox_(n@b6$1ZYvJ-}EX00GOW-pWs&|ktxER_@Vnz%;lNEF1t@N6p z3b!o)Kow!{vc>L=iGky^Sa)Fs<1@16BzQl6@o&*p389x>*#9?ThV)lGzVTe65 zr_g~d4Fq;jl^PETrR_fs0e0!Fr&hBtY!>SUqfWCVLX6bUChyX<*NE0J9lJiy>LCi| zDw)Vv{U|~|?D1il>z5#kK{(l2@h1nqn zMv>yaLqSH34H+L5ql)igxSBy;OiNr0FRUd-BqIlN;kYJ}rJE>?8tF)Xq0r?<348>8;aE7Fxq=UO@PEu`Ot~g&Xh~&GlsyHXv-3tVb?O< zZ7Ryt=!fz^EvbYE;xHCb(egR4y%Rx9FUhgAtdA+8pWua|rOap+>oC%wxtq^xhXUSm z*V*BlQKgkmAtaj-gGAm(5r1qhy55Wz+sW>n>gdRf0LZnCzY|%(x+l_Hu|#v^JLT z0ru6piWn8>(2*43#j$5#FBmml}C-^w0ckRar<<$cr{Sgv4c zz7j;VAp8G*a=6`widea=zSbAk4r31ChK4RvTOxAOTaS>^JEju|;A^zTZSEn41>KbPKLK-1D1E1+>xqY(Z9pc5fqF zoTyy(ESN&sY+PuD*m^cb-o13n#jCA^aas~FVi#V}g9egZmLp-KahX~&G)IX5QJPtw zg_dN~1H_V$nQejDwAc=bE4tYixpVhrx?O@o9anF2jG#fm(b7t=V7g5tA7!&M#odE9 z5)uQT(glNEW2sn3J2sM-jw|A(mPP>D&)z_|%&P_2v}a*(z++11r*0we;|aTsTI#4! zV6`z4(h9Ip#0{gwkF1-qaCLf+m(?bg;|{Cs8Wv^(HdvC?j4nQ?V_&w)w2{}ebgzIo zj7wpqjuE`*`dxnXhWqNguPa(wM&m6-0)_&4U`A`U$0qwOuO?B&U~e^Ez7~dLdwdX- zwUoLcgBr}+8%sL{G`dpZRx|S9@P*T*^5bWn4y8X&SpqR&6WVXYyG22MmBLuYYa6o5bt$1B#?z;Jx zcDQjQ4Au;n z!)o^CH1Xi0L7?TrhEafd)`g~!uVc2>-Zep~ny!sp5E&Y_awx?{mo?|rgrh=YO@eJ2 zm=_Ai^+H)1mtmm2-!aZ>Aln44d02|I*bOdK@O7;$tSr!Am?p)B z6DAL7w%Bst1LrWa4IiUPTm1+$y-Yz2;WK5dTdV2MEu6+B+1&y<50u1qF9g^z@F)#p z8rpoOf=(218)2_j{5sI9NX3j|GPJxl7CKNDHNm&S^mI!-`6n|u(HOKt(A8nW7TRJo zG<4cV#obvBhMr8M8aPlcOBeiDv*O$!S2$p{8Iht!VWvqy#)4Yr>F%6PjF5ml<0^QR zly74IrGzsi!OeOcuu-)ox^Yt`auIV4?o@W|a^DXOWiDGKqlV5P%~XIG(p(K1nbKzw z)rT8;WgAg4V8=)(m@75KYeOo^w%ZnW8X+tABf(`xAeKW*X~R0`ff-yhT;O61bj+kS z73tcPMVLbyNjxGLn_go`rwS6YD$&PaRhV>jN>{S>kxSr7v=nHy&{s=*)%KeBZKHj) z{sQ=f`S!cpt+&G0IC!+VU0AnL5Gcz6%+kUm28f6jF3eESLYNw0M@A4s3~gx_HX}ny zj?EMr3)u|8)rm(gCdVdHU8aaHXd7K7i>`q!+Q6Fu+5+~1YXUfrx zm@MroG-q^eq;^lfXrl#Im9pO@?Jm2{@nl{LIYSDxjm8VL@ksI-@>&FTZ!1W>uL+|D z2Jc_sR*1#zG`THvGUbpC@q+d*Gs7fpG%J{!KxAviXyP(y+)7BnqpYkP6oC-soHmj- z+2Fhy7nHz;9o6u$Vliaa0N`gKnb?fY7GkqW9LJhrBBK{@!*cti3*0-HE1en>?;?Xb z#|%iC#w<^j0GkfctTDnv28AwNv_j}Oy9rBHcou!BF}ka}%>WqaglBnt7#HfYSR1#( zMeRZ7;K;zneZc!%Fp$l45CT%*E>v?u0Lth>Bcb7dCsmy~b&Cv| zH??~EshQwpoM^K!<}?)>VVgY7u7N`(&JiwJC_x#s)+82hzNK?!vIpnuS)h;nnR`gd zv+WtB!~g_Byg)QGN3{NTyc?g(;?KR{$K=2E6KFnc_7BPS-dC@44j}i33kBdS0V;wS z^GE=RQ05$A5mD?7p2J9+;^hloA(rG6E5w-S1u9URGp{G~SNR3MG5%`?*F4lNKF}$t zum{~gd}|M$e#d<%gR65a89Zyn=Q||K_(bHv`LMw{dqXh zV6AN-7cpwzx9GNQpMP=}IKcgNC@7RlP?TyQJgDkNT};FyD*fBvSLbY1U+tC>@MMWn z?3m%i&Y4U>ndN#xDt729!c87MmW^llU zwHPltgA>9ws4$dpj{O2}JY6CHNCo>m3hb+)H9ND-W*dX^_H)??R`V7ig<56{y}^ig ze`|KP+Yu2H zd20Hy2?$&3_hi2bxJf9}sWqioQ+PPw;t&(a51zhc8bH3wZV(*zYc4s8AR^r;UmJ)W z(|AztR=6qmZMmp19576q)EqZfVECj$<&XuZ%C|yjGyAxhJ#43O0VzAYAi#_zQb1{> z_$hflowHOuR;yKB9lc<+bIMCYVO&P0=-K5vC-0I)# zQ)f5oZrQPe(lFhfpaWt^2TlvLNIrFBO6$L_q3{s~7e)4DoK+A>g#k{CNg8hLUt1w? zEVQigq}X(Cy`~VX08u$CB4SA^ZUl)$CHShxDh!HUvsWAd3*qkA?+ z8nfpPF@L1)VJSWmqi#7-UL1kom}0^v7z1+S(Oj)L#W)8X!SaU*P(=Ay-S;_a=JirV zftK_X5?+^aO6rtu_$S9v#!efrlcM+DcD-h{c-#G)HL7(1LWqURBcOtWye_P#gOEz? z^$!wbSA*8*_E@EsNYHKKQQ6KTNGI+DMRx_K?w2Q@EH`uH$BR z3oO6GAn&-ksmv;RB^pjZh4Hez3>G^w#S379h7b*bOb-=XR1lq=?wOwsKH_<{WXXYA zSBFdq)QTjD6srrrp!?1vY{saFa|jDaNT>D_okhLRMAHwG;kDH8Kp$y+{KyCH2!V|d zb8(+EzU1YN9@2%GQ3+J2h-4sns=2ELI_v^TFY3$9y_#*lqRFKCZ^&X?i)+-UMbXt1 z0J8aSF1#+!A*6X-!;s@E~wTUp=9#W zJ~S3)IpTHX)Un`dFYqD`l_ZWKF%e#1+o- z7qMNUK`)46GOVNpvOxbwiJ#c0ON6&(nk%wqRmGP;#koP-c9y9C9LHSZu%peew81l~CkivC2M}gJa=Tp9wpuAy6w`u^9nvPO2 zL`hpLn&mN)pEk5tSZj(=&>?W8C3ax&6aoz$ZI!GCF)t}*IApk)TJ}>;((QZsv)ZuW z=cUZ^UW=;Qs&9*&NhBx53b!M!SVDN#8*(Jm2+r+>#g)bQNijHYnb$VXBUCyG!29J) z+XoMrVG7b*)Fk%bjYwMeC|y)GI}SL=A1i6?;+|LE^v+h>EptDB;w(`_oYJ*75~thb z!f$3{X9B3}VUE^UJa+E~q$O4>mk7>b`8YcF7d)>K0_y%CpJvjdaEikaGC{m+Ry7j%X2J!bYPeREXLVO1}n^tKd#CIcuHHx22lY^1eF}HlBL8*)VC$& zPD$Q+?}OOCY~{oqH!qOSvITAFdXmv6gdpTS27R7f_;GkkC_xOMzyfngu6=iH7pwwc zqg@=-|(>DHbLmg!4*8#^j)A5+RUHJEIE;keg*9}a(e94QPYge#v}7R`Rcj8nMi?RC+;0&D5u9p z#juQD#Pp8|6C8rvntRpLOCBz-6K$$j6sMD8VI&fm8gar!tCaKhtDZIoqtXPlU5iDX z&C`+e(-dI@VusYi(+SOd+-m3`c&ArSchpY-Nz0=@n%zUX3Q+M#%$pJX4Ofk#o4JzO zDUu@Ol*l;xM;S$W$rluHB}5HSswKtIbAaNN%UBUmVg#u17z`*D3Mon3>$?%MbMR0+ zf&n|`)Umi-AE_7H!He3%XE#&A!wq+3LKl?8k&8kEaJM@{ie0^1@XLJ#bFNUBNr0?C ziiah=_*2=Kp&!L#U)^8f`OY6ljlC>`;LMX5 z_z-fopkqDD?V=I}!Al5X57t7Dez@apv91@KUlU#HhtTN=z#n#FgPrr#IuY@y0boF)O2|^% zZXfVbbWg?hUssoW)-RiD_e=4fkeavfn{uziQJH~iD7Ekz+M_e;gO2D|jkU8?$Qnf$ zYUE{`lKdD9uamYxmFQ*a#;uIoS@ACTj$H;1`+Ihyu4v)^0#qjShG3hW_HD{x`e%0N z-B~X(T#=C>a!XsB%%){c1l6I+*uT?1Y2*~D@wlPO{FneJuX{T=hcwZf=e67B#ku||wt&e)2@LNBhe!g@L%z}h zEg>3MJ1JWfUI=oA-tblLFd^@_e*Ghsr3PbJE*+BLvzFb=w`<9qL=4Y5S%ZBLo;eGa z{bmrPG~RB?w|eUobnn@2j#(;ha7bH4Oz#&_n@p~2TdZ9GfeACTPeB6qOF?Ndq+~}W zhgf3BBw&t%W(Ww2@u!3^M@(sS>|l`w4w)USF}#ja%Qhp7=2<~&mbIM(Km-q~+)>ZF zW8g!Qh2nx)N`#e*yD1pjG&SUWn3Vim_5aU3qZeRta&IIjR(6yQaSI65Fz86=QI zA)*cjz=W=|8(@>mk>?!R$mvsPT3PNO35&X9m$b6M*a1+dcI#Tg?(Q$RjBR$BjAp1C zs|&KARj>=CBQszKWn#UKmI$U07?+tQu42@Bj6yP{Ku^A6V)>A|F;c-9ASYq~&hA(& zIDywQa$l=+O|G{shR!v?+iBSi*YCF_6=D3%C1ZJ)Ahk9I6s|^t8CJyjK$P2q}NyL@7hrt4W$;tw0c!nFuHZ7uhN#S2%Iuqh3*+ivulO9`_r7EVoDGo z{WUpI&xqF?swpT4j?uEUM1qow$VZog<098e2*;0?cufvLxDCX6&)f7las3Nr z4GpXDW>_B~1UIg$71YB1e5*unx{nNktrt340J8%2zLu}=&$Ru1UK%rU+O9vo_b)hC+;NHwrEkgPK?_*LidVF$-n80BB$UV8DV& z5`39ho84l}8Jy>)6Rq~NeoHCY(BgVZZ%ir>Po}J>bbdQ9{j%VU$U~$r`X2kJYe>Gk zkP@k3;X6+fDJdv-ahxhRV`*tKM&3-FIxF%#hBQRGwBBz}646oxLA6;epw4T#WVSZS z1Y%MP1rRgXx_7EJu}P*;9G!U_o?UeG+4+Xxx?rXkYH31#BQP(m_ z(7+Iyk7WLY4TjKcB~%3&n+x+{+hNeI=US8w2z;-mb$9lB-5aQ!A$G5^4pY;=FJ5ty z$P#o`4w~Ve4LgPNS8a2Ct;T1y(j;*j+y;R*34=u_axKddXCQH17TFsuGO=y}EtD4A zy624B8{&XgR71g7dYF0UPFs&m!+%!!^@=e=xDKczJ=~MYAZBGY*}#LE>|-Y$28&%n z%23syNX+z(n=n01$eR_E;_BD3t9$Z!Pp zN(ntgHJ&vuwIh`TgP6$>j`81?gkDatQV19t5UjE>QbHZHMsJ4gyQVOEIX*qTd{kpg z!!F1(IW5wz&8CrUK+vF4K#&3Dx`$Ta^P!uInCcLTN(An#WOAfGl7o3~Hx(6|eZzZL za?H;W*@{fG*o&p9i6nsSZb}kkE$Y#Ys>Bv##jH1wg215&9nEGs(k9Ib9b7OhWW%yX z0B15V@wra}5s}&sK$py!J9Vov@{FJ>;Tf145=5%vHr+MPYK4ONP2&t2R;zdDWEtd9 zlpT>1$eitbaBVcVbZb;h8hbt039A!g18(1tX(&(Vm0FwAXAZr>p7Xw(A;ztf?aC)h zcRhLx@8+l$8x32n#xV}fuPj3#XhI1qYZ@GcC5jL+Q!?6wXn;rr>$ZH!h}WIC8TB-F zIvCKdmUOIySUYR6iLjwYK_v1NMzyWhJenp{64jJtu0ibNI-u18G+lBz#bVt1kXwHg z7MGEWoF1vnzVl@F$(_aM0K$@_B0&u%KwMSjN)dybu^JX#4m*ichoPXni&&vgc5K6t zF$97*7L-BCgaC*MAUdTG4bY>?B>{pC)nT^k%yYHT@zEDJBOUi+X9aI-u=cZ``8x`b=`QB-e zj)OH(6bS)f1fV7mTaHq)@SsB0_z0WZXSYb2wQzSNi?=%Ei|oQbE)el_GE&@$M!Jda`(|o79<>i1#2W%*ZB!Oa7>@|eyVrJP?P^7m|iQPg7Vd0ig z#?Uw!egS%g)$3q09SRke^v`EhS_Y$pw*!lvu@)gCY2fR@#{NkZM!B(tELf|{aRf`2 z7ZQ_32qs7<(Htc?dKIZBOC76zb(ZGx%?pPnH~A`dZecaYeH>2YBZaqCrv48Kn$XKR zHN?O~W?v+*4Vq3)kXY^03;<$p?xybh;R7(p*lZvnwVlvBjM=^PpbF$<7i(Uj`R~nu z!y{|z)nKG|kpa9|b5TnN;!+_HZp&{Kd_c!&wOCDh@{EIT@&XY~bv9 zx4;?ZF(Onu8&S5V&xEj<%DZwR!#S3YqyVPG2RfpZF{Yhk4v6Zj*)|y2g%(3|CuHv6 z)s!lVMm8|nY|kp7HyGbhC`-ECP`!&6!QkNzosIdhp@J|%^;}(s@OH6;^~YYzqeozj z?n+5GU~kr{=cMa#Tlwz9f@5JB88M1(84eLCM!7elfl8&GD#P)&O^Ddi#p-I0YbFTS zNN8=Q_SvI{e4ATWecLR`(Uu-*GXxmmT%d&5uL%x1jSoH@Y|h*W%uooOTAZj$u}m1K z8FHY=;v$D=g%Ud_nnK#Btuv`rquH$KdT^}rl4Dv!X~B%l+-)Ibl=?;jqUt z4U3quhD?-@XIX{T<5Y6BfM;5Zu#zy{F?T{O;tVBosMygy6%z;!2%@6WbbZpmK-Obg zQ4k0w)`d$FyyucOykJ7V1zQIljb+W*P{`6n%ap263)OSa4yL3vFC#^fFhLgQff30#G!P>1a_l^SAkY%YT4!9gffeU>ovn=x z;CSg0V%jmh+|i<8B4bm1{P&n$Wx&oBMhAJSFeJukE-Gf>BO}J&HA0KiL?$F?Q&}_} zJ>-INp!o_p-wZ74k*jR9nL%bjWkN8U9Y?W^1%R_Bar zBw+N(I-QuTVSTB18KAl@l{)N7vm7EXz6WxGjksG33?5vY7adg$v$-v@fPKrki3kIk zdm4~Gz)=C=0M8dTD98lyTT>v+5(dOM+yyEUIWijC33fi3Kdw3zs=D$;U1T zt(^*DN?rj@4jT-F3_&1u*8E7`WB*~QLinAsCv3Q-JLCi_g>%$Upr>Mhh-D%su|lev z+=MozAYt=Jn7pI31OmFu;(TPWAZp?xB1OsoZFU+g9vI#$F1&N*!FHLrg@U({yJILXw_@y< zvfU72C<6l}9)CxQYqE79a`mN>jZ{KPd#W=fI!Yuq4(uebOs zS%E34Z6}9gA_|GfFB&JzfvPe~597npz4^2n1QkV9pF6_ZlZb!Jc7GSPCtxS^0_;yIFfS_xm&yik&TocUQa;yKVl~JNfuhOnC zJnhN=yajNY_l{++Gb(GEU5f7xaMic*3pdoq^FR0jQ*?dq|8WooN&tvNUMcrJk`zD$ zlSBzHKc%3N`u40(t@>_h|KV+BpZl%A0f8BoHI#uWy>}YF>Xx~}*u;e{+81*Wac{f_ zCL3)Qy588hp-C(5o!|9;Q!uh4MA&jUeyk7s7$l*Km9A-wCHois+norp$jZh}LFD(V z1BcbNT^c{@H1t)q&cYqOfH23FM=et6Ja4smxpq?M(E*CG2F1@EXQM;gzGA=g|7BF2 zI=vyS|6VV#w$;+MTVX}Ad}+I_aC@D^M97{;!Cs?{D=3b_Y=pb)yK9?d*5>~vK zwS3@bJAjT0k$RYO(QK~7x~Yy5*;cl};*fZK6AhD#|i#9Zlx2 z@hqDhlfI|Osi|e=)MQ5=4mdtD=+A}cw>iH*C;6*{hh3#lN7&SD;l4BJ!i;K6HsWvN*^ilVQ`wu&5f5@?SqCH#YNrH0*cdmgkhdA`|&c)oR!PE z6mCd->GSH&SZqdJ^>mTnm1|@{tG`pE%vHUq6Xzxrv#~SG+9=qjreWXKjB7`dXUN;D z!Ium!U|XAW2mLWv$`d?Uu*72RbYikAVO@8SmJ;SXwpCqdz2`t&f!!j=GTp_iR^e5C zF-l({9o$L(auyHtG(}Nf|59B;(?HfOb*_13ETqChRo!%6_8W;N8rByzaub$jSBTns z?7Tu72U8mvc<|;+PvNyfdEkdgXqWx1jW{kuw=n0JLE@QrW2_ahP$cPm3Ls_gN76=FrVzOpb`QWlafoyK9L(K%3(^l z-d;wBiLV$nN?0bj719`KhQjKlg84E=yUipB)_IcO^XaS6iYeGVpps1&jm zFw_7V%PK18ukY@PA*f*MY_uu&N;hi5$6MKb`1<$~oCgAvb_a8IP1o-}6HfvNNI|8B zLvywRRWv{JD@LO+X+sS!YDpZ68)O$~-sdJ}10uuFj3*w;yK=M{HeIgkC<$&(1n9}Jpx9x@a`K+M2@fwDLQk+xB=uE+66<?Vzvs!%0M9=g=(LV9vWN$3ze>Z7$apV zaj1^=^iN!Tr;l}802Fo7gsz2L(vBryCyKaJC8n~*T>$>B^4g%|B=!rPe#Nw~=qkIm zRI`mFB=wmexFeawXU4o)@A>T&%>$YHU8wI7OqOy7LhfcGfg9Cj22ixz4ZAQB#CP!S zhI*0<^e~q%o72<3Df#h7v z4a(Q%aJ@91x)w;WL*1N@U?mZ;5UIpaP6oMxHb)+=a>S$njD@xsB8(8CM<#r5%rli% zd1G9;MuUd$qf!7*K(N2UBm{WvshZhXk(Mh-pxc9L4szhO_EE=7Q|EI zmjp00e1fU36_8M^S*@1XNZhGLu`rXXhrOYKw_?2`T54sf9+F-o1~MFP7TX3920E(x zE$8>p#9s;M6zXPY!yy}ah<7_ns73@3qaoO{69z#84Aiq)mZKouDS(2)!$GG%af`lD zJ9>G$)#TLv0J9-xZi-SE2o@`x#fCF*^XppKh<3YvjN0@KWQw4?5*n@?LvZkEM><4` zOR92c{y&f}(nkz~V5rBFp}CQ1@OoF=BL}_5g4VZCE0LilJ_Gfi zTO;x8O_rI2R}EhSzxK*kI`g@L?252`~EDKu`@@?fF`((=URTUDD!p=2xd zMa&tX-IK5}MmV%`j~$^Z1kzC_XKTm8%>zX;6tXvPVM|6mgw)tlxp1{FG0vB&dpES} z{P-NgDHbTBgdV$Dq>sTw=jawm=~RdIVQUan3y zm$9w2l(Z+WVB_PCy~<`A6$8b!c{VT7ijak*ocs5H3m`^e#gIr^VN6eyhN#`if@qCM z#$f?yWO+n73^Ls`Nmz(riLBdsEE4(o$`0C3KhCB>9A!Rk-yBmt&m-J*+?JH{7$#`p z(0VrmNZcYSv<$8P@a5aDcG@3H;XFcOJ zi&MF}`@FU~PFgAvmpW;0?%t0LX51NXCVMtq9!el=I`A5nsh$GQoJSS#QzqO|H1_+v z+)7oS781_UEeB^m31>SfD(W=^N!Xo}k13tu~8}t%aCu6aTmpF3-5!csOBEOl{8t~z2 z9z+Z%Hd&&(UWdNt@w-~ybDT`uKo0qei3x^c=K&@UC4imX`E zzBWyPmc)+NwjxHsy3h}hA7Y91;|zkY$+=5hGf5$x;u+m1ez80FFBX8DobKZ0-l5jkw@LwS+omy-U$WD6*y;fn zGdZK_BLFJ|Y%U@&RECY6EAAj9{bzoyN8XSPQ%>6YDeYdIJw#3$N;hXGx1vz_lz^47 z922uOeJnY;!>G|lLsriSn9DR9A4S`?q__duZ5%f9PKo0_GkjaI=jql+D>L9EmJ@l7 z&O?gIe92iR%!ZgI)~f*}-RiMn$iHnHn)zxYjOO_z=KpNGEtscS*x)u z1{42Qcg2GVi^ZnJ98tTK;pDXwg0VrlE0Z?h_-0CdPS1)fsaZJlxTldW$yiX$_+gGR zB*8JMnCCtZLOg1TCzEfW^W?Zv-JF>g!@v@fgtwk^Ex?F0$0BLRt6}G}hnA|_zb=|R zY@lM|O74e^bt+0CW`^%iRlsaE4?7gKQpU%R8r(tc1R5}vIFxp~1@mNPM>MF`&!J!OF1DI~xH921z-q)%B{# zu+oC@AksrDSoOE>)K%X%Y~9E;RYNld(`@({VMWz&+fSjA?Y>^$ zWwC!BOe`0jXsZP!JL@ey#cdVyol4DTyVf|_V@YUP4uXwsAgi&lImgbsvHLHCA{JTD zy(YQT;L0|&VDYqUzX>+&Qc7n;s9S}_8U4)&q`yti3g>JyE z&_s1hA_8GV22mivND_~m&(?UgKw~OJ_{q%$I4nLU^+I4z@Q;fuVj=csY$X`XRS-|v zBeqUqYxtGTa_;6#TNP!_tayrdw!XPpK-$~K93nbI{wY^N%2|0zl!W;T1lczI(s6Az zqKcTwaG-2n98oRf zNhaCd$ZgVfmi2Vqje$xbgobr@N3L7es{2-tGuKUW&mH!=ErQOmGyZ=$ymCT^7$gQe z4cJC6ucEdF5S;O%gb8afU+XmmW(}3Tg{=dGwk~#fuVu#Tz1G>OV||x1Yi};_^)y9v zk6hW{dkkCLIlR`mizwyE-VkT8;-FV;Gf28Ey4E3W5G(z&&BCjz*DR5EJkg}XH*<{b zT%{~Jhe}s@p>|wAjz3hH5DTT{<~YfFC3PNsKALQk4;>qQ3|#lI_1xGhn5Q#N+VGSm z$RZj|cS}CA((Ku)UHu%)Jo*~$yU-wz(3P@5Rh2C=E-qp{e2Hx9%(a>Zu;o7&3n|Ug zj7{5|zIP^jB1L6FvZzK>(Z1?j)RAtHkg<*)Ede4t#_X^WmWz#M?q-yn;nJ&lmRKa7eA$$7=%7_Nn?9F5PG1^e z8bb!B$G?Re;TYB+Yr;8cR3eCO*Q%i)Ig{BEmtfOf(Aqx`hE=S?XJ2V8p0UBZeT10< z+POi>a);B{fZ74sT9h13Dr;^#%nOgJ%cn+`WUfG%#CQGG>6=SRyeRTcW%o?R5{OXl z%0*0Ix0W14U>a~3XL;erC?TA&x3#vvPqj$^(Fqi+R}Qct)|lL_(i-}RJ~G&H(}y0j zf$Vorr*0=tOzO0iMmNE9QzMN?xwz(7TZq+zH1un@E%d*D-s4+IN4qylhFihzwdrkm zw)Cy!+xYcd_-(^gUrerFHEvb*Z*EO_HTX^K4^ly*2TPC9C=wH!6b!CZ_jNYy%a8a< zL9;Bg4D!l3_zz4>aCw3)aKbgG@%s}#`Y`zRoR+kgHaT_dFwb~A>NO+lT0snYeRBkO zCNSx1kj_3J8^;F-hy`=Z^4ANdyi>4B{OvX@f-3ZjvKmGAQbH^w$#6wJmxn_w2tbJx zYAs9v?=2DbOvUr0H#~t?xj-n73c02d^VBO{?ttW$VMOGRz-C0P=#7_d@*oQiym2$J z8rxlNw*1X>W=cL5F7{2SY3-``vE|u3Xu%-guN%1Q-F9Muw8rdiLC?LtUetY1==7^Y z0=4nI&KI^MBM%h6QakMrsR& zEIAm!K`AT*CZU%vL^KfTz%n(65G06ON0POw2PJmUBPj!8Vw|-|D8Cen5iTaW-FVIp+bnGu8+g7mZBVr_`t!XTi zO$bC?X<3#PZCyawAQGZ9ys-hQ=uaM1u2=u_1RN%H^9faf*EAO}3NRW#D2M=}1`S0f z)-{~MnCZ*lLKucyw?(Vp<<(AFd!pn}!EIepa0 z*V?hKmThDUd7Wku5h$n^YnH+Xa@Ridu4DLKZ?n)aKuxhBlB`_iBiI@!Fu^ufYb}I_ zAw}5V?VQ1QJX%ItX2$0U%?m*}m^V>#k>lks==1bC>!SHwiW<@ib*8Cd)`x(jlI5?) z$B!JfwL%~kWqkKmc@F|y1zY-sh1YE8_biWpzvSSKIE5S31+rA}VXv9B>UGVYS=`FY zyPD2-5gteEDrg}RtnUfYYLsnyy*Usq`gMk(&DA|rhqn6>TO`Koxi;YRnc#LYGG*(9 z)h*5YvylK*;ls=iRvAV5_9vwkpf<}GOef8}w>`1!Z)l!u86g}^@{nIx##9u-d5_4u zZp&%#IOzg)X~mNq*XZW(uMZL|!s(KbSu4JYtxuD!LLo*ndGhfm}ItiIK+@cQ4cQ}AZ|9b zPRApD z+~SvWq+*CbNL6vimbiuJsFErPehFYn%5{tmv63^UOb89{p$KQKuwl-0mwdy(SA(KM z=5lh+OK|UNz@-e1RE9X($DU^@`9n7`%AghY92QR5CftFu9W>nzhob>5SZa8A*XyhS`jYCLRF&*&3(h^+?BT=3@YLxVT~PDg|x1MKOpWgZ?pW(TKCXh za5~6Cuqr?^mef$av9{4R_PxzF8Z*US0TvKYdmBe1U|%^6W=lZaal##kjnaW`OfDEx zcvQL{U8aPQrqn{EbFzX;OO%2KzEr6CxA)pj0b|S^vO;1etpiNqT-oFg zy$0aP5V4D5@Q3F^avOE%MwANn1Xgv9?zb~qGi)wPeTrbuzGD1f<2~0Kuw1&ivP~qG z&k1+#jV=z8Cob*f4QeEJ5eVaUE4Zg*)aJ>o#Ul6XfU>1tr`?#c9-j?Q<=b;m!im=^|4^Sh^-ii~7 z0OWdFaMiIWz@aLRo}PE!b3#1%>ouN|5)w~&HYH%+fwZf-w0Lt1GXoMz4yCZ4V-afF z*h6X7E@huIA_YeTM;^zk@~`FMj;-4D>)D%z?Kj@yvk|aSx7Bubyk3oqp_nC*FsG)a zxrS(wHHhK@cPkJ>5;aRe?M$%ycRV>YfVQFi?F3F(;L7a6I+!RsfdiRAk`#S9G& zvl2r+r{pm^LgwYQNF&o8JxP&FK9Yv|j<_Szq#3_^v)0P{Zt;n0r@z_RGzTKd*?e3i zXAUIrUd+?uD)svRZOdE)LP@l)g5jL`IG}@x>Ai@?rh?u%u*hM!&3I28?i%sO5fpfm z7^*?dyn4mHQUYF5S8aNTz6SeYba1x*?Y4GR@r*1QM9Xau@Pd9q?{MsMNbqj)dosbu zWTg|BsM9nOoE-^X@&r(b9I&}(49=LIqMXJw^0M}B-X-<`#12R3D%q!2C3#PiH#eK4 zuBbk%Yt;-4RE)-8`Xu7lf|!DSVbn{Q*C_H4ig^lf8|S%}Aw3R4E9isLArC)sTIvQ!%}^JM%g>VuJErIooPuPj2&$^X3@H3zgo?dlfQ? za?7z*>~$L&aW#cZ0=sY7v3<$k3CwDWHk=brnZagkcp@&!=N-3pgRBLfh__^pBRov{ zsTu~4U)g$*;VEyHlwJB%1t-Tu5_ch^l%0C<=4fl}y!EcYO~+ZVO)x^&Jt+dAeI)8k z*&5-pYa8*Va@y^TUMdTI2Rk!Og_E>_$;ANZ+jYR!=kyrBK?q|@^IS@~9jyfkr6q|; z>@^IOBG(%qlX1C9l2GbEf=e`nd+F?+T>#^j`wodwA;VZ5P>@Xc_=x{XTsy0 z`e+yityJz}n_A;6vR;6m<=WXm7vCE2ff%u8Z;V;JRkx#>YE}>subo;OPUPn;hk_?6 zEM|OM2-dF`LYz*Tdufg}Hgws@%apiVG%aOlk8^gp*8S~Hby%R6q&psZ79mCq>uMG9 zW*hJ3MsR@?(X2$rpun2XYHg9riy6#ZjE%-EBwqROFD_{&iOsAy*g~-*4)ek>sBN2= zvDND|TX@anZOT)}JbD}&8eeB0-ZF;cmR2s@^Y`rh`dD3hR0O-pXEv3-d+pZy$hKV!lZb<)wI7&4wE-*4JZ- zw7*$ew|hzZzaxiYMFUqQC?aHu3AbRYn|KJnRRwkz3f-)Ro_RrWmm*Eys6g*eWg-D` zTq+)uVtmA6i}Wkjdw83nrw9=hV1#)!-Ae&UO>wX={uZ`$l2=ShTEZG~uHRn5;zG}& znd<#~nZEosqs~rxHgCVDepoCKOJFKYoG~&-!Yy#a_Vr}%C22KB4uo45SCwX&O$i)j z&L^#mP$kzK$srEP+j+R4>qAhJX6C$4>C|aQW@ySoA%;1Mcde?FuVj{YFj6_z$`avg z<-Jo_vP}`XnIC?4!DTa?mK#(jSrK;pF=kF^Ha-3y4iYmiVi?!W5R)4TERl{ za4lsU8jiyq!4oWcCHA0QRZF4h?lMwiJaw;nLA1Zxbt3ktDy{9!nr6Q0OkC$wnHQ1T zVh`sQ;{^uv6l$)yyKk1wyCtWs+2gO z@p%kw8L^B-rdA^4Az^Rfpk31&XpasDvRg|v_p~|=sS&k1-a9Gl43=A*?QV0kH?>98 z0b7I@rs*7BoM73}ozD$r2x9(OB3NUNbWM!BMN_J3XSpKmDBfc^%@WB2JJMe6gAB_Uql9$}j*KZ?ejZQJ z0NaSKSj5?rO;g%-$p=9g^S&p^uL|!;dWyDPRG=7;9u{$aIY$Fss850BXB!fvleNY3 zcZWvpcayGbNaaf9$?V=-Nm&sKQRv~eMyxv;)i7x>f~-ElvJ@G~Rm=QIrVv#oNrGnK zYqA^dDTrx)CxGL?oCxM&Gi=G(C+wZX7`4afuys)!$6tz15kX1?h#ZaEA-$XVOOL@=zH#drAg!N9$Od@ zMIbUgmjlsOR|S>~TbD)YosZGrM2dPcZ<^X=A_0qk7$O!FcIkn=`6Fv-LE~LDzUG8N zcDhrMsP_X@&|_x4!-9Wzk{ta?Ixbr99@d5lf);ycn7Qm)Bs104d5q1|n&M`;w)yh4 zNuwg;3y7M*LRz&`CiCwHuY<+9u|v6Tu1nf5Ep#0z4UBRzg-qNF-^wpKNH+K&uuHhk ziYIVv4{}^ z4&=O{IOAnDMLb3s`~|>uEw)d%JC+QVhVgpz${gVYr}BLjR|kRuthPO%I51?8UIsWo zth1ZE_K5-IH!Lwto-xEJQFc2k{{sROIax%HVEAfg(9n*(Kx7PJ|+_F2G8 z56J>;6xWZdhJS=s(Vs`w)IfLxF@d#0T;XOKc4j_3>ys1v&iRWauiL&+VKsqsUv26m z_E9s#+8#_%P&`(|o@7FahqSZ|L;&;cxtx90PhHoL2oFM2LLgqmk10`sBEPo1?zR#O4=Y_Ai_O0b4NCe(%64D^U#LCW`c|B_v>7x-So1y?kO4()*e%Ai#wTc7Dq z8AMuUpmlUovC9SLgC=0T-`K}KX)G) zz9A(%>TFv5joKfY4R-EIhCQ(=VswRX){O1eQS&iP&#o-v9r!)>axW|`!lZ@An@NC# z9yo<$Y+k(yauO~_$jZJ(u7&OjW10ns14q9<^dU9H`!A!KXw?0YpUvA3FnsRT`E=!o{Hz_^c zlILQiA}jC6o9m6OnzX|6o!s6?K#9iap>ox>?0ZQRDCLp29O%BUeC~3adQ1}T_e;}E z)GP=^B`1rU3AJa*EUe?hdQ7q9jHj)w+Ty)rW|B~z2SG1FJ$bp+RX@78HS&b>^@rre_v-${qz20T#T^lontD6xJ z+i9`1y1iwCTguOl)@-C%hmQ2Qx(?OcF4hAxEt--@Gh;T~=-i5aqsgY4U?7&eCNAOW zeTiPIM2lhPW^K*M%FjZ>2Cb_Z((+a|JgstG!u>;d5wU;lAu!%mkF<(x*1Eo*d$+-0_+T|L&B&c$oo zaGpK98rWait+_dTEo9l%@|xBI*)&11O~y(%H()kiTwuue$4+KCWZ8OlE;2r27UR)e zlAF_565n!e!MC*GaG9?jGvxoAU(z3e2rmsHse#`=)mw8sJyE#OGn#T_Z-ms)J-4kb(G4ja+THYFG{**uIk@FK4klGvhx{d^Lx#ovt%vxgNPwgq2X(SuhT znK_eMxkPf>(8A|eeB(oiX5zkR@5Xoa6VX?NP`HZ$KU)`2)6vr^3rRcnLVKpAbf zg&V<;`OI8?FB(k@z4kgXNS6rQy}KC=Sg^Irj`_g6L!lJXHyBwc z6S!Iyukdf@v)qVAH*bg$Nrkg)u|`vLE1hnL9lCK+v8+>&Q|Tj7>n#U`eAMwwZF(>b zcsin35w-y>SW;1Dt;>zp?>fm63?>bYxNKSJfahvq9RQ~ZBxGE^O(X!vCf0-6`H{Jj zwc$g^co_=s!}ELg;`u+{kK}M9>bX7#*WdY$NOru0yZ6m#<#LY=^QruAp-MzroZgt)iI!&k3BqfJ|zn=eeSwG|Zl9aKN{XJOi-zW3;XkC(EcCL&jz5xP<3FOF_;{IoM zPMOMpg_%Y6T-3QxK?_S!P=^6p2e2B*v6UD2fvn52@K; zDnua0#B3ynvS?EZnr4wgGBU(4DAa2fDAR~zma$@!W|oB28yjr1QJHAW zD=fA&%*$+;WNQg(O_ORU)MH|al+uGT#>8mZvj)guvP{~FHH$`}BUDL6B}UmRM$#dW z+A9&5nxG2FS~0AZv9W-oC8kF+9SkVcLC{#*nM5xhN zq^Kp92pR@y2FPj#CdQ1yW{H@wh}c76zbm!UzP{+OqXSKE(Dy8$#%Mtk7+I&wuCVp} z2b+2G?v!XIWeQ6)u{6S?MV63e(9w~L*K_yoDA0(NqN7o?rvI_sB^cMG(#dTRteS}p zCM!lQw&}UubXMU6Z`K?Ko&q8D`R2*p>0&q!vVRAP=C7SE@Oz!_>m<`w@z!WviGVtB zg^D}BL*9Oa@;^WC?bol~{{Qp;Weqi(*+6?8%2sN%rXoDLL`h#(2+2j3PJ><7=*D&ArM&%WXxkA z#7PA+5fMsh69QsP#5PEYh>b*3C}lDzH5xHY*{PU_GGj7Z0!WOMFv$c=NvM_)DoIF5 zOsSO97>o&!WdaFCh)OXkL?JdvC<9TDqZu%<49v!1ijZVRG$?Hu88H@3gsf;WFj+Fu z34t_3mP!gK3IHl2Cb6<(8$v~bOCt=%LJC5ICMAmu=VZwx6^)`sFpvnzqG^I`kW4ga z4I28+n8u(f3}YGebyr4)Kbvk)84@N`YHjoGNNAX11{;?) zFFFUikxnRYjHS=6XQe_i(<|xWy5WQ$BUsXKd09qk(wgG+`TGokL}ShGHBrUBilX_%I@Dy)GIPN4gf6}vp& zkBDc2Ts!~hd~f)E=kO=JKkut ziI?Q#JKIam1d4L=LQNYpj;K7tD=#*IeDpp+JrYMKLz5zu{hv;CKPtK()%UfycAlkT zrR-K{p^LXY%T%|zRI6K{3e{M;Ian?!Pce6fJ45k$+#Ijle;1nbG``1Dx9+gR`hQOz zK9{xpCw{*BlUG4w`|vNMcCtS^P3OVwWU8Y;BSZv1BgDPNh^8UIj1|CR45Zmk_>lx< zrqDR)tYA(Yq78UybN*C~n;C&6cq(FIhzKfL`?ZHgno@C$Cgc0i<~;2GpX<_d;u;Wv z071C7F++N4%ak1;NOTSTO!xgyagl1!cE%Yl!D1vdZhw4(`yMYYXTNti?m@eTCJO@by;{M6nMM( zaA|l_X4b}(FCApDDp`@yjA@q6Bo`M{s|m3r@TrDV1qe(aV*;_03rPng$dU;M^4Y*- zn9l+b5=kZml5(uw6KJy<7?N5f56x2Gn1Ny_f?`Pg3PIsRBO)DwfYlU&WuVfJ22hlt zC1MI}mz)o&i5$Yc^Y_={Ac9DN1C)+P`9|l^ONiS$hXf>`l!7vZq#O`SD2{WW1_VV} zQz!yiD5QdfS2s(O8&>z$-B>sPdvRM@k9P|%=x;j|{C{RbT0ivSZE2!^e=pz9{U4&wzxMO< znuixTsyUVcFcM{zI&i0)Q2-K@qf=Q}h|fK|=ihd*T2AK+cT4tUJUs*dQ~v5-bS*hP zRn$a8a0rX>lZyzmP$aeOm?cUR3%>p2qC9H$a=hBa`EtLv)BjEINbxo}=}MPKP*^9R ziUG~~^qb2HHElbN`?!4>`}4it+v@%O?Eba)t!M4)ysx*Nm-hVagWiv)p@#Xn|9)kq zy-e(LfRYl7FoBFvk1&*$Mk&G}x-by4l8EY&A&xk&BGXdCXnl)bjC{{%f+WEQ^3Xtn z&GO2GP4G*Vwmw2QEo9kxlVC1FIJuCe4J1PwIRX|=({qXSU%0@`fFIzsfpw&x>M^N$ z3k;Pd16fdQ0>Pd$C84=xZ49}WwPKN`3Az#6A0t>Tfd=t^`6U5DuN6gI{+6Iujz=58 zx_SC_`%Gs)ocd2Cyw?7F{4VR}S6Q9p_V66;yx8M%AO_NdvYw?19Jq(?AK?6$^$fqM z7n29=SBD|+U4>L=C5QFMAaWpL$@$X7OhE}G8{r(YeK=DrY+3L2x@zVY4%emRs?g4I zxOLJ`Z_S4X^vHRRcfaqa{=a(&2#F+wq7s4tQ6NDP5-spbW2HpGK@boV35;O$*bJJv*0J^nDH&>p9l;XuZsL zsp-R2et(@L>~}LU9i;8z8g(6OvYy99hqI=;*Z)rr{kM4!u4j*`!}2?3dyb8d=deM} zW>d`Nc3jv74G-_J4@R1bhpzvbSHh61hEleiq*Nq4K!y+nU~(y@5>T3toh*V027Xu~ znICF=>HX87M=BsQdci&HAt6i~Hgc>OeaGciafHEd?CO`EBxFzLCwCgD#Dw1*!n?;D zeI!69IqF(K!4UU;?Ide(a#o*a)W7J%$M_x0bLh!FAB8yM0YVS)&2rjx6`j<8S|Yjvx1d-qL0LFK;{c#Ob@*>)ZXd zZsWlDay~!p^ZC9H!|r>U9UpI5`!?&j%&~my^VWV*pQhLB#p~=gy&Nj;Ty=)~FY5RX zJdgP;Eu;NqWX$dqMU_beK$RY$YlLe`LDG~8B4G*tH|#ko4?p2cawb3k3)c13kG8<) zQMm$({xKg$J}jrc_~2FkFZ7q&9jX2`xLoPJXXMg=K!BimZ%nxSdcuMm)%2N4D~@Mg zy~o`b)06IUT{&;&zty?ZX!4&;i{JZQpp>ae-~UwdAnKUpcd=}|yH9B9n%vs2nrmQm zPr`@DABL|}wB_6Rn!B1MP;L~;W<8D%)8p_z%O5*azNvvXl)Jm`R(#l855s$v-?(dQ zhyP{xUfpCvU6c_s}>zoi1pZL-dID>~Ekyc*#;T_bXljDl^o3*Cq zeAd2y<5%27$z>=!>MyoKjjR0ZcMy`?%B+4b-GRiH!S}K~EAQUt;rwp6@VUP8)PqT% z($np-eEgSF>F1&P{c+fH?!Sr|SGE5K`~Q2=e2gvECpjzCaco+74SB4 z{}fbgldl7nN8D)!TGP+X{|n$Nmg8&se!qJa{QkanS5?%x+~8^C{5_9%HKsc2KHp{d zPj>QafA%lYv+DABZ?a4kfAyZ;`>FA3Zayd6-2DY-b*8SC-PE~(y5mjqKOEZ^zb}th z=y82p%k1J@Peuk~F8}oY7scl(FSS}fd%y1|sQ+Jw3sLZM<-HoX{)hOVzm7wTz}kkF zWM2kM3%lCxHs=BGf*cV{fc#G$$ed4r;?y0!69oB6ECpea6{sv+d66m@U4%4$B(KwN z-EU_hxIZ8Dy0i9UJr7^XwAJ^#U!&CCA$#Q3;~H-&m_GhaPoE*S@8*BcD$~yK-o3!d z`WD|e2S>4Z|G43I`@gGg#QJZ!J-6PUjq>?^$K|$|$oQWuGu+=`{`2X}(QNE~xk}z| z)uGC7_EM176x+?+oZao*wl`Nb>h-OBg z#r`XOX?&;4!JE(I@b#G_*+)0D{P-WoJ;v&H$ik8IW_RC%JI^~E8;_X6_`Hcs?^(4! zgmT~?7XLav;hDDgn!i;iS4UM`f1gJe^}qk#zFYl@#OCw7|8Gm)|I#1T z7v-YV`d?l`o7vIXe7}{o7Z(Pmlh^b${#)puXW0EDKS*3(^N08Ny?noxq_2ng4Xy9F z&g}L1E55t`YJMH!GfBN|z+rebZ z&-A^mcejP7Yw=S2do8`juGi)Nl+>5@@_BntGeBTA&yUF}uDq9uR23osU%Wu`9#1V3 z2=YKX&j6Q$_xo0W%kLAiT-_)7tN#8{Na7$xc7VB)7J|v9IG}Jj5{bflfCPlK-lj+Y zXExS96iT3ngSL@#U_P*9pedB(o-PeIpOZM;boN8IGGcyXMM7-LlkLNjA*Uq zUuUtnL%aRC+Qi~>ioYysyJ68$Of$UY=eJT=_=$ge-FHXmZEL*i{LjVZGlsUzb>Wbo zvix}vF8a&29SBkK_KdbXnfk$JfrZ<72pc4Bwprdd_<78qX_B z+1dTDWLU?2Qhg4?o?_nDqVbXNhYmy7RvYW?e7ZR|DnzC9+q3g;hom*E8kO`zm!Rce-q* z_V!!Mgy3GOr{}CsQwOEH^mP!?5gIwy6kdNSC(QY#CVvYp$FuTM+CyhIm~QQCeNXB) zTMeYH?)@hJ8UD4g{=yU59o(E>Pl@aFqNREAmzz(;rb0ty+ZUH*{psu z2TRD5`jPwk&Xr7Ns#<*AoQ+Rfe=}Ri>}{1HDLo2bE5U$^O^`?9eLXE8eA|3I+u zwcZDNj`8FpwjUsObf6J+!R+x1aA221EeNXxc8Q6?iZ_=LOmhFD z-4Xr=`5fbjk`6=cRML>O?WN)XQi{(tIg@E;!(dVx_fs`cXiv>ZfnW6vgUZ}e@Nlt zIvV%ye>aVb+;3BQTIGCs-!ENX3){}#aodq`DEDewman=Lu~Cr1Tn?DzklFsNov+ZH zuQ8R|y=@H{n__H6hA3d!rHC}MTR|0WW@!;vp#c#Jl!7S(C7PLVy|$6YC9SW6T!OG;)gVKU*ctCuqfQpDCCcfXy_J^LP)v&HGky$pDb zqW5jeD)YE^Zd&f`Z*IErceicnUOaS5)Vbbv@qaY8rFg|))(nOgWb4q5?9rP(f?Vr9 zb%~cnUb`U-DAAB@_Ao-Na{VL=+JE`_v-SkP#Q)lYu*y~vh7_2XAqV#Y>4ez{pH~n% zBugmL8!ACjl7R3q^UC&Xd$!xfvTco8=C@6&^BRSnWz4%bxv{f0Ei|8w(pxNCkmp)3 zIlKLx$r!Y)d{G?rX~ZEFqEZxKe}(S3W&b~14#C;Ykw`)kG(Z)I5;`>5&re70TP5Dm z1yn8--coTX$X*YLGv**hf&kD+0we~)078C{^rz*Ve!rp~;ug4mVX!`IdhXDAzR^gC zkO;^?2phr3`kmj$hrNl}_(}X5PivK&$Dja4B0&%!c)ODM+^T=>TRBt`hr|Jc6Q8m2 za=hN-b>4ccf@DC1#BUTP0uV6#k66L+c6K@wyUz2mkvqeA(DMF{`>D@J2-rkOMt~#| z6rcb%Vo>(Ha_l(&AFy)iem}bDf17JZ)n0ynA5MS7?`q~YHlDad3^|P(FXXbWu?`^& ztAUJ`+D(N232Oc&td~LD>J6refj@ItbboS+nF!p&f6K&>7$7P&G8no68X_0%nz5p7 zBSfVkGb}?s4zpu2a&4@@G$Wk_chLCt>h!)IJ)7qE_1-y-Yn#V8Zbh$GbY43ssGm<R_4)Cn|v>0A|xGzZ!rvj zOdMf>dCMiBwT&SsGNhw&=0zC2m94ojNR=dFa0@UA$f6+9h(N#+NKTC9k)~}$I$;Qt zBm@&-kcbotGSV!;A`metyjC32L;_(RJ~?nRG(^M=kjrF%&dh@?b=fIFk~kVl7(-(L zFtC{(NEr}} zag~~}Hpzwzltu`!G41m8=JdV0iI;at@!b}Nb?@u1RFcL>I5VD!z_V09LNl&Evtyjkynwu6XwD^CTi#3sMj{WCfa1(51|f z+_unCV1Udc5Cw}cAdm^uJB%>y?NSkRCdEw@lAB3olvuSnkwckTgh_#SqYT9Qea{=( za|@>UX|NVTo%vhDJh=#037RUAH!TY(S!JVKjW{3-CZZOCpjSmTmCBxYI)`$%0h(!G z)D|>yyP3Ch54#0nQ90q;)$ol#{|5?B!L36~ISRcZ!X6@pm+Yq0v^p z*$!`4kszya-iKR>GXqJ3h-R5NaG^MOu6_tg85(7GqaxtMjig2Tk2IUksqms zPGpDS;p0wPar*h*(B4mfW7w*v^F3<%PU}h3E|YAN)+wQ5q2EM`ab#Z{+d-R=O)Dye zO9t6pd|&>*XN`pn=Xa2Gpq8AD%O@aNx;Z4NVl6JE)rF(CPrUw~-&gG&uglH!ql~q5 zdjq!N>o&(r(OZODgVqosSr`D6@|+DjqyX-%USB$T*;l54?JlEJWhU=^)(hU}+`4JEs=m(i)%X6Xpz45GI9gX+s{_5u zd$&?l_x>~dDNk&Ke)>y!uK2x|X83d^^CIZy-U#NE>&YRoOnz&PkcqO16!MRtp}rxU zY=wEs%qxLf)~rfm!$(stO-73BbytR35HVj`9h1|d4QW_tSY2hDuJxp%Q&yY1NJE}t z6|P-ufx(+*sr)RoSQk>k0G&iFr(eQ^QbKYDNCa?2UX@}l3~bJ; zD-fh%mN#g)fZ1wh6_0PPv}&xBcaFeTP`NuovN$qDu7#rttLL_$+beB-7|0eHF4InP znz!+=QLT}Lz?uiDrr0n@v^gxS)iw-+lVcTNP68sm%|Z-wZ0TmHksw7Qm@(5IpW-CD0=T?bH4EQYv;WAMY6eiDUKG|Jd#A1uwOV_>0&Ygs-0;W+sG_YOE zGHmA5`m~+7(wV9UC#FVa1#*!fVYqmq{?w-%`6!#)d**$h_F1sTCiB>O*k;!8ZS3Z= z9H+Ur#upTmQLK`@zR_z8%NdVOE|vqP(YAH^b&;}-b#W!biwg^e3;{{VN`#9XT%5LA z6k7g4qoQ{d5E%j@G9yIk5_uTKKB^NlELE&pl{SFc z8Fux~14uKks!Xlwt3}}gda-jPP=ihu^h;V(rUqFdlpAuXRue~pyQRmshK+HOJ$zO_ z8Vzy4^8QWaZfUFZ-ZKed5eBW;i!^{gD~a6k35;fdgTf(_9|xWA)Og6;lJ%$I)3 zU2KLq3os_+&r2EeNI)^ckkgXxhG~-&sIoJR11m6t`-taAnz^aKjB{%!>Vwx*#%fN` z)=SXI2YmTqqF1VKRXvt&GF4RG>? zoFQi?V--)iZpd55(oY zlrrPknf8YzB?!E1Yb}wLuGcdq7z8zQpjiGT`yni3Rs#(NHu^N^_02Q$6ay-03gns0 z)kd(L(4#FUhJD40R!J31FtJ{E1XN69F=(h|^)*^_B-iN7rVfH69baHGtXibZW(xQg zt>O}@h?KmR(_{uUE3~MoX-~j&IR(WdV01dH)qLWxqL7-)xQmvEVsj*vyP{ZhpiDi+ z&K{dk1Y+6iZF7Nvkjx={a}-r%zXwaf+;bUQX$cEV(11-9MaETWUbg^lUw z1R~sG7Ode?>fN4Lw|BiRZ7h3&@nXO5ro#C$7rppC_S$9eH)*?@MZOP<9a&|khTjrU zoh2kRdOC(I;U;FFK$y9C1vX~b_vgZCvn*sNeAy>mZ%*8nQ zdJk9VVe|9vQuBXk$T_vfifriISsK8OYNR$x7DKkE-$jKT{G_{~%+dVbj4s9c2!mK` z{T`Pi&0qgj$R|C`ma`j{*LTwuSlstU@g0ICl=?HYCSSgch>5MUnc(6yRPABBG+45k z{*ZR@=284Za9z`PuXFTtwb2qev10kM`&?#~hmM0_XODQ$?Yql3s||txewh=3-(^?U=CR#|b0tHSJ7RaqyTh)um~otzlZ)F>*j!!u=Ddr)(rhw+U9Mh(tC!$z z`u_c-%ZSR3E?*0k$dtLGpWH>C@XN$SHUD~&%i?++33nfF=o#jCyM=K6>em>^Ut4th z9T2N?gq^+5AN%T^MuM*YDMo!hCt||F!mEEB@|q$2@Hs-SKf)3)Y6&*8uuVW1JFG>k z_RCT-dR_dB_VD&vDE|tx3i@e$=ksMX{jJIGUuoYeeUO6heckx8s=2QlNiAV<{$cdl zHGrKcT=Y#R2XA)&$NFJpq}Q);Gh0x(6i|rqP0oD@2@i)a_ba{ad;AJa#4_0$2DA$6 z<>2KjCCbz}3@@uMmq>XS88wiVean{%<*D5y8rP`3h+KZ&nU{;lTnfTT;-}~AxIX6@ za!cbKu)*_vq@cnuVZermYS6vv)zx?2EC_^A2?fM10qOn{)%GsW zzL-jzZRf4YFwR0eI%Bics_vUNaVuTEW)81lGC1$@?{yA8|Am}O{HL%oNjX)xC>Jf!`LpB*#~ zELxF)8#4uY+ck72zyBlGKgW1Vta_9RxIWt^z6DkU&p*0~s_#>bk!>NJJ~#05o@6#0 z7>eck1C~ekT}Yl+;g>WY*>0NC_?LNT>CR_HbmOjcBvtj3FV`h^@V|)-_pxpJ)t(dN7OxEkhOANY@VvKQ&oe9G_`JX z)%8745(&`f8~|||$sBMXkscKS93D@8V>trpoevP{lc)Vxf2qr~buRdyl&d*eiDA+k z^;a5(Z7k{X%(m7^QChusxIdxQj6CRh4=~c#a`i&nd+TtNiouKiqFCsoFxFB?ua4fs zw_7=BWXf8ZihF(i8H2JRo$*Q)W|&;y@PQ%(klZy&KZ~+u-8GLSyx^{0q>2jbH;-aa zO0-u=&zg4nnR4Vcb1!|xd7bhrw)!U7C$?Kvy2ysfcQH(Xr=Oz>TRj%eI@+~>UyiZf#wj&0rTEq-qv^1nTZgfYS5z}QMuN^#!CRZi37;W=5vz4#q( zUvT#KPkZw5&+UVv7H?fi3{B5+z^qH{zUiQC@qt36$ z`<(h)`LOaeI874uXGdX;@=eyVz{U*zAN5Bq4lzMw7a8o%7eP`gynXVPS64K_3V6Xvc*k zUC-!tP=D}Kz}Z%Fd-O4Wh74k4mUy0*~d;->~-3I4j$ecD6hJ<#<4qFMZk4~zs_?fzj=vVZ>t~o_VMgH&-gdrRj=@r+zCFLUv7F5d-()L~)eelN-+r0b#C zkjX~ssMd0)>-$@;qhSjovwQ2y<+e?8rl+v>a69)u4{_o2FXsA8wLRTG>7}u#fUkRp zJNG`%`Mp`y+>=E0rkZ!2PG?K>>MOV&URir--+%hYOz`)4D6E27&*6rES{J~v?;A-q zYt{GN&n$84Fq1qE%S-83VSZN{^;>Sf!fwtVPtc>s`8&_@BW9K-`>V98%YQw-mgCFZ z|61OXy&OloS*E&~-Ogk?S*fn$qq#fP%4nE=ekb6B?BylHUjO6yH_K!p*~@9XZ#|xg z7x9$Lm3}wf-T(h^SLCYtUNYGi&vU!Yy4>D!Q-kTp`Q7y2K7Ng^rfL_&pUf1}ikTOe zkO|0~mg;J{Zn(I}ZtoeQdHiB}f4iL#l$+y7f7}X8SM#{OQl1BM)6Uud7W|K0oH9|D z{H>klmy3>7pm|T^*1E|r!C2-P>v|-Oo3N`p7!x_mG?ooJV+XLt~$!zHL|=+h23^t5rbfKk8pu zUi~sBcoe6@+2a(aj?-s2{pT9a;-_;(?O{wHkDMi7#tcUG&Qn#D$j0Hg58Apanx^{e z^1^J*nsd>Ry3Fqtp)|4%vs=i(x5%BF=t$#xJ+JcbBd@%&d!UK7!T++F9q@D{z%%iRcyB_BO8__ITo=c zRg#-zD-V{Pv|CrxG)dPIYI51wVBOf#{dg#QR#4YIqt7T17#m&L;7T`IQ)h#~7*Ani z=JVcr>o@PdMQg1ZpMdI6()#>}Qk`6T`3fi% z>Qsgb(HB-N(w}dPpM4F{5SrFDLIe8vMvt0kN?ZD0LiW-|?UG5m7ixy2e^0%X687Rx z3xW`InX;-XYB>)mb^gL#>t0uu(o^1ja~ncr}#u8ha)$~;~l zXggI8D$Dsz=EauDy=D5$C+jV$yUN;@$++GAn4^r*jNK`^ZX2(KV~1;E^MGMFy7$&v z2%G+fF(K?~){nn-0=pFRH$Qg7p0Cu?u3j@~2UIuqt5@}!@!C@JSbgD^U`@~KcABqx z{BmqrY)4Nmaj^M}d8%&4#%rqgcwOgjtu^mCVt2%Ds;y>zr5>+e!`x@Zri=8Tdzr3` z)Rg&~b+Jh=vz(&_>#B^`Zx#Evzaf7>*kxMTMVAXU1##)$!VeN1r>_^SeqJom#z% z>vFC+u1BFSL4N|Nm{kq+o;a(`2W!DShwUcQi*?8xt0{H7E`IzWKEdBrv7=daIpOH> zrZD{>L;Aa%f2ZHXXT*qH8mlkC##OYhtQa*_8LKac7u%Z*`r~8uX2vC_rp`xLdjy+8 zP#B7+b+3o)b@dRr7d9s95p%ru^XLk(o{&9pHq3Rw1*^IieJYNw*m3-fPopR5P3T-` zBfD^-9*&*Bt{&$N>=Jnh9Z~czXy}hl)WgPjjrE)ty%Arp8C&;y;G1{UWd49D`iY@o zRi#D(S6GhdQD(e$8FLfsFLp#v)um69v%#qKjE-8r6Jq=#i7EG!Q&q7&@Xhg>Ir7}O zsb5!0{1Rmz(JlU6&)9bK$auL|Y9bnY?%da?msQyOWny&UX2!>vAG@^N*UOyw?X`PH zPSu+%tBM~dUqz49BK}w=`5q$I$^B)@`he>ri6b_*hGM<8>V42w@guhQs5$D*D|P+7 zhQF}+!jb3B$^6*m@I4ufR$kL?PINii*k1b&#!4*2XC>COO7McZmbe5}98zm~kt==t zHJKZqV3*}wY5sZrN@`2u(n=lO7*gkjH_dWQ+S*Lj|2T;M;_=!Kn8PrMJvIi7l-;gQ z)sNB_<+=(R#iuXhpEJ$aS_|auTMTtZen}L ze5xL>#P+VL9v_>y3ktPj8958T~d1!G^`i@XOc)YvY$FLQ@OqvygS zqxBeal|NQ*+4dwp=y7hAx;Fo&z78GR(W&8e94w>#i}Zf&SO3lQ08dU^%6I1 zPP6uNE^ZvF2h9}m>#n{cK8}wbQSsyTre5+Q_KmY!m`nAJ)vw~dR_+u3-7Y>Q4$F~g z^GsbEU$1XrJ~uAZ@RR1LCE9oh%o|%06&u=~d~F0jvx7Jf&=)WsTEzO6C}U*F+vw*? z->c||JLIyKdmwPC%UJ*~x?*CRF;)l6CbtS78>?&c>+ag9gC@oV=x>tzQZd^BjV5o5 zk>_HwpM!4@Q^BovNN~*PpcXev?Q|1kt8JlaExyvUf>V*GV}z`>u(@N=1qC0l+CuOV z;kDHkfDgcHu8sJgCU=+O7v@*OFM*%u^9(wV-L8Bge7Da>;9v0hdGN$b$-bE)hoWkn zHCj$2I$jSFizqlF`5>4~9@kgJq~CUy(!ZRs9ne~cy{6vDRWSC2fb0=_9R1Iyp6Gxd z_<&Ls=z$L^^#&AwSgF-&uY;Y-R7G^#PDf?D-W;>4^9`^O-b7a?SINmwqhq;?r4!_G zS9NJ@Vw0}C*txtiQC}JxhkvBDoUxZN&M$iHie8)r_&g(|D&dDg30EX(}|xb+{w<^1UPxv>5Prn zzawqzH7budvaXu6(M4T5;U z!+++7>!H|#Zv9Cgb9_OW$~y7nth{?_vCU#@`#j-^8)uXYnzZ@7zQG?77WL z&0QI@P3*qSpZjLfHEV8Fu|H=rKk<8pabJi9)YH)9AoFq{Xl-Im1MuzezsmJ8uDiLC zdy^&a+WJ1OU|#EeT%|t6$9k5%l51C^lYMP^4IRw+c4Qqfe98HyBQ{?D5WeiF&?YY= zuO5=Na^qGL9b?jFjoP%CugeJ-)<-3;g4mvA?ha$T{!Oh~*^?el(mn)_oe#%7yISw% z`i54^c4J=(UN9=d_4~+v4p|Yt;NO#jC!Vc&t`zCAdGrs%zZ2O(uH?nCUqBYNEN3g% zPU>wWT6Q|4)Dr%c9Ftm?v!X$+8Q8yyzA$acyAWq5lXjH*<8ps&qAqKTk#_-ev?jSH z`>50dxHc&O(P3Vi^ ze|!-Ls-xkp=6KUiHQuy4I^HBX!F*G{i)#gJV!MjhJtS?AAn75vx|BE|`%Wjbw$2hB5LCLMKYIj;#A4*!I z=nTcIAnRSM70)otAHcS)_@U+Kh^@$P^tg7kvv0+Zj>|sTs-qvQ#aXM|4<2!^*c5l- z#>5iwaljZ|6gS3~ti`@yWpNF;>_OOW1p}OA;J>EL;FsO=#fYV;TfHQi+MyD# z=k#AqKk?flwIcRL=_jA2?`Mr`n2&w>`Li;YtWEH)UCCTsV7X_Dw7vc=;-}W!=wv030}=)@~q=-^{bd-BrQZU%~!X?pNlE zoAl9Lwf2hFAEBT8#67u~z?xR_B8EKy^UQ19SD!tOpq{5)r!Mf%FFF4} zTm&b3q7!wQTVk%G74xFbR zmJ_R<7-t6T<=M~-v&V5+H`v!3=h@RtyZfqE>@~<`&kV&+oE^DV&XadL z!MLTHsJUl&W|2CQ{aUO0I9JEpxaWC^Gn?(Jk{V>62^eFxj`rGXiRW_h9kowxxb}+P z2!0ct!RXiB=N|3r6lJiiGH*b*_k*hFI!O9JNMsIKf-A~vMtS%P;Vhd;|( z73kL>IXg@KN6f!^En@O)%XvrQDlwJ!8S;EcK2+s-QpO1mA=6^FQeSh|B;#bScgM1J zv6(X|&!6(F+3meIQGK@bV^h67j(z#xrceEoZp}N&=v@&uPp#$*zmn&m)u(x$m1k~k z?5X|S)HS-qn#6bel{y(vZPh_?DSBhB+ICH@8Z@`tSDMAzm^l_DcR8axip#BPd11U7 zFg{|J7sd?j^BTUqz?UyT?(-VHe3>u547ty1_;SRTN09rxhA+?e<@1sIyoN8g`tnxf zKCj`+^L+U{$Aa+%7jMA|d3or4y z(&($10k1F2JFchX9TE5#zA$k%$g^je_hHSv_c^A5b}+ilmit`%tr+$QaaYmAcFBvp z@aAc9vv<3^cgp#>aUb%<%+t0ohg~uIN~2I4HAW>ToWOK$bfeR<%Qx;IH#}a$mlyc* zUqtTn8oqp)FaHJPKCj`+5nsL)xzB6(@_b+ZPUJqX;mfVQd<$})*YM?ezWfH{KCj`+ zVPC!(xzB6(a*Hp&9=XqJ_;Rx^zYe+2Yxr`LFW-dR=QVseriv-3s9 zZzN|L<0Nl*w=yShhA)vfVR;wVyY6+)AM$>)F7Hhv>bY~GJ3y|5$%$`qZU}%k7kCFI z@4wu4Un9&F2Wxw+>Ji>`9u2qHN4FfdPu{n}4#h@o1AGm}@3up|U$J}D=()x_nxCYD zbI4oQ!8??8>^L#(y>kl2JX`SNN5vkVTdOVkN9{nAJ;o59jDPGE&e`%_?OSrKbk&*| z({z;I0OH;nc&E0ki9PvtYD9zF5d?8nsaL96=n z&=V?Pzk_#Fp`Bx#O?d}t$-U}ibL@nzt(fd5YecTC+eVvXhetxOK0D;={vmpVmuC~1 z>;1H!P}-h{zLii@$5>U)bnJI0o6Tc3m{Zf}llPSHqpjhQs*?SHy{Jj;tvSGo%PPh^oPBV_R7~&J(&)Dnv`1I|yzr@alU*-Of zU8HX{?J#GPlPY9u-?!qUrtlcP>A}b7Qb%n$4?K&mE1tw>@svIP+0m-RU34BrM3Ah_adGJwowB-BhAVi(RcYp`kz3*)Hi2des|$Khd#G1-Mr~? z^Cm2LgTAXo7rs$OpB)UBtHw)K_3ez0oU2rWJHJx>?U1&g3WeykJ|D)4Tf)_Zr$hiE9Se;@5gyo8aHL|0gij9}O3HyP*R4?Jr=5(a~wM<#hszK=FDZhK?Q>D%2ry_$9}ND@)r`)uUeSABFg^@-j0)a5OTc0IO`G?z4|A4r9&~H6dwTs+2R67FbZheQIW@^xeCOAs zNlhBoappM5{JfvU$E-bweKVNN`&b{dzxSgV%>J@F=cO?_o<*hv@o0;v?@Y=Hg?N8i@)%?vXPO&+C@%6pS>$Na}He>*F`?Pw#Z)U2odA zUbzT6|C(_wc5>FjA1-!&5gGGMV`pz;jE|kWXuo*E!_LNU|J14b_bT#RKm4Tp{`i9* zPMzmB9``rLe}P{OU+h<_i(8CL_Ws0RCS~OErA#hstXrLIRd*K?`_fyC)kWi%*A?Hx zSO0sAQlhXgT`~qU+5N3*Xn3%c$q%M|Y0*ezQ!+eLG_tvpkuXx3LONN>6%MsB$u+Bs z?o_Lbt;~BEl8^myes_cx{hm@QpwCK?a_xckL%#-%Ll*Qj^epsM=o`>?q0sLu6@^wn z8=!4a97;gL&56}zkfy&VDLC-<2LqCG%f0_*gx)r(?Isp9!^fBm9 zpzlHRKf~XSLAOKuq4z__pg)HG0eS;kbefnz?}Z+LJ_Ef7{VjAB`T?|niG7JoR^2sRGIIUKPca{I9&pUJ1y z9f{I_(Jwh~k;5zJMrCBNM(`RDK#A;@5Vc1n;yvJjRa^)0;0R?mTse%PbbNuq_5D&3h{!Uc3FAluwpyvk(q#Cm~=>EUXd z=Md3S0{A5ijFNJ95pT|v82}#J#I&?*4vC8_@^N+W&@`;|9V(@n9iL@K}Ep~c0V zzO-Z&$14d>x0{tk7w7!&OvCVSFX5`24>ls1 zU{~IkbzOtUNUz4Ge5Y5zQlzQefvlR<9?qhPY?U3PAx;%?`8>BLbHK2dZhh%wf|&%p zJw)x!^_LEi!< zXp#Nm2(>c@+)q22EtYWtJH`MVvkrxgWf4NcyAK}~XZ2=t2PC-DJ>8&f+PD*-bHN{U zNf9tA%ioyiTps0nP=@3yIhdE z=oTN`c3pFqU%z{Xb090bor`9ok~uQNLloLDko_*V@_dmCt25O?V3KLsIJ*1_Huk5z zdYDOs+mXl)(%7&XZFfg0r0?h0lu{x*z@S1}HXxQrp@1gtS?sO@St6d2!zrG_|B@VX z*kKcLQ@tb0=KBt1Zn$=1=cenf-+aTi?K^I|`IcFNL|>BKfqxkZ1cH1*{-^1pPxDXt zwEQ1G;s584`?&X(zdp`$kGFgOy8a(&rNsiQq7^TUKDEA zOZ4TzrTPlJETGmG2RNs2!d2@_9Lv@ELQc*$YW+S=MC(1akJ4F>mh~J73Yk9Yt@x9t ze^bwVB)lh7&CusZAg;XWpZ@UP+x@ihE#r9qpydBVdRFn4c%j?nel^BjK}*I3A@Bc; zc&2wpcwaJ3h`&9Y9w&c`|H?+C3}lUu=#UT7@V`%jTa7ehYhr0; zm>FTa<=M~VLJsJRNsVjn`PNnB(NoHc%E^fX_}=QQV1n1Pj~K&CsyP%@jlJA z*-eV}_nv!4AI7xo_K%(Cd41pWo^#&wp7-W7%J~$T%*N&E9CMr z!TrjHSAR9j`oiM`Po+wg?zaZYR{ph-_t@7jfe~QK^GaR3cjZr%`DFE{tIt#eBCFY7 zRcZDBA0ux&hgko^6(xAuj?Xkpfl$eL!#GoYgYh3OI9n;2eU)!Ld8YcUFQ2Ino3A^= zp`s)EHQMb;1M3Ib!&k39Q+*#fWdHM#xyRj4W144>_6DARH#XLS4o8)GraBz@p%XA| zr$ea=!|KnRpN@@seD-C#nr< zm!sP4IX>HNUh(3YdALlAV!qZB`dwZ_oBvQAeG ztG}$QW9;KJdWblGJ~sAhJ!1m+!o??E8xbFP2Y44yw;4)&V;erv1b#QqAW!j?IC#xh z=HeqwYJh#eRmH}RWo<5_)M@Xsy^{M>#wVZ`Dl4RJjK6>?_*JLVzA|ZV*eDl=)afeerVU;ew0{H zqnkf{%vv`l~TwrWr!_kT#+W!JyNnBm8+U78}@pf=RwZ%w3T5gz8Uv4PY zm)C~s%jQkQ>FR#x%TB>Lel@b>`<87=#($|V zFJtYD+EJMcUvk8;{oo71Q#@zz+{1GbYhmNjUT>W2DGR;;`b_8t!I|55i075i>Yz=t zY$wEX+lKy%j5)zR@WIh-JaLv$-}-*h!>IqZewjO})W4}TT6S~LvJLpt-dpj}Mpi@i zsX~8^AMB{SjSq@0>P&x$b+j(ziEeb>sc-Ldt`Pq1-*MQ}XfQN{AJv!qR-dDF+hsc< zk7E2hkr{tIr2X(jbviOjT(x2UF`ip^2AHqZeH9~O8+BI630nA0SY&CdJcBIcwNW2* z*^lOr{Q``^$I8p#`x-pdaHKpv&0Zq*9Ac(Le0c68AAaO{rN#)(A)b<_0_~^H8P+3Z z|BfT2I%I-68jx5}Cs{XA`4v3yRY&wxPwowdPS)W&bV|qktP-?~r>ep5DXpJhB8SBEbk_eh{AQ|^KM|gy)1Wy}M*a(d($Kjk z_|CjYEK+ZLKf1dt>tTENlZQ>}2t0gO*_D}+hpb3>25XaRUlsjIpFxiFhwK-Pkp1NV zKA@c@1Od!bir-T(N&B{Mrb9HY&N}3^uuV2je5Q z)`KDQ+F3Kbsk|pouCr}N{Q4YxBxj(H7G*t+UUpR^?#IX0IZ9o#;Sh6B(Ef zzd43gBvg;0Cv@ShD>{GrtXtCq*0WXWAA8>E73@O_>R zIpzJm(A%h^2K$yc5d8!LeIvnqUo|ZCHBEipNUcP+JCI9R?^IX9V-q|La3gZ0EIdC& zpU}m&KInQK>rtPw`s!}+_VZu;>cR-QMCz{JiecMb&U<2?NZ(NvIa#f1$7jOto?9n+ zXz#CH&Adk0FS`Ht)KSp|`LxlHx@7*ax{md8o-*_E$bBt5>3bg@=r?Q|GDmW;fEN7)g=<5X!_md}osP{&U z)G@|Ke;xW9RbkFgJU4`i0g)LSUBo{>z#pW>O6`@JYc3;B$$z3BALou)*mj|1`^TC> z6*C~Yee>*#3fyNm2f&*IH|%B~xDVXmS@WG?{Qhxt3U?*=W8kDnjUNTS*2DY2sbQM_ z1@QGA{xJCK9)1`c+v&4nj5rEO{bw&tp@FI&yM!di;~R?DCmyOx!qQ)=%%^_=W0wId z01J96PszQn`^bCf-}oPAo>~U3jw`hXn9D(85EucLQp4mdtct?BR9RLWsMd$chooNp*2SFjn)Olq3Znb0Qm9p0>;i@oM~-m54$RU))u>- zW8D`#_{Ah#XzyIoe#2|OGKn5QR*}nx9LM3`s)njQm6!9}Xe%-WI3u^31J$1yv@LQs zHM|u)jY>N_L_R%IX$=ole=Kd}HH*h9vahnV;bp)}^!7KjEo7gD>22cv)GUU-uP{e}neRto8B(j9q#Mzi1MCONws-I^O7SUR^jux9aM+lk$I zrW(7Mb3svT*If2fS6?LnI-#sIBUX9*O&erFC@`4fJ+)zB_1h7{f`{o_Z zk@pKZzes+uZ{aHIkC-bmMJf?`xAfLZDrwmlalINCX^RY1*M^bDzN`Ej@Koylijlr+HhXND zYeJ9Q!MXN6M{?|MA%7$DxgS|$3~npWExP?p^yA;?c5tLg4UI^jjK>F-+j6&oJU;6! z?qA-hP9FCReYC5@1^W4H<-cPW$&+oNp{lGcHa9|ravS}~xW<${QvcUd`*9pyM{Rr_ zpU}SI6CH){k&yTZ=Ma2=JA;-5*s3kenE`ouXDkJZ$4d*W0ov}_vH> z*HuGNYoJTb3`9F7#$AGOfYJ+DB!)oOKMdv)mNwFDdLOb9`oh z$q2QVR$$KsqB~+A-_Y_3-zM}XJpG{`o;P?0HaxzU<$g|LO`#9;<;Yp; z(;~Ymvd^yEh3_`OoA{GlI3aJSW{b0}oCmeMB0st3dlNF}$;Zb_KC^Q|X64C@%`J4R zYqOOf&;QHCroXS$R$woX1|9>%HVcq*y6iLbI`6lxy%vOB+Hm-FdH>Nils)Qkywl@< zE=_qf)vs+U_cod*^YNF8obzQ)fcGIeQ-$a!?^l~x6T3R|O*wadyH)&XzR9^0or?d6 zZ@4nK^-cSV@MFH_*UtHI82uIh+d0XJxBMf%$eP3mc4%|RS!-1B>>6^wx+c@LO(;Ax z&u1M88O6=>M248WS8%V_{)$o$0-pusez!^P0|rGO?s;AAW63|9oAPC&{Z4YvZn;}( zRK>SAKa1bIt@9PRujO-$TPeAvNNz3K{s4Bb%@ZEtOLAW$F*#5B?{2B7r{#XoBL5Jh zybHcn-2;9|?V3|Z+sB%mkISLK-z{GuJXn8@tnbZ1r!69vtP>oxB`=PK;7{%*K6VSw zasHCuCi92458i}4X9?!YSwKYqn|tB3?fm%@=$O8y@ROxCf9oryMzz~%9M1FZ&if>J z$0}~-e7(1_(cDbkRj02a2BOezDQ-RiQ`-8S3RpAGcht+WZynu(ZexnNK_%2W_OFa%KV#c%G_3%O8bG|$_*7!%L^LS+}X&P0e#55qQ2kZ zWOrWbj$a*tWcx$hSKw3Cxe;Ve{{cMI&y7aDS(xpMg4UU(yn`*~op$Lkr@PAVh`24i8y=byz%A$@<*tB+{u~8OLEVpB7Z6CdGfz| z-dI76z!%l(UDY~roQyF(7$~P%TYOGz=ntU_;o<4xe|x$x%pK+59J|5D5i1gt2e6w@ zH9OttJ+vX^G~bYN{MM$@LMvPDxB5fqjQ1l_|8@WOPDJ{`J;8{maTkKPE~!wvAlG><+Fx`!L!g`h_d zLicb3ywKp$8=!l*0bZ#0==IP&+yF1sdGtEy9&Uga0v)H=ujC0bal^TF(l)ha2ENY=G??1AmlrpWtGzg=Rom_wAy>Gx(9D$k%s%mnif`OE_?D#XQenepe8a^J@WM=w{we4lZh#kNc=X$$d$<8! zX!7Xmp?kOiUYPFDZ-egP26&;-qpySR;RbkNnn%ACx`!L!g`h`Y3*EyF@Ir$}zXiI7 z8{ma{kA5?B4>!OIbsl{UbPqSc3jvSb3f;pE@Pgl?-vr&m4e)}`qu&VK!wv9);n7z^ z_izKefL*knE$AN3S;mwct5o|Y*S6~!Q^W0>-kilfs>=H(`-_af37@Hr6Tjj9Zi?UZ zUdC^Na#!5G@+X{Y<$k>yBsVvy*G7c54_^!76CZFM^^uD%a?h&o+il*v@~lM;G}>+F zC}+OGU_)te-I3Di2N#tB;l7ed-S$WBD+SuWQ)*XzBei?LkK;j|`{X>R^YU%(RIhul z=?}ZIpvUJ#9-qaXfBK1%FGRgDMJEG)_#U-N?ruMjXK`n_jxlwEwo@N*_rSevOC4vu z&k!RBmP z9c9a0b-F%$s$|$<&JJq1&<*?3ef8lZ`9Qd%BsEm{{0csT%R8^Me~0!{$|y~P-(sL{ zS-&Ii3Y?=(*IOq_aOXreo zS%uH(_gX*e*1k(g?m{H8mUULZl9=82Au%;RAD&N}5w_d)*t=VEb^Vaq|^s^^y%%0^N+czia zL1?$qhMxm3=QR3N!;E7urs%}eGxEAR9{x=E`^Z_-tIYqyOZY9NE#C%Dt3b){bSpZl z3-+U%HgpUxHCU1}3P+fAS3Ql+BC*o+SNa^WyYL)@N6iPM9ilC=O|gA`lI`=8Y@gpc z#r87);Y(!v^*;)~Pj34lwwJT`5zbvkaBpRiw$@R-8w=Ad09H`zfNoPX)6Lc2Dm&BG5iveVP%I7P|d&m_Bh;wXR^B0LB{Vh`B zGPIEx;N5$Y-w3}eFX8_b{3X6QC-U8ob0++BTx!4Bsr@D>egnU&g_oR}&5n{kSa8hm z+RinMZyG5&{;l6}{vcqKo(%*_CuhzqJ?rxf%@ zFLc#(eJ^y9JAghpAN#oznue|nasd0S)QgS-JI3u@i_PzRhz;QtRQWt|_5Fx(I{$#P z=c7S#&{=5W_xO8XJ>xdj#teT(`|0(xw||Mht>BO=?_`pzm)ysDSXy!ke`gYTqC_5W zBtNS`p6$d)-gY+NR}HLvKe{%8J1a{K$sapEBBSJw_m)Wh_~K=A@Rfb!U~EtA(zcfz zJS?`RZG>H#Mf+oOFtUv2;C~_x#pb8sQ_I29ZqYWMh(qx$H&4{^u$w20S{_D+!DW4t zZ{?kGRQ`sCd;VjbWh#&8nA|nKe~E(KdG-w$DYTCG0xMK+POr0_ejIg)r>t#$m-`gEJ7@BB#Jdhe3l z`B#k7xs$UN`p~)aRcNd?o;%xXW4zqCjrQ;t-P|en7%D8W%h??L$={lQkIFah@BeD- z0(TDjTlSmaOTm|B*O@BavrZ$4aT)DKfQQen~?vJlCmuAg>y)yj( z|MZwWsaX60GnUA#TD7Wi%0%fg+m~jqZB#3C$I@&g-y@b7@H1K$Noz)yh>ff;|S)NcSQfZKr`Kpc1oI0~EsUI4xc zd>{B5U=*17C(Hpp4LkrG1O|bx0`mJV&kFGO!0chAt_RiuTY)I>Z-HlkuL0i#-T}%0 ze~76R2}XW1crF5N2DSpbffO(RJO{i4d=GdZ7y$xbS85J$4R9;49moI!!1KUaU<8=) z4W(8B4*>nZGr*q#?*Zq5`j?bi4738ffX@R3;7hP5LgSe0U6*?;A!BGfIkKP0{8&<2cUsN?gC&f zuo<{F9nVCymnBmmy5^LJt;HW+u3FAOLWK0R7Sik-kD2f4v+VwGpWvaHmkNJ zbMZ{3H_a?FdpMhm_n4j0?(Xq%vG_xYPR%14i)CcS#?1cSo_I26b|51k{IHodcQ#9rZknHX0h-ZXlXIG*-W_oMKv#Kp~*o^LvCX(vj-kh1* zXZFNYRkB!h?(lmAazG?_OQBB zbPzv;uvxV^lgegSdNaEd$pe?{lV;A0PEyyl?9`?g+EGsjF7sTpL)83GJhQJmbx^gT zlAdVtFbN=@)EdZod~=7>@q?KJ8dq)cLpfJF6GCcT!aA;{N=Mm2cYGgu5iQ7O)wb^L z`2J|OnT^K}sGad>Y-K9hec0vWT5n=?*rZT6isw%R(G=6xaTH%(%o@!DzRhDSM~bwo^DFjP!!?usUp@ov-g&6+YY(Ind6 z9)F0Q8}<6x!^zIBOe&f9Z6>)LHhu_Txk9wyIiA`b?e6uwU*cHuA!gaf zeq*k>v^(A-AtF0O984!t)b_8F)r29@f!RUkLlNwHr`~)m4U$a74RGZs^TjrulF>0y zG9HgfI`4`~1av1lGEs8sM%|rA?q>uMSDsdx|#iOevO^gp$8(oD6mmG;- z%)lr~Tsq@TSu#O_M>Y{HF2w=gnX;IdX1foMr?rm5xj3t%lcXfO%aXk((#HZT2CccW;Goj&*l zs|JnXUbUipj~l@fq_Nb&q?*+3O~MIpl?qZL$1(y;4p9r4a6D@pctGwQC? zzT824m=g)~DPyA@Y+Y@hn5<{$eZ<|PMn~_yedMF8E~67=r|lzp6Nzhk^`ya}Ei&mH${+ha=6cWbSlE7ig6$i{o3>8=zjPpTB#bdtJcikIBB z-EglLzdL$UWLB!3&St`rH4?o&1X?dC`+gmH9!aOwiDYkD_FI*t|*!KLmZo8N{9y;l!;3LVv7U{*+iek?md{q;xRd#qB-<0&LM{#ija2o zWl4(fb;??O<4vt=ZoXyhts6IO-g3vClL*m{PO5`adG9xpBXFIiOKPSRfF4{rrSOu3=9EmcC4)RU* zNmmMJo+inutn$%=}&(~+>DDj*8 z@#FCrX3os#^8UQ<@Av1j_g=f;y^iCU#=nG_ZuIN%qA@eMkIZpQ!kE-d&@1R{NQ@|YR6t_e(JaV?(@G-%Utt$?3rxLg!ucyaOJIfeEYv9Ua0+v zCa9QfP@DK}bKH1ACF@`KlV&p%ru>cJ@1MatH>fn5;V_lex829iyU5fxZE{S3a>hFt znmqO0pq5Mo6}qk`O|hKtUOZ~d;+o_3SARJ^-hD3Z-#o`0_q^fISvXLp-+C&$DfF(Q zeUq#4JCn-Mj=wpaAb3n~?SH73=DASZeQa=U!U!(M4=UyHaq0|(Dns24MxAN(hC;`5 z@H^eJUB%r?iH&F1i0?&@nUcfq0O)WP*t zkG94>K)-@fZH)k15OgefV7O}m?aaSg)&B$jRBlyut65^l zk_v*#HI#A8>gtu?;5gQ4m?uJ^e?>I{O*HDN2y z>eun+Rz-XDnPeO@f!lZ+=znqT2MIGJmH#f!OKVSppA78?&tsq8eQesigb|%rz{8Ki zU*F(zdAE-GW0u!8MD)~{y#Da6+;F(Hu&SB{Hk02RriBZ$DZJO>aVdBcT!CZqqQ}zO z|HkxaGD|8y<+%aZTk!V7d!~CDJZij+7GCj|g%7@eBmvI~R(PTTtKbu_i8rpWcn8<; zkL7(6Bs-{|^VQxa@FKW@34U8@VO$lx&&>s2OKQU9Z|nc=M8unjD&q^_!-y{hgZeM1 zf4<#}JOFR^x74;D)KCHSTg`BI-#bOWTvhTkk$2DAzH>GD${1*F%!78kv*EGX;QA`@ z81?lnWno?gznJTU7j!IInA?l!gQWb@qFZWaSc9S%kTPB-rvakv$>zc zSa0Fo`8R@8%ggtv!wR zALe;!+}4#*`OH<^k%jIle7~FLi}-#IchTy7yhHa@uH)`c9S-Mncd~ueedFWxnU@TQ zGac~7xF*4Z{39=XCC@8Nq7b&MGZuT(wnr`#9UTBi=D{|mfce$qSX$E)~u z!X55vyC_J4r*7#0=>%|N>(1so@|IB>hbSlfh;GkP=1lH$FAi#MT=s6t?4k@;8hmwk z$M4VK{SMx9rNKvcXZ&7mzW3swV-xSQyhmr%=g?j&_d(i6uhfg&o4H@hdvH@<$#3yx zfjfAvui!2ozJ~9@QLE%EJHWR{2N>zv8xkf7(8suc8$NoCdxGCBT&HqP|@mu~6gS-6mnd7gK7P+$01kViLw59t`ub%I$~ar|lRPCjUxPn&=84&cq^ zs;|St8Y8wWGgE!L8$-d6G>aHV;Cy*}yroC)X-jZSrf&NTjTLyHgJ5})ej9Mide|{z z*U~@zu9Q9rqW)9h*a^;W2cEX+$>H!i^$%^;f6ry{nDf#-ORauvrOf4*$nGP%-izUd z;OG=+;P5PbNv>Z@42Lr)lL*$s~}%(fnfW zXL46t$XiCTfIk%KyKInfw#l}+sHXPT(N`ONsgD(AeJGo;qPV`g!rK;3058qZ*!VAm z+nUVriTsv*SrYpWMPr`GQf|@}$*Ob8;@aK7BAj1gdOLuC$f5@{u0;_g=C-gWxxU5C2cJdmTMx%*OB)?&9m~c_&}+)8b1%sHlGVJ@6p!5~f&P z%=?n+xU`4v6RuRw$@NvibH?#5?y zPH|0DZKQ!U0gNgG4m0*U-yD1_;i$K5IIIB2#l=8+9@-wXIG<$c6Fox|+Bj(GESjS) z>yAIK>Uh1jU3dbS>aF}@e0(ka)kQ<;RE_OD@pzr$zESb$Xm&V!n*Kz$8gx}X+Ul1t zX1smjlj3dgW_btRL|!ef!A0#A>7QJ#O54_cI{1T?UymRES=t?lCADV zwj}qG_kZF3V=n1{>Bykuu*z@gfl=;~!vtgQ#P^1`GH+Y~4ow^W#&FlEV?kRd@OJ`h zf_F(1v?Y*r-dBE3-N(0ph0VBRe7Cx_v@u-9vy&H(Zwzxh=d$9Rjo|{GjagnxW&>v) z&#i9IW_>GgAidamfqYSPBIBLl29g0k7vUkMV zAfGY%d&4Bx33RnfJ1MiOItyKqVq9r_gA>gW3=Lmb{S~02>Zi;DRt~0%Ht>83J<{w2 z3=JKPtrJh~nqumfHqc10ESQrpvw(4)g)>*n3N~LcjX9$Bb}E*kK8+kuT)F`Hd6;o) zOyWILg4XCh=%0?ZWu@cg2f} z&CcjF$0hp-mo~xoS306G;lp*W6fDS8L3in6GZ5Z3K8`Nf79OF!6nD{z@n_WD%kjGx zxcjzl)Q9DJcW?On=oZ!ap_T#>=8QB@@+kI>%^qPjeiFYI$qM--gEk85P ziNNT>W2xMF=(#D(5;sl&hsmD~KP3Hq#{Z{2r^;^wM#T%;HyAUE>kh8{@m1#DxMpuOW(L1?`CNy%7H|#m-uOZ75dQyrXy+hz zYqNN_pJ(uk@3%Qbf7E^q9~$pLbmS+k--!LKD`)XF-s>)!oP91hfQRruuqUe5RQ(a( z3$nv`*^Hp}_}S+8Rn%QU`z!Q5)&V#SnS?nV8(mHkGiEd{!M1>M^8fWbkLNa?)7Z-G z;N8j2sWxT%&~FZXZVqkCDHuIq^n%M$W^v_Q+REB~BAaymt%evuXa(-`p&UVL%Vi2=Qg81pd2bb3L+k zjMc_z`Jl4@G;=)bt*_z(Kw>D{?^MiJqPg+Vy^QPV_&B+Wpz;)O^_)a& z(NlRs!Jonv=_(80!avxM z?pIF2^RvGipVA2})K}JQ`|?#+n6F7*k=-NeM>v{IUwVEQ_s+L$(GiDlm&fls?kUlf ze3g?OsBK2xtlXR6i|5g%>Sc4=!gDBR^5BYi@0+4yOgq7)aeTimwrSYF$aX6xYRE|x zE8Dm<);C*$-_knHQOXZ#*fq;|G;F7S5%$H2o9JS{r-t zB>YI{?t^#5V^NOqKE@}T6;z07k2m~V@x?cRUARXVBi}0Dfcrl5m+7`L5ySnbz%3j& z{$MTP@9U5r6s`-?WV^}jAye~W*su?L51e9~X|eVm+<3o*wi?69xRE{>o3s1a;$Mx| zW%K19%GS%~Tig(@Tba(qGL2lk&=twFbRt9BogE|G2&{^TbX(2IxQ7hk#&+P0D-$eQ)l+29X(Mkd#XZJN8m z{$m5WcY>P~xRKsWnGK_+B!9Ut9HNa`CCU6ixQ=JVJ<^?nJS!HFO>9NJWRp{44PS8} z{M9+;xN<-FQmi|(Tk&l-hO?;;zY-g*3up3uzQ#q{)?bFtnsXb%S>RqdzR7$yxqfIh z5O!vjXAdeq`crux#c0#H6o>BQ(zx$H#%6K3@RPNN#=XU zCYhbbit;twFECbYjk^xtWqq}m?*|mmfSZfJO@5EYur=nFb>V#KA+Fsqs6Dcni&B;anqUL}c!+R&F^dNsGu<=C21E;EYiWxeV@)FQ5SHtJ3 zq@X`}q3*3Sf!FkfjTl-vt#x__jvD^2G0VUUJ`}W1W!t*o*Dl)Z);Njz!~8VzBaBrv zZZ(gFyWSW-t~-8C?NapfJheAOpNwx-VPiNwFTOYR87GZ1MO)v~IPnAI18TljwElbL zMXc{a>|G#ViLD(2?oo1~O|j2U+?6TwyL`)Vcn7{iioD%5#6tT!hQnu&_v!S5Z&!D+ zAFHPDBb@B&@=o%m-{G6ZYi?Cd_|%+|N7*g3^Y-$0Q~qnerF_QVhtto1zJaF z2sB+;o91mxH=kwmAZf=>Ciorlojh@nJe#s(mZou#~axI!Vu63tT&F*;Q}$z2N`Gr%Xqt+UV~B^83QI_;s4Q zE&L3=sJ`80>yW>pj~4oMyt~k4(Hsf-Zm;lM%mzt~%a|MSsh4$t%NH2K-qUDPzJYRp z(`f5b>(fMYiPLPm;_qCIIFh=^GC7(w&uN~ycc)H*A7RN9-2rG#&R+O{4w7TX3xGlS z5#@0QlDni6`7OOFnD+5o_*9T7huW4am&+W~FUaLej}DXPnT`I{9J(i6yV#h8RedcF|2%mWBkk7GRA?tTYsONXZL6;J`c7;JT6<3 z^wMS7l1_~UKPUw(@&&Bzzz1mL5)<;nXs;1#D;J&e9|$$?EC06$OrnF}cJt5#T&s`k zur-PewI)M!CH~0Bhfb2$`#>jCjQP?iaMi8=SFl#zWjNO z(U02BX3G&g{_bNVw4uDY$8|>*{YsrI@C&B9{l2PG3go}nQ*Il&-_&<`&!ZEfI81V^ zm^uYMl*3IR%ZwNNNjA)pOzA23N^2<=S)HCDrc5#arg?bf7<-}lWcpPsZP(_2gGLT3 z$@&~C;5A}!3DR0*pzzeT?hZw8uKk=B`M?0I+ zFI{9>)ZY6qGsoq_MDh1rctQD*{xA)m-yYj&y;ILG$LqrFH2PKF@@JHrhp(Xd_0_*t z?jy#_>)yeN`V`Fsv*r?BfFJa1=a%U=%KJh?aM*x-lRq48Dh`Kt7Y3{1ja{^3Wyc#z z)0Wlm;tRzoSMp!HsZY%Yhfx zU8O$-9pI7LE^nWeE9HMP%$KED|1y)d-%b~e`(zk}51XfjHs1!$M$T6B5sdP?h2vR_ z>2+|bzSFq@I89m^(A;^0cD%qa^*`G(>C$#Y=1cX>x4(!t`_mA^7(*O##c%1;*HH#^=NYEFO+2QLiL&S@&2r?FVv0vlt}5{%5*Jd5{a z$8MNOE+cynypvb+=^?&NprPx<{`eCJli z+FZB~9>~?)!hIdWuk=w-z60|X z%t$8a#d)r9H(s5TH0u4tm?<*zM4Bg*B?L0 z2ko=-W=pJp+vrbt5uCDnYc3s5r;3}qOmQQx$(t0hscsW;3m%8yPvWKRoD6h4Z^W!>mC?}b0HcKn4 zF(Chq9J@g>OTYN!jBja$oYWI5XzR79k)9IVo$&f)e7}VE;ziN;KVm$c7$1MaqhGDh zNU%O*BDkMU*+4#LK{53WHgB(b;%x`n_zT9T-v#_~(KVah7G`3)3cn4yYK-Fhlp9p? zdAEVw}U}@xBQ~CST^qKLM+d$4DeLWaD@Qd32Ik^St>s^IXC6zDQ^<<}b z%jbVu#7UJ+hG&k-Umu66%^H;VRN#}Xhq!f{yOVAO7n8wH%DX?rFQ?7>Lxi+0d-&U6-4Cpyt1X+;*o&e3hN$dZ z_(8UO5WPlj4n5L{e=c}^e2VY}EVYdLH1F@HPpxmfKiq__lkY5jIS*ag(0S6Cl6UFP zccW=LmnF>gJj>4f>o&*Q8tKK?pk)?)Ah|WgMODeJDQF%S{g9Wf2-?tHZDVJeDT;lL zGIt;uvi>LW?+CP$ZsVKt0mhCT>$&pOi3sN{;8byPv%874%R$><+i(}W+O0ZwQ}@W3 z5x;z%^4NjO654wk^3Aw;&;(hDT`sxJw5S>45c{8Xig6|x^SL?nIQ{bgs8QY?G z?G=}~3=dqmsvlGi@_svTIg)OnKF2Hn-onCogoakcVhJE$*zcsunJ->!kS zY9~p18)yeW>%y6E@*uzALt9_+qIU)OZ;1Ez8rHehWj?}pY^deW zjOE3r;1kXJM00Y+yAL|UE7&^m%17aaKj&J@rFAn8aQ_O|H@Nn3{fMi^W&KniUy**7 zg3p9Mm~?>a&w0k?CuafM7dq(Mi`MAQU~HCev(gV*W#vF6hpcOHDsTsQvD zhw&H2=tH?vr+<3r zJuqx#+WO>_VSc&WrCuth`Kb+IOOf~inUTCG7AC)2t*Q^ku$$b2lUrhWYK*aq#`5vs zA)03og{;Y>--R{u7j4AUPC_({V2));HFA1L+@*M%| zNkv!agB}*GD~STQ$+HiGHf0;71Df2Raw&Et!90-0CirbEb?t7}mmnj|5jR5<%^T>O z?5=WwcFzELL*+}2xwV`$CGb_O{s4NUY10&o8c!wRZ91yFsPL8YzG&CHC`W4ipu+f~ z_42FWTXg6DFea^WvGb#O*~!RnLO&9t1+_7oDMK{YCg0%4h=#(wQ;gaw z?jL*2#@xY_<0rY1~e_U>^<*kNI_XKyWYkvQKG_Q;=Tv$aN z&G)Sen~STWF~M`AjOh?pBQ8|zI*a}-zST!|6FMrWeN{Zon8c5EZjOB;ue!hloW>g< zCpBo>^w7V;)34!U#Q-KiSHaItLGX(2?j!ecWb|srtvoS0cdc;1TFuP)+zarb@;x{4 zd@k>nbN>_G8TSaZScLvq+kOYXZxh|L7MJhJ0aB)(@zsaQ(T_P1o{vnt!CHjn+^=RG zrgYg&vHnV{K6O9DJHZsUr8TYAXAm9#Npe7WhnTTfFwmbZOFhl6{-K58NH~?>(1mz5 zNa8;b@4PgM&LRi87E!pVHjh3;FDHL^)D)o~dWP|&m5;xP=QsRl9|7>y{}jL04B0hG znHFG}R0e-z#C_ntiSJo#(n07cy_G~qioY~RBby^xvhWtyz(%YQBleWea;UdlbKLpE zDaCMF%MFgn%^waOcUAR6{1$G6YjRzQ3Ff8>fM22fehcv?{CSp>>qjo+Kis6>NsZ-0 zwE08&mQR!BT$*ysDhF@K3xF`;{{vgkoHl zXZ$EtwIBGNPDI{+HthbHFD)n0TdFO#nY*KHu@~4Ew+Xe2|fT)>;JCE4Q8(zA4M@} z6SN=)b3phzd5**GZSsf0>zNNV{%Yh|^B)bJvWj}*{b=qVdCg4y?{RFUslS{X4qwK; zVo%W%4~F|(>C1&$|6_BrBS!w`V!johZZ7m6Hg55-d?%~7T=FEyGklRz9#`cOCio_P z@e_B!-z)QKYam=nA1moY`M%$PS$T7GT$1t2UwEfr*E@gU|A8M^--Q2XCs^-c^{Dd0 zk?v@Y`v=CS1>f6sqHqe&SDM?Ru{L?aQ?5E2*vT4Me;+zHnmajqG4`==TUk8S%(o^2 zbd6CmD?7F1RK+34G2f7<%=fgGgWpfv`wccHh+H`EbQ^w2TN*ubXsTgeyj)3So2#i3 zdl+1DhUGx}vFd9WLu;w*h&OoeNT*7U4YpTtf%rzYUAV^1VeakeLO-E53%418!(9ys<;F{Q=hPa<4uz-5h@(vDcZD!7r$!8N2GTF0)MEH7h&B z2&ex#_QPWPrMU?!&#ccE?MG$~ryobQ+gQt4beqYyXsylqQ27>gep+%d#C-J-bJ9L| zL;tmD%}K(WTuqJy&eeQR6!+K6i1hS}c5Kk0+i8Ul+|}d<@V{JehR(eQ+$0K$J)0Bc zOYDBcyO_Vdh&Jfwz`Zb3KAo4Hyls-ykZ!XJ^e2Vu?;7N2>-6D0+h4AJBVL{L2Z4-rC%F%bleyht`V{;)g z#6HjR;o!kadPsYuZ$yqv=CRAfr)S|mB&&a6J|iCQfOnG#cVh*e2@aPiZpuu)EZVcB zxy1>ATBY1yq z>0IL5XRw#|di~5pMC-c0%kL-uk+srXx9&0K74BuO&hJ4*e$V4swn6jm8lT5_Qt)!O zbRhnUYyYn&Ty7?`?Uomt04l+i66XowTKdw0<#X8Du zzz@+{WBC7Xnd2_fe=Bi;V6fwnt!7=+O2LIsWZc!gAwb#^k3 zPlW&CfJ@~aU)uv*Me$R)2H(;5)-an52CxSkwJy)j(*@9AB&hV!Z^`m1c1(BcW8^AB zt)^wW({j9yx`ZRoeVxmN@&+3OXzg_r2wx`vN zV#VjrV(i3E;_0+|3+F)$*f?r|^d-7%-k#y~JZCs9{bIZ$q2!pdZ8P=^+cozy;cw-L zvgG<)V4ds`N0+dFrND8r@5j!fFSECoB@-#WY2NB@e@3nb_$CzJTa{1H67-eR$f9hA z;J}BjNpGj^yvoB}jHSy2o4S;%P2>i$>T|yzREqSed;<2i1DYj;r@r3w9d7=a|(8=`RzIa<$D(R3~}ORi_jrr}5qee$6lSl-8%^TRH5J^r49<2OT|S^2X42XS~ME zc#EyA(frredFVgAXRcj%(zzB1@0RjpzKI_$ypVbPEbJe?3AmY&+~NNUC3QAul(+-d8T~E=T1JeTk*ro*jU-^L-x*G9M2;> zlMAcwi{FWsi>UV#*1XK;`=*-wcxaaWLbwrGMy_jF^zoJs;P#$7D!7OC;%j1W65cDP zr+XJPly-7dU{51)4PK}Rb8LV7y=H|LOdWawS_ zA9c}B2V?8Ln7UfSbqc(+4wzEjx5JcQEURDI?4Zqz18v?#ZmWedin)QMY}b~Zv}OPw zqb|B_XTPGxNG|G$$K^i&OA@&u4mhCq&F+S-{mj=np5LByHsEG$Ov}Eg?sx4vpIi+; zA=7~Ac3=Y5%5-=^w)fUEqkT3>@764HwKOX~s>~ecHe?>(g1A&`=~I5$!G2^qOIp9T zT=d5O>(#u#W7Eo%g`buGa%Kk|MRF90Y=14uzN8FrT#KxJn09+;Q+UwW)K1DqFDF{wKrePL2Ehz%tp;Fa9oTVUI6>Cwk&B0a*7n z8V7Bn*B+B!aB93pu*u^8{nagd$lu3$YY4qHBt2YOAKvrR@#C5k%fN?>w|n2DeU(Mv z47%BQJn4Jd?Ct@6<@BzlJ*yXiMYc+7k`;p`@K3d_uA91N#IT^7pEzOl$i~pFheJ+9 z%k~!2!niBwpxVm?!SyUL(nH~XY@S=zp1xbkX3qMbn9}NSGW`l4=@>tP`NkM0)JZ$; zwFz{*G2ZI5@Y4=%UIaItwBtY@SD3Y187tov>1-C|9#;-h zXX2!wLy9=f`1slMuYBP#>RUYwf31+eK|7AmRg7{y$`z6u>=1sG7ZiUJuZE60Se>e| zlCx6W)W~1yS-eb4)M4{I-p@kixRkTQ&XEg?aw)PeikpNx@e91r?Gy*Ak~0Tb6e~C4 z;eVyB$|#?72tJYwSRao4__n=lA22+J9(($z?(%a5gYwDh7hP0I(x3KQUW&e#oZJl0 ztr1T`>#q~bl8eNTTUY_E^VLS9UH1Hs>b>JVJ<1$Zy*I9-HW%O@FeYqKk+~<^2l3rO zyHB5URitn59TbCK8}?u~m0O(4JMB4a{ibx5_D!uw30?@#1nv&{)Y%QH=b&RQlJCl0ZAs=k{Gy#}QLgK*Uq*TY z-ICGVzH(vsC{CK+%4>>e`Y#ZU9u4mRFBGaLyhBGF6YUKXjxBzP^|fy1Vi$RF_sAEi ztf0Iv-x*!3z5$?H@x#-$y_l`^o#X} zkT1zr4*#RIL_Fqi4Cl)iDTA}pKX74%|U5@R)R4kfbR+PWsmC0 z7RLJVz$vU3bkVPjRle8>Yx|?My#Eb7mYboI z847AXxD`(;KI)@w%hUNmCJkS-KIlKiHr(-7CoZR7#nsXWvTd`Itn=4*WX2f^@DF;S zWyIe$j~ny1<`E}=`?QZtQ0^@1>ud|@!GC6t{%bb3K)Z@Fb4A9;JPdgT>e$>%Gq5KM zYsqOXso;+x`{akAso-_;s}jb4(ZVm;_)-k7p0_5HUp1L+jWOg_w_Ey?V|I8pLqVJ7 zMu3Z$m_EFB{#^{eEBpgz zihZ39c@pET2|Lt2<+e#@Fb+Nc73C8x%y+f~fA^=rCR|_=!;f2A`$+gGIX|si(O6UP z!$Z?K&x3Z~%4x5G7e%9J?(^gSH9kfAAGKx_nIm`d5cGk^iD5Oqd+0lryN^9ojA2M) ze=sCY5-(I7%U{e_pR{lFrxp&$rr=VZI~VP#VQqxT(Jp=|IUZ|^nwej??U(F(0?+dp zi{{}|!EfSuyOC_D9qXTEcE&&%wNjgco z(SDER?gH=-=}vH-MSrp%PC15X4ahd+Zm5fW99_x-H|FCTF}UJy`4E~*lusa=Uf|yM z#b}ORc?RiLSo11L5=FPiu^!9q+ZzjIqFD3HRo*)^of* z+0+%^sc-eEz0*AwN90pn_LFL@f%Z^a_>1AGV?kvZeoRg0UyNotPM$lyH5DO6@Jf_`oo#f?pbm{HaD7+9z@3D z_1evPW({`_vg2}@ku}Vz1(kn2kGz{lS@?D``rMv92t4A^wB}6U74f2QB)zD2@NCBB zt3R;&Sm{6Gd^PhT-i91MGScDd%O4IiJIHkvg)cvmv# zo8hpJHYVc>PPhHh4((3k8Tw<#$s5`C(Y(9-LygOg$0QnRd=80e*=CK)@=rdftO2K% zW(D{L_^ppXdv;HtyE*KMeFE3?C(!YkPR9LVji>PqTHQ_GJ{iaX-Y})2p z@52B1UHiHxp9JeU|A}sdUkfpOZy>kgE3H{81DoAjjE;~DNtPvZJ^qF$KM3C`zwjjO zW$|q^etaW)MuLlP&U&>p<4RLE$#~Mu_6Vx z&mi6tO`6$j)1ZswYCnDK&(bHnV);-$e@;3`xlif&Ty4Sm=4+GVXUXpgyPq#Q1GNVm zC4RtH#1?I4-wX2=;97aZy2?rZ7-K8#XR}(jvoYGgLHo-zR>l^MIU2A0x!=WqGgba= z{O2*wuQSd@9M<4JjZyleA!`ji;^rc~*#n&NS#{=7H0NX2q}#n5l2_sDR_co%rcstT zJ3AJgzaX4ocaBVu%@+;Pfz9aCY+O%kWM+Oe>c_i={jH0Jb=Dg`9DX(PUE*)?h46-c z#9z={_2LkIl77kP{Eeb1cYKC&OX7atvipN!dFt?&|5Sc8^Hn`j{@u=3?^8?#er}t*>LU#t+t4rcRaYKTdR8`REA=+ncJTX{mriH-yib7i^#6!#-2SzLCpdJ(GA({43s_#k2TW>&bM!S>_>@iQs#PFK7C~gJQM0 zcFcDD61a0M%x|?XzWgA3)MpB{pOJ&n??(Ft>AO6*LoZ9WYW%EyINncL;c$ZDg?x|{ z&hV$fq1F=Z8x@~MxL%?*4_F*9{s|`1v%gI*qu-zC6wX}oLgsnqt_Q4N!O6X_P^O6I9vEc*mFnRd=e)ZSTO>Xu!aVfdci7(M`xCqxg{XNvy9t-(e%^utzg z`3C-$aCt7cyw_{13I}%l;6b`xa|#;YL}<<0pAHV!VC@fUa^NEu{>5*AhuG&rUq$Sd z@D|luU1mht8(9KM}`jjvL+s{W^07I>qy_Gs)G;7h^ux>J|7pGs|0F zh3Cq$BbGOW2QR42WNk+V+kZKC2fB&2Hm?ZoWlzK}<{JDrp2at!f#ymh{~J9H{jvXc zj9UxC;mFMgE3G-sBxk(M==N6DLTPP~cCQSMV?YS=` z+E>;NEDrP+PNi41j%?(TLlw=Jk~74YnOoh^aaLL9u-$7qs^hbhiDItUKDU>7F~<1! zv>_j$A#=i)ZJ&M;=$SX*?DVny^eMW$V!scdhs5K( z+I!Hw-xtrSjLpxY0wOt`81p1~&;#4wq-DfE+9#ngO6LvoZH?N^!ejX5z*f;7;7-%m zj+}ML=jx>W<+csQYa56&2Z6Ic9GMEe;O&hGr;N{!EJ$Vt$|F4{+wtHF>L#Drp~?VBTvc z3jihy4wEX2C-T|B>Uo?6kS^!Sro?#Mb=j0zm4#NM+oQRiUk#J){-BYlpZu6+U>JrCF%JHJkx;Sat^H`^{cQ91zo zd&JUkf+_QZJ=M%TfJ51Y*OA{7TnRc6ZRB%Wea|{}D{IgK=L6sJsMu$EMH7LyWBypP`H$xWrDHp z0JC^sb0$T~>&%-b^7hGqbpZiuZVJ*(ORT=v-!f?Ur<2Oe>5a+eTmKw(y209{dDKrA znCHuptF!)Oq?_bx$+s6ywFc;+`uK6-@=o}^pR0l6;4_YSyVIuut%L#~;_nr^uK65;*D9H^%!We}c2r9N|y8f&HPmzl_kwkN^qlh8ppCr^$qa7%gbB|&8aW0YSdx&(axPjvTI;UD@( ze7K~t%v+D~8!#7;`xdVYKI~^kXI(YspC|*54wNtSg4!bdg49T7wF%!x<c&Dn1FBdFa3 zuJt=DTKMGtOPs^U{OfMoPNL^TljfoIRo93A`QFU;sb0Ri_v*dMaaT@pgUXXx_?bH2 zr;c*st>pDJcjSQ+*_tLVipyHFn=PCc#`bf{jvvvSy@%m0>Y|f?d8uu;K%4k0Yb7HY zc;fSX{~3G5vNRqlnj9DMhf)+uPcf?|aCP`)^aXYe84?9bxyYkp>> zWD0!S_=@je;S2-EJDVI+qLeg`mr{#yGTY4wg+}-C00}a?s2d9f?6>-3orXr6bRRruv&h zk-opBDxMSm(Nh-p9Trdds&JF#c>-e?Iy>SW+F+~?g@2=UbG+xg_VDmA?bBp@tmP4& zDvTq=xUByUFZ>(4un%6ij5F1ja5ebigFNeu_T}7_A4q(GbAOO=*_no2(!9Y8Vi)Px zLHLKiJ5c>NYh7QX+-o`Z##6SKN2ees)4dJp$()IMiZ_s84`KyjUH=M}0&xrAn^3&hO zUwA_M6IE9}N6PIY_Zgkzl~%j%max|_F8Ha*4IG`Dp)+|@Cgr7})hcx9lFGl(evd~v z7dyr{(cj@B#yS}59L?o4gA3t9d-PU;H`$;Z?}bP2q&P*o=Eqvg1Ro)z&*jz4MpuzO!Pe_#pujmBA3?4?oe8Qf{@$Jb++!JGXX3VN?K zCq>~e`)K$+@TR>v45*&=wf8KF+l7DWMdbl#+pd4mS;D_BJp(Q#Lho_T0yjqUN4XmN z0yCQL5Uz!1VsFdu!c${jO>u+rEsB|Swv*0z+6d02)1}W=!jF`H;e7mDtr<#@ceZC@ z(3ke$u3&y#XKtJ(S)n{J1?E56D@ZCBCxN-IZYo%Em7*uuuFLpgwi6^-1hNdSkn3QEus8@Hs!vv49GVFa`dexVe(#8Xe}&(7({|E*fiVInIz#2; zx2>VfUnws~9@@%uoTq)5+(W^_Lmt`I$=N#S=Z^1?Yf^r3LR?n7c5*IKdQLK$px?Qi zi=eaB#0%nm#n9q?na-s(Y2Slqe#mu*t4uka&!hQYoztoH^hqxtucPjRChKgD zRP)3$xD>aGCuDnV-qWRCiE|?bzvl6<+rnF_r1MOf)6DXYxj^yKH0rCJ?ewX(rqSm# z`i|zmw&MG0{Z*-!aP!2>16=ga`Kq!Zjs89QmLF+jOwk9PZP=P2U}$CTdR>k-;R$eD zw=^Udd%G)|%9e7rH!`OAc=8|J`Wp;dV{iQ_x6kH;do>p3g>t%^|Nrwr=O6ve`5=u~ zWB20mYwV(l#8yne@B@O8Y6m2Wm0b| zGX~zCEWnrG*v^&YOZW>*vGMfJzKMG#Ev-$+1yk?&h|bjCT-{`b&;I$V;};D1qL1RY z0qPBg{Qa5ZMN2d6h`Sa4s90uxdsOojIwMZ{S!kIqb)uQIU= z|J$qMQ@kuZsCMxw#fKAI_WXIbK@WI<{RP5_be?c0yojG0{3N^zpIV!0<6?MoFo*ww zO>TCEFW>X(_5Wl|KnrvMo9{?SWS{FU5R4aLB()xvUX|{<0BPmg!Gt z$0poWmZuf>zKOe-4|kvogh$~|JSrSAXB5ws^Eb5ezylr~{}yEN!H_l7Wv!uL9OvsS zI`XpQmnmb=Tf~h8=yS51;#11ks3ZiRwIM;}RqDy+30~{Z_`8pNyu;Kb*D52wM>2gI z{N9LL8osFJT3Pc~mwc+cbkG8xRZlR?%L#ww%3pInn$w~+2f=0HIpV~O`ZL6wSD+*1 zQ-k}uwRxWQ+mX|Qzr2{g8tY=@L*XygX3)OJI<^laBKdNNFO+k2=c>QAWaB=`G4QX_ z-M*g-TyOFG39a>td44K9f2{F)M6|l8b~dzD>Q8xb81nqbW!qc+rtNX#%TB}EY%->X-ODxaXQY^S> z5k9dyS|{vf=T^trbD_O=ti$h{o)}*B7nE^WGhB4gsl3;k%TLixdZ=7^AA1lv8z}q% z`4X)`e4lqpwWUb@AfQdgroDZ6%H9qxID3pa9_7W&+MD?;|2)mNKjWEwbV;5wpW<0| z5x%Uy&z@DrzCrHxEav>n;C89yflb77l9eyTdJ(TpK(9MA9UD9m|4cN_00VO?i1)sIg%!58s**&RFXkIbYm@Wu(mRTwizQy2hLoej@n;IKR3pGs2$~R zMZcYvH=^f^iS|n5D64%Je-z?7a-OHl^^CPsk{R?hd6ru_YeqUoxH%l3 zbH9*$qSXuVTyluHP4&&1Q31uAs_#|w zyOsCatI4;@ZRCI8*KWb0y`egr;%4$T!dU=Z?3<`u`R;*lIj;XLH%0hhDwo19jWJ3H|Ll*Zh4|(M$WL8|6M1mxGWQ z?JtyFS8mso$U&8!w)-|0kjD{!Yt8rTE@jBe*ts^wv=zP>#kM&?M6U-0JI{woYD>Pd z{kxpq?@=2$Xzo8fN}O0%`4Q^L&NRx{bE+v5_4RbPuE_U1?ZP{Tvoe&c*IEj#&4&Ni zY78cOI9wKwL3u)r-NNSvwNC+Cldo8vbGfp##k&IUQbu{joX-8Q=S@8s>j34B+L7rq zxmMt7NDoZs`BE;eZN2)MNj5H!AEJCnR<@ls4Sj(7y4|0C_&k9DplT0`46lEV#S;Y^IHwJ8rZH~@~-@W~u(oS%j6rDvA`0aJ^C1YruPiof) zv%cURXT0UF2>0)yoa3`MgSykm3rmlt+_(IjyWeT*njf<{2I(~951m^%HwbEH7C94+ zdgme&XDScs-(FVzB>DMAm5-+#t)q8>(&$-yPv!5!7t`;(qj_*Ie^mPLV$q76LZfb~ zu$n#JCbO0{Wb>S2X;f{sD}SkH{oQox2`BnnAr0Pm)1MRVn4gkA_o+vtIK)uj`dYI2 zu`hruSv#+Gl$RDyAm5y=HXPP!Z{;2y>*4SCLhm==O-tXbe4d3?KDAFr_0hB4%<+Y$ zM81~TLOwEUtgu1R8Tl9S-Qn5E_FH*7pKmGFEh?tad*wjspE6N&Uq-}03Qss)*C{^kPjp^tuB-h}UT*WVtI417@Xz$N*Ry-OfF+BRI9@bU)|atqZrD$sEPV z1K3YubLO;!kB6v_z9xS+x0?Lo=gRU`vN^>j)?axd<#${72e6fC^5yh(MLN5w%$PH2 z_7bTLt*tYza;J-G_X*!I9R_)SGOdby6Ma&_TID|8#Or5x@A&X%>Cor|_={X2v|48E zx6b$wjjYeax0mtN*iTbU7k?C{NVqd7C-oU>;ux+dTYx2nVjIUxanrk zn1#j4Ik2StABDT61M|?EKGVgZ^4=JxX_TD~ObKA>R6V}m223g|xEr}ot-n11FCk~b zQ{r!E&+2K)3-*`!roRQN?_bh4-rKwyc8vHHSzsP7Pu=n@MXj5r00-*&gCwpLW;L$Ng$sIxvU4^S;HPV_crWd)oU^IKcO` zDKdvO#AWG+EQsG|*Iyg9s6FcZph`{?c%-8mIay$?>7D3d%4O{(tM?-V+CTYa?m6_$ zPVOZx*@ExkAHKwMBM9>1eef|Db^VaB{&5@EP*)K={wGjeMN3 zX`W1Wai# z^CF|%kv6(`O<3EoH^`#Il0uqeOKh!OwazX!IZs&zuqe4NJi zZ{VTfOKXfN`LEDO{Wa%@>>h0gK7}UruT6ml-h)R4C*Lg`T2HO@e%tw*r3LUcCOcb* zbviVO`~l_(FL~&w&NflIg5U6WYmz>HlR>$C`U9`^5Ad8at8DxDK#X-2c6hPkng~ktVOATpX36S$*v2@UDt2HW(h9Fgqqd)H@YuUzPd|$*jTgN zHHUWojB?l~^fvPqviInX1oH>@^mffx4|+hk(loNt*+*;#epBv|qpjqy)E;>&)+rAsmPH%-Nb|<%>v|a*lLpVJwv9*sSAUle{!bMSG^K?H>Zq*jn*0LJ zybU!cW?W!`_e5WEVD0RiVV#Gm2YlymRzv&6m5g9#{Ys*6;3)BaW~s*Q1<8zeAT7V* z+W7Y={HCwE7Yo|ObL*@Vp7Oio*3Q>> zqVwX~W0gp5)t~f|^qAyU@Cjzc!dCXkwGUc)GgmBraJ65Dxt46-Q_{Z)U{1QFqq6yJ zw5$2c<#QDCAy3)C5O|PB{)VvHP;R@R{-eKNF51mvyy%H~V7&Z;rTp?C6mm8YAebBespqs!xZ5#9R3 zTPd$GwSqG{=ip+0cy1>5s=gE6=A%w2(v8x?aZJn^;1PW-y-Lyks4?lpjH!=8n+A=< zhZn0ZHSWRiBjC1$acI4VVruN&k-`j~@<6D+-{P>OWdXckQJ?UhBQ8nuq(~)j}&hmuk`sCj1dWN+P|F+d# zl~&Aoq4=G?8t>7yoVC3wt@YIM4`y@L_3Z3$*LZoHzvC0s{*Sr8N${8K+jPdl`5o{$ z>zMf6!*4xn?j~zi(RY*=b%_Bk;WEsjz5zZoCn#OR`EAt&&_;P!{In-*esj-;qsdD) zphtqrEWY{3pW>;nAyaATAKKS9mC?7!l-bU=PD2~Cceu>@25^z3udC^EIhXpM2tCLC z9lJNOpgKtZ3!Vkm($;W$wk4d`!(L~vh2MSQ?Ae@&%QWf6FVTh~6#+ z$sKM>=<&|}y<(p|z&xKi#NVUhzKLsytJz`B@B-n2xSe?joe_detW_+9U8~L1JZYZu zOXwrzy>j$aedljAe}(ZaIFshWr%6gQW z#XZM0I0arQlJj9q@1w1|-@`cEDe&2%%9o($GQO|io$;Ruqcwffp*lxx06j*&-vk}M zmo!tphum0u#P|-=&JN+iTSg98YhaeEJi}RByT>at*ZxfBXDRbJ>h!bkLi{|z3o7>@ zQ_3sSFMsJs2u8dPT%5YUfXZjlOHYBuD-yv?U*&Gh;gxQ{*W>jc3`7 z9a-SO9-L`%Nq8aiyZTvY+kW9FYgz?k5*SmCd1f>K7n1M5Z3!3B&#jc(4&Cke7}uvM zdmXS{qcN*5FFLO--fPa-BN^RFI~H&LGpVgZQ_@!f%O-D1#50spKZdq9(MGbwnGN*0 zy#ybTFH+yc4E3#)S9`>znN8sLZhT;i+tPyeO{EsrP(CxdmHPS{)?1WCucZs6*?m3qI1k)mf4iNb4_2L$e6nY{n1|@TOMQ9IghRBS zdpGl*@M4m+*$o~S|A6m$Gv~dWhpY>hG`}0;mTu_doPB&g{Dfyl-SZ+|KiMD6o;Unu z`2Wk#`7Z?6$S+?pKK|J4oPA~Bsdq8{6SE>2Q(oq^=Hc{flcRICb}+tu@i!-Xr}BuG zsf_#w&St^|vT=H5S2JrUCl81J^6%rv8*tq@m)#Xs_?68VpnHIA#$arkK+_m#@zHeUj@FafUgsJp2z#U zd2ZwR9G=hNxr^s4dWPTKQ)8ZMc8lS|)SJ!sw53_j{{07)Z>Ox*4H9E>ZeUPbOutsP z=vV!nPQS8M`nG^?+n2^R3;Q%ko3elSKWQ#x4u72X_*&W?3;+0a1eUe130XdCa~hwf>#FS$Ge7~Tmy)8Pwn z)BOSZQQPlv*h4A!3X02F^A@o01G!)RwET$!qq2SXqWAxjdTY>4$=q7{d?vgOnYoHK z&JtdLRk9)ee>d+w%e%R>tM?h&EusU!{SzOF`p)ElbDVjlli^2cW@dei^?IEVA2ssI zTg4wa#U@XWo_P{(rrGv#wV%P078l-X>nq78QhcEKG|!u7=Mu3GYd3M`tF^OnPJ8u9 z?Y7dc#~Mn_I|^pvo<|h-?4*v)WNqM+@u9~Kgog6=?=DdmxvTf4hQmSN4&mt;ob7gU z?tDeuPdXn|t`x1|b(O zxWc-G4$TFy>#mk@Zz(rdK*3Km?>Xj4Dtgs{>vy2UJmqgev%D=*Va&H!_q$f z)jHnwg`-pXCciM|*CTQJl7qiPj`yi9^%~!wkH4qEwc&Vw#9-{Z{-+pWSoe{-S#A7CyW`(3RkOQ$BFcuxk}= zuz3m5NO=kI?wt`R4w z$|LLGQ#%)B<#MZXWHw$*A_wB9tKp@LKUi+|9=@ z>%;5=e)Rkh=XvnA-JPM&!9$$ABVUJ@Q}eigVf`xoonw4ZvyOEJ%uiZ+Jd5u?CDgi^ zA^aV+vmKx6hqU8@XXEi5I2V-o?#17clf8VGzqE(@^n=$`$G)-cm}F%)bl15UuMyv9 z-b3fOX--OKxpfkY=)Bj)KH;vfIW{Kw<3}CyX|4@iC#a{`NHLOPmoc7?{eR`X51drR zmG@n@yJr}hK^g(Yk;E&4BJ!tEFo>Xypn{?_Fer)mq=%V?nJ~<>^G7hz?EC`_0W%6l z*Hvkw`SZFaOIA%>vu4L=vc{MV5&y+yv)$A5f}{H^S>0XtiJ#^D{_5U4(;)1h_j%v< zd7sbQaOT#nTes@esZ*y;ojO$)s3fep-f6%ir0ZjD^Cw*8k1C%W&G{xUpZN}cq5Gh} z*3_0zC-KS)oNxCuJTYJMvIKRaKh7qMKW4xD?j(0Kmy5W}wPHKpt^RwyTcx!4!%Xn! zZmNfD5W(C{byFVRJdAk@^whjvZRj!w)7(_^z$JE`#+Xca4PpFb`uD@%Dg1_%U&hB> zb3c3LmGQsH4xW-L@?HH$&be1vBa_^N(^`GAglDWdz2_3Ixx3EnQTky#lbtw@%|vC0 zexi@o3}qX9z^92xu!aG>azk=dItsXt~hcvSa%7aW>0AAttmnKxd(caq1~eVu*VH^JhGFKT>AWb+!s80+~ahIvIg zD0|U7xs5#3{x8i3;1cF{)z$~VuMk(Yn0K_EPQK`Z z)pkB~Dc37`#@H}$CN$Sr0WML^FJ+I#`T4zl=hQFV8nR5+%2><8|74?JH3Cnj?Yi%zPwz@LyC_2f96Fn8Xr{~M_FVI7J=R*nF z1btEC{Ex{qOg}n>bpOC}>9qDN5uSrv^ang=uBv(Oz#*Pr%Ja3nKb+^P7iWN2KVZ+l z(dx?s!zfSkvw~|JoZ!K{WUBHIE_1F@o$(yYBoJ_K?kkV}F5 zkvx)IlE33V_L9yy7VHwFP}38w5StP z{qHYM{SEKMSequUg7uid?}q*u{VjC+HEmj{JVY<(BbvxxQD?z6 zdy10}AY-7J#{0w}=2OI3pA7M*?cdn<=Nx|d;29I`KIwLSd05S^!L`{w2meHXlN}?yepagIJ8$k z(Au_@e;r;QfR0t~^S(X1Grs?jm0iqJK1Y1!`+ToNGA@HI)0-`vCtW6qu1|XOX3JY; zT+35@W0bbh`l(m`_98Zl_rg3ApKJY=zB_<^UogF2EutJ*{;z~q&+!ezND}&_w8qy_ zl#COtMCS;$Q}ua`iE3}9|DL{)D4Oz)=qY?8FC?EJQlTv4oxQ2Fk16jA>6CvjkdbYM z{SVj&k-x0hJLce7*#CSO3C@mi=9`JsgY}s0plYfXvTljSQDA_G3jZwW*0^fN*DSrB zrOhO-H2wzThGfx2yr((GSKdcvaaA7lk?=kLvfH8Hz7WqwwLgS<`_ILHyI) z3v#?GUS6qhOeUZ&bhf%JabK|QzqR-Rc#H=J)pb1aH`zTa*}^(Kht?J7#I$){v{7D{ zlUF6@$B8El?P7?#(dN}t{GOi|yvVdKTUeoZ-mRdIe4A&ZDTg_0^!+&=jZYPS&^AhY z6=}yNv?pep=G+6XYK{-RD%H0c=k+Y;7mIi<-k1O`S>>gASy{k0C&*LdNYv^CTZ?gv z+twmu>%cZ}kc@*Lt1>MQC$bPk77sk zY#G!Y`5bnIV@EL_;DO9-q@2?!M|PO<4%X}O7mzL$qYUwq^7(u6vGn5{NZSXrhR3F0#_#ix4_!|9AdA~{Cf$Yk1KC0FvR7M+N zoevk$JO_FO@24j1*$R!fLfr@g@;&GQiD+y#D>+SAaxz4%+w3RnEnP6OflJ?qHTmY?1 za(fxy2@F{~P!c^Bd?FoN`wu{qm!yv*;TiVEL^50Ze-2JM!`%A*^6q5v)}9i54{joO zdH&+w{>s2l92;8IAMl>$@{)tH3;a3r*NTLv8@wi*PEp&?Uv*|g(4TIn9n=SyBMcnY_>oW=<}r!8ym1$wAC3Jcai_J> zV)(Ot%GL*ZiGHes^bz4N`b{FQ<=}7aV5%?p?EwFW7|X&g`NNwrWY7aCt=D>brQ`{A zivBxzF9E0>@i~lE$HW7|smD8~-})5{t%=#TVrhBjoWmNV>A*fNzE7Y-^N#wUmA%;Wcgcon>m$CSUMa?C(U3OY!L!@5lF5uQ z;4L{hEF-x_{}87bYr616qw1J~OrM6UG zR-PI1JOdoYLno^z`12CcKx^>EZ>zNmQ$|d>x#=!`gg$Qdk_7lCx{I%agPy~yRnrV> z-sqo_kGfae>wYY_IFxC5i}iKk5ktRi#7?7j(40r}Ypegq^nGoQHm}HEEt$k#lzj}m zpI9PX61(W5_8g>WIr;xcX}A~ftGsvFhpe?+@aNm(d|w6LSKEik*CF3$tdCnZFFjd% z+h1n>kpsWr+!fP-j4AQm!oU0p%{w&~X#ODneb(Xuj`a0N3csq%)?9@7P?$L|Hmv8U ziFDa_9IoJvPO%35w0fjnFS7U8CB8O}^TByj{go$E)1}{&6_hE{r`I<7_leo4$eFcM@Z?J+Cq*8eP$EVjab4 z8ZY4&@sShD6++ri2mPin2Z~S!*$NKYF$_9VKLg#-we$OWclOus-3dPT^X-~N{hSeJ z*WZ)Kiqr*;ai_7S&b1ntMtGSIvE=j_j>=CTr zh&~rk2R$1Bzv#V~&c6`hkPrmQry4n--}1;xPR5ZPm?}EIT7-E8{5%n^#^FQ+^@^a zjF+^ntydpm;q)ZqS+kGN71Vn%&npx6Bm2ac)%gXKp|M(f0QTXdsy=&HXwNg5w~ziv zw3ZHo+!+I|oFU44^fTe`MeXa4GA~GikLIW@SL*t@dAN8p^R7wcsWBbe=R@H6hs;ex z6UN-CeWck>Sq}6Hk>)n}s1ptozExrWy;eVdEcY40${)L7VH4p1w=y5EGRl`frpjMH z`HXYueD@b$k3C$R#hC)aWiw^!`O{qYCA4>?P5ZZ=Ko=O$yi~G4Hp{fD0a z%w_);e(gx?&8scyNr&#(AMF2EAJQB%4sX~o3_43jQFL^%=t_MwhoSw)>>Fdwob5jB z?SGeziFZ}+Qu+EV>aF&fOC2@NX&=7itM=*(ciB_Uf)=8!wUL-?x7t^}Ss`Z^bA79` zah`^38lFFu#>#8io5^19qQ+(U87}*tW8x4^KGPZ_9r(?pviVD-&yvR)^pUazUDHr1J0?sVzR$LfHjTL<%pMN( zmm9S=Bsz+#crC;g*;+OJZ26yh<0`VT%KAI|brapo{b!7QjBU&}z%Mu}gtErKk5%9S zE!h{wbzhdcbzIGNINzb4tgvMagC9q_=y;r4Bi(AU#o6vnEFhodhgQ|Adi!T;Xf8N5 zel@&qzq7Obbn@n`66WgaBP;TyW&Y@2T41@mb!!2Yfea z?+$pF^S0m}yZ;9~w6?+6QMea-QJ8BlS8N^y@r3-GcSuJ2vLWNQt4Zkjb^RR~*2q%O zAe+tK-r@O$TR;BfojJ>A%HO9C?M4{8zMUIvgAea3?xG(0*2-e`2AJ&D;w@UMvS}9e z>wV4n)mE|{=sx`>GLU}Tf$TU)pA}yA{KFDnwd-Vzp~A0?dB-I2RT92uPOGs_{4=(O z=g74(=j&E3icikdya(ErnQZ=#k=wyI^}eBA^iTPNxcJ}8ULRN6O1`;UEuLZIA>;CB zoh$V$bm+@+CJAZKQwrbJn4C%?2k(1^{UXoIeACl`JUZNIae|ki&FgmW8GQpETyO7? z&6j7AjS+wSt=xIQ;=Fhi-%^2x$`{^s2st`>qNUxjYj_^*yfdjz6YV6Ap}Sz|L3bzai+O@n9KslwCAblY1(X%04Rol+IG_X7kN~oKK{( zCb>0B|9e91C)sG{jo9lnKTump?y7FO*VtSU>qQ3i+P!^_yDF#lsG$BaLp(T_p>xP* z{T+Bz_naGR&zR)A*m06OhPJ}aI-v8$@MU%cbIR*NjB&i^d22%4rG|?LyG}D z(;6G6sO7iDvuBsZJL5V}1Ad!V*1;M9b$ft%d-dz4zq3~cJk&n7;~RhvT~6nXU~fLG z`F~|{o1Zr5b3H}+LlxuvAT1=Xx4j`-q<3c8Zs;G>AG>1yC!DJo)Hz03Eq?pJf5=4J z=V_~L^hv+JGN#x$A?uE6W37i9+E_FUr#Lr=dQ`-jBSBl~oucJ-<;mQUHh+e`^Av6V z3?1OPa_B%^=Wy0moVw0oy?&nj0AK{W4@0^&G^bs%XG6sP>qGPGhr8%REE)W0&lIswBN|P)jAR<4jPo_PN768ep7eH!c6i|7`&js)hOp)*>$qy{rA;{J!rB=b@67fl!pMLs?a9>H z3Yyp6>R;FPWpzI=j4Shvfp8z+p5|(}*Vv~0658_+XPzIFyW@qf9OZ4-cNBG2BKQqd zkY0VGk}JB-K$I(G4vgdq4g^gL+0kE%j_xeOKb5-Zd##vmBc4}EXJNh@iycEBP2jzn! z-y-c#d{+GxnV6ydz{BzEMV;7rIzrGk`cRCqn(R{2mR}ijQI(&MBfLI zJlaawlY9Nt$M9~3wh%9mVXRS|#DjJ}H$13vpd%z+kzdBXYsTf#OW2EY$?Kd^NS*0( zR)5qba-jygY+n}$@c3E<&Z~) zeZrB%ow+Z>=}Ym&%%$Fj?(je1kh>Te?~S{nx7OHW*7hd;?JDZ5qDTZC2EQ6(?QO_V zyLO@TfOi&;g!vve^?Dzh+W5W5Fl=p+zOVL=)!bNfn+&q3kNGieFP}>%duM+c?E#v_(?$w%CjI+hfJ(jQ3KOW`XmwBg6_B`>G z>*40{R#))_o~fKQ*x-H-4aoD5No>#Y-O|E{4$j^tk8RMoqT^xqG44b!K}M4Hh)w%C zX?t?|ekSunI@jw(y{B?-!8vb(jQcMm-M|o=(^q+vG3ytx@*72N!I$o!|D5t zrFjF-W6;CN;+GizdGRJ_r@8q$;^j9){@d3OrVp_Ia$Y-W%;TF!Ke69v#1~-4IDAygegf^5VdER&uE~jKTHy!r zpaCb!M$feS{^X;N-4HtgW6A`^t2MkQxvKFkh+jn zeAuH&S(;bTXHGS-UyoDYq)!h#dEE2f(cauheXI9uz1xNTbd5bzK>8!R@(J8#QT7$b z;Wmx91wL-)6P`zSIPDkoH{{(wJSZEPFFl%PVf9zWpXgZ1K575<=WM0@`{O>l-emi? ztNx9T?`Zbe2IZ-LyU_Awa1p(R(?6r&qq;GEL3eLWDWG@U>^%H?)^o%U5onI=w{7vy z#6i2kxPRnc@>S!B_NadN+R^v$ry0<9rXBa^#b`$I^DXMfJ_%&)eDKs7t=dGkVcv}f z`fg?R;c@udvredf#kq{gAFW?WE(UXh>yeX^N0QZ>2)6=%07!;Nc0NE@dWH1xe*%~9 zac^aLBAb6x@(w)I|I~+$+WVfIa?iNgl=l&Jvi&yEU7QQOer(I;TN*t3=lC1oYxR<<*H!np zbO7VC_h>fz=108)ee|-uf=>2Fvalcjs$I&kRA^2yNIy z8)`g!gtMFD(6ueWIL6qZcF;H$Re8)W=r{RmHLtRIJpGis7^}yLzp&d3IPp&GMmwpK z8JG(XM(7KM?^1-~JM5m0m>FaDmrIVqANb>VHt;&immV9Z9^$VT;3xS&zsA+hNjtpp z^N%HqsaF{^)OSbVLS!noLv*C2$!x);-0_|bAz!vC>#*(}osfE<_@I67hP-s!hy5@* zEkic-f(C!2xCFGvK5;qUbTJv^pQTMUznf>WvqSSRZDRGhkj^|{ER-&%dQcyIcjh_O zd+Q3V4@=K0%Ly;xFFj?S=t&upi3hCjkJeD(L8~iu6|X@~;0yC!fjm^lH0xvuymQ5SCr))j*q|+D&Xa~N5A-z!T&pIRTp(|T^ z=tt5g#NQUsrxUHJ|3z`iK2Y*Z_nvIpRg{llnm$K=wQ(cJQ#jVcgS2&3!nU0mxYSg zO*j$me}Vgl7*`%3F68dgJTpvv#{7u*j>N;o7il|mm4O~Vd=23vEsR%P@Ipf0_}yLX zWo)!|q7-tH_WBdcd;6_yeUdg-8k4${^t+2&NgKhI647^+=_u)b6|D}@nvx(0x&*pC}iJPFb@G11#Px=?ppKLyli5BpT#<#4( ztWyNMu-;GeU`d+$ZMZt8GTC=!^SHO<`PYW>c#1TSt@hJ=r6i4f1pRU>F3bEh9VKb* z7)tXZ`Rrfhr`cSR#`?m?ar+$3xk_6RbtiHq8GAG!Ew(zceO)q;ZUKRpap& zp<#7~{*cNt*3&1L8|~l=bbBvXnn%Rh_IX=?hL0x#5p*J7Uxg+w9!J14QYKjPeXNb7x{_2VPX)?xMN4(WZ~S?uJ&r#;L&YtTLL0Y&$~e~Wy2zy-aB zIT*IxB>gbSIlcZIRpSres3m9+X98ze{FuFJYWKjV8$~x73seH4&uLt}wKjC3 zJ|B1FbvQ(u(7qvbQ^!4Uh`o~JyRxu=?@S@ftIi|MYQ`R|qdE@0C(vAWzsJc_`52cx zcz=O#VgDielY`C>4VeRnbl!=lGbHoavp9QIX|iGK|EIMfQ=5|=&-7sfkKz0Oe?wj| zt0QOaw^}3@D{S7Lt<08-9RppLxfXS0j;s2rPr|?8C!3V;(>irFJUEZ=ZS*?-m$n_? z8|6iPk3)KG1ER?M^=G{rJ@AdYI zPw}(JU`Ofb%s-T+A121(2c|mhE{5Y3Ir}Y1@jkwtVRXQa?;agd!Lvxb<6y9-3!SY> z>n%}ie_H3TwkhyX`p=Ud+A;4&Uc|c&THT%b24{R@TB2-|${o4-`NQ8hd~`r_tM9-^ zvh%6`+V#|w#$fAbmX~e#m-K_m7`~D4h7(KWdZ^RF(d1A6o2-82zUhBMn=`K1V-U_{ zM{6FV{`htI)M*X?{Wb0;b9>65Vbn=@XHnKj@6FK{`tCb87ygdK8*_n8-XwP(UV-1d zd^AOK?Nxo(en->)eg^IPgEbO=0q6y-VIq*4q zzi>SO_P#Vl%+EioWn^zTF}J94r6v)3o0+ z$3Ob2QR50o5u0~dX*#lb*V*>2#+Q!7xc+~jPb#c6-^0*Xa#u1hu=#6llXBr{WTWHH zDb&^)KcvSzC>ctfMIXts*@I~pA>-87yX32Mj4ulKM6C>^ADLfy>%*F(m9CLlxu2pv zY1BB=&T;K8Lq`9C{Zisl+jd#bi?`pCxv{|heAe6h z#xjQ+T}Bx>yWdN5*uJ7O;V#*+^IDggdlDMR2f~|^SlhRyf%e<|#b0?e&|38GX@fyJ z&=!^s(4byAQp$d}48CSg1}&%$V}i%m$YJEIc>1mXP~O68(K7PVdDPN>#n&Nt=zQ^Z zOy|;%W)6}aGgq3W)|x^**_cEOjU;miBV_6{>6G*>Kx23mK2a+rC~ zJ1+~qNr)HJK3(z!t6EY*2lS-qAN-YUquzIy)jqVLrM>-bjGdpVU-P|e+5W*%vS0io zy`+>@(8uy^o!L{|%6AOy*q!pe8Eb7Lw7ET>EaC09TaVpNw0N90W7VL*db71@-AcUl zApBhqU5?FPJ_GVgfS>!de(#vF{-FFZk9udoNw)6IAm7kepxXf7if4?X&gfXfsI$H` zH`>KN0^I(Py~eC{6l<)YTy*Ar&Roxq zS^aPFL-`~6#aC?!m2IZt=8Uz>gMh+dkM( ztzX4rd~*DDvTNUx)4nf`d}Ka^ue5F&N}A7{PsRD`D0bFQU*{-4nAL~H4HQ zRL`YrNG2QFY31-p^xvc5awG^R_4aAt;}T&g|pp?^RXpH z+?~Zg&^VCr=Gx-dB8~`bKUsa~VRT7*76&r@Vb2ebabiBx`k z>~Sr_wqCZx?JiTjHD2oMgVT^dnscapr!QB~cxLrMXr+FPP1e@o>|Y*z?=bxHA#fk> zsIR|-z3kfG;(y}i3f3-5-JX^WjXv?p=lRY@2K!it`X|1DS#*&^Hve+3H||6-%(Gcz z8v&m=@umIU@vXVA`CNW)$1C}=z1dl;gU>k^Uy6Fx1vzCJUn#TwD{;<0+0A}+tsV4c zXO+kKCh~9`jgezL`rZ|OPQQmQqwMQ`k+cr`Y@}m+g|mBlT*=e*B%W3>M#w6Ht(I_raX zQO*acd-37EwQwF~?_H&K)EL;RF`()zuZY*S79Y5Xcxdajd3Hbg!W-y^@9ZXCYu3FN z?YS@HX1hb~{`<>gUAZTiQ(#2geml>99p8nnxC;La_D^!}#P-wAR}_9od8csw8P~bs zVrlKqK^=QmN!Pf=Di^+r#2+s{%A8{^_Z3OKzq;^k-kZjIWvSN=h1@Ht@B03*v-{BL zvV&uX`eLd1L@Kglt&0!J%|Een0UqUj51Vr-*-S;V0uCBmSvNKN za-+=Me`p*1U_$bW{v)pVt+xMzzUT69#P7|QpS?I2j_t7g95L*zPjvN@=k~{WPkbGo zo6Rq(Ses`aT;_D_ANCPvL+$0+8y&myeE)l(F1M#BnQZzV@pNtG-yO)L-k9RD;l*6R>POrg^r|PNmnV^tqWRz$?|oma)c^ixzc|)*B)#VDZVbpG>Ck=1)$-i6oBB<*)-^Q$@I=5ekS+z(?M)I52; z=39)*=*7s3*NZc$5B;D@_S)B^!%`M|x2xJnE4%J5{Wz=JF*XN#m!yxD+FL7z(24*!k)9{*%*C?WIOZpZuvFm6&laxjbL#*64v z-h7w1M;jxoQ9#d0HTc2Y0<7@$>V(>-y09>ih4^rGLyr&Q_vdw15vx-ro3Eq+HiIG;cR=z*v-AH10@kj7xpvQeIe*89Pd~j9& zqc2z;W(vGd+abHORw@0vo4M!K;x|_ z{$e$B(>HwNPs^HA@dCaZ$WQ(Ahb4JckXI$?W4!-;;VQeGXM<-=GbI^-uG@hO$@%{TlqKOod>LdX*s6CrWY70}(bVqZ9hGa#ga@o%nP+>LZZd*(tF@&vt4KF^%B6WfLU-rXPZbx7IDR6hsYrC+b3&!~Q9 z^|{Plx~)F1xonxsbLuO)&gWYeBg5vs7&ue_l1tL#>yXvVZ$zs?CG(qbDw~fnf02C{ z9iZT%H&06Fd9E;?=MzXf1(*iJiJ#3?xV{+DJdAVlkvmfef0$+sdp$h50iQp49!Yc$GJIH@FZOHnI{N)C; zR}TM!!fbbE@xQa~J{$aKn}YV_4d_1cu;yTe*@>OSztcVVx_lE%_3GC>dC?aOqT6q| zkAu6;1|5c8G>yEY(EZ+UIH&UE%ZrU5H;ud-z+-AaKYUmtiEZ@fRRukxjAzih{xsCL z<0cy1zn6l$1D!Z>c7YFZa{Iai9UL|FlzT8uB z%BTIlPr7Fq;+_Bo8Y%ZoWM&z4swd3aO7sg{8Dpc%xJo9pdDrL{xx(ksTexbR7L94W zL43t)7m#NNx&(EYLYe0hHzffrS;w1_*jfB4w4Bn%J$xa)x>NVYwp+jQ=+-@TWNt)x z%yC@pwP(!++?yzSio3J;8+=lbXWMJJzl|_>Zclo6@omJlg^y4Rmw{g$;j_WHf$Imv zX}oJC%-NLooo2$cC*Sc~TR`yIGo0E9Ge^K@a%};=sFIIhMV9^5TxZkYI%1uL*)jSO z^c9bVO_sh*|AW_D@W*%6>N(;&?VXQvALIR`-cMjt;GG0~7h>H}yeGdt=>VD=bTl~T zE}$295_lQdhmV5f%Mq^N%J|5+I+WRWmgL>G{-8|Bcl(S!{=!WE8D&ob589V+Gj8kG zS*&5R>u~T+MXI|$3U24~Tvv_XrF9hE!dJKkc#4KozTlVyumo5OYysrsEZJmnihHt% zx$(eW@K*VjAHf%%&Ks9A75un>ex-FO#aB3%3unJBfvgdp;tRedIA?-+c#irv<)2g8 zmx_-~?3_HdZ|9tI&f!}!SD_1BjBeJaw&Sb-{NA6u{M6iH@=HK}Xb}pV-U{qRWlPM? zvSqQIW#S3>XqMwsY+|?c8@IoI3F((XO9$NNb6t|aK4W$tW^5}&JFuDT(S88FcY~hF zdAt4Kl6R8G_P*Wu2<;^s2j}zUIe*E1|4Z^Ed!f>Vu@8L?8?x3N%4ll%f%4(1+tyMXEQ|#g5SnT4--koK%V$_L!g|oroS>a^o-ohza!0%$5 zXdH68PEEQy$4vvjaNn4I`D1vvYn|8bPukD=+)q>wr-OAwH|yZDT891@mGA1b4$?zI zofG7AEJ5E~nRoeqt`mP@w)`@@b?!A<=YC~A_sWO<%^o4Iy{D5F8_PVv%5?u+yb==0ga z-_kDV1_RYG_=d98=2~y9<~cadaaBjg|GA9)FpeEZvvK&Gbr10hv(h~Ba=#N3kD!OZ z1M&x$KwDKO&>8x4eh=SC?%R=@5Z}qYr+e&Dy^(#XB=&%K+K#J^VXPru<4q*F`(Out z>(c4MtOJ(O=l+3xb?QeNuN`ws!7)j`ijjRm?aW~Nj`&0CyUal`BaA6XwoD@~j(y+7 zS3ut>)ts-A^x!qewq5Mi+2Dk^XqDwrrI)VbxV8P2vF@Cq9raGgW#2XH?9*t^38Ec+ zAKtL|D&I=zraZ$j);!P|9Y0^?CHtfD(%B{Q5l~+<&;xqqrAu8S++E>*YT;^lSNldB zXnYL5v7jwpn2kPY@fH5e(O((DnfV@epO9NSgtPH+rp;ylvSTynZ3psys^T*EIRZ(b z4!9jq+e`q@5vphG#Ug#mw%3G&7q>U@qV-F*>8PVkhYk$?dFhNFXV`0w&cxh*@O}8D zARCC@(OE5et~CqfKJzEFZ8AUJmEQT2+2W(|E_x?475|7gJe<7o&GL%!<9(Z73jJ{} z^y~ZUgOZ7#;ml~^tn~rr@bamjWBOj0gAABg>3VGwOFTR-6z_>SeT&8khdRw0uunaN z-|=^W`+yVe=c{B*L-VH6{d}_P%SYPUn{@s(xcvhCU+Lr@>JDxcZ7L0^KscGuoqP+K1rVAQ9hkM=l~B$H z(fe1EUub-1;SR2{8)*+*MEx&?d;({ct#NIS@Upbo##r!LQF~)FcG!M}Em3JAl%;pd z=>xk+uW~f!Qafm!#=g(H;!)|-(zU_yK@+db={@>w9xfZe#~5B^&4A~edH0UyrOGGR z3l;Ni3a)UX4EgbF1b=5@w(xgc*8v*OWIMQ-z7ug{%mWh45820+jKNFZ9!2>tJMk{o z6sqNa!5K6$o_7(4Y{Fi~H<5~=gy(A?$Cl<$uNd#d;)b&&ddRbj@NQ%zXA{D^o_)oB z)4VE@+ReIH4|%W7BTK6)V)wl}mbI^#%h}H{*1#xZEOyvRz6GZ>#~5c9RrGao9uI9B ztLvBlPoxi9q|3KBQx5dFit}x>@2V#kN`|?=vfre(^(v0_?p|l^wtn`$Qr_CUD?W~| z&sjN{No$`Zc4+Vee0^{P=q-udtR|k@ck>{rFyYu zJ=W|ltBma~i@Cd*|L!gWcka8n@8G_(tlaeEhN-<%J>!nh9?WkCG|!GLWIa#wTeTT& zBEO}3z~?OF&8WLFO zDR>WKzrZke#~~-S0a;AHLS9sYzv>Z7fj>C+m>q|``sv(A*$4REA7w~BkHub~y*aTI z^)oyAn~0C`{R@9TOo4Ots*cXTlkd=X_n%WwKk0*~xpK~<-BX9YQn%J@14ajW2FU&REJCn-lM9ts&suN8r!9ZNKn%cQ?Gd8y@Ana%9c1yh~m_??z&e6bIW4 zyvMRu;I-Q$e!JaGyWM?kyHU1nH`+`**kkVY+ii#CL(yTd-THdKlkyU@ow=JnqJBQ) zVazpMNS*r@tA7hrzE%4z1xk=(Fk zSx)nWu?ch^%9f4jH2BEdH^Es5ynF7?>{+Q+9}=#YGp{}hqT2H!9u(hH;wM@e?>l7A zF+hiq{vaC^w(5LbeT;Ofx5kGM_?GD%_YK~W|K>va)XJRRB`?&Y6$RN_MV~n3t8YmD zhGXOp?@LEf{yH~J`8$lkF|Uk^pzA#8WhcWYMt-40XU^gs!(Y~>eH}brIArtfTh<@o zuCy8QU4uO_z@4#!veBE&>-ffc-+T%6Q71Eo{^Z@eeLvw0moWv`^f9k$LB8Yri~Ixk zF?Mc(&RU7C!+E^X3}tA~kZ9Bf?I$6J>^eVm3R5rYGc_gI>z|RNbqUeqEWS~D7V|*y z1NwU5X2u+asFRzpkp0G%$n+R~(~?0L^gc>bgE1rd$#{TLl_v!k!!oD$Jd?LuC8^<_tP zaep70J+s`bvp&ztPxEZ$sXb8YgL?M}VU7Q)GyM}eNPdau4`T-!5Pp}@e>7gq=NeNU zg!S%RwHNOgcuQka*z_Q#*vBtixTg)qDLre2<3yJUqBZ3#v1fRA=e!1Z(to0QuLJtq zcSwJp_FJh;4W-xEi#)1| zao&J*ES--b-^>w%W%T^CBH8m(hdueW{=9G3e~{ICXYI>N?+?dy&PUI?8J^WsQ;Unr zhUXI0?R2#b>vWV86&}tRoSSETbMQfrXCJd?GRJ$q2~RyCeC7WSZmQoP&RhI^CndeT zfo=?%x#+j7SFq=a^jdGq^h1w}O84@OV$nplZ^1bxqB z3%k(^Stl$Q+F>}~ang7t8jVPBUWz>fx>~X?Y|pjL@NJtEXP`ViIX5gzAMdTx9$UtL z&Q{EEe?+uouOKuP-DJ06KV_~Wg=}H&m4&`eR_6%cXze;mBbyIC-1GF!18l?hIPvY> z>Zfnfr|h}{^8@*iyS?bVS*52QDaz`w`}zh{?r^_cOY3;-e-+m!vJt1HKq6uQc90NqpiY@vzVd^PxRX7>{l<7=NUh zvv=VU;e4dI_b~Wd8RxQRHiU13+9`xQTW+=L3oiLE+dSdY}1DbPxiw{krUVZ;g1R5!p9(oL5wuMc}^A94bHU1N^kQy$2= zg10~UvxRZUT*s5W%un}WC-MDa39li%g*^z+t1861A@Ydvttso{!#i}gXz&g^%^7pb zzoWmRSKl(y8trH8cNLZYaLFw{f6YPh{T|GpyhG$I78{82u4FD_MgiGU7@o=I|MF|d z7@k!o?#aFS`ETT+=&;ef9q1kMz1w#v-lsYC+QLFtXWE(vwJu&m+-Le0-Akt2+cm)L zHxjqIBAnZOdROlLIp^eLBav;3G|%yVUT1I=wSO7eseWYkc8?3r4yXL6NwoEwWO2|2 z5Xiy{$On3l!QU;)_lE`~r=;)Ly(_ez&R7@C<@=#C_C)(p@}aacC*L7tML~dA>gugRiPWG0vHcZDTA!mb=;f z+5R|5e_=n~n}>7`R+-5$d!gbl9jerKz0uD^1L^qE>7{dIc-J|Ao|}SJ z3EqWf(yK?3k24MZO}ImUhdA+=8GQwFE%d)vp*d|}^+tC`&f=8(C2b$*Xy85#J2U;u z%vx2%PGj+Q4(zo4HgVyc=tV!JY{p9IIrNpN#;}Km^a^zLK3H`t^C9Zw>ps}sier=T zS%&$pG5_F1nM=E=iTKP;X81pc`O@UQ)J=0D$6e9?>7z59Hs&G@y6r}InmrHsM#_p^ z-kcvjvpFA*Uy(Ztp6QNv$Bc`8@ONLMS+n`hQJjtIek0d8D&abQ*dg3`iXVRp@qXAL z+&R*ZA4$9)b_jP?`tg;-`(cN0=LkQ31o3{@A>0}D2zQqG@nyvOVTW*M#E*{}a*dg5M`0)<$e%K-0NxN7&8{+*ivlW-II8WP&r|CM`F$$}_&T`lF$3xz; z3S`AY(jDm!6-ORE7>2Jp(fP|0&mX?mgz;xwnA3Zf@B7?b2kmZRHCKo)G787{qC=*x z&^)Hu=Z#y4A455#M>T_2B6pVC(%9m1WCA3uwDKkN|hq+KkX2Tz6IwF-EmmVJ#O z&ZQM%fuXhwK>;C?k890BB`I{Ql@M0TL&l0 z10CQ$p9kZh#?RgD%ma}3;RN-TT*n_;_%NpBhh@H&v*U!T_?_Q;TjymWhY#r5w-P%s z^0=3I5AW%n%NV(=EcV+kJbMNxz=J@{8GiJp!~VqH#Sh4T5mY;Ve! zI_UmO+~04U+;H+c2Pm7;o!7c0W95V8@q2T~9CR=$xBJhbC%!gIoX*;%6D0et-jY1pwgSNb63*5* z4cqga#rWgS?auR@I?=||ne!%#e^x>V#p!!RT*b()JxCZQrrvn6}sZ-Zx~tw%7f~=oAnB7uvppwjV(qdeBLo zinWD_wyo9SIkMjl#OO?3EwC`*^q+%sQdfLU;P_> zlXVmHIr6jp((;Wx8}dQU1F-p>t-PR(ao6R-6`gtaICn}8Jmz*!JZ1bnxfydG%gMh489tAGi%yvhpD`jhLpR)I?Wk_n;oLX$ zYt{hi^W~y(g!8?R>zhAgp98i|`b$R#_3Zi$>8$)AOr5t@AcOGDB~5i6e(x$L-4#Ka zz1Lbky@2~EKQOEfd-GMv>Pf4aqh=&aRu#&UU&|o}@{-S{mureX(!se>@YOKNX3Yp0 zys|Lak^JDiz~gX~{CHb?v10d~PzImgg$$(9Z9Zvdg)?J&?B6co?GYVelQ2+4g)fE3^Mz^UV~rL1zEN zmU&{CU1w#sPjg>p5Bm>f_GggUr*G-bv;VGGDz}%F&`t8|RdD#P$n5W{za+e|Q18z@ zF285VPx4Uom+U{b@2!9yLo%B|&zIRX$H?q+$g@;tKW6j%zb>;!9f#xBd>n)E`ajDn zBWTa<^fC15LZFw3H(okMM*8i9jNEbp8EM<)OUKDb+UW1Vsg$4Bb1xYw`6&FXd_)dP zR-TP~3gn~YC3?hzk}r~xdQN{HY$NrRUmcgX&XoAi%Eu|n>wi){R*=Ur@-apqiAg@{ z>^5|cc-EOM8R;S;>5sE4jXya)U25Z3eq!8u`#9P88tJU;MAw2IR(3u|9OVtl&Qy@b zmz_(w-?7(|os(M^Om2;u$*uF;$*pcvbDO)qxxJ|_YTBD>8XIa_O-)NfTm3w@^|q$A znk{a+rKP!Lo;z`J>qN7B+2Z7li_Nm6nPCt@UZ%-+AYB%!!;A5pH@8dFC-`-T)*3jH!S~Ka|hMGp#FKTkDS6G16yiyWo zZoR=wH8a;WG|gdN?-C~oqrrV4QLQUMOGA@?zfAY-nM{!1Zr!hItZCZlr9YteH?-7b>b?63_I**t zyRXyzmZ1Wk=HSM;xHG@o@`-SFptuvy=ol@J}l6LFbHxYThSqu+Nnd}FYzsI~S8_mqR z^sO^3QDMJKOZwJ^=Jrl!w+^MaX7FSu!P-OaA+ znw9NMLe{vqM<-9Mom}UVRsmSn{F{@i^Hl*jd8yn!go2IwAtqmK*EIgl1kVf=F zioDsqDbr9#1SQ`*W5x`)AZlNn&b#!Cw$`?qw)WPWO+(YIaAut{qd&qao7SaUEYHA4 z7U#xRu)g2+uLYG*K(d|*}Mf_p4}WZHSHUk&4LT2D~jNnR@}+e~I&OWQm|&IY#@Db!|`UbV`I)KSybnOHFRzDEX|!;9HA z^!mlVOSl{Nh)z`GSn`)YFGmCt7^HHPABfK_HA=utbo<8ehgiZ7lrCHfIz1D3> z-_nlIM5rOaS~j$AlE6d;tHDfD^M*!v8qT0wq?^~n14xz{F@RW^R$ROPgEME$fXF8YHDt5 z-eBs|>)JP%^!lX@o0?j;+6i)z-jOEj6Q8I_j-on%G}kq>w(7}w z=bwL`SuL_`YG|s_YqzvF>*6*0P`W$LvxT*`uWM~tT7X;@ju0Ab%^BrACu z@G^v_rCT=AEyZl}=hJ9)cA(R6VQWBiV{>yxOx94dj)Bm|`Xh?lL{B#9raE;Y+qat1 zn;RL^%*0D4nu+HM^yl{5^#_;&oDW>8$0^`!pthzp&84o{{%KM;-Po|+UhI=}YfUY8 z>l^f^xrM*>X+smCw)(U#bhw5_uAA!_c)5NFxMQL@8_tGV>YDivR?3z?#3)O%zQO2q z)CFEP_EqyGbBAH>VSkQeLtMO&?gVE(#2#{BCU6n(8DKuJ5V#Up3S0-Q1P=WX9_RPL zTZBIc)Bx*&O+Xv)C7=tq6W9sd3)~Mp0(=Yj9`L8Y4}fQZ=Yc-pr@$+~uYlKqZ&1cx za((Lij(Lmg0iYi^3=9BwOuyjr1>imzMFs9e)sb|pZArsfM3hGQ1D%bc(`DT0(@DX9 zPpYniu@!BmOOcu94stb;E#1;k3#&A?r|lzKMDwOhBWgqAZOFwYx-Tqj+P(3{j^A)j zbIT@Vj%1k2fO4}rXZi(h+)Rzny6~deb1weO+)Kxha~S7?N=cqu$u$&n(;zZ8!#P1h zwK=*Ld@k{(fQ34T(K{kE4gA5H%qwUQfRK_%A$w4 zo~vvXE4Z>YZK}Dlj%~lefp53Dk^2!`KgU)64L5UTu5MC(d@a`~_Zzs52h;Uj&*0j? zwTkOTu4i)H#B~DKTeyCTYdhCZbG?o0SzPbn>T>PmdN$XsTt{>L3fEJ)?&La#tNO}B zC~*(>=Rk?wTqkk8pX+2Ovig3KExvhTd&vNP-Zf#JMyY4pk zi|LkTQ#uneo6?&!pGj}2uW4sGQwQxoI68s9-oHw-$jl-p_!q?gd)E(+R+~E0YECyD z=Bxbs@Tm8%*YuiQ{PXfMq5psXoKQGYRz9p^cyvVN$WuneMxQ!n?6}iTAAd&Gnf8f) zZ;p8~;ZvVJ%MC}4ePztpqeqX9KjQ?MeKPw`ly`jj$Dwl!ZY5}1TtU|+uR7D>b;`tZ zCQUx~yea2Ty=+Yr!k_$!aS>9V`t(VDAAIm{ zM~79Ibx4nmrnb)1)-x!X+U89t)Z8_rX*4l7rfch)O`3tytgn$e;w$y0zJ|%Rri?~2 zDr4n^@kU9L*<5ENl2^NiOn^GNY0yU`&!jU5|ieA6+H`)OtqPJKmWGv+gXScF?Zcq}#;#a~&H z{(8bM05+vztJ0u){y>V>?F$bzY*Sd)C;dy zo|L8EM#66&^5Qdu8xMQocBNnKjdfolTydF)Ll@x#cX{t_Bb>v@RQZ3Ea8T}U!YLoO z*w-1KhIwP>9}z!3?1djC9MI~NN5Fr!7ym8dMNj4V@DCi*;p6$o#Mk|k7yn&o+t%ZS ze?WbARD17!pEMsAy!aTSYw17lUVmfu-&jV~p?`|wVAzqS(*JoC{9pHXq(|-J5g5q` zJIss>kCe)A?2o8VMwTWKMWv~n>^Bkuobvw}0-$o7@K;%8)huhQRQnG82p)4k_#g;W zhDh@75x`Vb{_j8lTOU-<<12jpeNgYgE37>jK1twz2Lgb)6m3+u|MKrY>H=1C|1anI z|Mm+AE6pH`<`Mk2Gim$Bi;SII5mbT-6FKQm&!@;xdcGN&Coa5V(c&wwDv79BSBsV1 zun6n@dhIW`8@k3*$Nr`b{`~m!?eFXp{JaEH?Qh}#NO*)k~{Q^~!}wv+#JQ`151Ea zok0An5(#^fX%>HfIkGD1bzU#1iT6K10MmgKc#$N z2Cx9Q4p<9p0y=^FfNufM051UtfOmnTz$s5L4+bs+)&gGyb^_l9`heE~{XXJ4=4s}x zz!ktvz!!imz&*hCfS&_z1MdQnXP^ymCJ+boTflWCupZa~Yyk>_X|;40t?zyrXKfPFv#I087d*;&9Pz;d7-=mEX~ z{1A8DgZ~at3xQEem1vtYfjrmYr@j)y(Q^Hq>A^@K-mynZ8M?Ce}va)}@;o zsL>S|H3AH-V79T52NpBmcwc804`K?M&Fw8$Js6D~v1^vCcvBdMFRBV6>*w8_i0lSkpDV^76rq zNb3!iuIgdjZ)x5L78w?N&2=?x^@9r>u5V(jYi5b6$(qHnm3wI*V0&Ym<*AmmtTil% zSd;q7fU# ze<8V93KOx;(!lCL3#O!7Nxi5ZyK;JHt*_MHx-5MwPcF3e#|~9n-@-D_7kSBha1raK zjlwjz6@l8!GUz?HbXb~QvZcALxwg5{t!rV;$Xk@IX=|>@p5Av}&nVO4@6gBd1F! z6rkak7Vutr3pQn$g@Xw70H)Nca&1dPMwZC&Dl27Vw(bioN9h$cUt8LvH6{pmT^ijUv7(|$g4Pa%KEtOkMtt2{4)Ra!wY4wez2QG~b>so4%{0r@4 zt=HACzA-5Ck4-d#)R4q_VW{w$84?qN$<0EKAj(Ax*PdzsauWYO zFe)6I*Ftajc2D$BR`-lArRYU=oX1y3HoV)^zECh|$r?uG4NaCbPz?482IcF$9;{AU z*SxvOl-##BkrUjiMcE*_uEp~@!O+;`v)j6KE#`eIy*-J#s(F3eW_TElg!nqxa4>Dn zI<1~B8j7%Q*m|THU6D@f+Sji~9$9yZQYrNbx(VZ;u6_wLO7#iTiKIhmeCCz}ackBy zs%y3JxK@E%+uJNb2Klii4PxSO7C&me)y>unV;VFbs*ij%7+3MuD2e1v5yC8KM%)h) znjw~S5<6}^4@#86pjtE`&AR~_wU#_>YTm5I9elD1X`6PhN6=Zl1nE*ogVD46kx62u z)vd*Q#X9L+FOlP}x$^p@YwRkMH`dyBMSt%>E3OZjdORmehyJBjNFfAEU-5<8(wWQs z{<{Jnf*Qt?S}Vq=^(yvwU+CEnX+(6v{z=F^7~L1|iGpOAycP znISP|RxJTRa=!w%DsRNOs<9afg~0Jri8j_3 z$6SjIo|LP>EpTFDf}GwUmCD62tI-O!W1e4V7B<$jpzTXBLmdr#H&hw4>-9B^foMt6 z*X0L8?l7XaCa}u)7@OkxOYw1NFCw_QQ`*`jH!|&QgU`G;_|!(OW^e>EH8$O;uEA1) zDY+}QXINnxGt}~SOl(B~JO0594J~c$I6CR2AX`T&8=B~ckcW(dp;HKC zm=ZKdG$rNZN5vZ&(Zj4JUfscrI+<$gV*0KN|6ESonbEkfD z6CslX^pgqrjz@>yn8y89?jOKISU=r=wd7vuFXg`H+j{D~|EZGq^?cHC_ZJ*@e@8y!3hA13&AJBTOe9#gaOHKg;?;|^zeA+45un&X0+BL&zL2e8Es5$&5V|2DZFOJ24)pAyx=;9pBdyb1GT!P zVI5;u>&c7%#1r{#h{9TIc)A1Nnj14j^9c9)vFF03Q@wZZ=9|Z3v8P?2C*ChecLuk5 zJFIB6W5V+x(XD<;C-^iFq>GU*M!LB}#o9C^!EZxmU@yNV(0Iv0>|t^~@qa Date: Sun, 8 Nov 2009 00:47:46 +0000 Subject: [PATCH 004/232] curl.bz2 should be executable, to keep the same stdenv working as it worked in stdenv-updates svn path=/nixpkgs/branches/stdenv-updates2/; revision=18276 --- pkgs/stdenv/linux/bootstrap/armv5tel/curl.bz2 | Bin 1 file changed, 0 insertions(+), 0 deletions(-) mode change 100644 => 100755 pkgs/stdenv/linux/bootstrap/armv5tel/curl.bz2 diff --git a/pkgs/stdenv/linux/bootstrap/armv5tel/curl.bz2 b/pkgs/stdenv/linux/bootstrap/armv5tel/curl.bz2 old mode 100644 new mode 100755 From 4326d07c1192176ef14e8d64c769cee57a3a2872 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Llu=C3=ADs=20Batlle=20i=20Rossell?= Date: Sun, 8 Nov 2009 01:57:40 +0000 Subject: [PATCH 005/232] Updating from trunk svn path=/nixpkgs/branches/stdenv-updates2/; revision=18278 --- .../networking/browsers/uzbl/src-for-experimental.nix | 3 --- .../networking/browsers/uzbl/src-info-for-experimental.nix | 2 -- pkgs/build-support/builder-defs/builder-defs.nix | 4 ++-- pkgs/build-support/fetchgit/builder.sh | 2 +- pkgs/build-support/fetchgit/default.nix | 2 +- pkgs/os-specific/linux/zen-kernel/src-for-2.6.31-zen5.nix | 1 - pkgs/os-specific/linux/zen-kernel/src-for-zen-stable.nix | 2 -- pkgs/os-specific/linux/zen-kernel/src-info-for-zen-stable.nix | 2 -- 8 files changed, 4 insertions(+), 14 deletions(-) diff --git a/pkgs/applications/networking/browsers/uzbl/src-for-experimental.nix b/pkgs/applications/networking/browsers/uzbl/src-for-experimental.nix index fadbd7d98b9..237a56aaa75 100644 --- a/pkgs/applications/networking/browsers/uzbl/src-for-experimental.nix +++ b/pkgs/applications/networking/browsers/uzbl/src-for-experimental.nix @@ -4,7 +4,4 @@ rec { hash="b5dfae5245b1b3934ca918831fbe9fa0bb7ae790c682b69f5ecc042cccf58894"; rev="1461ac760f79b8f153c8317c4534cb047a48331a"; url="git://github.com/Dieterbe/uzbl.git"; - - depth="50"; - } diff --git a/pkgs/applications/networking/browsers/uzbl/src-info-for-experimental.nix b/pkgs/applications/networking/browsers/uzbl/src-info-for-experimental.nix index f2004980d59..60750f7b90b 100644 --- a/pkgs/applications/networking/browsers/uzbl/src-info-for-experimental.nix +++ b/pkgs/applications/networking/browsers/uzbl/src-info-for-experimental.nix @@ -3,6 +3,4 @@ baseName = "uzbl-experimental"; method = "fetchgit"; rev = "origin/experimental"; - extraVars = "depth"; - eval_depth = "depth=50"; } diff --git a/pkgs/build-support/builder-defs/builder-defs.nix b/pkgs/build-support/builder-defs/builder-defs.nix index fe4b16374a3..814ce460794 100644 --- a/pkgs/build-support/builder-defs/builder-defs.nix +++ b/pkgs/build-support/builder-defs/builder-defs.nix @@ -546,11 +546,11 @@ let inherit (builtins) head tail trace; in sha256 = srcInfo.hash; }; - fetchGitFromSrcInfo = srcInfo: fetchgit ({ + fetchGitFromSrcInfo = srcInfo: fetchgit { url = srcInfo.url; rev = srcInfo.rev; sha256 = srcInfo.hash; - } // (if srcInfo ? depth then {inherit (srcInfo) depth;} else {})); + }; }) // args # [1]: rewrite using '' instead of " so that indentation gets stripped. It's diff --git a/pkgs/build-support/fetchgit/builder.sh b/pkgs/build-support/fetchgit/builder.sh index 83a3157b498..08a1cc5d341 100644 --- a/pkgs/build-support/fetchgit/builder.sh +++ b/pkgs/build-support/fetchgit/builder.sh @@ -2,7 +2,7 @@ source $stdenv/setup header "exporting $url (rev $rev) into $out" -git clone --depth "$depth" "$url" $out +git clone "$url" $out if test -n "$rev"; then cd $out git checkout $rev diff --git a/pkgs/build-support/fetchgit/default.nix b/pkgs/build-support/fetchgit/default.nix index b8517245d28..270125f5bd7 100644 --- a/pkgs/build-support/fetchgit/default.nix +++ b/pkgs/build-support/fetchgit/default.nix @@ -1,5 +1,5 @@ {stdenv, git}: -{url, rev ? "HEAD", md5 ? "", sha256 ? "", depth ? 1}: +{url, rev ? "HEAD", md5 ? "", sha256 ? ""}: stdenv.mkDerivation { name = "git-export"; diff --git a/pkgs/os-specific/linux/zen-kernel/src-for-2.6.31-zen5.nix b/pkgs/os-specific/linux/zen-kernel/src-for-2.6.31-zen5.nix index 2d06b729807..fed3b4555ad 100644 --- a/pkgs/os-specific/linux/zen-kernel/src-for-2.6.31-zen5.nix +++ b/pkgs/os-specific/linux/zen-kernel/src-for-2.6.31-zen5.nix @@ -4,5 +4,4 @@ rec { hash="86e254d1aab17a66d7f5a83d93430b11dbeb95be1ee06f1d6a4c36219e4dfaf4"; rev="cd9caea74b8f90e8dded45a93a173f0f5c5aef25"; url="git://zen-kernel.org/kernel/zen-stable.git"; - depth = "500"; } diff --git a/pkgs/os-specific/linux/zen-kernel/src-for-zen-stable.nix b/pkgs/os-specific/linux/zen-kernel/src-for-zen-stable.nix index 9db52a59049..a3d78137553 100644 --- a/pkgs/os-specific/linux/zen-kernel/src-for-zen-stable.nix +++ b/pkgs/os-specific/linux/zen-kernel/src-for-zen-stable.nix @@ -4,6 +4,4 @@ rec { hash="f5c86214424c8a7202c2dd9bbbd800561940af00800edb8afab080a73c185bca"; rev="66a44aa93959818bdb8153fea27b0992197ebc54"; url="git://zen-kernel.org/kernel/zen-stable.git"; - depth = "500"; - } diff --git a/pkgs/os-specific/linux/zen-kernel/src-info-for-zen-stable.nix b/pkgs/os-specific/linux/zen-kernel/src-info-for-zen-stable.nix index f19e47e3505..e71297b146d 100644 --- a/pkgs/os-specific/linux/zen-kernel/src-info-for-zen-stable.nix +++ b/pkgs/os-specific/linux/zen-kernel/src-info-for-zen-stable.nix @@ -3,6 +3,4 @@ rev = "origin/master"; baseName = "zen-linux"; method = "fetchgit"; - extraVars = "depth"; - eval_depth = "depth=500"; } From 5eeac0d52ac8bb9db82a7fab4b0c4cbeded490b0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Llu=C3=ADs=20Batlle=20i=20Rossell?= Date: Sun, 8 Nov 2009 02:03:13 +0000 Subject: [PATCH 006/232] Merging from trunk. svn path=/nixpkgs/branches/stdenv-updates2/; revision=18280 --- pkgs/build-support/fetchgit/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/build-support/fetchgit/default.nix b/pkgs/build-support/fetchgit/default.nix index 270125f5bd7..6966b5c0bf9 100644 --- a/pkgs/build-support/fetchgit/default.nix +++ b/pkgs/build-support/fetchgit/default.nix @@ -10,7 +10,7 @@ stdenv.mkDerivation { outputHashMode = "recursive"; outputHash = if sha256 == "" then md5 else sha256; - inherit url rev depth; + inherit url rev; impureEnvVars = [ # We borrow these environment variables from the caller to allow From 7769ad11bdb1ac871d08c6ef9cc47321c53c053f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Llu=C3=ADs=20Batlle=20i=20Rossell?= Date: Sun, 8 Nov 2009 17:19:46 +0000 Subject: [PATCH 007/232] Updating the logic to put the resulting kernel image into its store path. svn path=/nixpkgs/branches/stdenv-updates/; revision=18289 --- pkgs/os-specific/linux/kernel/builder.sh | 16 ++++++++++------ pkgs/os-specific/linux/kernel/generic.nix | 11 ++++++++--- 2 files changed, 18 insertions(+), 9 deletions(-) diff --git a/pkgs/os-specific/linux/kernel/builder.sh b/pkgs/os-specific/linux/kernel/builder.sh index 88946b4a18f..a910f0b9b5b 100644 --- a/pkgs/os-specific/linux/kernel/builder.sh +++ b/pkgs/os-specific/linux/kernel/builder.sh @@ -55,7 +55,7 @@ configurePhase() { } postBuild() { - if [ -n "$makeUImage" ]; then + if [ "$platformName" == "sheevaplug" ]; then make uImage fi } @@ -77,13 +77,17 @@ installPhase() { ensureDir $out/bin cp linux $out/bin else - if [ -n "$makeUImage" ]; then - image=arch/$archDir/boot/uImage + case $platformName in + sheevaplug) cp arch/$archDir/boot/uImage $out - else + ;; + versatileARM) + cp arch/$archDir/boot/zImage $out + ;; + *) cp arch/$archDir/boot/bzImage $out/vmlinuz - fi - + ;; + esac fi cp vmlinux $out diff --git a/pkgs/os-specific/linux/kernel/generic.nix b/pkgs/os-specific/linux/kernel/generic.nix index 31af236ffae..0536b562612 100644 --- a/pkgs/os-specific/linux/kernel/generic.nix +++ b/pkgs/os-specific/linux/kernel/generic.nix @@ -37,13 +37,17 @@ , preConfigure ? "" , extraMeta ? {} -, platform ? { uboot = null; } +, platform ? { name = "pc"; uboot = null; } , ... }: assert stdenv.system == "i686-linux" || stdenv.system == "x86_64-linux" || stdenv.system == "armv5tel-linux"; +assert platform.name == "sheevaplug" -> platform.uboot != null; +assert (platform.name == "sheevaplug" || platform.name == "versatileARM") -> + stdenv.system == "armv5tel-linux"; + let lib = stdenv.lib; @@ -75,6 +79,9 @@ stdenv.mkDerivation { buildInputs = [perl mktemp] ++ lib.optional (platform.uboot != null) [platform.uboot]; + + + platformName = platform.name; arch = if xen then "xen" else @@ -91,8 +98,6 @@ stdenv.mkDerivation { allowLocalVersion = false; # don't allow patches to set a suffix inherit localVersion; # but do allow the user to set one. - makeUImage = if (platform.uboot != null) then true else false; - meta = { description = (if userModeLinux then From be2ff2328071f7c8821fc2dce25f1580b02511d2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Llu=C3=ADs=20Batlle=20i=20Rossell?= Date: Sun, 8 Nov 2009 18:47:55 +0000 Subject: [PATCH 008/232] Making the 'makeInitrd' expression use "platform" svn path=/nixpkgs/branches/stdenv-updates/; revision=18292 --- pkgs/build-support/kernel/make-initrd.nix | 8 +++----- pkgs/top-level/all-packages.nix | 2 +- 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/pkgs/build-support/kernel/make-initrd.nix b/pkgs/build-support/kernel/make-initrd.nix index 92142b5ef43..96268577696 100644 --- a/pkgs/build-support/kernel/make-initrd.nix +++ b/pkgs/build-support/kernel/make-initrd.nix @@ -12,17 +12,15 @@ # `contents = {object = ...; symlink = /init;}' is a typical # argument. -{stdenv, perl, cpio, contents, uboot ? null}: - -assert stdenv.system == "armv5tel-linux" -> uboot != null; +{stdenv, perl, cpio, contents, platform}: stdenv.mkDerivation { name = "initrd"; builder = ./make-initrd.sh; buildInputs = [perl cpio] - ++ stdenv.lib.optional (stdenv.system == "armv5tel-linux") [ uboot ]; + ++ stdenv.lib.optional (platform.uboot != null) [ platform.uboot ]; - makeUInitrd = if (stdenv.system == "armv5tel-linux") then true else false; + makeUInitrd = if (platform.uboot != null) then true else false; # !!! should use XML. objects = map (x: x.object) contents; diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 18ec7f4f189..5f573042f09 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -321,7 +321,7 @@ let }; makeInitrd = {contents}: import ../build-support/kernel/make-initrd.nix { - inherit stdenv perl cpio contents uboot; + inherit stdenv perl cpio contents platform; }; makeSetupHook = script: runCommand "hook" {} '' From 1b37fc42bba90c2968c68f4e44bb78e24837af66 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Llu=C3=ADs=20Batlle=20i=20Rossell?= Date: Sun, 8 Nov 2009 20:09:37 +0000 Subject: [PATCH 009/232] Updating options for the versatileARM kernel, so it matches something usable and buildable from a sheevaplug. I took the additional settings from: http://fedoraproject.org/wiki/Architectures/ARM/HowToQemu svn path=/nixpkgs/branches/stdenv-updates/; revision=18296 --- pkgs/os-specific/linux/zen-kernel/2.6.31-zen5.nix | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/pkgs/os-specific/linux/zen-kernel/2.6.31-zen5.nix b/pkgs/os-specific/linux/zen-kernel/2.6.31-zen5.nix index cb0a07ec289..a7b788c8e13 100644 --- a/pkgs/os-specific/linux/zen-kernel/2.6.31-zen5.nix +++ b/pkgs/os-specific/linux/zen-kernel/2.6.31-zen5.nix @@ -112,6 +112,17 @@ let configureBaseVersatileARM = '' ARCH=arm make versatile_defconfig + + setOptionYes CONFIG_IP_PNP_DHCP + setOptionYes CONFIG_TUN + # This versatile arm is for the sheevaplug compatibility, so, EABI + setOptionYes CONFIG_AEABI + setOptionYes CONFIG_TMPFS + # For the qemu block device 'hda' to work + setOptionYes CONFIG_PCI + setOptionYes CONFIG_SCSI + setOptionYes CONFIG_BLK_DEV_SD + setOptionYes CONFIG_SCSI_SYM53C8XX_2 ''; configureARM = '' From 6675f0a52c0962042a1000c7f20e887d0d26ae25 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Llu=C3=ADs=20Batlle=20i=20Rossell?= Date: Sun, 8 Nov 2009 22:50:27 +0000 Subject: [PATCH 010/232] Adding a check in the generic builder so it halts on the existence of /homeless-shelter svn path=/nixpkgs/branches/stdenv-updates/; revision=18302 --- pkgs/stdenv/generic/setup.sh | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/pkgs/stdenv/generic/setup.sh b/pkgs/stdenv/generic/setup.sh index cadfeadc6db..9f9d64df8e4 100644 --- a/pkgs/stdenv/generic/setup.sh +++ b/pkgs/stdenv/generic/setup.sh @@ -78,6 +78,10 @@ addToSearchPath() { set -e +# Check that the directory pointed by HOME, usually '/homeless-shelter', +# does not exist, as it may be a good source for impurities. +! test -e $HOME + test -z $NIX_GCC && NIX_GCC=@gcc@ From 605b62da110bd550dcc8ae2e5490714e0acef10a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Llu=C3=ADs=20Batlle=20i=20Rossell?= Date: Mon, 9 Nov 2009 23:26:34 +0000 Subject: [PATCH 011/232] Enabling ipv6 at least as module in the zen5 arm kernel svn path=/nixpkgs/branches/stdenv-updates/; revision=18315 --- pkgs/os-specific/linux/zen-kernel/2.6.31-zen5.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/pkgs/os-specific/linux/zen-kernel/2.6.31-zen5.nix b/pkgs/os-specific/linux/zen-kernel/2.6.31-zen5.nix index a7b788c8e13..6b311c8689f 100644 --- a/pkgs/os-specific/linux/zen-kernel/2.6.31-zen5.nix +++ b/pkgs/os-specific/linux/zen-kernel/2.6.31-zen5.nix @@ -178,6 +178,7 @@ let setOptionYes CONFIG_REISERFS_FS setOptionYes CONFIG_FUSE_FS setOptionYes CONFIG_ISO9660_FS + setOptionMod CONFIG_IPV6 ''+ (if a.lib.attrByPath ["ckSched"] false a then '' killOption CONFIG_CPU_CFS From 2aba922d30143044728eae06f42e0bfb90d5b25a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Llu=C3=ADs=20Batlle=20i=20Rossell?= Date: Sat, 14 Nov 2009 08:11:30 +0000 Subject: [PATCH 012/232] My first attempt at getting cross compilers in nixpkgs. My idea is to provide special stdenv expressions that will contain in the path additional cross compilers. As most expressions for programs accept a stdenv parameter, we could substitute this parameter with the special stdenv, which will have a generic builder that attempts the usual "--target=..." and can additionally have an env variable like "cross" with the target architecture set. So, finally we could have additional expressions like this: bashRealArm = makeOverridable (import ../shells/bash) { inherit fetchurl bison; stdenv = stdenvCross "armv5tel-unknown-linux-gnueabi"; }; Meanwhile it does not work - I still cannot get the cross-gcc to build. I think it does not fill the previous expressions with a lot of noise, so I think it may be a good path to follow. I only touched some files of the current stdenv: gcc-4.3, kernel headers 2.6.28, glibc 2.9, ... I tried to use the gcc-cross-wrapper, that may be very outdated. Maybe I will update it, or update the gcc-wrapper expression to make it fit the cross tools, but meanwhile I even cannot build gcc, so I have not tested the wrapper. This new idea on cross compiling is not similar to that of the nixpkgs/branches/cross-compilation, which mostly added bare new expressions for anything to be cross compiled, if I understood it correctly. I cared not to break anything of the usual stdenv in all this work. svn path=/nixpkgs/branches/stdenv-updates/; revision=18343 --- .../gcc-cross-wrapper/default.nix | 2 +- pkgs/development/compilers/gcc-4.3/builder.sh | 10 +-- .../development/compilers/gcc-4.3/default.nix | 18 +++++- .../libraries/glibc-2.9/default.nix | 10 ++- .../libraries/glibc-2.9/headers.nix | 63 +++++++++++++++++++ .../libraries/glibc-2.9/headersbuilder.sh | 38 +++++++++++ .../tools/misc/binutils/default.nix | 12 ++-- .../linux/kernel-headers/2.6.28.nix | 4 +- pkgs/stdenv/default.nix | 4 +- pkgs/stdenv/linux/default.nix | 28 +++++++-- pkgs/top-level/all-packages.nix | 48 ++++++++++++++ 11 files changed, 219 insertions(+), 18 deletions(-) create mode 100644 pkgs/development/libraries/glibc-2.9/headers.nix create mode 100644 pkgs/development/libraries/glibc-2.9/headersbuilder.sh diff --git a/pkgs/build-support/gcc-cross-wrapper/default.nix b/pkgs/build-support/gcc-cross-wrapper/default.nix index 74d15660da8..d811d82c85b 100644 --- a/pkgs/build-support/gcc-cross-wrapper/default.nix +++ b/pkgs/build-support/gcc-cross-wrapper/default.nix @@ -24,7 +24,7 @@ stdenv.mkDerivation { name = if name == "" then gcc.name else name; langC = if nativeTools then true else gcc.langC; langCC = if nativeTools then true else gcc.langCC; - langF77 = if nativeTools then false else gcc.langF77; + langF77 = if nativeTools then false else gcc ? langFortran; shell = if shell == "" then stdenv.shell else shell; meta = if gcc != null then gcc.meta else { description = "System C compiler wrapper"; diff --git a/pkgs/development/compilers/gcc-4.3/builder.sh b/pkgs/development/compilers/gcc-4.3/builder.sh index 2bc011e3e6e..c2f917ee6da 100644 --- a/pkgs/development/compilers/gcc-4.3/builder.sh +++ b/pkgs/development/compilers/gcc-4.3/builder.sh @@ -87,10 +87,12 @@ postInstall() { } -if test -z "$profiledCompiler"; then - buildFlags="bootstrap $buildFlags" -else - buildFlags="profiledbootstrap $buildFlags" +if test -n "$cross"; then + if test -z "$profiledCompiler"; then + buildFlags="bootstrap $buildFlags" + else + buildFlags="profiledbootstrap $buildFlags" + fi fi genericBuild diff --git a/pkgs/development/compilers/gcc-4.3/default.nix b/pkgs/development/compilers/gcc-4.3/default.nix index 9823fc82051..476108298f9 100644 --- a/pkgs/development/compilers/gcc-4.3/default.nix +++ b/pkgs/development/compilers/gcc-4.3/default.nix @@ -10,16 +10,22 @@ , zlib ? null, boehmgc ? null , enableMultilib ? false , name ? "gcc" +, cross ? null +, binutilsCross ? null +, glibcHeadersCross ? null }: assert langTreelang -> bison != null && flex != null; +assert cross != null -> profiledCompiler == false && enableMultilib == true; + with stdenv.lib; let version = "4.3.4"; in stdenv.mkDerivation ({ - name = "${name}-${version}"; + name = "${name}-${version}" + + stdenv.lib.optionalString (cross != null) "-${cross}"; builder = ./builder.sh; @@ -53,6 +59,7 @@ stdenv.mkDerivation ({ ++ (optionals langTreelang [bison flex]) ++ (optional (zlib != null) zlib) ++ (optional (boehmgc != null) boehmgc) + ++ (optionals (cross != null) [binutilsCross]) ; configureFlags = " @@ -71,7 +78,16 @@ stdenv.mkDerivation ({ ) } ${if stdenv.isi686 then "--with-arch=i686" else ""} + ${if cross != null then "--disable-libssp --disable-nls" + + " --with-headers=${glibcHeadersCross}/include --target=${cross}" + + " --disable-shared" else ""} "; + #Above I added a hack on making the build different than the host. + + # Needed for the cross compilation to work + AR = "ar"; + LD = "ld"; + CC = "gcc"; NIX_EXTRA_LDFLAGS = if staticCompiler then "-static" else ""; diff --git a/pkgs/development/libraries/glibc-2.9/default.nix b/pkgs/development/libraries/glibc-2.9/default.nix index 33f93befb21..44d36296f03 100644 --- a/pkgs/development/libraries/glibc-2.9/default.nix +++ b/pkgs/development/libraries/glibc-2.9/default.nix @@ -1,10 +1,14 @@ { stdenv, fetchurl, kernelHeaders , installLocales ? true , profilingLibraries ? false +, cross ? null +, binutilsCross ? null +, gccCross ? null }: stdenv.mkDerivation rec { - name = "glibc-2.9"; + name = "glibc-2.9" + + stdenv.lib.optionalString (cross != null) "-${cross}"; builder = ./builder.sh; @@ -60,12 +64,16 @@ stdenv.mkDerivation rec { "--enable-add-ons" "--with-headers=${kernelHeaders}/include" (if profilingLibraries then "--enable-profile" else "--disable-profile") + ] ++ stdenv.lib.optionals (cross != null) [ + "--target=${cross}" ] ++ (if (stdenv.system == "armv5tel-linux") then [ "--host=arm-linux-gnueabi" "--build=arm-linux-gnueabi" "--without-fp" ] else []); + buildInputs = stdenv.lib.optionals (cross != null) [ binutilsCross gccCross ]; + preInstall = '' ensureDir $out/lib ln -s ${stdenv.gcc.gcc}/lib/libgcc_s.so.1 $out/lib/libgcc_s.so.1 diff --git a/pkgs/development/libraries/glibc-2.9/headers.nix b/pkgs/development/libraries/glibc-2.9/headers.nix new file mode 100644 index 00000000000..adb9a22f481 --- /dev/null +++ b/pkgs/development/libraries/glibc-2.9/headers.nix @@ -0,0 +1,63 @@ +{ stdenv, fetchurl, kernelHeaders +, profilingLibraries ? false +}: + +stdenv.mkDerivation rec { + name = "glibc-headers-2.9"; + + builder = ./headersbuilder.sh; + + src = fetchurl { + url = http://ftp.gnu.org/gnu/glibc/glibc-2.9.tar.bz2; + sha256 = "0v53m7flx6qcx7cvrvvw6a4dx4x3y6k8nvpc4wfv5xaaqy2am2q9"; + }; + + srcPorts = fetchurl { + url = http://ftp.gnu.org/gnu/glibc/glibc-ports-2.9.tar.bz2; + sha256 = "0r2sn527wxqifi63di7ns9wbjh1cainxn978w178khhy7yw9fk42"; + }; + + inherit kernelHeaders; + + inherit (stdenv) is64bit; + + patches = [ + /* Support GNU Binutils 2.20 and above. */ + ./binutils-2.20.patch + ]; + + configureFlags = [ + "--enable-add-ons" + "--with-headers=${kernelHeaders}/include" + "--disable-sanity-checks" + "--enable-hacker-mode" + (if profilingLibraries then "--enable-profile" else "--disable-profile") + ] ++ (if (stdenv.system == "armv5tel-linux") then [ + "--host=arm-linux-gnueabi" + "--build=arm-linux-gnueabi" + "--without-fp" + ] else []); + + buildPhase = "true"; + + # I took some tricks from crosstool-0.43 + installPhase = '' + make cross-compiling=yes CFLAGS=-DBOOTSTRAP_GCC install-headers + mkdir -p $out/include/gnu + touch $out/include/gnu/stubs.h + cp ../include/features.h $out/include/features.h + (cd $out/include && ln -s $kernelHeaders/include/* .) || exit 1 + ''; + + # Workaround for this bug: + # http://sourceware.org/bugzilla/show_bug.cgi?id=411 + # I.e. when gcc is compiled with --with-arch=i686, then the + # preprocessor symbol `__i686' will be defined to `1'. This causes + # the symbol __i686.get_pc_thunk.dx to be mangled. + NIX_CFLAGS_COMPILE = "-U__i686"; + + meta = { + homepage = http://www.gnu.org/software/libc/; + description = "The GNU C Library"; + }; +} diff --git a/pkgs/development/libraries/glibc-2.9/headersbuilder.sh b/pkgs/development/libraries/glibc-2.9/headersbuilder.sh new file mode 100644 index 00000000000..23f4bd4cc61 --- /dev/null +++ b/pkgs/development/libraries/glibc-2.9/headersbuilder.sh @@ -0,0 +1,38 @@ +# Glibc cannot have itself in its RPATH. +export NIX_NO_SELF_RPATH=1 + +source $stdenv/setup + +# Explicitly tell glibc to use our pwd, not /bin/pwd. +export PWD_P=$(type -tP pwd) + +# Needed to install share/zoneinfo/zone.tab. Set to impure /bin/sh to +# prevent a retained dependency on the bootstrap tools in the +# stdenv-linux bootstrap. +export BASH_SHELL=/bin/sh + + +preConfigure() { + + for i in configure io/ftwtest-sh; do + # Can't use substituteInPlace here because replace hasn't been + # built yet in the bootstrap. + sed -i "$i" -e "s^/bin/pwd^$PWD_P^g" + done + + # In the glibc 2.6/2.7 tarballs C-translit.h is a little bit older + # than C-translit.h.in, forcing Make to rebuild it unnecessarily. + # This wouldn't be problem except that it requires Perl, which we + # don't want as a dependency in the Nixpkgs bootstrap. So force + # the output file to be newer. + touch locale/C-translit.h + + tar xvjf "$srcPorts" + + mkdir build + cd build + + configureScript=../configure +} + +genericBuild diff --git a/pkgs/development/tools/misc/binutils/default.nix b/pkgs/development/tools/misc/binutils/default.nix index 4987dafd511..d1178d12bcd 100644 --- a/pkgs/development/tools/misc/binutils/default.nix +++ b/pkgs/development/tools/misc/binutils/default.nix @@ -1,10 +1,13 @@ -{stdenv, fetchurl, noSysDirs}: +{stdenv, fetchurl, noSysDirs, cross ? null}: +let + basename = "binutils-2.20"; +in stdenv.mkDerivation rec { - name = "binutils-2.20"; + name = basename + stdenv.lib.optionalString (cross != null) "-${cross}"; src = fetchurl { - url = "mirror://gnu/binutils/${name}.tar.bz2"; + url = "mirror://gnu/binutils/${basename}.tar.bz2"; sha256 = "1c3m789p5rwmmnck5ms4zcnc40axss3gxzivz571al1vmbq0kpz1"; }; @@ -24,7 +27,8 @@ stdenv.mkDerivation rec { fi ''; - configureFlags = "--disable-werror"; # needed for dietlibc build + configureFlags = "--disable-werror" # needed for dietlibc build + + stdenv.lib.optionalString (cross != null) " --target=${cross}"; meta = { description = "GNU Binutils, tools for manipulating binaries (linker, assembler, etc.)"; diff --git a/pkgs/os-specific/linux/kernel-headers/2.6.28.nix b/pkgs/os-specific/linux/kernel-headers/2.6.28.nix index 37891e6325b..4591fee1497 100644 --- a/pkgs/os-specific/linux/kernel-headers/2.6.28.nix +++ b/pkgs/os-specific/linux/kernel-headers/2.6.28.nix @@ -1,4 +1,4 @@ -{stdenv, fetchurl, perl}: +{stdenv, fetchurl, perl, cross ? null}: assert stdenv.isLinux; @@ -12,7 +12,9 @@ stdenv.mkDerivation { sha256 = "0hifjh75sinifr5138v22zwbpqln6lhn65k8b57a1dyzlqca7cl9"; }; + platform = + if cross == "armv5tel-unknown-linux-gnueabi" then "arm" else if stdenv.system == "i686-linux" then "i386" else if stdenv.system == "x86_64-linux" then "x86_64" else if stdenv.system == "powerpc-linux" then "powerpc" else diff --git a/pkgs/stdenv/default.nix b/pkgs/stdenv/default.nix index ed8f0e39f5f..19bbb371a31 100644 --- a/pkgs/stdenv/default.nix +++ b/pkgs/stdenv/default.nix @@ -10,7 +10,7 @@ # system, e.g., cygwin and mingw builds on i686-cygwin. Most people # can ignore it. -{system, stdenvType ? system, allPackages ? import ../..}: +{system, stdenvType ? system, allPackages ? import ../.., cross ? null}: assert system != "i686-cygwin" -> system == stdenvType; @@ -41,7 +41,7 @@ rec { # Linux standard environment. - stdenvLinux = (import ./linux {inherit system allPackages;}).stdenvLinux; + stdenvLinux = (import ./linux {inherit system allPackages cross;}).stdenvLinux; # MinGW/MSYS standard environment. diff --git a/pkgs/stdenv/linux/default.nix b/pkgs/stdenv/linux/default.nix index 05f92825733..53fac3a0316 100644 --- a/pkgs/stdenv/linux/default.nix +++ b/pkgs/stdenv/linux/default.nix @@ -5,7 +5,8 @@ # ensuring purity of components produced by it. # The function defaults are for easy testing. -{system ? "i686-linux", allPackages ? import ../../top-level/all-packages.nix}: +{system ? "i686-linux", allPackages ? import ../../top-level/all-packages.nix, +cross ? null}: rec { @@ -197,7 +198,22 @@ rec { bootStdenv = stdenvLinuxBoot3; }; - + wrapGCCCross = + {gcc, libc, binutils, shell ? "", name ? "bootstrap-gcc-wrapper"}: + + import ../../build-support/gcc-cross-wrapper { + nativeTools = false; + nativeLibc = false; + inherit gcc binutils libc shell name cross; + stdenv = stdenvLinuxBoot3; + }; + + gccCross = wrapGCCCross rec { + gcc = stdenvLinuxBoot3Pkgs.gccCross cross; + binutils = stdenvLinuxBoot3Pkgs.gccCross cross; + libc = stdenvLinuxBoot3Pkgs.glibcCross cross; + }; + # 8) Construct the final stdenv. It uses the Glibc, GCC and # Binutils built above, and adds in dynamically linked versions # of all other tools. @@ -205,7 +221,8 @@ rec { # When updating stdenvLinux, make sure that the result has no # dependency (`nix-store -qR') on bootstrapTools. stdenvLinux = import ../generic { - name = "stdenv-linux"; + name = "stdenv-linux" + + stdenvLinuxBoot3Pkgs.lib.optionalString (cross != null) "-${cross}"; inherit system; @@ -213,7 +230,10 @@ rec { initialPath = ((import ../common-path.nix) {pkgs = stdenvLinuxBoot3Pkgs;}) - ++ [stdenvLinuxBoot3Pkgs.patchelf]; + ++ [stdenvLinuxBoot3Pkgs.patchelf] + ++ stdenvLinuxBoot3Pkgs.lib.optionals (cross != null) + [ (stdenvLinuxBoot3Pkgs.binutilsCross cross) + gccCross ]; gcc = wrapGCC rec { inherit (stdenvLinuxBoot2Pkgs) binutils; diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 33a57b49bcb..2278cd82b1c 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -213,8 +213,15 @@ let allPackages = args: import ./all-packages.nix ({ inherit config; } // args); }; + allStdenvsCross = cross : import ../stdenv { + inherit system stdenvType cross; + allPackages = args: import ./all-packages.nix ({ inherit config; } // args); + }; + defaultStdenv = allStdenvs.stdenv; + stdenvCross = cross : (allStdenvsCross cross).stdenv; + stdenv = if bootStdenv != null then bootStdenv else let changer = getConfig ["replaceStdenv"] null; @@ -1785,6 +1792,11 @@ let inherit fetchurl stdenv bison; }; + bashRealArm = makeOverridable (import ../shells/bash) { + inherit fetchurl bison; + stdenv = stdenvCross "armv5tel-unknown-linux-gnueabi"; + }; + bashInteractive = appendToName "interactive" (bashReal.override { inherit readline texinfo; interactive = true; @@ -1884,6 +1896,16 @@ let profiledCompiler = true; })); + gcc43_realCross = cross : makeOverridable (import ../development/compilers/gcc-4.3) { + inherit fetchurl stdenv texinfo gmp mpfr noSysDirs cross; + binutilsCross = binutilsCross cross; + glibcHeadersCross = glibcHeadersCross cross; + profiledCompiler = false; + enableMultilib = true; + }; + + gccCross = cross: gcc43_realCross cross; + gcc43_multi = lowPrio (wrapGCCWith (import ../build-support/gcc-wrapper) glibc_multi (gcc43_real.gcc.override { stdenv = overrideGCC stdenv (wrapGCCWith (import ../build-support/gcc-wrapper) glibc_multi gcc); profiledCompiler = false; @@ -2672,6 +2694,11 @@ let inherit fetchurl stdenv noSysDirs; }); + binutilsCross = cross : import ../development/tools/misc/binutils { + inherit stdenv fetchurl cross; + noSysDirs = true; + }; + bison = bison23; bison1875 = import ../development/tools/parsing/bison/bison-1.875.nix { @@ -3483,6 +3510,23 @@ let installLocales = getPkgConfig "glibc" "locales" false; }; + glibc29HeadersCross = cross: import ../development/libraries/glibc-2.9/headers.nix { + inherit fetchurl stdenv; + kernelHeaders = kernelHeadersCross cross; + }; + + glibcHeadersCross = cross: glibc29HeadersCross cross; + + glibc29Cross = cross : makeOverridable (import ../development/libraries/glibc-2.9) { + inherit fetchurl stdenv cross; + binutilsCross = binutilsCross cross; + gccCross = gccCross cross; + kernelHeaders = kernelHeadersCross cross; + installLocales = getPkgConfig "glibc" "locales" false; + }; + + glibcCross = cross: glibc29Cross cross; + eglibc = import ../development/libraries/eglibc { inherit fetchsvn stdenv kernelHeaders; installLocales = getPkgConfig "glibc" "locales" false; @@ -5447,6 +5491,10 @@ let kernelHeaders = kernelHeaders_2_6_28; + kernelHeadersCross = cross : import ../os-specific/linux/kernel-headers/2.6.28.nix { + inherit fetchurl stdenv perl cross; + }; + kernelHeaders_2_6_18 = import ../os-specific/linux/kernel-headers/2.6.18.5.nix { inherit fetchurl stdenv unifdef; }; From 9b977f5c601fff3ba9095053c28d5cab72caf80f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Llu=C3=ADs=20Batlle=20i=20Rossell?= Date: Sun, 15 Nov 2009 05:28:35 +0000 Subject: [PATCH 013/232] Fixing many things related to the cross compilation in stdenvCross. It still does not work, but I think I already get glibc cross compiled. Next: gcc and g++, and set some setup script hooks on stdenvCross. It took quite enough hours for this commit. svn path=/nixpkgs/branches/stdenv-updates/; revision=18351 --- pkgs/development/compilers/gcc-4.3/builder.sh | 30 +++++++++- .../development/compilers/gcc-4.3/default.nix | 31 +++++++--- .../libraries/glibc-2.9/binutils-ld.patch | 33 +++++++++++ .../libraries/glibc-2.9/builder.sh | 21 ++++++- .../libraries/glibc-2.9/default.nix | 11 +++- .../linux/kernel-headers/2.6.28.nix | 12 +++- pkgs/stdenv/linux/default.nix | 18 +----- pkgs/top-level/all-packages.nix | 59 ++++++++++++++----- 8 files changed, 168 insertions(+), 47 deletions(-) create mode 100644 pkgs/development/libraries/glibc-2.9/binutils-ld.patch diff --git a/pkgs/development/compilers/gcc-4.3/builder.sh b/pkgs/development/compilers/gcc-4.3/builder.sh index c2f917ee6da..22cb621e0f7 100644 --- a/pkgs/development/compilers/gcc-4.3/builder.sh +++ b/pkgs/development/compilers/gcc-4.3/builder.sh @@ -43,13 +43,30 @@ if test "$noSysDirs" = "1"; then "${makeFlagsArray[@]}" \ NATIVE_SYSTEM_HEADER_DIR="$NIX_FIXINC_DUMMY" \ SYSTEM_HEADER_DIR="$NIX_FIXINC_DUMMY" \ - LIMITS_H_TEST=true \ X_CFLAGS="$NIX_EXTRA_CFLAGS $NIX_EXTRA_LDFLAGS" \ LDFLAGS="$NIX_EXTRA_CFLAGS $NIX_EXTRA_LDFLAGS" \ LDFLAGS_FOR_TARGET="$NIX_EXTRA_CFLAGS $NIX_EXTRA_LDFLAGS" \ ) + + if test -n "$cross" -a "$crossStageStatic" == 1; then + # We don't want the gcc build to assume there will be a libc providing + # limits.h in this stagae + makeFlagsArray=( \ + "${makeFlagsArray[@]}" \ + LIMITS_H_TEST=false \ + ) + else + makeFlagsArray=( \ + "${makeFlagsArray[@]}" \ + LIMITS_H_TEST=true \ + ) + fi fi +if test -n "$cross"; then + # The host stripp will destroy everything in the target binaries otherwise + dontStrip=1 +fi preConfigure() { # Perform the build in a different directory. @@ -84,15 +101,24 @@ postInstall() { ln -sfn g++ $i fi done + + # gcc will look for the binutils there, called through collect2 + if test -n "$cross"; then + ln -s $binutilsCross/$cross/bin $out/$cross/bin + fi } -if test -n "$cross"; then +if test -z "$cross"; then if test -z "$profiledCompiler"; then buildFlags="bootstrap $buildFlags" else buildFlags="profiledbootstrap $buildFlags" fi +else +: +# buildFlags="all-gcc all-target-libgcc $buildFlags" +# installTargets="install-gcc install-target-libgcc" fi genericBuild diff --git a/pkgs/development/compilers/gcc-4.3/default.nix b/pkgs/development/compilers/gcc-4.3/default.nix index 476108298f9..cdb3bce4125 100644 --- a/pkgs/development/compilers/gcc-4.3/default.nix +++ b/pkgs/development/compilers/gcc-4.3/default.nix @@ -13,19 +13,38 @@ , cross ? null , binutilsCross ? null , glibcHeadersCross ? null +, crossStageStatic ? true }: assert langTreelang -> bison != null && flex != null; assert cross != null -> profiledCompiler == false && enableMultilib == true; +assert (cross != null && crossStageStatic) -> (langCC == false && langFortran +== false && langTreelang == false); with stdenv.lib; -let version = "4.3.4"; in +let + version = "4.3.4"; + crossConfigureFlags = + "--target=${cross}" + + (if crossStageStatic then + " --disable-libssp --disable-nls" + + " --without-headers" + + " --disable-threads " + + " --disable-libmudflap " + + " --disable-libgomp " + + " --disable-shared" else + " --with-headers=${glibcHeadersCross}" + ); + stageNameAddon = if (crossStageStatic) then "-stage-static" else + "-stage-final"; + crossNameAddon = if (cross != null) then "-${cross}" + stageNameAddon else ""; + +in stdenv.mkDerivation ({ - name = "${name}-${version}" + - stdenv.lib.optionalString (cross != null) "-${cross}"; + name = "${name}-${version}" + crossNameAddon; builder = ./builder.sh; @@ -53,7 +72,7 @@ stdenv.mkDerivation ({ ++ optional (noSysDirs && langFortran) ./no-sys-dirs-fortran.patch ++ optional langJava ./java-jvgenmain-link.patch; - inherit noSysDirs profiledCompiler staticCompiler; + inherit noSysDirs profiledCompiler staticCompiler cross crossStageStatic binutilsCross; buildInputs = [texinfo gmp mpfr] ++ (optionals langTreelang [bison flex]) @@ -78,9 +97,7 @@ stdenv.mkDerivation ({ ) } ${if stdenv.isi686 then "--with-arch=i686" else ""} - ${if cross != null then "--disable-libssp --disable-nls" + - " --with-headers=${glibcHeadersCross}/include --target=${cross}" + - " --disable-shared" else ""} + ${if cross != null then crossConfigureFlags else ""} "; #Above I added a hack on making the build different than the host. diff --git a/pkgs/development/libraries/glibc-2.9/binutils-ld.patch b/pkgs/development/libraries/glibc-2.9/binutils-ld.patch new file mode 100644 index 00000000000..ae70f145ce0 --- /dev/null +++ b/pkgs/development/libraries/glibc-2.9/binutils-ld.patch @@ -0,0 +1,33 @@ +From 7c8a67320e26b8c11108bf0a3410d3aef9cf3486 Mon Sep 17 00:00:00 2001 +From: Ulrich Drepper +Date: Sat, 31 Jan 2009 00:21:15 +0000 +Subject: [PATCH] * elf/Makefile (ld.so): Adjust the sed script to insert _begin in to + + newer linker scripts. +--- + ChangeLog | 5 +++++ + elf/Makefile | 4 ++-- + 2 files changed, 7 insertions(+), 2 deletions(-) + +diff --git a/elf/Makefile b/elf/Makefile +index 8079fe9..e44ff1d 100644 +--- a/elf/Makefile ++++ b/elf/Makefile +@@ -1,4 +1,4 @@ +-# Copyright (C) 1995-2007, 2008 Free Software Foundation, Inc. ++# Copyright (C) 1995-2007, 2008, 2009 Free Software Foundation, Inc. + # This file is part of the GNU C Library. + + # The GNU C Library is free software; you can redistribute it and/or +@@ -304,7 +304,7 @@ $(objpfx)ld.so: $(objpfx)librtld.os $(ld-map) + $(LDFLAGS-rtld) -Wl,-z,defs -Wl,--verbose 2>&1 | \ + LC_ALL=C \ + sed -e '/^=========/,/^=========/!d;/^=========/d' \ +- -e 's/\. = 0 + SIZEOF_HEADERS;/& _begin = . - SIZEOF_HEADERS;/' \ ++ -e 's/\. = .* + SIZEOF_HEADERS;/& _begin = . - SIZEOF_HEADERS;/' \ + > $@.lds + $(LINK.o) -nostdlib -nostartfiles -shared -o $@ \ + $(LDFLAGS-rtld) -Wl,-z,defs $(z-now-$(bind-now)) \ +-- +1.6.4 + diff --git a/pkgs/development/libraries/glibc-2.9/builder.sh b/pkgs/development/libraries/glibc-2.9/builder.sh index adb73656c2a..791be83b98e 100644 --- a/pkgs/development/libraries/glibc-2.9/builder.sh +++ b/pkgs/development/libraries/glibc-2.9/builder.sh @@ -29,10 +29,29 @@ preConfigure() { tar xvjf "$srcPorts" + if test -n "$cross"; then + sed -i s/-lgcc_eh//g Makeconfig + fi + mkdir build cd build configureScript=../configure + if test -n "$cross"; then + cat > config.cache << "EOF" +libc_cv_forced_unwind=yes +libc_cv_c_cleanup=yes +libc_cv_gnu89_inline=yes +EOF + export BUILD_CC=gcc + export CC="${cross}-gcc" + export AR="${cross}-ar" + export RANLIB="${cross}-ranlib" + configureFlags="${configureFlags} --cache-file=config.cache" + + # The host stripp will destroy everything in the target binaries otherwise + dontStrip=1 + fi } @@ -52,7 +71,7 @@ postInstall() { if test -n "$installLocales"; then make localedata/install-locales fi - rm $out/etc/ld.so.cache + test -f $out/etc/ld.so.cache && rm $out/etc/ld.so.cache (cd $out/include && ln -s $kernelHeaders/include/* .) || exit 1 # Fix for NIXOS-54 (ldd not working on x86_64). Make a symlink diff --git a/pkgs/development/libraries/glibc-2.9/default.nix b/pkgs/development/libraries/glibc-2.9/default.nix index 44d36296f03..ff47696e20b 100644 --- a/pkgs/development/libraries/glibc-2.9/default.nix +++ b/pkgs/development/libraries/glibc-2.9/default.nix @@ -22,7 +22,7 @@ stdenv.mkDerivation rec { sha256 = "0r2sn527wxqifi63di7ns9wbjh1cainxn978w178khhy7yw9fk42"; }; - inherit kernelHeaders installLocales; + inherit kernelHeaders installLocales cross; inherit (stdenv) is64bit; @@ -58,6 +58,8 @@ stdenv.mkDerivation rec { /* Support GNU Binutils 2.20 and above. */ ./binutils-2.20.patch + + ./binutils-ld.patch ]; configureFlags = [ @@ -65,7 +67,12 @@ stdenv.mkDerivation rec { "--with-headers=${kernelHeaders}/include" (if profilingLibraries then "--enable-profile" else "--disable-profile") ] ++ stdenv.lib.optionals (cross != null) [ - "--target=${cross}" + "--host=${cross}" + "--build=${stdenv.system}" + "--with-tls" + "--enable-kernel=2.6.0" + "--without-fp" + "--with-__thread" ] ++ (if (stdenv.system == "armv5tel-linux") then [ "--host=arm-linux-gnueabi" "--build=arm-linux-gnueabi" diff --git a/pkgs/os-specific/linux/kernel-headers/2.6.28.nix b/pkgs/os-specific/linux/kernel-headers/2.6.28.nix index 4591fee1497..9a2e84cf2a3 100644 --- a/pkgs/os-specific/linux/kernel-headers/2.6.28.nix +++ b/pkgs/os-specific/linux/kernel-headers/2.6.28.nix @@ -2,7 +2,9 @@ assert stdenv.isLinux; -let version = "2.6.28.5"; in +let + version = "2.6.28.5"; +in stdenv.mkDerivation { name = "linux-headers-${version}"; @@ -12,14 +14,17 @@ stdenv.mkDerivation { sha256 = "0hifjh75sinifr5138v22zwbpqln6lhn65k8b57a1dyzlqca7cl9"; }; + inherit cross; platform = if cross == "armv5tel-unknown-linux-gnueabi" then "arm" else + assert(cross == null); if stdenv.system == "i686-linux" then "i386" else if stdenv.system == "x86_64-linux" then "x86_64" else if stdenv.system == "powerpc-linux" then "powerpc" else if stdenv.system == "armv5tel-linux" then "arm" else - abort "don't know what the kernel include directory is called for this platform"; + abort "don't know what the kernel include directory is called for this + platform"; buildInputs = [perl]; @@ -31,6 +36,9 @@ stdenv.mkDerivation { ''; buildPhase = '' + if test -n "$cross"; then + export ARCH=$platform + fi make mrproper headers_check ''; diff --git a/pkgs/stdenv/linux/default.nix b/pkgs/stdenv/linux/default.nix index 53fac3a0316..ca2ddd85a01 100644 --- a/pkgs/stdenv/linux/default.nix +++ b/pkgs/stdenv/linux/default.nix @@ -198,22 +198,6 @@ rec { bootStdenv = stdenvLinuxBoot3; }; - wrapGCCCross = - {gcc, libc, binutils, shell ? "", name ? "bootstrap-gcc-wrapper"}: - - import ../../build-support/gcc-cross-wrapper { - nativeTools = false; - nativeLibc = false; - inherit gcc binutils libc shell name cross; - stdenv = stdenvLinuxBoot3; - }; - - gccCross = wrapGCCCross rec { - gcc = stdenvLinuxBoot3Pkgs.gccCross cross; - binutils = stdenvLinuxBoot3Pkgs.gccCross cross; - libc = stdenvLinuxBoot3Pkgs.glibcCross cross; - }; - # 8) Construct the final stdenv. It uses the Glibc, GCC and # Binutils built above, and adds in dynamically linked versions # of all other tools. @@ -233,7 +217,7 @@ rec { ++ [stdenvLinuxBoot3Pkgs.patchelf] ++ stdenvLinuxBoot3Pkgs.lib.optionals (cross != null) [ (stdenvLinuxBoot3Pkgs.binutilsCross cross) - gccCross ]; + (stdenvLinuxBoot3Pkgs.gccCrossStageFinal cross) ]; gcc = wrapGCC rec { inherit (stdenvLinuxBoot2Pkgs) binutils; diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 2278cd82b1c..a183ba09717 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -1792,11 +1792,6 @@ let inherit fetchurl stdenv bison; }; - bashRealArm = makeOverridable (import ../shells/bash) { - inherit fetchurl bison; - stdenv = stdenvCross "armv5tel-unknown-linux-gnueabi"; - }; - bashInteractive = appendToName "interactive" (bashReal.override { inherit readline texinfo; interactive = true; @@ -1897,14 +1892,39 @@ let })); gcc43_realCross = cross : makeOverridable (import ../development/compilers/gcc-4.3) { - inherit fetchurl stdenv texinfo gmp mpfr noSysDirs cross; + #stdenv = overrideGCC stdenv (wrapGCCWith (import ../build-support/gcc-wrapper) glibc_multi gcc); + inherit stdenv fetchurl texinfo gmp mpfr noSysDirs cross; binutilsCross = binutilsCross cross; - glibcHeadersCross = glibcHeadersCross cross; + glibcHeadersCross = glibcCross cross; profiledCompiler = false; enableMultilib = true; + langCC = false; }; - gccCross = cross: gcc43_realCross cross; + gccCrossStageStatic = cross: (gcc43_realCross cross).override { + crossStageStatic = true; + }; + + /* + gccCrossStageStatic = cross: wrapGCCCross { + gcc = (gcc43_realCross cross).override { + crossStageStatic = true; + }; + #libc = glibc; + libc = stdenv.gcc.libc; + binutils = binutilsCross cross; + inherit cross; + }; + */ + + gccCrossStageFinal = cross: wrapGCCCross { + gcc = (gcc43_realCross cross).override { + crossStageStatic = false; + }; + libc = glibcCross cross; + binutils = binutilsCross cross; + inherit cross; + }; gcc43_multi = lowPrio (wrapGCCWith (import ../build-support/gcc-wrapper) glibc_multi (gcc43_real.gcc.override { stdenv = overrideGCC stdenv (wrapGCCWith (import ../build-support/gcc-wrapper) glibc_multi gcc); @@ -2316,6 +2336,15 @@ let wrapGCC = wrapGCCWith (import ../build-support/gcc-wrapper) glibc; + wrapGCCCross = + {gcc, libc, binutils, cross, shell ? "", name ? "gcc-cross-wrapper"}: + + import ../build-support/gcc-cross-wrapper { + nativeTools = false; + nativeLibc = false; + inherit stdenv gcc binutils libc shell name cross; + }; + # FIXME: This is a specific hack for GCC-UPC. Eventually, we may # want to merge `gcc-upc-wrapper' and `gcc-wrapper'. wrapGCCUPC = baseGCC: import ../build-support/gcc-upc-wrapper { @@ -2701,6 +2730,11 @@ let bison = bison23; + bisonArm = import ../development/tools/parsing/bison/bison-2.3.nix { + inherit fetchurl m4; + stdenv = stdenvCross "armv5tel-unknown-linux-gnueabi"; + }; + bison1875 = import ../development/tools/parsing/bison/bison-1.875.nix { inherit fetchurl stdenv m4; }; @@ -3510,17 +3544,10 @@ let installLocales = getPkgConfig "glibc" "locales" false; }; - glibc29HeadersCross = cross: import ../development/libraries/glibc-2.9/headers.nix { - inherit fetchurl stdenv; - kernelHeaders = kernelHeadersCross cross; - }; - - glibcHeadersCross = cross: glibc29HeadersCross cross; - glibc29Cross = cross : makeOverridable (import ../development/libraries/glibc-2.9) { inherit fetchurl stdenv cross; binutilsCross = binutilsCross cross; - gccCross = gccCross cross; + gccCross = gccCrossStageStatic cross; kernelHeaders = kernelHeadersCross cross; installLocales = getPkgConfig "glibc" "locales" false; }; From 2412034611e6a60780a0d322d521de7301263234 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Llu=C3=ADs=20Batlle=20i=20Rossell?= Date: Sun, 15 Nov 2009 05:39:22 +0000 Subject: [PATCH 014/232] Cleaning a bit around gcc43_RealCross svn path=/nixpkgs/branches/stdenv-updates/; revision=18352 --- pkgs/top-level/all-packages.nix | 19 +++---------------- 1 file changed, 3 insertions(+), 16 deletions(-) diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index a183ba09717..cfd22aa89e4 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -1898,29 +1898,16 @@ let glibcHeadersCross = glibcCross cross; profiledCompiler = false; enableMultilib = true; - langCC = false; + crossStageStatic = false; }; gccCrossStageStatic = cross: (gcc43_realCross cross).override { crossStageStatic = true; + langCC = false; }; - /* - gccCrossStageStatic = cross: wrapGCCCross { - gcc = (gcc43_realCross cross).override { - crossStageStatic = true; - }; - #libc = glibc; - libc = stdenv.gcc.libc; - binutils = binutilsCross cross; - inherit cross; - }; - */ - gccCrossStageFinal = cross: wrapGCCCross { - gcc = (gcc43_realCross cross).override { - crossStageStatic = false; - }; + gcc = gcc43_realCross cross; libc = glibcCross cross; binutils = binutilsCross cross; inherit cross; From 307cbd7b3b24b1e41a1935329670c78f6677d2ed Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Llu=C3=ADs=20Batlle=20i=20Rossell?= Date: Sun, 15 Nov 2009 16:48:36 +0000 Subject: [PATCH 015/232] First attempt for the full stdenvCross. I think that it should work. The toolchain for arm built. svn path=/nixpkgs/branches/stdenv-updates/; revision=18355 --- pkgs/development/compilers/gcc-4.3/builder.sh | 41 +++++++++++++++---- .../development/compilers/gcc-4.3/default.nix | 13 ++++-- .../compilers/gcc-4.3/no-sys-dirs.patch | 10 ++--- pkgs/stdenv/generic/default.nix | 4 +- pkgs/stdenv/linux/default.nix | 7 ++++ pkgs/top-level/all-packages.nix | 3 +- 6 files changed, 59 insertions(+), 19 deletions(-) diff --git a/pkgs/development/compilers/gcc-4.3/builder.sh b/pkgs/development/compilers/gcc-4.3/builder.sh index 22cb621e0f7..75f0f35d83e 100644 --- a/pkgs/development/compilers/gcc-4.3/builder.sh +++ b/pkgs/development/compilers/gcc-4.3/builder.sh @@ -31,6 +31,7 @@ if test "$noSysDirs" = "1"; then export NIX_FIXINC_DUMMY=/usr/include fi + extraCFlags="-g0 -I$gmp/include -I$mpfr/include $extraCFlags" extraLDFlags="--strip-debug $extraLDFlags" @@ -39,14 +40,37 @@ if test "$noSysDirs" = "1"; then export NIX_EXTRA_LDFLAGS="$NIX_EXTRA_LDFLAGS -Wl,$i" done - makeFlagsArray=( \ - "${makeFlagsArray[@]}" \ - NATIVE_SYSTEM_HEADER_DIR="$NIX_FIXINC_DUMMY" \ - SYSTEM_HEADER_DIR="$NIX_FIXINC_DUMMY" \ - X_CFLAGS="$NIX_EXTRA_CFLAGS $NIX_EXTRA_LDFLAGS" \ - LDFLAGS="$NIX_EXTRA_CFLAGS $NIX_EXTRA_LDFLAGS" \ - LDFLAGS_FOR_TARGET="$NIX_EXTRA_CFLAGS $NIX_EXTRA_LDFLAGS" \ - ) + set -x + if test -n "$cross"; then + if test -z "$crossStageStatic"; then + extraXCFlags="-B${glibcCross}/lib -idirafter ${glibcCross}/include" + extraXLDFlags="-L${glibcCross}/lib" + export NIX_EXTRA_CFLAGS_TARGET=$extraXCFlags + for i in $extraXLDFlags; do + export NIX_EXTRA_LDFLAGS_TARGET="$NIX_EXTRA_LDFLAGS_TARGET -Wl,$i" + done + fi + + makeFlagsArray=( \ + "${makeFlagsArray[@]}" \ + NATIVE_SYSTEM_HEADER_DIR="$NIX_FIXINC_DUMMY" \ + SYSTEM_HEADER_DIR="$NIX_FIXINC_DUMMY" \ + CFLAGS_FOR_TARGET="$NIX_EXTRA_CFLAGS_TARGET $NIX_EXTRA_LDFLAGS_TARGET" \ + LDFLAGS_FOR_TARGET="$NIX_EXTRA_CFLAGS_TARGET $NIX_EXTRA_LDFLAGS_TARGET" \ + ) + else + export NIX_EXTRA_CFLAGS_TARGET=$NIX_EXTRA_CFLAGS + export NIX_EXTRA_LDFLAGS_TARGET=$NIX_EXTRA_LDFLAGS + makeFlagsArray=( \ + "${makeFlagsArray[@]}" \ + NATIVE_SYSTEM_HEADER_DIR="$NIX_FIXINC_DUMMY" \ + SYSTEM_HEADER_DIR="$NIX_FIXINC_DUMMY" \ + CFLAGS_FOR_BUILD="$NIX_EXTRA_X_CFLAGS $NIX_EXTRA_X_LDFLAGS" \ + CFLAGS_FOR_TARGET="$NIX_EXTRA_X_CFLAGS $NIX_EXTRA_X_LDFLAGS" \ + LDFLAGS_FOR_BUILD="$NIX_EXTRA_CFLAGS $NIX_EXTRA_LDFLAGS" \ + LDFLAGS_FOR_TARGET="$NIX_EXTRA_X_CFLAGS $NIX_EXTRA_X_LDFLAGS" \ + ) + fi if test -n "$cross" -a "$crossStageStatic" == 1; then # We don't want the gcc build to assume there will be a libc providing @@ -61,6 +85,7 @@ if test "$noSysDirs" = "1"; then LIMITS_H_TEST=true \ ) fi + set +x fi if test -n "$cross"; then diff --git a/pkgs/development/compilers/gcc-4.3/default.nix b/pkgs/development/compilers/gcc-4.3/default.nix index cdb3bce4125..66a88f2148a 100644 --- a/pkgs/development/compilers/gcc-4.3/default.nix +++ b/pkgs/development/compilers/gcc-4.3/default.nix @@ -12,7 +12,7 @@ , name ? "gcc" , cross ? null , binutilsCross ? null -, glibcHeadersCross ? null +, glibcCross ? null , crossStageStatic ? true }: @@ -34,8 +34,12 @@ let " --disable-threads " + " --disable-libmudflap " + " --disable-libgomp " + - " --disable-shared" else - " --with-headers=${glibcHeadersCross}" + " --disable-shared" + else + " --with-headers=${glibcCross}/include" + + " --enable-__cxa_atexit" + + " --enable-long-long" + + " --enable-threads=posix" ); stageNameAddon = if (crossStageStatic) then "-stage-static" else "-stage-final"; @@ -72,7 +76,8 @@ stdenv.mkDerivation ({ ++ optional (noSysDirs && langFortran) ./no-sys-dirs-fortran.patch ++ optional langJava ./java-jvgenmain-link.patch; - inherit noSysDirs profiledCompiler staticCompiler cross crossStageStatic binutilsCross; + inherit noSysDirs profiledCompiler staticCompiler cross crossStageStatic + binutilsCross glibcCross; buildInputs = [texinfo gmp mpfr] ++ (optionals langTreelang [bison flex]) diff --git a/pkgs/development/compilers/gcc-4.3/no-sys-dirs.patch b/pkgs/development/compilers/gcc-4.3/no-sys-dirs.patch index 4d843891a03..69fa2c7de82 100644 --- a/pkgs/development/compilers/gcc-4.3/no-sys-dirs.patch +++ b/pkgs/development/compilers/gcc-4.3/no-sys-dirs.patch @@ -74,7 +74,7 @@ diff -ru gcc-4.3.1-orig/libgomp/configure gcc-4.3.1/libgomp/configure +# Ugly hack to get libmudflap (and possibly other libraries) to build. +# Libtool filters out \`-B' flags when linking (why?), so the \`-B' flag +# to Glibc gets lost. Here we forcibly add it to any invocation. -+CC="\$CC $NIX_EXTRA_CFLAGS $NIX_EXTRA_LDFLAGS" ++CC="\$CC $NIX_EXTRA_CFLAGS_TARGET $NIX_EXTRA_LDFLAGS_TARGET" + # Is the compiler the GNU compiler? with_gcc=$GCC @@ -90,7 +90,7 @@ diff -ru gcc-4.3.1-orig/libmudflap/configure gcc-4.3.1/libmudflap/configure +# Ugly hack to get libmudflap (and possibly other libraries) to build. +# Libtool filters out \`-B' flags when linking (why?), so the \`-B' flag +# to Glibc gets lost. Here we forcibly add it to any invocation. -+CC="\$CC $NIX_EXTRA_CFLAGS $NIX_EXTRA_LDFLAGS" ++CC="\$CC $NIX_EXTRA_CFLAGS_TARGET $NIX_EXTRA_LDFLAGS_TARGET" + # Is the compiler the GNU compiler? with_gcc=$GCC @@ -106,7 +106,7 @@ diff -ru gcc-4.3.1-orig/libssp/configure gcc-4.3.1/libssp/configure +# Ugly hack to get libmudflap (and possibly other libraries) to build. +# Libtool filters out \`-B' flags when linking (why?), so the \`-B' flag +# to Glibc gets lost. Here we forcibly add it to any invocation. -+CC="\$CC $NIX_EXTRA_CFLAGS $NIX_EXTRA_LDFLAGS" ++CC="\$CC $NIX_EXTRA_CFLAGS_TARGET $NIX_EXTRA_LDFLAGS_TARGET" + # Is the compiler the GNU compiler? with_gcc=$GCC @@ -120,10 +120,10 @@ diff -ru gcc-4.3.1-orig/Makefile.in gcc-4.3.1/Makefile.in ### +CFLAGS += $(NIX_EXTRA_CFLAGS) -+CPPFLAGS_FOR_TARGET += $(NIX_EXTRA_CFLAGS) ++CPPFLAGS_FOR_TARGET += $(NIX_EXTRA_CFLAGS_TARGET) +CXXFLAGS += $(NIX_EXTRA_CFLAGS) +LDFLAGS += $(NIX_EXTRA_LDFLAGS) -+LDFLAGS_FOR_TARGET += $(NIX_EXTRA_LDFLAGS) ++LDFLAGS_FOR_TARGET += $(NIX_EXTRA_LDFLAGS_TARGET) +BOOT_CFLAGS += $(NIX_EXTRA_CFLAGS) +BOOT_LDFLAGS += $(NIX_EXTRA_LDFLAGS) + diff --git a/pkgs/stdenv/generic/default.nix b/pkgs/stdenv/generic/default.nix index de525d479f9..b1afe060b73 100644 --- a/pkgs/stdenv/generic/default.nix +++ b/pkgs/stdenv/generic/default.nix @@ -1,4 +1,5 @@ { system, name, preHook ? null, postHook ? null, initialPath, gcc, shell +, cross ? null , param1 ? "", param2 ? "", param3 ? "", param4 ? "", param5 ? "" , extraAttrs ? {} @@ -17,7 +18,7 @@ let result = derivation { - inherit system name; + inherit system cross name; builder = shell; @@ -52,6 +53,7 @@ let ["-e" (if attrs ? builder then attrs.builder else ./default-builder.sh)]; stdenv = result; system = result.system; + cross = result.cross; }) ) # The meta attribute is passed in the resulting attribute set, diff --git a/pkgs/stdenv/linux/default.nix b/pkgs/stdenv/linux/default.nix index ca2ddd85a01..87df78fafb4 100644 --- a/pkgs/stdenv/linux/default.nix +++ b/pkgs/stdenv/linux/default.nix @@ -219,6 +219,13 @@ rec { [ (stdenvLinuxBoot3Pkgs.binutilsCross cross) (stdenvLinuxBoot3Pkgs.gccCrossStageFinal cross) ]; + postHook = if (cross != null) then + (builtins.toFile "cross-posthook.sh" '' + configureFlags="$configureFlags --build=${system} --host=${cross}" + dontStrip=1 + '') + else null; + gcc = wrapGCC rec { inherit (stdenvLinuxBoot2Pkgs) binutils; inherit (stdenvLinuxBoot3Pkgs) coreutils; diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index cfd22aa89e4..1a084e206b9 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -1895,7 +1895,7 @@ let #stdenv = overrideGCC stdenv (wrapGCCWith (import ../build-support/gcc-wrapper) glibc_multi gcc); inherit stdenv fetchurl texinfo gmp mpfr noSysDirs cross; binutilsCross = binutilsCross cross; - glibcHeadersCross = glibcCross cross; + glibcCross = glibcCross cross; profiledCompiler = false; enableMultilib = true; crossStageStatic = false; @@ -1904,6 +1904,7 @@ let gccCrossStageStatic = cross: (gcc43_realCross cross).override { crossStageStatic = true; langCC = false; + glibcCross = null; }; gccCrossStageFinal = cross: wrapGCCCross { From 81f695899a642508bf7a600573e2090b46e6b2a4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Llu=C3=ADs=20Batlle=20i=20Rossell?= Date: Sun, 15 Nov 2009 17:48:10 +0000 Subject: [PATCH 016/232] I think I fixed the gcc builder for the usual stdenv, I broke in the commit before. svn path=/nixpkgs/branches/stdenv-updates/; revision=18356 --- pkgs/development/compilers/gcc-4.3/builder.sh | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/pkgs/development/compilers/gcc-4.3/builder.sh b/pkgs/development/compilers/gcc-4.3/builder.sh index 75f0f35d83e..2a2a9e94e00 100644 --- a/pkgs/development/compilers/gcc-4.3/builder.sh +++ b/pkgs/development/compilers/gcc-4.3/builder.sh @@ -40,7 +40,6 @@ if test "$noSysDirs" = "1"; then export NIX_EXTRA_LDFLAGS="$NIX_EXTRA_LDFLAGS -Wl,$i" done - set -x if test -n "$cross"; then if test -z "$crossStageStatic"; then extraXCFlags="-B${glibcCross}/lib -idirafter ${glibcCross}/include" @@ -65,10 +64,10 @@ if test "$noSysDirs" = "1"; then "${makeFlagsArray[@]}" \ NATIVE_SYSTEM_HEADER_DIR="$NIX_FIXINC_DUMMY" \ SYSTEM_HEADER_DIR="$NIX_FIXINC_DUMMY" \ - CFLAGS_FOR_BUILD="$NIX_EXTRA_X_CFLAGS $NIX_EXTRA_X_LDFLAGS" \ - CFLAGS_FOR_TARGET="$NIX_EXTRA_X_CFLAGS $NIX_EXTRA_X_LDFLAGS" \ + CFLAGS_FOR_BUILD="$NIX_EXTRA_CFLAGS $NIX_EXTRA_LDFLAGS" \ + CFLAGS_FOR_TARGET="$NIX_EXTRA_CFLAGS $NIX_EXTRA_LDFLAGS" \ LDFLAGS_FOR_BUILD="$NIX_EXTRA_CFLAGS $NIX_EXTRA_LDFLAGS" \ - LDFLAGS_FOR_TARGET="$NIX_EXTRA_X_CFLAGS $NIX_EXTRA_X_LDFLAGS" \ + LDFLAGS_FOR_TARGET="$NIX_EXTRA_CFLAGS $NIX_EXTRA_LDFLAGS" \ ) fi @@ -85,7 +84,6 @@ if test "$noSysDirs" = "1"; then LIMITS_H_TEST=true \ ) fi - set +x fi if test -n "$cross"; then From d06dce4e42ef63b6f0ca3cc8c15a246164be957a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Llu=C3=ADs=20Batlle=20i=20Rossell?= Date: Sun, 15 Nov 2009 19:07:21 +0000 Subject: [PATCH 017/232] Fixing some conflict on the variable 'cross'. svn path=/nixpkgs/branches/stdenv-updates/; revision=18357 --- pkgs/stdenv/generic/default.nix | 6 ++++-- pkgs/stdenv/linux/default.nix | 2 +- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/pkgs/stdenv/generic/default.nix b/pkgs/stdenv/generic/default.nix index b1afe060b73..29cbb0de410 100644 --- a/pkgs/stdenv/generic/default.nix +++ b/pkgs/stdenv/generic/default.nix @@ -18,7 +18,7 @@ let result = derivation { - inherit system cross name; + inherit system name cross; builder = shell; @@ -53,7 +53,9 @@ let ["-e" (if attrs ? builder then attrs.builder else ./default-builder.sh)]; stdenv = result; system = result.system; - cross = result.cross; + # The env variable 'cross' is used in all the crosscompiler + # bootstrapping in another sense + crossTarget = result.cross; }) ) # The meta attribute is passed in the resulting attribute set, diff --git a/pkgs/stdenv/linux/default.nix b/pkgs/stdenv/linux/default.nix index 87df78fafb4..228c626341e 100644 --- a/pkgs/stdenv/linux/default.nix +++ b/pkgs/stdenv/linux/default.nix @@ -208,7 +208,7 @@ rec { name = "stdenv-linux" + stdenvLinuxBoot3Pkgs.lib.optionalString (cross != null) "-${cross}"; - inherit system; + inherit system cross; preHook = builtins.toFile "prehook.sh" commonPreHook; From 3c4edd6bfa1ec120c175c8b136eb39cb2bdf6dc5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Llu=C3=ADs=20Batlle=20i=20Rossell?= Date: Sun, 15 Nov 2009 21:36:13 +0000 Subject: [PATCH 018/232] Fixing the gcc cross wrapper (removing some /usr/) so it gives proper linking. svn path=/nixpkgs/branches/stdenv-updates/; revision=18361 --- pkgs/build-support/gcc-cross-wrapper/builder.sh | 15 ++++----------- 1 file changed, 4 insertions(+), 11 deletions(-) diff --git a/pkgs/build-support/gcc-cross-wrapper/builder.sh b/pkgs/build-support/gcc-cross-wrapper/builder.sh index 0e8aa69fa8e..d9136ed58ce 100644 --- a/pkgs/build-support/gcc-cross-wrapper/builder.sh +++ b/pkgs/build-support/gcc-cross-wrapper/builder.sh @@ -5,17 +5,10 @@ source $stdenv/setup cflagsCompile="-B$out/bin/" if test -z "$nativeLibc"; then - # The "-B$glibc/lib/" flag is a quick hack to force gcc to link - # against the crt1.o from our own glibc, rather than the one in - # /usr/lib. The real solution is of course to prevent those paths - # from being used by gcc in the first place. - # The dynamic linker is passed in `ldflagsBefore' to allow - # explicit overrides of the dynamic linker by callers to gcc/ld - # (the *last* value counts, so ours should come first). - cflagsCompile="$cflagsCompile -B$libc/usr/lib/ -isystem $libc/usr/include" - ldflags="$ldflags -L$libc/usr/lib" - #ldflagsBefore="-dynamic-linker $libc/lib/ld-linux.so.2" - ldflagsBefore="-dynamic-linker $libc/lib/ld-uClibc.so.0" + cflagsCompile="$cflagsCompile -B$libc/lib/ -isystem $libc/include" + ldflags="$ldflags -L$libc/lib" + ldflagsBefore="-dynamic-linker $libc/lib/ld-linux.so.?" + #ldflagsBefore="-dynamic-linker $libc/lib/ld-uClibc.so.0" fi if test -n "$nativeTools"; then From d82c7e0a69d186b3c83736fd5c2aed7b12a3f7dc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Llu=C3=ADs=20Batlle=20i=20Rossell?= Date: Sun, 15 Nov 2009 22:56:06 +0000 Subject: [PATCH 019/232] Adding uboot cross compilation. I had to adapt the package a bit, because it does not use autotools. svn path=/nixpkgs/branches/stdenv-updates/; revision=18362 --- pkgs/misc/uboot/default.nix | 8 ++++++-- pkgs/top-level/all-packages.nix | 6 +++++- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/pkgs/misc/uboot/default.nix b/pkgs/misc/uboot/default.nix index eeb76df6221..ac3f49035a1 100644 --- a/pkgs/misc/uboot/default.nix +++ b/pkgs/misc/uboot/default.nix @@ -1,6 +1,6 @@ {stdenv, fetchurl, unzip}: -assert stdenv.system == "armv5tel-linux"; +# assert stdenv.system == "armv5tel-linux"; # All this file is made for the Marvell Sheevaplug @@ -34,7 +34,11 @@ stdenv.mkDerivation { buildPhase = '' unset src - make clean all + if test -z "$crossTarget"; then + make clean all + else + make clean all ARCH=arm CROSS_COMPILE=$crossTarget- + fi ''; buildInputs = [ unzip ]; diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 1a084e206b9..60c39c31bfe 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -6096,10 +6096,14 @@ let inherit (xlibs) libX11 xproto; };*/ - uboot = import ../misc/uboot { + uboot = makeOverridable (import ../misc/uboot) { inherit fetchurl stdenv unzip; }; + ubootArm = uboot.override { + stdenv = stdenvCross "armv5tel-unknown-linux-gnueabi"; + }; + uclibc = import ../os-specific/linux/uclibc { inherit fetchurl stdenv kernelHeaders; }; From 2c7fa189fb2ac1c4ef689398ab13a4465448856a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Llu=C3=ADs=20Batlle=20i=20Rossell?= Date: Mon, 16 Nov 2009 23:21:13 +0000 Subject: [PATCH 020/232] Making the definition of the cross compiling target an attribute set. svn path=/nixpkgs/branches/stdenv-updates/; revision=18378 --- .../gcc-cross-wrapper/builder.sh | 22 +++++++++---------- .../gcc-cross-wrapper/default.nix | 3 ++- pkgs/development/compilers/gcc-4.3/builder.sh | 14 ++++++------ .../development/compilers/gcc-4.3/default.nix | 7 +++--- .../libraries/glibc-2.9/builder.sh | 10 ++++----- .../libraries/glibc-2.9/default.nix | 7 +++--- .../tools/misc/binutils/default.nix | 4 ++-- .../linux/kernel-headers/2.6.28.nix | 11 +++++----- pkgs/stdenv/generic/default.nix | 4 ++-- pkgs/stdenv/linux/default.nix | 4 ++-- pkgs/top-level/all-packages.nix | 7 +++++- 11 files changed, 51 insertions(+), 42 deletions(-) diff --git a/pkgs/build-support/gcc-cross-wrapper/builder.sh b/pkgs/build-support/gcc-cross-wrapper/builder.sh index d9136ed58ce..ae5e92e5de6 100644 --- a/pkgs/build-support/gcc-cross-wrapper/builder.sh +++ b/pkgs/build-support/gcc-cross-wrapper/builder.sh @@ -60,24 +60,24 @@ mkGccWrapper() { chmod +x "$dst" } -mkGccWrapper $out/bin/$cross-gcc $gccPath/$cross-gcc +mkGccWrapper $out/bin/$crossConfig-gcc $gccPath/$crossConfig-gcc #ln -s gcc $out/bin/cc -mkGccWrapper $out/bin/g++ $gccPath/g++ -ln -s g++ $out/bin/c++ +mkGccWrapper $out/bin/$crossConfig-g++ $gccPath/$crossConfig-g++ +ln -s $crossConfig-g++ $out/bin/$crossConfig-c++ -mkGccWrapper $out/bin/g77 $gccPath/g77 -ln -s g77 $out/bin/f77 +mkGccWrapper $out/bin/$crossConfig-g77 $gccPath/$crossConfig-g77 +ln -s $crossConfig-g77 $out/bin/$crossConfig-f77 -ln -s $binutils/bin/$cross-ar $out/bin/$cross-ar -ln -s $binutils/bin/$cross-as $out/bin/$cross-as -ln -s $binutils/bin/$cross-nm $out/bin/$cross-nm -ln -s $binutils/bin/$cross-strip $out/bin/$cross-strip +ln -s $binutils/bin/$crossConfig-ar $out/bin/$crossConfig-ar +ln -s $binutils/bin/$crossConfig-as $out/bin/$crossConfig-as +ln -s $binutils/bin/$crossConfig-nm $out/bin/$crossConfig-nm +ln -s $binutils/bin/$crossConfig-strip $out/bin/$crossConfig-strip # Make a wrapper around the linker. -doSubstitute "$ldWrapper" "$out/bin/$cross-ld" -chmod +x "$out/bin/$cross-ld" +doSubstitute "$ldWrapper" "$out/bin/$crossConfig-ld" +chmod +x "$out/bin/$crossConfig-ld" # Emit a setup hook. Also store the path to the original GCC and diff --git a/pkgs/build-support/gcc-cross-wrapper/default.nix b/pkgs/build-support/gcc-cross-wrapper/default.nix index d811d82c85b..8acdb8356c0 100644 --- a/pkgs/build-support/gcc-cross-wrapper/default.nix +++ b/pkgs/build-support/gcc-cross-wrapper/default.nix @@ -20,7 +20,8 @@ stdenv.mkDerivation { ldWrapper = ./ld-wrapper.sh; utils = ./utils.sh; addFlags = ./add-flags; - inherit nativeTools nativeLibc nativePrefix gcc libc binutils cross; + inherit nativeTools nativeLibc nativePrefix gcc libc binutils; + crossConfig = if (cross != null) then cross.config else null; name = if name == "" then gcc.name else name; langC = if nativeTools then true else gcc.langC; langCC = if nativeTools then true else gcc.langCC; diff --git a/pkgs/development/compilers/gcc-4.3/builder.sh b/pkgs/development/compilers/gcc-4.3/builder.sh index 2a2a9e94e00..183575edf19 100644 --- a/pkgs/development/compilers/gcc-4.3/builder.sh +++ b/pkgs/development/compilers/gcc-4.3/builder.sh @@ -40,7 +40,7 @@ if test "$noSysDirs" = "1"; then export NIX_EXTRA_LDFLAGS="$NIX_EXTRA_LDFLAGS -Wl,$i" done - if test -n "$cross"; then + if test -n "$crossConfig"; then if test -z "$crossStageStatic"; then extraXCFlags="-B${glibcCross}/lib -idirafter ${glibcCross}/include" extraXLDFlags="-L${glibcCross}/lib" @@ -71,7 +71,7 @@ if test "$noSysDirs" = "1"; then ) fi - if test -n "$cross" -a "$crossStageStatic" == 1; then + if test -n "$crossConfig" -a "$crossStageStatic" == 1; then # We don't want the gcc build to assume there will be a libc providing # limits.h in this stagae makeFlagsArray=( \ @@ -86,8 +86,8 @@ if test "$noSysDirs" = "1"; then fi fi -if test -n "$cross"; then - # The host stripp will destroy everything in the target binaries otherwise +if test -n "$crossConfig"; then + # The host strip will destroy everything in the target binaries otherwise dontStrip=1 fi @@ -126,13 +126,13 @@ postInstall() { done # gcc will look for the binutils there, called through collect2 - if test -n "$cross"; then - ln -s $binutilsCross/$cross/bin $out/$cross/bin + if test -n "$crossConfig"; then + ln -s $binutilsCross/$crossConfig/bin $out/$crossConfig/bin fi } -if test -z "$cross"; then +if test -z "$crossConfig"; then if test -z "$profiledCompiler"; then buildFlags="bootstrap $buildFlags" else diff --git a/pkgs/development/compilers/gcc-4.3/default.nix b/pkgs/development/compilers/gcc-4.3/default.nix index 66a88f2148a..898d9b0b478 100644 --- a/pkgs/development/compilers/gcc-4.3/default.nix +++ b/pkgs/development/compilers/gcc-4.3/default.nix @@ -27,7 +27,7 @@ with stdenv.lib; let version = "4.3.4"; crossConfigureFlags = - "--target=${cross}" + + "--target=${cross.config}" + (if crossStageStatic then " --disable-libssp --disable-nls" + " --without-headers" + @@ -43,7 +43,7 @@ let ); stageNameAddon = if (crossStageStatic) then "-stage-static" else "-stage-final"; - crossNameAddon = if (cross != null) then "-${cross}" + stageNameAddon else ""; + crossNameAddon = if (cross != null) then "-${cross.config}" + stageNameAddon else ""; in @@ -76,8 +76,9 @@ stdenv.mkDerivation ({ ++ optional (noSysDirs && langFortran) ./no-sys-dirs-fortran.patch ++ optional langJava ./java-jvgenmain-link.patch; - inherit noSysDirs profiledCompiler staticCompiler cross crossStageStatic + inherit noSysDirs profiledCompiler staticCompiler crossStageStatic binutilsCross glibcCross; + crossConfig = if (cross != null) then cross.config else null; buildInputs = [texinfo gmp mpfr] ++ (optionals langTreelang [bison flex]) diff --git a/pkgs/development/libraries/glibc-2.9/builder.sh b/pkgs/development/libraries/glibc-2.9/builder.sh index 791be83b98e..ca89ffdc160 100644 --- a/pkgs/development/libraries/glibc-2.9/builder.sh +++ b/pkgs/development/libraries/glibc-2.9/builder.sh @@ -29,7 +29,7 @@ preConfigure() { tar xvjf "$srcPorts" - if test -n "$cross"; then + if test -n "$crossConfig"; then sed -i s/-lgcc_eh//g Makeconfig fi @@ -37,16 +37,16 @@ preConfigure() { cd build configureScript=../configure - if test -n "$cross"; then + if test -n "$crossConfig"; then cat > config.cache << "EOF" libc_cv_forced_unwind=yes libc_cv_c_cleanup=yes libc_cv_gnu89_inline=yes EOF export BUILD_CC=gcc - export CC="${cross}-gcc" - export AR="${cross}-ar" - export RANLIB="${cross}-ranlib" + export CC="${crossConfig}-gcc" + export AR="${crossConfig}-ar" + export RANLIB="${crossConfig}-ranlib" configureFlags="${configureFlags} --cache-file=config.cache" # The host stripp will destroy everything in the target binaries otherwise diff --git a/pkgs/development/libraries/glibc-2.9/default.nix b/pkgs/development/libraries/glibc-2.9/default.nix index ff47696e20b..9f02fa33e0d 100644 --- a/pkgs/development/libraries/glibc-2.9/default.nix +++ b/pkgs/development/libraries/glibc-2.9/default.nix @@ -8,7 +8,7 @@ stdenv.mkDerivation rec { name = "glibc-2.9" + - stdenv.lib.optionalString (cross != null) "-${cross}"; + stdenv.lib.optionalString (cross != null) "-${cross.config}"; builder = ./builder.sh; @@ -22,7 +22,8 @@ stdenv.mkDerivation rec { sha256 = "0r2sn527wxqifi63di7ns9wbjh1cainxn978w178khhy7yw9fk42"; }; - inherit kernelHeaders installLocales cross; + inherit kernelHeaders installLocales; + crossConfig = if (cross != null) then cross.config else null; inherit (stdenv) is64bit; @@ -67,7 +68,7 @@ stdenv.mkDerivation rec { "--with-headers=${kernelHeaders}/include" (if profilingLibraries then "--enable-profile" else "--disable-profile") ] ++ stdenv.lib.optionals (cross != null) [ - "--host=${cross}" + "--host=${cross.config}" "--build=${stdenv.system}" "--with-tls" "--enable-kernel=2.6.0" diff --git a/pkgs/development/tools/misc/binutils/default.nix b/pkgs/development/tools/misc/binutils/default.nix index d1178d12bcd..6dc45081bef 100644 --- a/pkgs/development/tools/misc/binutils/default.nix +++ b/pkgs/development/tools/misc/binutils/default.nix @@ -4,7 +4,7 @@ let basename = "binutils-2.20"; in stdenv.mkDerivation rec { - name = basename + stdenv.lib.optionalString (cross != null) "-${cross}"; + name = basename + stdenv.lib.optionalString (cross != null) "-${cross.config}"; src = fetchurl { url = "mirror://gnu/binutils/${basename}.tar.bz2"; @@ -28,7 +28,7 @@ stdenv.mkDerivation rec { ''; configureFlags = "--disable-werror" # needed for dietlibc build - + stdenv.lib.optionalString (cross != null) " --target=${cross}"; + + stdenv.lib.optionalString (cross != null) " --target=${cross.config}"; meta = { description = "GNU Binutils, tools for manipulating binaries (linker, assembler, etc.)"; diff --git a/pkgs/os-specific/linux/kernel-headers/2.6.28.nix b/pkgs/os-specific/linux/kernel-headers/2.6.28.nix index 9a2e84cf2a3..69849112d81 100644 --- a/pkgs/os-specific/linux/kernel-headers/2.6.28.nix +++ b/pkgs/os-specific/linux/kernel-headers/2.6.28.nix @@ -14,11 +14,10 @@ stdenv.mkDerivation { sha256 = "0hifjh75sinifr5138v22zwbpqln6lhn65k8b57a1dyzlqca7cl9"; }; - inherit cross; + crossConfig = if (cross != null) then cross.config else null; platform = - if cross == "armv5tel-unknown-linux-gnueabi" then "arm" else - assert(cross == null); + if cross != null then cross.arch else if stdenv.system == "i686-linux" then "i386" else if stdenv.system == "x86_64-linux" then "x86_64" else if stdenv.system == "powerpc-linux" then "powerpc" else @@ -29,14 +28,16 @@ stdenv.mkDerivation { buildInputs = [perl]; extraIncludeDirs = - if stdenv.system == "powerpc-linux" then ["ppc"] else []; + if cross != null then + (if cross.arch == "powerpc" then ["ppc"] else []) + else if stdenv.system == "powerpc-linux" then ["ppc"] else []; patchPhase = '' sed -i '/scsi/d' include/Kbuild ''; buildPhase = '' - if test -n "$cross"; then + if test -n "$crossConfig"; then export ARCH=$platform fi make mrproper headers_check diff --git a/pkgs/stdenv/generic/default.nix b/pkgs/stdenv/generic/default.nix index 29cbb0de410..a8eab154db4 100644 --- a/pkgs/stdenv/generic/default.nix +++ b/pkgs/stdenv/generic/default.nix @@ -18,7 +18,7 @@ let result = derivation { - inherit system name cross; + inherit system name; builder = shell; @@ -55,7 +55,7 @@ let system = result.system; # The env variable 'cross' is used in all the crosscompiler # bootstrapping in another sense - crossTarget = result.cross; + crossTarget = if (cross != null) then cross.config else null; }) ) # The meta attribute is passed in the resulting attribute set, diff --git a/pkgs/stdenv/linux/default.nix b/pkgs/stdenv/linux/default.nix index 228c626341e..9a90e4b28df 100644 --- a/pkgs/stdenv/linux/default.nix +++ b/pkgs/stdenv/linux/default.nix @@ -206,7 +206,7 @@ rec { # dependency (`nix-store -qR') on bootstrapTools. stdenvLinux = import ../generic { name = "stdenv-linux" + - stdenvLinuxBoot3Pkgs.lib.optionalString (cross != null) "-${cross}"; + stdenvLinuxBoot3Pkgs.lib.optionalString (cross != null) "-${cross.config}"; inherit system cross; @@ -221,7 +221,7 @@ rec { postHook = if (cross != null) then (builtins.toFile "cross-posthook.sh" '' - configureFlags="$configureFlags --build=${system} --host=${cross}" + configureFlags="$configureFlags --build=${system} --host=${cross.config}" dontStrip=1 '') else null; diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 60c39c31bfe..22300675ed8 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -2720,7 +2720,12 @@ let bisonArm = import ../development/tools/parsing/bison/bison-2.3.nix { inherit fetchurl m4; - stdenv = stdenvCross "armv5tel-unknown-linux-gnueabi"; + stdenv = stdenvCross { + config = "armv5tel-unknown-linux-gnueabi"; + bigEndian = false; + arch = "arm"; + float = "soft"; + }; }; bison1875 = import ../development/tools/parsing/bison/bison-1.875.nix { From 0c631f61819e680bc689d432e6c67e4e0da294fb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Llu=C3=ADs=20Batlle=20i=20Rossell?= Date: Tue, 17 Nov 2009 21:14:57 +0000 Subject: [PATCH 021/232] Trying to move all stdenv cross-compiling details out of the stdenv expression, into a stdenv adapater. svn path=/nixpkgs/branches/stdenv-updates/; revision=18397 --- .../gcc-cross-wrapper/default.nix | 4 ++++ .../gcc-cross-wrapper/setup-hook.sh | 3 +++ pkgs/stdenv/adapters.nix | 12 +++++++++++ pkgs/stdenv/default.nix | 4 ++-- pkgs/stdenv/generic/default.nix | 4 ---- pkgs/stdenv/linux/default.nix | 20 ++++--------------- pkgs/top-level/all-packages.nix | 12 ++++------- 7 files changed, 29 insertions(+), 30 deletions(-) diff --git a/pkgs/build-support/gcc-cross-wrapper/default.nix b/pkgs/build-support/gcc-cross-wrapper/default.nix index 8acdb8356c0..a9042dddf19 100644 --- a/pkgs/build-support/gcc-cross-wrapper/default.nix +++ b/pkgs/build-support/gcc-cross-wrapper/default.nix @@ -30,4 +30,8 @@ stdenv.mkDerivation { meta = if gcc != null then gcc.meta else { description = "System C compiler wrapper"; }; + + passthru = { + inherit cross; + }; } diff --git a/pkgs/build-support/gcc-cross-wrapper/setup-hook.sh b/pkgs/build-support/gcc-cross-wrapper/setup-hook.sh index 7a7ea822691..e4034820fb3 100644 --- a/pkgs/build-support/gcc-cross-wrapper/setup-hook.sh +++ b/pkgs/build-support/gcc-cross-wrapper/setup-hook.sh @@ -23,3 +23,6 @@ fi if test -n "@glibc@"; then PATH=$PATH:@glibc@/bin fi + +configureFlags="$configureFlags --build=$system --host=$crossConfig" +dontStrip=1 diff --git a/pkgs/stdenv/adapters.nix b/pkgs/stdenv/adapters.nix index db380366153..1191748fb56 100644 --- a/pkgs/stdenv/adapters.nix +++ b/pkgs/stdenv/adapters.nix @@ -107,6 +107,18 @@ rec { isStatic = true; } // {inherit fetchurl;}; + # Return a modified stdenv that adds a cross compiler to the + # builds. + makeStdenvCross = stdenv: binutilsCross : gccCross: stdenv // + { mkDerivation = args: stdenv.mkDerivation (args // { + + buildInputs = + (if args ? buildInputs then args.buildInputs else []) + ++ [ gccCross binutilsCross ]; + + crossConfig = gccCross.cross.config; + }); + }; /* Modify a stdenv so that the specified attributes are added to every derivation returned by its mkDerivation function. diff --git a/pkgs/stdenv/default.nix b/pkgs/stdenv/default.nix index 19bbb371a31..ed8f0e39f5f 100644 --- a/pkgs/stdenv/default.nix +++ b/pkgs/stdenv/default.nix @@ -10,7 +10,7 @@ # system, e.g., cygwin and mingw builds on i686-cygwin. Most people # can ignore it. -{system, stdenvType ? system, allPackages ? import ../.., cross ? null}: +{system, stdenvType ? system, allPackages ? import ../..}: assert system != "i686-cygwin" -> system == stdenvType; @@ -41,7 +41,7 @@ rec { # Linux standard environment. - stdenvLinux = (import ./linux {inherit system allPackages cross;}).stdenvLinux; + stdenvLinux = (import ./linux {inherit system allPackages;}).stdenvLinux; # MinGW/MSYS standard environment. diff --git a/pkgs/stdenv/generic/default.nix b/pkgs/stdenv/generic/default.nix index a8eab154db4..de525d479f9 100644 --- a/pkgs/stdenv/generic/default.nix +++ b/pkgs/stdenv/generic/default.nix @@ -1,5 +1,4 @@ { system, name, preHook ? null, postHook ? null, initialPath, gcc, shell -, cross ? null , param1 ? "", param2 ? "", param3 ? "", param4 ? "", param5 ? "" , extraAttrs ? {} @@ -53,9 +52,6 @@ let ["-e" (if attrs ? builder then attrs.builder else ./default-builder.sh)]; stdenv = result; system = result.system; - # The env variable 'cross' is used in all the crosscompiler - # bootstrapping in another sense - crossTarget = if (cross != null) then cross.config else null; }) ) # The meta attribute is passed in the resulting attribute set, diff --git a/pkgs/stdenv/linux/default.nix b/pkgs/stdenv/linux/default.nix index 9a90e4b28df..cf67e707173 100644 --- a/pkgs/stdenv/linux/default.nix +++ b/pkgs/stdenv/linux/default.nix @@ -5,8 +5,7 @@ # ensuring purity of components produced by it. # The function defaults are for easy testing. -{system ? "i686-linux", allPackages ? import ../../top-level/all-packages.nix, -cross ? null}: +{system ? "i686-linux", allPackages ? import ../../top-level/all-packages.nix}: rec { @@ -205,26 +204,15 @@ rec { # When updating stdenvLinux, make sure that the result has no # dependency (`nix-store -qR') on bootstrapTools. stdenvLinux = import ../generic { - name = "stdenv-linux" + - stdenvLinuxBoot3Pkgs.lib.optionalString (cross != null) "-${cross.config}"; + name = "stdenv-linux"; - inherit system cross; + inherit system; preHook = builtins.toFile "prehook.sh" commonPreHook; initialPath = ((import ../common-path.nix) {pkgs = stdenvLinuxBoot3Pkgs;}) - ++ [stdenvLinuxBoot3Pkgs.patchelf] - ++ stdenvLinuxBoot3Pkgs.lib.optionals (cross != null) - [ (stdenvLinuxBoot3Pkgs.binutilsCross cross) - (stdenvLinuxBoot3Pkgs.gccCrossStageFinal cross) ]; - - postHook = if (cross != null) then - (builtins.toFile "cross-posthook.sh" '' - configureFlags="$configureFlags --build=${system} --host=${cross.config}" - dontStrip=1 - '') - else null; + ++ [stdenvLinuxBoot3Pkgs.patchelf]; gcc = wrapGCC rec { inherit (stdenvLinuxBoot2Pkgs) binutils; diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 22300675ed8..402f7c65767 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -213,15 +213,8 @@ let allPackages = args: import ./all-packages.nix ({ inherit config; } // args); }; - allStdenvsCross = cross : import ../stdenv { - inherit system stdenvType cross; - allPackages = args: import ./all-packages.nix ({ inherit config; } // args); - }; - defaultStdenv = allStdenvs.stdenv; - stdenvCross = cross : (allStdenvsCross cross).stdenv; - stdenv = if bootStdenv != null then bootStdenv else let changer = getConfig ["replaceStdenv"] null; @@ -244,7 +237,10 @@ let inherit (import ../stdenv/adapters.nix {inherit (pkgs) dietlibc fetchurl runCommand;}) overrideGCC overrideInStdenv overrideSetup useDietLibC useKlibc makeStaticBinaries addAttrsToDerivation - keepBuildTree cleanupBuildTree addCoverageInstrumentation; + keepBuildTree cleanupBuildTree addCoverageInstrumentation makeStdenvCross; + + stdenvCross = cross : makeStdenvCross stdenv (binutilsCross cross) + (gccCrossStageFinal cross); ### BUILD SUPPORT From e7c8e8da4f3f2b77c96eeebfe7e8d42a1dab85fa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Llu=C3=ADs=20Batlle=20i=20Rossell?= Date: Tue, 17 Nov 2009 22:58:48 +0000 Subject: [PATCH 022/232] I made the whole nixpkgs dependencies available to the cross compiler, no needing to keep a new tree of expressions apart for the expressions to get cross-compiled. I changed the whole way of using cross compilation with nixpkgs, which before was done through a simple adapter. Now the adapter became complex, and I've tried to avoid the most obvious recursivities. For example, the fetchurl expression should never be cross-compiled, as the gmp, mpfr, and some others, like some ncurses, perl, ... I made overrided copies of those necessary as perlNoCross, ncursesNoCross, as stdenvNoCross, keeping in mind that the stdenv (capable of cross compilation) is built upon stdenvNoCross using an adapter. So, to cross compile, instead of building using "nixpkgs/default.nix", you should build with your own "myarchiteture.nix", which should have contents like these, for example: import /etc/nixos/nixpkgs/default.nix { crossSystem = { config = "armv5tel-unknown-linux-gnueabi"; bigEndian = false; arch = "arm"; float = "soft"; }; } svn path=/nixpkgs/branches/stdenv-updates/; revision=18398 --- .../libraries/readline/readline6.nix | 2 +- pkgs/stdenv/adapters.nix | 40 +++++-- pkgs/top-level/all-packages.nix | 109 ++++++++++++------ 3 files changed, 105 insertions(+), 46 deletions(-) diff --git a/pkgs/development/libraries/readline/readline6.nix b/pkgs/development/libraries/readline/readline6.nix index 60232a8b80b..c789791b29f 100644 --- a/pkgs/development/libraries/readline/readline6.nix +++ b/pkgs/development/libraries/readline/readline6.nix @@ -8,7 +8,7 @@ stdenv.mkDerivation rec { sha256 = "1pn13j6f9376kwki69050x3zh62yb1w31l37rws5nwr5q02xk68i"; }; - propagatedBuildInputs = [ncurses]; + propagatedHostInputs = [ncurses]; patchFlags = "-p0"; patches = diff --git a/pkgs/stdenv/adapters.nix b/pkgs/stdenv/adapters.nix index 1191748fb56..edf3980cd78 100644 --- a/pkgs/stdenv/adapters.nix +++ b/pkgs/stdenv/adapters.nix @@ -109,16 +109,38 @@ rec { # Return a modified stdenv that adds a cross compiler to the # builds. - makeStdenvCross = stdenv: binutilsCross : gccCross: stdenv // - { mkDerivation = args: stdenv.mkDerivation (args // { - - buildInputs = - (if args ? buildInputs then args.buildInputs else []) - ++ [ gccCross binutilsCross ]; + makeStdenvCross = stdenv: cross: binutilsCross: gccCross: stdenv // + { mkDerivation = {name, buildInputs ? null, hostInputs ? null, + propagatedBuildInputs ? null, propagatedHostInputs ? null, ...}@args: let + buildInputsList = if (buildInputs != null) then + buildInputs else []; + hostInputsList = if (hostInputs != null) then + hostInputs else []; + propagatedBuildInputsList = if (propagatedBuildInputs != null) then + propagatedBuildInputs else []; + propagatedHostInputsList = if (propagatedHostInputs != null) then + propagatedHostInputs else []; + buildInputsDrvs = map (drv: drv.buildDrv) buildInputsList; + hostInputsDrvs = map (drv: drv.hostDrv) hostInputsList; + propagatedBuildInputsDrvs = map (drv: drv.buildDrv) propagatedBuildInputsList; + propagatedHostInputsDrvs = map (drv: drv.buildDrv) propagatedHostInputsList; + buildDrv = stdenv.mkDerivation (args // { + buildInputs = buildInputsDrvs ++ hostInputsDrvs; + propagatedBuildInputs = propagatedBuildInputsDrvs ++ + propagatedHostInputsDrvs; + }); + hostDrv = if (cross == null) then buildDrv else + stdenv.mkDerivation (args // { + name = name + "-" + cross.config; + buildInputs = buildInputsDrvs + ++ [ gccCross binutilsCross ]; - crossConfig = gccCross.cross.config; - }); - }; + crossConfig = cross.config; + }); + in hostDrv // { + inherit hostDrv buildDrv; + }; + } // { inherit cross; }; /* Modify a stdenv so that the specified attributes are added to every derivation returned by its mkDerivation function. diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 402f7c65767..a2333f1a6a6 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -33,6 +33,7 @@ # argument. Otherwise, it's read from $NIXPKGS_CONFIG or # ~/.nixpkgs/config.nix. config ? null +, crossSystem ? null }: @@ -215,7 +216,7 @@ let defaultStdenv = allStdenvs.stdenv; - stdenv = + stdenvNoCross = if bootStdenv != null then bootStdenv else let changer = getConfig ["replaceStdenv"] null; in if changer != null then @@ -225,6 +226,10 @@ let } else defaultStdenv; + stdenv = if (bootStdenv != null || crossSystem == null) then stdenvNoCross else + makeStdenvCross stdenvNoCross crossSystem (binutilsCross crossSystem) + (gccCrossStageFinal crossSystem); + # A stdenv capable of building 32-bit binaries. On x86_64-linux, # it uses GCC compiled with multilib support; on i686-linux, it's # just the plain stdenv. @@ -239,9 +244,6 @@ let useDietLibC useKlibc makeStaticBinaries addAttrsToDerivation keepBuildTree cleanupBuildTree addCoverageInstrumentation makeStdenvCross; - stdenvCross = cross : makeStdenvCross stdenv (binutilsCross cross) - (gccCrossStageFinal cross); - ### BUILD SUPPORT @@ -304,7 +306,8 @@ let # from being built. fetchurl = useFromStdenv "fetchurl" (import ../build-support/fetchurl { - inherit curl stdenv; + curl = curlNoCross; + stdenv = stdenvNoCross; }); # fetchurlBoot is used for curl and its dependencies in order to @@ -638,13 +641,19 @@ let inherit fetchurl stdenv; }; - curl = import ../tools/networking/curl { + curl = makeOverridable (import ../tools/networking/curl) { fetchurl = fetchurlBoot; inherit stdenv zlib openssl; zlibSupport = ! ((stdenv ? isDietLibC) || (stdenv ? isStatic)); sslSupport = ! ((stdenv ? isDietLibC) || (stdenv ? isStatic)); }; + curlNoCross = curl.override { + stdenv = stdenvNoCross; + zlib = zlib.override { stdenv = stdenvNoCross; }; + openssl = opensslNoCross; + }; + curlftpfs = import ../tools/networking/curlftpfs { inherit fetchurl stdenv fuse curl pkgconfig zlib glib; }; @@ -1066,10 +1075,14 @@ let readline nettools lsof procps; }; - lzma = import ../tools/compression/lzma { + lzma = makeOverridable (import ../tools/compression/lzma) { inherit fetchurl stdenv; }; + lzmaNoCross = lzma.override { + stdenv = stdenvNoCross; + }; + xz = import ../tools/compression/xz { inherit fetchurl stdenv lib; }; @@ -1883,13 +1896,17 @@ let gcc43 = useFromStdenv "gcc" gcc43_real; gcc43_real = lowPrio (wrapGCC (makeOverridable (import ../development/compilers/gcc-4.3) { - inherit fetchurl stdenv texinfo gmp mpfr noSysDirs; + inherit fetchurl gmp mpfr noSysDirs; + stdenv = stdenvNoCross; + texinfo = texinfoNoCross; profiledCompiler = true; })); gcc43_realCross = cross : makeOverridable (import ../development/compilers/gcc-4.3) { #stdenv = overrideGCC stdenv (wrapGCCWith (import ../build-support/gcc-wrapper) glibc_multi gcc); - inherit stdenv fetchurl texinfo gmp mpfr noSysDirs cross; + inherit fetchurl gmp mpfr noSysDirs cross; + stdenv = stdenvNoCross; + texinfo = texinfoNoCross; binutilsCross = binutilsCross cross; glibcCross = glibcCross cross; profiledCompiler = false; @@ -2326,7 +2343,8 @@ let import ../build-support/gcc-cross-wrapper { nativeTools = false; nativeLibc = false; - inherit stdenv gcc binutils libc shell name cross; + inherit gcc binutils libc shell name cross; + stdenv = stdenvNoCross; }; # FIXME: This is a specific hack for GCC-UPC. Eventually, we may @@ -2428,7 +2446,7 @@ let impureLibcPath = if stdenv.isLinux then null else "/usr"; }; - perl510 = import ../development/interpreters/perl-5.10 { + perl510 = makeOverridable (import ../development/interpreters/perl-5.10) { inherit stdenv; fetchurl = fetchurlBoot; impureLibcPath = if stdenv.isLinux then null else "/usr"; @@ -2436,6 +2454,11 @@ let perl = if system != "i686-cygwin" then perl510 else sysPerl; + perlNoCross = perl.override + { + stdenv = stdenvNoCross; + }; + # FIXME: unixODBC needs patching on Darwin (see darwinports) phpOld = import ../development/interpreters/php { inherit stdenv fetchurl flex bison libxml2 apacheHttpd; @@ -2708,22 +2731,13 @@ let }); binutilsCross = cross : import ../development/tools/misc/binutils { - inherit stdenv fetchurl cross; + inherit fetchurl cross; + stdenv = stdenvNoCross; noSysDirs = true; }; bison = bison23; - bisonArm = import ../development/tools/parsing/bison/bison-2.3.nix { - inherit fetchurl m4; - stdenv = stdenvCross { - config = "armv5tel-unknown-linux-gnueabi"; - bigEndian = false; - arch = "arm"; - float = "soft"; - }; - }; - bison1875 = import ../development/tools/parsing/bison/bison-1.875.nix { inherit fetchurl stdenv m4; }; @@ -2859,11 +2873,15 @@ let m4 = gnum4; + m4NoCross = m4.override { + stdenv = stdenvNoCross; + }; + global = import ../development/tools/misc/global { inherit fetchurl stdenv; }; - gnum4 = import ../development/tools/misc/gnum4 { + gnum4 = makeOverridable (import ../development/tools/misc/gnum4) { inherit fetchurl stdenv; }; @@ -3055,10 +3073,16 @@ let inherit fetchurl stdenv ncurses; }; - texinfo = import ../development/tools/misc/texinfo { + texinfo = makeOverridable (import ../development/tools/misc/texinfo) { inherit fetchurl stdenv ncurses lzma; }; + texinfoNoCross = texinfo.override { + stdenv = stdenvNoCross; + ncurses = ncursesNoCross; + lzma = lzmaNoCross; + }; + texi2html = import ../development/tools/misc/texi2html { inherit fetchurl stdenv perl; }; @@ -3534,7 +3558,8 @@ let }; glibc29Cross = cross : makeOverridable (import ../development/libraries/glibc-2.9) { - inherit fetchurl stdenv cross; + inherit fetchurl cross; + stdenv = stdenvNoCross; binutilsCross = binutilsCross cross; gccCross = gccCrossStageStatic cross; kernelHeaders = kernelHeadersCross cross; @@ -3587,7 +3612,9 @@ let }; gmp = import ../development/libraries/gmp { - inherit fetchurl stdenv m4; + inherit fetchurl; + stdenv = stdenvNoCross; + m4 = m4NoCross; }; # `gmpxx' used to mean "GMP with C++ bindings". Now `gmp' has C++ bindings @@ -3609,7 +3636,8 @@ let #GMP ex-satellite, so better keep it near gmp mpfr = import ../development/libraries/mpfr { - inherit fetchurl stdenv gmp; + inherit fetchurl gmp; + stdenv = stdenvNoCross; }; gst_all = recurseIntoAttrs (import ../development/libraries/gstreamer { @@ -4320,9 +4348,15 @@ let inherit fetchurl stdenv; }; - ncurses = composedArgsAndFun (import ../development/libraries/ncurses) { + ncurses = makeOverridable (composedArgsAndFun (import ../development/libraries/ncurses)) { inherit fetchurl stdenv; - unicode = (system != "i686-cygwin"); + # The "! (stdenv ? cross)" is for the cross-built arm ncurses, which + # don't build for me in unicode. + unicode = (system != "i686-cygwin" && ! (stdenv ? cross)); + }; + + ncursesNoCross = ncurses.override { + stdenv = stdenvNoCross; }; neon = neon026; @@ -4404,11 +4438,16 @@ let pkgconfig; }; - openssl = import ../development/libraries/openssl { + openssl = makeOverridable (import ../development/libraries/openssl) { fetchurl = fetchurlBoot; inherit stdenv perl; }; + opensslNoCross = openssl.override { + stdenv = stdenvNoCross; + perl = perlNoCross; + }; + ortp = import ../development/libraries/ortp { inherit fetchurl stdenv; }; @@ -4757,7 +4796,7 @@ let inherit ncurses flex bison autoconf automake m4 coreutils; }; - zlib = import ../development/libraries/zlib { + zlib = makeOverridable (import ../development/libraries/zlib) { fetchurl = fetchurlBoot; inherit stdenv; }; @@ -5508,7 +5547,9 @@ let kernelHeaders = kernelHeaders_2_6_28; kernelHeadersCross = cross : import ../os-specific/linux/kernel-headers/2.6.28.nix { - inherit fetchurl stdenv perl cross; + inherit fetchurl cross; + stdenv = stdenvNoCross; + perl = perlNoCross; }; kernelHeaders_2_6_18 = import ../os-specific/linux/kernel-headers/2.6.18.5.nix { @@ -6101,10 +6142,6 @@ let inherit fetchurl stdenv unzip; }; - ubootArm = uboot.override { - stdenv = stdenvCross "armv5tel-unknown-linux-gnueabi"; - }; - uclibc = import ../os-specific/linux/uclibc { inherit fetchurl stdenv kernelHeaders; }; From 4c09cfc8a3d478ef1caf4c10d708267d3dcba65c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Llu=C3=ADs=20Batlle=20i=20Rossell?= Date: Wed, 18 Nov 2009 18:16:35 +0000 Subject: [PATCH 023/232] Adding generic builder management of cross compilation: envHooksHost, pkgsHost, ... svn path=/nixpkgs/branches/stdenv-updates/; revision=18446 --- .../gcc-cross-wrapper/setup-hook.sh | 2 +- pkgs/stdenv/generic/setup.sh | 26 ++++++++++++++++--- 2 files changed, 23 insertions(+), 5 deletions(-) diff --git a/pkgs/build-support/gcc-cross-wrapper/setup-hook.sh b/pkgs/build-support/gcc-cross-wrapper/setup-hook.sh index e4034820fb3..506cca7fb55 100644 --- a/pkgs/build-support/gcc-cross-wrapper/setup-hook.sh +++ b/pkgs/build-support/gcc-cross-wrapper/setup-hook.sh @@ -8,7 +8,7 @@ addCVars () { fi } -envHooks=(${envHooks[@]} addCVars) +envHooksHost=(${envHooksHost[@]} addCVars) # Note: these come *after* $out in the PATH (see setup.sh). diff --git a/pkgs/stdenv/generic/setup.sh b/pkgs/stdenv/generic/setup.sh index 9f9d64df8e4..d215b9ef22f 100644 --- a/pkgs/stdenv/generic/setup.sh +++ b/pkgs/stdenv/generic/setup.sh @@ -151,14 +151,15 @@ runHook addInputsHook # Recursively find all build inputs. findInputs() { local pkg=$1 + local var=$2 - case $pkgs in + case ${!var} in *\ $pkg\ *) return 0 ;; esac - pkgs="$pkgs $pkg " + $var="${!var} $pkg " if test -f $pkg/nix-support/setup-hook; then source $pkg/nix-support/setup-hook @@ -166,16 +167,20 @@ findInputs() { if test -f $pkg/nix-support/propagated-build-inputs; then for i in $(cat $pkg/nix-support/propagated-build-inputs); do - findInputs $i + findInputs $i $var done fi } pkgs="" for i in $buildInputs $propagatedBuildInputs; do - findInputs $i + findInputs $i pkgs done +pkgsHost="" +for i in $hostInputs $propagatedHostInputs; do + findInputs $i pkgsHost +done # Set the relevant environment variables to point to the build inputs # found above. @@ -196,6 +201,19 @@ for i in $pkgs; do addToEnv $i done +addToEnvHost() { + local pkg=$1 + + # Run the package-specific hooks set by the setup-hook scripts. + for i in "${envHooksHost[@]}"; do + $i $pkg + done +} + +for i in $pkgsHost; do + addToEnvHost $i +done + # Add the output as an rpath. if test "$NIX_NO_SELF_RPATH" != "1"; then From 8c638e5e6880156986f2af9ee5c473be5d1b3fd1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Llu=C3=ADs=20Batlle=20i=20Rossell?= Date: Wed, 18 Nov 2009 19:25:57 +0000 Subject: [PATCH 024/232] Fixing what I broke in the last commit in setup.sh. I made the stdenvCross adapter simpler, according to Nicolas Pierron comments, and I commented it a bit. There are still jobs to do. At least: - Plan for the general renaming from buildInputs to hostInputs - We should not break merges from trunk. - Make the generic stdenv understand about host/buildInputs, at least for native builds, because it is used in the always-native building of stdenvLinux. This should allow us to remove all duplications of "*NoCross" in nixpkgs. svn path=/nixpkgs/branches/stdenv-updates/; revision=18449 --- pkgs/stdenv/adapters.nix | 27 +++++++++++---------------- pkgs/stdenv/generic/setup.sh | 13 +++++++------ 2 files changed, 18 insertions(+), 22 deletions(-) diff --git a/pkgs/stdenv/adapters.nix b/pkgs/stdenv/adapters.nix index edf3980cd78..ecbe2dbcf71 100644 --- a/pkgs/stdenv/adapters.nix +++ b/pkgs/stdenv/adapters.nix @@ -110,24 +110,19 @@ rec { # Return a modified stdenv that adds a cross compiler to the # builds. makeStdenvCross = stdenv: cross: binutilsCross: gccCross: stdenv // - { mkDerivation = {name, buildInputs ? null, hostInputs ? null, - propagatedBuildInputs ? null, propagatedHostInputs ? null, ...}@args: let - buildInputsList = if (buildInputs != null) then - buildInputs else []; - hostInputsList = if (hostInputs != null) then - hostInputs else []; - propagatedBuildInputsList = if (propagatedBuildInputs != null) then - propagatedBuildInputs else []; - propagatedHostInputsList = if (propagatedHostInputs != null) then - propagatedHostInputs else []; - buildInputsDrvs = map (drv: drv.buildDrv) buildInputsList; - hostInputsDrvs = map (drv: drv.hostDrv) hostInputsList; - propagatedBuildInputsDrvs = map (drv: drv.buildDrv) propagatedBuildInputsList; - propagatedHostInputsDrvs = map (drv: drv.buildDrv) propagatedHostInputsList; + { mkDerivation = {name, buildInputs ? [], hostInputs ? [], + propagatedBuildInputs ? [], propagatedHostInputs ? [], ...}@args: let + # propagatedBuildInputs exists temporarily as another name for + # propagatedHostInputs. + buildInputsDrvs = map (drv: drv.buildDrv) buildInputs; + hostInputsDrvs = map (drv: drv.hostDrv) hostInputs; + propagatedHostInputsDrvs = map (drv: drv.buildDrv) (propagatedBuildInputs + ++ propagatedHostInputs); buildDrv = stdenv.mkDerivation (args // { + # buildInputs in the base stdenv will be named hostInputs buildInputs = buildInputsDrvs ++ hostInputsDrvs; - propagatedBuildInputs = propagatedBuildInputsDrvs ++ - propagatedHostInputsDrvs; + # Should be propagatedHostInputs one day: + propagatedBuildInputs = propagatedHostInputsDrvs; }); hostDrv = if (cross == null) then buildDrv else stdenv.mkDerivation (args // { diff --git a/pkgs/stdenv/generic/setup.sh b/pkgs/stdenv/generic/setup.sh index d215b9ef22f..1dd772ff317 100644 --- a/pkgs/stdenv/generic/setup.sh +++ b/pkgs/stdenv/generic/setup.sh @@ -159,7 +159,7 @@ findInputs() { ;; esac - $var="${!var} $pkg " + eval $var="'${!var} $pkg '" if test -f $pkg/nix-support/setup-hook; then source $pkg/nix-support/setup-hook @@ -177,13 +177,14 @@ for i in $buildInputs $propagatedBuildInputs; do findInputs $i pkgs done -pkgsHost="" -for i in $hostInputs $propagatedHostInputs; do - findInputs $i pkgsHost +hostPkgs="" +for i in $hostInputs $propagatedBuildInputs; do + findInputs $i hostPkgs done # Set the relevant environment variables to point to the build inputs # found above. +envHostHooks=() addToEnv() { local pkg=$1 @@ -205,12 +206,12 @@ addToEnvHost() { local pkg=$1 # Run the package-specific hooks set by the setup-hook scripts. - for i in "${envHooksHost[@]}"; do + for i in "${envHostHooks[@]}"; do $i $pkg done } -for i in $pkgsHost; do +for i in $hostPkgs; do addToEnvHost $i done From 6ba27ab5521e4439c082c868dcf692fea0e6f876 Mon Sep 17 00:00:00 2001 From: Nicolas Pierron Date: Thu, 19 Nov 2009 17:19:32 +0000 Subject: [PATCH 025/232] * Add file support in the runHook function. svn path=/nixpkgs/branches/stdenv-updates/; revision=18467 --- pkgs/stdenv/generic/setup.sh | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/pkgs/stdenv/generic/setup.sh b/pkgs/stdenv/generic/setup.sh index 1dd772ff317..efd1abbe02a 100644 --- a/pkgs/stdenv/generic/setup.sh +++ b/pkgs/stdenv/generic/setup.sh @@ -4,11 +4,12 @@ # environment variables) and from shell scripts (as functions). runHook() { local hookName="$1" - if test "$(type -t $hookName)" = function; then - $hookName - else - eval "${!hookName}" - fi + case "$(type -t $hookName)" in + (function|alias|builtin) $hookName;; + (file) source $hookName;; + (keyword) :;; + (*) eval "${!hookName}";; + esac } From 56ed820f84101fc7b7cc47cbb1f57e616f35ac73 Mon Sep 17 00:00:00 2001 From: Nicolas Pierron Date: Thu, 19 Nov 2009 17:19:39 +0000 Subject: [PATCH 026/232] Add systems.nix give more control over the increasing list of supported systems. This is not yet used because it has to be integrated with the current system. svn path=/nixpkgs/branches/stdenv-updates/; revision=18468 --- pkgs/lib/attrsets.nix | 10 ++++ pkgs/lib/default.nix | 4 +- pkgs/lib/systems.nix | 125 ++++++++++++++++++++++++++++++++++++++++++ pkgs/lib/types.nix | 4 ++ 4 files changed, 142 insertions(+), 1 deletion(-) create mode 100644 pkgs/lib/systems.nix diff --git a/pkgs/lib/attrsets.nix b/pkgs/lib/attrsets.nix index 63abf789944..4b2496c1987 100644 --- a/pkgs/lib/attrsets.nix +++ b/pkgs/lib/attrsets.nix @@ -2,9 +2,11 @@ with { inherit (builtins) head tail isString; + inherit (import ./trivial.nix) or; inherit (import ./default.nix) fold; inherit (import ./strings.nix) concatStringsSep; inherit (import ./lists.nix) concatMap; + inherit (import ./misc.nix) eqStrict; }; rec { @@ -259,4 +261,12 @@ rec { !(isAttrs lhs && isAttrs rhs) ) lhs rhs; + matchAttrs = pattern: attrs: + fold or false (attrValues (zipAttrsWithNames (attrNames pattern) (n: values: + let pat = head values; val = head (tail values); in + if tail values == [] then false + else if isAttrs pat then isAttrs val && matchAttrs head values + else eqStrict pat val + ) [pattern attrs])); + } diff --git a/pkgs/lib/default.nix b/pkgs/lib/default.nix index 2f916d3ddd7..86c45fe8334 100644 --- a/pkgs/lib/default.nix +++ b/pkgs/lib/default.nix @@ -15,12 +15,14 @@ let misc = import ./misc.nix; maintainers = import ./maintainers.nix; platforms = import ./platforms.nix; + systems = import ./systems.nix; in { inherit trivial lists strings stringsWithDeps attrsets sources options - properties modules types meta debug maintainers platforms; + properties modules types meta debug maintainers platforms systems; } # !!! don't include everything at top-level; perhaps only the most # commonly used functions. // trivial // lists // strings // stringsWithDeps // attrsets // sources // properties // options // types // meta // debug // misc // modules + // systems diff --git a/pkgs/lib/systems.nix b/pkgs/lib/systems.nix new file mode 100644 index 00000000000..41fdaacde44 --- /dev/null +++ b/pkgs/lib/systems.nix @@ -0,0 +1,125 @@ +# Define the list of system with their properties. Only systems tested for +# Nixpkgs are listed below + +with import ./lists.nix; +with import ./types.nix; +with import ./attrsets.nix; + +let + lib = import ./default.nix; + setTypes = type: + mapAttrs (name: value: + setType type ({inherit name;} // value) + ); +in + +rec { + + isSignificantByte = x: typeOf x == "significant-byte"; + significantBytes = setTypes "significant-byte" { + bigEndian = {}; + littleEndian = {}; + }; + + + isCpuType = x: typeOf x == "cpu-type" + && elem x.bits [8 16 32 64 128] + && (builtins.lessThan 8 x.bits -> isSignificantByte x.significantByte); + + cpuTypes = with significantBytes; + setTypes "cpu-type" { + arm = { bits = 32; significantByte = littleEndian; }; + armv5tel = { bits = 32; significantByte = littleEndian; }; + i686 = { bits = 32; significantByte = littleEndian; }; + powerpc = { bits = 32; significantByte = bigEndian; }; + x86_64 = { bits = 64; significantByte = littleEndian; }; + }; + + + isExecFormat = x: typeOf x == "exec-format"; + execFormats = setTypes "exec-format" { + aout = {}; # a.out + elf = {}; + macho = {}; + pe = {}; + unknow = {}; + }; + + + isKernel = x: typeOf x == "kernel"; + kernels = with execFormats; + setTypes "kernel" { + cygwin = { execFormat = pe; }; + darwin = { execFormat = macho; }; + freebsd = { execFormat = elf; }; + linux = { execFormat = elf; }; + netbsd = { execFormat = elf; }; + none = { execFormat = unknow; }; + openbsd = { execFormat = elf; }; + win32 = { execFormat = pe; }; + }; + + + isArchitecture = x: typeOf x == "architecture"; + architectures = setTypes "architecture" { + apple = {}; + pc = {}; + unknow = {}; + }; + + + isSystem = x: typeOf x == "system" + && isCpuType x.cpu + && isArchitecture x.arch + && isKernel x.kernel; + + mkSystem = { + cpu ? cpuTypes.i686, + arch ? architectures.pc, + kernel ? kernels.linux, + name ? "${cpu.name}-${arch.name}-${kernel.name}" + }: setType "system" { + inherit name cpu arch kernel; + }; + + + isDarwin = matchAttrs { kernel = kernels.darwin; }; + isLinux = matchAttrs { kernel = kernels.linux; }; + isi686 = matchAttrs { cpu = cpuTypes.i686; }; + is64Bit = matchAttrs { cpu = { bits = 64; }; }; + + + # This should revert the job done by config.guess from the gcc compiler. + mkSystemFromString = s: let + l = lib.splitString "-" s; + + getCpu = name: + attrByPath [name] (throw "Unknow cpuType `${name}'.") + cpuTypes; + getArch = name: + attrByPath [name] (throw "Unknow architecture `${name}'.") + architectures; + getKernel = name: + attrByPath [name] (throw "Unknow kernel `${name}'.") + kernels; + + system = + if builtins.length l == 2 then + mkSystem rec { + name = s; + cpu = getCpu (head l); + arch = + if isDarwin system + then architectures.apple + else architectures.pc; + kernel = getKernel (head (tail l)); + } + else + mkSystem { + name = s; + cpu = getCpu (head l); + arch = getArch (head (tail l)); + kernel = getKernel (head (tail (tail l))); + }; + in assert isSystem system; system; +} diff --git a/pkgs/lib/types.nix b/pkgs/lib/types.nix index d71cb9df097..fd3c071c0be 100644 --- a/pkgs/lib/types.nix +++ b/pkgs/lib/types.nix @@ -12,6 +12,10 @@ rec { hasType = x: isAttrs x && x ? _type; typeOf = x: if hasType x then x._type else ""; + setType = typeName: value: value // { + _type = typeName; + }; + # name (name of the type) # check (boolean function) From 7ade207f6b75da0fde94cec621ac6d8fa6c3e586 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Llu=C3=ADs=20Batlle=20i=20Rossell?= Date: Thu, 19 Nov 2009 19:03:34 +0000 Subject: [PATCH 027/232] - Removed all *NoCross expressions I dupilcated in nixpkgs, while maintaining the cross compilation functionality. - I renamed some expected stdenv.mkDerivation parameter attributes so we can keep this branch properly updated from trunk. We agreed with Nicolas Pierron doing a massive renaming, so all current buildInputs become hostInputs (input as build for the host machine, in autotools terminology) , and then buildInputs would mean "input as for the build machine". By now, the specific "input as for the build machine" is specified through buildNativeInputs. We should fix this in the merge to trunk. - I made the generic stdenv understand the buildNativeInputs, otherwise if we start changing nixpkgs expressions so they distinguish the current buildInputs into buildInputs and buildNativeInputs, we could break even more nixpkgs for other platforms. - I changed the default result of mkDerivation so it becomes the derivation for to be run in the build machine. This allows, without any special rewriting, "fetchurl" derivations to be always results for the build machine to use them. - The change above implies that, for anyone wanting to cross-compile, has to build the hostDrv of the wanted derivation. For example, after this commit, the usual test of "nix-build -A bison.hostDrv arm.nix" works. I described the contents of this arm.nix in r18398. svn path=/nixpkgs/branches/stdenv-updates/; revision=18471 --- .../tools/parsing/bison/bison-2.3.nix | 2 +- pkgs/misc/uboot/default.nix | 5 +- pkgs/stdenv/adapters.nix | 24 +++--- pkgs/stdenv/generic/default.nix | 10 ++- pkgs/stdenv/linux/default.nix | 1 - pkgs/top-level/all-packages.nix | 79 ++++--------------- 6 files changed, 38 insertions(+), 83 deletions(-) diff --git a/pkgs/development/tools/parsing/bison/bison-2.3.nix b/pkgs/development/tools/parsing/bison/bison-2.3.nix index ae90f2e83d0..7ebdb863d58 100644 --- a/pkgs/development/tools/parsing/bison/bison-2.3.nix +++ b/pkgs/development/tools/parsing/bison/bison-2.3.nix @@ -8,7 +8,7 @@ stdenv.mkDerivation { url = mirror://gnu/bison/bison-2.3.tar.bz2; md5 = "c18640c6ec31a169d351e3117ecce3ec"; }; - buildInputs = [m4]; + buildNativeInputs = [m4]; meta = { description = "GNU Bison, a Yacc-compatible parser generator"; diff --git a/pkgs/misc/uboot/default.nix b/pkgs/misc/uboot/default.nix index ac3f49035a1..f1436623adc 100644 --- a/pkgs/misc/uboot/default.nix +++ b/pkgs/misc/uboot/default.nix @@ -1,6 +1,7 @@ {stdenv, fetchurl, unzip}: -# assert stdenv.system == "armv5tel-linux"; +# We should enable this check once we have the cross target system information +# assert stdenv.system == "armv5tel-linux" || crossConfig == "armv5tel-linux"; # All this file is made for the Marvell Sheevaplug @@ -37,7 +38,7 @@ stdenv.mkDerivation { if test -z "$crossTarget"; then make clean all else - make clean all ARCH=arm CROSS_COMPILE=$crossTarget- + make clean all ARCH=arm CROSS_COMPILE=$crossConfig- fi ''; diff --git a/pkgs/stdenv/adapters.nix b/pkgs/stdenv/adapters.nix index ecbe2dbcf71..85ff46a339d 100644 --- a/pkgs/stdenv/adapters.nix +++ b/pkgs/stdenv/adapters.nix @@ -110,29 +110,25 @@ rec { # Return a modified stdenv that adds a cross compiler to the # builds. makeStdenvCross = stdenv: cross: binutilsCross: gccCross: stdenv // - { mkDerivation = {name, buildInputs ? [], hostInputs ? [], - propagatedBuildInputs ? [], propagatedHostInputs ? [], ...}@args: let + { mkDerivation = {name, buildInputs ? [], buildNativeInputs ? [], + propagatedBuildInputs ? [], ...}@args: let # propagatedBuildInputs exists temporarily as another name for # propagatedHostInputs. - buildInputsDrvs = map (drv: drv.buildDrv) buildInputs; - hostInputsDrvs = map (drv: drv.hostDrv) hostInputs; - propagatedHostInputsDrvs = map (drv: drv.buildDrv) (propagatedBuildInputs - ++ propagatedHostInputs); - buildDrv = stdenv.mkDerivation (args // { - # buildInputs in the base stdenv will be named hostInputs - buildInputs = buildInputsDrvs ++ hostInputsDrvs; - # Should be propagatedHostInputs one day: - propagatedBuildInputs = propagatedHostInputsDrvs; - }); + getBuildDrv = drv : if (drv ? buildDrv) then drv.buildDrv else drv; + buildInputsDrvs = map (getBuildDrv) buildNativeInputs; + hostInputsDrvs = map (drv: drv.hostDrv) buildInputs; + hostInputsDrvsAsBuildInputs = map (getBuildDrv) buildInputs; + propagatedHostInputsDrvs = map (drv: drv.buildDrv) (propagatedBuildInputs); + buildDrv = stdenv.mkDerivation args; hostDrv = if (cross == null) then buildDrv else - stdenv.mkDerivation (args // { + stdenv.mkDerivation (args // { name = name + "-" + cross.config; buildInputs = buildInputsDrvs ++ [ gccCross binutilsCross ]; crossConfig = cross.config; }); - in hostDrv // { + in buildDrv // { inherit hostDrv buildDrv; }; } // { inherit cross; }; diff --git a/pkgs/stdenv/generic/default.nix b/pkgs/stdenv/generic/default.nix index de525d479f9..d9ce8d6f825 100644 --- a/pkgs/stdenv/generic/default.nix +++ b/pkgs/stdenv/generic/default.nix @@ -45,14 +45,20 @@ let mkDerivation = attrs: (derivation ( (removeAttrs attrs ["meta" "passthru"]) - // + // (let + buildInputs = if attrs ? buildInputs then attrs.buildInputs + else []; + buildNativeInputs = if attrs ? buildNativeInputs then attrs.buildNativeInputs + else []; + in { builder = if attrs ? realBuilder then attrs.realBuilder else shell; args = if attrs ? args then attrs.args else ["-e" (if attrs ? builder then attrs.builder else ./default-builder.sh)]; stdenv = result; system = result.system; - }) + buildInputs = buildInputs ++ buildNativeInputs; + })) ) # The meta attribute is passed in the resulting attribute set, # but it's not part of the actual derivation, i.e., it's not diff --git a/pkgs/stdenv/linux/default.nix b/pkgs/stdenv/linux/default.nix index cf67e707173..e04b81b152b 100644 --- a/pkgs/stdenv/linux/default.nix +++ b/pkgs/stdenv/linux/default.nix @@ -93,7 +93,6 @@ rec { extraAttrs = extraAttrs // {inherit fetchurl;}; }; - # Build a dummy stdenv with no GCC or working fetchurl. This is # because we need a stdenv to build the GCC wrapper and fetchurl. stdenvLinuxBoot0 = stdenvBootFun { diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index a2333f1a6a6..57d4061c7c4 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -216,19 +216,18 @@ let defaultStdenv = allStdenvs.stdenv; - stdenvNoCross = + stdenvCross = makeStdenvCross defaultStdenv crossSystem (binutilsCross crossSystem) + (gccCrossStageFinal crossSystem); + + stdenv = if bootStdenv != null then bootStdenv else let changer = getConfig ["replaceStdenv"] null; in if changer != null then changer { - stdenv = defaultStdenv; + stdenv = stdenvCross; overrideSetup = overrideSetup; } - else defaultStdenv; - - stdenv = if (bootStdenv != null || crossSystem == null) then stdenvNoCross else - makeStdenvCross stdenvNoCross crossSystem (binutilsCross crossSystem) - (gccCrossStageFinal crossSystem); + else stdenvCross; # A stdenv capable of building 32-bit binaries. On x86_64-linux, # it uses GCC compiled with multilib support; on i686-linux, it's @@ -306,8 +305,8 @@ let # from being built. fetchurl = useFromStdenv "fetchurl" (import ../build-support/fetchurl { - curl = curlNoCross; - stdenv = stdenvNoCross; + curl = curl; + stdenv = stdenv; }); # fetchurlBoot is used for curl and its dependencies in order to @@ -648,12 +647,6 @@ let sslSupport = ! ((stdenv ? isDietLibC) || (stdenv ? isStatic)); }; - curlNoCross = curl.override { - stdenv = stdenvNoCross; - zlib = zlib.override { stdenv = stdenvNoCross; }; - openssl = opensslNoCross; - }; - curlftpfs = import ../tools/networking/curlftpfs { inherit fetchurl stdenv fuse curl pkgconfig zlib glib; }; @@ -1079,10 +1072,6 @@ let inherit fetchurl stdenv; }; - lzmaNoCross = lzma.override { - stdenv = stdenvNoCross; - }; - xz = import ../tools/compression/xz { inherit fetchurl stdenv lib; }; @@ -1896,17 +1885,13 @@ let gcc43 = useFromStdenv "gcc" gcc43_real; gcc43_real = lowPrio (wrapGCC (makeOverridable (import ../development/compilers/gcc-4.3) { - inherit fetchurl gmp mpfr noSysDirs; - stdenv = stdenvNoCross; - texinfo = texinfoNoCross; + inherit stdenv fetchurl texinfo gmp mpfr noSysDirs; profiledCompiler = true; })); gcc43_realCross = cross : makeOverridable (import ../development/compilers/gcc-4.3) { #stdenv = overrideGCC stdenv (wrapGCCWith (import ../build-support/gcc-wrapper) glibc_multi gcc); - inherit fetchurl gmp mpfr noSysDirs cross; - stdenv = stdenvNoCross; - texinfo = texinfoNoCross; + inherit stdenv fetchurl texinfo gmp mpfr noSysDirs cross; binutilsCross = binutilsCross cross; glibcCross = glibcCross cross; profiledCompiler = false; @@ -2343,8 +2328,7 @@ let import ../build-support/gcc-cross-wrapper { nativeTools = false; nativeLibc = false; - inherit gcc binutils libc shell name cross; - stdenv = stdenvNoCross; + inherit stdenv gcc binutils libc shell name cross; }; # FIXME: This is a specific hack for GCC-UPC. Eventually, we may @@ -2454,11 +2438,6 @@ let perl = if system != "i686-cygwin" then perl510 else sysPerl; - perlNoCross = perl.override - { - stdenv = stdenvNoCross; - }; - # FIXME: unixODBC needs patching on Darwin (see darwinports) phpOld = import ../development/interpreters/php { inherit stdenv fetchurl flex bison libxml2 apacheHttpd; @@ -2731,8 +2710,7 @@ let }); binutilsCross = cross : import ../development/tools/misc/binutils { - inherit fetchurl cross; - stdenv = stdenvNoCross; + inherit stdenv fetchurl cross; noSysDirs = true; }; @@ -2873,10 +2851,6 @@ let m4 = gnum4; - m4NoCross = m4.override { - stdenv = stdenvNoCross; - }; - global = import ../development/tools/misc/global { inherit fetchurl stdenv; }; @@ -3077,12 +3051,6 @@ let inherit fetchurl stdenv ncurses lzma; }; - texinfoNoCross = texinfo.override { - stdenv = stdenvNoCross; - ncurses = ncursesNoCross; - lzma = lzmaNoCross; - }; - texi2html = import ../development/tools/misc/texi2html { inherit fetchurl stdenv perl; }; @@ -3558,8 +3526,7 @@ let }; glibc29Cross = cross : makeOverridable (import ../development/libraries/glibc-2.9) { - inherit fetchurl cross; - stdenv = stdenvNoCross; + inherit stdenv fetchurl cross; binutilsCross = binutilsCross cross; gccCross = gccCrossStageStatic cross; kernelHeaders = kernelHeadersCross cross; @@ -3612,9 +3579,7 @@ let }; gmp = import ../development/libraries/gmp { - inherit fetchurl; - stdenv = stdenvNoCross; - m4 = m4NoCross; + inherit stdenv fetchurl m4; }; # `gmpxx' used to mean "GMP with C++ bindings". Now `gmp' has C++ bindings @@ -3636,8 +3601,7 @@ let #GMP ex-satellite, so better keep it near gmp mpfr = import ../development/libraries/mpfr { - inherit fetchurl gmp; - stdenv = stdenvNoCross; + inherit stdenv fetchurl gmp; }; gst_all = recurseIntoAttrs (import ../development/libraries/gstreamer { @@ -4355,10 +4319,6 @@ let unicode = (system != "i686-cygwin" && ! (stdenv ? cross)); }; - ncursesNoCross = ncurses.override { - stdenv = stdenvNoCross; - }; - neon = neon026; neon026 = import ../development/libraries/neon/0.26.nix { @@ -4443,11 +4403,6 @@ let inherit stdenv perl; }; - opensslNoCross = openssl.override { - stdenv = stdenvNoCross; - perl = perlNoCross; - }; - ortp = import ../development/libraries/ortp { inherit fetchurl stdenv; }; @@ -5547,9 +5502,7 @@ let kernelHeaders = kernelHeaders_2_6_28; kernelHeadersCross = cross : import ../os-specific/linux/kernel-headers/2.6.28.nix { - inherit fetchurl cross; - stdenv = stdenvNoCross; - perl = perlNoCross; + inherit stdenv fetchurl cross perl; }; kernelHeaders_2_6_18 = import ../os-specific/linux/kernel-headers/2.6.18.5.nix { From 4dfc635cbba44353b5cd3033a2b6a63610b1d040 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Llu=C3=ADs=20Batlle=20i=20Rossell?= Date: Thu, 19 Nov 2009 21:43:03 +0000 Subject: [PATCH 028/232] Fixing the uboot cross-build. svn path=/nixpkgs/branches/stdenv-updates/; revision=18473 --- pkgs/build-support/gcc-cross-wrapper/builder.sh | 2 +- pkgs/misc/uboot/default.nix | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/pkgs/build-support/gcc-cross-wrapper/builder.sh b/pkgs/build-support/gcc-cross-wrapper/builder.sh index ae5e92e5de6..2299574e85a 100644 --- a/pkgs/build-support/gcc-cross-wrapper/builder.sh +++ b/pkgs/build-support/gcc-cross-wrapper/builder.sh @@ -40,7 +40,7 @@ doSubstitute() { --subst-var "cflagsLink" \ --subst-var "ldflags" \ --subst-var "ldflagsBefore" \ - --subst-var-by "ld" "$ldPath/ld" + --subst-var-by "ld" "$ldPath/$crossConfig-ld" } diff --git a/pkgs/misc/uboot/default.nix b/pkgs/misc/uboot/default.nix index f1436623adc..5c38f1d053b 100644 --- a/pkgs/misc/uboot/default.nix +++ b/pkgs/misc/uboot/default.nix @@ -35,14 +35,14 @@ stdenv.mkDerivation { buildPhase = '' unset src - if test -z "$crossTarget"; then + if test -z "$crossConfig"; then make clean all else make clean all ARCH=arm CROSS_COMPILE=$crossConfig- fi ''; - buildInputs = [ unzip ]; + buildNativeInputs = [ unzip ]; dontStrip = true; NIX_STRIP_DEBUG = false; From 5c14f92b303cb22ea92969a3313a7519fe05f8bb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Llu=C3=ADs=20Batlle=20i=20Rossell?= Date: Thu, 19 Nov 2009 22:15:13 +0000 Subject: [PATCH 029/232] Reverting a wrong name change I once did, when I thought that we would update all the naming in nixpkgs to match the new build/host cross compilation stdenv. Nevertheless, we decided not to do the renaming, but I forgot this change in readline until ludo told me about it. svn path=/nixpkgs/branches/stdenv-updates/; revision=18474 --- pkgs/development/libraries/readline/readline6.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/development/libraries/readline/readline6.nix b/pkgs/development/libraries/readline/readline6.nix index c789791b29f..60232a8b80b 100644 --- a/pkgs/development/libraries/readline/readline6.nix +++ b/pkgs/development/libraries/readline/readline6.nix @@ -8,7 +8,7 @@ stdenv.mkDerivation rec { sha256 = "1pn13j6f9376kwki69050x3zh62yb1w31l37rws5nwr5q02xk68i"; }; - propagatedHostInputs = [ncurses]; + propagatedBuildInputs = [ncurses]; patchFlags = "-p0"; patches = From 640db0323d31599d959b2218c4f6bbabadee14e8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= Date: Thu, 19 Nov 2009 22:46:40 +0000 Subject: [PATCH 030/232] GNU Libtool 2.2.6b. svn path=/nixpkgs/branches/stdenv-updates/; revision=18475 --- pkgs/development/tools/misc/libtool/libtool2.nix | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/pkgs/development/tools/misc/libtool/libtool2.nix b/pkgs/development/tools/misc/libtool/libtool2.nix index 8661404766e..25a2dbbf1cd 100644 --- a/pkgs/development/tools/misc/libtool/libtool2.nix +++ b/pkgs/development/tools/misc/libtool/libtool2.nix @@ -1,13 +1,13 @@ { stdenv, fetchurl, m4, perl, lzma }: stdenv.mkDerivation rec { - name = "libtool-2.2.6a"; - + name = "libtool-2.2.6b"; + src = fetchurl { url = "mirror://gnu/libtool/${name}.tar.lzma"; - sha256 = "12k3m7d0ngcwwahicncxbyd1155ij63ylr8372f0q8xbzq59c8hx"; + sha256 = "1bmpp31sfjl3nzj8psvnsqrrv4gwnqzii8dxpxr6djz508yavsv6"; }; - + buildInputs = [ lzma m4 perl ]; unpackCmd = "lzma -d < $src | tar xv"; @@ -16,6 +16,8 @@ stdenv.mkDerivation rec { # "fixed" path in generated files! dontPatchShebangs = true; + doCheck = true; + meta = { description = "GNU Libtool, a generic library support script"; @@ -32,5 +34,7 @@ stdenv.mkDerivation rec { homepage = http://www.gnu.org/software/libtool/; license = "GPLv2+"; + + maintainers = [ stdenv.lib.maintainers.ludo ]; }; } From 40e564c87c69ff193d64ed3ac8de5deb47c7b664 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= Date: Thu, 19 Nov 2009 22:46:45 +0000 Subject: [PATCH 031/232] GNU Coreutils 8.1. svn path=/nixpkgs/branches/stdenv-updates/; revision=18476 --- pkgs/tools/misc/coreutils/default.nix | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/pkgs/tools/misc/coreutils/default.nix b/pkgs/tools/misc/coreutils/default.nix index d1cccfa7196..e6ca5105cbe 100644 --- a/pkgs/tools/misc/coreutils/default.nix +++ b/pkgs/tools/misc/coreutils/default.nix @@ -1,15 +1,17 @@ {stdenv, fetchurl, aclSupport ? false, acl}: stdenv.mkDerivation rec { - name = "coreutils-7.6"; + name = "coreutils-8.1"; src = fetchurl { url = "mirror://gnu/coreutils/${name}.tar.gz"; - sha256 = "1m153jmnrg9v4x6qiw7azd3cjms13s32yihbzb7zi9bw8a5zx6qx"; + sha256 = "1c68q4c4fg6x22ba2p8xb0ddn4xdl847np2g33h63bgj9pdav8ay"; }; buildInputs = stdenv.lib.optional aclSupport acl; + doCheck = true; + meta = { homepage = http://www.gnu.org/software/coreutils/; description = "The basic file, shell and text manipulation utilities of the GNU operating system"; From 6f3630e1289923de7d7b3e720fac56013fe7aea6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Llu=C3=ADs=20Batlle=20i=20Rossell?= Date: Thu, 19 Nov 2009 23:05:11 +0000 Subject: [PATCH 032/232] Attention, people who care on the builders for native builds. In the stdenv derivation, the "buildInputs" in every stdenv mkDerivation don't map now directly to the environment variable "buildInputs" in the builder, but "buildNativeInputs". So, the inputs build by the native compiler. When cross compiling, they will map to the environment variable "buildInputs" (yes, now the same name), which means does to be built with the cross compiler. I think I improved the naming of variables a bit. There was a big mess, specially in the stdenv adapter for cross building, and also in the default builder script. I also tried to add proper manager of propagatedInputBuilds, these being propagated considering the host or build origin of that input build (so, at the end, being those propagatedInputBuilds being propagated properly to the native or the cross compiler. svn path=/nixpkgs/branches/stdenv-updates/; revision=18477 --- .../gcc-cross-wrapper/setup-hook.sh | 3 +- pkgs/stdenv/adapters.nix | 30 +++++++++++----- pkgs/stdenv/generic/default.nix | 18 ++++++++-- pkgs/stdenv/generic/setup.sh | 36 +++++++++++-------- pkgs/top-level/all-packages.nix | 2 +- 5 files changed, 60 insertions(+), 29 deletions(-) diff --git a/pkgs/build-support/gcc-cross-wrapper/setup-hook.sh b/pkgs/build-support/gcc-cross-wrapper/setup-hook.sh index 506cca7fb55..8edfa1ac92b 100644 --- a/pkgs/build-support/gcc-cross-wrapper/setup-hook.sh +++ b/pkgs/build-support/gcc-cross-wrapper/setup-hook.sh @@ -8,7 +8,7 @@ addCVars () { fi } -envHooksHost=(${envHooksHost[@]} addCVars) +crossEnvHooks=(${crossEnvHooks[@]} addCVars) # Note: these come *after* $out in the PATH (see setup.sh). @@ -25,4 +25,3 @@ if test -n "@glibc@"; then fi configureFlags="$configureFlags --build=$system --host=$crossConfig" -dontStrip=1 diff --git a/pkgs/stdenv/adapters.nix b/pkgs/stdenv/adapters.nix index 1b739f85168..f6939f57e62 100644 --- a/pkgs/stdenv/adapters.nix +++ b/pkgs/stdenv/adapters.nix @@ -111,20 +111,34 @@ rec { # builds. makeStdenvCross = stdenv: cross: binutilsCross: gccCross: stdenv // { mkDerivation = {name, buildInputs ? [], buildNativeInputs ? [], - propagatedBuildInputs ? [], ...}@args: let - # propagatedBuildInputs exists temporarily as another name for - # propagatedHostInputs. + propagatedBuildInputs ? [], propagatedBuildNativeInputs ? [], ...}@args: let + + # *BuildInputs exists temporarily as another name for + # *HostInputs. + getBuildDrv = drv : if (drv ? buildDrv) then drv.buildDrv else drv; - buildInputsDrvs = map (getBuildDrv) buildNativeInputs; - hostInputsDrvs = map (drv: drv.hostDrv) buildInputs; - hostInputsDrvsAsBuildInputs = map (getBuildDrv) buildInputs; - propagatedHostInputsDrvs = map (drv: drv.buildDrv) (propagatedBuildInputs); + buildNativeInputsDrvs = map (getBuildDrv) buildNativeInputs; + buildInputsDrvs = map (drv: drv.hostDrv) buildInputs; + buildInputsDrvsAsBuildInputs = map (getBuildDrv) buildInputs; + propagatedBuildInputsDrvs = map (drv: drv.hostDrv) (propagatedBuildInputs); + propagatedBuildNativeInputsDrvs = map (drv: drv.buildDrv) + (propagatedBuildNativeInputs); + + # The base stdenv already knows that buildNativeInputs and + # buildInputs should be built with the usual gcc-wrapper + # And the same for propagatedBuildInputs. buildDrv = stdenv.mkDerivation args; + + # We should overwrite the input attributes in hostDrv, to overwrite + # the defaults for only-native builds in the base stdenv hostDrv = if (cross == null) then buildDrv else stdenv.mkDerivation (args // { name = name + "-" + cross.config; - buildInputs = buildInputsDrvs + buildNativeInputs = buildNativeInputsDrvs ++ [ gccCross binutilsCross ]; + buildInputs = buildInputsDrvs; + propagatedBuildInputs = propagatedBuildInputsDrvs; + propagatedBuildNativeInputs = propagatedBuildNativeInputsDrvs; crossConfig = cross.config; }); diff --git a/pkgs/stdenv/generic/default.nix b/pkgs/stdenv/generic/default.nix index d9ce8d6f825..0755ee46904 100644 --- a/pkgs/stdenv/generic/default.nix +++ b/pkgs/stdenv/generic/default.nix @@ -48,8 +48,13 @@ let // (let buildInputs = if attrs ? buildInputs then attrs.buildInputs else []; - buildNativeInputs = if attrs ? buildNativeInputs then attrs.buildNativeInputs - else []; + buildNativeInputs = if attrs ? buildNativeInputs then + attrs.buildNativeInputs else []; + propagatedBuildInputs = if attrs ? propagatedBuildInputs then + attrs.propagatedBuildInputs else []; + propagatedBuildNativeInputs = if attrs ? + propagatedBuildNativeInputs then + attrs.propagatedBuildNativeInputs else []; in { builder = if attrs ? realBuilder then attrs.realBuilder else shell; @@ -57,7 +62,14 @@ let ["-e" (if attrs ? builder then attrs.builder else ./default-builder.sh)]; stdenv = result; system = result.system; - buildInputs = buildInputs ++ buildNativeInputs; + + # That build by the cross compiler + buildInputs = []; + propagatedBuildInputs = []; + # That build by the usual native compiler + buildNativeInputs = buildInputs ++ buildNativeInputs; + propagatedBuildNativeInputs = propagatedBuildInputs ++ + propagatedBuildNativeInputs; })) ) # The meta attribute is passed in the resulting attribute set, diff --git a/pkgs/stdenv/generic/setup.sh b/pkgs/stdenv/generic/setup.sh index efd1abbe02a..ac0a0b69e64 100644 --- a/pkgs/stdenv/generic/setup.sh +++ b/pkgs/stdenv/generic/setup.sh @@ -153,6 +153,7 @@ runHook addInputsHook findInputs() { local pkg=$1 local var=$2 + local propagatedBuildInputsFile=$3 case ${!var} in *\ $pkg\ *) @@ -166,27 +167,26 @@ findInputs() { source $pkg/nix-support/setup-hook fi - if test -f $pkg/nix-support/propagated-build-inputs; then - for i in $(cat $pkg/nix-support/propagated-build-inputs); do + if test -f $pkg/nix-support/$propagatedBuildInputsFile; then + for i in $(cat $pkg/nix-support/$propagatedBuildInputsFile); do findInputs $i $var done fi } -pkgs="" +crossPkgs="" for i in $buildInputs $propagatedBuildInputs; do - findInputs $i pkgs + findInputs $i crossPkgs propagated-build-inputs done -hostPkgs="" -for i in $hostInputs $propagatedBuildInputs; do - findInputs $i hostPkgs +nativePkgs="" +for i in $buildNativeInputs $propagatedBuildNativeInputs; do + findInputs $i nativePkgs propagated-build-native-inputs done # Set the relevant environment variables to point to the build inputs # found above. -envHostHooks=() -addToEnv() { +addToNativeEnv() { local pkg=$1 if test -d $1/bin; then @@ -199,21 +199,22 @@ addToEnv() { done } -for i in $pkgs; do - addToEnv $i +for i in $nativePkgs; do + addToNativeEnv $i done -addToEnvHost() { +crossEnvHooks=() +addToCrossEnv() { local pkg=$1 # Run the package-specific hooks set by the setup-hook scripts. - for i in "${envHostHooks[@]}"; do + for i in "${crossEnvHooks[@]}"; do $i $pkg done } -for i in $hostPkgs; do - addToEnvHost $i +for i in $crossPkgs; do + addToCrossEnv $i done @@ -716,6 +717,11 @@ fixupPhase() { echo "$propagatedBuildInputs" > "$out/nix-support/propagated-build-inputs" fi + if test -n "$propagatedBuildNativeInputs"; then + ensureDir "$out/nix-support" + echo "$propagatedBuildNativeInputs" > "$out/nix-support/propagated-build-native-inputs" + fi + if test -n "$setupHook"; then ensureDir "$out/nix-support" substituteAll "$setupHook" "$out/nix-support/setup-hook" diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index a5466a9b116..f1a5ff3e537 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -4195,7 +4195,7 @@ let }; ncurses = makeOverridable (composedArgsAndFun (import ../development/libraries/ncurses)) { - inherit fetchurl stdenv; + inherit fetchurl stdenv ncurses; # The "! (stdenv ? cross)" is for the cross-built arm ncurses, which # don't build for me in unicode. unicode = (system != "i686-cygwin" && ! (stdenv ? cross)); From e1af6255179f70f2d0c3df0813ad09fbc67ea0ce Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= Date: Thu, 19 Nov 2009 23:28:45 +0000 Subject: [PATCH 033/232] Add tentative glibc 2.11 expression, based on that of glibc 2.9. svn path=/nixpkgs/branches/stdenv-updates/; revision=18478 --- .../libraries/glibc-2.11/binutils-2.20.patch | 42 +++++++ .../libraries/glibc-2.11/binutils-ld.patch | 33 ++++++ .../libraries/glibc-2.11/builder.sh | 83 +++++++++++++ .../libraries/glibc-2.11/default.nix | 110 ++++++++++++++++++ .../development/libraries/glibc-2.11/info.nix | 47 ++++++++ .../glibc-2.11/locale-override.patch | 72 ++++++++++++ .../libraries/glibc-2.11/locales.nix | 67 +++++++++++ .../libraries/glibc-2.11/localesbuilder.sh | 50 ++++++++ .../glibc-2.11/nss-skip-unavail.patch | 25 ++++ .../libraries/glibc-2.11/rpcgen-path.patch | 72 ++++++++++++ pkgs/top-level/all-packages.nix | 5 + 11 files changed, 606 insertions(+) create mode 100644 pkgs/development/libraries/glibc-2.11/binutils-2.20.patch create mode 100644 pkgs/development/libraries/glibc-2.11/binutils-ld.patch create mode 100644 pkgs/development/libraries/glibc-2.11/builder.sh create mode 100644 pkgs/development/libraries/glibc-2.11/default.nix create mode 100644 pkgs/development/libraries/glibc-2.11/info.nix create mode 100644 pkgs/development/libraries/glibc-2.11/locale-override.patch create mode 100644 pkgs/development/libraries/glibc-2.11/locales.nix create mode 100644 pkgs/development/libraries/glibc-2.11/localesbuilder.sh create mode 100644 pkgs/development/libraries/glibc-2.11/nss-skip-unavail.patch create mode 100644 pkgs/development/libraries/glibc-2.11/rpcgen-path.patch diff --git a/pkgs/development/libraries/glibc-2.11/binutils-2.20.patch b/pkgs/development/libraries/glibc-2.11/binutils-2.20.patch new file mode 100644 index 00000000000..ab3d6144d6e --- /dev/null +++ b/pkgs/development/libraries/glibc-2.11/binutils-2.20.patch @@ -0,0 +1,42 @@ +Support GNU Binutils 2.20 and beyond. Patch from +http://sourceware.org/ml/libc-alpha/2009-09/msg00009.html . + +diff --git a/configure b/configure +index 48e6952..b1d84d7 100755 +--- a/configure ++++ b/configure +@@ -4841,7 +4841,7 @@ $as_echo_n "checking version of $AS... " >&6; } + ac_prog_version=`$AS --version 2>&1 | sed -n 's/^.*GNU assembler.* \([0-9]*\.[0-9.]*\).*$/\1/p'` + case $ac_prog_version in + '') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;; +- 2.1[3-9]*) ++ 2.1[3-9]*|[2-9].[2-9]*) + ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;; + *) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;; + +@@ -4904,7 +4904,7 @@ $as_echo_n "checking version of $LD... " >&6; } + ac_prog_version=`$LD --version 2>&1 | sed -n 's/^.*GNU ld.* \([0-9][0-9]*\.[0-9.]*\).*$/\1/p'` + case $ac_prog_version in + '') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;; +- 2.1[3-9]*) ++ 2.1[3-9]*|[2-9].[2-9]*) + ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;; + *) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;; + +diff --git a/configure.in b/configure.in +index 4584afe..7c4f71f 100644 +--- a/configure.in ++++ b/configure.in +@@ -897,10 +897,10 @@ AC_SUBST(MIG)dnl Needed by sysdeps/mach/configure.in + # Accept binutils 2.13 or newer. + AC_CHECK_PROG_VER(AS, $AS, --version, + [GNU assembler.* \([0-9]*\.[0-9.]*\)], +- [2.1[3-9]*], AS=: critic_missing="$critic_missing as") ++ [2.1[3-9]*|[2-9].[2-9]*], AS=: critic_missing="$critic_missing as") + AC_CHECK_PROG_VER(LD, $LD, --version, + [GNU ld.* \([0-9][0-9]*\.[0-9.]*\)], +- [2.1[3-9]*], LD=: critic_missing="$critic_missing ld") ++ [2.1[3-9]*|[2-9].[2-9]*], LD=: critic_missing="$critic_missing ld") + + # We need the physical current working directory. We cannot use the + # "pwd -P" shell builtin since that's not portable. Instead we try to diff --git a/pkgs/development/libraries/glibc-2.11/binutils-ld.patch b/pkgs/development/libraries/glibc-2.11/binutils-ld.patch new file mode 100644 index 00000000000..ae70f145ce0 --- /dev/null +++ b/pkgs/development/libraries/glibc-2.11/binutils-ld.patch @@ -0,0 +1,33 @@ +From 7c8a67320e26b8c11108bf0a3410d3aef9cf3486 Mon Sep 17 00:00:00 2001 +From: Ulrich Drepper +Date: Sat, 31 Jan 2009 00:21:15 +0000 +Subject: [PATCH] * elf/Makefile (ld.so): Adjust the sed script to insert _begin in to + + newer linker scripts. +--- + ChangeLog | 5 +++++ + elf/Makefile | 4 ++-- + 2 files changed, 7 insertions(+), 2 deletions(-) + +diff --git a/elf/Makefile b/elf/Makefile +index 8079fe9..e44ff1d 100644 +--- a/elf/Makefile ++++ b/elf/Makefile +@@ -1,4 +1,4 @@ +-# Copyright (C) 1995-2007, 2008 Free Software Foundation, Inc. ++# Copyright (C) 1995-2007, 2008, 2009 Free Software Foundation, Inc. + # This file is part of the GNU C Library. + + # The GNU C Library is free software; you can redistribute it and/or +@@ -304,7 +304,7 @@ $(objpfx)ld.so: $(objpfx)librtld.os $(ld-map) + $(LDFLAGS-rtld) -Wl,-z,defs -Wl,--verbose 2>&1 | \ + LC_ALL=C \ + sed -e '/^=========/,/^=========/!d;/^=========/d' \ +- -e 's/\. = 0 + SIZEOF_HEADERS;/& _begin = . - SIZEOF_HEADERS;/' \ ++ -e 's/\. = .* + SIZEOF_HEADERS;/& _begin = . - SIZEOF_HEADERS;/' \ + > $@.lds + $(LINK.o) -nostdlib -nostartfiles -shared -o $@ \ + $(LDFLAGS-rtld) -Wl,-z,defs $(z-now-$(bind-now)) \ +-- +1.6.4 + diff --git a/pkgs/development/libraries/glibc-2.11/builder.sh b/pkgs/development/libraries/glibc-2.11/builder.sh new file mode 100644 index 00000000000..6f1b1bbbbe1 --- /dev/null +++ b/pkgs/development/libraries/glibc-2.11/builder.sh @@ -0,0 +1,83 @@ +# Glibc cannot have itself in its RPATH. +export NIX_NO_SELF_RPATH=1 + +source $stdenv/setup + +# Explicitly tell glibc to use our pwd, not /bin/pwd. +export PWD_P=$(type -tP pwd) + +# Needed to install share/zoneinfo/zone.tab. Set to impure /bin/sh to +# prevent a retained dependency on the bootstrap tools in the +# stdenv-linux bootstrap. +export BASH_SHELL=/bin/sh + + +preConfigure() { + + for i in configure io/ftwtest-sh; do + # Can't use substituteInPlace here because replace hasn't been + # built yet in the bootstrap. + sed -i "$i" -e "s^/bin/pwd^$PWD_P^g" + done + + # In the glibc 2.6/2.7 tarballs C-translit.h is a little bit older + # than C-translit.h.in, forcing Make to rebuild it unnecessarily. + # This wouldn't be problem except that it requires Perl, which we + # don't want as a dependency in the Nixpkgs bootstrap. So force + # the output file to be newer. + touch locale/C-translit.h + + if test -n "$crossConfig"; then + sed -i s/-lgcc_eh//g Makeconfig + fi + + mkdir build + cd build + + configureScript=../configure + if test -n "$crossConfig"; then + cat > config.cache << "EOF" +libc_cv_forced_unwind=yes +libc_cv_c_cleanup=yes +libc_cv_gnu89_inline=yes +EOF + export BUILD_CC=gcc + export CC="${crossConfig}-gcc" + export AR="${crossConfig}-ar" + export RANLIB="${crossConfig}-ranlib" + configureFlags="${configureFlags} --cache-file=config.cache" + + # The host stripp will destroy everything in the target binaries otherwise + dontStrip=1 + fi +} + + +postConfigure() { + # Hack: get rid of the `-static' flag set by the bootstrap stdenv. + # This has to be done *after* `configure' because it builds some + # test binaries. + export NIX_CFLAGS_LINK= + export NIX_LDFLAGS_BEFORE= + + export NIX_DONT_SET_RPATH=1 + unset CFLAGS +} + + +postInstall() { + if test -n "$installLocales"; then + make localedata/install-locales + fi + test -f $out/etc/ld.so.cache && rm $out/etc/ld.so.cache + (cd $out/include && ln -s $kernelHeaders/include/* .) || exit 1 + + # Fix for NIXOS-54 (ldd not working on x86_64). Make a symlink + # "lib64" to "lib". + if test -n "$is64bit"; then + ln -s lib $out/lib64 + fi +} + + +genericBuild diff --git a/pkgs/development/libraries/glibc-2.11/default.nix b/pkgs/development/libraries/glibc-2.11/default.nix new file mode 100644 index 00000000000..d9b1d503a40 --- /dev/null +++ b/pkgs/development/libraries/glibc-2.11/default.nix @@ -0,0 +1,110 @@ +{ stdenv, fetchurl, kernelHeaders +, installLocales ? true +, profilingLibraries ? false +, cross ? null +, binutilsCross ? null +, gccCross ? null +}: + +/* FIXME: Update `locales.nix' and `info.nix'. */ +let version = "2.11"; in + +stdenv.mkDerivation rec { + name = "glibc-${version}" + + stdenv.lib.optionalString (cross != null) "-${cross.config}"; + + builder = ./builder.sh; + + src = fetchurl { + url = "mirror://gnu/glibc/${name}.tar.bz2"; + sha256 = "0b6nbr89qmqcvzz26ggnw7gcxhvnzbc8z299h12wqjmcix4hxwcy"; + }; + + inherit kernelHeaders installLocales; + crossConfig = if (cross != null) then cross.config else null; + + inherit (stdenv) is64bit; + + patches = [ + /* Fix for NIXPKGS-79: when doing host name lookups, when + nsswitch.conf contains a line like + + hosts: files mdns4_minimal [NOTFOUND=return] dns mdns4 + + don't return an error when mdns4_minimal can't be found. This + is a bug in Glibc: when a service can't be found, NSS should + continue to the next service unless "UNAVAIL=return" is set. + ("NOTFOUND=return" refers to the service returning a NOTFOUND + error, not the service itself not being found.) The reason is + that the "status" variable (while initialised to UNAVAIL) is + outside of the loop that iterates over the services, the + "files" service sets status to NOTFOUND. So when the call to + find "mdns4_minimal" fails, "status" will still be NOTFOUND, + and it will return instead of continuing to "dns". Thus, the + line + + hosts: mdns4_minimal [NOTFOUND=return] dns mdns4 + + does work because "status" will contain UNAVAIL after the + failure to find mdns4_minimal. */ + ./nss-skip-unavail.patch + + /* Make it possible to override the locale-archive in NixOS. */ + ./locale-override.patch + + /* Have rpcgen(1) look for cpp(1) in $PATH. */ + ./rpcgen-path.patch + + /* Support GNU Binutils 2.20 and above. */ + ./binutils-2.20.patch + + ./binutils-ld.patch + ]; + + configureFlags = [ + "--enable-add-ons" + "--with-headers=${kernelHeaders}/include" + (if profilingLibraries then "--enable-profile" else "--disable-profile") + ] ++ stdenv.lib.optionals (cross != null) [ + "--host=${cross.config}" + "--build=${stdenv.system}" + "--with-tls" + "--enable-kernel=2.6.0" + "--without-fp" + "--with-__thread" + ] ++ (if (stdenv.system == "armv5tel-linux") then [ + "--host=arm-linux-gnueabi" + "--build=arm-linux-gnueabi" + "--without-fp" + ] else []); + + buildInputs = stdenv.lib.optionals (cross != null) [ binutilsCross gccCross ]; + + preInstall = '' + ensureDir $out/lib + ln -s ${stdenv.gcc.gcc}/lib/libgcc_s.so.1 $out/lib/libgcc_s.so.1 + ''; + + postInstall = '' + rm $out/lib/libgcc_s.so.1 + ''; + + meta = { + homepage = http://www.gnu.org/software/libc/; + description = "The GNU C Library"; + + longDescription = + '' Any Unix-like operating system needs a C library: the library which + defines the ``system calls'' and other basic facilities such as + open, malloc, printf, exit... + + The GNU C library is used as the C library in the GNU system and + most systems with the Linux kernel. + ''; + + license = "LGPLv2+"; + + maintainers = [ stdenv.lib.maintainers.ludo ]; + platforms = stdenv.lib.platforms.linux; + }; +} diff --git a/pkgs/development/libraries/glibc-2.11/info.nix b/pkgs/development/libraries/glibc-2.11/info.nix new file mode 100644 index 00000000000..2b9c0f38533 --- /dev/null +++ b/pkgs/development/libraries/glibc-2.11/info.nix @@ -0,0 +1,47 @@ +{ stdenv, fetchurl, texinfo, perl }: + +stdenv.mkDerivation rec { + name = "glibc-info-2.9"; + + src = fetchurl { + url = http://nixos.org/tarballs/glibc-2.9-20081208.tar.bz2; + sha256 = "0zhxbgcsl97pf349m0lz8d5ljvvzrcqc23yf08d888xlk4ms8m3h"; + }; + + patches = [ + /* Support GNU Binutils 2.20 and above. */ + ./binutils-2.20.patch + ]; + + preConfigure = '' + export PWD_P=$(type -tP pwd) + for i in configure io/ftwtest-sh; do + # Can't use substituteInPlace here because replace hasn't been + # built yet in the bootstrap. + sed -i "$i" -e "s^/bin/pwd^$PWD_P^g" + done + mkdir ../build + cd ../build + + configureScript=../$sourceRoot/configure + ''; + + configureFlags = [ "--enable-add-ons" ]; + + buildInputs = [ texinfo perl ]; + + buildPhase = "make info"; + + # I don't know why the info is not generated in 'build' + # Somehow building the info still does not work, because the final + # libc.info hasn't a Top node. + installPhase = '' + ensureDir $out/share/info + cp ../$sourceRoot/manual/*.info $out/share/info + ''; + + meta = { + homepage = http://www.gnu.org/software/libc/; + description = "GNU Info manual of the GNU C Library"; + }; +} diff --git a/pkgs/development/libraries/glibc-2.11/locale-override.patch b/pkgs/development/libraries/glibc-2.11/locale-override.patch new file mode 100644 index 00000000000..108d0e35dac --- /dev/null +++ b/pkgs/development/libraries/glibc-2.11/locale-override.patch @@ -0,0 +1,72 @@ +diff -rc glibc-2.9-20081208-orig/locale/loadarchive.c glibc-2.9-20081208/locale/loadarchive.c +*** glibc-2.9-20081208-orig/locale/loadarchive.c 2005-09-09 18:56:52.000000000 +0200 +--- glibc-2.9-20081208/locale/loadarchive.c 2009-04-19 13:54:26.000000000 +0200 +*************** +*** 124,129 **** +--- 124,142 ---- + } + + ++ static int ++ open_locale_archive () ++ { ++ int fd = -1; ++ char *path = getenv ("LOCALE_ARCHIVE"); ++ if (path) ++ fd = open_not_cancel_2 (path, O_RDONLY|O_LARGEFILE); ++ if (fd < 0) ++ fd = open_not_cancel_2 (archfname, O_RDONLY|O_LARGEFILE); ++ return fd; ++ } ++ ++ + /* Find the locale *NAMEP in the locale archive, and return the + internalized data structure for its CATEGORY data. If this locale has + already been loaded from the archive, just returns the existing data +*************** +*** 203,209 **** + archmapped = &headmap; + + /* The archive has never been opened. */ +! fd = open_not_cancel_2 (archfname, O_RDONLY|O_LARGEFILE); + if (fd < 0) + /* Cannot open the archive, for whatever reason. */ + return NULL; +--- 216,222 ---- + archmapped = &headmap; + + /* The archive has never been opened. */ +! fd = open_locale_archive (); + if (fd < 0) + /* Cannot open the archive, for whatever reason. */ + return NULL; +*************** +*** 394,400 **** + if (fd == -1) + { + struct stat64 st; +! fd = open_not_cancel_2 (archfname, O_RDONLY|O_LARGEFILE); + if (fd == -1) + /* Cannot open the archive, for whatever reason. */ + return NULL; +--- 407,413 ---- + if (fd == -1) + { + struct stat64 st; +! fd = open_locale_archive (); + if (fd == -1) + /* Cannot open the archive, for whatever reason. */ + return NULL; +diff -rc glibc-2.9-20081208-orig/sysdeps/generic/unsecvars.h glibc-2.9-20081208/sysdeps/generic/unsecvars.h +*** glibc-2.9-20081208-orig/sysdeps/generic/unsecvars.h 2006-10-11 18:24:05.000000000 +0200 +--- glibc-2.9-20081208/sysdeps/generic/unsecvars.h 2009-04-19 13:55:34.000000000 +0200 +*************** +*** 16,21 **** +--- 16,22 ---- + "LD_SHOW_AUXV\0" \ + "LD_USE_LOAD_BIAS\0" \ + "LOCALDOMAIN\0" \ ++ "LOCALE_ARCHIVE\0" \ + "LOCPATH\0" \ + "MALLOC_TRACE\0" \ + "NIS_PATH\0" \ diff --git a/pkgs/development/libraries/glibc-2.11/locales.nix b/pkgs/development/libraries/glibc-2.11/locales.nix new file mode 100644 index 00000000000..3046374ca34 --- /dev/null +++ b/pkgs/development/libraries/glibc-2.11/locales.nix @@ -0,0 +1,67 @@ +/* This function builds just the `lib/locale/locale-archive' file from + Glibc and nothing else. If `allLocales' is true, all supported + locales are included; otherwise, just the locales listed in + `locales'. See localedata/SUPPORTED in the Glibc source tree for + the list of all supported locales: + http://sourceware.org/cgi-bin/cvsweb.cgi/libc/localedata/SUPPORTED?cvsroot=glibc +*/ + +{ stdenv, fetchurl, allLocales ? true, locales ? ["en_US.UTF-8/UTF-8"] }: + +stdenv.mkDerivation rec { + name = "glibc-locales-2.9"; + + builder = ./localesbuilder.sh; + + src = fetchurl { + url = http://ftp.gnu.org/gnu/glibc/glibc-2.9.tar.bz2; + sha256 = "0v53m7flx6qcx7cvrvvw6a4dx4x3y6k8nvpc4wfv5xaaqy2am2q9"; + }; + + srcPorts = fetchurl { + url = http://ftp.gnu.org/gnu/glibc/glibc-ports-2.9.tar.bz2; + sha256 = "0r2sn527wxqifi63di7ns9wbjh1cainxn978w178khhy7yw9fk42"; + }; + + inherit (stdenv) is64bit; + + configureFlags = [ + "--enable-add-ons" + "--without-headers" + "--disable-profile" + ] ++ (if (stdenv.system == "armv5tel-linux") then [ + "--host=arm-linux-gnueabi" + "--build=arm-linux-gnueabi" + "--without-fp" + ] else []); + + patches = [ + /* Support GNU Binutils 2.20 and above. */ + ./binutils-2.20.patch + ]; + + # Awful hack: `localedef' doesn't allow the path to `locale-archive' + # to be overriden, but you *can* specify a prefix, i.e. it will use + # //lib/locale/locale-archive. So we use + # $TMPDIR as a prefix, meaning that the locale-archive is placed in + # $TMPDIR/nix/store/...-glibc-.../lib/locale/locale-archive. + buildPhase = + '' + mkdir -p $TMPDIR/"$(dirname $(readlink -f $(type -p localedef)))/../lib/locale" + make localedata/install-locales \ + LOCALEDEF="localedef --prefix=$TMPDIR" \ + localedir=$out/lib/locale \ + ${if allLocales then "" else "SUPPORTED-LOCALES=\"${toString locales}\""} + ''; + + installPhase = + '' + ensureDir $out/lib/locale + cp $TMPDIR/nix/store/*/lib/locale/locale-archive $out/lib/locale/ + ''; + + meta = { + homepage = http://www.gnu.org/software/libc/; + description = "Locale information for the GNU C Library"; + }; +} diff --git a/pkgs/development/libraries/glibc-2.11/localesbuilder.sh b/pkgs/development/libraries/glibc-2.11/localesbuilder.sh new file mode 100644 index 00000000000..a28f6bcbaeb --- /dev/null +++ b/pkgs/development/libraries/glibc-2.11/localesbuilder.sh @@ -0,0 +1,50 @@ +# Glibc cannot have itself in its RPATH. +export NIX_NO_SELF_RPATH=1 + +source $stdenv/setup + +# Explicitly tell glibc to use our pwd, not /bin/pwd. +export PWD_P=$(type -tP pwd) + +# Needed to install share/zoneinfo/zone.tab. Set to impure /bin/sh to +# prevent a retained dependency on the bootstrap tools in the +# stdenv-linux bootstrap. +export BASH_SHELL=/bin/sh + + +preConfigure() { + + for i in configure io/ftwtest-sh; do + # Can't use substituteInPlace here because replace hasn't been + # built yet in the bootstrap. + sed -i "$i" -e "s^/bin/pwd^$PWD_P^g" + done + + # In the glibc 2.6/2.7 tarballs C-translit.h is a little bit older + # than C-translit.h.in, forcing Make to rebuild it unnecessarily. + # This wouldn't be problem except that it requires Perl, which we + # don't want as a dependency in the Nixpkgs bootstrap. So force + # the output file to be newer. + touch locale/C-translit.h + + tar xvjf "$srcPorts" + + mkdir build + cd build + + configureScript=../configure +} + + +postConfigure() { + # Hack: get rid of the `-static' flag set by the bootstrap stdenv. + # This has to be done *after* `configure' because it builds some + # test binaries. + export NIX_CFLAGS_LINK= + export NIX_LDFLAGS_BEFORE= + + export NIX_DONT_SET_RPATH=1 + unset CFLAGS +} + +genericBuild diff --git a/pkgs/development/libraries/glibc-2.11/nss-skip-unavail.patch b/pkgs/development/libraries/glibc-2.11/nss-skip-unavail.patch new file mode 100644 index 00000000000..dc09b509870 --- /dev/null +++ b/pkgs/development/libraries/glibc-2.11/nss-skip-unavail.patch @@ -0,0 +1,25 @@ +diff -rc glibc-2.9-20081208-orig/sysdeps/posix/getaddrinfo.c glibc-2.9-20081208/sysdeps/posix/getaddrinfo.c +*** glibc-2.9-20081208-orig/sysdeps/posix/getaddrinfo.c 2008-07-30 21:14:22.000000000 +0200 +--- glibc-2.9-20081208/sysdeps/posix/getaddrinfo.c 2008-12-10 11:39:32.000000000 +0100 +*************** +*** 505,512 **** + int no_data = 0; + int no_inet6_data = 0; + service_user *nip = NULL; +- enum nss_status inet6_status = NSS_STATUS_UNAVAIL; +- enum nss_status status = NSS_STATUS_UNAVAIL; + int no_more; + int old_res_options; + +--- 505,510 ---- +*************** +*** 702,707 **** +--- 700,707 ---- + + while (!no_more) + { ++ enum nss_status inet6_status = NSS_STATUS_UNAVAIL; ++ enum nss_status status = NSS_STATUS_UNAVAIL; + nss_gethostbyname4_r fct4 + = __nss_lookup_function (nip, "gethostbyname4_r"); + if (fct4 != NULL) diff --git a/pkgs/development/libraries/glibc-2.11/rpcgen-path.patch b/pkgs/development/libraries/glibc-2.11/rpcgen-path.patch new file mode 100644 index 00000000000..fbb03dd5fad --- /dev/null +++ b/pkgs/development/libraries/glibc-2.11/rpcgen-path.patch @@ -0,0 +1,72 @@ +By default, rpcgen(1) looks for cpp(1) from a list of fixed absolute paths +(`/lib/cpp', etc.), which may only be overrided with the `-Y' option. This +patch makes it run any `cpp' command found in $PATH. + +--- glibc-2.7/sunrpc/rpc_main.c 2006-11-10 21:54:46.000000000 +0100 ++++ glibc-2.7/sunrpc/rpc_main.c 2009-04-22 14:32:10.000000000 +0200 +@@ -79,7 +79,7 @@ static const char *cmdname; + + static const char *svcclosetime = "120"; + static int cppDefined; /* explicit path for C preprocessor */ +-static const char *CPP = SUNOS_CPP; ++static const char *CPP = "cpp"; + static const char CPPFLAGS[] = "-C"; + static char *pathbuf; + static int cpp_pid; +@@ -108,7 +108,6 @@ static char *extendfile (const char *fil + static void open_output (const char *infile, const char *outfile); + static void add_warning (void); + static void clear_args (void); +-static void find_cpp (void); + static void open_input (const char *infile, const char *define); + static int check_nettype (const char *name, const char *list_to_check[]); + static void c_output (const char *infile, const char *define, +@@ -327,31 +326,6 @@ clear_args (void) + argcount = FIXEDARGS; + } + +-/* make sure that a CPP exists */ +-static void +-find_cpp (void) +-{ +- struct stat buf; +- +- if (stat (CPP, &buf) < 0) +- { /* /lib/cpp or explicit cpp does not exist */ +- if (cppDefined) +- { +- fprintf (stderr, _ ("cannot find C preprocessor: %s \n"), CPP); +- crash (); +- } +- else +- { /* try the other one */ +- CPP = SVR4_CPP; +- if (stat (CPP, &buf) < 0) +- { /* can't find any cpp */ +- fputs (_ ("cannot find any C preprocessor (cpp)\n"), stdout); +- crash (); +- } +- } +- } +-} +- + /* + * Open input file with given define for C-preprocessor + */ +@@ -370,7 +344,6 @@ open_input (const char *infile, const ch + switch (cpp_pid) + { + case 0: +- find_cpp (); + putarg (0, CPP); + putarg (1, CPPFLAGS); + addarg (define); +@@ -380,7 +353,7 @@ open_input (const char *infile, const ch + close (1); + dup2 (pd[1], 1); + close (pd[0]); +- execv (arglist[0], (char **) arglist); ++ execvp (arglist[0], (char **) arglist); + perror ("execv"); + exit (1); + case -1: diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index f1a5ff3e537..788e282a998 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -3420,6 +3420,11 @@ let installLocales = getPkgConfig "glibc" "locales" false; }; + glibc211 = makeOverridable (import ../development/libraries/glibc-2.11) { + inherit fetchurl stdenv kernelHeaders; + installLocales = getPkgConfig "glibc" "locales" false; + }; + glibcCross = cross: glibc29Cross cross; eglibc = import ../development/libraries/eglibc { From 7983251ce0add8dbb12ff4c44d34d5d94cccafb5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Llu=C3=ADs=20Batlle=20i=20Rossell?= Date: Fri, 20 Nov 2009 08:27:59 +0000 Subject: [PATCH 034/232] Fixing a trivial error in the glibc-2.11 longDescription, and fixing the arguments for the ncurses expression. We should find a way to express a dependency in cross compilation of the style "cross-ncurses depends on having the native-ncurses". svn path=/nixpkgs/branches/stdenv-updates/; revision=18479 --- pkgs/development/libraries/glibc-2.11/default.nix | 2 +- pkgs/top-level/all-packages.nix | 10 +++++++++- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/pkgs/development/libraries/glibc-2.11/default.nix b/pkgs/development/libraries/glibc-2.11/default.nix index d9b1d503a40..ad312123b3a 100644 --- a/pkgs/development/libraries/glibc-2.11/default.nix +++ b/pkgs/development/libraries/glibc-2.11/default.nix @@ -95,7 +95,7 @@ stdenv.mkDerivation rec { longDescription = '' Any Unix-like operating system needs a C library: the library which - defines the ``system calls'' and other basic facilities such as + defines the "system calls" and other basic facilities such as open, malloc, printf, exit... The GNU C library is used as the C library in the GNU system and diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 788e282a998..c12b0418d89 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -3425,6 +3425,14 @@ let installLocales = getPkgConfig "glibc" "locales" false; }; + glibc211Cross = cross : makeOverridable (import ../development/libraries/glibc-2.11) { + inherit stdenv fetchurl cross; + binutilsCross = binutilsCross cross; + gccCross = gccCrossStageStatic cross; + kernelHeaders = kernelHeadersCross cross; + installLocales = getPkgConfig "glibc" "locales" false; + }; + glibcCross = cross: glibc29Cross cross; eglibc = import ../development/libraries/eglibc { @@ -4200,7 +4208,7 @@ let }; ncurses = makeOverridable (composedArgsAndFun (import ../development/libraries/ncurses)) { - inherit fetchurl stdenv ncurses; + inherit fetchurl stdenv; # The "! (stdenv ? cross)" is for the cross-built arm ncurses, which # don't build for me in unicode. unicode = (system != "i686-cygwin" && ! (stdenv ? cross)); From 4497215410f169a58a593ef2e90fb0517b78ac55 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Llu=C3=ADs=20Batlle=20i=20Rossell?= Date: Fri, 20 Nov 2009 12:33:43 +0000 Subject: [PATCH 035/232] Allowing in the cross stdenv adapter the calls to mkDerivation without name. I don't know why there are such calls, but there are. svn path=/nixpkgs/branches/stdenv-updates/; revision=18482 --- pkgs/stdenv/adapters.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/stdenv/adapters.nix b/pkgs/stdenv/adapters.nix index f6939f57e62..011bede0d54 100644 --- a/pkgs/stdenv/adapters.nix +++ b/pkgs/stdenv/adapters.nix @@ -110,7 +110,7 @@ rec { # Return a modified stdenv that adds a cross compiler to the # builds. makeStdenvCross = stdenv: cross: binutilsCross: gccCross: stdenv // - { mkDerivation = {name, buildInputs ? [], buildNativeInputs ? [], + { mkDerivation = {name ? "", buildInputs ? [], buildNativeInputs ? [], propagatedBuildInputs ? [], propagatedBuildNativeInputs ? [], ...}@args: let # *BuildInputs exists temporarily as another name for From 28d9e73d34a686409de74a8f16c3b40cec5a3fc0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Llu=C3=ADs=20Batlle=20i=20Rossell?= Date: Fri, 20 Nov 2009 16:38:01 +0000 Subject: [PATCH 036/232] Adding a new mkDerivation flag for the cross stdenv, selfNativeBuildInput = true/false, which tells whether the derivation needs itself as buildNativeInput. For example, in order to build cross ncurses, we need the a native build ncurses. (As libtool does not work in stdenv, I have not tested this change, to check whether finally ncurses cross-build) svn path=/nixpkgs/branches/stdenv-updates/; revision=18489 --- pkgs/development/libraries/ncurses/default.nix | 2 ++ pkgs/stdenv/adapters.nix | 6 ++++-- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/pkgs/development/libraries/ncurses/default.nix b/pkgs/development/libraries/ncurses/default.nix index d82c9de81f2..e9d286a3641 100644 --- a/pkgs/development/libraries/ncurses/default.nix +++ b/pkgs/development/libraries/ncurses/default.nix @@ -12,6 +12,8 @@ stdenv.mkDerivation rec { --with-shared --includedir=''${out}/include --without-debug ${if unicode then "--enable-widec" else ""} ''; + + selfNativeBuildInput = true; preBuild = ''sed -e "s@\([[:space:]]\)sh @\1''${SHELL} @" -i */Makefile Makefile''; diff --git a/pkgs/stdenv/adapters.nix b/pkgs/stdenv/adapters.nix index 011bede0d54..e21a9e02d29 100644 --- a/pkgs/stdenv/adapters.nix +++ b/pkgs/stdenv/adapters.nix @@ -111,7 +111,8 @@ rec { # builds. makeStdenvCross = stdenv: cross: binutilsCross: gccCross: stdenv // { mkDerivation = {name ? "", buildInputs ? [], buildNativeInputs ? [], - propagatedBuildInputs ? [], propagatedBuildNativeInputs ? [], ...}@args: let + propagatedBuildInputs ? [], propagatedBuildNativeInputs ? [], + selfNativeBuildInput ? false, ...}@args: let # *BuildInputs exists temporarily as another name for # *HostInputs. @@ -135,7 +136,8 @@ rec { stdenv.mkDerivation (args // { name = name + "-" + cross.config; buildNativeInputs = buildNativeInputsDrvs - ++ [ gccCross binutilsCross ]; + ++ [ gccCross binutilsCross ] ++ + stdenv.lib.optional selfNativeBuildInput buildDrv; buildInputs = buildInputsDrvs; propagatedBuildInputs = propagatedBuildInputsDrvs; propagatedBuildNativeInputs = propagatedBuildNativeInputsDrvs; From e10632e7d5f04d2d6f55e22b34a77b43b2d95eeb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Llu=C3=ADs=20Batlle=20i=20Rossell?= Date: Fri, 20 Nov 2009 16:56:11 +0000 Subject: [PATCH 037/232] Trying to fix the stdenv used on i686-darwin, which stopped working after my statement of the gcc-wrapper coreutils dependency on r17867. I don't have i686-darwin to try this. svn path=/nixpkgs/branches/stdenv-updates/; revision=18490 --- pkgs/stdenv/nix/default.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/pkgs/stdenv/nix/default.nix b/pkgs/stdenv/nix/default.nix index 521f381eed2..5b1b2af8285 100644 --- a/pkgs/stdenv/nix/default.nix +++ b/pkgs/stdenv/nix/default.nix @@ -17,6 +17,7 @@ import ../generic { else pkgs.binutils; gcc = if stdenv.isDarwin then pkgs.gccApple.gcc else pkgs.gcc.gcc; + coreutils = pkgs.coreutils; shell = pkgs.bash + "/bin/sh"; }; From be4dfd41be8f9de5d5ad57c398e4e46a9fa7584a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= Date: Fri, 20 Nov 2009 17:09:54 +0000 Subject: [PATCH 038/232] GNU Libtool: Disable tests for now. svn path=/nixpkgs/branches/stdenv-updates/; revision=18491 --- pkgs/development/tools/misc/libtool/libtool2.nix | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/pkgs/development/tools/misc/libtool/libtool2.nix b/pkgs/development/tools/misc/libtool/libtool2.nix index 25a2dbbf1cd..0119515740d 100644 --- a/pkgs/development/tools/misc/libtool/libtool2.nix +++ b/pkgs/development/tools/misc/libtool/libtool2.nix @@ -16,7 +16,9 @@ stdenv.mkDerivation rec { # "fixed" path in generated files! dontPatchShebangs = true; - doCheck = true; + # XXX: The GNU ld wrapper does all sorts of nasty things wrt. RPATH, which + # leads to the failure of a number of tests. + doCheck = false; meta = { description = "GNU Libtool, a generic library support script"; From ab61e5b40d3f91bea5e14edbfcb7abb4ff8d9998 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= Date: Fri, 20 Nov 2009 17:10:00 +0000 Subject: [PATCH 039/232] stdenv: Let GNU tar select the decompression method. svn path=/nixpkgs/branches/stdenv-updates/; revision=18492 --- pkgs/stdenv/generic/setup.sh | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/pkgs/stdenv/generic/setup.sh b/pkgs/stdenv/generic/setup.sh index ac0a0b69e64..62d441439d8 100644 --- a/pkgs/stdenv/generic/setup.sh +++ b/pkgs/stdenv/generic/setup.sh @@ -418,15 +418,11 @@ unpackFile() { header "unpacking source archive $curSrc" 3 case "$curSrc" in - *.tar) + *.tar | *.tar.* | *.tgz | *.tbz2) + # GNU tar can automatically select the decompression method + # (info "(tar) gzip"). tar xvf $curSrc ;; - *.tar.gz | *.tgz | *.tar.Z) - gzip -d < $curSrc | tar xvf - - ;; - *.tar.bz2 | *.tbz2) - bzip2 -d < $curSrc | tar xvf - - ;; *.zip) unzip $curSrc ;; From 9effdda93badcd00c110f2d42a06eb50adc07d89 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Llu=C3=ADs=20Batlle=20i=20Rossell?= Date: Fri, 20 Nov 2009 20:26:36 +0000 Subject: [PATCH 040/232] Updating the dependencies of the new coreutils: they need perl. svn path=/nixpkgs/branches/stdenv-updates/; revision=18494 --- pkgs/tools/misc/coreutils-5/default.nix | 2 +- pkgs/tools/misc/coreutils/default.nix | 4 ++-- pkgs/top-level/all-packages.nix | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/pkgs/tools/misc/coreutils-5/default.nix b/pkgs/tools/misc/coreutils-5/default.nix index fc9ef3b7c42..de1ff1c4a90 100644 --- a/pkgs/tools/misc/coreutils-5/default.nix +++ b/pkgs/tools/misc/coreutils-5/default.nix @@ -1,4 +1,4 @@ -{stdenv, fetchurl}: +{stdenv, fetchurl, perl ? null}: stdenv.mkDerivation { name = "coreutils-5.97"; diff --git a/pkgs/tools/misc/coreutils/default.nix b/pkgs/tools/misc/coreutils/default.nix index e6ca5105cbe..e967533cd74 100644 --- a/pkgs/tools/misc/coreutils/default.nix +++ b/pkgs/tools/misc/coreutils/default.nix @@ -1,4 +1,4 @@ -{stdenv, fetchurl, aclSupport ? false, acl}: +{stdenv, fetchurl, aclSupport ? false, acl, perl}: stdenv.mkDerivation rec { name = "coreutils-8.1"; @@ -8,7 +8,7 @@ stdenv.mkDerivation rec { sha256 = "1c68q4c4fg6x22ba2p8xb0ddn4xdl847np2g33h63bgj9pdav8ay"; }; - buildInputs = stdenv.lib.optional aclSupport acl; + buildInputs = [ perl ] ++ stdenv.lib.optional aclSupport acl; doCheck = true; diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index c12b0418d89..922511e41ba 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -514,7 +514,7 @@ let then import ../tools/misc/coreutils-5 else import ../tools/misc/coreutils) { - inherit fetchurl stdenv acl; + inherit fetchurl stdenv acl perl; aclSupport = stdenv.isLinux; }; From 7748e9e964fabd8afa47e75fc53b526c7a6c9995 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Llu=C3=ADs=20Batlle=20i=20Rossell?= Date: Fri, 20 Nov 2009 20:28:43 +0000 Subject: [PATCH 041/232] Disabling the coreutils tests svn path=/nixpkgs/branches/stdenv-updates/; revision=18495 --- pkgs/tools/misc/coreutils/default.nix | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/pkgs/tools/misc/coreutils/default.nix b/pkgs/tools/misc/coreutils/default.nix index e967533cd74..dd53b8d1a19 100644 --- a/pkgs/tools/misc/coreutils/default.nix +++ b/pkgs/tools/misc/coreutils/default.nix @@ -10,7 +10,8 @@ stdenv.mkDerivation rec { buildInputs = [ perl ] ++ stdenv.lib.optional aclSupport acl; - doCheck = true; + // The check failed the last time we enabled it + doCheck = false; meta = { homepage = http://www.gnu.org/software/coreutils/; From b27cf66ee28bc9fdec9a36fb00e019d5c0b57402 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Llu=C3=ADs=20Batlle=20i=20Rossell?= Date: Fri, 20 Nov 2009 20:29:32 +0000 Subject: [PATCH 042/232] argh. Bad commenting style and a commit too blind. svn path=/nixpkgs/branches/stdenv-updates/; revision=18496 --- pkgs/tools/misc/coreutils/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/tools/misc/coreutils/default.nix b/pkgs/tools/misc/coreutils/default.nix index dd53b8d1a19..87150839443 100644 --- a/pkgs/tools/misc/coreutils/default.nix +++ b/pkgs/tools/misc/coreutils/default.nix @@ -10,7 +10,7 @@ stdenv.mkDerivation rec { buildInputs = [ perl ] ++ stdenv.lib.optional aclSupport acl; - // The check failed the last time we enabled it + # The check failed the last time we enabled it doCheck = false; meta = { From a5fee3325a61b9ae33a0132a653d19079710002e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Llu=C3=ADs=20Batlle=20i=20Rossell?= Date: Fri, 20 Nov 2009 22:56:58 +0000 Subject: [PATCH 043/232] Fixing some things on the gcc-cross-wrapper (libc was not properly added to the linking path), and with this achieved bash being cross-compilable. I fixed the few expressions involved in bash building, so they have well stated native and non-native inputs. I also tried to cross-build guile, and with this I found a problem in the actual cross-gcc: it calls the binutils ld, instead of the ld wrapper. This way, the programs/shared_libraries don't get the proper -rpath. svn path=/nixpkgs/branches/stdenv-updates/; revision=18497 --- pkgs/build-support/gcc-cross-wrapper/setup-hook.sh | 7 +++++-- pkgs/development/interpreters/guile/default.nix | 5 +++-- pkgs/development/tools/misc/libtool/libtool2.nix | 2 +- pkgs/shells/bash/default.nix | 4 ++-- pkgs/top-level/all-packages.nix | 3 ++- 5 files changed, 13 insertions(+), 8 deletions(-) diff --git a/pkgs/build-support/gcc-cross-wrapper/setup-hook.sh b/pkgs/build-support/gcc-cross-wrapper/setup-hook.sh index 8edfa1ac92b..81735a4feff 100644 --- a/pkgs/build-support/gcc-cross-wrapper/setup-hook.sh +++ b/pkgs/build-support/gcc-cross-wrapper/setup-hook.sh @@ -20,8 +20,11 @@ if test -n "@binutils@"; then PATH=$PATH:@binutils@/bin fi -if test -n "@glibc@"; then - PATH=$PATH:@glibc@/bin +if test -n "@libc@"; then + PATH=$PATH:@libc@/bin + addCVars @libc@ fi configureFlags="$configureFlags --build=$system --host=$crossConfig" +dontPatchELF=1 +dontStrip=1 diff --git a/pkgs/development/interpreters/guile/default.nix b/pkgs/development/interpreters/guile/default.nix index 7e2de8c942e..f81f8ab1e82 100644 --- a/pkgs/development/interpreters/guile/default.nix +++ b/pkgs/development/interpreters/guile/default.nix @@ -8,8 +8,9 @@ stdenv.mkDerivation rec { sha256 = "1czhcrn6l63xhsw3fjmv88djflqxbdpxjhgmwwvscm8rv4wn7vmz"; }; - buildInputs = [ makeWrapper ]; - propagatedBuildInputs = [readline libtool gmp gawk]; + buildNativeInputs = [ makeWrapper ]; + propagatedBuildInputs = [ libtool ]; + propagatedBuildNativeInputs = [readline gmp gawk]; postInstall = '' wrapProgram $out/bin/guile-snarf --prefix PATH : "${gawk}/bin" diff --git a/pkgs/development/tools/misc/libtool/libtool2.nix b/pkgs/development/tools/misc/libtool/libtool2.nix index 0119515740d..84921daf810 100644 --- a/pkgs/development/tools/misc/libtool/libtool2.nix +++ b/pkgs/development/tools/misc/libtool/libtool2.nix @@ -8,7 +8,7 @@ stdenv.mkDerivation rec { sha256 = "1bmpp31sfjl3nzj8psvnsqrrv4gwnqzii8dxpxr6djz508yavsv6"; }; - buildInputs = [ lzma m4 perl ]; + buildNativeInputs = [ lzma m4 perl ]; unpackCmd = "lzma -d < $src | tar xv"; diff --git a/pkgs/shells/bash/default.nix b/pkgs/shells/bash/default.nix index 02736dec285..59b3ef73275 100644 --- a/pkgs/shells/bash/default.nix +++ b/pkgs/shells/bash/default.nix @@ -32,8 +32,8 @@ stdenv.mkDerivation rec { import ./bash-patches.nix patch; # Note: Bison is needed because the patches above modify parse.y. - buildInputs = [bison] - ++ stdenv.lib.optional (texinfo != null) texinfo + buildNativeInputs = [bison]; + buildInputs = stdenv.lib.optional (texinfo != null) texinfo ++ stdenv.lib.optional interactive readline; configureFlags = "--with-installed-readline"; diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 922511e41ba..629d3fe89d7 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -132,7 +132,8 @@ let # inside the set for derivations. recurseIntoAttrs = attrs: attrs // {recurseForDerivations = true;}; - useFromStdenv = it : alternative : if (builtins.hasAttr it stdenv) then + useFromStdenv = it : alternative : if ((bootStdenv != null || + crossSystem == null) && builtins.hasAttr it stdenv) then (builtins.getAttr it stdenv) else alternative; # Return the first available value in the order: pkg.val, val, or default. From a263cb814e42965d08d9dfe2d6e847e6be2e06c2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Llu=C3=ADs=20Batlle=20i=20Rossell?= Date: Sat, 21 Nov 2009 02:42:52 +0000 Subject: [PATCH 044/232] Fixed some details on cross compilation. Among others: - Stating better the guile dependencies (native/host) for guile to build - Fixing cross-linking, through --rpath-link (ld(1) explains well about it - Made gcc call the linker and the assembler through the gcc wrapper instead of directly. I thought this was the source of missing -rpath's, but the source of the problem ended up being the lack of --rpath-link. But I think the native gcc calls the wrapped ld and as, so let's do the same cross compiling. - Removed the binutilsCross from the glibc expressions. Now they are built using the gcc-cross-wrapper, and they were built with the direct gcc and binutils before this change. - I think patchelf and strip don't break the cross-compiled binaries, so I reallow them on cross compilation. - I disable the checkPhase on cross compilation. This made gmp and libtool fail when cross compiled, iirc. svn path=/nixpkgs/branches/stdenv-updates/; revision=18498 --- pkgs/build-support/gcc-cross-wrapper/builder.sh | 5 +++-- pkgs/build-support/gcc-cross-wrapper/default.nix | 4 ++-- .../gcc-cross-wrapper/gcc-wrapper.sh | 2 ++ .../gcc-cross-wrapper/ld-wrapper.sh | 2 +- .../gcc-cross-wrapper/setup-hook.sh | 5 +++-- pkgs/development/compilers/gcc-4.3/builder.sh | 5 ----- pkgs/development/interpreters/guile/default.nix | 6 ++++-- .../development/libraries/glibc-2.11/default.nix | 3 +-- pkgs/development/libraries/glibc-2.9/default.nix | 3 +-- pkgs/development/libraries/gmp/default.nix | 2 +- pkgs/top-level/all-packages.nix | 16 ++++++++++------ 11 files changed, 28 insertions(+), 25 deletions(-) diff --git a/pkgs/build-support/gcc-cross-wrapper/builder.sh b/pkgs/build-support/gcc-cross-wrapper/builder.sh index 2299574e85a..aaf52cd7745 100644 --- a/pkgs/build-support/gcc-cross-wrapper/builder.sh +++ b/pkgs/build-support/gcc-cross-wrapper/builder.sh @@ -17,7 +17,7 @@ if test -n "$nativeTools"; then else ldflags="$ldflags -L$gcc/lib" gccPath="$gcc/bin" - ldPath="$binutils/bin" + ldPath="$binutils/$crossConfig/bin" fi @@ -40,7 +40,8 @@ doSubstitute() { --subst-var "cflagsLink" \ --subst-var "ldflags" \ --subst-var "ldflagsBefore" \ - --subst-var-by "ld" "$ldPath/$crossConfig-ld" + --subst-var "ldPath" \ + --subst-var-by "ld" "$ldPath/ld" } diff --git a/pkgs/build-support/gcc-cross-wrapper/default.nix b/pkgs/build-support/gcc-cross-wrapper/default.nix index a9042dddf19..140432adfbc 100644 --- a/pkgs/build-support/gcc-cross-wrapper/default.nix +++ b/pkgs/build-support/gcc-cross-wrapper/default.nix @@ -5,13 +5,13 @@ # stdenv.mkDerivation provides a wrapper that sets up the right environment # variables so that the compiler and the linker just "work". -{ name ? "", stdenv, nativeTools, nativeLibc, nativePrefix ? "" +{ name ? "", stdenv, nativeTools, nativeLibc, noLibc ? false, nativePrefix ? "" , gcc ? null, libc ? null, binutils ? null, shell ? "", cross ? "" }: assert nativeTools -> nativePrefix != ""; assert !nativeTools -> gcc != null && binutils != null; -assert !nativeLibc -> libc != null; +assert !noLibc -> (!nativeLibc -> libc != null); stdenv.mkDerivation { builder = ./builder.sh; diff --git a/pkgs/build-support/gcc-cross-wrapper/gcc-wrapper.sh b/pkgs/build-support/gcc-cross-wrapper/gcc-wrapper.sh index d514b57e28a..e5a2f5e65bb 100644 --- a/pkgs/build-support/gcc-cross-wrapper/gcc-wrapper.sh +++ b/pkgs/build-support/gcc-cross-wrapper/gcc-wrapper.sh @@ -112,6 +112,8 @@ if test -n "$NIX_GCC_WRAPPER_EXEC_HOOK"; then source "$NIX_GCC_WRAPPER_EXEC_HOOK" fi +# We want gcc to call the wrapper linker, not that of binutils. +export PATH="@ldPath@:$PATH" # Call the real `gcc'. Filter out warnings from stderr about unused # `-B' flags, since they confuse some programs. Deep bash magic to diff --git a/pkgs/build-support/gcc-cross-wrapper/ld-wrapper.sh b/pkgs/build-support/gcc-cross-wrapper/ld-wrapper.sh index cc1b125804a..f3ff33f5c25 100644 --- a/pkgs/build-support/gcc-cross-wrapper/ld-wrapper.sh +++ b/pkgs/build-support/gcc-cross-wrapper/ld-wrapper.sh @@ -121,7 +121,7 @@ if test "$NIX_DONT_SET_RPATH" != "1"; then # Finally, add `-rpath' switches. for i in $rpath; do - extra=(${extra[@]} -rpath $i) + extra=(${extra[@]} -rpath $i -rpath-link $i) done fi diff --git a/pkgs/build-support/gcc-cross-wrapper/setup-hook.sh b/pkgs/build-support/gcc-cross-wrapper/setup-hook.sh index 81735a4feff..99618cb2112 100644 --- a/pkgs/build-support/gcc-cross-wrapper/setup-hook.sh +++ b/pkgs/build-support/gcc-cross-wrapper/setup-hook.sh @@ -26,5 +26,6 @@ if test -n "@libc@"; then fi configureFlags="$configureFlags --build=$system --host=$crossConfig" -dontPatchELF=1 -dontStrip=1 +# Disabling the tests when cross compiling, as usually the tests are meant for +# native compilations. +doCheck="" diff --git a/pkgs/development/compilers/gcc-4.3/builder.sh b/pkgs/development/compilers/gcc-4.3/builder.sh index 183575edf19..69e2a0b137e 100644 --- a/pkgs/development/compilers/gcc-4.3/builder.sh +++ b/pkgs/development/compilers/gcc-4.3/builder.sh @@ -124,11 +124,6 @@ postInstall() { ln -sfn g++ $i fi done - - # gcc will look for the binutils there, called through collect2 - if test -n "$crossConfig"; then - ln -s $binutilsCross/$crossConfig/bin $out/$crossConfig/bin - fi } diff --git a/pkgs/development/interpreters/guile/default.nix b/pkgs/development/interpreters/guile/default.nix index f81f8ab1e82..5be39a20f5a 100644 --- a/pkgs/development/interpreters/guile/default.nix +++ b/pkgs/development/interpreters/guile/default.nix @@ -9,13 +9,15 @@ stdenv.mkDerivation rec { }; buildNativeInputs = [ makeWrapper ]; - propagatedBuildInputs = [ libtool ]; - propagatedBuildNativeInputs = [readline gmp gawk]; + propagatedBuildInputs = [ libtool gmp ]; + propagatedBuildNativeInputs = [readline gawk]; postInstall = '' wrapProgram $out/bin/guile-snarf --prefix PATH : "${gawk}/bin" ''; + NIX_DEBUG=1; + preBuild = '' sed -e '/lt_dlinit/a lt_dladdsearchdir("'$out/lib'");' -i libguile/dynl.c ''; diff --git a/pkgs/development/libraries/glibc-2.11/default.nix b/pkgs/development/libraries/glibc-2.11/default.nix index ad312123b3a..5cfdb22e6ac 100644 --- a/pkgs/development/libraries/glibc-2.11/default.nix +++ b/pkgs/development/libraries/glibc-2.11/default.nix @@ -2,7 +2,6 @@ , installLocales ? true , profilingLibraries ? false , cross ? null -, binutilsCross ? null , gccCross ? null }: @@ -78,7 +77,7 @@ stdenv.mkDerivation rec { "--without-fp" ] else []); - buildInputs = stdenv.lib.optionals (cross != null) [ binutilsCross gccCross ]; + buildInputs = stdenv.lib.optionals (cross != null) [ gccCross ]; preInstall = '' ensureDir $out/lib diff --git a/pkgs/development/libraries/glibc-2.9/default.nix b/pkgs/development/libraries/glibc-2.9/default.nix index 9f02fa33e0d..98e281c1918 100644 --- a/pkgs/development/libraries/glibc-2.9/default.nix +++ b/pkgs/development/libraries/glibc-2.9/default.nix @@ -2,7 +2,6 @@ , installLocales ? true , profilingLibraries ? false , cross ? null -, binutilsCross ? null , gccCross ? null }: @@ -80,7 +79,7 @@ stdenv.mkDerivation rec { "--without-fp" ] else []); - buildInputs = stdenv.lib.optionals (cross != null) [ binutilsCross gccCross ]; + buildInputs = stdenv.lib.optionals (cross != null) [ gccCross ]; preInstall = '' ensureDir $out/lib diff --git a/pkgs/development/libraries/gmp/default.nix b/pkgs/development/libraries/gmp/default.nix index 541fabddd44..72561f27031 100644 --- a/pkgs/development/libraries/gmp/default.nix +++ b/pkgs/development/libraries/gmp/default.nix @@ -8,7 +8,7 @@ stdenv.mkDerivation rec { sha256 = "1j5pklq36ivg2cim5wfysns229a544lqkimp3mlzkwjl513ra0ma"; }; - buildInputs = [m4]; + buildNativeInputs = [m4]; preConfigure = "ln -sf configfsf.guess config.guess"; diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 629d3fe89d7..2fb6471ed07 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -1785,10 +1785,15 @@ let crossStageStatic = false; }; - gccCrossStageStatic = cross: (gcc43_realCross cross).override { - crossStageStatic = true; - langCC = false; - glibcCross = null; + gccCrossStageStatic = cross: wrapGCCCross { + gcc = (gcc43_realCross cross).override { + crossStageStatic = true; + langCC = false; + glibcCross = null; + }; + libc = null; + binutils = binutilsCross cross; + inherit cross; }; gccCrossStageFinal = cross: wrapGCCCross { @@ -2218,6 +2223,7 @@ let import ../build-support/gcc-cross-wrapper { nativeTools = false; nativeLibc = false; + noLibc = (libc == null); inherit stdenv gcc binutils libc shell name cross; }; @@ -3415,7 +3421,6 @@ let glibc29Cross = cross : makeOverridable (import ../development/libraries/glibc-2.9) { inherit stdenv fetchurl cross; - binutilsCross = binutilsCross cross; gccCross = gccCrossStageStatic cross; kernelHeaders = kernelHeadersCross cross; installLocales = getPkgConfig "glibc" "locales" false; @@ -3428,7 +3433,6 @@ let glibc211Cross = cross : makeOverridable (import ../development/libraries/glibc-2.11) { inherit stdenv fetchurl cross; - binutilsCross = binutilsCross cross; gccCross = gccCrossStageStatic cross; kernelHeaders = kernelHeadersCross cross; installLocales = getPkgConfig "glibc" "locales" false; From 3136303d632b975a86cc58269c487a3b2aca8b1c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Llu=C3=ADs=20Batlle=20i=20Rossell?= Date: Sat, 21 Nov 2009 10:11:44 +0000 Subject: [PATCH 045/232] Fixing the libxcb native build: missing dependency. svn path=/nixpkgs/branches/stdenv-updates/; revision=18499 --- pkgs/servers/x11/xorg/overrides.nix | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/pkgs/servers/x11/xorg/overrides.nix b/pkgs/servers/x11/xorg/overrides.nix index 5986a937c47..23937c8978e 100644 --- a/pkgs/servers/x11/xorg/overrides.nix +++ b/pkgs/servers/x11/xorg/overrides.nix @@ -21,6 +21,10 @@ preBuild = "substituteInPlace mkfontdir.cpp --replace BINDIR ${xorg.mkfontscale}/bin"; }; + libxcb = attrs : attrs // { + buildInputs = attrs.buildInputs ++ [ xorg.xproto ]; + }; + libXext = attrs: attrs // { buildInputs = attrs.buildInputs ++ [xorg.libXau]; }; From ca5d91aa608224368d93599416dd97b16cbe6bbf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Llu=C3=ADs=20Batlle=20i=20Rossell?= Date: Sat, 21 Nov 2009 10:44:22 +0000 Subject: [PATCH 046/232] Made more libraries cross compile. fontconfig, libxcb, bzip2, libdrm, zlib... I was trying to cross compile SDL. Many dependencies work, but I ended seeing libX11 not ready for cross compilation. Other xorg libraries cross-compile well. libX11 may need a small patch. The problem is the usual "configure test cannot be run in cross compilation", so the configure script halts. I made the pkgconfig expression always return buildDrv, as I think it rarely will be needed as buildInput. So to avoid rewriting all its mentions to use it as buildNativeInput, I prefered this small change. svn path=/nixpkgs/branches/stdenv-updates/; revision=18500 --- pkgs/development/libraries/fontconfig/default.nix | 8 ++++++++ pkgs/development/libraries/libdrm/default.nix | 7 +++++++ pkgs/development/libraries/zlib/default.nix | 7 +++++++ pkgs/servers/x11/xorg/overrides.nix | 12 +++++++++++- pkgs/top-level/all-packages.nix | 7 ++++++- 5 files changed, 39 insertions(+), 2 deletions(-) diff --git a/pkgs/development/libraries/fontconfig/default.nix b/pkgs/development/libraries/fontconfig/default.nix index 1f107409683..aa3ab19bf33 100644 --- a/pkgs/development/libraries/fontconfig/default.nix +++ b/pkgs/development/libraries/fontconfig/default.nix @@ -13,6 +13,14 @@ stdenv.mkDerivation rec { configureFlags = "--with-confdir=/etc/fonts --with-cache-dir=/var/cache/fontconfig --disable-docs --with-default-fonts="; + crossArch = stdenv.cross.arch; + + preConfigure = '' + if test -n "$crossConfig"; then + configureFlags="$configureFlags --with-arch=$crossArch"; + fi + ''; + # Don't try to write to /etc/fonts or /var/cache/fontconfig at install time. installFlags = "CONFDIR=$(out)/etc/fonts RUN_FC_CACHE_TEST=false fc_cachedir=$(TMPDIR)/dummy"; diff --git a/pkgs/development/libraries/libdrm/default.nix b/pkgs/development/libraries/libdrm/default.nix index 53c66ae7c15..ea10c3ee8d2 100644 --- a/pkgs/development/libraries/libdrm/default.nix +++ b/pkgs/development/libraries/libdrm/default.nix @@ -10,6 +10,13 @@ stdenv.mkDerivation rec { buildInputs = [ pkgconfig libpthreadstubs ]; + preConfigure = '' + # General case: non intel. + if test -n "$crossConfig"; then + configureFlags="$configureFlags --disable-intel"; + fi + ''; + meta = { homepage = http://dri.freedesktop.org/libdrm/; description = "Library for accessing the kernel's Direct Rendering Manager"; diff --git a/pkgs/development/libraries/zlib/default.nix b/pkgs/development/libraries/zlib/default.nix index f59182c2ba5..b4ae9e63ea0 100644 --- a/pkgs/development/libraries/zlib/default.nix +++ b/pkgs/development/libraries/zlib/default.nix @@ -8,6 +8,13 @@ stdenv.mkDerivation { }; configureFlags = if static then "" else "--shared"; + preConfigure = '' + if test -n "$crossConfig"; then + export CC=$crossConfig-gcc + configureFlags=${if static then "" else "--shared"} + fi + ''; + # zlib doesn't like the automatic --disable-shared from the Cygwin stdenv. cygwinConfigureEnableShared = true; } diff --git a/pkgs/servers/x11/xorg/overrides.nix b/pkgs/servers/x11/xorg/overrides.nix index 23937c8978e..8114567c1b6 100644 --- a/pkgs/servers/x11/xorg/overrides.nix +++ b/pkgs/servers/x11/xorg/overrides.nix @@ -22,7 +22,17 @@ }; libxcb = attrs : attrs // { - buildInputs = attrs.buildInputs ++ [ xorg.xproto ]; + # I only remove python from the original, and add xproto. I don't know how + # to achieve that referring to attrs.buildInputs. + buildInputs = [args.pkgconfig args.libxslt xorg.libpthreadstubs /*xorg.python*/ + xorg.libXau xorg.xcbproto xorg.libXdmcp ] ++ [ xorg.xproto ]; + buildNativeInputs = [ args.python ]; + }; + + xcbproto = attrs : attrs // { + # I only remove python from the original. + buildInputs = [args.pkgconfig /*xorg.python*/ ]; + buildNativeInputs = [ args.python ]; }; libXext = attrs: attrs // { diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 2fb6471ed07..89976531584 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -2874,11 +2874,16 @@ let * pkgconfig is optionally taken from the stdenv to allow bootstrapping * of glib and pkgconfig itself on MinGW. */ - pkgconfig = useFromStdenv "pkgconfig" + pkgconfigReal = useFromStdenv "pkgconfig" (import ../development/tools/misc/pkgconfig { inherit fetchurl stdenv; }); + /* Make pkgconfig always return a buildDrv, never a proper hostDrv, + because most usage of pkgconfig as buildInput (inheritance of + pre-cross nixpkgs) means using it using as buildNativeInput */ + pkgconfig = pkgconfigReal // { hostDrv = pkgconfigReal.buildDrv; }; + radare = import ../development/tools/analysis/radare { inherit stdenv fetchurl pkgconfig libusb readline gtkdialog python ruby libewf perl; From d0d2c6e3fe1e57ffec460a2330c79c19a9e7c770 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Llu=C3=ADs=20Batlle=20i=20Rossell?= Date: Sat, 21 Nov 2009 14:49:25 +0000 Subject: [PATCH 047/232] Overriding some xorg expressions for them to cross-build. Now SDL cross-builds clean. svn path=/nixpkgs/branches/stdenv-updates/; revision=18501 --- pkgs/servers/x11/xorg/overrides.nix | 35 ++++++++++++++++++++++++++++- 1 file changed, 34 insertions(+), 1 deletion(-) diff --git a/pkgs/servers/x11/xorg/overrides.nix b/pkgs/servers/x11/xorg/overrides.nix index 8114567c1b6..4f25334e397 100644 --- a/pkgs/servers/x11/xorg/overrides.nix +++ b/pkgs/servers/x11/xorg/overrides.nix @@ -1,5 +1,11 @@ {args, xorg}: - +let + setMalloc0ReturnsNullCrossCompiling = '' + if test -n "$crossConfig"; then + configureFlags="$configureFlags --enable-malloc0returnsnull"; + fi + ''; +in { fontmiscmisc = attrs: attrs // { @@ -35,8 +41,35 @@ buildNativeInputs = [ args.python ]; }; + libX11 = attrs: attrs // { + preConfigure = setMalloc0ReturnsNullCrossCompiling; + }; + + libXrender = attrs: attrs // { + preConfigure = setMalloc0ReturnsNullCrossCompiling; + }; + + libXxf86vm = attrs: attrs // { + preConfigure = setMalloc0ReturnsNullCrossCompiling; + }; + + libXrandr = attrs: attrs // { + preConfigure = setMalloc0ReturnsNullCrossCompiling; + }; + + libXt = attrs: attrs // { + preConfigure = setMalloc0ReturnsNullCrossCompiling; + }; + + libXft = attrs: attrs // { + buildInputs = attrs.buildInputs ++ [ xorg.xproto xorg.libX11 + xorg.renderproto ]; + preConfigure = setMalloc0ReturnsNullCrossCompiling; + }; + libXext = attrs: attrs // { buildInputs = attrs.buildInputs ++ [xorg.libXau]; + preConfigure = setMalloc0ReturnsNullCrossCompiling; }; libXpm = attrs: attrs // { From b1e17f71a61ed95cb510a8f1ca83a8df5dcc2b8e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= Date: Sat, 21 Nov 2009 14:55:51 +0000 Subject: [PATCH 048/232] glibc 2.11: Remove unneeded patches. svn path=/nixpkgs/branches/stdenv-updates/; revision=18502 --- .../libraries/glibc-2.11/binutils-2.20.patch | 42 ------------------- .../libraries/glibc-2.11/binutils-ld.patch | 33 --------------- .../libraries/glibc-2.11/default.nix | 5 --- 3 files changed, 80 deletions(-) delete mode 100644 pkgs/development/libraries/glibc-2.11/binutils-2.20.patch delete mode 100644 pkgs/development/libraries/glibc-2.11/binutils-ld.patch diff --git a/pkgs/development/libraries/glibc-2.11/binutils-2.20.patch b/pkgs/development/libraries/glibc-2.11/binutils-2.20.patch deleted file mode 100644 index ab3d6144d6e..00000000000 --- a/pkgs/development/libraries/glibc-2.11/binutils-2.20.patch +++ /dev/null @@ -1,42 +0,0 @@ -Support GNU Binutils 2.20 and beyond. Patch from -http://sourceware.org/ml/libc-alpha/2009-09/msg00009.html . - -diff --git a/configure b/configure -index 48e6952..b1d84d7 100755 ---- a/configure -+++ b/configure -@@ -4841,7 +4841,7 @@ $as_echo_n "checking version of $AS... " >&6; } - ac_prog_version=`$AS --version 2>&1 | sed -n 's/^.*GNU assembler.* \([0-9]*\.[0-9.]*\).*$/\1/p'` - case $ac_prog_version in - '') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;; -- 2.1[3-9]*) -+ 2.1[3-9]*|[2-9].[2-9]*) - ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;; - *) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;; - -@@ -4904,7 +4904,7 @@ $as_echo_n "checking version of $LD... " >&6; } - ac_prog_version=`$LD --version 2>&1 | sed -n 's/^.*GNU ld.* \([0-9][0-9]*\.[0-9.]*\).*$/\1/p'` - case $ac_prog_version in - '') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;; -- 2.1[3-9]*) -+ 2.1[3-9]*|[2-9].[2-9]*) - ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;; - *) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;; - -diff --git a/configure.in b/configure.in -index 4584afe..7c4f71f 100644 ---- a/configure.in -+++ b/configure.in -@@ -897,10 +897,10 @@ AC_SUBST(MIG)dnl Needed by sysdeps/mach/configure.in - # Accept binutils 2.13 or newer. - AC_CHECK_PROG_VER(AS, $AS, --version, - [GNU assembler.* \([0-9]*\.[0-9.]*\)], -- [2.1[3-9]*], AS=: critic_missing="$critic_missing as") -+ [2.1[3-9]*|[2-9].[2-9]*], AS=: critic_missing="$critic_missing as") - AC_CHECK_PROG_VER(LD, $LD, --version, - [GNU ld.* \([0-9][0-9]*\.[0-9.]*\)], -- [2.1[3-9]*], LD=: critic_missing="$critic_missing ld") -+ [2.1[3-9]*|[2-9].[2-9]*], LD=: critic_missing="$critic_missing ld") - - # We need the physical current working directory. We cannot use the - # "pwd -P" shell builtin since that's not portable. Instead we try to diff --git a/pkgs/development/libraries/glibc-2.11/binutils-ld.patch b/pkgs/development/libraries/glibc-2.11/binutils-ld.patch deleted file mode 100644 index ae70f145ce0..00000000000 --- a/pkgs/development/libraries/glibc-2.11/binutils-ld.patch +++ /dev/null @@ -1,33 +0,0 @@ -From 7c8a67320e26b8c11108bf0a3410d3aef9cf3486 Mon Sep 17 00:00:00 2001 -From: Ulrich Drepper -Date: Sat, 31 Jan 2009 00:21:15 +0000 -Subject: [PATCH] * elf/Makefile (ld.so): Adjust the sed script to insert _begin in to - - newer linker scripts. ---- - ChangeLog | 5 +++++ - elf/Makefile | 4 ++-- - 2 files changed, 7 insertions(+), 2 deletions(-) - -diff --git a/elf/Makefile b/elf/Makefile -index 8079fe9..e44ff1d 100644 ---- a/elf/Makefile -+++ b/elf/Makefile -@@ -1,4 +1,4 @@ --# Copyright (C) 1995-2007, 2008 Free Software Foundation, Inc. -+# Copyright (C) 1995-2007, 2008, 2009 Free Software Foundation, Inc. - # This file is part of the GNU C Library. - - # The GNU C Library is free software; you can redistribute it and/or -@@ -304,7 +304,7 @@ $(objpfx)ld.so: $(objpfx)librtld.os $(ld-map) - $(LDFLAGS-rtld) -Wl,-z,defs -Wl,--verbose 2>&1 | \ - LC_ALL=C \ - sed -e '/^=========/,/^=========/!d;/^=========/d' \ -- -e 's/\. = 0 + SIZEOF_HEADERS;/& _begin = . - SIZEOF_HEADERS;/' \ -+ -e 's/\. = .* + SIZEOF_HEADERS;/& _begin = . - SIZEOF_HEADERS;/' \ - > $@.lds - $(LINK.o) -nostdlib -nostartfiles -shared -o $@ \ - $(LDFLAGS-rtld) -Wl,-z,defs $(z-now-$(bind-now)) \ --- -1.6.4 - diff --git a/pkgs/development/libraries/glibc-2.11/default.nix b/pkgs/development/libraries/glibc-2.11/default.nix index 5cfdb22e6ac..c0d0e4209c9 100644 --- a/pkgs/development/libraries/glibc-2.11/default.nix +++ b/pkgs/development/libraries/glibc-2.11/default.nix @@ -53,11 +53,6 @@ stdenv.mkDerivation rec { /* Have rpcgen(1) look for cpp(1) in $PATH. */ ./rpcgen-path.patch - - /* Support GNU Binutils 2.20 and above. */ - ./binutils-2.20.patch - - ./binutils-ld.patch ]; configureFlags = [ From c9ecbf7894cd5ae0ab3b85b1a51d829a7db81635 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Llu=C3=ADs=20Batlle=20i=20Rossell?= Date: Sat, 21 Nov 2009 15:39:20 +0000 Subject: [PATCH 049/232] Adding a note about a change to do in the big-renaming to allow clear buildInputs and buildNativeInputs, on pkgconfig, which now works always as buildDrv even asking for its hostDrv. Key string: cross_renaming svn path=/nixpkgs/branches/stdenv-updates/; revision=18506 --- pkgs/top-level/all-packages.nix | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 89976531584..088d0d22674 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -2881,7 +2881,10 @@ let /* Make pkgconfig always return a buildDrv, never a proper hostDrv, because most usage of pkgconfig as buildInput (inheritance of - pre-cross nixpkgs) means using it using as buildNativeInput */ + pre-cross nixpkgs) means using it using as buildNativeInput + cross_renaming: we should make all programs use pkgconfig as + buildNativeInput after the renaming. + */ pkgconfig = pkgconfigReal // { hostDrv = pkgconfigReal.buildDrv; }; radare = import ../development/tools/analysis/radare { From e5e6e853deab0ea5408b07313e79a2380d566e21 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= Date: Sat, 21 Nov 2009 15:40:52 +0000 Subject: [PATCH 050/232] glibc 2.11: Link against `libssp'. svn path=/nixpkgs/branches/stdenv-updates/; revision=18507 --- pkgs/development/libraries/glibc-2.11/default.nix | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/pkgs/development/libraries/glibc-2.11/default.nix b/pkgs/development/libraries/glibc-2.11/default.nix index c0d0e4209c9..4a5f651f19b 100644 --- a/pkgs/development/libraries/glibc-2.11/default.nix +++ b/pkgs/development/libraries/glibc-2.11/default.nix @@ -58,6 +58,10 @@ stdenv.mkDerivation rec { configureFlags = [ "--enable-add-ons" "--with-headers=${kernelHeaders}/include" + + /* Make sure `nscd' et al. are linked against `libssp'. */ + "LDFLAGS=-fstack-protector" + (if profilingLibraries then "--enable-profile" else "--disable-profile") ] ++ stdenv.lib.optionals (cross != null) [ "--host=${cross.config}" From 3548887c27b3c778c1a93781f6c9a29a1f3aa1f1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= Date: Sun, 22 Nov 2009 00:22:42 +0000 Subject: [PATCH 051/232] GNU Coreutils: Comment on test failures. svn path=/nixpkgs/branches/stdenv-updates/; revision=18512 --- pkgs/tools/misc/coreutils/default.nix | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/pkgs/tools/misc/coreutils/default.nix b/pkgs/tools/misc/coreutils/default.nix index 87150839443..e42e46d0102 100644 --- a/pkgs/tools/misc/coreutils/default.nix +++ b/pkgs/tools/misc/coreutils/default.nix @@ -10,7 +10,10 @@ stdenv.mkDerivation rec { buildInputs = [ perl ] ++ stdenv.lib.optional aclSupport acl; - # The check failed the last time we enabled it + # The tests are known broken on Cygwin + # (http://thread.gmane.org/gmane.comp.gnu.core-utils.bugs/19025). + # For the rest, wait for upstream reply at: + # http://thread.gmane.org/gmane.comp.gnu.core-utils.bugs/19024 . doCheck = false; meta = { From 60a661259b2a56e4cc689b9d5a374cd9c1d15728 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= Date: Sun, 22 Nov 2009 00:22:47 +0000 Subject: [PATCH 052/232] glibc 2.11: Try to fix link errors for `nscd'. svn path=/nixpkgs/branches/stdenv-updates/; revision=18513 --- pkgs/development/libraries/glibc-2.11/default.nix | 7 +++---- .../libraries/glibc-2.11/stack-protector-link.patch | 12 ++++++++++++ 2 files changed, 15 insertions(+), 4 deletions(-) create mode 100644 pkgs/development/libraries/glibc-2.11/stack-protector-link.patch diff --git a/pkgs/development/libraries/glibc-2.11/default.nix b/pkgs/development/libraries/glibc-2.11/default.nix index 4a5f651f19b..1eac67fea65 100644 --- a/pkgs/development/libraries/glibc-2.11/default.nix +++ b/pkgs/development/libraries/glibc-2.11/default.nix @@ -53,15 +53,14 @@ stdenv.mkDerivation rec { /* Have rpcgen(1) look for cpp(1) in $PATH. */ ./rpcgen-path.patch + + /* Make sure `nscd' et al. are linked against `libssp'. */ + ./stack-protector-link.patch ]; configureFlags = [ "--enable-add-ons" "--with-headers=${kernelHeaders}/include" - - /* Make sure `nscd' et al. are linked against `libssp'. */ - "LDFLAGS=-fstack-protector" - (if profilingLibraries then "--enable-profile" else "--disable-profile") ] ++ stdenv.lib.optionals (cross != null) [ "--host=${cross.config}" diff --git a/pkgs/development/libraries/glibc-2.11/stack-protector-link.patch b/pkgs/development/libraries/glibc-2.11/stack-protector-link.patch new file mode 100644 index 00000000000..7ef329a0980 --- /dev/null +++ b/pkgs/development/libraries/glibc-2.11/stack-protector-link.patch @@ -0,0 +1,12 @@ +Make sure `nscd' et al. are linked against `libssp'. + +--- glibc-2.11/nscd/Makefile 2009-10-30 18:17:08.000000000 +0100 ++++ glibc-2.11/nscd/Makefile 2009-11-22 01:19:37.000000000 +0100 +@@ -126,6 +126,7 @@ CFLAGS-res_hconf.c += $(nscd-cflags) + ifeq (yesyes,$(have-fpie)$(build-shared)) + relro-LDFLAGS += -Wl,-z,now + ++$(objpfx)nscd: LDFLAGS += -fstack-protector + $(objpfx)nscd: $(addprefix $(objpfx),$(nscd-modules:=.o)) + $(+link-pie) + endif From 544032ea332d4721a706fbef001b21bb92ca5cae Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= Date: Sun, 22 Nov 2009 00:57:20 +0000 Subject: [PATCH 053/232] glibc 2.11: Try again to fix link errors for `nscd'. svn path=/nixpkgs/branches/stdenv-updates/; revision=18518 --- .../development/libraries/glibc-2.11/stack-protector-link.patch | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/development/libraries/glibc-2.11/stack-protector-link.patch b/pkgs/development/libraries/glibc-2.11/stack-protector-link.patch index 7ef329a0980..d200ece52df 100644 --- a/pkgs/development/libraries/glibc-2.11/stack-protector-link.patch +++ b/pkgs/development/libraries/glibc-2.11/stack-protector-link.patch @@ -6,7 +6,7 @@ Make sure `nscd' et al. are linked against `libssp'. ifeq (yesyes,$(have-fpie)$(build-shared)) relro-LDFLAGS += -Wl,-z,now -+$(objpfx)nscd: LDFLAGS += -fstack-protector ++$(objpfx)nscd: LDFLAGS += -lssp $(objpfx)nscd: $(addprefix $(objpfx),$(nscd-modules:=.o)) $(+link-pie) endif From 1b5b1b62e1a5cb616105b379a324b154b36f78f1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= Date: Sun, 22 Nov 2009 16:03:43 +0000 Subject: [PATCH 054/232] glibc 2.11: Fix i686-linux builds. svn path=/nixpkgs/branches/stdenv-updates/; revision=18525 --- pkgs/development/libraries/glibc-2.11/default.nix | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/pkgs/development/libraries/glibc-2.11/default.nix b/pkgs/development/libraries/glibc-2.11/default.nix index 1eac67fea65..8725eae73c1 100644 --- a/pkgs/development/libraries/glibc-2.11/default.nix +++ b/pkgs/development/libraries/glibc-2.11/default.nix @@ -105,3 +105,16 @@ stdenv.mkDerivation rec { platforms = stdenv.lib.platforms.linux; }; } + +// + +(if (stdenv.system == "i686-linux") + then { + # Workaround for this bug: + # http://sourceware.org/bugzilla/show_bug.cgi?id=411 + # I.e. when gcc is compiled with --with-arch=i686, then the + # preprocessor symbol `__i686' will be defined to `1'. This causes + # the symbol __i686.get_pc_thunk.dx to be mangled. + NIX_CFLAGS_COMPILE = "-U__i686"; + } + else {}) From 04a15b29b08913b4e7025fec445ac8a2c7b8ac1d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= Date: Sun, 22 Nov 2009 16:03:56 +0000 Subject: [PATCH 055/232] glibc 2.11: Factorize the libc/info/locales expressions. svn path=/nixpkgs/branches/stdenv-updates/; revision=18526 --- .../libraries/glibc-2.11/builder.sh | 50 ------ .../libraries/glibc-2.11/common.nix | 154 ++++++++++++++++++ .../libraries/glibc-2.11/default.nix | 139 ++++------------ .../development/libraries/glibc-2.11/info.nix | 56 ++----- .../libraries/glibc-2.11/locales.nix | 79 +++------ .../libraries/glibc-2.11/localesbuilder.sh | 33 ---- 6 files changed, 234 insertions(+), 277 deletions(-) create mode 100644 pkgs/development/libraries/glibc-2.11/common.nix diff --git a/pkgs/development/libraries/glibc-2.11/builder.sh b/pkgs/development/libraries/glibc-2.11/builder.sh index 6f1b1bbbbe1..fc1ea2f83eb 100644 --- a/pkgs/development/libraries/glibc-2.11/builder.sh +++ b/pkgs/development/libraries/glibc-2.11/builder.sh @@ -3,56 +3,6 @@ export NIX_NO_SELF_RPATH=1 source $stdenv/setup -# Explicitly tell glibc to use our pwd, not /bin/pwd. -export PWD_P=$(type -tP pwd) - -# Needed to install share/zoneinfo/zone.tab. Set to impure /bin/sh to -# prevent a retained dependency on the bootstrap tools in the -# stdenv-linux bootstrap. -export BASH_SHELL=/bin/sh - - -preConfigure() { - - for i in configure io/ftwtest-sh; do - # Can't use substituteInPlace here because replace hasn't been - # built yet in the bootstrap. - sed -i "$i" -e "s^/bin/pwd^$PWD_P^g" - done - - # In the glibc 2.6/2.7 tarballs C-translit.h is a little bit older - # than C-translit.h.in, forcing Make to rebuild it unnecessarily. - # This wouldn't be problem except that it requires Perl, which we - # don't want as a dependency in the Nixpkgs bootstrap. So force - # the output file to be newer. - touch locale/C-translit.h - - if test -n "$crossConfig"; then - sed -i s/-lgcc_eh//g Makeconfig - fi - - mkdir build - cd build - - configureScript=../configure - if test -n "$crossConfig"; then - cat > config.cache << "EOF" -libc_cv_forced_unwind=yes -libc_cv_c_cleanup=yes -libc_cv_gnu89_inline=yes -EOF - export BUILD_CC=gcc - export CC="${crossConfig}-gcc" - export AR="${crossConfig}-ar" - export RANLIB="${crossConfig}-ranlib" - configureFlags="${configureFlags} --cache-file=config.cache" - - # The host stripp will destroy everything in the target binaries otherwise - dontStrip=1 - fi -} - - postConfigure() { # Hack: get rid of the `-static' flag set by the bootstrap stdenv. # This has to be done *after* `configure' because it builds some diff --git a/pkgs/development/libraries/glibc-2.11/common.nix b/pkgs/development/libraries/glibc-2.11/common.nix new file mode 100644 index 00000000000..54fe7afca1f --- /dev/null +++ b/pkgs/development/libraries/glibc-2.11/common.nix @@ -0,0 +1,154 @@ +/* Build configuration used to build glibc, Info files, and locale + information. */ + +{ name, fetchurl, stdenv, installLocales ? false +, cross ? null, gccCross ? null, kernelHeaders ? null +, profilingLibraries ? false, meta, ... }@args : + +let version = "2.11"; +in +assert (cross != null) -> (gccCross != null); + +stdenv.mkDerivation ({ + inherit kernelHeaders installLocales; + + # The host/target system. + crossConfig = if (cross != null) then cross.config else null; + + inherit (stdenv) is64bit; + + patches = [ + /* Fix for NIXPKGS-79: when doing host name lookups, when + nsswitch.conf contains a line like + + hosts: files mdns4_minimal [NOTFOUND=return] dns mdns4 + + don't return an error when mdns4_minimal can't be found. This + is a bug in Glibc: when a service can't be found, NSS should + continue to the next service unless "UNAVAIL=return" is set. + ("NOTFOUND=return" refers to the service returning a NOTFOUND + error, not the service itself not being found.) The reason is + that the "status" variable (while initialised to UNAVAIL) is + outside of the loop that iterates over the services, the + "files" service sets status to NOTFOUND. So when the call to + find "mdns4_minimal" fails, "status" will still be NOTFOUND, + and it will return instead of continuing to "dns". Thus, the + line + + hosts: mdns4_minimal [NOTFOUND=return] dns mdns4 + + does work because "status" will contain UNAVAIL after the + failure to find mdns4_minimal. */ + ./nss-skip-unavail.patch + + /* Make it possible to override the locale-archive in NixOS. */ + ./locale-override.patch + + /* Have rpcgen(1) look for cpp(1) in $PATH. */ + ./rpcgen-path.patch + + /* Make sure `nscd' et al. are linked against `libssp'. */ + ./stack-protector-link.patch + ]; + + configureFlags = [ + "-C" + "--enable-add-ons" + (if kernelHeaders != null + then "--with-headers=${kernelHeaders}/include" + else "--without-headers") + (if profilingLibraries + then "--enable-profile" + else "--disable-profile") + ] ++ stdenv.lib.optionals (cross != null) [ + "--host=${cross.config}" + "--build=${stdenv.system}" + "--with-tls" + "--enable-kernel=2.6.0" + "--without-fp" + "--with-__thread" + ] ++ (if (stdenv.system == "armv5tel-linux") then [ + "--host=arm-linux-gnueabi" + "--build=arm-linux-gnueabi" + "--without-fp" + ] else []); + + buildInputs = stdenv.lib.optionals (cross != null) [ gccCross ]; + + # Needed to install share/zoneinfo/zone.tab. Set to impure /bin/sh to + # prevent a retained dependency on the bootstrap tools in the stdenv-linux + # bootstrap. + BASH_SHELL = "/bin/sh"; +} + +// + +(if (stdenv.system == "i686-linux") + then { + # Workaround for this bug: + # http://sourceware.org/bugzilla/show_bug.cgi?id=411 + # I.e. when gcc is compiled with --with-arch=i686, then the + # preprocessor symbol `__i686' will be defined to `1'. This causes + # the symbol __i686.get_pc_thunk.dx to be mangled. + NIX_CFLAGS_COMPILE = "-U__i686"; + } + else {}) + + // + + args + + // + +{ + name = args.name + "-${version}"; + + src = fetchurl { + url = "mirror://gnu/glibc/glibc-${version}.tar.bz2"; + sha256 = "0b6nbr89qmqcvzz26ggnw7gcxhvnzbc8z299h12wqjmcix4hxwcy"; + }; + + # `fetchurl' is a function and thus should not be passed to the + # `derivation' primitive. + fetchurl = null; + + # Remove absolute paths from `configure' & co.; build out-of-tree. + preConfigure = '' + export PWD_P=$(type -tP pwd) + for i in configure io/ftwtest-sh; do + # Can't use substituteInPlace here because replace hasn't been + # built yet in the bootstrap. + sed -i "$i" -e "s^/bin/pwd^$PWD_P^g" + done + mkdir ../build + cd ../build + + configureScript="../$sourceRoot/configure" + + ${if args ? preConfigure + then args.preConfigure + else ""} + ''; + + meta = ({ + homepage = http://www.gnu.org/software/libc/; + description = "The GNU C Library"; + + longDescription = + '' Any Unix-like operating system needs a C library: the library which + defines the "system calls" and other basic facilities such as + open, malloc, printf, exit... + + The GNU C library is used as the C library in the GNU system and + most systems with the Linux kernel. + ''; + + license = "LGPLv2+"; + + maintainers = [ stdenv.lib.maintainers.ludo ]; + platforms = stdenv.lib.platforms.linux; + } + // + args.meta + ); +}) diff --git a/pkgs/development/libraries/glibc-2.11/default.nix b/pkgs/development/libraries/glibc-2.11/default.nix index 8725eae73c1..866a2370eb1 100644 --- a/pkgs/development/libraries/glibc-2.11/default.nix +++ b/pkgs/development/libraries/glibc-2.11/default.nix @@ -5,116 +5,49 @@ , gccCross ? null }: -/* FIXME: Update `locales.nix' and `info.nix'. */ -let version = "2.11"; in +let build = import ./common.nix; +in + build ({ + name = "glibc" + + stdenv.lib.optionalString (cross != null) "-${cross.config}"; -stdenv.mkDerivation rec { - name = "glibc-${version}" + - stdenv.lib.optionalString (cross != null) "-${cross.config}"; + inherit fetchurl stdenv kernelHeaders installLocales profilingLibraries + cross gccCross; - builder = ./builder.sh; + builder = ./builder.sh; - src = fetchurl { - url = "mirror://gnu/glibc/${name}.tar.bz2"; - sha256 = "0b6nbr89qmqcvzz26ggnw7gcxhvnzbc8z299h12wqjmcix4hxwcy"; - }; + preInstall = '' + ensureDir $out/lib + ln -s ${stdenv.gcc.gcc}/lib/libgcc_s.so.1 $out/lib/libgcc_s.so.1 + ''; - inherit kernelHeaders installLocales; - crossConfig = if (cross != null) then cross.config else null; + postInstall = '' + rm $out/lib/libgcc_s.so.1 + ''; - inherit (stdenv) is64bit; + meta.description = "The GNU C Library"; + } - patches = [ - /* Fix for NIXPKGS-79: when doing host name lookups, when - nsswitch.conf contains a line like + // - hosts: files mdns4_minimal [NOTFOUND=return] dns mdns4 + (if cross != null + then { + preConfigure = '' + sed -i s/-lgcc_eh//g "../$sourceRoot/Makeconfig" - don't return an error when mdns4_minimal can't be found. This - is a bug in Glibc: when a service can't be found, NSS should - continue to the next service unless "UNAVAIL=return" is set. - ("NOTFOUND=return" refers to the service returning a NOTFOUND - error, not the service itself not being found.) The reason is - that the "status" variable (while initialised to UNAVAIL) is - outside of the loop that iterates over the services, the - "files" service sets status to NOTFOUND. So when the call to - find "mdns4_minimal" fails, "status" will still be NOTFOUND, - and it will return instead of continuing to "dns". Thus, the - line + cat > config.cache << "EOF" +libc_cv_forced_unwind=yes +libc_cv_c_cleanup=yes +libc_cv_gnu89_inline=yes +EOF + export BUILD_CC=gcc + export CC="$crossConfig-gcc" + export AR="$crossConfig-ar" + export RANLIB="$crossConfig-ranlib" - hosts: mdns4_minimal [NOTFOUND=return] dns mdns4 - - does work because "status" will contain UNAVAIL after the - failure to find mdns4_minimal. */ - ./nss-skip-unavail.patch - - /* Make it possible to override the locale-archive in NixOS. */ - ./locale-override.patch - - /* Have rpcgen(1) look for cpp(1) in $PATH. */ - ./rpcgen-path.patch - - /* Make sure `nscd' et al. are linked against `libssp'. */ - ./stack-protector-link.patch - ]; - - configureFlags = [ - "--enable-add-ons" - "--with-headers=${kernelHeaders}/include" - (if profilingLibraries then "--enable-profile" else "--disable-profile") - ] ++ stdenv.lib.optionals (cross != null) [ - "--host=${cross.config}" - "--build=${stdenv.system}" - "--with-tls" - "--enable-kernel=2.6.0" - "--without-fp" - "--with-__thread" - ] ++ (if (stdenv.system == "armv5tel-linux") then [ - "--host=arm-linux-gnueabi" - "--build=arm-linux-gnueabi" - "--without-fp" - ] else []); - - buildInputs = stdenv.lib.optionals (cross != null) [ gccCross ]; - - preInstall = '' - ensureDir $out/lib - ln -s ${stdenv.gcc.gcc}/lib/libgcc_s.so.1 $out/lib/libgcc_s.so.1 - ''; - - postInstall = '' - rm $out/lib/libgcc_s.so.1 - ''; - - meta = { - homepage = http://www.gnu.org/software/libc/; - description = "The GNU C Library"; - - longDescription = - '' Any Unix-like operating system needs a C library: the library which - defines the "system calls" and other basic facilities such as - open, malloc, printf, exit... - - The GNU C library is used as the C library in the GNU system and - most systems with the Linux kernel. + # The host strip will destroy everything in the target binaries + # otherwise. + dontStrip=1 ''; - - license = "LGPLv2+"; - - maintainers = [ stdenv.lib.maintainers.ludo ]; - platforms = stdenv.lib.platforms.linux; - }; -} - -// - -(if (stdenv.system == "i686-linux") - then { - # Workaround for this bug: - # http://sourceware.org/bugzilla/show_bug.cgi?id=411 - # I.e. when gcc is compiled with --with-arch=i686, then the - # preprocessor symbol `__i686' will be defined to `1'. This causes - # the symbol __i686.get_pc_thunk.dx to be mangled. - NIX_CFLAGS_COMPILE = "-U__i686"; - } - else {}) + } + else {})) diff --git a/pkgs/development/libraries/glibc-2.11/info.nix b/pkgs/development/libraries/glibc-2.11/info.nix index 2b9c0f38533..926598b3760 100644 --- a/pkgs/development/libraries/glibc-2.11/info.nix +++ b/pkgs/development/libraries/glibc-2.11/info.nix @@ -1,47 +1,25 @@ { stdenv, fetchurl, texinfo, perl }: -stdenv.mkDerivation rec { - name = "glibc-info-2.9"; - - src = fetchurl { - url = http://nixos.org/tarballs/glibc-2.9-20081208.tar.bz2; - sha256 = "0zhxbgcsl97pf349m0lz8d5ljvvzrcqc23yf08d888xlk4ms8m3h"; - }; +let build = import ./common.nix; +in + build { + name = "glibc-info"; - patches = [ - /* Support GNU Binutils 2.20 and above. */ - ./binutils-2.20.patch - ]; + inherit fetchurl stdenv; - preConfigure = '' - export PWD_P=$(type -tP pwd) - for i in configure io/ftwtest-sh; do - # Can't use substituteInPlace here because replace hasn't been - # built yet in the bootstrap. - sed -i "$i" -e "s^/bin/pwd^$PWD_P^g" - done - mkdir ../build - cd ../build - - configureScript=../$sourceRoot/configure - ''; + configureFlags = [ "--enable-add-ons" ]; - configureFlags = [ "--enable-add-ons" ]; + buildInputs = [ texinfo perl ]; - buildInputs = [ texinfo perl ]; + buildPhase = "make info"; - buildPhase = "make info"; + # I don't know why the info is not generated in 'build' + # Somehow building the info still does not work, because the final + # libc.info hasn't a Top node. + installPhase = '' + ensureDir "$out/share/info" + cp -v "../$sourceRoot/manual/"*.info* "$out/share/info" + ''; - # I don't know why the info is not generated in 'build' - # Somehow building the info still does not work, because the final - # libc.info hasn't a Top node. - installPhase = '' - ensureDir $out/share/info - cp ../$sourceRoot/manual/*.info $out/share/info - ''; - - meta = { - homepage = http://www.gnu.org/software/libc/; - description = "GNU Info manual of the GNU C Library"; - }; -} + meta.description = "GNU Info manual of the GNU C Library"; + } diff --git a/pkgs/development/libraries/glibc-2.11/locales.nix b/pkgs/development/libraries/glibc-2.11/locales.nix index 3046374ca34..64e6bd43a67 100644 --- a/pkgs/development/libraries/glibc-2.11/locales.nix +++ b/pkgs/development/libraries/glibc-2.11/locales.nix @@ -8,60 +8,35 @@ { stdenv, fetchurl, allLocales ? true, locales ? ["en_US.UTF-8/UTF-8"] }: -stdenv.mkDerivation rec { - name = "glibc-locales-2.9"; +let build = import ./common.nix; +in + build { + name = "glibc-locales"; - builder = ./localesbuilder.sh; + inherit fetchurl stdenv; + installLocales = true; - src = fetchurl { - url = http://ftp.gnu.org/gnu/glibc/glibc-2.9.tar.bz2; - sha256 = "0v53m7flx6qcx7cvrvvw6a4dx4x3y6k8nvpc4wfv5xaaqy2am2q9"; - }; + builder = ./localesbuilder.sh; - srcPorts = fetchurl { - url = http://ftp.gnu.org/gnu/glibc/glibc-ports-2.9.tar.bz2; - sha256 = "0r2sn527wxqifi63di7ns9wbjh1cainxn978w178khhy7yw9fk42"; - }; + # Awful hack: `localedef' doesn't allow the path to `locale-archive' + # to be overriden, but you *can* specify a prefix, i.e. it will use + # //lib/locale/locale-archive. So we use + # $TMPDIR as a prefix, meaning that the locale-archive is placed in + # $TMPDIR/nix/store/...-glibc-.../lib/locale/locale-archive. + buildPhase = + '' + mkdir -p $TMPDIR/"$(dirname $(readlink -f $(type -p localedef)))/../lib/locale" + make localedata/install-locales \ + LOCALEDEF="localedef --prefix=$TMPDIR" \ + localedir=$out/lib/locale \ + ${if allLocales then "" else "SUPPORTED-LOCALES=\"${toString locales}\""} + ''; - inherit (stdenv) is64bit; + installPhase = + '' + ensureDir "$out/lib/locale" + cp -v "$TMPDIR/nix/store/"*"/lib/locale/locale-archive" "$out/lib/locale" + ''; - configureFlags = [ - "--enable-add-ons" - "--without-headers" - "--disable-profile" - ] ++ (if (stdenv.system == "armv5tel-linux") then [ - "--host=arm-linux-gnueabi" - "--build=arm-linux-gnueabi" - "--without-fp" - ] else []); - - patches = [ - /* Support GNU Binutils 2.20 and above. */ - ./binutils-2.20.patch - ]; - - # Awful hack: `localedef' doesn't allow the path to `locale-archive' - # to be overriden, but you *can* specify a prefix, i.e. it will use - # //lib/locale/locale-archive. So we use - # $TMPDIR as a prefix, meaning that the locale-archive is placed in - # $TMPDIR/nix/store/...-glibc-.../lib/locale/locale-archive. - buildPhase = - '' - mkdir -p $TMPDIR/"$(dirname $(readlink -f $(type -p localedef)))/../lib/locale" - make localedata/install-locales \ - LOCALEDEF="localedef --prefix=$TMPDIR" \ - localedir=$out/lib/locale \ - ${if allLocales then "" else "SUPPORTED-LOCALES=\"${toString locales}\""} - ''; - - installPhase = - '' - ensureDir $out/lib/locale - cp $TMPDIR/nix/store/*/lib/locale/locale-archive $out/lib/locale/ - ''; - - meta = { - homepage = http://www.gnu.org/software/libc/; - description = "Locale information for the GNU C Library"; - }; -} + meta.description = "Locale information for the GNU C Library"; + } diff --git a/pkgs/development/libraries/glibc-2.11/localesbuilder.sh b/pkgs/development/libraries/glibc-2.11/localesbuilder.sh index a28f6bcbaeb..d732e208fa2 100644 --- a/pkgs/development/libraries/glibc-2.11/localesbuilder.sh +++ b/pkgs/development/libraries/glibc-2.11/localesbuilder.sh @@ -3,39 +3,6 @@ export NIX_NO_SELF_RPATH=1 source $stdenv/setup -# Explicitly tell glibc to use our pwd, not /bin/pwd. -export PWD_P=$(type -tP pwd) - -# Needed to install share/zoneinfo/zone.tab. Set to impure /bin/sh to -# prevent a retained dependency on the bootstrap tools in the -# stdenv-linux bootstrap. -export BASH_SHELL=/bin/sh - - -preConfigure() { - - for i in configure io/ftwtest-sh; do - # Can't use substituteInPlace here because replace hasn't been - # built yet in the bootstrap. - sed -i "$i" -e "s^/bin/pwd^$PWD_P^g" - done - - # In the glibc 2.6/2.7 tarballs C-translit.h is a little bit older - # than C-translit.h.in, forcing Make to rebuild it unnecessarily. - # This wouldn't be problem except that it requires Perl, which we - # don't want as a dependency in the Nixpkgs bootstrap. So force - # the output file to be newer. - touch locale/C-translit.h - - tar xvjf "$srcPorts" - - mkdir build - cd build - - configureScript=../configure -} - - postConfigure() { # Hack: get rid of the `-static' flag set by the bootstrap stdenv. # This has to be done *after* `configure' because it builds some From af198a162dd97061bb566b2c19bb29d8620c0c52 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= Date: Sun, 22 Nov 2009 16:04:01 +0000 Subject: [PATCH 056/232] Switch to glibc 2.11 for the Info manual and for locales. svn path=/nixpkgs/branches/stdenv-updates/; revision=18527 --- pkgs/top-level/all-packages.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 088d0d22674..014f9e18021 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -3453,11 +3453,11 @@ let installLocales = getPkgConfig "glibc" "locales" false; }; - glibcLocales = makeOverridable (import ../development/libraries/glibc-2.9/locales.nix) { + glibcLocales = makeOverridable (import ../development/libraries/glibc-2.11/locales.nix) { inherit fetchurl stdenv; }; - glibcInfo = import ../development/libraries/glibc-2.9/info.nix { + glibcInfo = import ../development/libraries/glibc-2.11/info.nix { inherit fetchurl stdenv texinfo perl; }; From 9dcff09187d5e41ed9bf4d841243a4bf6082c719 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Llu=C3=ADs=20Batlle=20i=20Rossell?= Date: Sun, 22 Nov 2009 18:39:27 +0000 Subject: [PATCH 057/232] Fixing the coreutils reference in the gcc-wrapper - they did not get properly in the path still. svn path=/nixpkgs/branches/stdenv-updates/; revision=18531 --- pkgs/build-support/gcc-wrapper/builder.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/pkgs/build-support/gcc-wrapper/builder.sh b/pkgs/build-support/gcc-wrapper/builder.sh index cf4d6dfed96..dd64987ade2 100644 --- a/pkgs/build-support/gcc-wrapper/builder.sh +++ b/pkgs/build-support/gcc-wrapper/builder.sh @@ -69,6 +69,7 @@ doSubstitute() { -e "s^@gcc@^$gcc^g" \ -e "s^@gccProg@^$gccProg^g" \ -e "s^@binutils@^$binutils^g" \ + -e "s^@coreutils@^$coreutils^g" \ -e "s^@libc@^$libc^g" \ -e "s^@ld@^$ldPath/ld^g" \ < "$src" > "$dst" From 585ba8c27f766a15abcab22c232170f6ae1cc0a9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Llu=C3=ADs=20Batlle=20i=20Rossell?= Date: Sun, 22 Nov 2009 19:51:45 +0000 Subject: [PATCH 058/232] Big fixes in the cross build: - Before this changes, cflags and ldflags for the native and the cross compiler got mixed. Not all the gcc-wrapper/gcc-cross-wrapper variables are independant now, but enough, I think. - Fixed the generic stdenv expression, which did a big mess on buildInputs and buildNativeInputs. Now it distinguishes when there is a stdenvCross or not. Maybe we should have a single stdenv and forget about the stdenvCross adapter - this could end in a stdenv a bit complex, but simpler than the generic stdenv + adapter. - Added basic support in pkgconfig for cross-builds: a single PKG_CONFIG_PATH now works for both the cross and the native compilers, but I think this should work well for most cases I can think of. - I tried to fix the guile expression to cross-biuld; guile is built, but not its manual, so the derivation still fails. Guile requires patching to cross-build, as far as I understnad. - Made the glibcCross build to be done through the usage of a gcc-cross-wrapper over the gcc-cross-stage-static, instead of using it directly. - Trying to make physfs (a neverball dependency) cross build. - Updated the gcc expression to support building a cross compiler without getting derivation variables mixed with those of the stdenvCross. svn path=/nixpkgs/branches/stdenv-updates/; revision=18534 --- .../build-support/gcc-cross-wrapper/add-flags | 10 ++--- .../gcc-cross-wrapper/default.nix | 4 +- .../gcc-cross-wrapper/gcc-wrapper.sh | 14 +++---- .../gcc-cross-wrapper/ld-wrapper.sh | 10 ++--- .../gcc-cross-wrapper/setup-hook.sh | 18 ++++++--- pkgs/development/compilers/gcc-4.3/builder.sh | 8 ++-- .../development/compilers/gcc-4.3/default.nix | 2 +- .../interpreters/guile/default.nix | 15 ++++++-- .../libraries/glibc-2.9/default.nix | 9 ++--- pkgs/development/libraries/physfs/default.nix | 2 +- .../tools/build-managers/cmake/setup-hook.sh | 13 ++++++- .../tools/misc/pkgconfig/setup-hook.sh | 6 ++- .../linux/kernel-headers/2.6.28.nix | 4 +- pkgs/servers/x11/xorg/overrides.nix | 1 + pkgs/stdenv/adapters.nix | 9 +++++ pkgs/stdenv/generic/default.nix | 14 ++++--- pkgs/stdenv/generic/setup.sh | 9 ++++- pkgs/top-level/all-packages.nix | 37 ++++++++++--------- 18 files changed, 119 insertions(+), 66 deletions(-) diff --git a/pkgs/build-support/gcc-cross-wrapper/add-flags b/pkgs/build-support/gcc-cross-wrapper/add-flags index ac1e58ebb81..9ff4522e800 100644 --- a/pkgs/build-support/gcc-cross-wrapper/add-flags +++ b/pkgs/build-support/gcc-cross-wrapper/add-flags @@ -1,5 +1,5 @@ -export NIX_CFLAGS_COMPILE="@cflagsCompile@ $NIX_CFLAGS_COMPILE" -export NIX_CFLAGS_LINK="@cflagsLink@ $NIX_CFLAGS_LINK" -export NIX_LDFLAGS="@ldflags@ $NIX_LDFLAGS" -export NIX_LDFLAGS_BEFORE="@ldflagsBefore@ $NIX_LDFLAGS_BEFORE" -export NIX_GLIBC_FLAGS_SET=1 +export NIX_CROSS_CFLAGS_COMPILE="@cflagsCompile@ $NIX_CROSS_CFLAGS_COMPILE" +export NIX_CROSS_CFLAGS_LINK="@cflagsLink@ $NIX_CROSS_CFLAGS_LINK" +export NIX_CROSS_LDFLAGS="@ldflags@ $NIX_CROSS_LDFLAGS" +export NIX_CROSS_LDFLAGS_BEFORE="@ldflagsBefore@ $NIX_CROSS_LDFLAGS_BEFORE" +export NIX_CROSS_GLIBC_FLAGS_SET=1 diff --git a/pkgs/build-support/gcc-cross-wrapper/default.nix b/pkgs/build-support/gcc-cross-wrapper/default.nix index 140432adfbc..362e378273d 100644 --- a/pkgs/build-support/gcc-cross-wrapper/default.nix +++ b/pkgs/build-support/gcc-cross-wrapper/default.nix @@ -6,7 +6,7 @@ # variables so that the compiler and the linker just "work". { name ? "", stdenv, nativeTools, nativeLibc, noLibc ? false, nativePrefix ? "" -, gcc ? null, libc ? null, binutils ? null, shell ? "", cross ? "" +, gcc ? null, libc ? null, binutils ? null, shell ? "", cross }: assert nativeTools -> nativePrefix != ""; @@ -32,6 +32,6 @@ stdenv.mkDerivation { }; passthru = { - inherit cross; + target = cross; }; } diff --git a/pkgs/build-support/gcc-cross-wrapper/gcc-wrapper.sh b/pkgs/build-support/gcc-cross-wrapper/gcc-wrapper.sh index e5a2f5e65bb..491de8f7f98 100644 --- a/pkgs/build-support/gcc-cross-wrapper/gcc-wrapper.sh +++ b/pkgs/build-support/gcc-cross-wrapper/gcc-wrapper.sh @@ -4,7 +4,7 @@ if test -n "$NIX_GCC_WRAPPER_START_HOOK"; then source "$NIX_GCC_WRAPPER_START_HOOK" fi -if test -z "$NIX_GLIBC_FLAGS_SET"; then +if test -z "$NIX_CROSS_GLIBC_FLAGS_SET"; then source @out@/nix-support/add-flags fi @@ -63,28 +63,28 @@ fi # Add the flags for the C compiler proper. -extraAfter=($NIX_CFLAGS_COMPILE) +extraAfter=($NIX_CROSS_CFLAGS_COMPILE) extraBefore=() if test "$dontLink" != "1"; then # Add the flags that should only be passed to the compiler when # linking. - extraAfter=(${extraAfter[@]} $NIX_CFLAGS_LINK) + extraAfter=(${extraAfter[@]} $NIX_CROSS_CFLAGS_LINK) # Add the flags that should be passed to the linker (and prevent - # `ld-wrapper' from adding NIX_LDFLAGS again). - for i in $NIX_LDFLAGS_BEFORE; do + # `ld-wrapper' from adding NIX_CROSS_LDFLAGS again). + for i in $NIX_CROSS_LDFLAGS_BEFORE; do extraBefore=(${extraBefore[@]} "-Wl,$i") done - for i in $NIX_LDFLAGS; do + for i in $NIX_CROSS_LDFLAGS; do if test "${i:0:3}" = "-L/"; then extraAfter=(${extraAfter[@]} "$i") else extraAfter=(${extraAfter[@]} "-Wl,$i") fi done - export NIX_LDFLAGS_SET=1 + export NIX_CROSS_LDFLAGS_SET=1 if test "$NIX_STRIP_DEBUG" = "1"; then # Add executable-stripping flags. diff --git a/pkgs/build-support/gcc-cross-wrapper/ld-wrapper.sh b/pkgs/build-support/gcc-cross-wrapper/ld-wrapper.sh index f3ff33f5c25..226fad83359 100644 --- a/pkgs/build-support/gcc-cross-wrapper/ld-wrapper.sh +++ b/pkgs/build-support/gcc-cross-wrapper/ld-wrapper.sh @@ -4,7 +4,7 @@ if test -n "$NIX_LD_WRAPPER_START_HOOK"; then source "$NIX_LD_WRAPPER_START_HOOK" fi -if test -z "$NIX_GLIBC_FLAGS_SET"; then +if test -z "$NIX_CROSS_GLIBC_FLAGS_SET"; then source @out@/nix-support/add-flags fi @@ -14,7 +14,7 @@ source @out@/nix-support/utils # Optionally filter out paths not refering to the store. params=("$@") if test "$NIX_ENFORCE_PURITY" = "1" -a -n "$NIX_STORE" \ - -a \( -z "$NIX_IGNORE_LD_THROUGH_GCC" -o -z "$NIX_LDFLAGS_SET" \); then + -a \( -z "$NIX_IGNORE_LD_THROUGH_GCC" -o -z "$NIX_CROSS_LDFLAGS_SET" \); then rest=() n=0 while test $n -lt ${#params[*]}; do @@ -44,9 +44,9 @@ fi extra=() extraBefore=() -if test -z "$NIX_LDFLAGS_SET"; then - extra=(${extra[@]} $NIX_LDFLAGS) - extraBefore=(${extraBefore[@]} $NIX_LDFLAGS_BEFORE) +if test -z "$NIX_CROSS_LDFLAGS_SET"; then + extra=(${extra[@]} $NIX_CROSS_LDFLAGS) + extraBefore=(${extraBefore[@]} $NIX_CROSS_LDFLAGS_BEFORE) fi diff --git a/pkgs/build-support/gcc-cross-wrapper/setup-hook.sh b/pkgs/build-support/gcc-cross-wrapper/setup-hook.sh index 99618cb2112..d854f5ff0d7 100644 --- a/pkgs/build-support/gcc-cross-wrapper/setup-hook.sh +++ b/pkgs/build-support/gcc-cross-wrapper/setup-hook.sh @@ -1,14 +1,14 @@ -addCVars () { +crossAddCVars () { if test -d $1/include; then - export NIX_CFLAGS_COMPILE="$NIX_CFLAGS_COMPILE -I$1/include" + export NIX_CROSS_CFLAGS_COMPILE="$NIX_CROSS_CFLAGS_COMPILE -I$1/include" fi if test -d $1/lib; then - export NIX_LDFLAGS="$NIX_LDFLAGS -L$1/lib" + export NIX_CROSS_LDFLAGS="$NIX_CROSS_LDFLAGS -L$1/lib" fi } -crossEnvHooks=(${crossEnvHooks[@]} addCVars) +crossEnvHooks=(${crossEnvHooks[@]} crossAddCVars) # Note: these come *after* $out in the PATH (see setup.sh). @@ -22,10 +22,18 @@ fi if test -n "@libc@"; then PATH=$PATH:@libc@/bin - addCVars @libc@ + crossAddCVars @libc@ fi configureFlags="$configureFlags --build=$system --host=$crossConfig" # Disabling the tests when cross compiling, as usually the tests are meant for # native compilations. doCheck="" + +# Add the output as an rpath. +if test "$NIX_NO_SELF_RPATH" != "1"; then + export NIX_CROSS_LDFLAGS="-rpath $out/lib -rpath-link $out/lib $NIX_CROSS_LDFLAGS" + if test -n "$NIX_LIB64_IN_SELF_RPATH"; then + export NIX_CROSS_LDFLAGS="-rpath $out/lib64 -rpath-link $out/lib $NIX_CROSS_LDFLAGS" + fi +fi diff --git a/pkgs/development/compilers/gcc-4.3/builder.sh b/pkgs/development/compilers/gcc-4.3/builder.sh index 69e2a0b137e..6c3671bf7cb 100644 --- a/pkgs/development/compilers/gcc-4.3/builder.sh +++ b/pkgs/development/compilers/gcc-4.3/builder.sh @@ -40,7 +40,7 @@ if test "$noSysDirs" = "1"; then export NIX_EXTRA_LDFLAGS="$NIX_EXTRA_LDFLAGS -Wl,$i" done - if test -n "$crossConfig"; then + if test -n "$targetConfig"; then if test -z "$crossStageStatic"; then extraXCFlags="-B${glibcCross}/lib -idirafter ${glibcCross}/include" extraXLDFlags="-L${glibcCross}/lib" @@ -71,7 +71,7 @@ if test "$noSysDirs" = "1"; then ) fi - if test -n "$crossConfig" -a "$crossStageStatic" == 1; then + if test -n "$targetConfig" -a "$crossStageStatic" == 1; then # We don't want the gcc build to assume there will be a libc providing # limits.h in this stagae makeFlagsArray=( \ @@ -86,7 +86,7 @@ if test "$noSysDirs" = "1"; then fi fi -if test -n "$crossConfig"; then +if test -n "$targetConfig"; then # The host strip will destroy everything in the target binaries otherwise dontStrip=1 fi @@ -127,7 +127,7 @@ postInstall() { } -if test -z "$crossConfig"; then +if test -z "$targetConfig"; then if test -z "$profiledCompiler"; then buildFlags="bootstrap $buildFlags" else diff --git a/pkgs/development/compilers/gcc-4.3/default.nix b/pkgs/development/compilers/gcc-4.3/default.nix index 898d9b0b478..efd058756b3 100644 --- a/pkgs/development/compilers/gcc-4.3/default.nix +++ b/pkgs/development/compilers/gcc-4.3/default.nix @@ -78,7 +78,7 @@ stdenv.mkDerivation ({ inherit noSysDirs profiledCompiler staticCompiler crossStageStatic binutilsCross glibcCross; - crossConfig = if (cross != null) then cross.config else null; + targetConfig = if (cross != null) then cross.config else null; buildInputs = [texinfo gmp mpfr] ++ (optionals langTreelang [bison flex]) diff --git a/pkgs/development/interpreters/guile/default.nix b/pkgs/development/interpreters/guile/default.nix index 5be39a20f5a..905e475aba2 100644 --- a/pkgs/development/interpreters/guile/default.nix +++ b/pkgs/development/interpreters/guile/default.nix @@ -9,19 +9,26 @@ stdenv.mkDerivation rec { }; buildNativeInputs = [ makeWrapper ]; - propagatedBuildInputs = [ libtool gmp ]; - propagatedBuildNativeInputs = [readline gawk]; + buildInputs = [ libtool ]; + propagatedBuildInputs = [ readline gmp libtool ]; + propagatedBuildNativeInputs = [ gawk ]; postInstall = '' wrapProgram $out/bin/guile-snarf --prefix PATH : "${gawk}/bin" ''; - NIX_DEBUG=1; - preBuild = '' sed -e '/lt_dlinit/a lt_dladdsearchdir("'$out/lib'");' -i libguile/dynl.c ''; + # Guile needs patching to preset results for the configure tests + # about pthreads, which work only in native builds. + preConfigure = '' + if test -n "$crossConfig"; then + configureFlags="--with-threads=no $configureFlags" + fi + ''; + doCheck = true; setupHook = ./setup-hook.sh; diff --git a/pkgs/development/libraries/glibc-2.9/default.nix b/pkgs/development/libraries/glibc-2.9/default.nix index 98e281c1918..50dc51bdcb7 100644 --- a/pkgs/development/libraries/glibc-2.9/default.nix +++ b/pkgs/development/libraries/glibc-2.9/default.nix @@ -1,10 +1,11 @@ { stdenv, fetchurl, kernelHeaders , installLocales ? true , profilingLibraries ? false -, cross ? null , gccCross ? null }: - +let + cross = if gccCross != null then gccCross.target else null; +in stdenv.mkDerivation rec { name = "glibc-2.9" + stdenv.lib.optionalString (cross != null) "-${cross.config}"; @@ -67,8 +68,6 @@ stdenv.mkDerivation rec { "--with-headers=${kernelHeaders}/include" (if profilingLibraries then "--enable-profile" else "--disable-profile") ] ++ stdenv.lib.optionals (cross != null) [ - "--host=${cross.config}" - "--build=${stdenv.system}" "--with-tls" "--enable-kernel=2.6.0" "--without-fp" @@ -79,7 +78,7 @@ stdenv.mkDerivation rec { "--without-fp" ] else []); - buildInputs = stdenv.lib.optionals (cross != null) [ gccCross ]; + buildNativeInputs = stdenv.lib.optionals (cross != null) [ gccCross ]; preInstall = '' ensureDir $out/lib diff --git a/pkgs/development/libraries/physfs/default.nix b/pkgs/development/libraries/physfs/default.nix index 3eb9a980c81..79ddf9cfe11 100644 --- a/pkgs/development/libraries/physfs/default.nix +++ b/pkgs/development/libraries/physfs/default.nix @@ -8,7 +8,7 @@ stdenv.mkDerivation rec { sha256 = "072hqprni4vf4ax6b659s2xxrbz0y6iziarsczawbhi69m4azpyb"; }; - buildInputs = [ cmake ]; + buildNativeInputs = [ cmake ]; meta = { homepage = http://icculus.org/physfs/; diff --git a/pkgs/development/tools/build-managers/cmake/setup-hook.sh b/pkgs/development/tools/build-managers/cmake/setup-hook.sh index 835b9000c68..5fdd66aaace 100755 --- a/pkgs/development/tools/build-managers/cmake/setup-hook.sh +++ b/pkgs/development/tools/build-managers/cmake/setup-hook.sh @@ -32,6 +32,13 @@ cmakeConfigurePhase() cmakeFlags="-DCMAKE_INSTALL_PREFIX=$prefix $cmakeFlags" fi + if test -n "$crossConfig"; then + # By now it supports linux builds only. We should set the proper + # CMAKE_SYSTEM_NAME otherwise. + # http://www.cmake.org/Wiki/CMake_Cross_Compiling + cmakeFlags="-DCMAKE_CXX_COMPILER=$crossConfig-g++ -DCMAKE_C_COMPILER=$crossConfig-gcc $cmakeFlags" + fi + echo "cmake flags: $cmakeFlags ${cmakeFlagsArray[@]}" cmake ${cmakeDir:-.} $cmakeFlags ${cmakeFlagsArray[@]} @@ -43,4 +50,8 @@ if test -z "$dontUseCmakeConfigure"; then configurePhase=cmakeConfigurePhase fi -envHooks=(${envHooks[@]} addCMakeParams) +if test -n "$crossConfig"; then + crossEnvHooks=(${crossEnvHooks[@]} addCMakeParams) +else + envHooks=(${envHooks[@]} addCMakeParams) +fi diff --git a/pkgs/development/tools/misc/pkgconfig/setup-hook.sh b/pkgs/development/tools/misc/pkgconfig/setup-hook.sh index ea592b36d11..77a69fb1878 100644 --- a/pkgs/development/tools/misc/pkgconfig/setup-hook.sh +++ b/pkgs/development/tools/misc/pkgconfig/setup-hook.sh @@ -3,4 +3,8 @@ addPkgConfigPath () { addToSearchPath PKG_CONFIG_PATH $1/share/pkgconfig } -envHooks=(${envHooks[@]} addPkgConfigPath) +if test -n "$crossConfig"; then + crossEnvHooks=(${crossEnvHooks[@]} addPkgConfigPath) +else + envHooks=(${envHooks[@]} addPkgConfigPath) +fi diff --git a/pkgs/os-specific/linux/kernel-headers/2.6.28.nix b/pkgs/os-specific/linux/kernel-headers/2.6.28.nix index 69849112d81..4392e894e96 100644 --- a/pkgs/os-specific/linux/kernel-headers/2.6.28.nix +++ b/pkgs/os-specific/linux/kernel-headers/2.6.28.nix @@ -14,7 +14,7 @@ stdenv.mkDerivation { sha256 = "0hifjh75sinifr5138v22zwbpqln6lhn65k8b57a1dyzlqca7cl9"; }; - crossConfig = if (cross != null) then cross.config else null; + targetConfig = if (cross != null) then cross.config else null; platform = if cross != null then cross.arch else @@ -37,7 +37,7 @@ stdenv.mkDerivation { ''; buildPhase = '' - if test -n "$crossConfig"; then + if test -n "$targetConfig"; then export ARCH=$platform fi make mrproper headers_check diff --git a/pkgs/servers/x11/xorg/overrides.nix b/pkgs/servers/x11/xorg/overrides.nix index 4f25334e397..fb360e433bb 100644 --- a/pkgs/servers/x11/xorg/overrides.nix +++ b/pkgs/servers/x11/xorg/overrides.nix @@ -30,6 +30,7 @@ in libxcb = attrs : attrs // { # I only remove python from the original, and add xproto. I don't know how # to achieve that referring to attrs.buildInputs. + # I should use: builtins.unsafeDiscardStringContext buildInputs = [args.pkgconfig args.libxslt xorg.libpthreadstubs /*xorg.python*/ xorg.libXau xorg.xcbproto xorg.libXdmcp ] ++ [ xorg.xproto ]; buildNativeInputs = [ args.python ]; diff --git a/pkgs/stdenv/adapters.nix b/pkgs/stdenv/adapters.nix index e21a9e02d29..698253c0c63 100644 --- a/pkgs/stdenv/adapters.nix +++ b/pkgs/stdenv/adapters.nix @@ -130,12 +130,21 @@ rec { # And the same for propagatedBuildInputs. buildDrv = stdenv.mkDerivation args; + # Temporary expression until the cross_renaming, to handle the + # case of pkgconfig given as buildInput, but to be used as + # buildNativeInput. + hostAsBuildDrv = drv: builtins.unsafeDiscardStringContext + drv.buildDrv.drvPath == builtins.unsafeDiscardStringContext + drv.hostDrv.drvPath; + nativeInputsFromBuildInputs = stdenv.lib.filter (hostAsBuildDrv) buildInputs; + # We should overwrite the input attributes in hostDrv, to overwrite # the defaults for only-native builds in the base stdenv hostDrv = if (cross == null) then buildDrv else stdenv.mkDerivation (args // { name = name + "-" + cross.config; buildNativeInputs = buildNativeInputsDrvs + ++ nativeInputsFromBuildInputs ++ [ gccCross binutilsCross ] ++ stdenv.lib.optional selfNativeBuildInput buildDrv; buildInputs = buildInputsDrvs; diff --git a/pkgs/stdenv/generic/default.nix b/pkgs/stdenv/generic/default.nix index 0755ee46904..0ae71d183de 100644 --- a/pkgs/stdenv/generic/default.nix +++ b/pkgs/stdenv/generic/default.nix @@ -55,6 +55,8 @@ let propagatedBuildNativeInputs = if attrs ? propagatedBuildNativeInputs then attrs.propagatedBuildNativeInputs else []; + crossConfig = if (attrs ? crossConfig) then attrs.crossConfig else + null; in { builder = if attrs ? realBuilder then attrs.realBuilder else shell; @@ -64,12 +66,14 @@ let system = result.system; # That build by the cross compiler - buildInputs = []; - propagatedBuildInputs = []; + buildInputs = lib.optionals (crossConfig != null) buildInputs; + propagatedBuildInputs = lib.optionals (crossConfig != null) + propagatedBuildInputs; # That build by the usual native compiler - buildNativeInputs = buildInputs ++ buildNativeInputs; - propagatedBuildNativeInputs = propagatedBuildInputs ++ - propagatedBuildNativeInputs; + buildNativeInputs = buildNativeInputs ++ lib.optionals + (crossConfig == null) buildInputs; + propagatedBuildNativeInputs = propagatedBuildNativeInputs ++ + lib.optionals (crossConfig == null) propagatedBuildInputs; })) ) # The meta attribute is passed in the resulting attribute set, diff --git a/pkgs/stdenv/generic/setup.sh b/pkgs/stdenv/generic/setup.sh index 62d441439d8..631182f6b7c 100644 --- a/pkgs/stdenv/generic/setup.sh +++ b/pkgs/stdenv/generic/setup.sh @@ -124,6 +124,7 @@ if test -z "$SHELL"; then echo "SHELL not set"; exit 1; fi # Hack: run gcc's setup hook. envHooks=() +crossEnvHooks=() if test -f $NIX_GCC/nix-support/setup-hook; then source $NIX_GCC/nix-support/setup-hook fi @@ -203,10 +204,16 @@ for i in $nativePkgs; do addToNativeEnv $i done -crossEnvHooks=() addToCrossEnv() { local pkg=$1 + # Some programs put important build scripts (freetype-config and similar) + # into their hostDrv bin path. Intentionally these should go after + # the nativePkgs in PATH. + if test -d $1/bin; then + addToSearchPath _PATH $1/bin + fi + # Run the package-specific hooks set by the setup-hook scripts. for i in "${crossEnvHooks[@]}"; do $i $pkg diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 014f9e18021..aadf74ed753 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -183,6 +183,8 @@ let } else stdenvCross; + forceBuildDrv = drv : drv // { hostDrv = drv.buildDrv; }; + # A stdenv capable of building 32-bit binaries. On x86_64-linux, # it uses GCC compiled with multilib support; on i686-linux, it's # just the plain stdenv. @@ -1776,7 +1778,6 @@ let })); gcc43_realCross = cross : makeOverridable (import ../development/compilers/gcc-4.3) { - #stdenv = overrideGCC stdenv (wrapGCCWith (import ../build-support/gcc-wrapper) glibc_multi gcc); inherit stdenv fetchurl texinfo gmp mpfr noSysDirs cross; binutilsCross = binutilsCross cross; glibcCross = glibcCross cross; @@ -1786,18 +1787,18 @@ let }; gccCrossStageStatic = cross: wrapGCCCross { - gcc = (gcc43_realCross cross).override { + gcc = forceBuildDrv ((gcc43_realCross cross).override { crossStageStatic = true; langCC = false; glibcCross = null; - }; + }); libc = null; binutils = binutilsCross cross; inherit cross; }; gccCrossStageFinal = cross: wrapGCCCross { - gcc = gcc43_realCross cross; + gcc = forceBuildDrv (gcc43_realCross cross); libc = glibcCross cross; binutils = binutilsCross cross; inherit cross; @@ -2220,12 +2221,12 @@ let wrapGCCCross = {gcc, libc, binutils, cross, shell ? "", name ? "gcc-cross-wrapper"}: - import ../build-support/gcc-cross-wrapper { + forceBuildDrv (import ../build-support/gcc-cross-wrapper { nativeTools = false; nativeLibc = false; noLibc = (libc == null); inherit stdenv gcc binutils libc shell name cross; - }; + }); # FIXME: This is a specific hack for GCC-UPC. Eventually, we may # want to merge `gcc-upc-wrapper' and `gcc-wrapper'. @@ -2605,10 +2606,10 @@ let inherit fetchurl stdenv noSysDirs; }); - binutilsCross = cross : import ../development/tools/misc/binutils { + binutilsCross = cross : forceBuildDrv (import ../development/tools/misc/binutils { inherit stdenv fetchurl cross; noSysDirs = true; - }; + }); bison = bison23; @@ -2885,7 +2886,7 @@ let cross_renaming: we should make all programs use pkgconfig as buildNativeInput after the renaming. */ - pkgconfig = pkgconfigReal // { hostDrv = pkgconfigReal.buildDrv; }; + pkgconfig = forceBuildDrv pkgconfigReal; radare = import ../development/tools/analysis/radare { inherit stdenv fetchurl pkgconfig libusb readline gtkdialog python @@ -3427,26 +3428,28 @@ let installLocales = getPkgConfig "glibc" "locales" false; }; - glibc29Cross = cross : makeOverridable (import ../development/libraries/glibc-2.9) { - inherit stdenv fetchurl cross; + glibc29Cross = cross: forceBuildDrv (makeOverridable (import ../development/libraries/glibc-2.9) { + inherit stdenv fetchurl; gccCross = gccCrossStageStatic cross; kernelHeaders = kernelHeadersCross cross; installLocales = getPkgConfig "glibc" "locales" false; - }; + }); + + glibcCross = cross: glibc29Cross cross; glibc211 = makeOverridable (import ../development/libraries/glibc-2.11) { inherit fetchurl stdenv kernelHeaders; installLocales = getPkgConfig "glibc" "locales" false; }; - glibc211Cross = cross : makeOverridable (import ../development/libraries/glibc-2.11) { + glibc211CrossReal = cross : forceBuildDrv (makeOverridable (import ../development/libraries/glibc-2.11) { inherit stdenv fetchurl cross; gccCross = gccCrossStageStatic cross; kernelHeaders = kernelHeadersCross cross; installLocales = getPkgConfig "glibc" "locales" false; - }; + }); - glibcCross = cross: glibc29Cross cross; + glibc211Cross = cross : forceBuildDrv (glibc211CrossReal cross); eglibc = import ../development/libraries/eglibc { inherit fetchsvn stdenv kernelHeaders; @@ -5395,9 +5398,9 @@ let kernelHeaders = kernelHeaders_2_6_28; - kernelHeadersCross = cross : import ../os-specific/linux/kernel-headers/2.6.28.nix { + kernelHeadersCross = cross : forceBuildDrv (import ../os-specific/linux/kernel-headers/2.6.28.nix { inherit stdenv fetchurl cross perl; - }; + }); kernelHeaders_2_6_18 = import ../os-specific/linux/kernel-headers/2.6.18.5.nix { inherit fetchurl stdenv unifdef; From 98af7b9cb92c3a6569fb7bb4c8bcce1c1970678e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= Date: Sun, 22 Nov 2009 22:16:58 +0000 Subject: [PATCH 059/232] GNU Guile 1.8: Clean up. svn path=/nixpkgs/branches/stdenv-updates/; revision=18545 --- pkgs/development/interpreters/guile/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/development/interpreters/guile/default.nix b/pkgs/development/interpreters/guile/default.nix index 905e475aba2..653144ba8f3 100644 --- a/pkgs/development/interpreters/guile/default.nix +++ b/pkgs/development/interpreters/guile/default.nix @@ -3,15 +3,15 @@ stdenv.mkDerivation rec { name = "guile-1.8.7"; + src = fetchurl { url = "mirror://gnu/guile/" + name + ".tar.gz"; sha256 = "1czhcrn6l63xhsw3fjmv88djflqxbdpxjhgmwwvscm8rv4wn7vmz"; }; + buildInputs = [ gawk ]; buildNativeInputs = [ makeWrapper ]; - buildInputs = [ libtool ]; propagatedBuildInputs = [ readline gmp libtool ]; - propagatedBuildNativeInputs = [ gawk ]; postInstall = '' wrapProgram $out/bin/guile-snarf --prefix PATH : "${gawk}/bin" From 45886e474dfafe012fd88d88deb3158cf66f64ae Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Llu=C3=ADs=20Batlle=20i=20Rossell?= Date: Sun, 22 Nov 2009 22:48:43 +0000 Subject: [PATCH 060/232] On native builds: - Disabling guile test, because one fails. I commented on that in the source. On cross builds: - Adding stripping - Updating the glibc-2.11 expression to match the parameters of glibc-2.9, which I was updating more. - Renaming from selfNativeBuildInput to selfBuildNativeInput, so this matches better the pattern buildNativeInputs. svn path=/nixpkgs/branches/stdenv-updates/; revision=18550 --- .../gcc-cross-wrapper/setup-hook.sh | 42 ++++++++++++++++++- .../interpreters/guile/default.nix | 5 ++- .../libraries/glibc-2.11/common.nix | 5 +-- .../libraries/glibc-2.11/default.nix | 14 +++---- .../libraries/glibc-2.9/builder.sh | 3 -- .../development/libraries/ncurses/default.nix | 2 +- pkgs/stdenv/adapters.nix | 4 +- 7 files changed, 55 insertions(+), 20 deletions(-) diff --git a/pkgs/build-support/gcc-cross-wrapper/setup-hook.sh b/pkgs/build-support/gcc-cross-wrapper/setup-hook.sh index d854f5ff0d7..e0b520edb4a 100644 --- a/pkgs/build-support/gcc-cross-wrapper/setup-hook.sh +++ b/pkgs/build-support/gcc-cross-wrapper/setup-hook.sh @@ -1,15 +1,55 @@ +NIX_CROSS_CFLAGS_COMPILE="" +NIX_CROSS_LDFLAGS="" + crossAddCVars () { if test -d $1/include; then export NIX_CROSS_CFLAGS_COMPILE="$NIX_CROSS_CFLAGS_COMPILE -I$1/include" fi if test -d $1/lib; then - export NIX_CROSS_LDFLAGS="$NIX_CROSS_LDFLAGS -L$1/lib" + export NIX_CROSS_LDFLAGS="$NIX_CROSS_LDFLAGS -L$1/lib -rpath-link $1/lib" fi } crossEnvHooks=(${crossEnvHooks[@]} crossAddCVars) +crossStripDirs() { + local dirs="$1" + local stripFlags="$2" + local dirsNew= + + for d in ${dirs}; do + if test -d "$prefix/$d"; then + dirsNew="${dirsNew} $prefix/$d " + fi + done + dirs=${dirsNew} + + if test -n "${dirs}"; then + header "stripping (with flags $stripFlags) in $dirs" + find $dirs -type f -print0 | xargs -0 ${xargsFlags:--r} $crossConfig-strip $stripFlags || true + stopNest + fi +} + +crossStrip () { + # TODO: strip _only_ ELF executables, and return || fail here... + if test -z "$dontStrip"; then + stripDebugList=${stripDebugList:-lib lib64 libexec bin sbin} + if test -n "$stripDebugList"; then + crossStripDirs "$stripDebugList" "${stripDebugFlags:--S}" + fi + + stripAllList=${stripAllList:-} + if test -n "$stripAllList"; then + crossStripDirs "$stripAllList" "${stripAllFlags:--s}" + fi + fi +} + +preDistPhases=(${preDistPhases[@]} crossStrip) + + # Note: these come *after* $out in the PATH (see setup.sh). if test -n "@gcc@"; then diff --git a/pkgs/development/interpreters/guile/default.nix b/pkgs/development/interpreters/guile/default.nix index 653144ba8f3..66ed97d418e 100644 --- a/pkgs/development/interpreters/guile/default.nix +++ b/pkgs/development/interpreters/guile/default.nix @@ -12,6 +12,7 @@ stdenv.mkDerivation rec { buildInputs = [ gawk ]; buildNativeInputs = [ makeWrapper ]; propagatedBuildInputs = [ readline gmp libtool ]; + selfBuildNativeInput = true; postInstall = '' wrapProgram $out/bin/guile-snarf --prefix PATH : "${gawk}/bin" @@ -29,7 +30,9 @@ stdenv.mkDerivation rec { fi ''; - doCheck = true; + # One test fails. + # ERROR: file: "libtest-asmobs", message: "file not found" + doCheck = false; setupHook = ./setup-hook.sh; diff --git a/pkgs/development/libraries/glibc-2.11/common.nix b/pkgs/development/libraries/glibc-2.11/common.nix index 54fe7afca1f..4d4438a9c42 100644 --- a/pkgs/development/libraries/glibc-2.11/common.nix +++ b/pkgs/development/libraries/glibc-2.11/common.nix @@ -61,8 +61,6 @@ stdenv.mkDerivation ({ then "--enable-profile" else "--disable-profile") ] ++ stdenv.lib.optionals (cross != null) [ - "--host=${cross.config}" - "--build=${stdenv.system}" "--with-tls" "--enable-kernel=2.6.0" "--without-fp" @@ -101,7 +99,8 @@ stdenv.mkDerivation ({ // { - name = args.name + "-${version}"; + name = args.name + "-${version}" + + stdenv.lib.optionalString (cross != null) "-${cross.config}"; src = fetchurl { url = "mirror://gnu/glibc/glibc-${version}.tar.bz2"; diff --git a/pkgs/development/libraries/glibc-2.11/default.nix b/pkgs/development/libraries/glibc-2.11/default.nix index 866a2370eb1..befcd86b8ba 100644 --- a/pkgs/development/libraries/glibc-2.11/default.nix +++ b/pkgs/development/libraries/glibc-2.11/default.nix @@ -1,18 +1,18 @@ { stdenv, fetchurl, kernelHeaders , installLocales ? true , profilingLibraries ? false -, cross ? null , gccCross ? null }: -let build = import ./common.nix; +let + build = import ./common.nix; + cross = if gccCross != null then gccCross.target else null; in build ({ - name = "glibc" + - stdenv.lib.optionalString (cross != null) "-${cross.config}"; + name = "glibc"; inherit fetchurl stdenv kernelHeaders installLocales profilingLibraries - cross gccCross; + cross; builder = ./builder.sh; @@ -44,10 +44,6 @@ EOF export CC="$crossConfig-gcc" export AR="$crossConfig-ar" export RANLIB="$crossConfig-ranlib" - - # The host strip will destroy everything in the target binaries - # otherwise. - dontStrip=1 ''; } else {})) diff --git a/pkgs/development/libraries/glibc-2.9/builder.sh b/pkgs/development/libraries/glibc-2.9/builder.sh index ca89ffdc160..0d67d96edec 100644 --- a/pkgs/development/libraries/glibc-2.9/builder.sh +++ b/pkgs/development/libraries/glibc-2.9/builder.sh @@ -48,9 +48,6 @@ EOF export AR="${crossConfig}-ar" export RANLIB="${crossConfig}-ranlib" configureFlags="${configureFlags} --cache-file=config.cache" - - # The host stripp will destroy everything in the target binaries otherwise - dontStrip=1 fi } diff --git a/pkgs/development/libraries/ncurses/default.nix b/pkgs/development/libraries/ncurses/default.nix index e9d286a3641..3c833738308 100644 --- a/pkgs/development/libraries/ncurses/default.nix +++ b/pkgs/development/libraries/ncurses/default.nix @@ -13,7 +13,7 @@ stdenv.mkDerivation rec { ${if unicode then "--enable-widec" else ""} ''; - selfNativeBuildInput = true; + selfBuildNativeInput = true; preBuild = ''sed -e "s@\([[:space:]]\)sh @\1''${SHELL} @" -i */Makefile Makefile''; diff --git a/pkgs/stdenv/adapters.nix b/pkgs/stdenv/adapters.nix index 698253c0c63..9789a52255e 100644 --- a/pkgs/stdenv/adapters.nix +++ b/pkgs/stdenv/adapters.nix @@ -112,7 +112,7 @@ rec { makeStdenvCross = stdenv: cross: binutilsCross: gccCross: stdenv // { mkDerivation = {name ? "", buildInputs ? [], buildNativeInputs ? [], propagatedBuildInputs ? [], propagatedBuildNativeInputs ? [], - selfNativeBuildInput ? false, ...}@args: let + selfBuildNativeInput ? false, ...}@args: let # *BuildInputs exists temporarily as another name for # *HostInputs. @@ -146,7 +146,7 @@ rec { buildNativeInputs = buildNativeInputsDrvs ++ nativeInputsFromBuildInputs ++ [ gccCross binutilsCross ] ++ - stdenv.lib.optional selfNativeBuildInput buildDrv; + stdenv.lib.optional selfBuildNativeInput buildDrv; buildInputs = buildInputsDrvs; propagatedBuildInputs = propagatedBuildInputsDrvs; propagatedBuildNativeInputs = propagatedBuildNativeInputsDrvs; From 75b60caea072f258a3f014a1ea4fc8308692baca Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Llu=C3=ADs=20Batlle=20i=20Rossell?= Date: Mon, 23 Nov 2009 17:01:28 +0000 Subject: [PATCH 061/232] Updating guile so it uses gawk as a buildNativeInput and not as buildInput. svn path=/nixpkgs/branches/stdenv-updates/; revision=18561 --- pkgs/development/interpreters/guile/default.nix | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/pkgs/development/interpreters/guile/default.nix b/pkgs/development/interpreters/guile/default.nix index 66ed97d418e..8dd7953a42d 100644 --- a/pkgs/development/interpreters/guile/default.nix +++ b/pkgs/development/interpreters/guile/default.nix @@ -9,8 +9,7 @@ stdenv.mkDerivation rec { sha256 = "1czhcrn6l63xhsw3fjmv88djflqxbdpxjhgmwwvscm8rv4wn7vmz"; }; - buildInputs = [ gawk ]; - buildNativeInputs = [ makeWrapper ]; + buildNativeInputs = [ makeWrapper gawk ]; propagatedBuildInputs = [ readline gmp libtool ]; selfBuildNativeInput = true; From c6b526495bc37e63b43c3fc17705cefac81fa904 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Llu=C3=ADs=20Batlle=20i=20Rossell?= Date: Mon, 23 Nov 2009 17:06:57 +0000 Subject: [PATCH 062/232] Improving the crossStripping. A cross-glibc gets broken if stripped by the native strip. So we now distinguish dontStrip and dontCrossStrip. I updated the expressions for glibc-2.9 and glibc-2.11 accordingly. I could get rid of the cross-glibc depending on the cross-gcc-stage-static. Enabling nls in the final cross-gcc. I still have problems on wint_t/wchar_t not working on cross build. Gettext does not build. svn path=/nixpkgs/branches/stdenv-updates/; revision=18562 --- pkgs/build-support/gcc-cross-wrapper/setup-hook.sh | 5 ++++- pkgs/development/compilers/gcc-4.3/default.nix | 3 ++- pkgs/development/libraries/glibc-2.11/default.nix | 2 ++ pkgs/development/libraries/glibc-2.9/builder.sh | 3 +++ pkgs/development/libraries/glibc-2.9/default.nix | 8 ++++---- 5 files changed, 15 insertions(+), 6 deletions(-) diff --git a/pkgs/build-support/gcc-cross-wrapper/setup-hook.sh b/pkgs/build-support/gcc-cross-wrapper/setup-hook.sh index e0b520edb4a..0c98062a2db 100644 --- a/pkgs/build-support/gcc-cross-wrapper/setup-hook.sh +++ b/pkgs/build-support/gcc-cross-wrapper/setup-hook.sh @@ -27,14 +27,17 @@ crossStripDirs() { if test -n "${dirs}"; then header "stripping (with flags $stripFlags) in $dirs" + # libc_nonshared.a should never be stripped, or builds will break. find $dirs -type f -print0 | xargs -0 ${xargsFlags:--r} $crossConfig-strip $stripFlags || true stopNest fi } crossStrip () { + # In cross_renaming we may rename dontCrossStrip to dontStrip, and + # dontStrip to dontNativeStrip. # TODO: strip _only_ ELF executables, and return || fail here... - if test -z "$dontStrip"; then + if test -z "$dontCrossStrip"; then stripDebugList=${stripDebugList:-lib lib64 libexec bin sbin} if test -n "$stripDebugList"; then crossStripDirs "$stripDebugList" "${stripDebugFlags:--S}" diff --git a/pkgs/development/compilers/gcc-4.3/default.nix b/pkgs/development/compilers/gcc-4.3/default.nix index efd058756b3..2fd4198d955 100644 --- a/pkgs/development/compilers/gcc-4.3/default.nix +++ b/pkgs/development/compilers/gcc-4.3/default.nix @@ -39,7 +39,8 @@ let " --with-headers=${glibcCross}/include" + " --enable-__cxa_atexit" + " --enable-long-long" + - " --enable-threads=posix" + " --enable-threads=posix" + + " --enable-nls" ); stageNameAddon = if (crossStageStatic) then "-stage-static" else "-stage-final"; diff --git a/pkgs/development/libraries/glibc-2.11/default.nix b/pkgs/development/libraries/glibc-2.11/default.nix index befcd86b8ba..48f1a12c058 100644 --- a/pkgs/development/libraries/glibc-2.11/default.nix +++ b/pkgs/development/libraries/glibc-2.11/default.nix @@ -44,6 +44,8 @@ EOF export CC="$crossConfig-gcc" export AR="$crossConfig-ar" export RANLIB="$crossConfig-ranlib" + + dontStrip = 1 ''; } else {})) diff --git a/pkgs/development/libraries/glibc-2.9/builder.sh b/pkgs/development/libraries/glibc-2.9/builder.sh index 0d67d96edec..c81a3ac2a9e 100644 --- a/pkgs/development/libraries/glibc-2.9/builder.sh +++ b/pkgs/development/libraries/glibc-2.9/builder.sh @@ -48,6 +48,9 @@ EOF export AR="${crossConfig}-ar" export RANLIB="${crossConfig}-ranlib" configureFlags="${configureFlags} --cache-file=config.cache" + + # Disable the native stripping, because it breaks libc_nonshared.a + dontStrip=1 fi } diff --git a/pkgs/development/libraries/glibc-2.9/default.nix b/pkgs/development/libraries/glibc-2.9/default.nix index 50dc51bdcb7..0cfad299038 100644 --- a/pkgs/development/libraries/glibc-2.9/default.nix +++ b/pkgs/development/libraries/glibc-2.9/default.nix @@ -80,14 +80,14 @@ stdenv.mkDerivation rec { buildNativeInputs = stdenv.lib.optionals (cross != null) [ gccCross ]; - preInstall = '' + preInstall = if (cross != null) then '' ensureDir $out/lib ln -s ${stdenv.gcc.gcc}/lib/libgcc_s.so.1 $out/lib/libgcc_s.so.1 - ''; + '' else ""; - postInstall = '' + postInstall = if (cross != null) then '' rm $out/lib/libgcc_s.so.1 - ''; + '' else ""; # Workaround for this bug: # http://sourceware.org/bugzilla/show_bug.cgi?id=411 From fce5b7fe78346ef088c148e5b03fbff116277b6f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Llu=C3=ADs=20Batlle=20i=20Rossell?= Date: Mon, 23 Nov 2009 19:38:34 +0000 Subject: [PATCH 063/232] Adding a hack for gettext to cross-build with gcc+glibc in linux. svn path=/nixpkgs/branches/stdenv-updates/; revision=18568 --- pkgs/development/libraries/gettext/default.nix | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/pkgs/development/libraries/gettext/default.nix b/pkgs/development/libraries/gettext/default.nix index 3ef348dc4b8..6b094fdc839 100644 --- a/pkgs/development/libraries/gettext/default.nix +++ b/pkgs/development/libraries/gettext/default.nix @@ -10,6 +10,17 @@ stdenv.mkDerivation (rec { configureFlags = "--disable-csharp"; + # On cross building, gettext supposes that the wchar.h from libc + # does not fulfill gettext needs, so it tries to work with its + # own wchar.h file, which does not cope well with the system's + # wchar.h and stddef.h (gcc-4.3 - glibc-2.9) + preConfigure = '' + if test -n "$crossConfig"; then + echo gl_cv_func_wcwidth_works=yes > cachefile + configureFlags="$configureFlags --cache-file=`pwd`/cachefile" + fi + ''; + meta = { description = "GNU gettext, a well integrated set of translation tools and documentation"; From d8aa5b5db19275b428d0b2a84cf26ecf836f3a55 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Llu=C3=ADs=20Batlle=20i=20Rossell?= Date: Mon, 23 Nov 2009 19:45:18 +0000 Subject: [PATCH 064/232] Fixing stdenv's chain of propagated-build-inputs (2nd level propagated build inputs did not get in) Updating the xorg builder script to support cross building (in fact, support for propagating the required build inputs). svn path=/nixpkgs/branches/stdenv-updates/; revision=18569 --- pkgs/servers/x11/xorg/builder.sh | 22 ++++++++++++++++------ pkgs/stdenv/generic/setup.sh | 2 +- 2 files changed, 17 insertions(+), 7 deletions(-) diff --git a/pkgs/servers/x11/xorg/builder.sh b/pkgs/servers/x11/xorg/builder.sh index 7da1da77340..528042e3df9 100644 --- a/pkgs/servers/x11/xorg/builder.sh +++ b/pkgs/servers/x11/xorg/builder.sh @@ -15,16 +15,26 @@ postInstall() { echo "propagating requisites $requires" for r in $requires; do - for p in $pkgs; do - if test -e $p/lib/pkgconfig/$r.pc; then - echo " found requisite $r in $p" - propagatedBuildInputs="$propagatedBuildInputs $p" - fi - done + if test -n "$crossConfig"; then + for p in $crossPkgs; do + if test -e $p/lib/pkgconfig/$r.pc; then + echo " found requisite $r in $p" + propagatedBuildInputs="$propagatedBuildInputs $p" + fi + done + else + for p in $nativePkgs; do + if test -e $p/lib/pkgconfig/$r.pc; then + echo " found requisite $r in $p" + propagatedBuildNativeInputs="$propagatedBuildNativeInputs $p" + fi + done + fi done ensureDir "$out/nix-support" echo "$propagatedBuildInputs" > "$out/nix-support/propagated-build-inputs" + echo "$propagatedBuildNativeInputs" > "$out/nix-support/propagated-build-native-inputs" } diff --git a/pkgs/stdenv/generic/setup.sh b/pkgs/stdenv/generic/setup.sh index 631182f6b7c..f8c497f37c2 100644 --- a/pkgs/stdenv/generic/setup.sh +++ b/pkgs/stdenv/generic/setup.sh @@ -170,7 +170,7 @@ findInputs() { if test -f $pkg/nix-support/$propagatedBuildInputsFile; then for i in $(cat $pkg/nix-support/$propagatedBuildInputsFile); do - findInputs $i $var + findInputs $i $var $propagatedBuildInputsFile done fi } From eadcd4462d4a626219c27fd53aaf85f52f3b10cd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Llu=C3=ADs=20Batlle=20i=20Rossell?= Date: Mon, 23 Nov 2009 23:16:40 +0000 Subject: [PATCH 065/232] Making, in cross-builds, every buildInput a propagatedBuildInput. We need this because 'ld' wants to know the path of every library involved in a dynamic linking. I imagine that ld does not need that in native builds because it can call the loader for it to resolve the library rpaths, but this is not the case for cross-building. svn path=/nixpkgs/branches/stdenv-updates/; revision=18577 --- pkgs/stdenv/adapters.nix | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/pkgs/stdenv/adapters.nix b/pkgs/stdenv/adapters.nix index 9789a52255e..47486398013 100644 --- a/pkgs/stdenv/adapters.nix +++ b/pkgs/stdenv/adapters.nix @@ -147,8 +147,14 @@ rec { ++ nativeInputsFromBuildInputs ++ [ gccCross binutilsCross ] ++ stdenv.lib.optional selfBuildNativeInput buildDrv; - buildInputs = buildInputsDrvs; - propagatedBuildInputs = propagatedBuildInputsDrvs; + + # Cross-linking dynamic libraries, every buildInput should + # be propagated because ld needs the -rpath-link to find + # any library needed to link the program dynamically at + # loader time. ld(1) explains it. + buildInputs = []; + propagatedBuildInputs = propagatedBuildInputsDrvs + + buildInputsDrvs; propagatedBuildNativeInputs = propagatedBuildNativeInputsDrvs; crossConfig = cross.config; From 807655e1f9b581e3d7f4ac1dc26515f6b4af1e60 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= Date: Mon, 23 Nov 2009 23:35:59 +0000 Subject: [PATCH 066/232] Switch to glibc 2.11 and hope for the best. svn path=/nixpkgs/branches/stdenv-updates/; revision=18578 --- pkgs/top-level/all-packages.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index aadf74ed753..27082514c55 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -3411,7 +3411,7 @@ let let haveRedHatKernel = system == "i686-linux" || system == "x86_64-linux"; haveBrokenRedHatKernel = haveRedHatKernel && getConfig ["brokenRedHatKernel"] false; in - useFromStdenv "glibc" (if haveBrokenRedHatKernel then glibc25 else glibc29); + useFromStdenv "glibc" (if haveBrokenRedHatKernel then glibc25 else glibc211); glibc25 = import ../development/libraries/glibc-2.5 { inherit fetchurl stdenv kernelHeaders; From 1ec11edce5e8b0faae4e357b5c51ed9c0726f005 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Llu=C3=ADs=20Batlle=20i=20Rossell?= Date: Mon, 23 Nov 2009 23:40:24 +0000 Subject: [PATCH 067/232] I should learn to concatenate lists. svn path=/nixpkgs/branches/stdenv-updates/; revision=18579 --- pkgs/stdenv/adapters.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/stdenv/adapters.nix b/pkgs/stdenv/adapters.nix index 47486398013..c4f8b6db8f2 100644 --- a/pkgs/stdenv/adapters.nix +++ b/pkgs/stdenv/adapters.nix @@ -153,7 +153,7 @@ rec { # any library needed to link the program dynamically at # loader time. ld(1) explains it. buildInputs = []; - propagatedBuildInputs = propagatedBuildInputsDrvs + + propagatedBuildInputs = propagatedBuildInputsDrvs ++ buildInputsDrvs; propagatedBuildNativeInputs = propagatedBuildNativeInputsDrvs; From f1f286052e8adf56f2a39836696184c856b02f69 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= Date: Thu, 26 Nov 2009 15:50:26 +0000 Subject: [PATCH 068/232] Remove `unpackCmd's not needed with GNU tar format auto-detection (r18492). svn path=/nixpkgs/branches/stdenv-updates/; revision=18653 --- pkgs/applications/graphics/pqiv/default.nix | 4 +--- pkgs/development/tools/misc/autoconf/2.13.nix | 2 -- pkgs/development/tools/misc/libtool/libtool2.nix | 2 -- pkgs/development/tools/misc/texinfo/default.nix | 2 -- 4 files changed, 1 insertion(+), 9 deletions(-) diff --git a/pkgs/applications/graphics/pqiv/default.nix b/pkgs/applications/graphics/pqiv/default.nix index dbb2ce6ed73..a573148684d 100644 --- a/pkgs/applications/graphics/pqiv/default.nix +++ b/pkgs/applications/graphics/pqiv/default.nix @@ -4,14 +4,12 @@ stdenv.mkDerivation (rec { name = "pqiv-0.8"; src = fetchurl { - url = "http://www.pberndt.com/raw//Programme/Linux/pqiv/_download/pqiv-0.8.tbz"; + url = "http://www.pberndt.com/raw/Programme/Linux/pqiv/_download/${name}.tbz"; sha256 = "365332bab4b13ca56da6935e7155af20658e67d323808942dce23e880466f66d"; }; buildInputs = [ getopt which pkgconfig gtk ]; - unpackCmd="bzip2 -d < $src | tar xvf - || fail"; - preConfigure='' substituteInPlace configure --replace /bin/bash "$shell" sed -i -e 's|$(tempfile -s.*)|temp.c|' -e 's|tempfile|mktemp|' configure diff --git a/pkgs/development/tools/misc/autoconf/2.13.nix b/pkgs/development/tools/misc/autoconf/2.13.nix index 6bca865d8ed..1dfe4d4a0a7 100644 --- a/pkgs/development/tools/misc/autoconf/2.13.nix +++ b/pkgs/development/tools/misc/autoconf/2.13.nix @@ -9,8 +9,6 @@ stdenv.mkDerivation rec { }; buildInputs = [m4 perl lzma]; - - unpackCmd = "lzma -d < $src | tar -x "; doCheck = true; diff --git a/pkgs/development/tools/misc/libtool/libtool2.nix b/pkgs/development/tools/misc/libtool/libtool2.nix index 84921daf810..c89fe7e280c 100644 --- a/pkgs/development/tools/misc/libtool/libtool2.nix +++ b/pkgs/development/tools/misc/libtool/libtool2.nix @@ -10,8 +10,6 @@ stdenv.mkDerivation rec { buildNativeInputs = [ lzma m4 perl ]; - unpackCmd = "lzma -d < $src | tar xv"; - # Don't fixup "#! /bin/sh" in Libtool, otherwise it will use the # "fixed" path in generated files! dontPatchShebangs = true; diff --git a/pkgs/development/tools/misc/texinfo/default.nix b/pkgs/development/tools/misc/texinfo/default.nix index 9f154684f2c..c9bf4eea405 100644 --- a/pkgs/development/tools/misc/texinfo/default.nix +++ b/pkgs/development/tools/misc/texinfo/default.nix @@ -10,8 +10,6 @@ stdenv.mkDerivation rec { buildInputs = [ ncurses lzma ]; - unpackCmd = "lzma -d < $src | tar xv"; - # Disabled because we don't have zdiff in the stdenv bootstrap. #doCheck = true; From a70f26e17866761ef6670fcebaabfe0e65a7b73e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= Date: Thu, 26 Nov 2009 20:55:52 +0000 Subject: [PATCH 069/232] Fix `kernelHeaders2618' compilation with glibc 2.11. svn path=/nixpkgs/branches/stdenv-updates/; revision=18656 --- .../linux/kernel-headers/2.6.18.5.nix | 2 ++ .../kernel-headers/unifdef-getline.patch | 35 +++++++++++++++++++ 2 files changed, 37 insertions(+) create mode 100644 pkgs/os-specific/linux/kernel-headers/unifdef-getline.patch diff --git a/pkgs/os-specific/linux/kernel-headers/2.6.18.5.nix b/pkgs/os-specific/linux/kernel-headers/2.6.18.5.nix index cf4efd159e8..5ecdd77fb87 100644 --- a/pkgs/os-specific/linux/kernel-headers/2.6.18.5.nix +++ b/pkgs/os-specific/linux/kernel-headers/2.6.18.5.nix @@ -10,6 +10,8 @@ stdenv.mkDerivation { sha256 = "24f0e0011cdae42e3dba56107bb6a60c57c46d1d688a9b0300fec53e80fd1e53"; }; + patches = [ ./unifdef-getline.patch ]; + buildInputs = [ unifdef ]; platform = diff --git a/pkgs/os-specific/linux/kernel-headers/unifdef-getline.patch b/pkgs/os-specific/linux/kernel-headers/unifdef-getline.patch new file mode 100644 index 00000000000..8caabfd3286 --- /dev/null +++ b/pkgs/os-specific/linux/kernel-headers/unifdef-getline.patch @@ -0,0 +1,35 @@ +This patch fixes a trivial compilation error with glibc 2.11. +From http://patchwork.kernel.org/patch/11166/ . + +diff --git a/scripts/unifdef.c b/scripts/unifdef.c +index 552025e..977e682 100644 +--- a/scripts/unifdef.c ++++ b/scripts/unifdef.c +@@ -206,7 +206,7 @@ static void done(void); + static void error(const char *); + static int findsym(const char *); + static void flushline(bool); +-static Linetype getline(void); ++static Linetype parseline(void); + static Linetype ifeval(const char **); + static void ignoreoff(void); + static void ignoreon(void); +@@ -512,7 +512,7 @@ process(void) + + for (;;) { + linenum++; +- lineval = getline(); ++ lineval = parseline(); + trans_table[ifstate[depth]][lineval](); + debug("process %s -> %s depth %d", + linetype_name[lineval], +@@ -526,7 +526,7 @@ process(void) + * help from skipcomment(). + */ + static Linetype +-getline(void) ++parseline(void) + { + const char *cp; + int cursym; + From cfbe19781dafe30dfeef53d23201858134b2c078 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= Date: Thu, 26 Nov 2009 21:04:47 +0000 Subject: [PATCH 070/232] Fix `kernelHeaders2628' compilation with glibc 2.11. svn path=/nixpkgs/branches/stdenv-updates/; revision=18657 --- pkgs/os-specific/linux/kernel-headers/2.6.28.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/pkgs/os-specific/linux/kernel-headers/2.6.28.nix b/pkgs/os-specific/linux/kernel-headers/2.6.28.nix index 4392e894e96..fbda28587f0 100644 --- a/pkgs/os-specific/linux/kernel-headers/2.6.28.nix +++ b/pkgs/os-specific/linux/kernel-headers/2.6.28.nix @@ -33,6 +33,7 @@ stdenv.mkDerivation { else if stdenv.system == "powerpc-linux" then ["ppc"] else []; patchPhase = '' + patch -p1 "${./unifdef-getline.patch}" sed -i '/scsi/d' include/Kbuild ''; From 8a115c13ad63cb36042b5456ad83aae34b017436 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Llu=C3=ADs=20Batlle=20i=20Rossell?= Date: Thu, 26 Nov 2009 21:26:42 +0000 Subject: [PATCH 071/232] Fixing the fontconfig native build (cross-building related) svn path=/nixpkgs/branches/stdenv-updates/; revision=18658 --- pkgs/development/libraries/fontconfig/default.nix | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/pkgs/development/libraries/fontconfig/default.nix b/pkgs/development/libraries/fontconfig/default.nix index aa3ab19bf33..7e802eb86b8 100644 --- a/pkgs/development/libraries/fontconfig/default.nix +++ b/pkgs/development/libraries/fontconfig/default.nix @@ -13,7 +13,10 @@ stdenv.mkDerivation rec { configureFlags = "--with-confdir=/etc/fonts --with-cache-dir=/var/cache/fontconfig --disable-docs --with-default-fonts="; - crossArch = stdenv.cross.arch; + # We should find a better way to access the arch reliably. + crossArch = if (stdenv ? cross && stdenv.cross != null) + then stdenv.cross.arch else null; + preConfigure = '' if test -n "$crossConfig"; then From f310356cbc4cebc9298b655d3cfcdf0d2c2b4bb0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= Date: Fri, 27 Nov 2009 17:59:03 +0000 Subject: [PATCH 072/232] Switch to GCC 4.4. svn path=/nixpkgs/branches/stdenv-updates/; revision=18676 --- pkgs/top-level/all-packages.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 73c61797cf3..f08bcc3c647 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -1738,7 +1738,7 @@ let inherit fetchurl stdenv gawk system; }; - gcc = gcc43; + gcc = gcc44; gcc295 = wrapGCC (import ../development/compilers/gcc-2.95 { inherit fetchurl stdenv noSysDirs; From 2b580b984614c17e14852ed702da4d6be5cae9c4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Llu=C3=ADs=20Batlle=20i=20Rossell?= Date: Sat, 28 Nov 2009 12:57:42 +0000 Subject: [PATCH 073/232] Updating the perl-5.10 expression to support the bootstrapping stdenv better - I still have not understood why it worked without this fix before, and I think this has been triggered by the gcc-4.4, but I have not investigated this much. I went with the trivial fix. Adding a glibc-2.10.1 expression, because the glibc-2.11 still does not have a ports release, so it cannot be used in arm. I'm using it only in native compilation by now. Making the default glibc to be 2.10 instead of 2.11 in armv5tel-linux. svn path=/nixpkgs/branches/stdenv-updates/; revision=18688 --- .../interpreters/perl-5.10/default.nix | 3 +- .../libraries/glibc-2.10/binutils-2.20.patch | 42 +++++ .../libraries/glibc-2.10/builder.sh | 33 ++++ .../libraries/glibc-2.10/common.nix | 164 ++++++++++++++++++ .../libraries/glibc-2.10/default.nix | 51 ++++++ .../development/libraries/glibc-2.10/info.nix | 25 +++ .../glibc-2.10/locale-override.patch | 72 ++++++++ .../libraries/glibc-2.10/locales.nix | 42 +++++ .../libraries/glibc-2.10/localesbuilder.sh | 17 ++ .../glibc-2.10/nss-skip-unavail.patch | 25 +++ .../libraries/glibc-2.10/rpcgen-path.patch | 72 ++++++++ .../glibc-2.10/stack-protector-link.patch | 12 ++ pkgs/top-level/all-packages.nix | 11 +- 13 files changed, 566 insertions(+), 3 deletions(-) create mode 100644 pkgs/development/libraries/glibc-2.10/binutils-2.20.patch create mode 100644 pkgs/development/libraries/glibc-2.10/builder.sh create mode 100644 pkgs/development/libraries/glibc-2.10/common.nix create mode 100644 pkgs/development/libraries/glibc-2.10/default.nix create mode 100644 pkgs/development/libraries/glibc-2.10/info.nix create mode 100644 pkgs/development/libraries/glibc-2.10/locale-override.patch create mode 100644 pkgs/development/libraries/glibc-2.10/locales.nix create mode 100644 pkgs/development/libraries/glibc-2.10/localesbuilder.sh create mode 100644 pkgs/development/libraries/glibc-2.10/nss-skip-unavail.patch create mode 100644 pkgs/development/libraries/glibc-2.10/rpcgen-path.patch create mode 100644 pkgs/development/libraries/glibc-2.10/stack-protector-link.patch diff --git a/pkgs/development/interpreters/perl-5.10/default.nix b/pkgs/development/interpreters/perl-5.10/default.nix index 94fda842bb1..f5abffb26e2 100644 --- a/pkgs/development/interpreters/perl-5.10/default.nix +++ b/pkgs/development/interpreters/perl-5.10/default.nix @@ -57,7 +57,8 @@ stdenv.mkDerivation { ${if stdenv.system == "armv5tel-linux" then "-Dldflags=\"-lm -lrt\"" else ""}; ''; - preBuild = if (stdenv.gcc.nativeTools) then preBuildNative else preBuildNoNative; + preBuild = if (stdenv ? gcc && stdenv.gcc.nativeTools) then + preBuildNative else preBuildNoNative; setupHook = ./setup-hook.sh; } diff --git a/pkgs/development/libraries/glibc-2.10/binutils-2.20.patch b/pkgs/development/libraries/glibc-2.10/binutils-2.20.patch new file mode 100644 index 00000000000..ab3d6144d6e --- /dev/null +++ b/pkgs/development/libraries/glibc-2.10/binutils-2.20.patch @@ -0,0 +1,42 @@ +Support GNU Binutils 2.20 and beyond. Patch from +http://sourceware.org/ml/libc-alpha/2009-09/msg00009.html . + +diff --git a/configure b/configure +index 48e6952..b1d84d7 100755 +--- a/configure ++++ b/configure +@@ -4841,7 +4841,7 @@ $as_echo_n "checking version of $AS... " >&6; } + ac_prog_version=`$AS --version 2>&1 | sed -n 's/^.*GNU assembler.* \([0-9]*\.[0-9.]*\).*$/\1/p'` + case $ac_prog_version in + '') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;; +- 2.1[3-9]*) ++ 2.1[3-9]*|[2-9].[2-9]*) + ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;; + *) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;; + +@@ -4904,7 +4904,7 @@ $as_echo_n "checking version of $LD... " >&6; } + ac_prog_version=`$LD --version 2>&1 | sed -n 's/^.*GNU ld.* \([0-9][0-9]*\.[0-9.]*\).*$/\1/p'` + case $ac_prog_version in + '') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;; +- 2.1[3-9]*) ++ 2.1[3-9]*|[2-9].[2-9]*) + ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;; + *) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;; + +diff --git a/configure.in b/configure.in +index 4584afe..7c4f71f 100644 +--- a/configure.in ++++ b/configure.in +@@ -897,10 +897,10 @@ AC_SUBST(MIG)dnl Needed by sysdeps/mach/configure.in + # Accept binutils 2.13 or newer. + AC_CHECK_PROG_VER(AS, $AS, --version, + [GNU assembler.* \([0-9]*\.[0-9.]*\)], +- [2.1[3-9]*], AS=: critic_missing="$critic_missing as") ++ [2.1[3-9]*|[2-9].[2-9]*], AS=: critic_missing="$critic_missing as") + AC_CHECK_PROG_VER(LD, $LD, --version, + [GNU ld.* \([0-9][0-9]*\.[0-9.]*\)], +- [2.1[3-9]*], LD=: critic_missing="$critic_missing ld") ++ [2.1[3-9]*|[2-9].[2-9]*], LD=: critic_missing="$critic_missing ld") + + # We need the physical current working directory. We cannot use the + # "pwd -P" shell builtin since that's not portable. Instead we try to diff --git a/pkgs/development/libraries/glibc-2.10/builder.sh b/pkgs/development/libraries/glibc-2.10/builder.sh new file mode 100644 index 00000000000..fc1ea2f83eb --- /dev/null +++ b/pkgs/development/libraries/glibc-2.10/builder.sh @@ -0,0 +1,33 @@ +# Glibc cannot have itself in its RPATH. +export NIX_NO_SELF_RPATH=1 + +source $stdenv/setup + +postConfigure() { + # Hack: get rid of the `-static' flag set by the bootstrap stdenv. + # This has to be done *after* `configure' because it builds some + # test binaries. + export NIX_CFLAGS_LINK= + export NIX_LDFLAGS_BEFORE= + + export NIX_DONT_SET_RPATH=1 + unset CFLAGS +} + + +postInstall() { + if test -n "$installLocales"; then + make localedata/install-locales + fi + test -f $out/etc/ld.so.cache && rm $out/etc/ld.so.cache + (cd $out/include && ln -s $kernelHeaders/include/* .) || exit 1 + + # Fix for NIXOS-54 (ldd not working on x86_64). Make a symlink + # "lib64" to "lib". + if test -n "$is64bit"; then + ln -s lib $out/lib64 + fi +} + + +genericBuild diff --git a/pkgs/development/libraries/glibc-2.10/common.nix b/pkgs/development/libraries/glibc-2.10/common.nix new file mode 100644 index 00000000000..87fa4aea0f1 --- /dev/null +++ b/pkgs/development/libraries/glibc-2.10/common.nix @@ -0,0 +1,164 @@ +/* Build configuration used to build glibc, Info files, and locale + information. */ + +{ name, fetchurl, stdenv, installLocales ? false +, cross ? null, gccCross ? null, kernelHeaders ? null +, profilingLibraries ? false, meta, ... }@args : + +let version = "2.10.1"; +in +assert (cross != null) -> (gccCross != null); + +stdenv.mkDerivation ({ + inherit kernelHeaders installLocales; + + # The host/target system. + crossConfig = if (cross != null) then cross.config else null; + + inherit (stdenv) is64bit; + + patches = [ + /* Fix for NIXPKGS-79: when doing host name lookups, when + nsswitch.conf contains a line like + + hosts: files mdns4_minimal [NOTFOUND=return] dns mdns4 + + don't return an error when mdns4_minimal can't be found. This + is a bug in Glibc: when a service can't be found, NSS should + continue to the next service unless "UNAVAIL=return" is set. + ("NOTFOUND=return" refers to the service returning a NOTFOUND + error, not the service itself not being found.) The reason is + that the "status" variable (while initialised to UNAVAIL) is + outside of the loop that iterates over the services, the + "files" service sets status to NOTFOUND. So when the call to + find "mdns4_minimal" fails, "status" will still be NOTFOUND, + and it will return instead of continuing to "dns". Thus, the + line + + hosts: mdns4_minimal [NOTFOUND=return] dns mdns4 + + does work because "status" will contain UNAVAIL after the + failure to find mdns4_minimal. */ + ./nss-skip-unavail.patch + + /* Make it possible to override the locale-archive in NixOS. */ + ./locale-override.patch + + /* Have rpcgen(1) look for cpp(1) in $PATH. */ + ./rpcgen-path.patch + + /* Make sure `nscd' et al. are linked against `libssp'. */ + ./stack-protector-link.patch + + /* Allow binutils 2.20 to be used (patch on its version checking) */ + ./binutils-2.20.patch + ]; + + configureFlags = [ + "-C" + "--enable-add-ons" + (if kernelHeaders != null + then "--with-headers=${kernelHeaders}/include" + else "--without-headers") + (if profilingLibraries + then "--enable-profile" + else "--disable-profile") + ] ++ stdenv.lib.optionals (cross != null) [ + "--with-tls" + "--enable-kernel=2.6.0" + "--without-fp" + "--with-__thread" + ] ++ (if (stdenv.system == "armv5tel-linux") then [ + "--host=arm-linux-gnueabi" + "--build=arm-linux-gnueabi" + "--without-fp" + ] else []); + + buildInputs = stdenv.lib.optionals (cross != null) [ gccCross ]; + + # Needed to install share/zoneinfo/zone.tab. Set to impure /bin/sh to + # prevent a retained dependency on the bootstrap tools in the stdenv-linux + # bootstrap. + BASH_SHELL = "/bin/sh"; +} + +// + +(if (stdenv.system == "i686-linux") + then { + # Workaround for this bug: + # http://sourceware.org/bugzilla/show_bug.cgi?id=411 + # I.e. when gcc is compiled with --with-arch=i686, then the + # preprocessor symbol `__i686' will be defined to `1'. This causes + # the symbol __i686.get_pc_thunk.dx to be mangled. + NIX_CFLAGS_COMPILE = "-U__i686"; + } + else {}) + + // + + args + + // + +{ + name = args.name + "-${version}" + + stdenv.lib.optionalString (cross != null) "-${cross.config}"; + + src = fetchurl { + url = "mirror://gnu/glibc/glibc-${version}.tar.bz2"; + sha256 = "0rz67p3zy3hj1pbcx8qjwnh926d412zs51ss82232qdbgrikxbfb"; + }; + + srcPorts = fetchurl { + url = "mirror://gnu/glibc/glibc-ports-${version}.tar.bz2"; + sha256 = "0wa0mdsfv0b97a0vbmc3l1258lq2y7p7i14bb4rklsh342byrwdi"; + }; + + # `fetchurl' is a function and thus should not be passed to the + # `derivation' primitive. + fetchurl = null; + + # Remove absolute paths from `configure' & co.; build out-of-tree. + preConfigure = '' + export PWD_P=$(type -tP pwd) + for i in configure io/ftwtest-sh; do + # Can't use substituteInPlace here because replace hasn't been + # built yet in the bootstrap. + sed -i "$i" -e "s^/bin/pwd^$PWD_P^g" + done + + tar xvjf "$srcPorts" + + mkdir ../build + cd ../build + + configureScript="../$sourceRoot/configure" + + ${if args ? preConfigure + then args.preConfigure + else ""} + ''; + + meta = ({ + homepage = http://www.gnu.org/software/libc/; + description = "The GNU C Library"; + + longDescription = + '' Any Unix-like operating system needs a C library: the library which + defines the "system calls" and other basic facilities such as + open, malloc, printf, exit... + + The GNU C library is used as the C library in the GNU system and + most systems with the Linux kernel. + ''; + + license = "LGPLv2+"; + + maintainers = [ stdenv.lib.maintainers.ludo ]; + platforms = stdenv.lib.platforms.linux; + } + // + args.meta + ); +}) diff --git a/pkgs/development/libraries/glibc-2.10/default.nix b/pkgs/development/libraries/glibc-2.10/default.nix new file mode 100644 index 00000000000..48f1a12c058 --- /dev/null +++ b/pkgs/development/libraries/glibc-2.10/default.nix @@ -0,0 +1,51 @@ +{ stdenv, fetchurl, kernelHeaders +, installLocales ? true +, profilingLibraries ? false +, gccCross ? null +}: + +let + build = import ./common.nix; + cross = if gccCross != null then gccCross.target else null; +in + build ({ + name = "glibc"; + + inherit fetchurl stdenv kernelHeaders installLocales profilingLibraries + cross; + + builder = ./builder.sh; + + preInstall = '' + ensureDir $out/lib + ln -s ${stdenv.gcc.gcc}/lib/libgcc_s.so.1 $out/lib/libgcc_s.so.1 + ''; + + postInstall = '' + rm $out/lib/libgcc_s.so.1 + ''; + + meta.description = "The GNU C Library"; + } + + // + + (if cross != null + then { + preConfigure = '' + sed -i s/-lgcc_eh//g "../$sourceRoot/Makeconfig" + + cat > config.cache << "EOF" +libc_cv_forced_unwind=yes +libc_cv_c_cleanup=yes +libc_cv_gnu89_inline=yes +EOF + export BUILD_CC=gcc + export CC="$crossConfig-gcc" + export AR="$crossConfig-ar" + export RANLIB="$crossConfig-ranlib" + + dontStrip = 1 + ''; + } + else {})) diff --git a/pkgs/development/libraries/glibc-2.10/info.nix b/pkgs/development/libraries/glibc-2.10/info.nix new file mode 100644 index 00000000000..926598b3760 --- /dev/null +++ b/pkgs/development/libraries/glibc-2.10/info.nix @@ -0,0 +1,25 @@ +{ stdenv, fetchurl, texinfo, perl }: + +let build = import ./common.nix; +in + build { + name = "glibc-info"; + + inherit fetchurl stdenv; + + configureFlags = [ "--enable-add-ons" ]; + + buildInputs = [ texinfo perl ]; + + buildPhase = "make info"; + + # I don't know why the info is not generated in 'build' + # Somehow building the info still does not work, because the final + # libc.info hasn't a Top node. + installPhase = '' + ensureDir "$out/share/info" + cp -v "../$sourceRoot/manual/"*.info* "$out/share/info" + ''; + + meta.description = "GNU Info manual of the GNU C Library"; + } diff --git a/pkgs/development/libraries/glibc-2.10/locale-override.patch b/pkgs/development/libraries/glibc-2.10/locale-override.patch new file mode 100644 index 00000000000..108d0e35dac --- /dev/null +++ b/pkgs/development/libraries/glibc-2.10/locale-override.patch @@ -0,0 +1,72 @@ +diff -rc glibc-2.9-20081208-orig/locale/loadarchive.c glibc-2.9-20081208/locale/loadarchive.c +*** glibc-2.9-20081208-orig/locale/loadarchive.c 2005-09-09 18:56:52.000000000 +0200 +--- glibc-2.9-20081208/locale/loadarchive.c 2009-04-19 13:54:26.000000000 +0200 +*************** +*** 124,129 **** +--- 124,142 ---- + } + + ++ static int ++ open_locale_archive () ++ { ++ int fd = -1; ++ char *path = getenv ("LOCALE_ARCHIVE"); ++ if (path) ++ fd = open_not_cancel_2 (path, O_RDONLY|O_LARGEFILE); ++ if (fd < 0) ++ fd = open_not_cancel_2 (archfname, O_RDONLY|O_LARGEFILE); ++ return fd; ++ } ++ ++ + /* Find the locale *NAMEP in the locale archive, and return the + internalized data structure for its CATEGORY data. If this locale has + already been loaded from the archive, just returns the existing data +*************** +*** 203,209 **** + archmapped = &headmap; + + /* The archive has never been opened. */ +! fd = open_not_cancel_2 (archfname, O_RDONLY|O_LARGEFILE); + if (fd < 0) + /* Cannot open the archive, for whatever reason. */ + return NULL; +--- 216,222 ---- + archmapped = &headmap; + + /* The archive has never been opened. */ +! fd = open_locale_archive (); + if (fd < 0) + /* Cannot open the archive, for whatever reason. */ + return NULL; +*************** +*** 394,400 **** + if (fd == -1) + { + struct stat64 st; +! fd = open_not_cancel_2 (archfname, O_RDONLY|O_LARGEFILE); + if (fd == -1) + /* Cannot open the archive, for whatever reason. */ + return NULL; +--- 407,413 ---- + if (fd == -1) + { + struct stat64 st; +! fd = open_locale_archive (); + if (fd == -1) + /* Cannot open the archive, for whatever reason. */ + return NULL; +diff -rc glibc-2.9-20081208-orig/sysdeps/generic/unsecvars.h glibc-2.9-20081208/sysdeps/generic/unsecvars.h +*** glibc-2.9-20081208-orig/sysdeps/generic/unsecvars.h 2006-10-11 18:24:05.000000000 +0200 +--- glibc-2.9-20081208/sysdeps/generic/unsecvars.h 2009-04-19 13:55:34.000000000 +0200 +*************** +*** 16,21 **** +--- 16,22 ---- + "LD_SHOW_AUXV\0" \ + "LD_USE_LOAD_BIAS\0" \ + "LOCALDOMAIN\0" \ ++ "LOCALE_ARCHIVE\0" \ + "LOCPATH\0" \ + "MALLOC_TRACE\0" \ + "NIS_PATH\0" \ diff --git a/pkgs/development/libraries/glibc-2.10/locales.nix b/pkgs/development/libraries/glibc-2.10/locales.nix new file mode 100644 index 00000000000..64e6bd43a67 --- /dev/null +++ b/pkgs/development/libraries/glibc-2.10/locales.nix @@ -0,0 +1,42 @@ +/* This function builds just the `lib/locale/locale-archive' file from + Glibc and nothing else. If `allLocales' is true, all supported + locales are included; otherwise, just the locales listed in + `locales'. See localedata/SUPPORTED in the Glibc source tree for + the list of all supported locales: + http://sourceware.org/cgi-bin/cvsweb.cgi/libc/localedata/SUPPORTED?cvsroot=glibc +*/ + +{ stdenv, fetchurl, allLocales ? true, locales ? ["en_US.UTF-8/UTF-8"] }: + +let build = import ./common.nix; +in + build { + name = "glibc-locales"; + + inherit fetchurl stdenv; + installLocales = true; + + builder = ./localesbuilder.sh; + + # Awful hack: `localedef' doesn't allow the path to `locale-archive' + # to be overriden, but you *can* specify a prefix, i.e. it will use + # //lib/locale/locale-archive. So we use + # $TMPDIR as a prefix, meaning that the locale-archive is placed in + # $TMPDIR/nix/store/...-glibc-.../lib/locale/locale-archive. + buildPhase = + '' + mkdir -p $TMPDIR/"$(dirname $(readlink -f $(type -p localedef)))/../lib/locale" + make localedata/install-locales \ + LOCALEDEF="localedef --prefix=$TMPDIR" \ + localedir=$out/lib/locale \ + ${if allLocales then "" else "SUPPORTED-LOCALES=\"${toString locales}\""} + ''; + + installPhase = + '' + ensureDir "$out/lib/locale" + cp -v "$TMPDIR/nix/store/"*"/lib/locale/locale-archive" "$out/lib/locale" + ''; + + meta.description = "Locale information for the GNU C Library"; + } diff --git a/pkgs/development/libraries/glibc-2.10/localesbuilder.sh b/pkgs/development/libraries/glibc-2.10/localesbuilder.sh new file mode 100644 index 00000000000..d732e208fa2 --- /dev/null +++ b/pkgs/development/libraries/glibc-2.10/localesbuilder.sh @@ -0,0 +1,17 @@ +# Glibc cannot have itself in its RPATH. +export NIX_NO_SELF_RPATH=1 + +source $stdenv/setup + +postConfigure() { + # Hack: get rid of the `-static' flag set by the bootstrap stdenv. + # This has to be done *after* `configure' because it builds some + # test binaries. + export NIX_CFLAGS_LINK= + export NIX_LDFLAGS_BEFORE= + + export NIX_DONT_SET_RPATH=1 + unset CFLAGS +} + +genericBuild diff --git a/pkgs/development/libraries/glibc-2.10/nss-skip-unavail.patch b/pkgs/development/libraries/glibc-2.10/nss-skip-unavail.patch new file mode 100644 index 00000000000..dc09b509870 --- /dev/null +++ b/pkgs/development/libraries/glibc-2.10/nss-skip-unavail.patch @@ -0,0 +1,25 @@ +diff -rc glibc-2.9-20081208-orig/sysdeps/posix/getaddrinfo.c glibc-2.9-20081208/sysdeps/posix/getaddrinfo.c +*** glibc-2.9-20081208-orig/sysdeps/posix/getaddrinfo.c 2008-07-30 21:14:22.000000000 +0200 +--- glibc-2.9-20081208/sysdeps/posix/getaddrinfo.c 2008-12-10 11:39:32.000000000 +0100 +*************** +*** 505,512 **** + int no_data = 0; + int no_inet6_data = 0; + service_user *nip = NULL; +- enum nss_status inet6_status = NSS_STATUS_UNAVAIL; +- enum nss_status status = NSS_STATUS_UNAVAIL; + int no_more; + int old_res_options; + +--- 505,510 ---- +*************** +*** 702,707 **** +--- 700,707 ---- + + while (!no_more) + { ++ enum nss_status inet6_status = NSS_STATUS_UNAVAIL; ++ enum nss_status status = NSS_STATUS_UNAVAIL; + nss_gethostbyname4_r fct4 + = __nss_lookup_function (nip, "gethostbyname4_r"); + if (fct4 != NULL) diff --git a/pkgs/development/libraries/glibc-2.10/rpcgen-path.patch b/pkgs/development/libraries/glibc-2.10/rpcgen-path.patch new file mode 100644 index 00000000000..fbb03dd5fad --- /dev/null +++ b/pkgs/development/libraries/glibc-2.10/rpcgen-path.patch @@ -0,0 +1,72 @@ +By default, rpcgen(1) looks for cpp(1) from a list of fixed absolute paths +(`/lib/cpp', etc.), which may only be overrided with the `-Y' option. This +patch makes it run any `cpp' command found in $PATH. + +--- glibc-2.7/sunrpc/rpc_main.c 2006-11-10 21:54:46.000000000 +0100 ++++ glibc-2.7/sunrpc/rpc_main.c 2009-04-22 14:32:10.000000000 +0200 +@@ -79,7 +79,7 @@ static const char *cmdname; + + static const char *svcclosetime = "120"; + static int cppDefined; /* explicit path for C preprocessor */ +-static const char *CPP = SUNOS_CPP; ++static const char *CPP = "cpp"; + static const char CPPFLAGS[] = "-C"; + static char *pathbuf; + static int cpp_pid; +@@ -108,7 +108,6 @@ static char *extendfile (const char *fil + static void open_output (const char *infile, const char *outfile); + static void add_warning (void); + static void clear_args (void); +-static void find_cpp (void); + static void open_input (const char *infile, const char *define); + static int check_nettype (const char *name, const char *list_to_check[]); + static void c_output (const char *infile, const char *define, +@@ -327,31 +326,6 @@ clear_args (void) + argcount = FIXEDARGS; + } + +-/* make sure that a CPP exists */ +-static void +-find_cpp (void) +-{ +- struct stat buf; +- +- if (stat (CPP, &buf) < 0) +- { /* /lib/cpp or explicit cpp does not exist */ +- if (cppDefined) +- { +- fprintf (stderr, _ ("cannot find C preprocessor: %s \n"), CPP); +- crash (); +- } +- else +- { /* try the other one */ +- CPP = SVR4_CPP; +- if (stat (CPP, &buf) < 0) +- { /* can't find any cpp */ +- fputs (_ ("cannot find any C preprocessor (cpp)\n"), stdout); +- crash (); +- } +- } +- } +-} +- + /* + * Open input file with given define for C-preprocessor + */ +@@ -370,7 +344,6 @@ open_input (const char *infile, const ch + switch (cpp_pid) + { + case 0: +- find_cpp (); + putarg (0, CPP); + putarg (1, CPPFLAGS); + addarg (define); +@@ -380,7 +353,7 @@ open_input (const char *infile, const ch + close (1); + dup2 (pd[1], 1); + close (pd[0]); +- execv (arglist[0], (char **) arglist); ++ execvp (arglist[0], (char **) arglist); + perror ("execv"); + exit (1); + case -1: diff --git a/pkgs/development/libraries/glibc-2.10/stack-protector-link.patch b/pkgs/development/libraries/glibc-2.10/stack-protector-link.patch new file mode 100644 index 00000000000..d200ece52df --- /dev/null +++ b/pkgs/development/libraries/glibc-2.10/stack-protector-link.patch @@ -0,0 +1,12 @@ +Make sure `nscd' et al. are linked against `libssp'. + +--- glibc-2.11/nscd/Makefile 2009-10-30 18:17:08.000000000 +0100 ++++ glibc-2.11/nscd/Makefile 2009-11-22 01:19:37.000000000 +0100 +@@ -126,6 +126,7 @@ CFLAGS-res_hconf.c += $(nscd-cflags) + ifeq (yesyes,$(have-fpie)$(build-shared)) + relro-LDFLAGS += -Wl,-z,now + ++$(objpfx)nscd: LDFLAGS += -lssp + $(objpfx)nscd: $(addprefix $(objpfx),$(nscd-modules:=.o)) + $(+link-pie) + endif diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index f08bcc3c647..f1c2953a4b7 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -3417,7 +3417,9 @@ let let haveRedHatKernel = system == "i686-linux" || system == "x86_64-linux"; haveBrokenRedHatKernel = haveRedHatKernel && getConfig ["brokenRedHatKernel"] false; in - useFromStdenv "glibc" (if haveBrokenRedHatKernel then glibc25 else glibc211); + useFromStdenv "glibc" (if haveBrokenRedHatKernel then glibc25 else + # glibc211 does not have ports still. + if (system == "armv5tel-linux") then glibc210 else glibc211); glibc25 = import ../development/libraries/glibc-2.5 { inherit fetchurl stdenv kernelHeaders; @@ -3443,6 +3445,11 @@ let glibcCross = cross: glibc29Cross cross; + glibc210 = makeOverridable (import ../development/libraries/glibc-2.10) { + inherit fetchurl stdenv kernelHeaders; + installLocales = getPkgConfig "glibc" "locales" false; + }; + glibc211 = makeOverridable (import ../development/libraries/glibc-2.11) { inherit fetchurl stdenv kernelHeaders; installLocales = getPkgConfig "glibc" "locales" false; @@ -3462,7 +3469,7 @@ let installLocales = getPkgConfig "glibc" "locales" false; }; - glibcLocales = makeOverridable (import ../development/libraries/glibc-2.11/locales.nix) { + glibcLocales = makeOverridable (import ../development/libraries/glibc-2.10/locales.nix) { inherit fetchurl stdenv; }; From 5c0bb27a8681b828affd5c2c8bd0ac6ee04f0cd7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Llu=C3=ADs=20Batlle=20i=20Rossell?= Date: Sat, 28 Nov 2009 15:38:48 +0000 Subject: [PATCH 074/232] Adding gunzip to the bootstrap-tools (required to build ppl with the bootstrap tools, when boostrapping gcc) svn path=/nixpkgs/branches/stdenv-updates/; revision=18689 --- pkgs/stdenv/linux/scripts/unpack-bootstrap-tools-arm.sh | 2 +- pkgs/stdenv/linux/scripts/unpack-bootstrap-tools.sh | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/stdenv/linux/scripts/unpack-bootstrap-tools-arm.sh b/pkgs/stdenv/linux/scripts/unpack-bootstrap-tools-arm.sh index 0f4ad24f0cb..8692983d985 100644 --- a/pkgs/stdenv/linux/scripts/unpack-bootstrap-tools-arm.sh +++ b/pkgs/stdenv/linux/scripts/unpack-bootstrap-tools-arm.sh @@ -40,8 +40,8 @@ mv $out/lib/libpthread.so.tmp $out/lib/libpthread.so # Provide some additional symlinks. ln -s bash $out/bin/sh - ln -s bzip2 $out/bin/bunzip2 +ln -s gzip $out/bin/gunzip # fetchurl needs curl. bzip2 -d < $curl > $out/bin/curl diff --git a/pkgs/stdenv/linux/scripts/unpack-bootstrap-tools.sh b/pkgs/stdenv/linux/scripts/unpack-bootstrap-tools.sh index 0f4ad24f0cb..8692983d985 100644 --- a/pkgs/stdenv/linux/scripts/unpack-bootstrap-tools.sh +++ b/pkgs/stdenv/linux/scripts/unpack-bootstrap-tools.sh @@ -40,8 +40,8 @@ mv $out/lib/libpthread.so.tmp $out/lib/libpthread.so # Provide some additional symlinks. ln -s bash $out/bin/sh - ln -s bzip2 $out/bin/bunzip2 +ln -s gzip $out/bin/gunzip # fetchurl needs curl. bzip2 -d < $curl > $out/bin/curl From 641101c7fda853b04d6ded6d046012fc3468bd14 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Llu=C3=ADs=20Batlle=20i=20Rossell?= Date: Sat, 28 Nov 2009 19:21:33 +0000 Subject: [PATCH 075/232] Again attempting to add gunzip to the bootstrap-tools to allow the ppq installation. svn path=/nixpkgs/branches/stdenv-updates/; revision=18690 --- pkgs/stdenv/linux/scripts/unpack-bootstrap-tools-arm.sh | 8 +++++++- pkgs/stdenv/linux/scripts/unpack-bootstrap-tools.sh | 8 +++++++- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/pkgs/stdenv/linux/scripts/unpack-bootstrap-tools-arm.sh b/pkgs/stdenv/linux/scripts/unpack-bootstrap-tools-arm.sh index 8692983d985..2399e48b026 100644 --- a/pkgs/stdenv/linux/scripts/unpack-bootstrap-tools-arm.sh +++ b/pkgs/stdenv/linux/scripts/unpack-bootstrap-tools-arm.sh @@ -41,7 +41,13 @@ mv $out/lib/libpthread.so.tmp $out/lib/libpthread.so # Provide some additional symlinks. ln -s bash $out/bin/sh ln -s bzip2 $out/bin/bunzip2 -ln -s gzip $out/bin/gunzip + +# Mimic the gunzip script as in gzip installations +cat > $out/bin/gunzip < $out/bin/curl diff --git a/pkgs/stdenv/linux/scripts/unpack-bootstrap-tools.sh b/pkgs/stdenv/linux/scripts/unpack-bootstrap-tools.sh index 8692983d985..2399e48b026 100644 --- a/pkgs/stdenv/linux/scripts/unpack-bootstrap-tools.sh +++ b/pkgs/stdenv/linux/scripts/unpack-bootstrap-tools.sh @@ -41,7 +41,13 @@ mv $out/lib/libpthread.so.tmp $out/lib/libpthread.so # Provide some additional symlinks. ln -s bash $out/bin/sh ln -s bzip2 $out/bin/bunzip2 -ln -s gzip $out/bin/gunzip + +# Mimic the gunzip script as in gzip installations +cat > $out/bin/gunzip < $out/bin/curl From 83f8715475b5bedf1516ed0728fcfa7dd40d9f22 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= Date: Sun, 29 Nov 2009 14:59:41 +0000 Subject: [PATCH 076/232] linux-headers-2.6.28: Verbosely apply the patch against `unifdef.c'. svn path=/nixpkgs/branches/stdenv-updates/; revision=18692 --- pkgs/os-specific/linux/kernel-headers/2.6.28.nix | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/pkgs/os-specific/linux/kernel-headers/2.6.28.nix b/pkgs/os-specific/linux/kernel-headers/2.6.28.nix index fbda28587f0..525538f7bf3 100644 --- a/pkgs/os-specific/linux/kernel-headers/2.6.28.nix +++ b/pkgs/os-specific/linux/kernel-headers/2.6.28.nix @@ -4,11 +4,11 @@ assert stdenv.isLinux; let version = "2.6.28.5"; -in +in stdenv.mkDerivation { name = "linux-headers-${version}"; - + src = fetchurl { url = "mirror://kernel/linux/kernel/v2.6/linux-${version}.tar.bz2"; sha256 = "0hifjh75sinifr5138v22zwbpqln6lhn65k8b57a1dyzlqca7cl9"; @@ -16,7 +16,7 @@ stdenv.mkDerivation { targetConfig = if (cross != null) then cross.config else null; - platform = + platform = if cross != null then cross.arch else if stdenv.system == "i686-linux" then "i386" else if stdenv.system == "x86_64-linux" then "x86_64" else @@ -29,11 +29,11 @@ stdenv.mkDerivation { extraIncludeDirs = if cross != null then - (if cross.arch == "powerpc" then ["ppc"] else []) + (if cross.arch == "powerpc" then ["ppc"] else []) else if stdenv.system == "powerpc-linux" then ["ppc"] else []; patchPhase = '' - patch -p1 "${./unifdef-getline.patch}" + patch --verbose -p1 "${./unifdef-getline.patch}" sed -i '/scsi/d' include/Kbuild ''; @@ -57,6 +57,6 @@ stdenv.mkDerivation { ln -s asm $out/include/asm-$platform if test "$platform" = "i386" -o "$platform" = "x86_64"; then ln -s asm $out/include/asm-x86 - fi + fi ''; } From 0e691fca14957ea9e5eefed4967e8300df661f32 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Llu=C3=ADs=20Batlle=20i=20Rossell?= Date: Sun, 29 Nov 2009 18:21:20 +0000 Subject: [PATCH 077/232] Fixing the kernel headers patchPhase. svn path=/nixpkgs/branches/stdenv-updates/; revision=18697 --- pkgs/os-specific/linux/kernel-headers/2.6.28.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/os-specific/linux/kernel-headers/2.6.28.nix b/pkgs/os-specific/linux/kernel-headers/2.6.28.nix index 525538f7bf3..50ce58ff347 100644 --- a/pkgs/os-specific/linux/kernel-headers/2.6.28.nix +++ b/pkgs/os-specific/linux/kernel-headers/2.6.28.nix @@ -33,7 +33,7 @@ stdenv.mkDerivation { else if stdenv.system == "powerpc-linux" then ["ppc"] else []; patchPhase = '' - patch --verbose -p1 "${./unifdef-getline.patch}" + patch --verbose -p1 < "${./unifdef-getline.patch}" sed -i '/scsi/d' include/Kbuild ''; From 6089b48c03416f2cfe73dddfb8609178d71d3b1e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Llu=C3=ADs=20Batlle=20i=20Rossell?= Date: Sun, 29 Nov 2009 21:30:46 +0000 Subject: [PATCH 078/232] Updating the url to the armv5tel-linux bootstrap files, once niksnut updated the svn checkout published in http://nixos.org/tarballs/stdenv-linux/ svn path=/nixpkgs/branches/stdenv-updates/; revision=18700 --- pkgs/stdenv/linux/bootstrap/armv5tel/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/stdenv/linux/bootstrap/armv5tel/default.nix b/pkgs/stdenv/linux/bootstrap/armv5tel/default.nix index 4369777d18d..583e384fdf4 100644 --- a/pkgs/stdenv/linux/bootstrap/armv5tel/default.nix +++ b/pkgs/stdenv/linux/bootstrap/armv5tel/default.nix @@ -7,7 +7,7 @@ curl = ./curl.bz2; bootstrapTools = { - url = "http://vicerveza.homeunix.net/~viric/tmp/bootstrap-tools-armv5tel-linux.cpio.bz2"; + url = "http://nixos.org/tarballs/stdenv-linux/armv5tel/r17267/bootstrap-tools.cpio.bz2"; sha256 = "0b7mrcl7naj1xpqx1qnlmd825dxzikzhxir3mw4pr3dy28n0b2ka"; }; } From f4720cd5f93448e0c1d8961274014c38340d60f1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Llu=C3=ADs=20Batlle=20i=20Rossell?= Date: Sun, 29 Nov 2009 23:27:35 +0000 Subject: [PATCH 079/232] Trying to get the gcc-4.4 cross-build also. Fixing the glibc-2.10 expression on cross-builds (which should be ported to the glibc-2.11 expression once we get "ports" there) Making kde3 and cyrus-sasl use gcc-4.3, because the strictness in gcc-4.4 does not allow them build. svn path=/nixpkgs/branches/stdenv-updates/; revision=18706 --- pkgs/development/compilers/gcc-4.4/builder.sh | 73 +++++++++++++++---- .../development/compilers/gcc-4.4/default.nix | 36 ++++++++- .../libraries/glibc-2.10/common.nix | 4 +- .../libraries/glibc-2.10/default.nix | 4 +- pkgs/top-level/all-packages.nix | 42 ++++++++--- 5 files changed, 127 insertions(+), 32 deletions(-) diff --git a/pkgs/development/compilers/gcc-4.4/builder.sh b/pkgs/development/compilers/gcc-4.4/builder.sh index 184bee74655..317283c43dd 100644 --- a/pkgs/development/compilers/gcc-4.4/builder.sh +++ b/pkgs/development/compilers/gcc-4.4/builder.sh @@ -29,14 +29,14 @@ if test "$noSysDirs" = "1"; then # SSIZE_MAX, which breaks the build). export NIX_FIXINC_DUMMY=$(cat $NIX_GCC/nix-support/orig-libc)/include - # The path to the Glibc binaries such as `crti.o'. - glibc_libdir="$(cat $NIX_GCC/nix-support/orig-libc)/lib" + # The path to the Glibc binaries such as `crti.o'. + glibc_libdir="$(cat $NIX_GCC/nix-support/orig-libc)/lib" else # Hack: support impure environments. extraCFlags="-isystem /usr/include" extraLDFlags="-L/usr/lib64 -L/usr/lib" - glibc_libdir="/usr/lib" + glibc_libdir="/usr/lib" export NIX_FIXINC_DUMMY=/usr/include fi @@ -58,17 +58,56 @@ if test "$noSysDirs" = "1"; then export EXTRA_LDFLAGS="$EXTRA_LDFLAGS -Wl,$i" done - makeFlagsArray=( \ - "${makeFlagsArray[@]}" \ - NATIVE_SYSTEM_HEADER_DIR="$NIX_FIXINC_DUMMY" \ - SYSTEM_HEADER_DIR="$NIX_FIXINC_DUMMY" \ - LIMITS_H_TEST=true \ - X_CFLAGS="$extraCflags $EXTRA_LDFLAGS" \ - LDFLAGS="$extraCflags $EXTRA_LDFLAGS" \ - LDFLAGS_FOR_TARGET="$extraCflags $EXTRA_LDFLAGS" \ - ) + if test -n "$targetConfig"; then + if test -z "$crossStageStatic"; then + extraXCFlags="-B${glibcCross}/lib -idirafter ${glibcCross}/include" + extraXLDFlags="-L${glibcCross}/lib" + export EXTRA_CFLAGS_TARGET=$extraXCFlags + for i in $extraXLDFlags; do + export EXTRA_LDFLAGS_TARGET="$EXTRA_LDFLAGS_TARGET -Wl,$i" + done + fi + + makeFlagsArray=( \ + "${makeFlagsArray[@]}" \ + NATIVE_SYSTEM_HEADER_DIR="$NIX_FIXINC_DUMMY" \ + SYSTEM_HEADER_DIR="$NIX_FIXINC_DUMMY" \ + CFLAGS_FOR_TARGET="$EXTRA_CFLAGS_TARGET $EXTRA_LDFLAGS_TARGET" \ + LDFLAGS_FOR_TARGET="$EXTRA_CFLAGS_TARGET $EXTRA_LDFLAGS_TARGET" \ + ) + else + export EXTRA_CFLAGS_TARGET=$EXTRA_CFLAGS + export EXTRA_LDFLAGS_TARGET=$EXTRA_LDFLAGS + makeFlagsArray=( \ + "${makeFlagsArray[@]}" \ + NATIVE_SYSTEM_HEADER_DIR="$NIX_FIXINC_DUMMY" \ + SYSTEM_HEADER_DIR="$NIX_FIXINC_DUMMY" \ + CFLAGS_FOR_BUILD="$extraCflags $EXTRA_CFLAGS $EXTRA_LDFLAGS" \ + CFLAGS_FOR_TARGET="$EXTRA_CFLAGS $EXTRA_LDFLAGS" \ + LDFLAGS_FOR_BUILD="$extraCflags $EXTRA_CFLAGS $EXTRA_LDFLAGS" \ + LDFLAGS_FOR_TARGET="$EXTRA_CFLAGS $EXTRA_LDFLAGS" \ + ) + fi + + if test -n "$targetConfig" -a "$crossStageStatic" == 1; then + # We don't want the gcc build to assume there will be a libc providing + # limits.h in this stagae + makeFlagsArray=( \ + "${makeFlagsArray[@]}" \ + LIMITS_H_TEST=false \ + ) + else + makeFlagsArray=( \ + "${makeFlagsArray[@]}" \ + LIMITS_H_TEST=true \ + ) + fi fi +if test -n "$targetConfig"; then + # The host strip will destroy some important details of the objects + dontStrip=1 +fi preConfigure() { # Perform the build in a different directory. @@ -106,10 +145,12 @@ postInstall() { } -if test -z "$profiledCompiler"; then - buildFlags="bootstrap $buildFlags" -else - buildFlags="profiledbootstrap $buildFlags" +if test -z "$targetConfig"; then + if test -z "$profiledCompiler"; then + buildFlags="bootstrap $buildFlags" + else + buildFlags="profiledbootstrap $buildFlags" + fi fi genericBuild diff --git a/pkgs/development/compilers/gcc-4.4/default.nix b/pkgs/development/compilers/gcc-4.4/default.nix index 40dd6f49f76..c7d097d8caa 100644 --- a/pkgs/development/compilers/gcc-4.4/default.nix +++ b/pkgs/development/compilers/gcc-4.4/default.nix @@ -3,6 +3,7 @@ , langJava ? false , profiledCompiler ? false , staticCompiler ? false +, enableShared ? true , texinfo ? null , gmp, mpfr, gettext, which , ppl ? null, cloogppl ? null # used by the Graphite optimization framework @@ -14,6 +15,10 @@ , libXrandr ? null, libXi ? null, inputproto ? null, randrproto ? null , enableMultilib ? false , name ? "gcc" +, cross ? null +, binutilsCross ? null +, glibcCross ? null +, crossStageStatic ? true }: assert langTreelang -> bison != null && flex != null; @@ -46,13 +51,33 @@ let version = "4.4.2"; javaAwtGtk = langJava && gtk != null; + crossConfigureFlags = + "--target=${cross.config}" + + (if crossStageStatic then + " --disable-libssp --disable-nls" + + " --without-headers" + + " --disable-threads " + + " --disable-libmudflap " + + " --disable-libgomp " + + " --disable-shared" + else + " --with-headers=${glibcCross}/include" + + " --enable-__cxa_atexit" + + " --enable-long-long" + + " --enable-threads=posix" + + " --enable-nls" + ); + stageNameAddon = if (crossStageStatic) then "-stage-static" else + "-stage-final"; + crossNameAddon = if (cross != null) then "-${cross.config}" + stageNameAddon else ""; + in # We need all these X libraries when building AWT with GTK+. assert gtk != null -> (filter (x: x == null) xlibs) == []; stdenv.mkDerivation ({ - name = "${name}-${version}"; + name = "${name}-${version}" + crossNameAddon; builder = ./builder.sh; @@ -79,6 +104,7 @@ stdenv.mkDerivation ({ configureFlags = " ${if enableMultilib then "" else "--disable-multilib"} + ${if enableShared then "" else "--disable-shared"} ${if ppl != null then "--with-ppl=${ppl}" else ""} ${if cloogppl != null then "--with-cloog=${cloogppl}" else ""} ${if langJava then "--with-ecj-jar=${javaEcj}" else ""} @@ -100,8 +126,16 @@ stdenv.mkDerivation ({ ) } ${if stdenv.isi686 then "--with-arch=i686" else ""} + ${if cross != null then crossConfigureFlags else ""} "; + targetConfig = if (cross != null) then cross.config else null; + + # Needed for the cross compilation to work + AR = "ar"; + LD = "ld"; + CC = "gcc"; + # Setting $CPATH and $LIBRARY_PATH to make sure both `gcc' and `xgcc' find # the library headers and binaries, regarless of the language being # compiled. diff --git a/pkgs/development/libraries/glibc-2.10/common.nix b/pkgs/development/libraries/glibc-2.10/common.nix index 87fa4aea0f1..fd91218c26a 100644 --- a/pkgs/development/libraries/glibc-2.10/common.nix +++ b/pkgs/development/libraries/glibc-2.10/common.nix @@ -1,8 +1,8 @@ /* Build configuration used to build glibc, Info files, and locale information. */ -{ name, fetchurl, stdenv, installLocales ? false -, cross ? null, gccCross ? null, kernelHeaders ? null +cross : { name, fetchurl, stdenv, installLocales ? false +, gccCross ? null, kernelHeaders ? null , profilingLibraries ? false, meta, ... }@args : let version = "2.10.1"; diff --git a/pkgs/development/libraries/glibc-2.10/default.nix b/pkgs/development/libraries/glibc-2.10/default.nix index 48f1a12c058..f65f8b6b49f 100644 --- a/pkgs/development/libraries/glibc-2.10/default.nix +++ b/pkgs/development/libraries/glibc-2.10/default.nix @@ -8,11 +8,11 @@ let build = import ./common.nix; cross = if gccCross != null then gccCross.target else null; in - build ({ + build cross ({ name = "glibc"; inherit fetchurl stdenv kernelHeaders installLocales profilingLibraries - cross; + gccCross; builder = ./builder.sh; diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index f1c2953a4b7..a3435301ed5 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -1774,9 +1774,9 @@ let profiledCompiler = false; }); - gcc43 = useFromStdenv "gcc" gcc43_real; + gcc44 = useFromStdenv "gcc" gcc44_real; - gcc43_real = lowPrio (wrapGCC (makeOverridable (import ../development/compilers/gcc-4.3) { + gcc43 = lowPrio (wrapGCC (makeOverridable (import ../development/compilers/gcc-4.3) { inherit stdenv fetchurl texinfo gmp mpfr noSysDirs; profiledCompiler = true; })); @@ -1790,8 +1790,18 @@ let crossStageStatic = false; }; + gcc44_realCross = cross : makeOverridable (import ../development/compilers/gcc-4.4) { + inherit stdenv fetchurl texinfo gmp mpfr ppl cloogppl noSysDirs cross + gettext which; + binutilsCross = binutilsCross cross; + glibcCross = glibcCross cross; + profiledCompiler = false; + enableMultilib = true; + crossStageStatic = false; + }; + gccCrossStageStatic = cross: wrapGCCCross { - gcc = forceBuildDrv ((gcc43_realCross cross).override { + gcc = forceBuildDrv ((gcc44_realCross cross).override { crossStageStatic = true; langCC = false; glibcCross = null; @@ -1802,19 +1812,19 @@ let }; gccCrossStageFinal = cross: wrapGCCCross { - gcc = forceBuildDrv (gcc43_realCross cross); + gcc = forceBuildDrv (gcc44_realCross cross); libc = glibcCross cross; binutils = binutilsCross cross; inherit cross; }; - gcc43_multi = lowPrio (wrapGCCWith (import ../build-support/gcc-wrapper) glibc_multi (gcc43_real.gcc.override { + gcc43_multi = lowPrio (wrapGCCWith (import ../build-support/gcc-wrapper) glibc_multi (gcc43.gcc.override { stdenv = overrideGCC stdenv (wrapGCCWith (import ../build-support/gcc-wrapper) glibc_multi gcc); profiledCompiler = false; enableMultilib = true; })); - gcc44 = lowPrio (wrapGCC (makeOverridable (import ../development/compilers/gcc-4.4) { + gcc44_real = lowPrio (wrapGCC (makeOverridable (import ../development/compilers/gcc-4.4) { inherit fetchurl stdenv texinfo gmp mpfr ppl cloogppl gettext which noSysDirs; profiledCompiler = true; @@ -1855,7 +1865,7 @@ let inherit gmp mpfr; }); - gfortran43 = wrapGCC (gcc43_real.gcc.override { + gfortran43 = wrapGCC (gcc43.gcc.override { name = "gfortran"; langFortran = true; langCC = false; @@ -3205,7 +3215,8 @@ let }; cyrus_sasl = import ../development/libraries/cyrus-sasl { - inherit fetchurl stdenv openssl db4 gettext; + inherit fetchurl openssl db4 gettext; + stdenv = overrideGCC stdenv gcc43; }; db4 = db45; @@ -3443,7 +3454,14 @@ let installLocales = getPkgConfig "glibc" "locales" false; }); - glibcCross = cross: glibc29Cross cross; + glibc210Cross = cross: forceBuildDrv (makeOverridable (import ../development/libraries/glibc-2.10) { + inherit stdenv fetchurl; + gccCross = gccCrossStageStatic cross; + kernelHeaders = kernelHeadersCross cross; + installLocales = getPkgConfig "glibc" "locales" false; + }); + + glibcCross = cross: glibc210Cross cross; glibc210 = makeOverridable (import ../development/libraries/glibc-2.10) { inherit fetchurl stdenv kernelHeaders; @@ -8157,16 +8175,18 @@ let kdelibs = import ../desktops/kde-3/kdelibs { inherit - fetchurl stdenv xlibs zlib perl openssl pcre pkgconfig + fetchurl xlibs zlib perl openssl pcre pkgconfig libjpeg libpng libtiff libxml2 libxslt libtool expat freetype bzip2 cups attr acl; + stdenv = overrideGCC stdenv gcc43; qt = qt3; }; kdebase = import ../desktops/kde-3/kdebase { inherit - fetchurl stdenv pkgconfig x11 xlibs zlib libpng libjpeg perl + fetchurl pkgconfig x11 xlibs zlib libpng libjpeg perl kdelibs openssl bzip2 fontconfig pam hal dbus glib; + stdenv = overrideGCC stdenv gcc43; qt = qt3; }; From 03fc55deeb272a4f24ba10ce6ac3fa58f13248a1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Llu=C3=ADs=20Batlle=20i=20Rossell?= Date: Tue, 1 Dec 2009 10:29:22 +0000 Subject: [PATCH 080/232] Making the gcc 4.4 expression more friendly. Nevertheless it still cannot be used to cross-compile, because of some bug in 4.4.2 I think. This bug does not allow building a cross-compiler without libc: http://archives.free.net.ph/message/20091119.140407.040d3c5b.en.html Maybe we should wait for 4.4.3 or stay with 4.4.1 cross compiling. By now I will keep 4.3.4 on cross compilation. svn path=/nixpkgs/branches/stdenv-updates/; revision=18730 --- pkgs/development/compilers/gcc-4.4/builder.sh | 26 +++++++++++++------ .../development/compilers/gcc-4.4/default.nix | 1 + 2 files changed, 19 insertions(+), 8 deletions(-) diff --git a/pkgs/development/compilers/gcc-4.4/builder.sh b/pkgs/development/compilers/gcc-4.4/builder.sh index 317283c43dd..0b4f9e89a0f 100644 --- a/pkgs/development/compilers/gcc-4.4/builder.sh +++ b/pkgs/development/compilers/gcc-4.4/builder.sh @@ -40,16 +40,19 @@ if test "$noSysDirs" = "1"; then export NIX_FIXINC_DUMMY=/usr/include fi - # Setting $CPATH makes sure both `gcc' and `xgcc' find the C - # library headers, regarless of the language being compiled. - export CPATH="$NIX_FIXINC_DUMMY${CPATH:+:}$CPATH" + # We should not allow gcc find the headers of the native glibc + # (Here I only think of c,c++ compilers) + if test -z "$targetConfig"; then + # Setting $CPATH makes sure both `gcc' and `xgcc' find the C + # library headers, regarless of the language being compiled. + export CPATH="$NIX_FIXINC_DUMMY${CPATH:+:}$CPATH" - # Likewise, to help it find `crti.o' and similar files. - export LIBRARY_PATH="$glibc_libdir${LIBRARY_PATH:+:}$LIBRARY_PATH" - - echo "setting \$CPATH to \`$CPATH'" - echo "setting \$LIBRARY_PATH to \`$LIBRARY_PATH'" + # Likewise, to help it find `crti.o' and similar files. + export LIBRARY_PATH="$glibc_libdir${LIBRARY_PATH:+:}$LIBRARY_PATH" + echo "setting \$CPATH to \`$CPATH'" + echo "setting \$LIBRARY_PATH to \`$LIBRARY_PATH'" + fi extraCFlags="-g0 $extraCFlags" extraLDFlags="--strip-debug $extraLDFlags" @@ -110,6 +113,13 @@ if test -n "$targetConfig"; then fi preConfigure() { + if test -n "$newlibSrc"; then + tar xvf "$newlibSrc" -C .. + ln -s ../newlib-*/newlib newlib + # Patch to get armvt5el working: + sed -i -e 's/ arm)/ arm*)/' newlib/configure.host + fi + # Perform the build in a different directory. mkdir ../build cd ../build diff --git a/pkgs/development/compilers/gcc-4.4/default.nix b/pkgs/development/compilers/gcc-4.4/default.nix index c7d097d8caa..1f4feddc6f4 100644 --- a/pkgs/development/compilers/gcc-4.4/default.nix +++ b/pkgs/development/compilers/gcc-4.4/default.nix @@ -100,6 +100,7 @@ stdenv.mkDerivation ({ ++ (optional (boehmgc != null) boehmgc) ++ (optionals langJava [zip unzip]) ++ (optionals javaAwtGtk [gtk pkgconfig libart_lgpl] ++ xlibs) + ++ (optionals (cross != null) [binutilsCross]) ; configureFlags = " From fe75d617b2466f9b6bc8e0d0f6920a351ffbdefc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Llu=C3=ADs=20Batlle=20i=20Rossell?= Date: Tue, 1 Dec 2009 15:20:13 +0000 Subject: [PATCH 081/232] Setting gcc 4.3.4 as the default cross-gcc, and fixing glibc-2.10 for cross building with it. svn path=/nixpkgs/branches/stdenv-updates/; revision=18736 --- pkgs/development/libraries/glibc-2.10/default.nix | 2 +- pkgs/top-level/all-packages.nix | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/pkgs/development/libraries/glibc-2.10/default.nix b/pkgs/development/libraries/glibc-2.10/default.nix index f65f8b6b49f..49ee71af506 100644 --- a/pkgs/development/libraries/glibc-2.10/default.nix +++ b/pkgs/development/libraries/glibc-2.10/default.nix @@ -45,7 +45,7 @@ EOF export AR="$crossConfig-ar" export RANLIB="$crossConfig-ranlib" - dontStrip = 1 + dontStrip=1 ''; } else {})) diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index a3435301ed5..aa41f8c4361 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -1801,7 +1801,7 @@ let }; gccCrossStageStatic = cross: wrapGCCCross { - gcc = forceBuildDrv ((gcc44_realCross cross).override { + gcc = forceBuildDrv ((gcc43_realCross cross).override { crossStageStatic = true; langCC = false; glibcCross = null; @@ -1812,7 +1812,7 @@ let }; gccCrossStageFinal = cross: wrapGCCCross { - gcc = forceBuildDrv (gcc44_realCross cross); + gcc = forceBuildDrv (gcc43_realCross cross); libc = glibcCross cross; binutils = binutilsCross cross; inherit cross; From 980d7c04a0d4aeaa1790aecc3003f8f60cb74040 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Llu=C3=ADs=20Batlle=20i=20Rossell?= Date: Tue, 1 Dec 2009 20:52:13 +0000 Subject: [PATCH 082/232] Patching uclibc for it to cope well with glibc-2.10 and above This goes similar to the kernel-headers recent patch for the same file and purpose. svn path=/nixpkgs/branches/stdenv-updates/; revision=18743 --- pkgs/os-specific/linux/uclibc/default.nix | 2 ++ .../linux/uclibc/unifdef-getline.patch | 31 +++++++++++++++++++ 2 files changed, 33 insertions(+) create mode 100644 pkgs/os-specific/linux/uclibc/unifdef-getline.patch diff --git a/pkgs/os-specific/linux/uclibc/default.nix b/pkgs/os-specific/linux/uclibc/default.nix index 1edcc933e57..33914eea3d6 100644 --- a/pkgs/os-specific/linux/uclibc/default.nix +++ b/pkgs/os-specific/linux/uclibc/default.nix @@ -24,6 +24,8 @@ stdenv.mkDerivation { make oldconfig ''; + patches = [ ./unifdef-getline.patch ]; + installPhase = '' mkdir -p $out make PREFIX=$out install diff --git a/pkgs/os-specific/linux/uclibc/unifdef-getline.patch b/pkgs/os-specific/linux/uclibc/unifdef-getline.patch new file mode 100644 index 00000000000..7e6a50014a3 --- /dev/null +++ b/pkgs/os-specific/linux/uclibc/unifdef-getline.patch @@ -0,0 +1,31 @@ +diff --git a/extra/scripts/unifdef.c b/extra/scripts/unifdef.c +index 552025e..977e682 100644 +--- a/extra/scripts/unifdef.c ++++ b/extra/scripts/unifdef.c +@@ -206,7 +206,7 @@ static void done(void); + static void error(const char *); + static int findsym(const char *); + static void flushline(bool); +-static Linetype getline(void); ++static Linetype parseline(void); + static Linetype ifeval(const char **); + static void ignoreoff(void); + static void ignoreon(void); +@@ -512,7 +512,7 @@ process(void) + + for (;;) { + linenum++; +- lineval = getline(); ++ lineval = parseline(); + trans_table[ifstate[depth]][lineval](); + debug("process %s -> %s depth %d", + linetype_name[lineval], +@@ -526,7 +526,7 @@ process(void) + * help from skipcomment(). + */ + static Linetype +-getline(void) ++parseline(void) + { + const char *cp; + int cursym; From 8910d4e646118eafe2131d0bf794c04ac7fc6a97 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Llu=C3=ADs=20Batlle=20i=20Rossell?= Date: Tue, 1 Dec 2009 21:33:11 +0000 Subject: [PATCH 083/232] Adding ports to glibc-2.11. Making glibc-2.11 the default in cross-compiling and also for the native armv5tel. svn path=/nixpkgs/branches/stdenv-updates/; revision=18744 --- .../libraries/glibc-2.11/common.nix | 12 +++++++++-- .../libraries/glibc-2.11/default.nix | 6 +++--- pkgs/top-level/all-packages.nix | 21 ++++++++----------- 3 files changed, 22 insertions(+), 17 deletions(-) diff --git a/pkgs/development/libraries/glibc-2.11/common.nix b/pkgs/development/libraries/glibc-2.11/common.nix index 4d4438a9c42..ed667be10ef 100644 --- a/pkgs/development/libraries/glibc-2.11/common.nix +++ b/pkgs/development/libraries/glibc-2.11/common.nix @@ -1,8 +1,8 @@ /* Build configuration used to build glibc, Info files, and locale information. */ -{ name, fetchurl, stdenv, installLocales ? false -, cross ? null, gccCross ? null, kernelHeaders ? null +cross : { name, fetchurl, stdenv, installLocales ? false +, gccCross ? null, kernelHeaders ? null , profilingLibraries ? false, meta, ... }@args : let version = "2.11"; @@ -107,6 +107,11 @@ stdenv.mkDerivation ({ sha256 = "0b6nbr89qmqcvzz26ggnw7gcxhvnzbc8z299h12wqjmcix4hxwcy"; }; + srcPorts = fetchurl { + url = "mirror://gnu/glibc/glibc-ports-${version}.tar.bz2"; + sha256 = "12b53f5k4gcr8rr1kg2ycf2701rygqsyf9r8gz4j3l9flaqi5liq"; + }; + # `fetchurl' is a function and thus should not be passed to the # `derivation' primitive. fetchurl = null; @@ -119,6 +124,9 @@ stdenv.mkDerivation ({ # built yet in the bootstrap. sed -i "$i" -e "s^/bin/pwd^$PWD_P^g" done + + tar xvjf "$srcPorts" + mkdir ../build cd ../build diff --git a/pkgs/development/libraries/glibc-2.11/default.nix b/pkgs/development/libraries/glibc-2.11/default.nix index 48f1a12c058..49ee71af506 100644 --- a/pkgs/development/libraries/glibc-2.11/default.nix +++ b/pkgs/development/libraries/glibc-2.11/default.nix @@ -8,11 +8,11 @@ let build = import ./common.nix; cross = if gccCross != null then gccCross.target else null; in - build ({ + build cross ({ name = "glibc"; inherit fetchurl stdenv kernelHeaders installLocales profilingLibraries - cross; + gccCross; builder = ./builder.sh; @@ -45,7 +45,7 @@ EOF export AR="$crossConfig-ar" export RANLIB="$crossConfig-ranlib" - dontStrip = 1 + dontStrip=1 ''; } else {})) diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index aa41f8c4361..215d96c92a8 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -3429,8 +3429,7 @@ let haveBrokenRedHatKernel = haveRedHatKernel && getConfig ["brokenRedHatKernel"] false; in useFromStdenv "glibc" (if haveBrokenRedHatKernel then glibc25 else - # glibc211 does not have ports still. - if (system == "armv5tel-linux") then glibc210 else glibc211); + glibc211); glibc25 = import ../development/libraries/glibc-2.5 { inherit fetchurl stdenv kernelHeaders; @@ -3454,6 +3453,11 @@ let installLocales = getPkgConfig "glibc" "locales" false; }); + glibc210 = makeOverridable (import ../development/libraries/glibc-2.10) { + inherit fetchurl stdenv kernelHeaders; + installLocales = getPkgConfig "glibc" "locales" false; + }; + glibc210Cross = cross: forceBuildDrv (makeOverridable (import ../development/libraries/glibc-2.10) { inherit stdenv fetchurl; gccCross = gccCrossStageStatic cross; @@ -3461,26 +3465,19 @@ let installLocales = getPkgConfig "glibc" "locales" false; }); - glibcCross = cross: glibc210Cross cross; - - glibc210 = makeOverridable (import ../development/libraries/glibc-2.10) { - inherit fetchurl stdenv kernelHeaders; - installLocales = getPkgConfig "glibc" "locales" false; - }; - glibc211 = makeOverridable (import ../development/libraries/glibc-2.11) { inherit fetchurl stdenv kernelHeaders; installLocales = getPkgConfig "glibc" "locales" false; }; - glibc211CrossReal = cross : forceBuildDrv (makeOverridable (import ../development/libraries/glibc-2.11) { - inherit stdenv fetchurl cross; + glibc211Cross = cross : forceBuildDrv (makeOverridable (import ../development/libraries/glibc-2.11) { + inherit stdenv fetchurl; gccCross = gccCrossStageStatic cross; kernelHeaders = kernelHeadersCross cross; installLocales = getPkgConfig "glibc" "locales" false; }); - glibc211Cross = cross : forceBuildDrv (glibc211CrossReal cross); + glibcCross = cross: glibc211Cross cross; eglibc = import ../development/libraries/eglibc { inherit fetchsvn stdenv kernelHeaders; From 2a0344bb3922a0c439ad97c26a4ff3de352d9d47 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Llu=C3=ADs=20Batlle=20i=20Rossell?= Date: Tue, 1 Dec 2009 21:44:41 +0000 Subject: [PATCH 084/232] I forgot about updating the glibc locales expressions for glibc 2.10 and 2.11. I also set the 'glibcLocales' top-level attribute point to 2.11 instead of 2.10, to match that of the 'glibc' top-level attribute. svn path=/nixpkgs/branches/stdenv-updates/; revision=18746 --- pkgs/development/libraries/glibc-2.10/locales.nix | 2 +- pkgs/development/libraries/glibc-2.11/locales.nix | 2 +- pkgs/top-level/all-packages.nix | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/pkgs/development/libraries/glibc-2.10/locales.nix b/pkgs/development/libraries/glibc-2.10/locales.nix index 64e6bd43a67..61bfc9edc02 100644 --- a/pkgs/development/libraries/glibc-2.10/locales.nix +++ b/pkgs/development/libraries/glibc-2.10/locales.nix @@ -10,7 +10,7 @@ let build = import ./common.nix; in - build { + build null { name = "glibc-locales"; inherit fetchurl stdenv; diff --git a/pkgs/development/libraries/glibc-2.11/locales.nix b/pkgs/development/libraries/glibc-2.11/locales.nix index 64e6bd43a67..61bfc9edc02 100644 --- a/pkgs/development/libraries/glibc-2.11/locales.nix +++ b/pkgs/development/libraries/glibc-2.11/locales.nix @@ -10,7 +10,7 @@ let build = import ./common.nix; in - build { + build null { name = "glibc-locales"; inherit fetchurl stdenv; diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 215d96c92a8..9e539af86e4 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -3484,7 +3484,7 @@ let installLocales = getPkgConfig "glibc" "locales" false; }; - glibcLocales = makeOverridable (import ../development/libraries/glibc-2.10/locales.nix) { + glibcLocales = makeOverridable (import ../development/libraries/glibc-2.11/locales.nix) { inherit fetchurl stdenv; }; From ba5c242c82429aeaccef722bb24355d081953643 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Llu=C3=ADs=20Batlle=20i=20Rossell?= Date: Tue, 1 Dec 2009 21:52:08 +0000 Subject: [PATCH 085/232] Trying to make "make-bootstrap-tools" include the needed gcc 4.4 dependencies (dynamic libraries of ppl and cloogppl) into the package. We need newer binutils in the bootstrap-tools for the armv5tel in order to be able to build gcc 4.4 from them. svn path=/nixpkgs/branches/stdenv-updates/; revision=18747 --- pkgs/stdenv/linux/make-bootstrap-tools.nix | 2 ++ 1 file changed, 2 insertions(+) diff --git a/pkgs/stdenv/linux/make-bootstrap-tools.nix b/pkgs/stdenv/linux/make-bootstrap-tools.nix index 0a19adbdbb4..3f68738c310 100644 --- a/pkgs/stdenv/linux/make-bootstrap-tools.nix +++ b/pkgs/stdenv/linux/make-bootstrap-tools.nix @@ -107,6 +107,8 @@ rec { cp -d ${gmp}/lib/libgmp*.so* $out/lib cp -d ${mpfr}/lib/libmpfr*.so* $out/lib + cp -d ${ppl}/lib/libppl*.so* $out/lib + cp -d ${cloogppl}/lib/libcloog*.so* $out/lib # Copy binutils. for i in as ld ar ranlib nm strip readelf objdump; do From 6fadcfbd039b559ddc52a2099c1cf97fb40dc35b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Llu=C3=ADs=20Batlle=20i=20Rossell?= Date: Wed, 2 Dec 2009 19:34:34 +0000 Subject: [PATCH 086/232] Building coreutils with gmp, only because it is possible to do so. I don't know the advantage, though. svn path=/nixpkgs/branches/stdenv-updates/; revision=18770 --- pkgs/tools/misc/coreutils/default.nix | 4 ++-- pkgs/top-level/all-packages.nix | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/pkgs/tools/misc/coreutils/default.nix b/pkgs/tools/misc/coreutils/default.nix index e42e46d0102..63e423b7793 100644 --- a/pkgs/tools/misc/coreutils/default.nix +++ b/pkgs/tools/misc/coreutils/default.nix @@ -1,4 +1,4 @@ -{stdenv, fetchurl, aclSupport ? false, acl, perl}: +{stdenv, fetchurl, aclSupport ? false, acl, perl, gmp}: stdenv.mkDerivation rec { name = "coreutils-8.1"; @@ -8,7 +8,7 @@ stdenv.mkDerivation rec { sha256 = "1c68q4c4fg6x22ba2p8xb0ddn4xdl847np2g33h63bgj9pdav8ay"; }; - buildInputs = [ perl ] ++ stdenv.lib.optional aclSupport acl; + buildInputs = [ perl gmp ] ++ stdenv.lib.optional aclSupport acl; # The tests are known broken on Cygwin # (http://thread.gmane.org/gmane.comp.gnu.core-utils.bugs/19025). diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 9e539af86e4..3d14ab17f94 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -517,7 +517,7 @@ let then import ../tools/misc/coreutils-5 else import ../tools/misc/coreutils) { - inherit fetchurl stdenv acl perl; + inherit fetchurl stdenv acl perl gmp; aclSupport = stdenv.isLinux; }; From 6c0b8d954a0675c6807e3c8038a6db57e6589d71 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Llu=C3=ADs=20Batlle=20i=20Rossell?= Date: Wed, 2 Dec 2009 20:54:40 +0000 Subject: [PATCH 087/232] Adding gdbCross, to have a gdb for other targets than native. svn path=/nixpkgs/branches/stdenv-updates/; revision=18772 --- pkgs/development/tools/misc/gdb/default.nix | 14 ++++++++++---- pkgs/top-level/all-packages.nix | 6 ++++++ 2 files changed, 16 insertions(+), 4 deletions(-) diff --git a/pkgs/development/tools/misc/gdb/default.nix b/pkgs/development/tools/misc/gdb/default.nix index e4163f020c0..c898651da52 100644 --- a/pkgs/development/tools/misc/gdb/default.nix +++ b/pkgs/development/tools/misc/gdb/default.nix @@ -1,10 +1,15 @@ -{ fetchurl, stdenv, ncurses, readline, gmp, mpfr, expat, texinfo }: +{ fetchurl, stdenv, ncurses, readline, gmp, mpfr, expat, texinfo +, target ? null }: +let + basename = "gdb-7.0"; +in stdenv.mkDerivation rec { - name = "gdb-7.0"; + name = basename + stdenv.lib.optionalString (target != null) + ("-" + target.config); src = fetchurl { - url = "mirror://gnu/gdb/${name}.tar.bz2"; + url = "mirror://gnu/gdb/${basename}.tar.bz2"; sha256 = "1k9y271gnnvi0fny8ycydcd79snigwh88rgwi03ad782r2awcl67"; }; @@ -14,7 +19,8 @@ stdenv.mkDerivation rec { configureFlags = '' --with-gmp=${gmp} --with-mpfr=${mpfr} --with-system-readline --with-expat --with-libexpat-prefix=${expat} - ''; + '' + stdenv.lib.optionalString (target != null) + " --target=${target.config}"; postInstall = '' # Remove Info files already provided by Binutils and other packages. diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 3d14ab17f94..0413a0af217 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -2985,6 +2985,12 @@ let readline = readline5; }; + gdbCross = import ../development/tools/misc/gdb { + inherit fetchurl stdenv ncurses gmp mpfr expat texinfo; + readline = readline5; + target = crossSystem; + }; + valgrind = import ../development/tools/analysis/valgrind { inherit fetchurl stdenv perl gdb; }; From e9abf7bb0cdc5bb93c4641372f2ae907691b05a4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Llu=C3=ADs=20Batlle=20i=20Rossell?= Date: Fri, 4 Dec 2009 13:34:18 +0000 Subject: [PATCH 088/232] Updating util-linux-ng svn path=/nixpkgs/branches/stdenv-updates/; revision=18800 --- pkgs/os-specific/linux/util-linux-ng/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/os-specific/linux/util-linux-ng/default.nix b/pkgs/os-specific/linux/util-linux-ng/default.nix index e70f2dfcb07..3ab1c580837 100644 --- a/pkgs/os-specific/linux/util-linux-ng/default.nix +++ b/pkgs/os-specific/linux/util-linux-ng/default.nix @@ -1,11 +1,11 @@ { stdenv, fetchurl, ncurses ? null, ... }: stdenv.mkDerivation rec { - name = "util-linux-ng-2.16"; + name = "util-linux-ng-2.16.2"; src = fetchurl { url = "mirror://kernel/linux/utils/util-linux-ng/v2.16/${name}.tar.bz2"; - sha256 = "08i7qv1rvq3rgi49q64aiy0vdhl6h00ilkhnaam9yhrl5g5mydm6"; + sha256 = "1sx3z64z8z95v93k0c9lczcp04zw4nm3d2rkhczkyxcpdfcgbhxi"; }; configureFlags = '' From 4164de326abf88b35bbd3f2799599fa6f9f72446 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Llu=C3=ADs=20Batlle=20i=20Rossell?= Date: Fri, 4 Dec 2009 13:35:58 +0000 Subject: [PATCH 089/232] Making the cross-builds work with uclibc. There is no easy way of switching between uclibc/glibc still. I started the renaming from glibc to libc regarding the cross-toolchain, but I still have to finish. svn path=/nixpkgs/branches/stdenv-updates/; revision=18801 --- .../development/compilers/gcc-4.3/default.nix | 2 +- pkgs/os-specific/linux/uclibc/default.nix | 53 +++++++++++++++---- pkgs/top-level/all-packages.nix | 16 ++++-- 3 files changed, 55 insertions(+), 16 deletions(-) diff --git a/pkgs/development/compilers/gcc-4.3/default.nix b/pkgs/development/compilers/gcc-4.3/default.nix index 2fd4198d955..58c83f091f1 100644 --- a/pkgs/development/compilers/gcc-4.3/default.nix +++ b/pkgs/development/compilers/gcc-4.3/default.nix @@ -72,7 +72,7 @@ stdenv.mkDerivation ({ }); patches = - [./pass-cxxcpp.patch] + [./pass-cxxcpp.patch ./libmudflap-cpp.patch] ++ optional noSysDirs ./no-sys-dirs.patch ++ optional (noSysDirs && langFortran) ./no-sys-dirs-fortran.patch ++ optional langJava ./java-jvgenmain-link.patch; diff --git a/pkgs/os-specific/linux/uclibc/default.nix b/pkgs/os-specific/linux/uclibc/default.nix index 33914eea3d6..92cc4e99721 100644 --- a/pkgs/os-specific/linux/uclibc/default.nix +++ b/pkgs/os-specific/linux/uclibc/default.nix @@ -1,35 +1,66 @@ -{stdenv, fetchurl, kernelHeaders}: +{stdenv, fetchurl, kernelHeaders, gccCross ? null}: assert stdenv.isLinux; +let + target = if (gccCross != null) then gccCross.target else null; + enableArmEABI = (target == null && stdenv.system "armv5tel-linux") + || (target != null && target.arch == "arm"); + + configArmEABI = if enableArmEABI then + ''-e 's/.*CONFIG_ARM_OABI.*//' \ + -e 's/.*CONFIG_ARM_EABI.*/CONFIG_ARM_EABI=y/' '' else ""; + + enableBigEndian = (target != null && target.bigEndian); + + configBigEndian = if enableBigEndian then "" + else + ''-e 's/.*ARCH_BIG_ENDIAN.*/#ARCH_BIG_ENDIAN=y/' \ + -e 's/.*ARCH_WANTS_BIG_ENDIAN.*/#ARCH_WANTS_BIG_ENDIAN=y/' \ + -e 's/.*ARCH_WANTS_LITTLE_ENDIAN.*/ARCH_WANTS_LITTLE_ENDIAN=y/' ''; + + archMakeFlag = if (target != null) then "ARCH=${target.arch}" else ""; + crossMakeFlag = if (target != null) then "CROSS=${target.config}-" else ""; +in stdenv.mkDerivation { - name = "uclibc-0.9.30.1"; + name = "uclibc-0.9.30.1" + stdenv.lib.optionalString (target != null) + ("-" + target.config); + src = fetchurl { url = http://www.uclibc.org/downloads/uClibc-0.9.30.1.tar.bz2; sha256 = "132cf27hkgi0q4qlwbiyj4ffj76sja0jcxm0aqzzgks65jh6k5rd"; }; configurePhase = '' - make defconfig - sed -e s@/usr/include@${kernelHeaders}@ \ + make defconfig ${archMakeFlag} + sed -e s@/usr/include@${kernelHeaders}/include@ \ -e 's@^RUNTIME_PREFIX.*@RUNTIME_PREFIX="/"@' \ -e 's@^DEVEL_PREFIX.*@DEVEL_PREFIX="/"@' \ - ${if stdenv.system=="armv5tel-linux" then - ''-e 's/.*CONFIG_ARM_OABI.*//' \ - -e 's/.*CONFIG_ARM_EABI.*/CONFIG_ARM_EABI=y/' \ - -e 's/.*ARCH_BIG_ENDIAN.*/#ARCH_BIG_ENDIAN=y/' \ - -e 's/.*ARCH_WANTS_BIG_ENDIAN.*/#ARCH_WANTS_BIG_ENDIAN=y/' \ - -e 's/.*ARCH_WANTS_LITTLE_ENDIAN.*/ARCH_WANTS_LITTLE_ENDIAN=y/' '' else ""} \ + -e 's@.*UCLIBC_HAS_WCHAR.*@UCLIBC_HAS_WCHAR=y@' \ + -e 's@.*DO_C99_MATH.*@DO_C99_MATH=y@' \ + ${configArmEABI} \ + ${configBigEndian} \ -i .config make oldconfig ''; + # Cross stripping hurts. + dontStrip = if (target != null) then true else false; + + makeFlags = [ crossMakeFlag "VERBOSE=1" ]; + + buildInputs = stdenv.lib.optional (gccCross != null) gccCross; + patches = [ ./unifdef-getline.patch ]; + # This will allow the usual gcc-cross-wrapper strip phase work as usual + crossConfig = if (target != null) then target.config else null; + installPhase = '' mkdir -p $out - make PREFIX=$out install + make PREFIX=$out VERBOSE=1 install ${crossMakeFlag} (cd $out/include && ln -s ${kernelHeaders}/include/* .) || exit 1 + sed -i s@/lib/@$out/lib/@g $out/lib/libc.so ''; meta = { diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 0413a0af217..18cd0c90651 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -1784,7 +1784,7 @@ let gcc43_realCross = cross : makeOverridable (import ../development/compilers/gcc-4.3) { inherit stdenv fetchurl texinfo gmp mpfr noSysDirs cross; binutilsCross = binutilsCross cross; - glibcCross = glibcCross cross; + glibcCross = libcCross cross; profiledCompiler = false; enableMultilib = true; crossStageStatic = false; @@ -1794,7 +1794,7 @@ let inherit stdenv fetchurl texinfo gmp mpfr ppl cloogppl noSysDirs cross gettext which; binutilsCross = binutilsCross cross; - glibcCross = glibcCross cross; + glibcCross = libcCross cross; profiledCompiler = false; enableMultilib = true; crossStageStatic = false; @@ -1813,7 +1813,7 @@ let gccCrossStageFinal = cross: wrapGCCCross { gcc = forceBuildDrv (gcc43_realCross cross); - libc = glibcCross cross; + libc = libcCross cross; binutils = binutilsCross cross; inherit cross; }; @@ -3483,7 +3483,9 @@ let installLocales = getPkgConfig "glibc" "locales" false; }); - glibcCross = cross: glibc211Cross cross; + # We can choose: + # glibcCross = cross: glibc211Cross cross; + libcCross = cross: uclibcCross cross; eglibc = import ../development/libraries/eglibc { inherit fetchsvn stdenv kernelHeaders; @@ -6029,6 +6031,12 @@ let inherit fetchurl stdenv kernelHeaders; }; + uclibcCross = target: import ../os-specific/linux/uclibc { + inherit fetchurl stdenv; + kernelHeaders = kernelHeadersCross target; + gccCross = gccCrossStageStatic target; + }; + udev = makeOverridable (import ../os-specific/linux/udev) { inherit fetchurl stdenv gperf pkgconfig acl libusb usbutils pciutils glib; }; From 965106924028a00bff395048748e38e1356d824c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Llu=C3=ADs=20Batlle=20i=20Rossell?= Date: Fri, 4 Dec 2009 18:42:44 +0000 Subject: [PATCH 090/232] Adding a gcc patch I forgot to add in the proper commit, while it is already referenced in the gcc 4.3 expression. svn path=/nixpkgs/branches/stdenv-updates/; revision=18813 --- pkgs/development/compilers/gcc-4.3/default.nix | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pkgs/development/compilers/gcc-4.3/default.nix b/pkgs/development/compilers/gcc-4.3/default.nix index 58c83f091f1..c8f9c2d3875 100644 --- a/pkgs/development/compilers/gcc-4.3/default.nix +++ b/pkgs/development/compilers/gcc-4.3/default.nix @@ -12,7 +12,7 @@ , name ? "gcc" , cross ? null , binutilsCross ? null -, glibcCross ? null +, libcCross ? null , crossStageStatic ? true }: @@ -36,7 +36,7 @@ let " --disable-libgomp " + " --disable-shared" else - " --with-headers=${glibcCross}/include" + + " --with-headers=${libcCross}/include" + " --enable-__cxa_atexit" + " --enable-long-long" + " --enable-threads=posix" + @@ -78,7 +78,7 @@ stdenv.mkDerivation ({ ++ optional langJava ./java-jvgenmain-link.patch; inherit noSysDirs profiledCompiler staticCompiler crossStageStatic - binutilsCross glibcCross; + binutilsCross libcCross; targetConfig = if (cross != null) then cross.config else null; buildInputs = [texinfo gmp mpfr] From 917760a425101585297d50e73359d73555b2ae6d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Llu=C3=ADs=20Batlle=20i=20Rossell?= Date: Fri, 4 Dec 2009 21:35:47 +0000 Subject: [PATCH 091/232] Adding the patch for gcc-4.3 I should have commited in already two recent commit attempts. svn path=/nixpkgs/branches/stdenv-updates/; revision=18814 --- .../compilers/gcc-4.3/libmudflap-cpp.patch | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 pkgs/development/compilers/gcc-4.3/libmudflap-cpp.patch diff --git a/pkgs/development/compilers/gcc-4.3/libmudflap-cpp.patch b/pkgs/development/compilers/gcc-4.3/libmudflap-cpp.patch new file mode 100644 index 00000000000..09dfb26b20d --- /dev/null +++ b/pkgs/development/compilers/gcc-4.3/libmudflap-cpp.patch @@ -0,0 +1,12 @@ +diff --git a/Makefile.in b/Makefile.in +index d24c1af..b86e522 100644 +--- a/Makefile.in ++++ b/Makefile.in +@@ -230,6 +229,7 @@ RAW_CXX_TARGET_EXPORTS = \ + + NORMAL_TARGET_EXPORTS = \ + $(BASE_TARGET_EXPORTS) \ ++ CPP="$(CC_FOR_TARGET) -E"; export CPP; \ + CXX="$(CXX_FOR_TARGET)"; export CXX; + + # Where to find GMP From 9cb2e0aed74f89d3ef68fcdb9d622c7bc145c088 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= Date: Sat, 5 Dec 2009 14:28:17 +0000 Subject: [PATCH 092/232] binutils: Apply GNU assembler bug fix. svn path=/nixpkgs/branches/stdenv-updates/; revision=18815 --- .../tools/misc/binutils/as-pr10856.patch | 83 +++++++++++++++++++ .../tools/misc/binutils/default.nix | 4 +- 2 files changed, 86 insertions(+), 1 deletion(-) create mode 100644 pkgs/development/tools/misc/binutils/as-pr10856.patch diff --git a/pkgs/development/tools/misc/binutils/as-pr10856.patch b/pkgs/development/tools/misc/binutils/as-pr10856.patch new file mode 100644 index 00000000000..64b0aa74f15 --- /dev/null +++ b/pkgs/development/tools/misc/binutils/as-pr10856.patch @@ -0,0 +1,83 @@ +Fix a regression in GNU as: +http://sourceware.org/bugzilla/show_bug.cgi?id=10856 . + +The bug appears to be responsible for invalid code generated for +Crypto++: +http://groups.google.com/group/cryptopp-users/browse_thread/thread/7ce734e479586640/29c6649b7c7adee2?#29c6649b7c7adee2 . + +diff -u -r1.77.2.1 -r1.77.2.2 +--- a/src/gas/expr.c 2009/09/11 15:28:43 1.77.2.1 ++++ b/src/gas/expr.c 2009/10/28 08:23:48 1.77.2.2 +@@ -1997,6 +1997,7 @@ + /* Help out with CSE. */ + valueT final_val = expressionP->X_add_number; + symbolS *add_symbol = expressionP->X_add_symbol; ++ symbolS *orig_add_symbol = add_symbol; + symbolS *op_symbol = expressionP->X_op_symbol; + operatorT op = expressionP->X_op; + valueT left, right; +@@ -2078,6 +2079,7 @@ + left = right; + seg_left = seg_right; + add_symbol = op_symbol; ++ orig_add_symbol = expressionP->X_op_symbol; + op = O_symbol; + break; + } +@@ -2122,18 +2124,19 @@ + { + if (op == O_bit_exclusive_or || op == O_bit_inclusive_or) + { +- if (seg_right != absolute_section || right != 0) ++ if (!(seg_right == absolute_section && right == 0)) + { + seg_left = seg_right; + left = right; + add_symbol = op_symbol; ++ orig_add_symbol = expressionP->X_op_symbol; + } + op = O_symbol; + break; + } + else if (op == O_left_shift || op == O_right_shift) + { +- if (seg_left != absolute_section || left != 0) ++ if (!(seg_left == absolute_section && left == 0)) + { + op = O_symbol; + break; +@@ -2149,6 +2152,7 @@ + seg_left = seg_right; + left = right; + add_symbol = op_symbol; ++ orig_add_symbol = expressionP->X_op_symbol; + op = O_symbol; + break; + } +@@ -2158,11 +2162,11 @@ + op = O_symbol; + break; + } +- else if (left != right +- || ((seg_left != reg_section || seg_right != reg_section) +- && (seg_left != undefined_section +- || seg_right != undefined_section +- || add_symbol != op_symbol))) ++ else if (!(left == right ++ && ((seg_left == reg_section && seg_right == reg_section) ++ || (seg_left == undefined_section ++ && seg_right == undefined_section ++ && add_symbol == op_symbol)))) + return 0; + else if (op == O_bit_and || op == O_bit_inclusive_or) + { +@@ -2233,7 +2237,8 @@ + op = O_constant; + else if (seg_left == reg_section && final_val == 0) + op = O_register; +- else if (add_symbol != expressionP->X_add_symbol) ++ else if (seg_left == undefined_section ++ && add_symbol != orig_add_symbol) + final_val += left; + expressionP->X_add_symbol = add_symbol; + } diff --git a/pkgs/development/tools/misc/binutils/default.nix b/pkgs/development/tools/misc/binutils/default.nix index 6dc45081bef..d8e1d611432 100644 --- a/pkgs/development/tools/misc/binutils/default.nix +++ b/pkgs/development/tools/misc/binutils/default.nix @@ -1,6 +1,6 @@ {stdenv, fetchurl, noSysDirs, cross ? null}: -let +let basename = "binutils-2.20"; in stdenv.mkDerivation rec { @@ -16,6 +16,8 @@ stdenv.mkDerivation rec { # RUNPATH instead of RPATH on binaries. This is important because # RUNPATH can be overriden using LD_LIBRARY_PATH at runtime. ./new-dtags.patch + + ./as-pr10856.patch ]; inherit noSysDirs; From c73d5761def3dc3a7fc9003034a0d8cf616142cf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= Date: Sat, 5 Dec 2009 15:02:10 +0000 Subject: [PATCH 093/232] binutils: Fix `as' patch. svn path=/nixpkgs/branches/stdenv-updates/; revision=18816 --- pkgs/development/tools/misc/binutils/as-pr10856.patch | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/development/tools/misc/binutils/as-pr10856.patch b/pkgs/development/tools/misc/binutils/as-pr10856.patch index 64b0aa74f15..695d3e35670 100644 --- a/pkgs/development/tools/misc/binutils/as-pr10856.patch +++ b/pkgs/development/tools/misc/binutils/as-pr10856.patch @@ -6,8 +6,8 @@ Crypto++: http://groups.google.com/group/cryptopp-users/browse_thread/thread/7ce734e479586640/29c6649b7c7adee2?#29c6649b7c7adee2 . diff -u -r1.77.2.1 -r1.77.2.2 ---- a/src/gas/expr.c 2009/09/11 15:28:43 1.77.2.1 -+++ b/src/gas/expr.c 2009/10/28 08:23:48 1.77.2.2 +--- a/gas/expr.c 2009/09/11 15:28:43 1.77.2.1 ++++ b/gas/expr.c 2009/10/28 08:23:48 1.77.2.2 @@ -1997,6 +1997,7 @@ /* Help out with CSE. */ valueT final_val = expressionP->X_add_number; From d0ae140f694a6c8882af2ab75a7c560a28d20f3e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Llu=C3=ADs=20Batlle=20i=20Rossell?= Date: Tue, 8 Dec 2009 09:36:19 +0000 Subject: [PATCH 094/232] Renamed some old glibcCross to libcCross (we can use uclibc in cross builds already). Dealt with the gcc 4.4 expression for it to work well for a native and a cross compiler, adding a pair of patches to get the job done without much side effects. One (libtool problems on -B) comes from the gcc 4.3 expression, while the other fixes a bug already fixed in gcc 4.4.3. svn path=/nixpkgs/branches/stdenv-updates/; revision=18833 --- pkgs/development/compilers/gcc-4.3/builder.sh | 4 +- pkgs/development/compilers/gcc-4.4/builder.sh | 81 +++++++++---------- .../development/compilers/gcc-4.4/default.nix | 12 ++- .../compilers/gcc-4.4/libstdc++-target.patch | 15 ++++ .../compilers/gcc-4.4/libtool-glibc.patch | 48 +++++++++++ pkgs/top-level/all-packages.nix | 14 ++-- 6 files changed, 120 insertions(+), 54 deletions(-) create mode 100644 pkgs/development/compilers/gcc-4.4/libstdc++-target.patch create mode 100644 pkgs/development/compilers/gcc-4.4/libtool-glibc.patch diff --git a/pkgs/development/compilers/gcc-4.3/builder.sh b/pkgs/development/compilers/gcc-4.3/builder.sh index 6c3671bf7cb..0d25692ce65 100644 --- a/pkgs/development/compilers/gcc-4.3/builder.sh +++ b/pkgs/development/compilers/gcc-4.3/builder.sh @@ -42,8 +42,8 @@ if test "$noSysDirs" = "1"; then if test -n "$targetConfig"; then if test -z "$crossStageStatic"; then - extraXCFlags="-B${glibcCross}/lib -idirafter ${glibcCross}/include" - extraXLDFlags="-L${glibcCross}/lib" + extraXCFlags="-B${libcCross}/lib -idirafter ${libcCross}/include" + extraXLDFlags="-L${libcCross}/lib" export NIX_EXTRA_CFLAGS_TARGET=$extraXCFlags for i in $extraXLDFlags; do export NIX_EXTRA_LDFLAGS_TARGET="$NIX_EXTRA_LDFLAGS_TARGET -Wl,$i" diff --git a/pkgs/development/compilers/gcc-4.4/builder.sh b/pkgs/development/compilers/gcc-4.4/builder.sh index 0b4f9e89a0f..27ba79a0987 100644 --- a/pkgs/development/compilers/gcc-4.4/builder.sh +++ b/pkgs/development/compilers/gcc-4.4/builder.sh @@ -10,9 +10,9 @@ mkdir $NIX_FIXINC_DUMMY export CPP="gcc -E" if test "$staticCompiler" = "1"; then - EXTRA_LDFLAGS="-static" + NIX_EXTRA_LDFLAGS="-static" else - EXTRA_LDFLAGS="" + NIX_EXTRA_LDFLAGS="" fi if test "$noSysDirs" = "1"; then @@ -40,55 +40,47 @@ if test "$noSysDirs" = "1"; then export NIX_FIXINC_DUMMY=/usr/include fi - # We should not allow gcc find the headers of the native glibc - # (Here I only think of c,c++ compilers) - if test -z "$targetConfig"; then - # Setting $CPATH makes sure both `gcc' and `xgcc' find the C - # library headers, regarless of the language being compiled. - export CPATH="$NIX_FIXINC_DUMMY${CPATH:+:}$CPATH" - - # Likewise, to help it find `crti.o' and similar files. - export LIBRARY_PATH="$glibc_libdir${LIBRARY_PATH:+:}$LIBRARY_PATH" - - echo "setting \$CPATH to \`$CPATH'" - echo "setting \$LIBRARY_PATH to \`$LIBRARY_PATH'" - fi - - extraCFlags="-g0 $extraCFlags" - extraLDFlags="--strip-debug $extraLDFlags" + extraCFlags="-g0 -O2 -I$NIX_FIXINC_DUMMY $extraCFlags" + extraLDFlags="--strip-debug -L$glibc_libdir -rpath $glibc_libdir $extraLDFlags" + export NIX_EXTRA_CFLAGS="$extraCFlags" for i in $extraLDFlags; do - export EXTRA_LDFLAGS="$EXTRA_LDFLAGS -Wl,$i" + export NIX_EXTRA_LDFLAGS="$NIX_EXTRA_LDFLAGS -Wl,$i" done if test -n "$targetConfig"; then + # Cross-compiling, we need gcc not to read ./specs in order to build + # the g++ compiler (after the specs for the cross-gcc are created). + # Having LIBRARY_PATH= makes gcc read the specs from ., and the build + # breaks. Having this variable comes from the default.nix code to bring + # gcj in. + unset LIBRARY_PATH + unset CPATH if test -z "$crossStageStatic"; then - extraXCFlags="-B${glibcCross}/lib -idirafter ${glibcCross}/include" - extraXLDFlags="-L${glibcCross}/lib" - export EXTRA_CFLAGS_TARGET=$extraXCFlags - for i in $extraXLDFlags; do - export EXTRA_LDFLAGS_TARGET="$EXTRA_LDFLAGS_TARGET -Wl,$i" - done + export NIX_EXTRA_CFLAGS_TARGET="-g0 -O2 -B${libcCross}/lib -idirafter ${libcCross}/include" + export NIX_EXTRA_LDFLAGS_TARGET="-Wl,-L${libcCross}/lib" fi - - makeFlagsArray=( \ - "${makeFlagsArray[@]}" \ - NATIVE_SYSTEM_HEADER_DIR="$NIX_FIXINC_DUMMY" \ - SYSTEM_HEADER_DIR="$NIX_FIXINC_DUMMY" \ - CFLAGS_FOR_TARGET="$EXTRA_CFLAGS_TARGET $EXTRA_LDFLAGS_TARGET" \ - LDFLAGS_FOR_TARGET="$EXTRA_CFLAGS_TARGET $EXTRA_LDFLAGS_TARGET" \ - ) else - export EXTRA_CFLAGS_TARGET=$EXTRA_CFLAGS - export EXTRA_LDFLAGS_TARGET=$EXTRA_LDFLAGS + # To be read by configure scripts (libtool-glibc.patch) + export NIX_EXTRA_CFLAGS_TARGET="$NIX_EXTRA_CFLAGS" + export NIX_EXTRA_LDFLAGS_TARGET="$NIX_EXTRA_LDFLAGS" + fi + + makeFlagsArray=( \ + "${makeFlagsArray[@]}" \ + NATIVE_SYSTEM_HEADER_DIR="$NIX_FIXINC_DUMMY" \ + SYSTEM_HEADER_DIR="$NIX_FIXINC_DUMMY" \ + CFLAGS_FOR_BUILD="$NIX_EXTRA_CFLAGS $NIX_EXTRA_LDFLAGS" \ + CFLAGS_FOR_TARGET="$NIX_EXTRA_CFLAGS_TARGET $NIX_EXTRA_LDFLAGS_TARGET" \ + LDFLAGS_FOR_BUILD="$NIX_EXTRA_CFLAGS $NIX_EXTRA_LDFLAGS" \ + LDFLAGS_FOR_TARGET="$NIX_EXTRA_CFLAGS_TARGET $NIX_EXTRA_LDFLAGS_TARGET" \ + ) + + if test -z "$targetConfig"; then makeFlagsArray=( \ "${makeFlagsArray[@]}" \ - NATIVE_SYSTEM_HEADER_DIR="$NIX_FIXINC_DUMMY" \ - SYSTEM_HEADER_DIR="$NIX_FIXINC_DUMMY" \ - CFLAGS_FOR_BUILD="$extraCflags $EXTRA_CFLAGS $EXTRA_LDFLAGS" \ - CFLAGS_FOR_TARGET="$EXTRA_CFLAGS $EXTRA_LDFLAGS" \ - LDFLAGS_FOR_BUILD="$extraCflags $EXTRA_CFLAGS $EXTRA_LDFLAGS" \ - LDFLAGS_FOR_TARGET="$EXTRA_CFLAGS $EXTRA_LDFLAGS" \ + BOOT_CFLAGS="$NIX_EXTRA_CFLAGS $NIX_EXTRA_LDFLAGS" \ + BOOT_LDFLAGS="$NIX_EXTRA_CFLAGS_TARGET $NIX_EXTRA_LDFLAGS_TARGET" \ ) fi @@ -119,6 +111,13 @@ preConfigure() { # Patch to get armvt5el working: sed -i -e 's/ arm)/ arm*)/' newlib/configure.host fi + # Bug - they packaged zlib + if test -d "zlib"; then + # This breaks the build without-headers, which should build only + # the target libgcc as target libraries. + # See 'configure:5370' + rm -Rf zlib + fi # Perform the build in a different directory. mkdir ../build diff --git a/pkgs/development/compilers/gcc-4.4/default.nix b/pkgs/development/compilers/gcc-4.4/default.nix index 1f4feddc6f4..d0c910adb7d 100644 --- a/pkgs/development/compilers/gcc-4.4/default.nix +++ b/pkgs/development/compilers/gcc-4.4/default.nix @@ -17,7 +17,7 @@ , name ? "gcc" , cross ? null , binutilsCross ? null -, glibcCross ? null +, libcCross ? null , crossStageStatic ? true }: @@ -61,7 +61,7 @@ let version = "4.4.2"; " --disable-libgomp " + " --disable-shared" else - " --with-headers=${glibcCross}/include" + + " --with-headers=${libcCross}/include" + " --enable-__cxa_atexit" + " --enable-long-long" + " --enable-threads=posix" + @@ -87,10 +87,14 @@ stdenv.mkDerivation ({ }; patches = - [./pass-cxxcpp.patch] + [./pass-cxxcpp.patch + ./libtool-glibc.patch # some libraries don't let the proper -Btargetglibcpath pass + ./libstdc++-target.patch # (fixed in gcc 4.4.3) bad mixture of build/target flags + ] ++ optional noSysDirs ./no-sys-dirs.patch; - inherit noSysDirs profiledCompiler staticCompiler langJava; + inherit noSysDirs profiledCompiler staticCompiler langJava crossStageStatic + libcCross; buildInputs = [ texinfo gmp mpfr gettext which ] ++ (optional (ppl != null) ppl) diff --git a/pkgs/development/compilers/gcc-4.4/libstdc++-target.patch b/pkgs/development/compilers/gcc-4.4/libstdc++-target.patch new file mode 100644 index 00000000000..0b04b83d08d --- /dev/null +++ b/pkgs/development/compilers/gcc-4.4/libstdc++-target.patch @@ -0,0 +1,15 @@ +diff --git a/Makefile.in b/Makefile.in +index 245c770..8545b60 100644 +--- a/Makefile.in ++++ b/Makefile.in +@@ -250,8 +250,8 @@ BASE_TARGET_EXPORTS = \ + RAW_CXX_TARGET_EXPORTS = \ + $(BASE_TARGET_EXPORTS) \ + CXX_FOR_TARGET="$(RAW_CXX_FOR_TARGET)"; export CXX_FOR_TARGET; \ +- CXX="$(RAW_CXX_FOR_TARGET) $(CFLAGS_FOR_BUILD)"; export CXX; \ +- CXXCPP="$(RAW_CXX_FOR_TARGET) $(CFLAGS_FOR_BUILD) -E"; export CXXCPP; ++ CXX="$(RAW_CXX_FOR_TARGET) $(CFLAGS_FOR_TARGET)"; export CXX; \ ++ CXXCPP="$(RAW_CXX_FOR_TARGET) $(CFLAGS_FOR_TARGET) -E"; export CXXCPP; + + NORMAL_TARGET_EXPORTS = \ + $(BASE_TARGET_EXPORTS) \ diff --git a/pkgs/development/compilers/gcc-4.4/libtool-glibc.patch b/pkgs/development/compilers/gcc-4.4/libtool-glibc.patch new file mode 100644 index 00000000000..6f69070beb3 --- /dev/null +++ b/pkgs/development/compilers/gcc-4.4/libtool-glibc.patch @@ -0,0 +1,48 @@ +diff --git a/libgomp/configure b/libgomp/configure +index deef673..9e4a790 100755 +--- a/libgomp/configure ++++ b/libgomp/configure +@@ -23848,6 +23848,11 @@ old_archive_cmds=$lt_old_archive_cmds + # A language specific compiler. + CC=$lt_compiler + ++# Ugly hack to get libmudflap (and other libraries) to build. ++# Libtool filters out \`-B' flags when linking (why?), so the \`-B' flag ++# to Glibc gets lost. Here we forcibly add it to any invocation. ++CC="\$CC $NIX_EXTRA_CFLAGS_TARGET $NIX_EXTRA_LDFLAGS_TARGET" ++ + # Is the compiler the GNU compiler? + with_gcc=$GCC + +diff --git a/libmudflap/configure b/libmudflap/configure +index ae1be92..4ee1e18 100755 +--- a/libmudflap/configure ++++ b/libmudflap/configure +@@ -15044,6 +15044,11 @@ old_archive_cmds=$lt_old_archive_cmds + # A language specific compiler. + CC=$lt_compiler + ++# Ugly hack to get libmudflap (and other libraries) to build. ++# Libtool filters out \`-B' flags when linking (why?), so the \`-B' flag ++# to Glibc gets lost. Here we forcibly add it to any invocation. ++CC="\$CC $NIX_EXTRA_CFLAGS_TARGET $NIX_EXTRA_LDFLAGS_TARGET" ++ + # Is the compiler the GNU compiler? + with_gcc=$GCC + +diff --git a/libssp/configure b/libssp/configure +index ee2a41f..7f3e1fd 100755 +--- a/libssp/configure ++++ b/libssp/configure +@@ -12926,6 +12926,11 @@ old_archive_cmds=$lt_old_archive_cmds + # A language specific compiler. + CC=$lt_compiler + ++# Ugly hack to get libmudflap (and other libraries) to build. ++# Libtool filters out \`-B' flags when linking (why?), so the \`-B' flag ++# to Glibc gets lost. Here we forcibly add it to any invocation. ++CC="\$CC $NIX_EXTRA_CFLAGS_TARGET $NIX_EXTRA_LDFLAGS_TARGET" ++ + # Is the compiler the GNU compiler? + with_gcc=$GCC + diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 18cd0c90651..bfc5fa7cc8a 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -1784,7 +1784,7 @@ let gcc43_realCross = cross : makeOverridable (import ../development/compilers/gcc-4.3) { inherit stdenv fetchurl texinfo gmp mpfr noSysDirs cross; binutilsCross = binutilsCross cross; - glibcCross = libcCross cross; + libcCross = libcCross cross; profiledCompiler = false; enableMultilib = true; crossStageStatic = false; @@ -1794,17 +1794,17 @@ let inherit stdenv fetchurl texinfo gmp mpfr ppl cloogppl noSysDirs cross gettext which; binutilsCross = binutilsCross cross; - glibcCross = libcCross cross; + libcCross = libcCross cross; profiledCompiler = false; enableMultilib = true; crossStageStatic = false; }; gccCrossStageStatic = cross: wrapGCCCross { - gcc = forceBuildDrv ((gcc43_realCross cross).override { + gcc = forceBuildDrv ((gcc44_realCross cross).override { crossStageStatic = true; langCC = false; - glibcCross = null; + libcCross = null; }); libc = null; binutils = binutilsCross cross; @@ -1812,7 +1812,7 @@ let }; gccCrossStageFinal = cross: wrapGCCCross { - gcc = forceBuildDrv (gcc43_realCross cross); + gcc = forceBuildDrv (gcc44_realCross cross); libc = libcCross cross; binutils = binutilsCross cross; inherit cross; @@ -3484,8 +3484,8 @@ let }); # We can choose: - # glibcCross = cross: glibc211Cross cross; - libcCross = cross: uclibcCross cross; + libcCross = cross: glibc211Cross cross; + # libcCross = cross: uclibcCross cross; eglibc = import ../development/libraries/eglibc { inherit fetchsvn stdenv kernelHeaders; From a2b2e6542ff521ba46f2026dfcc4afe80fe3b490 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Llu=C3=ADs=20Batlle=20i=20Rossell?= Date: Tue, 8 Dec 2009 10:03:20 +0000 Subject: [PATCH 095/232] New bootstrap-tools for armv5tel, with binutils and gcc-4.4. Without these binutils, we can't build easily with them gcc-4.4 natively, because of a bug in the ld of the previous bootstrap-tools. I updated the unpack script to include the new gcc-4.4 libraries *ppl*.so in patchelfing. svn path=/nixpkgs/branches/stdenv-updates/; revision=18835 --- pkgs/stdenv/linux/bootstrap/armv5tel/default.nix | 4 ++-- pkgs/stdenv/linux/scripts/unpack-bootstrap-tools-arm.sh | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/pkgs/stdenv/linux/bootstrap/armv5tel/default.nix b/pkgs/stdenv/linux/bootstrap/armv5tel/default.nix index 583e384fdf4..c529346aaf1 100644 --- a/pkgs/stdenv/linux/bootstrap/armv5tel/default.nix +++ b/pkgs/stdenv/linux/bootstrap/armv5tel/default.nix @@ -7,7 +7,7 @@ curl = ./curl.bz2; bootstrapTools = { - url = "http://nixos.org/tarballs/stdenv-linux/armv5tel/r17267/bootstrap-tools.cpio.bz2"; - sha256 = "0b7mrcl7naj1xpqx1qnlmd825dxzikzhxir3mw4pr3dy28n0b2ka"; + url = "http://vicerveza.homeunix.net/~viric/tmp/bootstrap-tools.cpio.bz2"; + sha256 = "1rn4n5kilqmv62dfjfcscbsm0w329k3gyb2v9155fsi1sl2cfzcb"; }; } diff --git a/pkgs/stdenv/linux/scripts/unpack-bootstrap-tools-arm.sh b/pkgs/stdenv/linux/scripts/unpack-bootstrap-tools-arm.sh index 2399e48b026..3709ac05041 100644 --- a/pkgs/stdenv/linux/scripts/unpack-bootstrap-tools-arm.sh +++ b/pkgs/stdenv/linux/scripts/unpack-bootstrap-tools-arm.sh @@ -12,7 +12,7 @@ echo Patching the bootstrap tools... # use a copy of patchelf. LD_LIBRARY_PATH=$out/lib $out/lib/ld-linux*.so.? $out/bin/cp $out/bin/patchelf . -for i in $out/bin/* $out/libexec/gcc/*/*/*; do +for i in $out/bin/* $out/libexec/gcc/*/*/* $out/lib/librt*; do echo patching $i if ! test -L $i; then LD_LIBRARY_PATH=$out/lib $out/lib/ld-linux*.so.? \ @@ -21,13 +21,13 @@ for i in $out/bin/* $out/libexec/gcc/*/*/*; do $out/bin/patchelf --set-interpreter $out/lib/ld-linux*.so.? --set-rpath $out/lib --force-rpath $i fi done -for i in $out/lib/librt* ; do +for i in $out/lib/libppl* $out/lib/libgmp*; do echo patching $i if ! test -L $i; then LD_LIBRARY_PATH=$out/lib $out/lib/ld-linux*.so.? \ - $out/bin/patchelf --set-interpreter $out/lib/ld-linux*.so.? --set-rpath $out/lib --force-rpath $i + $out/bin/patchelf --set-rpath $out/lib --force-rpath $i LD_LIBRARY_PATH=$out/lib $out/lib/ld-linux*.so.? \ - $out/bin/patchelf --set-interpreter $out/lib/ld-linux*.so.? --set-rpath $out/lib --force-rpath $i + $out/bin/patchelf --set-rpath $out/lib --force-rpath $i fi done From 7cae967c7cb1359f075740492a23f1ba1de8a98e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Llu=C3=ADs=20Batlle=20i=20Rossell?= Date: Tue, 8 Dec 2009 10:04:43 +0000 Subject: [PATCH 096/232] Removing the coreutils-7.5, which were needed in armv5tel in contrast to coreutils 7.6, which did not build well. The newer coreutils 8.1 work perfectly, and we don't need to rely in older versions. svn path=/nixpkgs/branches/stdenv-updates/; revision=18836 --- pkgs/tools/misc/coreutils/7.5.nix | 28 ---------------------------- pkgs/top-level/all-packages.nix | 9 +-------- 2 files changed, 1 insertion(+), 36 deletions(-) delete mode 100644 pkgs/tools/misc/coreutils/7.5.nix diff --git a/pkgs/tools/misc/coreutils/7.5.nix b/pkgs/tools/misc/coreutils/7.5.nix deleted file mode 100644 index 90223c35483..00000000000 --- a/pkgs/tools/misc/coreutils/7.5.nix +++ /dev/null @@ -1,28 +0,0 @@ -{stdenv, fetchurl, aclSupport ? false, acl}: - -stdenv.mkDerivation rec { - name = "coreutils-7.5"; - - src = fetchurl { - url = "mirror://gnu/coreutils/${name}.tar.gz"; - sha256 = "1hf333y85fm0q7f1apx2zjjhivwj620nc8kcifdcm0sg8fwlj7rl"; - }; - - buildInputs = stdenv.lib.optional aclSupport acl; - - meta = { - homepage = http://www.gnu.org/software/coreutils/; - description = "The basic file, shell and text manipulation utilities of the GNU operating system"; - - longDescription = '' - The GNU Core Utilities are the basic file, shell and text - manipulation utilities of the GNU operating system. These are - the core utilities which are expected to exist on every - operating system. - ''; - - license = "GPLv3+"; - - maintainers = [ stdenv.lib.maintainers.ludo ]; - }; -} diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index bfc5fa7cc8a..0ef5a2bb0e9 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -508,11 +508,6 @@ let inherit fetchurl stdenv ppl; }; - coreutils75_real = makeOverridable (import ../tools/misc/coreutils/7.5.nix) { - inherit fetchurl stdenv acl; - aclSupport = stdenv.isLinux; - }; - coreutils_real = makeOverridable (if stdenv ? isDietLibC then import ../tools/misc/coreutils-5 else import ../tools/misc/coreutils) @@ -521,9 +516,7 @@ let aclSupport = stdenv.isLinux; }; - coreutils = useFromStdenv "coreutils" - (if system == "armv5tel-linux" then coreutils75_real - else coreutils_real); + coreutils = useFromStdenv "coreutils" coreutils_real; cpio = import ../tools/archivers/cpio { inherit fetchurl stdenv; From 60a5f44759e056c039db98d3d0fcf166ea8ba5c7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Llu=C3=ADs=20Batlle=20i=20Rossell?= Date: Tue, 8 Dec 2009 19:34:25 +0000 Subject: [PATCH 097/232] Updating the url for the latest armv5tel linux bootstrap-tools. svn path=/nixpkgs/branches/stdenv-updates/; revision=18844 --- pkgs/stdenv/linux/bootstrap/armv5tel/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/stdenv/linux/bootstrap/armv5tel/default.nix b/pkgs/stdenv/linux/bootstrap/armv5tel/default.nix index c529346aaf1..3a8a03e5a54 100644 --- a/pkgs/stdenv/linux/bootstrap/armv5tel/default.nix +++ b/pkgs/stdenv/linux/bootstrap/armv5tel/default.nix @@ -7,7 +7,7 @@ curl = ./curl.bz2; bootstrapTools = { - url = "http://vicerveza.homeunix.net/~viric/tmp/bootstrap-tools.cpio.bz2"; + url = "http://nixos.org/tarballs/stdenv-linux/armv5tel/r18744/bootstrap-tools.cpio.bz2"; sha256 = "1rn4n5kilqmv62dfjfcscbsm0w329k3gyb2v9155fsi1sl2cfzcb"; }; } From 21b2bc74b2dcd10e97ee3cf75e191912f951c406 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Llu=C3=ADs=20Batlle=20i=20Rossell?= Date: Tue, 8 Dec 2009 19:42:18 +0000 Subject: [PATCH 098/232] The bison elf may call m4 (I saw that building binutils' gold). svn path=/nixpkgs/branches/stdenv-updates/; revision=18845 --- pkgs/development/tools/parsing/bison/bison-2.3.nix | 2 ++ 1 file changed, 2 insertions(+) diff --git a/pkgs/development/tools/parsing/bison/bison-2.3.nix b/pkgs/development/tools/parsing/bison/bison-2.3.nix index 7ebdb863d58..fcf4ed10795 100644 --- a/pkgs/development/tools/parsing/bison/bison-2.3.nix +++ b/pkgs/development/tools/parsing/bison/bison-2.3.nix @@ -8,7 +8,9 @@ stdenv.mkDerivation { url = mirror://gnu/bison/bison-2.3.tar.bz2; md5 = "c18640c6ec31a169d351e3117ecce3ec"; }; + buildNativeInputs = [m4]; + propagatedBuildInputs = [m4]; meta = { description = "GNU Bison, a Yacc-compatible parser generator"; From 916896e252a902f575fdd868c5189d95865a07cc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Llu=C3=ADs=20Batlle=20i=20Rossell?= Date: Tue, 8 Dec 2009 19:46:32 +0000 Subject: [PATCH 099/232] I took away the patch about the -Bxxx not being passed to target libraries through libtool. I found a make variable holding flags that will not be trimmed by libtool: FLAGS_FOR_TARGET. svn path=/nixpkgs/branches/stdenv-updates/; revision=18846 --- pkgs/development/compilers/gcc-4.4/builder.sh | 40 +++++++++------- .../development/compilers/gcc-4.4/default.nix | 2 +- .../compilers/gcc-4.4/libtool-glibc.patch | 48 ------------------- 3 files changed, 23 insertions(+), 67 deletions(-) delete mode 100644 pkgs/development/compilers/gcc-4.4/libtool-glibc.patch diff --git a/pkgs/development/compilers/gcc-4.4/builder.sh b/pkgs/development/compilers/gcc-4.4/builder.sh index 27ba79a0987..45a8cc5394e 100644 --- a/pkgs/development/compilers/gcc-4.4/builder.sh +++ b/pkgs/development/compilers/gcc-4.4/builder.sh @@ -10,9 +10,9 @@ mkdir $NIX_FIXINC_DUMMY export CPP="gcc -E" if test "$staticCompiler" = "1"; then - NIX_EXTRA_LDFLAGS="-static" + EXTRA_LDFLAGS="-static" else - NIX_EXTRA_LDFLAGS="" + EXTRA_LDFLAGS="" fi if test "$noSysDirs" = "1"; then @@ -21,7 +21,7 @@ if test "$noSysDirs" = "1"; then # Figure out what extra flags to pass to the gcc compilers # being generated to make sure that they use our glibc. - extraCFlags="$(cat $NIX_GCC/nix-support/libc-cflags)" + extraFlags="$(cat $NIX_GCC/nix-support/libc-cflags)" extraLDFlags="$(cat $NIX_GCC/nix-support/libc-ldflags) $(cat $NIX_GCC/nix-support/libc-ldflags-before)" # Use *real* header files, otherwise a limits.h is generated @@ -34,18 +34,18 @@ if test "$noSysDirs" = "1"; then else # Hack: support impure environments. - extraCFlags="-isystem /usr/include" + extraFlags="-isystem /usr/include" extraLDFlags="-L/usr/lib64 -L/usr/lib" glibc_libdir="/usr/lib" export NIX_FIXINC_DUMMY=/usr/include fi - extraCFlags="-g0 -O2 -I$NIX_FIXINC_DUMMY $extraCFlags" + extraFlags="-g0 -O2 -I$NIX_FIXINC_DUMMY $extraFlags" extraLDFlags="--strip-debug -L$glibc_libdir -rpath $glibc_libdir $extraLDFlags" - export NIX_EXTRA_CFLAGS="$extraCFlags" + EXTRA_FLAGS="$extraFlags" for i in $extraLDFlags; do - export NIX_EXTRA_LDFLAGS="$NIX_EXTRA_LDFLAGS -Wl,$i" + EXTRA_LDFLAGS="$EXTRA_LDFLAGS -Wl,$i" done if test -n "$targetConfig"; then @@ -57,30 +57,34 @@ if test "$noSysDirs" = "1"; then unset LIBRARY_PATH unset CPATH if test -z "$crossStageStatic"; then - export NIX_EXTRA_CFLAGS_TARGET="-g0 -O2 -B${libcCross}/lib -idirafter ${libcCross}/include" - export NIX_EXTRA_LDFLAGS_TARGET="-Wl,-L${libcCross}/lib" + EXTRA_FLAGS_TARGET="-g0 -O2 -B${libcCross}/lib -idirafter ${libcCross}/include" + EXTRA_LDFLAGS_TARGET="-Wl,-L${libcCross}/lib" fi else - # To be read by configure scripts (libtool-glibc.patch) - export NIX_EXTRA_CFLAGS_TARGET="$NIX_EXTRA_CFLAGS" - export NIX_EXTRA_LDFLAGS_TARGET="$NIX_EXTRA_LDFLAGS" + EXTRA_FLAGS_TARGET="$EXTRA_FLAGS" + EXTRA_LDFLAGS_TARGET="$EXTRA_LDFLAGS" fi + # CFLAGS_FOR_TARGET are needed for the libstdc++ configure script to find + # the startfiles. + # FLAGS_FOR_TARGET are needed for the target libraries to receive the -Bxxx + # for the startfiles. makeFlagsArray=( \ "${makeFlagsArray[@]}" \ NATIVE_SYSTEM_HEADER_DIR="$NIX_FIXINC_DUMMY" \ SYSTEM_HEADER_DIR="$NIX_FIXINC_DUMMY" \ - CFLAGS_FOR_BUILD="$NIX_EXTRA_CFLAGS $NIX_EXTRA_LDFLAGS" \ - CFLAGS_FOR_TARGET="$NIX_EXTRA_CFLAGS_TARGET $NIX_EXTRA_LDFLAGS_TARGET" \ - LDFLAGS_FOR_BUILD="$NIX_EXTRA_CFLAGS $NIX_EXTRA_LDFLAGS" \ - LDFLAGS_FOR_TARGET="$NIX_EXTRA_CFLAGS_TARGET $NIX_EXTRA_LDFLAGS_TARGET" \ + CFLAGS_FOR_BUILD="$EXTRA_FLAGS $EXTRA_LDFLAGS" \ + CFLAGS_FOR_TARGET="$EXTRA_FLAGS_TARGET $EXTRA_LDFLAGS_TARGET" \ + FLAGS_FOR_TARGET="$EXTRA_FLAGS_TARGET $EXTRA_LDFLAGS_TARGET" \ + LDFLAGS_FOR_BUILD="$EXTRA_FLAGS $EXTRA_LDFLAGS" \ + LDFLAGS_FOR_TARGET="$EXTRA_FLAGS_TARGET $EXTRA_LDFLAGS_TARGET" \ ) if test -z "$targetConfig"; then makeFlagsArray=( \ "${makeFlagsArray[@]}" \ - BOOT_CFLAGS="$NIX_EXTRA_CFLAGS $NIX_EXTRA_LDFLAGS" \ - BOOT_LDFLAGS="$NIX_EXTRA_CFLAGS_TARGET $NIX_EXTRA_LDFLAGS_TARGET" \ + BOOT_CFLAGS="$EXTRA_FLAGS $EXTRA_LDFLAGS" \ + BOOT_LDFLAGS="$EXTRA_FLAGS_TARGET $EXTRA_LDFLAGS_TARGET" \ ) fi diff --git a/pkgs/development/compilers/gcc-4.4/default.nix b/pkgs/development/compilers/gcc-4.4/default.nix index d0c910adb7d..299c4cb9b39 100644 --- a/pkgs/development/compilers/gcc-4.4/default.nix +++ b/pkgs/development/compilers/gcc-4.4/default.nix @@ -88,7 +88,7 @@ stdenv.mkDerivation ({ patches = [./pass-cxxcpp.patch - ./libtool-glibc.patch # some libraries don't let the proper -Btargetglibcpath pass +# ./libtool-glibc.patch # some libraries don't let the proper -Btargetglibcpath pass ./libstdc++-target.patch # (fixed in gcc 4.4.3) bad mixture of build/target flags ] ++ optional noSysDirs ./no-sys-dirs.patch; diff --git a/pkgs/development/compilers/gcc-4.4/libtool-glibc.patch b/pkgs/development/compilers/gcc-4.4/libtool-glibc.patch deleted file mode 100644 index 6f69070beb3..00000000000 --- a/pkgs/development/compilers/gcc-4.4/libtool-glibc.patch +++ /dev/null @@ -1,48 +0,0 @@ -diff --git a/libgomp/configure b/libgomp/configure -index deef673..9e4a790 100755 ---- a/libgomp/configure -+++ b/libgomp/configure -@@ -23848,6 +23848,11 @@ old_archive_cmds=$lt_old_archive_cmds - # A language specific compiler. - CC=$lt_compiler - -+# Ugly hack to get libmudflap (and other libraries) to build. -+# Libtool filters out \`-B' flags when linking (why?), so the \`-B' flag -+# to Glibc gets lost. Here we forcibly add it to any invocation. -+CC="\$CC $NIX_EXTRA_CFLAGS_TARGET $NIX_EXTRA_LDFLAGS_TARGET" -+ - # Is the compiler the GNU compiler? - with_gcc=$GCC - -diff --git a/libmudflap/configure b/libmudflap/configure -index ae1be92..4ee1e18 100755 ---- a/libmudflap/configure -+++ b/libmudflap/configure -@@ -15044,6 +15044,11 @@ old_archive_cmds=$lt_old_archive_cmds - # A language specific compiler. - CC=$lt_compiler - -+# Ugly hack to get libmudflap (and other libraries) to build. -+# Libtool filters out \`-B' flags when linking (why?), so the \`-B' flag -+# to Glibc gets lost. Here we forcibly add it to any invocation. -+CC="\$CC $NIX_EXTRA_CFLAGS_TARGET $NIX_EXTRA_LDFLAGS_TARGET" -+ - # Is the compiler the GNU compiler? - with_gcc=$GCC - -diff --git a/libssp/configure b/libssp/configure -index ee2a41f..7f3e1fd 100755 ---- a/libssp/configure -+++ b/libssp/configure -@@ -12926,6 +12926,11 @@ old_archive_cmds=$lt_old_archive_cmds - # A language specific compiler. - CC=$lt_compiler - -+# Ugly hack to get libmudflap (and other libraries) to build. -+# Libtool filters out \`-B' flags when linking (why?), so the \`-B' flag -+# to Glibc gets lost. Here we forcibly add it to any invocation. -+CC="\$CC $NIX_EXTRA_CFLAGS_TARGET $NIX_EXTRA_LDFLAGS_TARGET" -+ - # Is the compiler the GNU compiler? - with_gcc=$GCC - From 48bb7745e76d6fa67069f53a34ae416d66eb0ccb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Llu=C3=ADs=20Batlle=20i=20Rossell?= Date: Wed, 9 Dec 2009 10:05:47 +0000 Subject: [PATCH 100/232] gcc 4.4.2 is also affected by the wrong CPP passed to the configure script of the target libraries, as 4.3.4 I trigger the breaking build using uclibc, instead of glibc, and then the mixture of CPP getting the build glibc headers, and CC getting the uclibc headers, makes the problem evident. In 4.3.4 it only affected libmudflap. In 4.4.2, it affects libmudflap and libstdc++. svn path=/nixpkgs/branches/stdenv-updates/; revision=18850 --- pkgs/development/compilers/gcc-4.4/default.nix | 10 ++++++++-- pkgs/development/compilers/gcc-4.4/target-cpp.patch | 12 ++++++++++++ 2 files changed, 20 insertions(+), 2 deletions(-) create mode 100644 pkgs/development/compilers/gcc-4.4/target-cpp.patch diff --git a/pkgs/development/compilers/gcc-4.4/default.nix b/pkgs/development/compilers/gcc-4.4/default.nix index 299c4cb9b39..fef453e4493 100644 --- a/pkgs/development/compilers/gcc-4.4/default.nix +++ b/pkgs/development/compilers/gcc-4.4/default.nix @@ -88,8 +88,14 @@ stdenv.mkDerivation ({ patches = [./pass-cxxcpp.patch -# ./libtool-glibc.patch # some libraries don't let the proper -Btargetglibcpath pass - ./libstdc++-target.patch # (fixed in gcc 4.4.3) bad mixture of build/target flags + + # libmudflap and libstdc++ receive the build CPP, + # and not the target. + # http://gcc.gnu.org/bugzilla/show_bug.cgi?id=42279 + ./target-cpp.patch + + # (fixed in gcc 4.4.3) bad mixture of build/target flags + ./libstdc++-target.patch ] ++ optional noSysDirs ./no-sys-dirs.patch; diff --git a/pkgs/development/compilers/gcc-4.4/target-cpp.patch b/pkgs/development/compilers/gcc-4.4/target-cpp.patch new file mode 100644 index 00000000000..ab0f0ee51aa --- /dev/null +++ b/pkgs/development/compilers/gcc-4.4/target-cpp.patch @@ -0,0 +1,12 @@ +diff --git a/Makefile.in b/Makefile.in +index 8545b60..1fab64d 100644 +--- a/Makefile.in ++++ b/Makefile.in +@@ -231,6 +231,7 @@ BASE_TARGET_EXPORTS = \ + CC="$(CC_FOR_TARGET)"; export CC; \ + CFLAGS="$(CFLAGS_FOR_TARGET) $(SYSROOT_CFLAGS_FOR_TARGET) $(DEBUG_PREFIX_CFLAGS_FOR_TARGET)"; export CFLAGS; \ + CONFIG_SHELL="$(SHELL)"; export CONFIG_SHELL; \ ++ CPP="$(CC_FOR_TARGET) -E"; export CPP; \ + CPPFLAGS="$(CPPFLAGS_FOR_TARGET)"; export CPPFLAGS; \ + CXXFLAGS="$(CXXFLAGS_FOR_TARGET) $(SYSROOT_CFLAGS_FOR_TARGET) $(DEBUG_PREFIX_CFLAGS_FOR_TARGET)"; export CXXFLAGS; \ + GCJ="$(GCJ_FOR_TARGET)"; export GCJ; \ From 60788973d0a0501c33b10abb56b0e3076421e6cd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Llu=C3=ADs=20Batlle=20i=20Rossell?= Date: Wed, 9 Dec 2009 13:33:23 +0000 Subject: [PATCH 101/232] Adding a required option to uclibc for util-linux-ng (the git master version, not that of nixpkgs, which still has bugs) to link well with uclibc. svn path=/nixpkgs/branches/stdenv-updates/; revision=18852 --- pkgs/os-specific/linux/uclibc/default.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/pkgs/os-specific/linux/uclibc/default.nix b/pkgs/os-specific/linux/uclibc/default.nix index 92cc4e99721..ea59af47382 100644 --- a/pkgs/os-specific/linux/uclibc/default.nix +++ b/pkgs/os-specific/linux/uclibc/default.nix @@ -38,6 +38,7 @@ stdenv.mkDerivation { -e 's@^DEVEL_PREFIX.*@DEVEL_PREFIX="/"@' \ -e 's@.*UCLIBC_HAS_WCHAR.*@UCLIBC_HAS_WCHAR=y@' \ -e 's@.*DO_C99_MATH.*@DO_C99_MATH=y@' \ + -e 's@.*UCLIBC_HAS_PROGRAM_INVOCATION_NAME.*@UCLIBC_HAS_PROGRAM_INVOCATION_NAME=y@' \ ${configArmEABI} \ ${configBigEndian} \ -i .config From 99f8d729b08d0fd283b08a7288b823dd9bd512fa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Llu=C3=ADs=20Batlle=20i=20Rossell?= Date: Thu, 10 Dec 2009 14:50:50 +0000 Subject: [PATCH 102/232] Updating nix's aterm from aterm242fixes to aterm25 (proposed by niksnut). svn path=/nixpkgs/branches/stdenv-updates/; revision=18879 --- pkgs/top-level/all-packages.nix | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 6910c5c5ce3..386b36ba29d 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -5739,7 +5739,7 @@ let inherit fetchurl stdenv perl curl bzip2 openssl bison; inherit libtool automake autoconf docbook5 docbook5_xsl libxslt docbook_xml_dtd_43 w3m; - aterm = aterm242fixes; + aterm = aterm25; db4 = db45; flex = flex2533; @@ -8493,7 +8493,7 @@ let nix = makeOverridable (import ../tools/package-management/nix) { inherit fetchurl stdenv perl curl bzip2 openssl; - aterm = aterm242fixes; + aterm = aterm25; db4 = db45; supportOldDBs = getPkgConfig "nix" "OldDBSupport" true; storeDir = getPkgConfig "nix" "storeDir" "/nix/store"; @@ -8503,7 +8503,7 @@ let # The bleeding edge. nixUnstable = makeOverridable (import ../tools/package-management/nix/unstable.nix) { inherit fetchurl stdenv perl curl bzip2 openssl; - aterm = aterm242fixes; + aterm = aterm25; storeDir = getPkgConfig "nix" "storeDir" "/nix/store"; stateDir = getPkgConfig "nix" "stateDir" "/nix/var"; }; @@ -8513,7 +8513,7 @@ let inherit fetchurl stdenv perl curl bzip2 openssl src preConfigure automake autoconf libtool configureFlags enableScripts lib bison libxml2; flex = flex2533; - aterm = aterm242fixes; + aterm = aterm25; db4 = db45; inherit docbook5_xsl libxslt docbook5 docbook_xml_dtd_43 w3m; }; From 61a6bdad88d21fa8bfe1a7d33f8eff71db35403f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Llu=C3=ADs=20Batlle=20i=20Rossell?= Date: Thu, 10 Dec 2009 15:05:26 +0000 Subject: [PATCH 103/232] Reverting some changes I brought in by error for util-linux-ng (I was trying their git version, to check some bugfixes they did for my reports). svn path=/nixpkgs/branches/stdenv-updates/; revision=18880 --- pkgs/os-specific/linux/util-linux-ng/default.nix | 15 +++------------ pkgs/top-level/all-packages.nix | 2 +- 2 files changed, 4 insertions(+), 13 deletions(-) diff --git a/pkgs/os-specific/linux/util-linux-ng/default.nix b/pkgs/os-specific/linux/util-linux-ng/default.nix index a7bc747c723..3ab1c580837 100644 --- a/pkgs/os-specific/linux/util-linux-ng/default.nix +++ b/pkgs/os-specific/linux/util-linux-ng/default.nix @@ -1,17 +1,11 @@ -{ stdenv, fetchurl, ncurses ? null, autoconf, libtool, automake, -gettext, cvs, pkgconfig, ... }: +{ stdenv, fetchurl, ncurses ? null, ... }: stdenv.mkDerivation rec { name = "util-linux-ng-2.16.2"; -# src = fetchurl { -# url = "mirror://kernel/linux/utils/util-linux-ng/v2.16/${name}.tar.bz2"; -# sha256 = "1sx3z64z8z95v93k0c9lczcp04zw4nm3d2rkhczkyxcpdfcgbhxi"; -# }; - src = fetchurl { - url = "file:///home/llbatlle/arm/stdenv-updates/util-linux-ng.tar.gz"; - sha256 = "07ichlan4jqrcz13ldbcrwqn8z28fmj0jz7k4naf1ajyk1l9m4h1"; + url = "mirror://kernel/linux/utils/util-linux-ng/v2.16/${name}.tar.bz2"; + sha256 = "1sx3z64z8z95v93k0c9lczcp04zw4nm3d2rkhczkyxcpdfcgbhxi"; }; configureFlags = '' @@ -19,7 +13,6 @@ stdenv.mkDerivation rec { ${if ncurses == null then "--without-ncurses" else ""} ''; - buildNativeInputs = [ autoconf libtool automake gettext pkgconfig cvs ]; buildInputs = stdenv.lib.optional (ncurses != null) ncurses; # !!! It would be better to obtain the path to the mount helpers @@ -29,8 +22,6 @@ stdenv.mkDerivation rec { preConfigure = '' substituteInPlace mount/mount.c --replace /sbin/mount. /var/run/current-system/sw/sbin/mount. substituteInPlace mount/umount.c --replace /sbin/umount. /var/run/current-system/sw/sbin/umount. - sh autogen.sh - autoreconf -vfi ''; } diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 386b36ba29d..4d4f3530bfa 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -6098,7 +6098,7 @@ let utillinuxCurses = utillinuxngCurses; utillinuxng = makeOverridable (import ../os-specific/linux/util-linux-ng) { - inherit fetchurl stdenv autoconf libtool automake gettext cvs pkgconfig; + inherit fetchurl stdenv; }; utillinuxngCurses = utillinuxng.override { From ef0cd29eb0e751af822c3deb4981c2b85d472a94 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= Date: Fri, 11 Dec 2009 20:05:54 +0000 Subject: [PATCH 104/232] GNU Coreutils 8.2. svn path=/nixpkgs/branches/stdenv-updates/; revision=18906 --- pkgs/tools/misc/coreutils/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/tools/misc/coreutils/default.nix b/pkgs/tools/misc/coreutils/default.nix index 63e423b7793..40d6a90c6a4 100644 --- a/pkgs/tools/misc/coreutils/default.nix +++ b/pkgs/tools/misc/coreutils/default.nix @@ -1,11 +1,11 @@ {stdenv, fetchurl, aclSupport ? false, acl, perl, gmp}: stdenv.mkDerivation rec { - name = "coreutils-8.1"; + name = "coreutils-8.2"; src = fetchurl { url = "mirror://gnu/coreutils/${name}.tar.gz"; - sha256 = "1c68q4c4fg6x22ba2p8xb0ddn4xdl847np2g33h63bgj9pdav8ay"; + sha256 = "0hagmpqm3wyx0hhw7i0mswary5w8flrk2vxhqfgfskam2rfhbhyk"; }; buildInputs = [ perl gmp ] ++ stdenv.lib.optional aclSupport acl; From 6bacb66dd3ec9a8819472becc369a479b65b00c3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Llu=C3=ADs=20Batlle=20i=20Rossell?= Date: Sat, 12 Dec 2009 18:48:07 +0000 Subject: [PATCH 105/232] Updating the gcc-wrapper with the changes done in trunk's gcc-wrapper2. Removing any reference to the gcc-wrapper2, as now the gcc-wrapper already conveys the changes, I created gcc-wrapper2 in trunk for. svn path=/nixpkgs/branches/stdenv-updates/; revision=18913 --- pkgs/build-support/gcc-wrapper/ld-wrapper.sh | 9 +++++++++ pkgs/top-level/all-packages.nix | 20 ++++++-------------- 2 files changed, 15 insertions(+), 14 deletions(-) diff --git a/pkgs/build-support/gcc-wrapper/ld-wrapper.sh b/pkgs/build-support/gcc-wrapper/ld-wrapper.sh index 962adf43861..52aa57bc1ea 100644 --- a/pkgs/build-support/gcc-wrapper/ld-wrapper.sh +++ b/pkgs/build-support/gcc-wrapper/ld-wrapper.sh @@ -81,6 +81,9 @@ if test "$NIX_DONT_SET_RPATH" != "1"; then elif test "$p" = "-L"; then addToLibPath ${p2} n=$((n + 1)) + elif $(echo "$p" | grep -q '\.so\($\|\.\)'); then + path="$(dirname "$p")"; + addToLibPath "${path}" fi n=$((n + 1)) done @@ -113,6 +116,12 @@ if test "$NIX_DONT_SET_RPATH" != "1"; then # I haven't seen `-l foo', but you never know... addToRPath $i break + elif $(echo "$p" | grep -q '\.so\($\|\.\)'); then + path="$(dirname "$p")"; + if test "$path" == "$i"; then + addToRPath $i + break; + fi fi n=$((n + 1)) done diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 5e32a37dd32..504b7fc8255 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -1807,7 +1807,6 @@ let }); gcc44 = useFromStdenv "gcc" gcc44_real; - gcc44_wrapper2 = wrapGCC2 gcc44.gcc; gcc43 = lowPrio (wrapGCC (makeOverridable (import ../development/compilers/gcc-4.3) { inherit stdenv fetchurl texinfo gmp mpfr noSysDirs; @@ -2283,7 +2282,6 @@ let }; wrapGCC = wrapGCCWith (import ../build-support/gcc-wrapper) glibc; - wrapGCC2 = wrapGCCWith (import ../build-support/gcc-wrapper2) glibc; wrapGCCCross = {gcc, libc, binutils, cross, shell ? "", name ? "gcc-cross-wrapper"}: @@ -4357,8 +4355,7 @@ let }; openal = import ../development/libraries/openal { - inherit fetchurl cmake alsaLib; - stdenv = overrideGCC stdenv gcc43_wrapper2; + inherit fetchurl stdenv cmake alsaLib; }; # added because I hope that it has been easier to compile on x86 (for blender) @@ -6387,14 +6384,12 @@ let }; autopanosiftc = import ../applications/graphics/autopanosiftc { - inherit fetchurl cmake libpng libtiff libjpeg panotools libxml2; - stdenv = overrideGCC stdenv gcc43_wrapper2; + inherit fetchurl stdenv cmake libpng libtiff libjpeg panotools libxml2; }; avidemux = import ../applications/video/avidemux { - inherit fetchurl cmake pkgconfig libxml2 qt4 gettext SDL libxslt x264 + inherit fetchurl stdenv cmake pkgconfig libxml2 qt4 gettext SDL libxslt x264 alsaLib lame faac faad2 libvorbis; - stdenv = overrideGCC stdenv gcc43_wrapper2; inherit (gtkLibs) gtk; inherit (xlibs) libXv pixman libpthreadstubs libXau libXdmcp; }; @@ -6925,8 +6920,7 @@ let }; freepv = import ../applications/graphics/freepv { - inherit fetchurl mesa freeglut libjpeg zlib cmake libxml2 libpng; - stdenv = overrideGCC stdenv gcc43_wrapper2; + inherit fetchurl stdenv mesa freeglut libjpeg zlib cmake libxml2 libpng; inherit (xlibs) libX11 libXxf86vm; }; @@ -7076,11 +7070,10 @@ let }; hugin = import ../applications/graphics/hugin { - inherit fetchurl cmake panotools libtiff libpng boost pkgconfig + inherit fetchurl stdenv cmake panotools libtiff libpng boost pkgconfig exiv2 gettext ilmbase enblendenfuse autopanosiftc; inherit wxGTK; openexr = openexr_1_6_1; - stdenv = overrideGCC stdenv gcc43_wrapper2; }; i810switch = import ../applications/misc/i810 { @@ -7443,8 +7436,7 @@ let }; paraview = import ../applications/graphics/paraview { - inherit fetchurl cmake qt4; - stdenv = overrideGCC stdenv gcc43_wrapper2; + inherit fetchurl stdenv cmake qt4; }; partitionManager = import ../tools/misc/partition-manager { From 193f70d8877034c8b9df5538f538198e7fdc4a09 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Llu=C3=ADs=20Batlle=20i=20Rossell?= Date: Sun, 13 Dec 2009 16:18:53 +0000 Subject: [PATCH 106/232] Updating the ld-wrapper about linking of direct .so files. The previous regexp looking for such ld arguments did not work well with "--soname=xxx.so". Now I added the condition that the argument should not start with a hyphen, for it to be possibly considered a .so file to link with. svn path=/nixpkgs/branches/stdenv-updates/; revision=18919 --- pkgs/build-support/gcc-wrapper/ld-wrapper.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/build-support/gcc-wrapper/ld-wrapper.sh b/pkgs/build-support/gcc-wrapper/ld-wrapper.sh index 52aa57bc1ea..bf3c2620f29 100644 --- a/pkgs/build-support/gcc-wrapper/ld-wrapper.sh +++ b/pkgs/build-support/gcc-wrapper/ld-wrapper.sh @@ -81,7 +81,7 @@ if test "$NIX_DONT_SET_RPATH" != "1"; then elif test "$p" = "-L"; then addToLibPath ${p2} n=$((n + 1)) - elif $(echo "$p" | grep -q '\.so\($\|\.\)'); then + elif $(echo "$p" | grep -q '^[^-].*\.so\($\|\.\)'); then path="$(dirname "$p")"; addToLibPath "${path}" fi @@ -116,7 +116,7 @@ if test "$NIX_DONT_SET_RPATH" != "1"; then # I haven't seen `-l foo', but you never know... addToRPath $i break - elif $(echo "$p" | grep -q '\.so\($\|\.\)'); then + elif $(echo "$p" | grep -q '^[^-].*\.so\($\|\.\)'); then path="$(dirname "$p")"; if test "$path" == "$i"; then addToRPath $i From 06d295f51b6a2f17cc60595b47c2895e4a738bb7 Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Thu, 17 Dec 2009 21:22:58 +0000 Subject: [PATCH 107/232] * Urgh. Get ATerm 2.4.2-fixes to build with the -fno-strict-aliasing flag. Note that ATerm 2.5 causes Nix to segfault, and ATerm 2.8 doesn't even build on x86_64-linux (see http://bugzilla.sen.cwi.nl:8080/show_bug.cgi?id=1042). svn path=/nixpkgs/branches/stdenv-updates/; revision=19020 --- pkgs/development/libraries/aterm/2.4.2-fixes.nix | 6 ++++++ pkgs/top-level/all-packages.nix | 4 ++-- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/pkgs/development/libraries/aterm/2.4.2-fixes.nix b/pkgs/development/libraries/aterm/2.4.2-fixes.nix index a160d5cd121..b02da9be1ac 100644 --- a/pkgs/development/libraries/aterm/2.4.2-fixes.nix +++ b/pkgs/development/libraries/aterm/2.4.2-fixes.nix @@ -12,6 +12,12 @@ stdenv.mkDerivation { # Fix for http://bugzilla.sen.cwi.nl:8080/show_bug.cgi?id=841 ./max-long.patch ]; + + # There are apparently still some aliasing bugs left in + # aterm-2.4.2-fixes-r2 (in AT_setAnnotations to be precise), but + # under my reading of the C standard it should be fine. Anyway, just + # disable strict aliasing. + NIX_CFLAGS_COMPILE = "-fno-strict-aliasing"; doCheck = true; diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 504b7fc8255..8e29f29d69a 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -8499,7 +8499,7 @@ let nix = makeOverridable (import ../tools/package-management/nix) { inherit fetchurl stdenv perl curl bzip2 openssl; - aterm = aterm25; + aterm = aterm242fixes; db4 = db45; supportOldDBs = getPkgConfig "nix" "OldDBSupport" true; storeDir = getPkgConfig "nix" "storeDir" "/nix/store"; @@ -8509,7 +8509,7 @@ let # The bleeding edge. nixUnstable = makeOverridable (import ../tools/package-management/nix/unstable.nix) { inherit fetchurl stdenv perl curl bzip2 openssl; - aterm = aterm25; + aterm = aterm242fixes; storeDir = getPkgConfig "nix" "storeDir" "/nix/store"; stateDir = getPkgConfig "nix" "stateDir" "/nix/var"; }; From 72fe687cd0d44fcb343ab3be43535105a5ba61c8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Llu=C3=ADs=20Batlle=20i=20Rossell?= Date: Thu, 17 Dec 2009 22:09:28 +0000 Subject: [PATCH 108/232] Attempting to fix ntp's MOD_NANO problems. svn path=/nixpkgs/branches/stdenv-updates/; revision=19021 --- .../libraries/glibc-2.11/common.nix | 3 ++ .../libraries/glibc-2.11/mod_nano.patch | 31 +++++++++++++++++++ 2 files changed, 34 insertions(+) create mode 100644 pkgs/development/libraries/glibc-2.11/mod_nano.patch diff --git a/pkgs/development/libraries/glibc-2.11/common.nix b/pkgs/development/libraries/glibc-2.11/common.nix index ed667be10ef..b955bb31a45 100644 --- a/pkgs/development/libraries/glibc-2.11/common.nix +++ b/pkgs/development/libraries/glibc-2.11/common.nix @@ -49,6 +49,9 @@ stdenv.mkDerivation ({ /* Make sure `nscd' et al. are linked against `libssp'. */ ./stack-protector-link.patch + + /* MOD_NANO definition, for ntp (taken from glibc upstream) */ + ./mod_nano.patch ]; configureFlags = [ diff --git a/pkgs/development/libraries/glibc-2.11/mod_nano.patch b/pkgs/development/libraries/glibc-2.11/mod_nano.patch new file mode 100644 index 00000000000..2fb35b3df38 --- /dev/null +++ b/pkgs/development/libraries/glibc-2.11/mod_nano.patch @@ -0,0 +1,31 @@ +commit 89b432d7a5befb85048c97e881b2106e8df58e43 +Author: Ulrich Drepper +Date: Sun Nov 22 10:23:12 2009 -0800 + + Fix up a bit more for recent API changes. + +diff --git a/sysdeps/unix/sysv/linux/sys/timex.h b/sysdeps/unix/sysv/linux/sys/timex.h +index 5f10c7f..88b87f1 100644 +--- a/sysdeps/unix/sysv/linux/sys/timex.h ++++ b/sysdeps/unix/sysv/linux/sys/timex.h +@@ -85,6 +85,9 @@ struct timex + #define MOD_TIMECONST ADJ_TIMECONST + #define MOD_CLKB ADJ_TICK + #define MOD_CLKA ADJ_OFFSET_SINGLESHOT /* 0x8000 in original */ ++#define MOD_TAI ADJ_TAI ++#define MOD_MICRO ADJ_MICRO ++#define MOD_NANO ADJ_NANO + + + /* Status codes (timex.status) */ +@@ -108,8 +111,9 @@ struct timex + #define STA_MODE 0x4000 /* mode (0 = PLL, 1 = FLL) (ro) */ + #define STA_CLK 0x8000 /* clock source (0 = A, 1 = B) (ro) */ + ++/* Read-only bits */ + #define STA_RONLY (STA_PPSSIGNAL | STA_PPSJITTER | STA_PPSWANDER | \ +- STA_PPSERROR | STA_CLOCKERR) /* read-only bits */ ++ STA_PPSERROR | STA_CLOCKERR | STA_NANO | STA_MODE | STA_CLK) + + /* Clock states (time_state) */ + #define TIME_OK 0 /* clock synchronized, no leap second */ From 93db6f4cf8a330b9309b5e57295a9b4c4f3036f1 Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Fri, 18 Dec 2009 11:25:56 +0000 Subject: [PATCH 109/232] * Removed the lzma package - it's superseded by xz. svn path=/nixpkgs/branches/stdenv-updates/; revision=19027 --- pkgs/tools/compression/lzma/default.nix | 18 ------------------ pkgs/top-level/all-packages.nix | 4 +--- 2 files changed, 1 insertion(+), 21 deletions(-) delete mode 100644 pkgs/tools/compression/lzma/default.nix diff --git a/pkgs/tools/compression/lzma/default.nix b/pkgs/tools/compression/lzma/default.nix deleted file mode 100644 index 13de50fafcf..00000000000 --- a/pkgs/tools/compression/lzma/default.nix +++ /dev/null @@ -1,18 +0,0 @@ -{stdenv, fetchurl}: - -stdenv.mkDerivation { - name = "lzma-4.32.7"; - - src = fetchurl { - url = mirror://gentoo/distfiles/lzma-4.32.7.tar.gz; - sha256 = "0b03bdvm388kwlcz97aflpr3ir1zpa3m0bq3s6cd3pp5a667lcwz"; - }; - - CFLAGS = "-O3"; - CXXFLAGS = "-O3"; - - meta = { - homepage = http://tukaani.org/lzma/; - description = "The LZMA compression program"; - }; -} diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 8e29f29d69a..b68df761115 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -968,9 +968,7 @@ let readline nettools lsof procps; }; - lzma = makeOverridable (import ../tools/compression/lzma) { - inherit fetchurl stdenv; - }; + lzma = xz; xz = import ../tools/compression/xz { inherit fetchurl stdenv lib; From 69434e05921a94b09d098685f50026b7256ca70f Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Fri, 18 Dec 2009 11:26:36 +0000 Subject: [PATCH 110/232] * Add support for lzma patches. svn path=/nixpkgs/branches/stdenv-updates/; revision=19028 --- pkgs/stdenv/generic/setup.sh | 3 +++ 1 file changed, 3 insertions(+) diff --git a/pkgs/stdenv/generic/setup.sh b/pkgs/stdenv/generic/setup.sh index f8c497f37c2..5e2fc7b24db 100644 --- a/pkgs/stdenv/generic/setup.sh +++ b/pkgs/stdenv/generic/setup.sh @@ -533,6 +533,9 @@ patchPhase() { *.bz2) uncompress="bzip2 -d" ;; + *.lzma) + uncompress="lzma -d" + ;; esac $uncompress < $i | patch ${patchFlags:--p1} stopNest From 963a0f82167560003a49a3cbf4d8e0bdcf09cebc Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Fri, 18 Dec 2009 12:33:12 +0000 Subject: [PATCH 111/232] * Lower the priority of the stdenv branch. svn path=/nixpkgs/branches/stdenv-updates/; revision=19033 --- pkgs/top-level/release.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/top-level/release.nix b/pkgs/top-level/release.nix index 6b3616846e0..f1ea5e9dad5 100644 --- a/pkgs/top-level/release.nix +++ b/pkgs/top-level/release.nix @@ -12,7 +12,7 @@ let prio = level: job: toJob job // { schedulingPriority = level; }; toJob = x: if builtins.isAttrs x then x else - { type = "job"; systems = x; schedulingPriority = 10; }; + { type = "job"; systems = x; schedulingPriority = 5; }; /* Perform a job on the given set of platforms. The function `f' is called by Hydra for each platform, and should return some job From 246c17dc9e37cd350a57583015e781336ca4442f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= Date: Fri, 18 Dec 2009 17:48:31 +0000 Subject: [PATCH 112/232] GNU MPFR 2.4.2. svn path=/nixpkgs/branches/stdenv-updates/; revision=19042 --- pkgs/development/libraries/mpfr/default.nix | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/pkgs/development/libraries/mpfr/default.nix b/pkgs/development/libraries/mpfr/default.nix index b428578c562..dea0113cc69 100644 --- a/pkgs/development/libraries/mpfr/default.nix +++ b/pkgs/development/libraries/mpfr/default.nix @@ -1,14 +1,16 @@ {stdenv, fetchurl, gmp}: -stdenv.mkDerivation { - name = "mpfr-2.4.1"; +stdenv.mkDerivation rec { + name = "mpfr-2.4.2"; src = fetchurl { - url = http://www.mpfr.org/mpfr-2.4.1/mpfr-2.4.1.tar.bz2; - sha256 = "0pj879vbwbik8xkgnxy2ll32ljq3bgqjsqapqasq9rkfbkl90a34"; + url = "mirror://gnu/mpfr/${name}.tar.bz2"; + sha256 = "1fpjphja2ridy1wfc53mcbavj4axl28ibvnawj1217flm045mry7"; }; - buildInputs = [gmp]; + buildInputs = [ gmp ]; + + doCheck = true; meta = { homepage = http://www.mpfr.org/; From 76fa225eaacbf8f7ad117a1352be87fef56b2bd7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Llu=C3=ADs=20Batlle=20i=20Rossell?= Date: Sat, 19 Dec 2009 09:09:39 +0000 Subject: [PATCH 113/232] Making cyrus-sasl build with gcc 4.4. I took a patch from the fedora cvs: http://cvs.fedoraproject.org/viewvc/rpms/cyrus-sasl/devel/cyrus-sasl-2.1.22-bad-elif.patch?revision=1.1&view=markup svn path=/nixpkgs/branches/stdenv-updates/; revision=19044 --- .../cyrus-sasl-2.1.22-bad-elif.patch | 21 +++++++++++++++++++ .../libraries/cyrus-sasl/default.nix | 1 + pkgs/top-level/all-packages.nix | 3 +-- 3 files changed, 23 insertions(+), 2 deletions(-) create mode 100644 pkgs/development/libraries/cyrus-sasl/cyrus-sasl-2.1.22-bad-elif.patch diff --git a/pkgs/development/libraries/cyrus-sasl/cyrus-sasl-2.1.22-bad-elif.patch b/pkgs/development/libraries/cyrus-sasl/cyrus-sasl-2.1.22-bad-elif.patch new file mode 100644 index 00000000000..33550c428d2 --- /dev/null +++ b/pkgs/development/libraries/cyrus-sasl/cyrus-sasl-2.1.22-bad-elif.patch @@ -0,0 +1,21 @@ +diff -up cyrus-sasl-2.1.22/plugins/digestmd5.c.elif cyrus-sasl-2.1.22/plugins/digestmd5.c +--- cyrus-sasl-2.1.22/plugins/digestmd5.c.elif 2009-01-23 09:40:31.000000000 +0100 ++++ cyrus-sasl-2.1.22/plugins/digestmd5.c 2009-02-06 15:20:15.000000000 +0100 +@@ -2743,7 +2743,7 @@ static sasl_server_plug_t digestmd5_serv + "DIGEST-MD5", /* mech_name */ + #ifdef WITH_RC4 + 128, /* max_ssf */ +-#elif WITH_DES ++#elif defined(WITH_DES) + 112, + #else + 1, +@@ -4071,7 +4071,7 @@ static sasl_client_plug_t digestmd5_clie + "DIGEST-MD5", + #ifdef WITH_RC4 /* mech_name */ + 128, /* max ssf */ +-#elif WITH_DES ++#elif defined(WITH_DES) + 112, + #else + 1, diff --git a/pkgs/development/libraries/cyrus-sasl/default.nix b/pkgs/development/libraries/cyrus-sasl/default.nix index 2c96068c067..57bf30c6649 100644 --- a/pkgs/development/libraries/cyrus-sasl/default.nix +++ b/pkgs/development/libraries/cyrus-sasl/default.nix @@ -9,4 +9,5 @@ stdenv.mkDerivation { }; configureFlags="--with-openssl=${openssl} --with-plugindir=\${out}/lib/sasl2 --with-configdir=\${out}/lib/sasl2"; buildInputs = [ openssl db4 gettext ]; + patches = [ ./cyrus-sasl-2.1.22-bad-elif.patch ]; } diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index b68df761115..5152fe1ea27 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -3269,8 +3269,7 @@ let }; cyrus_sasl = import ../development/libraries/cyrus-sasl { - inherit fetchurl openssl db4 gettext; - stdenv = overrideGCC stdenv gcc43; + inherit stdenv fetchurl openssl db4 gettext; }; db4 = db45; From 9ef11e4c4d18f124d88e5e63932de1182e4946e6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Llu=C3=ADs=20Batlle=20i=20Rossell?= Date: Sat, 19 Dec 2009 12:12:24 +0000 Subject: [PATCH 114/232] Made the linux kernel expressions support 'platform' again (thinking on reusing most of the kernel expressions for the sheevaplug). I still have not added anything in the kernels about cross compilation. I moved the platform definitions out of all-packages. I have not written good platform definitions for the sheevaplug - only for the PC. Only the linux-2.6.32 expression uses the platforms kernelConfig. The linux-2.6.31 was broken, and I left it broken. svn path=/nixpkgs/branches/stdenv-updates/; revision=19046 --- pkgs/os-specific/linux/kernel/builder.sh | 3 ++ pkgs/os-specific/linux/kernel/generic.nix | 5 +-- .../os-specific/linux/kernel/linux-2.6.32.nix | 16 +++------- pkgs/top-level/all-packages.nix | 20 +++--------- pkgs/top-level/platforms.nix | 31 +++++++++++++++++++ 5 files changed, 45 insertions(+), 30 deletions(-) create mode 100644 pkgs/top-level/platforms.nix diff --git a/pkgs/os-specific/linux/kernel/builder.sh b/pkgs/os-specific/linux/kernel/builder.sh index 4ea4d2856ad..f756c140c49 100644 --- a/pkgs/os-specific/linux/kernel/builder.sh +++ b/pkgs/os-specific/linux/kernel/builder.sh @@ -24,6 +24,9 @@ configurePhase() { # generate-config.pl can answer them. sed -e '/fflush(stdout);/i\printf("###");' -i scripts/kconfig/conf.c + # Get a basic config file for later refinement with $generateConfig + make $kernelBaseConfig ARCH=$arch + # Create the config file. echo "generating kernel configuration..." echo "$kernelConfig" > kernel-config diff --git a/pkgs/os-specific/linux/kernel/generic.nix b/pkgs/os-specific/linux/kernel/generic.nix index 6cc3ddc1228..2d9af1b4bd8 100644 --- a/pkgs/os-specific/linux/kernel/generic.nix +++ b/pkgs/os-specific/linux/kernel/generic.nix @@ -33,7 +33,7 @@ , preConfigure ? "" , extraMeta ? {} -, platform ? { name = "pc"; uboot = null; } +, platform ? { name = "pc"; uboot = null; kernelBaseConfig = "defconfig"; } , ... }: @@ -80,13 +80,14 @@ stdenv.mkDerivation { ++ lib.optional (platform.uboot != null) [platform.uboot]; platformName = platform.name; + kernelBaseConfig = platform.kernelBaseConfig; arch = if xen then "xen" else if userModeLinux then "um" else + if platform ? kernelArch then platform.kernelArch else if stdenv.system == "i686-linux" then "i386" else if stdenv.system == "x86_64-linux" then "x86_64" else - if stdenv.system == "armv5tel-linux" then "arm" else abort "Platform ${stdenv.system} is not supported."; meta = { diff --git a/pkgs/os-specific/linux/kernel/linux-2.6.32.nix b/pkgs/os-specific/linux/kernel/linux-2.6.32.nix index f6f8104e662..3242df1f26f 100644 --- a/pkgs/os-specific/linux/kernel/linux-2.6.32.nix +++ b/pkgs/os-specific/linux/kernel/linux-2.6.32.nix @@ -1,4 +1,5 @@ -args @ { stdenv, fetchurl, userModeLinux ? false, extraConfig ? "", ... }: +args @ { stdenv, fetchurl, platform, userModeLinux ? false, extraConfig ? "" +, ... }: import ./generic.nix ( @@ -11,7 +12,7 @@ import ./generic.nix ( }; features.iwlwifi = true; - + config = '' # Don't include any debug features. @@ -26,16 +27,6 @@ import ./generic.nix ( # Optimize with -O2, not -Os. CC_OPTIMIZE_FOR_SIZE n - # Virtualisation (KVM, Xen...). - PARAVIRT_GUEST y - KVM_CLOCK y - KVM_GUEST y - XEN y - KSM y - - # We need 64 GB (PAE) support for Xen guest support. - HIGHMEM64G? y - # Enable the kernel's built-in memory tester. MEMTEST y @@ -207,6 +198,7 @@ import ./generic.nix ( X86_CHECK_BIOS_CORRUPTION y X86_MCE y + ${if platform ? kernelExtraConfig then platform.kernelExtraConfig else ""} ${extraConfig} ''; } diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 629cd019630..122cd9c6f78 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -310,23 +310,11 @@ let inherit pkgs lib; }; - - platformPC = assert system == "i686-linux" || system == "x86_64-linux"; { - name = "pc"; - uboot = null; + platforms = import ./platforms.nix { + inherit system pkgs; }; - platformSheevaplug = assert system == "armv5tel-linux"; { - name = "sheevaplug"; - inherit uboot; - }; - - platformVersatileARM = assert system == "armv5tel-linux"; { - name = "versatileARM"; - uboot = null; - }; - - platform = platformPC; + platform = platforms.pc; ### TOOLS @@ -5579,7 +5567,7 @@ let kernel_2_6_31_zen_bfs = kernel_2_6_31_zen7_bfs; kernel_2_6_32 = makeOverridable (import ../os-specific/linux/kernel/linux-2.6.32.nix) { - inherit fetchurl stdenv perl mktemp module_init_tools; + inherit fetchurl stdenv perl mktemp module_init_tools platform; kernelPatches = [ kernelPatches.fbcondecor_2_6_31 kernelPatches.sec_perm_2_6_24 diff --git a/pkgs/top-level/platforms.nix b/pkgs/top-level/platforms.nix new file mode 100644 index 00000000000..539b83a7657 --- /dev/null +++ b/pkgs/top-level/platforms.nix @@ -0,0 +1,31 @@ +{ system, pkgs}: +with pkgs; +{ + pc = assert system == "i686-linux" || system == "x86_64-linux"; { + name = "pc"; + uboot = null; + kernelBaseConfig = "defconfig"; + kernelExtraConfig = + '' + # Virtualisation (KVM, Xen...). + PARAVIRT_GUEST y + KVM_CLOCK y + KVM_GUEST y + XEN y + KSM y + + # We need 64 GB (PAE) support for Xen guest support. + HIGHMEM64G? y + ''; + }; + + sheevaplug = assert system == "armv5tel-linux"; { + name = "sheevaplug"; + inherit uboot; + }; + + platformVersatileARM = assert system == "armv5tel-linux"; { + name = "versatileARM"; + uboot = null; + }; +} From 224b3e0f0d55d84f9db2a3572e72d7c6b8954001 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Llu=C3=ADs=20Batlle=20i=20Rossell?= Date: Sun, 20 Dec 2009 21:45:46 +0000 Subject: [PATCH 115/232] Fixing kbasket build (made it use gcc 4.3) svn path=/nixpkgs/branches/stdenv-updates/; revision=19054 --- pkgs/top-level/all-packages.nix | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 122cd9c6f78..93d7cad5d35 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -7112,8 +7112,9 @@ let }; kbasket = import ../applications/misc/kbasket { - inherit stdenv fetchurl kdelibs x11 zlib libpng libjpeg + inherit fetchurl kdelibs x11 zlib libpng libjpeg perl qt3 gpgme libgpgerror; + stdenv = overrideGCC stdenv gcc43; }; kermit = import ../tools/misc/kermit { From fb82bac2fcb7538195ec0941499a4d68cede83ed Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Llu=C3=ADs=20Batlle=20i=20Rossell?= Date: Mon, 21 Dec 2009 07:49:31 +0000 Subject: [PATCH 116/232] Adding first built version of the gnat compiler for gcc 4.4. Some things don't work: - The ghdl expression (it still needs the gcc 4.3.4 src, ...) - The gnat wrappers need to be more generic - now they work only for the given gnatboot (taken from gentoo) and gnats installed to their $out store path. - Using the cloogppl and ppl. We will need our own gnatboot built with c++ libraries for that. svn path=/nixpkgs/branches/stdenv-updates/; revision=19060 --- .../science/electronics/ghdl/default.nix | 18 ++ pkgs/build-support/gnat-wrapper/add-flags | 28 +++ pkgs/build-support/gnat-wrapper/builder.sh | 180 ++++++++++++++++++ pkgs/build-support/gnat-wrapper/default.nix | 66 +++++++ .../build-support/gnat-wrapper/gcc-wrapper.sh | 148 ++++++++++++++ .../gnat-wrapper/gnat-wrapper.sh | 113 +++++++++++ .../gnat-wrapper/gnatlink-wrapper.sh | 43 +++++ pkgs/build-support/gnat-wrapper/ld-wrapper.sh | 155 +++++++++++++++ pkgs/build-support/gnat-wrapper/setup-hook.sh | 33 ++++ pkgs/build-support/gnat-wrapper/utils.sh | 23 +++ .../development/compilers/gcc-4.4/default.nix | 15 +- .../development/compilers/gcc-4.4/sources.nix | 6 +- .../compilers/gnatboot/default.nix | 50 +++++ pkgs/top-level/all-packages.nix | 31 +++ 14 files changed, 905 insertions(+), 4 deletions(-) create mode 100644 pkgs/applications/science/electronics/ghdl/default.nix create mode 100644 pkgs/build-support/gnat-wrapper/add-flags create mode 100644 pkgs/build-support/gnat-wrapper/builder.sh create mode 100644 pkgs/build-support/gnat-wrapper/default.nix create mode 100644 pkgs/build-support/gnat-wrapper/gcc-wrapper.sh create mode 100644 pkgs/build-support/gnat-wrapper/gnat-wrapper.sh create mode 100644 pkgs/build-support/gnat-wrapper/gnatlink-wrapper.sh create mode 100644 pkgs/build-support/gnat-wrapper/ld-wrapper.sh create mode 100644 pkgs/build-support/gnat-wrapper/setup-hook.sh create mode 100644 pkgs/build-support/gnat-wrapper/utils.sh create mode 100644 pkgs/development/compilers/gnatboot/default.nix diff --git a/pkgs/applications/science/electronics/ghdl/default.nix b/pkgs/applications/science/electronics/ghdl/default.nix new file mode 100644 index 00000000000..7451c3f0724 --- /dev/null +++ b/pkgs/applications/science/electronics/ghdl/default.nix @@ -0,0 +1,18 @@ +{stdenv, fetchurl, gnat}: +stdenv.mkDerivation rec { + name = "ghdl-0.28"; + + src = fetchurl { + url = "http://ghdl.free.fr/${name}.tar.bz2"; + sha256 = "0l3ah3zw2yhr9rv9d5ck1cinsf11r28m6bzl2sdibngl2bgc2jsf"; + }; + + buildInputs = [ gnat ]; + + meta = { + description = "Complete VHDL simulator, using the GCC technology"; + homepage = http://ghdl.free.fr/; + # There is a mixture of licenses per file + license = "free"; + }; +} diff --git a/pkgs/build-support/gnat-wrapper/add-flags b/pkgs/build-support/gnat-wrapper/add-flags new file mode 100644 index 00000000000..26e536f6d57 --- /dev/null +++ b/pkgs/build-support/gnat-wrapper/add-flags @@ -0,0 +1,28 @@ +# `-B@out@/bin' forces gcc to use ld-wrapper.sh when calling ld. +export NIX_CFLAGS_COMPILE="-B@out@/bin/ $NIX_CFLAGS_COMPILE" + +if test -e @out@/nix-support/libc-cflags; then + export NIX_CFLAGS_COMPILE="$(cat @out@/nix-support/libc-cflags) $NIX_CFLAGS_COMPILE" +fi + +if test -e @out@/nix-support/gcc-cflags; then + export NIX_CFLAGS_COMPILE="$(cat @out@/nix-support/gcc-cflags) $NIX_CFLAGS_COMPILE" +fi + +if test -e @out@/nix-support/gnat-cflags; then + export NIX_GNATFLAGS_COMPILE="$(cat @out@/nix-support/gnat-cflags) $NIX_GNATFLAGS_COMPILE" +fi + +if test -e @out@/nix-support/libc-ldflags; then + export NIX_LDFLAGS="$NIX_LDFLAGS $(cat @out@/nix-support/libc-ldflags)" +fi + +if test -e @out@/nix-support/gcc-ldflags; then + export NIX_LDFLAGS="$NIX_LDFLAGS $(cat @out@/nix-support/gcc-ldflags)" +fi + +if test -e @out@/nix-support/libc-ldflags-before; then + export NIX_LDFLAGS_BEFORE="$(cat @out@/nix-support/libc-ldflags-before) $NIX_LDFLAGS_BEFORE" +fi + +export NIX_GCC_WRAPPER_FLAGS_SET=1 diff --git a/pkgs/build-support/gnat-wrapper/builder.sh b/pkgs/build-support/gnat-wrapper/builder.sh new file mode 100644 index 00000000000..9befd517439 --- /dev/null +++ b/pkgs/build-support/gnat-wrapper/builder.sh @@ -0,0 +1,180 @@ +source $stdenv/setup + + +ensureDir $out/bin +ensureDir $out/nix-support + + +if test -z "$nativeLibc"; then + dynamicLinker="$libc/lib/$dynamicLinker" + echo $dynamicLinker > $out/nix-support/dynamic-linker + + if test -e $libc/lib/32/ld-linux.so.2; then + echo $libc/lib/32/ld-linux.so.2 > $out/nix-support/dynamic-linker-m32 + fi + + # The "-B$libc/lib/" flag is a quick hack to force gcc to link + # against the crt1.o from our own glibc, rather than the one in + # /usr/lib. (This is only an issue when using an `impure' + # compiler/linker, i.e., one that searches /usr/lib and so on.) + # + # Unfortunately, setting -B appears to override the default search + # path. Thus, the gcc-specific "../includes-fixed" directory is + # now longer searched and glibc's header fails to + # compile, because it uses "#include_next " to find the + # limits.h file in ../includes-fixed. To remedy the problem, + # another -idirafter is necessary to add that directory again. + echo "-B$libc/lib/ -idirafter $libc/include -idirafter $gcc/lib/gcc/*/*/include-fixed" > $out/nix-support/libc-cflags + + echo "-L$libc/lib" > $out/nix-support/libc-ldflags + + # The dynamic linker is passed in `ldflagsBefore' to allow + # explicit overrides of the dynamic linker by callers to gcc/ld + # (the *last* value counts, so ours should come first). + echo "-dynamic-linker $dynamicLinker" > $out/nix-support/libc-ldflags-before +fi + +if test -n "$nativeTools"; then + gccPath="$nativePrefix/bin" + ldPath="$nativePrefix/bin" +else + if test -e "$gcc/lib64"; then + gccLDFlags="$gccLDFlags -L$gcc/lib64" + fi + gccLDFlags="$gccLDFlags -L$gcc/lib" + echo "$gccLDFlags" > $out/nix-support/gcc-ldflags + + # GCC shows $gcc/lib in `gcc -print-search-dirs', but not + # $gcc/lib64 (even though it does actually search there...).. + # This confuses libtool. So add it to the compiler tool search + # path explicitly. + if test -e "$gcc/lib64"; then + gccCFlags="$gccCFlags -B$gcc/lib64" + fi + gccCFlags="$gccCFlags -B$gcc/lib/gnatgcc/x86_64-pc-linux-gnu/4.1/ -I$gcc/lib/gnatgcc/x86_64-pc-linux-gnu/4.1/adainclude" + echo "$gccCFlags" > $out/nix-support/gcc-cflags + + gnatCFlags="-aI$gcc/lib/gnatgcc/x86_64-pc-linux-gnu/4.1/adainclude -aO$gcc/lib/gnatgcc/x86_64-pc-linux-gnu/4.1/adalib" + echo "$gnatCFlags" > $out/nix-support/gnat-cflags + + gccPath="$gcc/bin" + ldPath="$binutils/bin" +fi + + +doSubstitute() { + local src=$1 + local dst=$2 + # Can't use substitute() here, because replace may not have been + # built yet (in the bootstrap). + sed \ + -e "s^@out@^$out^g" \ + -e "s^@shell@^$shell^g" \ + -e "s^@gcc@^$gcc^g" \ + -e "s^@gccProg@^$gccProg^g" \ + -e "s^@gnatProg@^$gnatProg^g" \ + -e "s^@gnatlinkProg@^$gnatlinkProg^g" \ + -e "s^@binutils@^$binutils^g" \ + -e "s^@coreutils@^$coreutils^g" \ + -e "s^@libc@^$libc^g" \ + -e "s^@ld@^$ldPath/ld^g" \ + < "$src" > "$dst" +} + + +# Make wrapper scripts around gcc, g++, and gfortran. Also make symlinks +# cc, c++, and f77. +mkGccWrapper() { + local dst=$1 + local src=$2 + + if ! test -f "$src"; then + echo "$src does not exist (skipping)" + return 1 + fi + + gccProg="$src" + doSubstitute "$gccWrapper" "$dst" + chmod +x "$dst" +} + +mkGnatWrapper() { + local dst=$1 + local src=$2 + + if ! test -f "$src"; then + echo "$src does not exist (skipping)" + return 1 + fi + + gnatProg="$src" + doSubstitute "$gnatWrapper" "$dst" + chmod +x "$dst" +} + +mkGnatLinkWrapper() { + local dst=$1 + local src=$2 + + if ! test -f "$src"; then + echo "$src does not exist (skipping)" + return 1 + fi + + gnatlinkProg="$src" + doSubstitute "$gnatlinkWrapper" "$dst" + chmod +x "$dst" +} + +if mkGccWrapper $out/bin/gcc $gccPath/gcc +then + ln -sv gcc $out/bin/cc +fi + +if mkGccWrapper $out/bin/g++ $gccPath/g++ +then + ln -sv g++ $out/bin/c++ +fi + +if mkGccWrapper $out/bin/gfortran $gccPath/gfortran +then + ln -sv gfortran $out/bin/g77 + ln -sv gfortran $out/bin/f77 +fi + +mkGccWrapper $out/bin/gcj $gccPath/gcj || true + +mkGccWrapper $out/bin/gnatgcc $gccPath/gnatgcc || true +mkGnatWrapper $out/bin/gnatmake $gccPath/gnatmake || true +mkGnatWrapper $out/bin/gnatbind $gccPath/gnatbind || true +mkGnatLinkWrapper $out/bin/gnatlink $gccPath/gnatlink || true + +# Create a symlink to as (the assembler). This is useful when a +# gcc-wrapper is installed in a user environment, as it ensures that +# the right assembler is called. +ln -s $ldPath/as $out/bin/as + + +# Make a wrapper around the linker. +doSubstitute "$ldWrapper" "$out/bin/ld" +chmod +x "$out/bin/ld" + + +# Emit a setup hook. Also store the path to the original GCC and +# Glibc. +test -n "$gcc" && echo $gcc > $out/nix-support/orig-gcc +test -n "$libc" && echo $libc > $out/nix-support/orig-libc + +doSubstitute "$addFlags" "$out/nix-support/add-flags.sh" + +doSubstitute "$setupHook" "$out/nix-support/setup-hook" + +cp -p $utils $out/nix-support/utils.sh + + +# Propagate the wrapped gcc so that if you install the wrapper, you get +# tools like gcov, the manpages, etc. as well (including for binutils +# and Glibc). +if test -z "$nativeTools"; then + echo $gcc $binutils $libc > $out/nix-support/propagated-user-env-packages +fi diff --git a/pkgs/build-support/gnat-wrapper/default.nix b/pkgs/build-support/gnat-wrapper/default.nix new file mode 100644 index 00000000000..700de9d20f4 --- /dev/null +++ b/pkgs/build-support/gnat-wrapper/default.nix @@ -0,0 +1,66 @@ +# The Nix `gcc' stdenv.mkDerivation is not directly usable, since it doesn't +# know where the C library and standard header files are. Therefore +# the compiler produced by that package cannot be installed directly +# in a user environment and used from the command line. This +# stdenv.mkDerivation provides a wrapper that sets up the right environment +# variables so that the compiler and the linker just "work". + +{ name ? "", stdenv, nativeTools, nativeLibc, nativePrefix ? "" +, gcc ? null, libc ? null, binutils ? null, coreutils ? null, shell ? "" +}: + +assert nativeTools -> nativePrefix != ""; +assert !nativeTools -> gcc != null && binutils != null && coreutils != null; +assert !nativeLibc -> libc != null; + +let + + gccVersion = (builtins.parseDrvName gcc.name).version; + gccName = (builtins.parseDrvName gcc.name).name; + +in + +stdenv.mkDerivation { + name = + (if name != "" then name else gccName + "-wrapper") + + (if gcc != null && gccVersion != "" then "-" + gccVersion else ""); + + builder = ./builder.sh; + setupHook = ./setup-hook.sh; + gccWrapper = ./gcc-wrapper.sh; + gnatWrapper = ./gnat-wrapper.sh; + gnatlinkWrapper = ./gnatlink-wrapper.sh; + ldWrapper = ./ld-wrapper.sh; + utils = ./utils.sh; + addFlags = ./add-flags; + + inherit nativeTools nativeLibc nativePrefix gcc; + libc = if nativeLibc then null else libc; + binutils = if nativeTools then null else binutils; + # The wrapper scripts use 'cat', so we may need coreutils + coreutils = if nativeTools then null else coreutils; + + langC = if nativeTools then true else gcc.langC; + langCC = if nativeTools then true else gcc.langCC; + langFortran = if nativeTools then false else gcc ? langFortran; + langAda = if nativeTools then false else gcc ? langAda; + shell = if shell == "" then stdenv.shell else shell; + + meta = + let gcc_ = if gcc != null then gcc else {}; in + (if gcc_ ? meta then removeAttrs gcc.meta ["priority"] else {}) // + { description = + stdenv.lib.attrByPath ["meta" "description"] "System C compiler" gcc_ + + " (wrapper script)"; + }; + + # The dynamic linker has different names on different Linux platforms. + dynamicLinker = + if !nativeLibc then + (if stdenv.system == "i686-linux" then "ld-linux.so.2" else + if stdenv.system == "x86_64-linux" then "ld-linux-x86-64.so.2" else + if stdenv.system == "armv5tel-linux" then "ld-linux.so.3" else + if stdenv.system == "powerpc-linux" then "ld.so.1" else + abort "don't know the name of the dynamic linker for this platform") + else ""; +} diff --git a/pkgs/build-support/gnat-wrapper/gcc-wrapper.sh b/pkgs/build-support/gnat-wrapper/gcc-wrapper.sh new file mode 100644 index 00000000000..8a49fcb9b06 --- /dev/null +++ b/pkgs/build-support/gnat-wrapper/gcc-wrapper.sh @@ -0,0 +1,148 @@ +#! @shell@ -e + +if test -n "$NIX_GCC_WRAPPER_START_HOOK"; then + source "$NIX_GCC_WRAPPER_START_HOOK" +fi + +if test -z "$NIX_GCC_WRAPPER_FLAGS_SET"; then + source @out@/nix-support/add-flags.sh +fi + +source @out@/nix-support/utils.sh + + +# Figure out if linker flags should be passed. GCC prints annoying +# warnings when they are not needed. +dontLink=0 +getVersion=0 +nonFlagArgs=0 + +for i in "$@"; do + if test "$i" = "-c"; then + dontLink=1 + elif test "$i" = "-S"; then + dontLink=1 + elif test "$i" = "-E"; then + dontLink=1 + elif test "$i" = "-E"; then + dontLink=1 + elif test "$i" = "-M"; then + dontLink=1 + elif test "$i" = "-MM"; then + dontLink=1 + elif test "${i:0:1}" != "-"; then + nonFlagArgs=1 + elif test "$i" = "-m32"; then + if test -e @out@/nix-support/dynamic-linker-m32; then + NIX_LDFLAGS="$NIX_LDFLAGS -dynamic-linker $(cat @out@/nix-support/dynamic-linker-m32)" + fi + fi +done + +# If we pass a flag like -Wl, then gcc will call the linker unless it +# can figure out that it has to do something else (e.g., because of a +# "-c" flag). So if no non-flag arguments are given, don't pass any +# linker flags. This catches cases like "gcc" (should just print +# "gcc: no input files") and "gcc -v" (should print the version). +if test "$nonFlagArgs" = "0"; then + dontLink=1 +fi + + +# Optionally filter out paths not refering to the store. +params=("$@") +if test "$NIX_ENFORCE_PURITY" = "1" -a -n "$NIX_STORE"; then + rest=() + n=0 + while test $n -lt ${#params[*]}; do + p=${params[n]} + p2=${params[$((n+1))]} + if test "${p:0:3}" = "-L/" && badPath "${p:2}"; then + skip $p + elif test "$p" = "-L" && badPath "$p2"; then + n=$((n + 1)); skip $p2 + elif test "${p:0:3}" = "-I/" && badPath "${p:2}"; then + skip $p + elif test "$p" = "-I" && badPath "$p2"; then + n=$((n + 1)); skip $p2 + elif test "$p" = "-isystem" && badPath "$p2"; then + n=$((n + 1)); skip $p2 + else + rest=("${rest[@]}" "$p") + fi + n=$((n + 1)) + done + params=("${rest[@]}") +fi + + +# Add the flags for the C compiler proper. +extraAfter=($NIX_CFLAGS_COMPILE) +extraBefore=() + +if test "$dontLink" != "1"; then + + # Add the flags that should only be passed to the compiler when + # linking. + extraAfter=(${extraAfter[@]} $NIX_CFLAGS_LINK) + + # Add the flags that should be passed to the linker (and prevent + # `ld-wrapper' from adding NIX_LDFLAGS again). + for i in $NIX_LDFLAGS_BEFORE; do + extraBefore=(${extraBefore[@]} "-Wl,$i") + done + for i in $NIX_LDFLAGS; do + if test "${i:0:3}" = "-L/"; then + extraAfter=(${extraAfter[@]} "$i") + else + extraAfter=(${extraAfter[@]} "-Wl,$i") + fi + done + export NIX_LDFLAGS_SET=1 + + if test "$NIX_STRIP_DEBUG" = "1"; then + # Add executable-stripping flags. + extraAfter=(${extraAfter[@]} $NIX_CFLAGS_STRIP) + fi +fi + +# As a very special hack, if the arguments are just `-v', then don't +# add anything. This is to prevent `gcc -v' (which normally prints +# out the version number and returns exit code 0) from printing out +# `No input files specified' and returning exit code 1. +if test "$*" = "-v"; then + extraAfter=() + extraBefore=() +fi + +# Optionally print debug info. +if test "$NIX_DEBUG" = "1"; then + echo "original flags to @gccProg@:" >&2 + for i in "${params[@]}"; do + echo " $i" >&2 + done + echo "extraBefore flags to @gccProg@:" >&2 + for i in ${extraBefore[@]}; do + echo " $i" >&2 + done + echo "extraAfter flags to @gccProg@:" >&2 + for i in ${extraAfter[@]}; do + echo " $i" >&2 + done +fi + +if test -n "$NIX_GCC_WRAPPER_EXEC_HOOK"; then + source "$NIX_GCC_WRAPPER_EXEC_HOOK" +fi + + +# Call the real `gcc'. Filter out warnings from stderr about unused +# `-B' flags, since they confuse some programs. Deep bash magic to +# apply grep to stderr (by swapping stdin/stderr twice). +if test -z "$NIX_GCC_NEEDS_GREP"; then + @gccProg@ ${extraBefore[@]} "${params[@]}" ${extraAfter[@]} +else + (@gccProg@ ${extraBefore[@]} "${params[@]}" ${extraAfter[@]} 3>&2 2>&1 1>&3- \ + | (grep -v 'file path prefix' || true); exit ${PIPESTATUS[0]}) 3>&2 2>&1 1>&3- + exit $? +fi diff --git a/pkgs/build-support/gnat-wrapper/gnat-wrapper.sh b/pkgs/build-support/gnat-wrapper/gnat-wrapper.sh new file mode 100644 index 00000000000..f6fa4b18400 --- /dev/null +++ b/pkgs/build-support/gnat-wrapper/gnat-wrapper.sh @@ -0,0 +1,113 @@ +#! @shell@ -e + +if test -n "$NIX_GNAT_WRAPPER_START_HOOK"; then + source "$NIX_GNAT_WRAPPER_START_HOOK" +fi + +if test -z "$NIX_GNAT_WRAPPER_FLAGS_SET"; then + source @out@/nix-support/add-flags.sh +fi + +source @out@/nix-support/utils.sh + + +# Figure out if linker flags should be passed. GCC prints annoying +# warnings when they are not needed. +dontLink=0 +getVersion=0 +nonFlagArgs=0 + +for i in "$@"; do + if test "$i" = "-c"; then + dontLink=1 + elif test "$i" = "-M"; then + dontLink=1 + elif test "${i:0:1}" != "-"; then + nonFlagArgs=1 + elif test "$i" = "-m32"; then + if test -e @out@/nix-support/dynamic-linker-m32; then + NIX_LDFLAGS="$NIX_LDFLAGS -dynamic-linker $(cat @out@/nix-support/dynamic-linker-m32)" + fi + fi +done + +# If we pass a flag like -Wl, then gcc will call the linker unless it +# can figure out that it has to do something else (e.g., because of a +# "-c" flag). So if no non-flag arguments are given, don't pass any +# linker flags. This catches cases like "gcc" (should just print +# "gcc: no input files") and "gcc -v" (should print the version). +if test "$nonFlagArgs" = "0"; then + dontLink=1 +fi + + +# Optionally filter out paths not refering to the store. +params=("$@") +if test "$NIX_ENFORCE_PURITY" = "1" -a -n "$NIX_STORE"; then + rest=() + n=0 + while test $n -lt ${#params[*]}; do + p=${params[n]} + p2=${params[$((n+1))]} + if test "${p:0:3}" = "-L/" && badPath "${p:2}"; then + skip $p + elif test "${p:0:3}" = "-I/" && badPath "${p:2}"; then + skip $p + elif test "${p:0:4}" = "-aI/" && badPath "${p:3}"; then + skip $p + elif test "${p:0:4}" = "-aO/" && badPath "${p:3}"; then + skip $p + else + rest=("${rest[@]}" "$p") + fi + n=$((n + 1)) + done + params=("${rest[@]}") +fi + + +# Add the flags for the GNAT compiler proper. +extraAfter=($NIX_GNATFLAGS_COMPILE) +extraBefore=() + +if [ "`basename $0`x" = "gnatmakex" ]; then + extraBefore=("--GNATBIND=@out@/bin/gnatbind --GNATLINK=@out@/bin/gnatlink ") +fi + +# Add the flags that should be passed to the linker (and prevent +# `ld-wrapper' from adding NIX_LDFLAGS again). +#for i in $NIX_LDFLAGS_BEFORE; do +# extraBefore=(${extraBefore[@]} "-largs $i") +#done + +# Optionally print debug info. +if test "$NIX_DEBUG" = "1"; then + echo "original flags to @gnatProg@:" >&2 + for i in "${params[@]}"; do + echo " $i" >&2 + done + echo "extraBefore flags to @gnatProg@:" >&2 + for i in ${extraBefore[@]}; do + echo " $i" >&2 + done + echo "extraAfter flags to @gnatProg@:" >&2 + for i in ${extraAfter[@]}; do + echo " $i" >&2 + done +fi + +if test -n "$NIX_GNAT_WRAPPER_EXEC_HOOK"; then + source "$NIX_GNAT_WRAPPER_EXEC_HOOK" +fi + + +# Call the real `gcc'. Filter out warnings from stderr about unused +# `-B' flags, since they confuse some programs. Deep bash magic to +# apply grep to stderr (by swapping stdin/stderr twice). +if test -z "$NIX_GNAT_NEEDS_GREP"; then + @gnatProg@ ${extraBefore[@]} "${params[@]}" ${extraAfter[@]} +else + (@gnatProg@ ${extraBefore[@]} "${params[@]}" ${extraAfter[@]} 3>&2 2>&1 1>&3- \ + | (grep -v 'file path prefix' || true); exit ${PIPESTATUS[0]}) 3>&2 2>&1 1>&3- + exit $? +fi diff --git a/pkgs/build-support/gnat-wrapper/gnatlink-wrapper.sh b/pkgs/build-support/gnat-wrapper/gnatlink-wrapper.sh new file mode 100644 index 00000000000..850ba0f8348 --- /dev/null +++ b/pkgs/build-support/gnat-wrapper/gnatlink-wrapper.sh @@ -0,0 +1,43 @@ +#! @shell@ -e + +# Add the flags for the GNAT compiler proper. +extraAfter="--GCC=@out@/bin/gnatgcc" +extraBefore=() + +# Add the flags that should be passed to the linker (and prevent +# `ld-wrapper' from adding NIX_LDFLAGS again). +#for i in $NIX_LDFLAGS_BEFORE; do +# extraBefore=(${extraBefore[@]} "-largs $i") +#done + +# Optionally print debug info. +if test "$NIX_DEBUG" = "1"; then + echo "original flags to @gnatlinkProg@:" >&2 + for i in "$@"; do + echo " $i" >&2 + done + echo "extraBefore flags to @gnatlinkProg@:" >&2 + for i in ${extraBefore[@]}; do + echo " $i" >&2 + done + echo "extraAfter flags to @gnatlinkProg@:" >&2 + for i in ${extraAfter[@]}; do + echo " $i" >&2 + done +fi + +if test -n "$NIX_GNAT_WRAPPER_EXEC_HOOK"; then + source "$NIX_GNAT_WRAPPER_EXEC_HOOK" +fi + + +# Call the real `gcc'. Filter out warnings from stderr about unused +# `-B' flags, since they confuse some programs. Deep bash magic to +# apply grep to stderr (by swapping stdin/stderr twice). +if test -z "$NIX_GNAT_NEEDS_GREP"; then + @gnatlinkProg@ ${extraBefore[@]} "$@" ${extraAfter[@]} +else + (@gnatlinkProg@ ${extraBefore[@]} "$@" ${extraAfter[@]} 3>&2 2>&1 1>&3- \ + | (grep -v 'file path prefix' || true); exit ${PIPESTATUS[0]}) 3>&2 2>&1 1>&3- + exit $? +fi diff --git a/pkgs/build-support/gnat-wrapper/ld-wrapper.sh b/pkgs/build-support/gnat-wrapper/ld-wrapper.sh new file mode 100644 index 00000000000..bf3c2620f29 --- /dev/null +++ b/pkgs/build-support/gnat-wrapper/ld-wrapper.sh @@ -0,0 +1,155 @@ +#! @shell@ -e + +if test -n "$NIX_LD_WRAPPER_START_HOOK"; then + source "$NIX_LD_WRAPPER_START_HOOK" +fi + +if test -z "$NIX_GCC_WRAPPER_FLAGS_SET"; then + source @out@/nix-support/add-flags.sh +fi + +source @out@/nix-support/utils.sh + + +# Optionally filter out paths not refering to the store. +params=("$@") +if test "$NIX_ENFORCE_PURITY" = "1" -a -n "$NIX_STORE" \ + -a \( -z "$NIX_IGNORE_LD_THROUGH_GCC" -o -z "$NIX_LDFLAGS_SET" \); then + rest=() + n=0 + while test $n -lt ${#params[*]}; do + p=${params[n]} + p2=${params[$((n+1))]} + if test "${p:0:3}" = "-L/" && badPath "${p:2}"; then + skip $p + elif test "$p" = "-L" && badPath "$p2"; then + n=$((n + 1)); skip $p2 + elif test "$p" = "-rpath" && badPath "$p2"; then + n=$((n + 1)); skip $p2 + elif test "$p" = "-dynamic-linker" && badPath "$p2"; then + n=$((n + 1)); skip $p2 + elif test "${p:0:1}" = "/" && badPath "$p"; then + # We cannot skip this; barf. + echo "impure path \`$p' used in link" >&2 + exit 1 + else + rest=("${rest[@]}" "$p") + fi + n=$((n + 1)) + done + params=("${rest[@]}") +fi + + +extra=() +extraBefore=() + +if test -z "$NIX_LDFLAGS_SET"; then + extra=(${extra[@]} $NIX_LDFLAGS) + extraBefore=(${extraBefore[@]} $NIX_LDFLAGS_BEFORE) +fi + + +# Add all used dynamic libraries to the rpath. +if test "$NIX_DONT_SET_RPATH" != "1"; then + + # First, find all -L... switches. + allParams=("${params[@]}" ${extra[@]}) + libPath="" + addToLibPath() { + local path="$1" + if test "${path:0:1}" != "/"; then return 0; fi + case "$path" in + *..*|*./*|*/.*|*//*) + local path2 + if path2=$(readlink -f "$path"); then + path="$path2" + fi + ;; + esac + case $libPath in + *\ $path\ *) return 0 ;; + esac + libPath="$libPath $path " + } + n=0 + while test $n -lt ${#allParams[*]}; do + p=${allParams[n]} + p2=${allParams[$((n+1))]} + if test "${p:0:3}" = "-L/"; then + addToLibPath ${p:2} + elif test "$p" = "-L"; then + addToLibPath ${p2} + n=$((n + 1)) + elif $(echo "$p" | grep -q '^[^-].*\.so\($\|\.\)'); then + path="$(dirname "$p")"; + addToLibPath "${path}" + fi + n=$((n + 1)) + done + + # Second, for each directory in the library search path (-L...), + # see if it contains a dynamic library used by a -l... flag. If + # so, add the directory to the rpath. + rpath="" + + addToRPath() { + # If the path is not in the store, don't add it to the rpath. + # This typically happens for libraries in /tmp that are later + # copied to $out/lib. If not, we're screwed. + if test "${1:0:${#NIX_STORE}}" != "$NIX_STORE"; then return 0; fi + case $rpath in + *\ $1\ *) return 0 ;; + esac + rpath="$rpath $1 " + } + + for i in $libPath; do + n=0 + while test $n -lt ${#allParams[*]}; do + p=${allParams[n]} + p2=${allParams[$((n+1))]} + if test "${p:0:2}" = "-l" -a -f "$i/lib${p:2}.so"; then + addToRPath $i + break + elif test "$p" = "-l" -a -f "$i/lib${p2}"; then + # I haven't seen `-l foo', but you never know... + addToRPath $i + break + elif $(echo "$p" | grep -q '^[^-].*\.so\($\|\.\)'); then + path="$(dirname "$p")"; + if test "$path" == "$i"; then + addToRPath $i + break; + fi + fi + n=$((n + 1)) + done + + done + + + # Finally, add `-rpath' switches. + for i in $rpath; do + extra=(${extra[@]} -rpath $i) + done +fi + + +# Optionally print debug info. +if test "$NIX_DEBUG" = "1"; then + echo "original flags to @ld@:" >&2 + for i in "${params[@]}"; do + echo " $i" >&2 + done + echo "extra flags to @ld@:" >&2 + for i in ${extra[@]}; do + echo " $i" >&2 + done +fi + +if test -n "$NIX_LD_WRAPPER_EXEC_HOOK"; then + source "$NIX_LD_WRAPPER_EXEC_HOOK" +fi + +exec @ld@ ${extraBefore[@]} "${params[@]}" ${extra[@]} diff --git a/pkgs/build-support/gnat-wrapper/setup-hook.sh b/pkgs/build-support/gnat-wrapper/setup-hook.sh new file mode 100644 index 00000000000..513ab8053a7 --- /dev/null +++ b/pkgs/build-support/gnat-wrapper/setup-hook.sh @@ -0,0 +1,33 @@ +addCVars () { + if test -d $1/include; then + export NIX_CFLAGS_COMPILE="$NIX_CFLAGS_COMPILE -I$1/include" + fi + + if test -d $1/lib64; then + export NIX_LDFLAGS="$NIX_LDFLAGS -L$1/lib64" + fi + + if test -d $1/lib; then + export NIX_LDFLAGS="$NIX_LDFLAGS -L$1/lib" + fi +} + +envHooks=(${envHooks[@]} addCVars) + +# Note: these come *after* $out in the PATH (see setup.sh). + +if test -n "@gcc@"; then + addToSearchPath PATH @gcc@/bin +fi + +if test -n "@binutils@"; then + addToSearchPath PATH @binutils@/bin +fi + +if test -n "@libc@"; then + addToSearchPath PATH @libc@/bin +fi + +if test -n "@coreutils@"; then + addToSearchPath PATH @coreutils@/bin +fi diff --git a/pkgs/build-support/gnat-wrapper/utils.sh b/pkgs/build-support/gnat-wrapper/utils.sh new file mode 100644 index 00000000000..9a664e1d1e6 --- /dev/null +++ b/pkgs/build-support/gnat-wrapper/utils.sh @@ -0,0 +1,23 @@ +skip () { + if test "$NIX_DEBUG" = "1"; then + echo "skipping impure path $1" >&2 + fi +} + + +# Checks whether a path is impure. E.g., `/lib/foo.so' is impure, but +# `/nix/store/.../lib/foo.so' isn't. +badPath() { + local p=$1 + + # Relative paths are okay (since they're presumably relative to + # the temporary build directory). + if test "${p:0:1}" != "/"; then return 1; fi + + # Otherwise, the path should refer to the store or some temporary + # directory (including the build directory). + test \ + "${p:0:${#NIX_STORE}}" != "$NIX_STORE" -a \ + "${p:0:4}" != "/tmp" -a \ + "${p:0:${#NIX_BUILD_TOP}}" != "$NIX_BUILD_TOP" +} diff --git a/pkgs/development/compilers/gcc-4.4/default.nix b/pkgs/development/compilers/gcc-4.4/default.nix index fef453e4493..26140ab6ae2 100644 --- a/pkgs/development/compilers/gcc-4.4/default.nix +++ b/pkgs/development/compilers/gcc-4.4/default.nix @@ -1,6 +1,7 @@ { stdenv, fetchurl, noSysDirs , langC ? true, langCC ? true, langFortran ? false, langTreelang ? false , langJava ? false +, langAda ? false , profiledCompiler ? false , staticCompiler ? false , enableShared ? true @@ -13,6 +14,7 @@ , libX11 ? null, libXt ? null, libSM ? null, libICE ? null, libXtst ? null , libXrender ? null, xproto ? null, renderproto ? null, xextproto ? null , libXrandr ? null, libXi ? null, inputproto ? null, randrproto ? null +, gnatboot ? null , enableMultilib ? false , name ? "gcc" , cross ? null @@ -24,6 +26,7 @@ assert langTreelang -> bison != null && flex != null; assert langJava -> zip != null && unzip != null && zlib != null && boehmgc != null; +assert langAda -> gnatboot != null; with stdenv.lib; @@ -83,7 +86,7 @@ stdenv.mkDerivation ({ src = (import ./sources.nix) { inherit fetchurl optional version; - inherit langC langCC langFortran langJava; + inherit langC langCC langFortran langJava langAda; }; patches = @@ -97,7 +100,10 @@ stdenv.mkDerivation ({ # (fixed in gcc 4.4.3) bad mixture of build/target flags ./libstdc++-target.patch ] - ++ optional noSysDirs ./no-sys-dirs.patch; + ++ optional noSysDirs ./no-sys-dirs.patch + # The GNAT Makefiles did not pay attention to CFLAGS_FOR_TARGET for its + # target libraries and tools. + ++ optional langAda ./gnat-cflags.patch; inherit noSysDirs profiledCompiler staticCompiler langJava crossStageStatic libcCross; @@ -111,6 +117,7 @@ stdenv.mkDerivation ({ ++ (optionals langJava [zip unzip]) ++ (optionals javaAwtGtk [gtk pkgconfig libart_lgpl] ++ xlibs) ++ (optionals (cross != null) [binutilsCross]) + ++ (optionals langAda [gnatboot]) ; configureFlags = " @@ -133,9 +140,11 @@ stdenv.mkDerivation ({ ++ optional langFortran "fortran" ++ optional langJava "java" ++ optional langTreelang "treelang" + ++ optional langAda "ada" ) ) } + ${if langAda then " --enable-libada" else ""} ${if stdenv.isi686 then "--with-arch=i686" else ""} ${if cross != null then crossConfigureFlags else ""} "; @@ -169,7 +178,7 @@ stdenv.mkDerivation ({ ++ optionals javaAwtGtk [ gmp mpfr ]))); - passthru = { inherit langC langCC langFortran langTreelang enableMultilib; }; + passthru = { inherit langC langCC langAda langFortran langTreelang enableMultilib; }; meta = { homepage = http://gcc.gnu.org/; diff --git a/pkgs/development/compilers/gcc-4.4/sources.nix b/pkgs/development/compilers/gcc-4.4/sources.nix index 54cf14749bf..6da3d48e941 100644 --- a/pkgs/development/compilers/gcc-4.4/sources.nix +++ b/pkgs/development/compilers/gcc-4.4/sources.nix @@ -1,6 +1,6 @@ /* Automatically generated by `update-gcc.sh', do not edit. For GCC 4.4.2. */ -{ fetchurl, optional, version, langC, langCC, langFortran, langJava }: +{ fetchurl, optional, version, langC, langCC, langFortran, langJava, langAda }: assert version == "4.4.2"; optional /* langC */ true (fetchurl { @@ -19,4 +19,8 @@ optional langJava (fetchurl { url = "mirror://gcc/releases/gcc-${version}/gcc-java-${version}.tar.bz2"; sha256 = "0ydk0qyhi1fdyz2xvj6m6l7cav4wg3962a1jxpf2j3nppm0p1dvp"; }) ++ +optional langAda (fetchurl { + url = "mirror://gcc/releases/gcc-${version}/gcc-ada-${version}.tar.bz2"; + sha256 = "1isz90b772j7ar5d4265fxzwiwgljssi0kpmrkybsj545615s0wi"; +}) ++ [] diff --git a/pkgs/development/compilers/gnatboot/default.nix b/pkgs/development/compilers/gnatboot/default.nix new file mode 100644 index 00000000000..1637cf5f927 --- /dev/null +++ b/pkgs/development/compilers/gnatboot/default.nix @@ -0,0 +1,50 @@ +{stdenv, fetchurl}: + +stdenv.mkDerivation { + name = "gentoo-gnatboot-4.1"; + + src = if (stdenv.system == "i686-linux") then + fetchurl { + url = "mirror://gentoo/distfiles/gnatboot-4.1-i386.tar.bz2"; + sha256 = "0665zk71598204bf521vw68i5y6ccqarq9fcxsqp7ccgycb4lysr"; + } + else if (stdenv.system == "x86_64-linux") then + fetchurl { + url = "mirror://gentoo/distfiles/gnatboot-4.1-amd64.tar.bz2"; + sha256 = "1li4d52lmbnfs6llcshlbqyik2q2q4bvpir0f7n38nagp0h6j0d4"; + } else throw "Platform not supported"; + + dontStrip=1; + + installPhase = '' + ensureDir $out + cp -R * $out + cd $out/bin + set +e + for a in *; do + patchelf --interpreter $(cat $NIX_GCC/nix-support/dynamic-linker) \ + --set-rpath $(cat $NIX_GCC/nix-support/orig-libc)/lib:$(cat + $NIX_GCC/nix-support/orig-gcc) $a + done + set -e + mv $out/bin/gnatgcc_2wrap $out/bin/gnatgcc + ln -s $out/bin/gnatgcc $out/bin/gcc + ''; + + passthru = { + langC = true; /* TRICK for gcc-wrapper to wrap it */ + langCC = false; + langFortran = false; + langAda = true; + }; + + meta = { + homepage = http://gentoo.org; + license = "GPLv3+"; # runtime support libraries are typically LGPLv3+ + maintainers = [ + stdenv.lib.maintainers.viric + ]; + + platforms = stdenv.lib.platforms.linux; + }; +} diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 93d7cad5d35..b6bdc36b75c 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -1852,6 +1852,13 @@ let profiledCompiler = true; })); + gcc44_real2 = lowPrio (wrapGCC (makeOverridable (import + ../development/compilers/gcc-4.4-copy) { + inherit fetchurl stdenv texinfo gmp mpfr ppl cloogppl + gettext which noSysDirs; + profiledCompiler = true; + })); + gccApple = wrapGCC ( (if stdenv.system == "i686-darwin" then import ../development/compilers/gcc-apple else import ../development/compilers/gcc-apple64) { inherit fetchurl stdenv noSysDirs; @@ -1920,6 +1927,25 @@ let libXrandr xproto renderproto xextproto inputproto randrproto; }); + gnat = gnat44; + + gnat44 = wrapGNAT (gcc44_real2.gcc.override { + name = "gnat"; + langCC = false; + langC = true; + langAda = true; + profiledCompiler = false; + inherit gnatboot; + # We can't use the ppl stuff, because we would have + # libstdc++ problems. + cloogppl = null; + ppl = null; + }); + + gnatboot = wrapGNAT (import ../development/compilers/gnatboot { + inherit fetchurl stdenv; + }); + /* Broken; fails because of unability to find its own symbols during linking @@ -2272,6 +2298,7 @@ let }; wrapGCC = wrapGCCWith (import ../build-support/gcc-wrapper) glibc; + wrapGNAT = wrapGCCWith (import ../build-support/gnat-wrapper) glibc; wrapGCCCross = {gcc, libc, binutils, cross, shell ? "", name ? "gcc-cross-wrapper"}: @@ -8282,6 +8309,10 @@ let inherit fetchurl stdenv readline; }; + ghdl = import ../applications/science/electronics/ghdl { + inherit fetchurl stdenv; + gnat = gnatboot; + }; ### SCIENCE / MATH From 7ab9bff48aab6baf3c3f601f25ba29a0ddbb13be Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Llu=C3=ADs=20Batlle=20i=20Rossell?= Date: Mon, 21 Dec 2009 07:49:59 +0000 Subject: [PATCH 117/232] I forgot a gcc flag in the last commit. svn path=/nixpkgs/branches/stdenv-updates/; revision=19061 --- .../compilers/gcc-4.4/gnat-cflags.patch | 33 +++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 pkgs/development/compilers/gcc-4.4/gnat-cflags.patch diff --git a/pkgs/development/compilers/gcc-4.4/gnat-cflags.patch b/pkgs/development/compilers/gcc-4.4/gnat-cflags.patch new file mode 100644 index 00000000000..8e7c40778fc --- /dev/null +++ b/pkgs/development/compilers/gcc-4.4/gnat-cflags.patch @@ -0,0 +1,33 @@ +diff --git a/libada/Makefile.in b/libada/Makefile.in +index f5057a0..337e0c6 100644 +--- a/libada/Makefile.in ++++ b/libada/Makefile.in +@@ -55,7 +55,7 @@ GCC_WARN_CFLAGS = $(LOOSE_WARN) + WARN_CFLAGS = @warn_cflags@ + + TARGET_LIBGCC2_CFLAGS= +-GNATLIBCFLAGS= -g -O2 ++GNATLIBCFLAGS= -g -O2 $(CFLAGS) + + # Get target-specific overrides for TARGET_LIBGCC2_CFLAGS. + host_subdir = @host_subdir@ +--- a/gcc/ada/gcc-interface/Makefile.in ++++ b/gcc/ada/gcc-interface/Makefile.in +@@ -105,7 +105,7 @@ ADAFLAGS = -W -Wall -gnatpg -gnata + SOME_ADAFLAGS =-gnata + FORCE_DEBUG_ADAFLAGS = -g + GNATLIBFLAGS = -gnatpg -nostdinc +-GNATLIBCFLAGS = -g -O2 ++GNATLIBCFLAGS = -g -O2 $(CFLAGS_FOR_TARGET) + GNATLIBCFLAGS_FOR_C = $(GNATLIBCFLAGS) $(TARGET_LIBGCC2_CFLAGS) -fexceptions \ + -DIN_RTS + ALL_ADAFLAGS = $(CFLAGS) $(ADA_CFLAGS) $(ADAFLAGS) +@@ -1838,7 +1838,7 @@ ADA_INCLUDE_SRCS =\ + + LIBGNAT=../$(RTSDIR)/libgnat.a + +-GCC_LINK=$(CC) -static-libgcc $(ADA_INCLUDES) ++GCC_LINK=$(CC) -static-libgcc $(CFLAGS_FOR_TARGET) $(ADA_INCLUDES) + + # when compiling the tools, the runtime has to be first on the path so that + # it hides the runtime files lying with the rest of the sources From 8a0a76f5e6e7223af269cb3543205e115ac993bb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Llu=C3=ADs=20Batlle=20i=20Rossell?= Date: Mon, 21 Dec 2009 08:03:30 +0000 Subject: [PATCH 118/232] In a recent commit I made references to path out of the svn tree, which broke the evaluation of nixpkgs. I also tried to make the gnat wrapper friendly to any gnat installation, not only gnatboot. svn path=/nixpkgs/branches/stdenv-updates/; revision=19062 --- pkgs/build-support/gnat-wrapper/builder.sh | 5 +++-- pkgs/build-support/gnat-wrapper/gnatlink-wrapper.sh | 2 +- pkgs/top-level/all-packages.nix | 13 +++---------- 3 files changed, 7 insertions(+), 13 deletions(-) diff --git a/pkgs/build-support/gnat-wrapper/builder.sh b/pkgs/build-support/gnat-wrapper/builder.sh index 9befd517439..e416766db66 100644 --- a/pkgs/build-support/gnat-wrapper/builder.sh +++ b/pkgs/build-support/gnat-wrapper/builder.sh @@ -51,10 +51,11 @@ else if test -e "$gcc/lib64"; then gccCFlags="$gccCFlags -B$gcc/lib64" fi - gccCFlags="$gccCFlags -B$gcc/lib/gnatgcc/x86_64-pc-linux-gnu/4.1/ -I$gcc/lib/gnatgcc/x86_64-pc-linux-gnu/4.1/adainclude" + basePath=`echo $gcc/lib/*/*/*` + gccCFlags="$gccCFlags -B$basePath -I$basePath/adainclude" echo "$gccCFlags" > $out/nix-support/gcc-cflags - gnatCFlags="-aI$gcc/lib/gnatgcc/x86_64-pc-linux-gnu/4.1/adainclude -aO$gcc/lib/gnatgcc/x86_64-pc-linux-gnu/4.1/adalib" + gnatCFlags="-aI$basePath/adainclude -aO$basePath/adalib" echo "$gnatCFlags" > $out/nix-support/gnat-cflags gccPath="$gcc/bin" diff --git a/pkgs/build-support/gnat-wrapper/gnatlink-wrapper.sh b/pkgs/build-support/gnat-wrapper/gnatlink-wrapper.sh index 850ba0f8348..25907108b4d 100644 --- a/pkgs/build-support/gnat-wrapper/gnatlink-wrapper.sh +++ b/pkgs/build-support/gnat-wrapper/gnatlink-wrapper.sh @@ -1,7 +1,7 @@ #! @shell@ -e # Add the flags for the GNAT compiler proper. -extraAfter="--GCC=@out@/bin/gnatgcc" +extraAfter="--GCC=@out@/bin/gcc" extraBefore=() # Add the flags that should be passed to the linker (and prevent diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index b6bdc36b75c..11e50098945 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -1852,13 +1852,6 @@ let profiledCompiler = true; })); - gcc44_real2 = lowPrio (wrapGCC (makeOverridable (import - ../development/compilers/gcc-4.4-copy) { - inherit fetchurl stdenv texinfo gmp mpfr ppl cloogppl - gettext which noSysDirs; - profiledCompiler = true; - })); - gccApple = wrapGCC ( (if stdenv.system == "i686-darwin" then import ../development/compilers/gcc-apple else import ../development/compilers/gcc-apple64) { inherit fetchurl stdenv noSysDirs; @@ -1929,7 +1922,7 @@ let gnat = gnat44; - gnat44 = wrapGNAT (gcc44_real2.gcc.override { + gnat44 = wrapGNAT (gcc44_real.gcc.override { name = "gnat"; langCC = false; langC = true; @@ -8310,8 +8303,8 @@ let }; ghdl = import ../applications/science/electronics/ghdl { - inherit fetchurl stdenv; - gnat = gnatboot; + inherit fetchurl stdenv gnat; + gccSrc = gcc43.gcc.src; }; ### SCIENCE / MATH From fac9a5c936b258a865e7d36198ca600b92e92acb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= Date: Mon, 21 Dec 2009 14:04:45 +0000 Subject: [PATCH 119/232] Replace `kernelHeaders' by `linuxHeaders'. svn path=/nixpkgs/branches/stdenv-updates/; revision=19067 --- pkgs/os-specific/linux/autofs/autofs-v5.nix | 2 +- .../linux/cpufrequtils/default.nix | 4 +- pkgs/os-specific/linux/iputils/default.nix | 4 +- pkgs/os-specific/linux/klibc/1.5.nix | 4 +- pkgs/os-specific/linux/klibc/default.nix | 4 +- pkgs/os-specific/linux/kvm/76.nix | 4 +- pkgs/os-specific/linux/kvm/86.nix | 2 +- pkgs/os-specific/linux/kvm/88.nix | 2 +- pkgs/os-specific/linux/uclibc/default.nix | 6 +- .../linux/uml-utilities/default.nix | 4 +- pkgs/top-level/all-packages.nix | 60 ++++++++++--------- 11 files changed, 51 insertions(+), 45 deletions(-) diff --git a/pkgs/os-specific/linux/autofs/autofs-v5.nix b/pkgs/os-specific/linux/autofs/autofs-v5.nix index 92e269306ab..7941f443293 100644 --- a/pkgs/os-specific/linux/autofs/autofs-v5.nix +++ b/pkgs/os-specific/linux/autofs/autofs-v5.nix @@ -35,7 +35,7 @@ stdenv.mkDerivation { #make install SUBDIRS="samples" # impure! ''; - buildInputs = [flex bison kernelHeaders]; + buildInputs = [flex bison linuxHeaders]; meta = { description="Kernel based automounter"; diff --git a/pkgs/os-specific/linux/cpufrequtils/default.nix b/pkgs/os-specific/linux/cpufrequtils/default.nix index cdf06103f68..b810db2c1b5 100644 --- a/pkgs/os-specific/linux/cpufrequtils/default.nix +++ b/pkgs/os-specific/linux/cpufrequtils/default.nix @@ -1,4 +1,4 @@ -{stdenv, fetchurl, kernelHeaders, glibc, libtool, gettext}: +{stdenv, fetchurl, linuxHeaders, glibc, libtool, gettext}: assert stdenv.isLinux && stdenv.system != "powerpc-linux"; @@ -16,5 +16,5 @@ stdenv.mkDerivation { -i Makefile ''; - buildInputs = [ kernelHeaders glibc libtool gettext ]; + buildInputs = [ linuxHeaders glibc libtool gettext ]; } diff --git a/pkgs/os-specific/linux/iputils/default.nix b/pkgs/os-specific/linux/iputils/default.nix index 14bd1b2b323..81433a313b9 100644 --- a/pkgs/os-specific/linux/iputils/default.nix +++ b/pkgs/os-specific/linux/iputils/default.nix @@ -1,4 +1,4 @@ -{stdenv, fetchurl, kernelHeaders, glibc}: +{stdenv, fetchurl, linuxHeaders, glibc}: assert stdenv.isLinux && stdenv.system != "powerpc-linux"; @@ -10,6 +10,6 @@ stdenv.mkDerivation { md5 = "b5493f7a2997130a4f86c486c9993b86"; }; - inherit kernelHeaders glibc; + inherit linuxHeaders glibc; patches = [ ./open-max.patch ]; } diff --git a/pkgs/os-specific/linux/klibc/1.5.nix b/pkgs/os-specific/linux/klibc/1.5.nix index 3a92c2f4d29..72b9c12698b 100644 --- a/pkgs/os-specific/linux/klibc/1.5.nix +++ b/pkgs/os-specific/linux/klibc/1.5.nix @@ -1,4 +1,4 @@ -{stdenv, fetchurl, perl, bison, mktemp, kernelHeaders}: +{stdenv, fetchurl, perl, bison, mktemp, linuxHeaders}: assert stdenv.isLinux; @@ -18,7 +18,7 @@ stdenv.mkDerivation { makeFlags=$(eval "echo $makeFlags") mkdir linux - cp -prsd ${kernelHeaders}/include linux/ + cp -prsd ${linuxHeaders}/include linux/ chmod -R u+w linux/include/ ''; # */ diff --git a/pkgs/os-specific/linux/klibc/default.nix b/pkgs/os-specific/linux/klibc/default.nix index bfb76f32821..8bd911ee080 100644 --- a/pkgs/os-specific/linux/klibc/default.nix +++ b/pkgs/os-specific/linux/klibc/default.nix @@ -1,4 +1,4 @@ -{stdenv, fetchurl, perl, bison, mktemp, kernelHeaders}: +{stdenv, fetchurl, perl, bison, mktemp, linuxHeaders}: assert stdenv.isLinux; @@ -20,7 +20,7 @@ stdenv.mkDerivation { makeFlags=$(eval "echo $makeFlags") mkdir linux - cp -prsd ${kernelHeaders}/include linux/ + cp -prsd ${linuxHeaders}/include linux/ chmod -R u+w linux/include/ ''; # */ diff --git a/pkgs/os-specific/linux/kvm/76.nix b/pkgs/os-specific/linux/kvm/76.nix index e438f044c59..99d16b27a84 100644 --- a/pkgs/os-specific/linux/kvm/76.nix +++ b/pkgs/os-specific/linux/kvm/76.nix @@ -1,4 +1,4 @@ -{stdenv, fetchurl, kernelHeaders, zlib, e2fsprogs, SDL, alsaLib, pkgconfig, rsync}: +{stdenv, fetchurl, linuxHeaders, zlib, e2fsprogs, SDL, alsaLib, pkgconfig, rsync}: assert stdenv.isLinux; @@ -18,7 +18,7 @@ stdenv.mkDerivation { ./readonly-kernel-r2.patch ]; - configureFlags = "--with-patched-kernel --kerneldir=${kernelHeaders}"; + configureFlags = "--with-patched-kernel --kerneldir=${linuxHeaders}"; # e2fsprogs is needed for libuuid. # rsync is a weird dependency used for copying kernel header files. diff --git a/pkgs/os-specific/linux/kvm/86.nix b/pkgs/os-specific/linux/kvm/86.nix index 1b468385f1f..5989988d5aa 100644 --- a/pkgs/os-specific/linux/kvm/86.nix +++ b/pkgs/os-specific/linux/kvm/86.nix @@ -1,4 +1,4 @@ -{stdenv, fetchurl, kernelHeaders, zlib, SDL, alsaLib, pkgconfig, pciutils}: +{stdenv, fetchurl, linuxHeaders, zlib, SDL, alsaLib, pkgconfig, pciutils}: assert stdenv.isLinux; diff --git a/pkgs/os-specific/linux/kvm/88.nix b/pkgs/os-specific/linux/kvm/88.nix index bfbfbd8e47c..2a8a1b0ef19 100644 --- a/pkgs/os-specific/linux/kvm/88.nix +++ b/pkgs/os-specific/linux/kvm/88.nix @@ -1,4 +1,4 @@ -{stdenv, fetchurl, kernelHeaders, zlib, SDL, alsaLib, pkgconfig, pciutils}: +{stdenv, fetchurl, linuxHeaders, zlib, SDL, alsaLib, pkgconfig, pciutils}: assert stdenv.isLinux; diff --git a/pkgs/os-specific/linux/uclibc/default.nix b/pkgs/os-specific/linux/uclibc/default.nix index ea59af47382..3390469545f 100644 --- a/pkgs/os-specific/linux/uclibc/default.nix +++ b/pkgs/os-specific/linux/uclibc/default.nix @@ -1,4 +1,4 @@ -{stdenv, fetchurl, kernelHeaders, gccCross ? null}: +{stdenv, fetchurl, linuxHeaders, gccCross ? null}: assert stdenv.isLinux; @@ -33,7 +33,7 @@ stdenv.mkDerivation { configurePhase = '' make defconfig ${archMakeFlag} - sed -e s@/usr/include@${kernelHeaders}/include@ \ + sed -e s@/usr/include@${linuxHeaders}/include@ \ -e 's@^RUNTIME_PREFIX.*@RUNTIME_PREFIX="/"@' \ -e 's@^DEVEL_PREFIX.*@DEVEL_PREFIX="/"@' \ -e 's@.*UCLIBC_HAS_WCHAR.*@UCLIBC_HAS_WCHAR=y@' \ @@ -60,7 +60,7 @@ stdenv.mkDerivation { installPhase = '' mkdir -p $out make PREFIX=$out VERBOSE=1 install ${crossMakeFlag} - (cd $out/include && ln -s ${kernelHeaders}/include/* .) || exit 1 + (cd $out/include && ln -s ${linuxHeaders}/include/* .) || exit 1 sed -i s@/lib/@$out/lib/@g $out/lib/libc.so ''; diff --git a/pkgs/os-specific/linux/uml-utilities/default.nix b/pkgs/os-specific/linux/uml-utilities/default.nix index 4fb4ea55310..4ed7c6e8a3a 100644 --- a/pkgs/os-specific/linux/uml-utilities/default.nix +++ b/pkgs/os-specific/linux/uml-utilities/default.nix @@ -1,8 +1,8 @@ -{lib, stdenv, fetchurl, kernelHeaders , readline, tunctl ? false, mconsole ? false}: +{lib, stdenv, fetchurl, linuxHeaders , readline, tunctl ? false, mconsole ? false}: stdenv.mkDerivation { inherit tunctl mconsole; - buildInputs = lib.optional tunctl kernelHeaders + buildInputs = lib.optional tunctl linuxHeaders ++ lib.optional mconsole readline; name = "uml-utilities-20040114"; builder = ./builder.sh; diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 8e0aca5aa53..16d9f86e562 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -3502,48 +3502,53 @@ let glibc211); glibc25 = import ../development/libraries/glibc-2.5 { - inherit fetchurl stdenv kernelHeaders; + inherit fetchurl stdenv; + kernelHeaders = linuxHeaders; installLocales = getPkgConfig "glibc" "locales" false; }; glibc27 = import ../development/libraries/glibc-2.7 { - inherit fetchurl stdenv kernelHeaders; + inherit fetchurl stdenv; + kernelHeaders = linuxHeaders; #installLocales = false; }; glibc29 = makeOverridable (import ../development/libraries/glibc-2.9) { - inherit fetchurl stdenv kernelHeaders; + inherit fetchurl stdenv; + kernelHeaders = linuxHeaders; installLocales = getPkgConfig "glibc" "locales" false; }; glibc29Cross = cross: forceBuildDrv (makeOverridable (import ../development/libraries/glibc-2.9) { inherit stdenv fetchurl; gccCross = gccCrossStageStatic cross; - kernelHeaders = kernelHeadersCross cross; + kernelHeaders = linuxHeadersCross cross; installLocales = getPkgConfig "glibc" "locales" false; }); glibc210 = makeOverridable (import ../development/libraries/glibc-2.10) { - inherit fetchurl stdenv kernelHeaders; + inherit fetchurl stdenv; + kernelHeaders = linuxHeaders; installLocales = getPkgConfig "glibc" "locales" false; }; glibc210Cross = cross: forceBuildDrv (makeOverridable (import ../development/libraries/glibc-2.10) { inherit stdenv fetchurl; gccCross = gccCrossStageStatic cross; - kernelHeaders = kernelHeadersCross cross; + kernelHeaders = linuxHeadersCross cross; installLocales = getPkgConfig "glibc" "locales" false; }); glibc211 = makeOverridable (import ../development/libraries/glibc-2.11) { - inherit fetchurl stdenv kernelHeaders; + inherit fetchurl stdenv; + kernelHeaders = linuxHeaders; installLocales = getPkgConfig "glibc" "locales" false; }; glibc211Cross = cross : forceBuildDrv (makeOverridable (import ../development/libraries/glibc-2.11) { inherit stdenv fetchurl; gccCross = gccCrossStageStatic cross; - kernelHeaders = kernelHeadersCross cross; + kernelHeaders = linuxHeadersCross cross; installLocales = getPkgConfig "glibc" "locales" false; }); @@ -3552,7 +3557,8 @@ let # libcCross = cross: uclibcCross cross; eglibc = import ../development/libraries/eglibc { - inherit fetchsvn stdenv kernelHeaders; + inherit fetchsvn stdenv; + kernelHeaders = linuxHeaders; installLocales = getPkgConfig "glibc" "locales" false; }; @@ -5296,7 +5302,7 @@ let }; autofs5 = import ../os-specific/linux/autofs/autofs-v5.nix { - inherit sourceFromHead fetchurl stdenv flex bison kernelHeaders; + inherit sourceFromHead fetchurl stdenv flex bison linuxHeaders; }; _915resolution = import ../os-specific/linux/915resolution { @@ -5346,7 +5352,7 @@ let import ../os-specific/linux/cpufrequtils { inherit fetchurl stdenv libtool gettext; glibc = stdenv.gcc.libc; - kernelHeaders = stdenv.gcc.libc.kernelHeaders; + linuxHeaders = stdenv.gcc.libc.kernelHeaders; }); cryopid = import ../os-specific/linux/cryopid { @@ -5466,7 +5472,7 @@ let import ../os-specific/linux/iputils { inherit fetchurl stdenv; glibc = stdenv.gcc.libc; - kernelHeaders = stdenv.gcc.libc.kernelHeaders; + linuxHeaders = stdenv.gcc.libc.kernelHeaders; }); iptables = import ../os-specific/linux/iptables { @@ -5497,31 +5503,31 @@ let inherit fetchurl stdenv bison flex; }; - kernelHeaders = kernelHeaders_2_6_28; + linuxHeaders = linuxHeaders_2_6_28; - kernelHeadersCross = cross : forceBuildDrv (import ../os-specific/linux/kernel-headers/2.6.28.nix { + linuxHeadersCross = cross : forceBuildDrv (import ../os-specific/linux/kernel-headers/2.6.28.nix { inherit stdenv fetchurl cross perl; }); - kernelHeaders_2_6_18 = import ../os-specific/linux/kernel-headers/2.6.18.5.nix { + linuxHeaders_2_6_18 = import ../os-specific/linux/kernel-headers/2.6.18.5.nix { inherit fetchurl stdenv unifdef; }; - kernelHeaders_2_6_28 = import ../os-specific/linux/kernel-headers/2.6.28.nix { + linuxHeaders_2_6_28 = import ../os-specific/linux/kernel-headers/2.6.28.nix { inherit fetchurl stdenv perl; }; - kernelHeadersArm = import ../os-specific/linux/kernel-headers-cross { + linuxHeadersArm = import ../os-specific/linux/kernel-headers-cross { inherit fetchurl stdenv; cross = "arm-linux"; }; - kernelHeadersMips = import ../os-specific/linux/kernel-headers-cross { + linuxHeadersMips = import ../os-specific/linux/kernel-headers-cross { inherit fetchurl stdenv; cross = "mips-linux"; }; - kernelHeadersSparc = import ../os-specific/linux/kernel-headers-cross { + linuxHeadersSparc = import ../os-specific/linux/kernel-headers-cross { inherit fetchurl stdenv; cross = "sparc-linux"; }; @@ -5766,14 +5772,14 @@ let klibc = makeOverridable (import ../os-specific/linux/klibc) { inherit fetchurl stdenv perl bison mktemp; - kernelHeaders = glibc.kernelHeaders; + linuxHeaders = glibc.kernelHeaders; }; # Old version; needed in vmtools for insmod. Should use # module_init_tools instead. klibc_15 = makeOverridable (import ../os-specific/linux/klibc/1.5.nix) { inherit fetchurl stdenv perl bison mktemp; - kernelHeaders = glibc.kernelHeaders; + linuxHeaders = glibc.kernelHeaders; }; klibcShrunk = makeOverridable (import ../os-specific/linux/klibc/shrunk.nix) { @@ -5784,17 +5790,17 @@ let kvm76 = import ../os-specific/linux/kvm/76.nix { inherit fetchurl stdenv zlib e2fsprogs SDL alsaLib pkgconfig rsync; - inherit (glibc) kernelHeaders; + linuxHeaders = glibc.kernelHeaders; }; kvm86 = import ../os-specific/linux/kvm/86.nix { inherit fetchurl stdenv zlib SDL alsaLib pkgconfig pciutils; - inherit (glibc) kernelHeaders; + linuxHeaders = glibc.kernelHeaders; }; kvm88 = import ../os-specific/linux/kvm/88.nix { inherit fetchurl stdenv zlib SDL alsaLib pkgconfig pciutils; - inherit (glibc) kernelHeaders; + linuxHeaders = glibc.kernelHeaders; }; libcap = import ../os-specific/linux/libcap { @@ -6005,12 +6011,12 @@ let }; uclibc = import ../os-specific/linux/uclibc { - inherit fetchurl stdenv kernelHeaders; + inherit fetchurl stdenv linuxHeaders; }; uclibcCross = target: import ../os-specific/linux/uclibc { inherit fetchurl stdenv; - kernelHeaders = kernelHeadersCross target; + linuxHeaders = linuxHeadersCross target; gccCross = gccCrossStageStatic target; }; @@ -6024,7 +6030,7 @@ let }; umlutilities = import ../os-specific/linux/uml-utilities { - inherit fetchurl kernelHeaders stdenv readline lib; + inherit fetchurl linuxHeaders stdenv readline lib; tunctl = true; mconsole = true; }; From 4b31ecfb7423bd9f6b2a85103eff546bf2f4fe32 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= Date: Mon, 21 Dec 2009 14:12:00 +0000 Subject: [PATCH 120/232] Rename `kernel*' to `linux*'. svn path=/nixpkgs/branches/stdenv-updates/; revision=19068 --- pkgs/servers/openafs-client/default.nix | 4 +- pkgs/top-level/all-packages.nix | 54 ++++++++++++------------- 2 files changed, 29 insertions(+), 29 deletions(-) diff --git a/pkgs/servers/openafs-client/default.nix b/pkgs/servers/openafs-client/default.nix index 8021f7cf9df..1ae7839643f 100644 --- a/pkgs/servers/openafs-client/default.nix +++ b/pkgs/servers/openafs-client/default.nix @@ -1,5 +1,5 @@ { stdenv, fetchurl, autoconf, automake, flex, yacc, - kernel_2_6_28, glibc, ncurses, perl, krb5 }: + linux_2_6_28, glibc, ncurses, perl, krb5 }: assert stdenv.isLinux; @@ -8,7 +8,7 @@ let version = "1.4.11"; name = "${pname}-${version}"; webpage = http://www.openafs.org; - kernel = kernel_2_6_28; + kernel = linux_2_6_28; in stdenv.mkDerivation rec { diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 16d9f86e562..4569ecf2093 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -1491,7 +1491,7 @@ let tcng = import ../tools/networking/tcng { inherit fetchurl stdenv iproute bison flex db4 perl; - kernel = kernel_2_6_28; + kernel = linux_2_6_28; }; telnet = import ../tools/networking/telnet { @@ -2922,7 +2922,7 @@ let openafsClient = import ../servers/openafs-client { inherit stdenv fetchurl autoconf automake flex yacc; - inherit kernel_2_6_28 glibc ncurses perl krb5; + inherit linux_2_6_28 glibc ncurses perl krb5; }; openocd = import ../development/tools/misc/openocd { @@ -5536,7 +5536,7 @@ let inherit fetchurl; }; - kernel_2_6_25 = makeOverridable (import ../os-specific/linux/kernel/linux-2.6.25.nix) { + linux_2_6_25 = makeOverridable (import ../os-specific/linux/kernel/linux-2.6.25.nix) { inherit fetchurl stdenv perl mktemp module_init_tools; kernelPatches = [ kernelPatches.fbcondecor_2_6_25 @@ -5544,7 +5544,7 @@ let ]; }; - kernel_2_6_27 = makeOverridable (import ../os-specific/linux/kernel/linux-2.6.27.nix) { + linux_2_6_27 = makeOverridable (import ../os-specific/linux/kernel/linux-2.6.27.nix) { inherit fetchurl stdenv perl mktemp module_init_tools; kernelPatches = [ kernelPatches.fbcondecor_2_6_27 @@ -5552,7 +5552,7 @@ let ]; }; - kernel_2_6_28 = makeOverridable (import ../os-specific/linux/kernel/linux-2.6.28.nix) { + linux_2_6_28 = makeOverridable (import ../os-specific/linux/kernel/linux-2.6.28.nix) { inherit fetchurl stdenv perl mktemp module_init_tools; kernelPatches = [ kernelPatches.fbcondecor_2_6_28 @@ -5561,7 +5561,7 @@ let ]; }; - kernel_2_6_29 = makeOverridable (import ../os-specific/linux/kernel/linux-2.6.29.nix) { + linux_2_6_29 = makeOverridable (import ../os-specific/linux/kernel/linux-2.6.29.nix) { inherit fetchurl stdenv perl mktemp module_init_tools; kernelPatches = [ kernelPatches.fbcondecor_2_6_29 @@ -5569,34 +5569,34 @@ let ]; }; - kernel_2_6_31 = makeOverridable (import ../os-specific/linux/kernel/linux-2.6.31.nix) { + linux_2_6_31 = makeOverridable (import ../os-specific/linux/kernel/linux-2.6.31.nix) { inherit fetchurl stdenv perl mktemp module_init_tools platform; kernelPatches = []; }; - kernel_2_6_31_zen5 = makeOverridable (import ../os-specific/linux/zen-kernel/2.6.31-zen5.nix) { + linux_2_6_31_zen5 = makeOverridable (import ../os-specific/linux/zen-kernel/2.6.31-zen5.nix) { inherit fetchurl stdenv perl mktemp module_init_tools lib builderDefs; inherit platform; }; - kernel_2_6_31_zen5_bfs = kernel_2_6_31_zen5.override { + linux_2_6_31_zen5_bfs = linux_2_6_31_zen5.override { ckSched = true; }; - kernel_2_6_31_zen7 = makeOverridable (import ../os-specific/linux/zen-kernel/zen-stable.nix) { + linux_2_6_31_zen7 = makeOverridable (import ../os-specific/linux/zen-kernel/zen-stable.nix) { inherit fetchurl stdenv perl mktemp module_init_tools lib builderDefs; }; - kernel_2_6_31_zen7_bfs = kernel_2_6_31_zen7.override { + linux_2_6_31_zen7_bfs = linux_2_6_31_zen7.override { ckSched = true; }; - kernel_2_6_31_zen = kernel_2_6_31_zen7; - kernel_2_6_31_zen_bfs = kernel_2_6_31_zen7_bfs; + linux_2_6_31_zen = linux_2_6_31_zen7; + linux_2_6_31_zen_bfs = linux_2_6_31_zen7_bfs; - kernel_2_6_32 = makeOverridable (import ../os-specific/linux/kernel/linux-2.6.32.nix) { + linux_2_6_32 = makeOverridable (import ../os-specific/linux/kernel/linux-2.6.32.nix) { inherit fetchurl stdenv perl mktemp module_init_tools platform; kernelPatches = [ kernelPatches.fbcondecor_2_6_31 @@ -5604,13 +5604,13 @@ let ]; }; - /* Kernel modules are inherently tied to a specific kernel. So + /* Linux kernel modules are inherently tied to a specific kernel. So rather than provide specific instances of those packages for a specific kernel, we have a function that builds those packages for a specific kernel. This function can then be called for whatever kernel you're using. */ - kernelPackagesFor = kernel: rec { + linuxPackagesFor = kernel: rec { inherit kernel; @@ -5726,18 +5726,18 @@ let }; # Build the kernel modules for the some of the kernels. - kernelPackages_2_6_25 = recurseIntoAttrs (kernelPackagesFor kernel_2_6_25); - kernelPackages_2_6_27 = recurseIntoAttrs (kernelPackagesFor kernel_2_6_27); - kernelPackages_2_6_28 = recurseIntoAttrs (kernelPackagesFor kernel_2_6_28); - kernelPackages_2_6_29 = recurseIntoAttrs (kernelPackagesFor kernel_2_6_29); - kernelPackages_2_6_31_zen5 = recurseIntoAttrs (kernelPackagesFor kernel_2_6_31_zen5); - kernelPackages_2_6_31_zen = recurseIntoAttrs (kernelPackagesFor kernel_2_6_31_zen); - kernelPackages_2_6_31_zen_bfs = recurseIntoAttrs (kernelPackagesFor kernel_2_6_31_zen_bfs); - kernelPackages_2_6_31 = recurseIntoAttrs (kernelPackagesFor kernel_2_6_31); - kernelPackages_2_6_32 = recurseIntoAttrs (kernelPackagesFor kernel_2_6_32); + linuxPackages_2_6_25 = recurseIntoAttrs (linuxPackagesFor linux_2_6_25); + linuxPackages_2_6_27 = recurseIntoAttrs (linuxPackagesFor linux_2_6_27); + linuxPackages_2_6_28 = recurseIntoAttrs (linuxPackagesFor linux_2_6_28); + linuxPackages_2_6_29 = recurseIntoAttrs (linuxPackagesFor linux_2_6_29); + linuxPackages_2_6_31_zen5 = recurseIntoAttrs (linuxPackagesFor linux_2_6_31_zen5); + linuxPackages_2_6_31_zen = recurseIntoAttrs (linuxPackagesFor linux_2_6_31_zen); + linuxPackages_2_6_31_zen_bfs = recurseIntoAttrs (linuxPackagesFor linux_2_6_31_zen_bfs); + linuxPackages_2_6_31 = recurseIntoAttrs (linuxPackagesFor linux_2_6_31); + linuxPackages_2_6_32 = recurseIntoAttrs (linuxPackagesFor linux_2_6_32); - # The current default kernel / kernel modules. - kernelPackages = kernelPackages_2_6_28; + # The current default Linux kernel & modules. + linuxPackages = linuxPackages_2_6_28; customKernel = composedArgsAndFun (lib.sumTwoArgs (import ../os-specific/linux/kernel/generic.nix) { inherit fetchurl stdenv perl mktemp module_init_tools; From 7993499325aca0823a97d7770f0bc5d79a6dc14c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Llu=C3=ADs=20Batlle=20i=20Rossell?= Date: Mon, 21 Dec 2009 22:46:18 +0000 Subject: [PATCH 121/232] Disabling libsigsegv in gawk, because it makes me fail the 'Check'. This disables some kind of gawk useful output on segfault. I haven't found an easy way of getting gawk use a newer libsigsegv with that problem fixed. So I do like the fedora people: disable libsigsegv. (I don't know why this did not happen in the hydra machine. I could not build gawk) svn path=/nixpkgs/branches/stdenv-updates/; revision=19070 --- pkgs/tools/text/gawk/default.nix | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/pkgs/tools/text/gawk/default.nix b/pkgs/tools/text/gawk/default.nix index 138b4e01f78..839364ddb5b 100644 --- a/pkgs/tools/text/gawk/default.nix +++ b/pkgs/tools/text/gawk/default.nix @@ -10,6 +10,11 @@ stdenv.mkDerivation rec { doCheck = true; + # The libsigsegv provided with gawk has failing tests: + # I did like in Fedora: + # http://rpmfind.net//linux/RPM/fedora/devel/i386/gawk-3.1.7-2.fc13.i686.html + configureFlags = "--disable-libsigsegv"; + meta = { homepage = http://www.gnu.org/software/gawk/; description = "GNU implementation of the Awk programming language"; From 7ee537f9551f6805fc8cb041166686f9dd672281 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Llu=C3=ADs=20Batlle=20i=20Rossell?= Date: Mon, 21 Dec 2009 23:02:06 +0000 Subject: [PATCH 122/232] Getting a new gcc-wrapper on the way. After gnat-wrapper, I introduce ghdl-wrapper. I made the gcc-4.3.4 expression allow the 'vhdl' language through ghdl. The ghdl developer recommends this gcc version; maybe it would work with gcc-4.4. If not this ghdl version, maybe next versions. svn path=/nixpkgs/branches/stdenv-updates/; revision=19071 --- .../science/electronics/ghdl/default.nix | 18 -- pkgs/build-support/ghdl-wrapper/add-flags | 24 +++ pkgs/build-support/ghdl-wrapper/builder.sh | 145 ++++++++++++++++ pkgs/build-support/ghdl-wrapper/default.nix | 64 ++++++++ .../build-support/ghdl-wrapper/gcc-wrapper.sh | 148 +++++++++++++++++ pkgs/build-support/ghdl-wrapper/ld-wrapper.sh | 155 ++++++++++++++++++ pkgs/build-support/ghdl-wrapper/setup-hook.sh | 33 ++++ pkgs/build-support/ghdl-wrapper/utils.sh | 23 +++ pkgs/development/compilers/gcc-4.3/builder.sh | 2 + .../development/compilers/gcc-4.3/default.nix | 30 +++- .../compilers/gcc-4.3/ghdl-ortho-cflags.patch | 36 ++++ pkgs/top-level/all-packages.nix | 28 +++- 12 files changed, 682 insertions(+), 24 deletions(-) delete mode 100644 pkgs/applications/science/electronics/ghdl/default.nix create mode 100644 pkgs/build-support/ghdl-wrapper/add-flags create mode 100644 pkgs/build-support/ghdl-wrapper/builder.sh create mode 100644 pkgs/build-support/ghdl-wrapper/default.nix create mode 100644 pkgs/build-support/ghdl-wrapper/gcc-wrapper.sh create mode 100644 pkgs/build-support/ghdl-wrapper/ld-wrapper.sh create mode 100644 pkgs/build-support/ghdl-wrapper/setup-hook.sh create mode 100644 pkgs/build-support/ghdl-wrapper/utils.sh create mode 100644 pkgs/development/compilers/gcc-4.3/ghdl-ortho-cflags.patch diff --git a/pkgs/applications/science/electronics/ghdl/default.nix b/pkgs/applications/science/electronics/ghdl/default.nix deleted file mode 100644 index 7451c3f0724..00000000000 --- a/pkgs/applications/science/electronics/ghdl/default.nix +++ /dev/null @@ -1,18 +0,0 @@ -{stdenv, fetchurl, gnat}: -stdenv.mkDerivation rec { - name = "ghdl-0.28"; - - src = fetchurl { - url = "http://ghdl.free.fr/${name}.tar.bz2"; - sha256 = "0l3ah3zw2yhr9rv9d5ck1cinsf11r28m6bzl2sdibngl2bgc2jsf"; - }; - - buildInputs = [ gnat ]; - - meta = { - description = "Complete VHDL simulator, using the GCC technology"; - homepage = http://ghdl.free.fr/; - # There is a mixture of licenses per file - license = "free"; - }; -} diff --git a/pkgs/build-support/ghdl-wrapper/add-flags b/pkgs/build-support/ghdl-wrapper/add-flags new file mode 100644 index 00000000000..02755e44541 --- /dev/null +++ b/pkgs/build-support/ghdl-wrapper/add-flags @@ -0,0 +1,24 @@ +# `-B@out@/bin' forces gcc to use ld-wrapper.sh when calling ld. +export NIX_CFLAGS_COMPILE="-B@out@/bin/ $NIX_CFLAGS_COMPILE" + +if test -e @out@/nix-support/libc-cflags; then + export NIX_CFLAGS_COMPILE="$(cat @out@/nix-support/libc-cflags) $NIX_CFLAGS_COMPILE" +fi + +if test -e @out@/nix-support/gcc-cflags; then + export NIX_CFLAGS_COMPILE="$(cat @out@/nix-support/gcc-cflags) $NIX_CFLAGS_COMPILE" +fi + +if test -e @out@/nix-support/libc-ldflags; then + export NIX_LDFLAGS="$NIX_LDFLAGS $(cat @out@/nix-support/libc-ldflags)" +fi + +if test -e @out@/nix-support/gcc-ldflags; then + export NIX_LDFLAGS="$NIX_LDFLAGS $(cat @out@/nix-support/gcc-ldflags)" +fi + +if test -e @out@/nix-support/libc-ldflags-before; then + export NIX_LDFLAGS_BEFORE="$(cat @out@/nix-support/libc-ldflags-before) $NIX_LDFLAGS_BEFORE" +fi + +export NIX_GCC_WRAPPER_FLAGS_SET=1 diff --git a/pkgs/build-support/ghdl-wrapper/builder.sh b/pkgs/build-support/ghdl-wrapper/builder.sh new file mode 100644 index 00000000000..a1236e08462 --- /dev/null +++ b/pkgs/build-support/ghdl-wrapper/builder.sh @@ -0,0 +1,145 @@ +source $stdenv/setup + + +ensureDir $out/bin +ensureDir $out/nix-support + + +if test -z "$nativeLibc"; then + dynamicLinker="$libc/lib/$dynamicLinker" + echo $dynamicLinker > $out/nix-support/dynamic-linker + + if test -e $libc/lib/32/ld-linux.so.2; then + echo $libc/lib/32/ld-linux.so.2 > $out/nix-support/dynamic-linker-m32 + fi + + # The "-B$libc/lib/" flag is a quick hack to force gcc to link + # against the crt1.o from our own glibc, rather than the one in + # /usr/lib. (This is only an issue when using an `impure' + # compiler/linker, i.e., one that searches /usr/lib and so on.) + # + # Unfortunately, setting -B appears to override the default search + # path. Thus, the gcc-specific "../includes-fixed" directory is + # now longer searched and glibc's header fails to + # compile, because it uses "#include_next " to find the + # limits.h file in ../includes-fixed. To remedy the problem, + # another -idirafter is necessary to add that directory again. + echo "-B$libc/lib/ -idirafter $libc/include -idirafter $gcc/lib/gcc/*/*/include-fixed" > $out/nix-support/libc-cflags + + echo "-L$libc/lib" > $out/nix-support/libc-ldflags + + # The dynamic linker is passed in `ldflagsBefore' to allow + # explicit overrides of the dynamic linker by callers to gcc/ld + # (the *last* value counts, so ours should come first). + echo "-dynamic-linker $dynamicLinker" > $out/nix-support/libc-ldflags-before +fi + +if test -n "$nativeTools"; then + gccPath="$nativePrefix/bin" + ldPath="$nativePrefix/bin" +else + if test -e "$gcc/lib64"; then + gccLDFlags="$gccLDFlags -L$gcc/lib64" + fi + gccLDFlags="$gccLDFlags -L$gcc/lib -L$zlib/lib" + echo "$gccLDFlags" > $out/nix-support/gcc-ldflags + + # GCC shows $gcc/lib in `gcc -print-search-dirs', but not + # $gcc/lib64 (even though it does actually search there...).. + # This confuses libtool. So add it to the compiler tool search + # path explicitly. + if test -e "$gcc/lib64"; then + gccCFlags="$gccCFlags -B$gcc/lib64" + fi + echo "$gccCFlags" > $out/nix-support/gcc-cflags + + gccPath="$gcc/bin" + ldPath="$binutils/bin" +fi + + +doSubstitute() { + local src=$1 + local dst=$2 + # Can't use substitute() here, because replace may not have been + # built yet (in the bootstrap). + sed \ + -e "s^@out@^$out^g" \ + -e "s^@shell@^$shell^g" \ + -e "s^@gcc@^$gcc^g" \ + -e "s^@gccProg@^$gccProg^g" \ + -e "s^@binutils@^$binutils^g" \ + -e "s^@coreutils@^$coreutils^g" \ + -e "s^@libc@^$libc^g" \ + -e "s^@ld@^$ldPath/ld^g" \ + < "$src" > "$dst" +} + + +# Make wrapper scripts around gcc, g++, and gfortran. Also make symlinks +# cc, c++, and f77. +mkGccWrapper() { + local dst=$1 + local src=$2 + + if ! test -f "$src"; then + echo "$src does not exist (skipping)" + return 1 + fi + + gccProg="$src" + doSubstitute "$gccWrapper" "$dst" + chmod +x "$dst" +} + +if mkGccWrapper $out/bin/gcc $gccPath/gcc +then + ln -sv gcc $out/bin/cc +fi + +if mkGccWrapper $out/bin/g++ $gccPath/g++ +then + ln -sv g++ $out/bin/c++ +fi + +if mkGccWrapper $out/bin/gfortran $gccPath/gfortran +then + ln -sv gfortran $out/bin/g77 + ln -sv gfortran $out/bin/f77 +fi + +mkGccWrapper $out/bin/gcj $gccPath/gcj || true + +if [ -f $gccPath/ghdl ]; then + ln -sf $gccPath/ghdl $out/bin/ghdl +fi + +# Create a symlink to as (the assembler). This is useful when a +# gcc-wrapper is installed in a user environment, as it ensures that +# the right assembler is called. +ln -s $ldPath/as $out/bin/as + + +# Make a wrapper around the linker. +doSubstitute "$ldWrapper" "$out/bin/ld" +chmod +x "$out/bin/ld" + + +# Emit a setup hook. Also store the path to the original GCC and +# Glibc. +test -n "$gcc" && echo $gcc > $out/nix-support/orig-gcc +test -n "$libc" && echo $libc > $out/nix-support/orig-libc + +doSubstitute "$addFlags" "$out/nix-support/add-flags.sh" + +doSubstitute "$setupHook" "$out/nix-support/setup-hook" + +cp -p $utils $out/nix-support/utils.sh + + +# Propagate the wrapped gcc so that if you install the wrapper, you get +# tools like gcov, the manpages, etc. as well (including for binutils +# and Glibc). +if test -z "$nativeTools"; then + echo $gcc $binutils $libc > $out/nix-support/propagated-user-env-packages +fi diff --git a/pkgs/build-support/ghdl-wrapper/default.nix b/pkgs/build-support/ghdl-wrapper/default.nix new file mode 100644 index 00000000000..89b643dabb2 --- /dev/null +++ b/pkgs/build-support/ghdl-wrapper/default.nix @@ -0,0 +1,64 @@ +# The Nix `gcc' stdenv.mkDerivation is not directly usable, since it doesn't +# know where the C library and standard header files are. Therefore +# the compiler produced by that package cannot be installed directly +# in a user environment and used from the command line. This +# stdenv.mkDerivation provides a wrapper that sets up the right environment +# variables so that the compiler and the linker just "work". + +{ name ? "", stdenv, nativeTools, nativeLibc, nativePrefix ? "" +, gcc ? null, libc ? null, binutils ? null, coreutils ? null, shell ? "" +, zlib +}: + +assert nativeTools -> nativePrefix != ""; +assert !nativeTools -> gcc != null && binutils != null && coreutils != null; +assert !nativeLibc -> libc != null; + +let + + gccVersion = (builtins.parseDrvName gcc.name).version; + gccName = (builtins.parseDrvName gcc.name).name; + +in + +stdenv.mkDerivation { + name = + (if name != "" then name else gccName + "-wrapper") + + (if gcc != null && gccVersion != "" then "-" + gccVersion else ""); + + builder = ./builder.sh; + setupHook = ./setup-hook.sh; + gccWrapper = ./gcc-wrapper.sh; + ldWrapper = ./ld-wrapper.sh; + utils = ./utils.sh; + addFlags = ./add-flags; + + inherit nativeTools nativeLibc nativePrefix gcc zlib; + libc = if nativeLibc then null else libc; + binutils = if nativeTools then null else binutils; + # The wrapper scripts use 'cat', so we may need coreutils + coreutils = if nativeTools then null else coreutils; + + langC = if nativeTools then true else gcc.langC; + langCC = if nativeTools then true else gcc.langCC; + langFortran = if nativeTools then false else gcc ? langFortran; + shell = if shell == "" then stdenv.shell else shell; + + meta = + let gcc_ = if gcc != null then gcc else {}; in + (if gcc_ ? meta then removeAttrs gcc.meta ["priority"] else {}) // + { description = + stdenv.lib.attrByPath ["meta" "description"] "System C compiler" gcc_ + + " (wrapper script)"; + }; + + # The dynamic linker has different names on different Linux platforms. + dynamicLinker = + if !nativeLibc then + (if stdenv.system == "i686-linux" then "ld-linux.so.2" else + if stdenv.system == "x86_64-linux" then "ld-linux-x86-64.so.2" else + if stdenv.system == "armv5tel-linux" then "ld-linux.so.3" else + if stdenv.system == "powerpc-linux" then "ld.so.1" else + abort "don't know the name of the dynamic linker for this platform") + else ""; +} diff --git a/pkgs/build-support/ghdl-wrapper/gcc-wrapper.sh b/pkgs/build-support/ghdl-wrapper/gcc-wrapper.sh new file mode 100644 index 00000000000..8a49fcb9b06 --- /dev/null +++ b/pkgs/build-support/ghdl-wrapper/gcc-wrapper.sh @@ -0,0 +1,148 @@ +#! @shell@ -e + +if test -n "$NIX_GCC_WRAPPER_START_HOOK"; then + source "$NIX_GCC_WRAPPER_START_HOOK" +fi + +if test -z "$NIX_GCC_WRAPPER_FLAGS_SET"; then + source @out@/nix-support/add-flags.sh +fi + +source @out@/nix-support/utils.sh + + +# Figure out if linker flags should be passed. GCC prints annoying +# warnings when they are not needed. +dontLink=0 +getVersion=0 +nonFlagArgs=0 + +for i in "$@"; do + if test "$i" = "-c"; then + dontLink=1 + elif test "$i" = "-S"; then + dontLink=1 + elif test "$i" = "-E"; then + dontLink=1 + elif test "$i" = "-E"; then + dontLink=1 + elif test "$i" = "-M"; then + dontLink=1 + elif test "$i" = "-MM"; then + dontLink=1 + elif test "${i:0:1}" != "-"; then + nonFlagArgs=1 + elif test "$i" = "-m32"; then + if test -e @out@/nix-support/dynamic-linker-m32; then + NIX_LDFLAGS="$NIX_LDFLAGS -dynamic-linker $(cat @out@/nix-support/dynamic-linker-m32)" + fi + fi +done + +# If we pass a flag like -Wl, then gcc will call the linker unless it +# can figure out that it has to do something else (e.g., because of a +# "-c" flag). So if no non-flag arguments are given, don't pass any +# linker flags. This catches cases like "gcc" (should just print +# "gcc: no input files") and "gcc -v" (should print the version). +if test "$nonFlagArgs" = "0"; then + dontLink=1 +fi + + +# Optionally filter out paths not refering to the store. +params=("$@") +if test "$NIX_ENFORCE_PURITY" = "1" -a -n "$NIX_STORE"; then + rest=() + n=0 + while test $n -lt ${#params[*]}; do + p=${params[n]} + p2=${params[$((n+1))]} + if test "${p:0:3}" = "-L/" && badPath "${p:2}"; then + skip $p + elif test "$p" = "-L" && badPath "$p2"; then + n=$((n + 1)); skip $p2 + elif test "${p:0:3}" = "-I/" && badPath "${p:2}"; then + skip $p + elif test "$p" = "-I" && badPath "$p2"; then + n=$((n + 1)); skip $p2 + elif test "$p" = "-isystem" && badPath "$p2"; then + n=$((n + 1)); skip $p2 + else + rest=("${rest[@]}" "$p") + fi + n=$((n + 1)) + done + params=("${rest[@]}") +fi + + +# Add the flags for the C compiler proper. +extraAfter=($NIX_CFLAGS_COMPILE) +extraBefore=() + +if test "$dontLink" != "1"; then + + # Add the flags that should only be passed to the compiler when + # linking. + extraAfter=(${extraAfter[@]} $NIX_CFLAGS_LINK) + + # Add the flags that should be passed to the linker (and prevent + # `ld-wrapper' from adding NIX_LDFLAGS again). + for i in $NIX_LDFLAGS_BEFORE; do + extraBefore=(${extraBefore[@]} "-Wl,$i") + done + for i in $NIX_LDFLAGS; do + if test "${i:0:3}" = "-L/"; then + extraAfter=(${extraAfter[@]} "$i") + else + extraAfter=(${extraAfter[@]} "-Wl,$i") + fi + done + export NIX_LDFLAGS_SET=1 + + if test "$NIX_STRIP_DEBUG" = "1"; then + # Add executable-stripping flags. + extraAfter=(${extraAfter[@]} $NIX_CFLAGS_STRIP) + fi +fi + +# As a very special hack, if the arguments are just `-v', then don't +# add anything. This is to prevent `gcc -v' (which normally prints +# out the version number and returns exit code 0) from printing out +# `No input files specified' and returning exit code 1. +if test "$*" = "-v"; then + extraAfter=() + extraBefore=() +fi + +# Optionally print debug info. +if test "$NIX_DEBUG" = "1"; then + echo "original flags to @gccProg@:" >&2 + for i in "${params[@]}"; do + echo " $i" >&2 + done + echo "extraBefore flags to @gccProg@:" >&2 + for i in ${extraBefore[@]}; do + echo " $i" >&2 + done + echo "extraAfter flags to @gccProg@:" >&2 + for i in ${extraAfter[@]}; do + echo " $i" >&2 + done +fi + +if test -n "$NIX_GCC_WRAPPER_EXEC_HOOK"; then + source "$NIX_GCC_WRAPPER_EXEC_HOOK" +fi + + +# Call the real `gcc'. Filter out warnings from stderr about unused +# `-B' flags, since they confuse some programs. Deep bash magic to +# apply grep to stderr (by swapping stdin/stderr twice). +if test -z "$NIX_GCC_NEEDS_GREP"; then + @gccProg@ ${extraBefore[@]} "${params[@]}" ${extraAfter[@]} +else + (@gccProg@ ${extraBefore[@]} "${params[@]}" ${extraAfter[@]} 3>&2 2>&1 1>&3- \ + | (grep -v 'file path prefix' || true); exit ${PIPESTATUS[0]}) 3>&2 2>&1 1>&3- + exit $? +fi diff --git a/pkgs/build-support/ghdl-wrapper/ld-wrapper.sh b/pkgs/build-support/ghdl-wrapper/ld-wrapper.sh new file mode 100644 index 00000000000..bf3c2620f29 --- /dev/null +++ b/pkgs/build-support/ghdl-wrapper/ld-wrapper.sh @@ -0,0 +1,155 @@ +#! @shell@ -e + +if test -n "$NIX_LD_WRAPPER_START_HOOK"; then + source "$NIX_LD_WRAPPER_START_HOOK" +fi + +if test -z "$NIX_GCC_WRAPPER_FLAGS_SET"; then + source @out@/nix-support/add-flags.sh +fi + +source @out@/nix-support/utils.sh + + +# Optionally filter out paths not refering to the store. +params=("$@") +if test "$NIX_ENFORCE_PURITY" = "1" -a -n "$NIX_STORE" \ + -a \( -z "$NIX_IGNORE_LD_THROUGH_GCC" -o -z "$NIX_LDFLAGS_SET" \); then + rest=() + n=0 + while test $n -lt ${#params[*]}; do + p=${params[n]} + p2=${params[$((n+1))]} + if test "${p:0:3}" = "-L/" && badPath "${p:2}"; then + skip $p + elif test "$p" = "-L" && badPath "$p2"; then + n=$((n + 1)); skip $p2 + elif test "$p" = "-rpath" && badPath "$p2"; then + n=$((n + 1)); skip $p2 + elif test "$p" = "-dynamic-linker" && badPath "$p2"; then + n=$((n + 1)); skip $p2 + elif test "${p:0:1}" = "/" && badPath "$p"; then + # We cannot skip this; barf. + echo "impure path \`$p' used in link" >&2 + exit 1 + else + rest=("${rest[@]}" "$p") + fi + n=$((n + 1)) + done + params=("${rest[@]}") +fi + + +extra=() +extraBefore=() + +if test -z "$NIX_LDFLAGS_SET"; then + extra=(${extra[@]} $NIX_LDFLAGS) + extraBefore=(${extraBefore[@]} $NIX_LDFLAGS_BEFORE) +fi + + +# Add all used dynamic libraries to the rpath. +if test "$NIX_DONT_SET_RPATH" != "1"; then + + # First, find all -L... switches. + allParams=("${params[@]}" ${extra[@]}) + libPath="" + addToLibPath() { + local path="$1" + if test "${path:0:1}" != "/"; then return 0; fi + case "$path" in + *..*|*./*|*/.*|*//*) + local path2 + if path2=$(readlink -f "$path"); then + path="$path2" + fi + ;; + esac + case $libPath in + *\ $path\ *) return 0 ;; + esac + libPath="$libPath $path " + } + n=0 + while test $n -lt ${#allParams[*]}; do + p=${allParams[n]} + p2=${allParams[$((n+1))]} + if test "${p:0:3}" = "-L/"; then + addToLibPath ${p:2} + elif test "$p" = "-L"; then + addToLibPath ${p2} + n=$((n + 1)) + elif $(echo "$p" | grep -q '^[^-].*\.so\($\|\.\)'); then + path="$(dirname "$p")"; + addToLibPath "${path}" + fi + n=$((n + 1)) + done + + # Second, for each directory in the library search path (-L...), + # see if it contains a dynamic library used by a -l... flag. If + # so, add the directory to the rpath. + rpath="" + + addToRPath() { + # If the path is not in the store, don't add it to the rpath. + # This typically happens for libraries in /tmp that are later + # copied to $out/lib. If not, we're screwed. + if test "${1:0:${#NIX_STORE}}" != "$NIX_STORE"; then return 0; fi + case $rpath in + *\ $1\ *) return 0 ;; + esac + rpath="$rpath $1 " + } + + for i in $libPath; do + n=0 + while test $n -lt ${#allParams[*]}; do + p=${allParams[n]} + p2=${allParams[$((n+1))]} + if test "${p:0:2}" = "-l" -a -f "$i/lib${p:2}.so"; then + addToRPath $i + break + elif test "$p" = "-l" -a -f "$i/lib${p2}"; then + # I haven't seen `-l foo', but you never know... + addToRPath $i + break + elif $(echo "$p" | grep -q '^[^-].*\.so\($\|\.\)'); then + path="$(dirname "$p")"; + if test "$path" == "$i"; then + addToRPath $i + break; + fi + fi + n=$((n + 1)) + done + + done + + + # Finally, add `-rpath' switches. + for i in $rpath; do + extra=(${extra[@]} -rpath $i) + done +fi + + +# Optionally print debug info. +if test "$NIX_DEBUG" = "1"; then + echo "original flags to @ld@:" >&2 + for i in "${params[@]}"; do + echo " $i" >&2 + done + echo "extra flags to @ld@:" >&2 + for i in ${extra[@]}; do + echo " $i" >&2 + done +fi + +if test -n "$NIX_LD_WRAPPER_EXEC_HOOK"; then + source "$NIX_LD_WRAPPER_EXEC_HOOK" +fi + +exec @ld@ ${extraBefore[@]} "${params[@]}" ${extra[@]} diff --git a/pkgs/build-support/ghdl-wrapper/setup-hook.sh b/pkgs/build-support/ghdl-wrapper/setup-hook.sh new file mode 100644 index 00000000000..513ab8053a7 --- /dev/null +++ b/pkgs/build-support/ghdl-wrapper/setup-hook.sh @@ -0,0 +1,33 @@ +addCVars () { + if test -d $1/include; then + export NIX_CFLAGS_COMPILE="$NIX_CFLAGS_COMPILE -I$1/include" + fi + + if test -d $1/lib64; then + export NIX_LDFLAGS="$NIX_LDFLAGS -L$1/lib64" + fi + + if test -d $1/lib; then + export NIX_LDFLAGS="$NIX_LDFLAGS -L$1/lib" + fi +} + +envHooks=(${envHooks[@]} addCVars) + +# Note: these come *after* $out in the PATH (see setup.sh). + +if test -n "@gcc@"; then + addToSearchPath PATH @gcc@/bin +fi + +if test -n "@binutils@"; then + addToSearchPath PATH @binutils@/bin +fi + +if test -n "@libc@"; then + addToSearchPath PATH @libc@/bin +fi + +if test -n "@coreutils@"; then + addToSearchPath PATH @coreutils@/bin +fi diff --git a/pkgs/build-support/ghdl-wrapper/utils.sh b/pkgs/build-support/ghdl-wrapper/utils.sh new file mode 100644 index 00000000000..9a664e1d1e6 --- /dev/null +++ b/pkgs/build-support/ghdl-wrapper/utils.sh @@ -0,0 +1,23 @@ +skip () { + if test "$NIX_DEBUG" = "1"; then + echo "skipping impure path $1" >&2 + fi +} + + +# Checks whether a path is impure. E.g., `/lib/foo.so' is impure, but +# `/nix/store/.../lib/foo.so' isn't. +badPath() { + local p=$1 + + # Relative paths are okay (since they're presumably relative to + # the temporary build directory). + if test "${p:0:1}" != "/"; then return 1; fi + + # Otherwise, the path should refer to the store or some temporary + # directory (including the build directory). + test \ + "${p:0:${#NIX_STORE}}" != "$NIX_STORE" -a \ + "${p:0:4}" != "/tmp" -a \ + "${p:0:${#NIX_BUILD_TOP}}" != "$NIX_BUILD_TOP" +} diff --git a/pkgs/development/compilers/gcc-4.3/builder.sh b/pkgs/development/compilers/gcc-4.3/builder.sh index 0d25692ce65..aaf0c54d99b 100644 --- a/pkgs/development/compilers/gcc-4.3/builder.sh +++ b/pkgs/development/compilers/gcc-4.3/builder.sh @@ -124,6 +124,8 @@ postInstall() { ln -sfn g++ $i fi done + + eval "$postInstallGhdl" } diff --git a/pkgs/development/compilers/gcc-4.3/default.nix b/pkgs/development/compilers/gcc-4.3/default.nix index c8f9c2d3875..1b2def10da0 100644 --- a/pkgs/development/compilers/gcc-4.3/default.nix +++ b/pkgs/development/compilers/gcc-4.3/default.nix @@ -1,6 +1,7 @@ { stdenv, fetchurl, noSysDirs , langC ? true, langCC ? true, langFortran ? false, langTreelang ? false , langJava ? false +, langVhdl ? false , profiledCompiler ? false , staticCompiler ? false , enableShared ? true @@ -14,6 +15,7 @@ , binutilsCross ? null , libcCross ? null , crossStageStatic ? true +, gnat ? null }: assert langTreelang -> bison != null && flex != null; @@ -22,6 +24,8 @@ assert cross != null -> profiledCompiler == false && enableMultilib == true; assert (cross != null && crossStageStatic) -> (langCC == false && langFortran == false && langTreelang == false); +assert langVhdl -> gnat != null; + with stdenv.lib; let @@ -46,6 +50,10 @@ let "-stage-final"; crossNameAddon = if (cross != null) then "-${cross.config}" + stageNameAddon else ""; + ghdlSrc = fetchurl { + url = "http://ghdl.free.fr/ghdl-0.28.tar.bz2"; + sha256 = "0l3ah3zw2yhr9rv9d5ck1cinsf11r28m6bzl2sdibngl2bgc2jsf"; + }; in stdenv.mkDerivation ({ @@ -75,7 +83,8 @@ stdenv.mkDerivation ({ [./pass-cxxcpp.patch ./libmudflap-cpp.patch] ++ optional noSysDirs ./no-sys-dirs.patch ++ optional (noSysDirs && langFortran) ./no-sys-dirs-fortran.patch - ++ optional langJava ./java-jvgenmain-link.patch; + ++ optional langJava ./java-jvgenmain-link.patch + ++ optional langVhdl ./ghdl-ortho-cflags.patch; inherit noSysDirs profiledCompiler staticCompiler crossStageStatic binutilsCross libcCross; @@ -86,6 +95,7 @@ stdenv.mkDerivation ({ ++ (optional (zlib != null) zlib) ++ (optional (boehmgc != null) boehmgc) ++ (optionals (cross != null) [binutilsCross]) + ++ (optionals (langVhdl != null) [gnat]) ; configureFlags = " @@ -100,6 +110,7 @@ stdenv.mkDerivation ({ ++ optional langFortran "fortran" ++ optional langJava "java" ++ optional langTreelang "treelang" + ++ optional langVhdl "vhdl" ) ) } @@ -108,6 +119,23 @@ stdenv.mkDerivation ({ "; #Above I added a hack on making the build different than the host. + postUnpack = if langVhdl then '' + tar xvf ${ghdlSrc} + mv ghdl-*/vhdl gcc*/gcc + rm -Rf ghdl-* + '' else ""; + + # Ghdl has some timestamps checks, storing file timestamps in '.cf' files. + # As we will change the timestamps to 1970-01-01 00:00:01, we also set the + # content of that .cf to that value. This way ghdl does not complain on + # the installed object files from the basic libraries (ieee, ...) + postInstallGhdl = if langVhdl then '' + pushd $out + find . -name "*.cf" -exec \ + sed 's/[0-9]*\.000" /19700101000001.000" /g' -i {} \; + popd + '' else ""; + # Needed for the cross compilation to work AR = "ar"; LD = "ld"; diff --git a/pkgs/development/compilers/gcc-4.3/ghdl-ortho-cflags.patch b/pkgs/development/compilers/gcc-4.3/ghdl-ortho-cflags.patch new file mode 100644 index 00000000000..14188083f76 --- /dev/null +++ b/pkgs/development/compilers/gcc-4.3/ghdl-ortho-cflags.patch @@ -0,0 +1,36 @@ +diff --git a/gcc/vhdl/Make-lang.in b/gcc/vhdl/Make-lang.in +index 8f481df..681ac59 100644 +--- a/gcc/vhdl/Make-lang.in ++++ b/gcc/vhdl/Make-lang.in +@@ -96,7 +96,7 @@ AGCC_GCCOBJ_DIR=../ + AGCC_INC_FLAGS=-I$(AGCC_GCCOBJ_DIR)/gcc -I$(AGCC_GCCSRC_DIR)/include \ + -I$(AGCC_GCCSRC_DIR)/gcc -I$(AGCC_GCCSRC_DIR)/gcc/config \ + -I$(AGCC_GCCSRC_DIR)/libcpp/include +-AGCC_CFLAGS=-g -Wall -DIN_GCC $(AGCC_INC_FLAGS) ++AGCC_CFLAGS=-g -Wall -DIN_GCC $(AGCC_INC_FLAGS) $(CFLAGS) + + AGCC_LOCAL_OBJS=ortho-lang.o + +@@ -140,7 +140,7 @@ ghdl$(exeext): force + + # Ghdl libraries. + ghdllib: ghdl$(exeext) $(GCC_PASSES) force +- $(MAKE_IN_VHDL) GRT_FLAGS="-O -g" ghdllib ++ $(MAKE_IN_VHDL) GRT_FLAGS="-O -g $(CFLAGS)" ghdllib + + # Build hooks: + +diff --git a/gcc/vhdl/Makefile.in b/gcc/vhdl/Makefile.in +index d754c6c..07abc4a 100644 +--- a/gcc/vhdl/Makefile.in ++++ b/gcc/vhdl/Makefile.in +@@ -80,7 +80,8 @@ T_CPPFLAGS = + X_ADAFLAGS = + T_ADAFLAGS = + +-ADAC = $(CC) ++# Never use the bootstrapped compiler, as it may not be built for ada ++ADAC = gcc + + ECHO = echo + CHMOD = chmod diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 4569ecf2093..efbe5fdb302 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -1939,6 +1939,16 @@ let inherit fetchurl stdenv; }); + ghdl = wrapGHDL (import ../development/compilers/gcc-4.3 { + inherit stdenv fetchurl texinfo gmp mpfr noSysDirs gnat; + name = "ghdl-0.28"; + langVhdl = true; + langCC = false; + langC = false; + profiledCompiler = false; + enableMultilib = false; + }); + /* Broken; fails because of unability to find its own symbols during linking @@ -2281,6 +2291,8 @@ let inherit fetchurl stdenv visualcpp windowssdk; }; + # All these wrappers: GCC, GNAT, GHDL, should be once merged into + # only one. wrapGCCWith = gccWrapper: glibc: baseGCC: gccWrapper { nativeTools = stdenv ? gcc && stdenv.gcc.nativeTools; nativeLibc = stdenv ? gcc && stdenv.gcc.nativeLibc; @@ -2293,6 +2305,17 @@ let wrapGCC = wrapGCCWith (import ../build-support/gcc-wrapper) glibc; wrapGNAT = wrapGCCWith (import ../build-support/gnat-wrapper) glibc; + wrapGHDLWith = gccWrapper: glibc: baseGCC: gccWrapper { + nativeTools = stdenv ? gcc && stdenv.gcc.nativeTools; + nativeLibc = stdenv ? gcc && stdenv.gcc.nativeLibc; + nativePrefix = if stdenv ? gcc then stdenv.gcc.nativePrefix else ""; + gcc = baseGCC; + libc = glibc; + inherit stdenv binutils coreutils zlib; + }; + + wrapGHDL = wrapGHDLWith (import ../build-support/ghdl-wrapper) glibc; + wrapGCCCross = {gcc, libc, binutils, cross, shell ? "", name ? "gcc-cross-wrapper"}: @@ -8312,11 +8335,6 @@ let inherit fetchurl stdenv readline; }; - ghdl = import ../applications/science/electronics/ghdl { - inherit fetchurl stdenv gnat; - gccSrc = gcc43.gcc.src; - }; - gtkwave = import ../applications/science/electronics/gtkwave { inherit fetchurl stdenv gperf pkgconfig bzip2; inherit (gtkLibs) gtk; From 0d949c6161dac9c74d47aec95ad18450db080397 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Llu=C3=ADs=20Batlle=20i=20Rossell?= Date: Tue, 22 Dec 2009 09:20:43 +0000 Subject: [PATCH 123/232] Adding gnat44 and ghdl to release.nix. I hope that will make hydra build them. svn path=/nixpkgs/branches/stdenv-updates/; revision=19076 --- pkgs/top-level/release.nix | 2 ++ 1 file changed, 2 insertions(+) diff --git a/pkgs/top-level/release.nix b/pkgs/top-level/release.nix index fa3d7c68225..627acd57f0a 100644 --- a/pkgs/top-level/release.nix +++ b/pkgs/top-level/release.nix @@ -173,6 +173,7 @@ in { gcc43_multi = ["x86_64-linux"]; gcc44 = linux; gcj44 = linux; + ghdl = linux; ghostscript = linux; ghostscriptX = linux; gimp = linux; @@ -181,6 +182,7 @@ in { glibcLocales = linux; glxinfo = linux; gnash = linux; + gnat44 = linux; gnugrep = all; gnum4 = all; gnumake = all; From 3e10ba6bb9904ae7f23c731a3acfce4ba4ad8dc2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Llu=C3=ADs=20Batlle=20i=20Rossell?= Date: Tue, 22 Dec 2009 09:23:17 +0000 Subject: [PATCH 124/232] Fixing an evaluation error: kernelPackages -> linuxPackages svn path=/nixpkgs/branches/stdenv-updates/; revision=19077 --- pkgs/build-support/vm/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/build-support/vm/default.nix b/pkgs/build-support/vm/default.nix index 1092812443c..fa33bd3d369 100644 --- a/pkgs/build-support/vm/default.nix +++ b/pkgs/build-support/vm/default.nix @@ -5,7 +5,7 @@ with pkgs; rec { - inherit (kernelPackages_2_6_32) kernel; + inherit (linuxPackages_2_6_32) kernel; klibcShrunk = pkgs.klibcShrunk.override { klibc = klibc_15; }; From bed103ef532ca7b92f665b8ef7e647fad2685f4c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Llu=C3=ADs=20Batlle=20i=20Rossell?= Date: Tue, 22 Dec 2009 11:49:20 +0000 Subject: [PATCH 125/232] Updating myEnv for the new crossCompiling stdenv, so it puts in the environment buildNativeInputs and not builtInputs. svn path=/nixpkgs/branches/stdenv-updates/; revision=19078 --- pkgs/misc/my-env/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/misc/my-env/default.nix b/pkgs/misc/my-env/default.nix index 647e5dcab3c..34a21a7e37b 100644 --- a/pkgs/misc/my-env/default.nix +++ b/pkgs/misc/my-env/default.nix @@ -62,7 +62,7 @@ mkDerivation { -e 's@trap.*@@' \ -i "$s" cat >> "$out/dev-envs/''${name/env-/}" << EOF - buildInputs="$buildInputs" + buildInputs="$buildNativeInputs" # the setup-new script wants to write some data to a temp file.. so just let it do that and tidy up afterwards tmp="\$("${pkgs.coreutils}/bin/mktemp" -d)" NIX_BUILD_TOP="\$tmp" From c0d379f69a4cade0f9f4d8ed18e2df3b76b13673 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Llu=C3=ADs=20Batlle=20i=20Rossell?= Date: Wed, 23 Dec 2009 08:55:32 +0000 Subject: [PATCH 126/232] Made dhcp build (removing its -Werror). gcc 4.4 complained on uninitializated variables. svn path=/nixpkgs/branches/stdenv-updates/; revision=19079 --- pkgs/tools/networking/dhcp/default.nix | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/pkgs/tools/networking/dhcp/default.nix b/pkgs/tools/networking/dhcp/default.nix index de6e08df7b6..14dccbe6896 100644 --- a/pkgs/tools/networking/dhcp/default.nix +++ b/pkgs/tools/networking/dhcp/default.nix @@ -20,6 +20,10 @@ stdenv.mkDerivation rec { # http://www.mail-archive.com/blfs-book@linuxfromscratch.org/msg13013.html NIX_CFLAGS_COMPILE = "-D_GNU_SOURCE"; + # It would automatically add -Werror, which disables build in gcc 4.4 + # due to an uninitialized variable. + CFLAGS = "-g -O2 -Wall"; + buildInputs = [makeWrapper]; postInstall = From 57e123fe6c963c3e99394018988fad4a09b60df6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Llu=C3=ADs=20Batlle=20i=20Rossell?= Date: Sat, 26 Dec 2009 11:18:59 +0000 Subject: [PATCH 127/232] Made pam_login build with gcc 4.4 (disabling its -Werror) svn path=/nixpkgs/branches/stdenv-updates/; revision=19130 --- pkgs/os-specific/linux/pam_login/default.nix | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/pkgs/os-specific/linux/pam_login/default.nix b/pkgs/os-specific/linux/pam_login/default.nix index 954606eef6c..724e316a15a 100644 --- a/pkgs/os-specific/linux/pam_login/default.nix +++ b/pkgs/os-specific/linux/pam_login/default.nix @@ -8,5 +8,11 @@ stdenv.mkDerivation { sha256 = "1w2hpwjhmwjhf8rg789xpl0hibahqlr3ccivfy3m4kgrm5gf04kv"; }; + # To overcome a gcc 4.4 warning: + # "#ident is a deprecated GCC extension" + patchPhase = '' + sed -i s/-Werror// configure + ''; + buildInputs = [pam]; } From 1452ce46a478f956a687379561f2b3c39ba14533 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Llu=C3=ADs=20Batlle=20i=20Rossell?= Date: Mon, 28 Dec 2009 10:35:34 +0000 Subject: [PATCH 128/232] Fixing the kernel configuration for the sheevaplug svn path=/nixpkgs/branches/stdenv-updates/; revision=19137 --- pkgs/os-specific/linux/kernel/generic.nix | 2 +- pkgs/top-level/platforms.nix | 23 ++++++++++++++++++++++- 2 files changed, 23 insertions(+), 2 deletions(-) diff --git a/pkgs/os-specific/linux/kernel/generic.nix b/pkgs/os-specific/linux/kernel/generic.nix index 2d9af1b4bd8..3fda2bc3f7c 100644 --- a/pkgs/os-specific/linux/kernel/generic.nix +++ b/pkgs/os-specific/linux/kernel/generic.nix @@ -74,7 +74,7 @@ stdenv.mkDerivation { in lib.concatStringsSep "\n" ([config] ++ configFromPatches); # For UML, just ignore all options that don't apply (I'm lazy). - ignoreConfigErrors = userModeLinux; + ignoreConfigErrors = (userModeLinux || stdenv.system = "armv5tel-linux"); buildInputs = [ perl mktemp ] ++ lib.optional (platform.uboot != null) [platform.uboot]; diff --git a/pkgs/top-level/platforms.nix b/pkgs/top-level/platforms.nix index 539b83a7657..8664b6d5778 100644 --- a/pkgs/top-level/platforms.nix +++ b/pkgs/top-level/platforms.nix @@ -21,11 +21,32 @@ with pkgs; sheevaplug = assert system == "armv5tel-linux"; { name = "sheevaplug"; + kernelBaseConfig = "kirkwood_defconfig"; + kernelArch = "arm"; + kernelExtraConfig = + '' + # Fail to build + DRM n + SCSI_ADVANSYS n + USB_ISP1362_HCD n + SND_SOC n + SND_ALI5451 n + FB_SAVAGE n + SCSI_NSP32 n + ATA_SFF n + SUNGEM n + IRDA n + ATM_HE n + SCSI_ACARD n + BLK_DEV_CMD640_ENHANCED n + ''; inherit uboot; }; - platformVersatileARM = assert system == "armv5tel-linux"; { + versatileARM = assert system == "armv5tel-linux"; { name = "versatileARM"; + kernelBaseConfig = "versatile_defconfig"; + kernelArch = "arm"; uboot = null; }; } From d5aa5641de4d16688405c51640d3ebbd3b468fab Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Llu=C3=ADs=20Batlle=20i=20Rossell?= Date: Mon, 28 Dec 2009 11:26:23 +0000 Subject: [PATCH 129/232] Fixing the evaluation of the linux kernel (= /= ==) svn path=/nixpkgs/branches/stdenv-updates/; revision=19138 --- pkgs/os-specific/linux/kernel/generic.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/os-specific/linux/kernel/generic.nix b/pkgs/os-specific/linux/kernel/generic.nix index 3fda2bc3f7c..be5fda41aac 100644 --- a/pkgs/os-specific/linux/kernel/generic.nix +++ b/pkgs/os-specific/linux/kernel/generic.nix @@ -73,8 +73,8 @@ stdenv.mkDerivation { map ({extraConfig ? "", ...}: extraConfig) kernelPatches; in lib.concatStringsSep "\n" ([config] ++ configFromPatches); - # For UML, just ignore all options that don't apply (I'm lazy). - ignoreConfigErrors = (userModeLinux || stdenv.system = "armv5tel-linux"); + # For UML and non-PC, just ignore all options that don't apply (We are lazy). + ignoreConfigErrors = (userModeLinux || stdenv.system == "armv5tel-linux"); buildInputs = [ perl mktemp ] ++ lib.optional (platform.uboot != null) [platform.uboot]; From 0748d96eff711673307f10d243de353cdb99f5d6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Llu=C3=ADs=20Batlle=20i=20Rossell?= Date: Mon, 28 Dec 2009 17:47:01 +0000 Subject: [PATCH 130/232] Adding initrd support into the sheevaplug kernel svn path=/nixpkgs/branches/stdenv-updates/; revision=19140 --- pkgs/top-level/platforms.nix | 3 +++ 1 file changed, 3 insertions(+) diff --git a/pkgs/top-level/platforms.nix b/pkgs/top-level/platforms.nix index 8664b6d5778..ba599a11763 100644 --- a/pkgs/top-level/platforms.nix +++ b/pkgs/top-level/platforms.nix @@ -25,6 +25,9 @@ with pkgs; kernelArch = "arm"; kernelExtraConfig = '' + BLK_DEV_RAM y + BLK_DEV_INITRD y + # Fail to build DRM n SCSI_ADVANSYS n From 77ff62b2d67a06c46b0a6712b91a6ce5f59ecd16 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Llu=C3=ADs=20Batlle=20i=20Rossell?= Date: Mon, 28 Dec 2009 22:29:17 +0000 Subject: [PATCH 131/232] Adding MD kernel option for the sheevaplug svn path=/nixpkgs/branches/stdenv-updates/; revision=19141 --- pkgs/top-level/platforms.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/pkgs/top-level/platforms.nix b/pkgs/top-level/platforms.nix index ba599a11763..a80c328ea00 100644 --- a/pkgs/top-level/platforms.nix +++ b/pkgs/top-level/platforms.nix @@ -27,6 +27,7 @@ with pkgs; '' BLK_DEV_RAM y BLK_DEV_INITRD y + MD y # Fail to build DRM n From 2e9a37cce197bd44d79286a7224b2b8d08c1d551 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= Date: Tue, 5 Jan 2010 11:27:50 +0000 Subject: [PATCH 132/232] bash: Make `update-patch-set.sh' executable. svn path=/nixpkgs/branches/stdenv-updates/; revision=19221 --- pkgs/shells/bash/update-patch-set.sh | 0 1 file changed, 0 insertions(+), 0 deletions(-) mode change 100644 => 100755 pkgs/shells/bash/update-patch-set.sh diff --git a/pkgs/shells/bash/update-patch-set.sh b/pkgs/shells/bash/update-patch-set.sh old mode 100644 new mode 100755 From 1bc4535ed9b4ef83f5aeec13fb8ce8669f6a6270 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= Date: Tue, 5 Jan 2010 11:27:54 +0000 Subject: [PATCH 133/232] GNU Readline 6.1. svn path=/nixpkgs/branches/stdenv-updates/; revision=19222 --- pkgs/development/libraries/readline/readline-patches.nix | 4 ---- pkgs/development/libraries/readline/readline6.nix | 6 +++--- 2 files changed, 3 insertions(+), 7 deletions(-) diff --git a/pkgs/development/libraries/readline/readline-patches.nix b/pkgs/development/libraries/readline/readline-patches.nix index 701d5fc94ce..b8019fb3350 100644 --- a/pkgs/development/libraries/readline/readline-patches.nix +++ b/pkgs/development/libraries/readline/readline-patches.nix @@ -1,8 +1,4 @@ # Automatically generated by `update-patch-set.sh'; do not edit. patch: [ -(patch "001" "1wbqnsxm4nd8rjckl8mdqcb82pphnsj2yxs4f2nf88kyhwzy544i") -(patch "002" "070c3jz8fs5q17yy3l70wxklgnw6hp5ac9zhb0jdnrr9hf0wi6kl") -(patch "003" "1gwssafy42hcijcynmlpqsasch7kqxbv2cqw0p7f9p2y6vp9ng2j") -(patch "004" "1yzaycdfqjs5jdl0k7qg9cx47bdlq9xs0m6lfq42ys3yscmb1jzm") ] diff --git a/pkgs/development/libraries/readline/readline6.nix b/pkgs/development/libraries/readline/readline6.nix index 60232a8b80b..18118abedd9 100644 --- a/pkgs/development/libraries/readline/readline6.nix +++ b/pkgs/development/libraries/readline/readline6.nix @@ -1,11 +1,11 @@ { fetchurl, stdenv, ncurses }: stdenv.mkDerivation rec { - name = "readline-6.0"; + name = "readline-6.1"; src = fetchurl { url = "mirror://gnu/readline/${name}.tar.gz"; - sha256 = "1pn13j6f9376kwki69050x3zh62yb1w31l37rws5nwr5q02xk68i"; + sha256 = "0sd97zqdh4fc0zzgzpskkczwa2fmb0s89qdyndb6vkbcq04gdjph"; }; propagatedBuildInputs = [ncurses]; @@ -17,7 +17,7 @@ stdenv.mkDerivation rec { (let patch = nr: sha256: fetchurl { - url = "mirror://gnu/readline/readline-6.0-patches/readline60-${nr}"; + url = "mirror://gnu/readline/${name}-patches/readline61-${nr}"; inherit sha256; }; in From eea396e744bbca432287add7843ad06df40c0fb9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= Date: Tue, 5 Jan 2010 11:27:57 +0000 Subject: [PATCH 134/232] GNU Bash 4.1. svn path=/nixpkgs/branches/stdenv-updates/; revision=19223 --- pkgs/shells/bash/bash-patches.nix | 33 ------------------------------- pkgs/shells/bash/default.nix | 8 ++++---- 2 files changed, 4 insertions(+), 37 deletions(-) diff --git a/pkgs/shells/bash/bash-patches.nix b/pkgs/shells/bash/bash-patches.nix index 93a4f982e17..b8019fb3350 100644 --- a/pkgs/shells/bash/bash-patches.nix +++ b/pkgs/shells/bash/bash-patches.nix @@ -1,37 +1,4 @@ # Automatically generated by `update-patch-set.sh'; do not edit. patch: [ -(patch "001" "06q3y3i2kp09bnjd99lxa95psdmj2haril7pxhdbz9sx9qh19dg3") -(patch "002" "1x2w3mmz1qga30zf95wmnpjsdp8cnd2ljl29mfq9r6q1cvjifla9") -(patch "003" "1n3vg6p4nc7kd896s0fp48y9f6ddf3bkpdqzgmdpgqxi243c8073") -(patch "004" "1bnja962g9isrqhrw8dzxsx7ssvc2ayk1a9vmg2dx6gai8gys0sb") -(patch "005" "0l4l62riap2kqy20789x7f6bfx361yvixds0gnh10rli4v05h1j2") -(patch "006" "1r429n2b5cs2gi5zjv1hlr8k7jplnjg3y563369z799x1x9651y7") -(patch "007" "0vb11vy8r5ayr88hrlli8xj2qcird1qg8l99nknrwnni4jg5b3am") -(patch "008" "1z6q0lq1yxwpf6nf1z39jbyycv6cfv6gwpaqmgg7pnw31z029nw7") -(patch "009" "0avyvz8rkj66x715zf1b3w2pgbwwzaj977v9pcrscjksc50c4iq0") -(patch "010" "05j8xq2s1wnii1za1s6nglzga9xp7q1dmcs1bqqrlggz8mmnyhgj") -(patch "011" "1m2lhfhy6bl3j88qi9kcn6n1qb439n8pmhl4cqsmi2g8xwli9j7z") -(patch "012" "1ww327ga4s7607jgr0xd6nh8bg4xgf2vk63p2yy9b1iaq7lxdi5j") -(patch "013" "0fjc3qj4q6q2zfq1qmiarp6s4hhbh80q47xwws0mvgpks7wwl33n") -(patch "014" "16n3l7627n8b1p9s9ss9fcj7nbn1s6yndwmlh3v751knj73c9v8k") -(patch "015" "0548fm4vd3sv3y4g3csysm1mm7jk5hvyfwglw1c0pj2lvyzf583v") -(patch "016" "06fmf6jmgzl0x1vd7pkyi90sa1wjywkd42gi1phqmrwgj9p96flg") -(patch "017" "08gh63spac39z90n1d8gpx571x7n4bwzp2yqm3ik9c1rcgz2mvib") -(patch "018" "0cg6q3fn0j8kzd9w7plnwrbyxv8hzwx9vjp3ij9vx1p3n26vpcqx") -(patch "019" "0xbl1f5l04pmrs5dsq2nbpcs58zgz0f48nj4hqic143h0y7r8jah") -(patch "020" "11371hsarqc5czij1lmkj79c0h1b7hninkzrzmqpr1hnwgmrm6hw") -(patch "021" "0k8ii0yb4zhxmc90n3y2wpkczrxh7j1avjflnsi42j8hidpjsiq2") -(patch "022" "04lh6n91bif6wbcmizps40yc9qwfw720xq3vmmrkz1m13b3isnh4") -(patch "023" "11nwbnp4gmsjw46gq9gahzlbdagl3r1vdvcxvxfwlqppflim42sq") -(patch "024" "1aqp6z2mlp1m921ckgiiqd42fnvjrhil4bkkw58vjcgygv2bm7m5") -(patch "025" "023aixd4v3adsvnni9jf2qcfgpsza544k76k2ny78d036vb00ygp") -(patch "026" "1jzn8185iw49126mngbz8007dd6ca9m04n5yhhc5c9b6ki0g9gd9") -(patch "027" "1wkp9ci0ccvgmnjyg5z3qkcfh2z7p3rgdm8cc5k8mk5sn5mw4pgn") -(patch "028" "06id09sb9rvlw7phibs6aw7ncjddikia0mjr9jdis75byfx2q8jv") -(patch "029" "0rpsam2m9mxnxcgcdr461sijprqi9wv6i9gg5c7c46gwj4gs5x8m") -(patch "030" "1wwajl7fb5vy25m08fp4jshgqdh02m66zj7yq8i0j65675ldx1bz") -(patch "031" "037viyi9n9hnc5yyfgrr1ssvqr2vkasn08x3qvyxak7f0s4k2gv0") -(patch "032" "1pma7w85vq831izaqc4p9831hfsfl31s4n155azkrxywpqv4fsza") -(patch "033" "1x845nfqg8wr1x4wls9jdrzdq1lbig02w07wpmfr4h4r6bhgd5n4") ] diff --git a/pkgs/shells/bash/default.nix b/pkgs/shells/bash/default.nix index 59b3ef73275..2b373548ac1 100644 --- a/pkgs/shells/bash/default.nix +++ b/pkgs/shells/bash/default.nix @@ -3,11 +3,11 @@ assert interactive -> readline != null; stdenv.mkDerivation rec { - name = "bash-4.0-p28"; + name = "bash-4.1"; src = fetchurl { - url = "mirror://gnu/bash/bash-4.0.tar.gz"; - sha256 = "0605ql0ih55gpi0vfvcm45likzjafa4wjnkxqwq51aa0ysad74wp"; + url = "mirror://gnu/bash/${name}.tar.gz"; + sha256 = "1np1ggp1lv8idwfx3mcxl9rhadqdf4h3x4isa3dk8v9wm0j72qiz"; }; NIX_CFLAGS_COMPILE = '' @@ -25,7 +25,7 @@ stdenv.mkDerivation rec { let patch = nr: sha256: fetchurl { - url = "mirror://gnu/bash/bash-4.0-patches/bash40-${nr}"; + url = "mirror://gnu/bash/bash-4.1-patches/bash41-${nr}"; inherit sha256; }; in From 9fefb472c59959a06d1e3d6017ba4ca34cef224b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= Date: Wed, 6 Jan 2010 13:50:51 +0000 Subject: [PATCH 135/232] GNU Patch 2.6.1. svn path=/nixpkgs/branches/stdenv-updates/; revision=19260 --- pkgs/tools/text/gnupatch/default.nix | 38 +++++++++++++++++++++------- 1 file changed, 29 insertions(+), 9 deletions(-) diff --git a/pkgs/tools/text/gnupatch/default.nix b/pkgs/tools/text/gnupatch/default.nix index 26e0b906e52..6d89b119f47 100644 --- a/pkgs/tools/text/gnupatch/default.nix +++ b/pkgs/tools/text/gnupatch/default.nix @@ -1,15 +1,35 @@ {stdenv, fetchurl}: -stdenv.mkDerivation ( { - name = "gnupatch-2.5.4"; +stdenv.mkDerivation rec { + name = "patch-2.6.1"; + src = fetchurl { - url = mirror://gnu/patch/patch-2.5.4.tar.gz; - md5 = "ee5ae84d115f051d87fcaaef3b4ae782"; + url = "mirror://gnu/patch/${name}.tar.gz"; + sha256 = "1fc1jyq80nswkf492fiqdbl2bhvlw2wb44ghqlfd3zngx4qkfmni"; }; - # Hack around ancient configure script: doesn't build on many newer - # platforms unless a platform is specified. - configureFlags = "dummy"; + doCheck = true; - patches = if stdenv.isDarwin then [./setmode.patch] else []; -} // (if stdenv.isDarwin then { ac_cv_exeext = "" ; } else {} ) ) + meta = { + description = "GNU Patch, a program to apply differences to files"; + + longDescription = + '' GNU Patch takes a patch file containing a difference listing + produced by the diff program and applies those differences to one or + more original files, producing patched versions. + ''; + + homepage = http://savannah.gnu.org/projects/patch; + + license = "GPLv3+"; + + maintainers = [ stdenv.lib.maintainers.ludo ]; + platforms = stdenv.lib.platforms.all; + }; +} + +# XXX: These Darwin hacks were useful with 2.5.4; assuming they're no +# longer useful. +# +# patches = if stdenv.isDarwin then [./setmode.patch] else []; +#} // (if stdenv.isDarwin then { ac_cv_exeext = "" ; } else {} ) ) From 536f8609342e15560d206d83bd208d00785a9d31 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Llu=C3=ADs=20Batlle=20i=20Rossell?= Date: Wed, 6 Jan 2010 22:08:52 +0000 Subject: [PATCH 136/232] Fixing the rule that made ncurses build without unicode support only under cygwin and cross building. svn path=/nixpkgs/branches/stdenv-updates/; revision=19276 --- pkgs/top-level/all-packages.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 887ec12fe0b..e3c32bac3f7 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -4378,7 +4378,7 @@ let inherit fetchurl stdenv; # The "! (stdenv ? cross)" is for the cross-built arm ncurses, which # don't build for me in unicode. - unicode = (system != "i686-cygwin" && ! (stdenv ? cross)); + unicode = (system != "i686-cygwin" && ! (crossSystem == null)); }; neon = neon026; From 1dbba27faacef30d0b656c1bd11f5e23b391fb93 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Llu=C3=ADs=20Batlle=20i=20Rossell?= Date: Wed, 6 Jan 2010 22:20:20 +0000 Subject: [PATCH 137/232] Now I'm yes fixing the inclusion of wide char support. It should be disabled only in i686-cygwin or cross compiling. svn path=/nixpkgs/branches/stdenv-updates/; revision=19277 --- pkgs/top-level/all-packages.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index e3c32bac3f7..3d7031fff8a 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -4378,7 +4378,7 @@ let inherit fetchurl stdenv; # The "! (stdenv ? cross)" is for the cross-built arm ncurses, which # don't build for me in unicode. - unicode = (system != "i686-cygwin" && ! (crossSystem == null)); + unicode = (system != "i686-cygwin" && crossSystem == null); }; neon = neon026; From ab765006459e392ef6f6f228d2b1e0d2cc470c1d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Llu=C3=ADs=20Batlle=20i=20Rossell?= Date: Thu, 7 Jan 2010 14:08:39 +0000 Subject: [PATCH 138/232] Disabling patch doCheck, because they fail. To be fixed some day, with a bug report to gnupatch if required. svn path=/nixpkgs/branches/stdenv-updates/; revision=19286 --- pkgs/tools/text/gnupatch/default.nix | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/pkgs/tools/text/gnupatch/default.nix b/pkgs/tools/text/gnupatch/default.nix index 6d89b119f47..40614be8ea9 100644 --- a/pkgs/tools/text/gnupatch/default.nix +++ b/pkgs/tools/text/gnupatch/default.nix @@ -8,7 +8,9 @@ stdenv.mkDerivation rec { sha256 = "1fc1jyq80nswkf492fiqdbl2bhvlw2wb44ghqlfd3zngx4qkfmni"; }; - doCheck = true; + # Fails on armv5tel-linux at least, maybe on more platforms + # Some tests require 'ed', additionally. + doCheck = false; meta = { description = "GNU Patch, a program to apply differences to files"; From 792eeca654d6baae8c902f47a69b7c50a62b7db5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= Date: Fri, 8 Jan 2010 21:22:10 +0000 Subject: [PATCH 139/232] GNU Coreutils 8.3. svn path=/nixpkgs/branches/stdenv-updates/; revision=19314 --- pkgs/tools/misc/coreutils/default.nix | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/pkgs/tools/misc/coreutils/default.nix b/pkgs/tools/misc/coreutils/default.nix index 40d6a90c6a4..8b2def61e2e 100644 --- a/pkgs/tools/misc/coreutils/default.nix +++ b/pkgs/tools/misc/coreutils/default.nix @@ -1,20 +1,18 @@ {stdenv, fetchurl, aclSupport ? false, acl, perl, gmp}: stdenv.mkDerivation rec { - name = "coreutils-8.2"; + name = "coreutils-8.3"; src = fetchurl { url = "mirror://gnu/coreutils/${name}.tar.gz"; - sha256 = "0hagmpqm3wyx0hhw7i0mswary5w8flrk2vxhqfgfskam2rfhbhyk"; + sha256 = "0lghmjm6mmzxha7hdn2zz2dg6gsd4gqydp720p0gagr21q7lz9hh"; }; buildInputs = [ perl gmp ] ++ stdenv.lib.optional aclSupport acl; # The tests are known broken on Cygwin # (http://thread.gmane.org/gmane.comp.gnu.core-utils.bugs/19025). - # For the rest, wait for upstream reply at: - # http://thread.gmane.org/gmane.comp.gnu.core-utils.bugs/19024 . - doCheck = false; + doCheck = (stdenv.system != "i686-cygwin"); meta = { homepage = http://www.gnu.org/software/coreutils/; From a9ced90be950063eba1f5f00933dbd1e81c16467 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= Date: Fri, 8 Jan 2010 21:28:30 +0000 Subject: [PATCH 140/232] GNU Patch: Use GNU ed and re-enable the tests. svn path=/nixpkgs/branches/stdenv-updates/; revision=19315 --- pkgs/tools/text/gnupatch/default.nix | 14 ++++---------- pkgs/tools/text/gnupatch/setmode.patch | 20 -------------------- pkgs/top-level/all-packages.nix | 2 +- 3 files changed, 5 insertions(+), 31 deletions(-) delete mode 100644 pkgs/tools/text/gnupatch/setmode.patch diff --git a/pkgs/tools/text/gnupatch/default.nix b/pkgs/tools/text/gnupatch/default.nix index 40614be8ea9..c7307762353 100644 --- a/pkgs/tools/text/gnupatch/default.nix +++ b/pkgs/tools/text/gnupatch/default.nix @@ -1,4 +1,4 @@ -{stdenv, fetchurl}: +{ stdenv, fetchurl, ed }: stdenv.mkDerivation rec { name = "patch-2.6.1"; @@ -8,9 +8,9 @@ stdenv.mkDerivation rec { sha256 = "1fc1jyq80nswkf492fiqdbl2bhvlw2wb44ghqlfd3zngx4qkfmni"; }; - # Fails on armv5tel-linux at least, maybe on more platforms - # Some tests require 'ed', additionally. - doCheck = false; + buildInputs = (stdenv.lib.optional doCheck ed); + + doCheck = true; meta = { description = "GNU Patch, a program to apply differences to files"; @@ -29,9 +29,3 @@ stdenv.mkDerivation rec { platforms = stdenv.lib.platforms.all; }; } - -# XXX: These Darwin hacks were useful with 2.5.4; assuming they're no -# longer useful. -# -# patches = if stdenv.isDarwin then [./setmode.patch] else []; -#} // (if stdenv.isDarwin then { ac_cv_exeext = "" ; } else {} ) ) diff --git a/pkgs/tools/text/gnupatch/setmode.patch b/pkgs/tools/text/gnupatch/setmode.patch deleted file mode 100644 index 83b7022e18d..00000000000 --- a/pkgs/tools/text/gnupatch/setmode.patch +++ /dev/null @@ -1,20 +0,0 @@ -diff -rc patch-2.5.4-orig/pch.c patch-2.5.4/pch.c -*** patch-2.5.4-orig/pch.c Mon Aug 30 08:20:08 1999 ---- patch-2.5.4/pch.c Fri Jul 14 13:11:26 2006 -*************** -*** 105,111 **** - if (!filename || !*filename || strEQ (filename, "-")) - { - file_offset stdin_pos; -! #if HAVE_SETMODE - if (binary_transput) - { - if (isatty (STDIN_FILENO)) ---- 105,111 ---- - if (!filename || !*filename || strEQ (filename, "-")) - { - file_offset stdin_pos; -! #if 0 && HAVE_SETMODE - if (binary_transput) - { - if (isatty (STDIN_FILENO)) diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 3d7031fff8a..109724fe53e 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -737,7 +737,7 @@ let }); gnupatch = useFromStdenv "patch" (import ../tools/text/gnupatch { - inherit fetchurl stdenv; + inherit fetchurl stdenv ed; }); gnupg = import ../tools/security/gnupg { From 33618e21c57004bfc39178723cfc93cae52696c8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Llu=C3=ADs=20Batlle=20i=20Rossell?= Date: Wed, 13 Jan 2010 13:50:32 +0000 Subject: [PATCH 141/232] Updating ghdl to 0.29. I feel impelled to write nicer expressions for it. svn path=/nixpkgs/branches/stdenv-updates/; revision=19395 --- pkgs/development/compilers/gcc-4.3/default.nix | 4 ++-- pkgs/top-level/all-packages.nix | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/pkgs/development/compilers/gcc-4.3/default.nix b/pkgs/development/compilers/gcc-4.3/default.nix index 1b2def10da0..815bbde9871 100644 --- a/pkgs/development/compilers/gcc-4.3/default.nix +++ b/pkgs/development/compilers/gcc-4.3/default.nix @@ -51,8 +51,8 @@ let crossNameAddon = if (cross != null) then "-${cross.config}" + stageNameAddon else ""; ghdlSrc = fetchurl { - url = "http://ghdl.free.fr/ghdl-0.28.tar.bz2"; - sha256 = "0l3ah3zw2yhr9rv9d5ck1cinsf11r28m6bzl2sdibngl2bgc2jsf"; + url = "http://ghdl.free.fr/ghdl-0.29.tar.bz2"; + sha256 = "15mlinr1lwljwll9ampzcfcrk9bk0qpdks1kxlvb70xf9zhh2jva"; }; in diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 109724fe53e..d089bbc296b 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -1941,7 +1941,7 @@ let ghdl = wrapGHDL (import ../development/compilers/gcc-4.3 { inherit stdenv fetchurl texinfo gmp mpfr noSysDirs gnat; - name = "ghdl-0.28"; + name = "ghdl-0.29"; langVhdl = true; langCC = false; langC = false; From 951ec3ce51399f259908370a3704fbf750fede28 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= Date: Thu, 14 Jan 2010 10:09:39 +0000 Subject: [PATCH 142/232] GNU Coreutils 8.4. svn path=/nixpkgs/branches/stdenv-updates/; revision=19429 --- pkgs/tools/misc/coreutils/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/tools/misc/coreutils/default.nix b/pkgs/tools/misc/coreutils/default.nix index 8b2def61e2e..67dd02ab422 100644 --- a/pkgs/tools/misc/coreutils/default.nix +++ b/pkgs/tools/misc/coreutils/default.nix @@ -1,11 +1,11 @@ {stdenv, fetchurl, aclSupport ? false, acl, perl, gmp}: stdenv.mkDerivation rec { - name = "coreutils-8.3"; + name = "coreutils-8.4"; src = fetchurl { url = "mirror://gnu/coreutils/${name}.tar.gz"; - sha256 = "0lghmjm6mmzxha7hdn2zz2dg6gsd4gqydp720p0gagr21q7lz9hh"; + sha256 = "0zq11lykc7hfs9nsdnb8gqk354l82hswqj38607mvwj3b0zqvc4b"; }; buildInputs = [ perl gmp ] ++ stdenv.lib.optional aclSupport acl; From 7c8062b8a2f429eae675dbca103cf554f551c6e0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= Date: Thu, 14 Jan 2010 10:09:45 +0000 Subject: [PATCH 143/232] GNU Patch: Try fix for Darwin. svn path=/nixpkgs/branches/stdenv-updates/; revision=19430 --- pkgs/tools/text/gnupatch/default.nix | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/pkgs/tools/text/gnupatch/default.nix b/pkgs/tools/text/gnupatch/default.nix index c7307762353..5dc11bdc470 100644 --- a/pkgs/tools/text/gnupatch/default.nix +++ b/pkgs/tools/text/gnupatch/default.nix @@ -3,10 +3,17 @@ stdenv.mkDerivation rec { name = "patch-2.6.1"; - src = fetchurl { - url = "mirror://gnu/patch/${name}.tar.gz"; - sha256 = "1fc1jyq80nswkf492fiqdbl2bhvlw2wb44ghqlfd3zngx4qkfmni"; - }; + src = + if stdenv.isDarwin + then fetchurl { + # Temporary fix for + # http://lists.gnu.org/archive/html/bug-patch/2010-01/msg00004.html . + url = "ftp://alpha.gnu.org/patch/patch-2.6.1-2-g2c4e3ec.tar.gz"; + sha256 = "1rspyzrik5cnav3m2fxr8146bsq4mc0yw4x0r8nkl2x7i052yr2c"; + } else fetchurl { + url = "mirror://gnu/patch/${name}.tar.gz"; + sha256 = "1fc1jyq80nswkf492fiqdbl2bhvlw2wb44ghqlfd3zngx4qkfmni"; + }; buildInputs = (stdenv.lib.optional doCheck ed); From c161cd1773e6411054047b1dd2a9544b0b05b0d1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= Date: Thu, 14 Jan 2010 12:46:10 +0000 Subject: [PATCH 144/232] GNU Patch: Fix typo. svn path=/nixpkgs/branches/stdenv-updates/; revision=19432 --- pkgs/tools/text/gnupatch/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/tools/text/gnupatch/default.nix b/pkgs/tools/text/gnupatch/default.nix index 5dc11bdc470..b97c216df2b 100644 --- a/pkgs/tools/text/gnupatch/default.nix +++ b/pkgs/tools/text/gnupatch/default.nix @@ -8,7 +8,7 @@ stdenv.mkDerivation rec { then fetchurl { # Temporary fix for # http://lists.gnu.org/archive/html/bug-patch/2010-01/msg00004.html . - url = "ftp://alpha.gnu.org/patch/patch-2.6.1-2-g2c4e3ec.tar.gz"; + url = "ftp://alpha.gnu.org/gnu/patch/patch-2.6.1-2-g2c4e3ec.tar.gz"; sha256 = "1rspyzrik5cnav3m2fxr8146bsq4mc0yw4x0r8nkl2x7i052yr2c"; } else fetchurl { url = "mirror://gnu/patch/${name}.tar.gz"; From aaa4eafcbf283bf1db1220095852124642b0edf2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Llu=C3=ADs=20Batlle=20i=20Rossell?= Date: Thu, 14 Jan 2010 23:03:31 +0000 Subject: [PATCH 145/232] Moving most of the ghdl logic outside the middle of the gcc expression. Agreed on a final naming logic for the ghdl package: ghdl-wrapper-0.29 svn path=/nixpkgs/branches/stdenv-updates/; revision=19450 --- .../development/compilers/gcc-4.3/default.nix | 56 +++++++++++-------- pkgs/top-level/all-packages.nix | 3 +- 2 files changed, 35 insertions(+), 24 deletions(-) diff --git a/pkgs/development/compilers/gcc-4.3/default.nix b/pkgs/development/compilers/gcc-4.3/default.nix index 815bbde9871..6aa79625479 100644 --- a/pkgs/development/compilers/gcc-4.3/default.nix +++ b/pkgs/development/compilers/gcc-4.3/default.nix @@ -30,6 +30,7 @@ with stdenv.lib; let version = "4.3.4"; + crossConfigureFlags = "--target=${cross.config}" + (if crossStageStatic then @@ -49,11 +50,6 @@ let stageNameAddon = if (crossStageStatic) then "-stage-static" else "-stage-final"; crossNameAddon = if (cross != null) then "-${cross.config}" + stageNameAddon else ""; - - ghdlSrc = fetchurl { - url = "http://ghdl.free.fr/ghdl-0.29.tar.bz2"; - sha256 = "15mlinr1lwljwll9ampzcfcrk9bk0qpdks1kxlvb70xf9zhh2jva"; - }; in stdenv.mkDerivation ({ @@ -119,23 +115,6 @@ stdenv.mkDerivation ({ "; #Above I added a hack on making the build different than the host. - postUnpack = if langVhdl then '' - tar xvf ${ghdlSrc} - mv ghdl-*/vhdl gcc*/gcc - rm -Rf ghdl-* - '' else ""; - - # Ghdl has some timestamps checks, storing file timestamps in '.cf' files. - # As we will change the timestamps to 1970-01-01 00:00:01, we also set the - # content of that .cf to that value. This way ghdl does not complain on - # the installed object files from the basic libraries (ieee, ...) - postInstallGhdl = if langVhdl then '' - pushd $out - find . -name "*.cf" -exec \ - sed 's/[0-9]*\.000" /19700101000001.000" /g' -i {} \; - popd - '' else ""; - # Needed for the cross compilation to work AR = "ar"; LD = "ld"; @@ -152,10 +131,43 @@ stdenv.mkDerivation ({ license = "GPL/LGPL"; description = "GNU Compiler Collection, 4.3.x"; }; + } // (if langJava then { postConfigure = '' make configure-gcc sed -i gcc/Makefile -e 's@^CFLAGS = .*@& -I${zlib}/include@ ; s@^LDFLAGS = .*@& -L${zlib}/lib@' sed -i gcc/Makefile -e 's@^CFLAGS = .*@& -I${boehmgc}/include@ ; s@^LDFLAGS = .*@& -L${boehmgc}/lib -lgc@' ''; +} else {}) +// (if langVhdl then rec { + name = "ghdl-0.29"; + + ghdlSrc = fetchurl { + url = "http://ghdl.free.fr/ghdl-0.29.tar.bz2"; + sha256 = "15mlinr1lwljwll9ampzcfcrk9bk0qpdks1kxlvb70xf9zhh2jva"; + }; + + # Ghdl has some timestamps checks, storing file timestamps in '.cf' files. + # As we will change the timestamps to 1970-01-01 00:00:01, we also set the + # content of that .cf to that value. This way ghdl does not complain on + # the installed object files from the basic libraries (ieee, ...) + postInstallGhdl = '' + pushd $out + find . -name "*.cf" -exec \ + sed 's/[0-9]*\.000" /19700101000001.000" /g' -i {} \; + popd + ''; + + postUnpack = '' + tar xvf ${ghdlSrc} + mv ghdl-*/vhdl gcc*/gcc + rm -Rf ghdl-* + ''; + + meta = { + homepage = "http://ghdl.free.fr/"; + license = "GPLv2+"; + description = "Complete VHDL simulator, using the GCC technology"; + }; + } else {})) diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index bb0efb49915..cc23bcde235 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -1923,7 +1923,6 @@ let gfortran = gfortran43; gfortran40 = wrapGCC (gcc40.gcc.override { - name = "gfortran"; langFortran = true; langCC = false; inherit gmp mpfr; @@ -1998,7 +1997,7 @@ let ghdl = wrapGHDL (import ../development/compilers/gcc-4.3 { inherit stdenv fetchurl texinfo gmp mpfr noSysDirs gnat; - name = "ghdl-0.29"; + name = "ghdl"; langVhdl = true; langCC = false; langC = false; From 61be82ffd081936055f57c4836e7cc9964f07090 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Llu=C3=ADs=20Batlle=20i=20Rossell?= Date: Fri, 15 Jan 2010 23:22:28 +0000 Subject: [PATCH 146/232] Updating the ghdl related expressions: - Adding ghdl with gcc 4.4 (with a patch I built for it to work) - Adding me as maintainer to both gccs and ghdl svn path=/nixpkgs/branches/stdenv-updates/; revision=19475 --- .../development/compilers/gcc-4.3/default.nix | 6 +- pkgs/development/compilers/gcc-4.4/builder.sh | 2 + .../development/compilers/gcc-4.4/default.nix | 45 ++++++++- .../compilers/gcc-4.4/ghdl-ortho-cflags.patch | 98 +++++++++++++++++++ pkgs/top-level/all-packages.nix | 12 +++ 5 files changed, 160 insertions(+), 3 deletions(-) create mode 100644 pkgs/development/compilers/gcc-4.4/ghdl-ortho-cflags.patch diff --git a/pkgs/development/compilers/gcc-4.3/default.nix b/pkgs/development/compilers/gcc-4.3/default.nix index 6aa79625479..ca3577cab05 100644 --- a/pkgs/development/compilers/gcc-4.3/default.nix +++ b/pkgs/development/compilers/gcc-4.3/default.nix @@ -91,7 +91,7 @@ stdenv.mkDerivation ({ ++ (optional (zlib != null) zlib) ++ (optional (boehmgc != null) boehmgc) ++ (optionals (cross != null) [binutilsCross]) - ++ (optionals (langVhdl != null) [gnat]) + ++ (optionals langVhdl [gnat]) ; configureFlags = " @@ -130,6 +130,8 @@ stdenv.mkDerivation ({ homepage = "http://gcc.gnu.org/"; license = "GPL/LGPL"; description = "GNU Compiler Collection, 4.3.x"; + maintainers = with stdenv.lib.maintainers; [viric ludo]; + platforms = with stdenv.lib.platforms; linux; }; } // (if langJava then { @@ -168,6 +170,8 @@ stdenv.mkDerivation ({ homepage = "http://ghdl.free.fr/"; license = "GPLv2+"; description = "Complete VHDL simulator, using the GCC technology"; + maintainers = with stdenv.lib.maintainers; [viric]; + platforms = with stdenv.lib.platforms; linux; }; } else {})) diff --git a/pkgs/development/compilers/gcc-4.4/builder.sh b/pkgs/development/compilers/gcc-4.4/builder.sh index 45a8cc5394e..b9724e7ad50 100644 --- a/pkgs/development/compilers/gcc-4.4/builder.sh +++ b/pkgs/development/compilers/gcc-4.4/builder.sh @@ -155,6 +155,8 @@ postInstall() { ln -sfn g++ $i fi done + + eval "$postInstallGhdl" } diff --git a/pkgs/development/compilers/gcc-4.4/default.nix b/pkgs/development/compilers/gcc-4.4/default.nix index 26140ab6ae2..c0c4f6cda21 100644 --- a/pkgs/development/compilers/gcc-4.4/default.nix +++ b/pkgs/development/compilers/gcc-4.4/default.nix @@ -2,6 +2,7 @@ , langC ? true, langCC ? true, langFortran ? false, langTreelang ? false , langJava ? false , langAda ? false +, langVhdl ? false , profiledCompiler ? false , staticCompiler ? false , enableShared ? true @@ -21,12 +22,14 @@ , binutilsCross ? null , libcCross ? null , crossStageStatic ? true +, gnat ? null }: assert langTreelang -> bison != null && flex != null; assert langJava -> zip != null && unzip != null && zlib != null && boehmgc != null; assert langAda -> gnatboot != null; +assert langVhdl -> gnat != null; with stdenv.lib; @@ -103,7 +106,8 @@ stdenv.mkDerivation ({ ++ optional noSysDirs ./no-sys-dirs.patch # The GNAT Makefiles did not pay attention to CFLAGS_FOR_TARGET for its # target libraries and tools. - ++ optional langAda ./gnat-cflags.patch; + ++ optional langAda ./gnat-cflags.patch + ++ optional langVhdl ./ghdl-ortho-cflags.patch; inherit noSysDirs profiledCompiler staticCompiler langJava crossStageStatic libcCross; @@ -118,6 +122,7 @@ stdenv.mkDerivation ({ ++ (optionals javaAwtGtk [gtk pkgconfig libart_lgpl] ++ xlibs) ++ (optionals (cross != null) [binutilsCross]) ++ (optionals langAda [gnatboot]) + ++ (optionals langVhdl [gnat]) ; configureFlags = " @@ -141,6 +146,7 @@ stdenv.mkDerivation ({ ++ optional langJava "java" ++ optional langTreelang "treelang" ++ optional langAda "ada" + ++ optional langVhdl "vhdl" ) ) } @@ -197,9 +203,44 @@ stdenv.mkDerivation ({ maintainers = [ # Add your name here! stdenv.lib.maintainers.ludo + stdenv.lib.maintainers.viric ]; # Volunteers needed for the {Cyg,Dar}win ports. platforms = stdenv.lib.platforms.linux; }; -}) +} +// (if langVhdl then rec { + name = "ghdl-0.29"; + + ghdlSrc = fetchurl { + url = "http://ghdl.free.fr/ghdl-0.29.tar.bz2"; + sha256 = "15mlinr1lwljwll9ampzcfcrk9bk0qpdks1kxlvb70xf9zhh2jva"; + }; + + # Ghdl has some timestamps checks, storing file timestamps in '.cf' files. + # As we will change the timestamps to 1970-01-01 00:00:01, we also set the + # content of that .cf to that value. This way ghdl does not complain on + # the installed object files from the basic libraries (ieee, ...) + postInstallGhdl = '' + pushd $out + find . -name "*.cf" -exec \ + sed 's/[0-9]*\.000" /19700101000001.000" /g' -i {} \; + popd + ''; + + postUnpack = '' + tar xvf ${ghdlSrc} + mv ghdl-*/vhdl gcc*/gcc + rm -Rf ghdl-* + ''; + + meta = { + homepage = "http://ghdl.free.fr/"; + license = "GPLv2+"; + description = "Complete VHDL simulator, using the GCC technology (gcc ${version})"; + maintainers = with stdenv.lib.maintainers; [viric]; + platforms = with stdenv.lib.platforms; linux; + }; + +} else {})) diff --git a/pkgs/development/compilers/gcc-4.4/ghdl-ortho-cflags.patch b/pkgs/development/compilers/gcc-4.4/ghdl-ortho-cflags.patch new file mode 100644 index 00000000000..44787feb305 --- /dev/null +++ b/pkgs/development/compilers/gcc-4.4/ghdl-ortho-cflags.patch @@ -0,0 +1,98 @@ +diff --git a/gcc/vhdl/Make-lang.in b/gcc/vhdl/Make-lang.in +index 8f481df..681ac59 100644 +--- a/gcc/vhdl/Make-lang.in ++++ b/gcc/vhdl/Make-lang.in +@@ -96,7 +96,7 @@ AGCC_GCCOBJ_DIR=../ + AGCC_INC_FLAGS=-I$(AGCC_GCCOBJ_DIR)/gcc -I$(AGCC_GCCSRC_DIR)/include \ + -I$(AGCC_GCCSRC_DIR)/gcc -I$(AGCC_GCCSRC_DIR)/gcc/config \ + -I$(AGCC_GCCSRC_DIR)/libcpp/include +-AGCC_CFLAGS=-g -Wall -DIN_GCC $(AGCC_INC_FLAGS) ++AGCC_CFLAGS=-g -Wall -DIN_GCC $(AGCC_INC_FLAGS) $(CFLAGS) $(INCLUDES) + + AGCC_LOCAL_OBJS=ortho-lang.o + +@@ -140,7 +140,7 @@ ghdl$(exeext): force + + # Ghdl libraries. + ghdllib: ghdl$(exeext) $(GCC_PASSES) force +- $(MAKE_IN_VHDL) GRT_FLAGS="-O -g" ghdllib ++ $(MAKE_IN_VHDL) GRT_FLAGS="-O -g $(CFLAGS)" ghdllib + + # Build hooks: + +diff --git a/gcc/vhdl/Makefile.in b/gcc/vhdl/Makefile.in +index d754c6c..07abc4a 100644 +--- a/gcc/vhdl/Makefile.in ++++ b/gcc/vhdl/Makefile.in +@@ -80,7 +80,8 @@ T_CPPFLAGS = + X_ADAFLAGS = + T_ADAFLAGS = + +-ADAC = $(CC) ++# Never use the bootstrapped compiler, as it may not be built for ada ++ADAC = gcc + + ECHO = echo + CHMOD = chmod +diff --git a/gcc/vhdl/ortho-lang.c b/gcc/vhdl/ortho-lang.c +index 84aeb92..8eddd42 100644 +--- a/gcc/vhdl/ortho-lang.c ++++ b/gcc/vhdl/ortho-lang.c +@@ -16,6 +16,7 @@ + #include "options.h" + #include "real.h" +-#include "tree-gimple.h" ++#include "gimple.h" ++#include "tree.h" + #include "function.h" + #include "cgraph.h" + #include "target.h" +@@ -680,38 +681,10 @@ type_for_mode (enum machine_mode mode, int unsignedp) + + const struct lang_hooks lang_hooks = LANG_HOOKS_INITIALIZER; + +-/* Tree code classes. */ +- +-#define DEFTREECODE(SYM, NAME, TYPE, LENGTH) TYPE, +- +-const enum tree_code_class tree_code_type[] = { +-#include "tree.def" +- 'x' +-}; +-#undef DEFTREECODE +- +-/* Table indexed by tree code giving number of expression +- operands beyond the fixed part of the node structure. +- Not used for types or decls. */ +- +-#define DEFTREECODE(SYM, NAME, TYPE, LENGTH) LENGTH, +- +-const unsigned char tree_code_length[] = { +-#include "tree.def" +- 0 +-}; +-#undef DEFTREECODE +- +-#define DEFTREECODE(SYM, NAME, TYPE, LENGTH) NAME, +-const char * const tree_code_name[] = { +-#include "tree.def" +- "@@dummy" +-}; +-#undef DEFTREECODE + + union lang_tree_node + GTY((desc ("0"), +- chain_next ("(union lang_tree_node *) GENERIC_NEXT (&%h.generic)"))) ++ chain_next ("(union lang_tree_node *) TREE_CHAIN (&%h.generic)"))) + { + union tree_node GTY ((tag ("0"))) generic; + }; +@@ -1162,7 +1135,7 @@ new_access_type (tree dtype) + res = make_node (POINTER_TYPE); + TREE_TYPE (res) = NULL_TREE; + /* Seems necessary. */ +- TYPE_MODE (res) = Pmode; ++ SET_TYPE_MODE (res, Pmode); + layout_type (res); + return res; + } diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index cc23bcde235..9af72d159b4 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -2005,6 +2005,18 @@ let enableMultilib = false; }); + # Not officially supported version for ghdl + ghdl_gcc44 = lowPrio (wrapGHDL (import ../development/compilers/gcc-4.4 { + inherit stdenv fetchurl texinfo gmp mpfr noSysDirs gnat gettext which + ppl cloogppl; + name = "ghdl"; + langVhdl = true; + langCC = false; + langC = false; + profiledCompiler = false; + enableMultilib = false; + })); + /* Broken; fails because of unability to find its own symbols during linking From 1f86f426ef267a640c433460f38ab96ac31c225c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Llu=C3=ADs=20Batlle=20i=20Rossell?= Date: Fri, 15 Jan 2010 23:31:05 +0000 Subject: [PATCH 147/232] Fixing the ghdl patch for gcc 4.4 (I missed a part in my last commit) svn path=/nixpkgs/branches/stdenv-updates/; revision=19476 --- .../compilers/gcc-4.4/ghdl-ortho-cflags.patch | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/pkgs/development/compilers/gcc-4.4/ghdl-ortho-cflags.patch b/pkgs/development/compilers/gcc-4.4/ghdl-ortho-cflags.patch index 44787feb305..901534591c8 100644 --- a/pkgs/development/compilers/gcc-4.4/ghdl-ortho-cflags.patch +++ b/pkgs/development/compilers/gcc-4.4/ghdl-ortho-cflags.patch @@ -96,3 +96,16 @@ index 84aeb92..8eddd42 100644 layout_type (res); return res; } +diff --git a/gcc/vhdl/Make-lang.in b/gcc/vhdl/Make-lang.in +index e201f64..f36fb97 100644 +--- a/gcc/vhdl/Make-lang.in ++++ b/gcc/vhdl/Make-lang.in +@@ -132,7 +132,7 @@ ghdl1$(exeext): $(AGCC_OBJS) $(AGCC_DEPS) force + -cargs $(CFLAGS) $(GHDL_ADAFLAGS) + $(GNATMAKE) -o $@ -aI$(srcdir)/vhdl -aOvhdl ortho_gcc-main \ + -bargs -E -cargs $(CFLAGS) $(GHDL_ADAFLAGS) \ +- -largs $(AGCC_OBJS) $(LIBS) $(GMPLIBS) ++ -largs $(AGCC_OBJS) $(LIBS) $(GMPLIBS) $(CLOOGLIBS) $(PPLLIBS) + + # The driver for ghdl. + ghdl$(exeext): force From be72ec22e0ae2ee68f66b5cb31208717a68c48e5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Llu=C3=ADs=20Batlle=20i=20Rossell?= Date: Sat, 16 Jan 2010 14:59:04 +0000 Subject: [PATCH 148/232] Fixing the build of jfsrec under gcc 4.4, taking a patch from archlinux. svn path=/nixpkgs/branches/stdenv-updates/; revision=19481 --- pkgs/tools/filesystems/jfsrec/default.nix | 1 + .../filesystems/jfsrec/jfsrec-gcc-4.3.patch | 24 +++++++++++++++++++ 2 files changed, 25 insertions(+) create mode 100644 pkgs/tools/filesystems/jfsrec/jfsrec-gcc-4.3.patch diff --git a/pkgs/tools/filesystems/jfsrec/default.nix b/pkgs/tools/filesystems/jfsrec/default.nix index a805e86f0dd..91060795e7c 100644 --- a/pkgs/tools/filesystems/jfsrec/default.nix +++ b/pkgs/tools/filesystems/jfsrec/default.nix @@ -8,6 +8,7 @@ stdenv.mkDerivation { sha256 = "163z6ljr05vw2k5mj4fim2nlg4khjyibrii95370pvn474mg28vg"; }; + patches = [ ./jfsrec-gcc-4.3.patch ]; buildInputs = [ boost ]; preConfigure = diff --git a/pkgs/tools/filesystems/jfsrec/jfsrec-gcc-4.3.patch b/pkgs/tools/filesystems/jfsrec/jfsrec-gcc-4.3.patch new file mode 100644 index 00000000000..063a7c24813 --- /dev/null +++ b/pkgs/tools/filesystems/jfsrec/jfsrec-gcc-4.3.patch @@ -0,0 +1,24 @@ +Taken from Archlinux, although this solves the build in gcc 4.4, not 4.3. +http://aur.archlinux.org/packages/jfsrec-svn/jfsrec-svn/jfsrec-gcc-4.3.patch +diff -uBdr jfsrec/src/device.cpp jfsrec-build/src/device.cpp +--- jfsrec/src/device.cpp 2009-12-01 18:34:03.860437077 +0100 ++++ jfsrec-build/src/device.cpp 2009-12-01 18:39:48.297067088 +0100 +@@ -20,6 +20,7 @@ + //Parts of the code in this file was originally taken from JFS's xpeek (debugfs_jfs) + + #include "device.h" ++#include + #ifdef __linux__ + #include + #include +diff -uBdr jfsrec/src/unicode_to_utf8.cpp jfsrec-build/src/unicode_to_utf8.cpp +--- jfsrec/src/unicode_to_utf8.cpp 2009-12-01 18:34:03.860437077 +0100 ++++ jfsrec-build/src/unicode_to_utf8.cpp 2009-12-01 18:39:43.501626737 +0100 +@@ -8,6 +8,7 @@ + */ + #include + #include "unicode_to_utf8.h" ++#include + #define JFS_PATH_MAX 4096 + + /* From 659a9a835a13c13dc4a8a40369e8a961ac53ebee Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Llu=C3=ADs=20Batlle=20i=20Rossell?= Date: Sat, 16 Jan 2010 15:02:46 +0000 Subject: [PATCH 149/232] Fixing the slim build in gcc 4.4 svn path=/nixpkgs/branches/stdenv-updates/; revision=19482 --- .../display-managers/slim/default.nix | 2 ++ .../slim/slim-1.3.1-gcc4.4.patch | 17 +++++++++++++++++ 2 files changed, 19 insertions(+) create mode 100644 pkgs/applications/display-managers/slim/slim-1.3.1-gcc4.4.patch diff --git a/pkgs/applications/display-managers/slim/default.nix b/pkgs/applications/display-managers/slim/default.nix index 0cd866a2c95..b00fb6d2dc7 100644 --- a/pkgs/applications/display-managers/slim/default.nix +++ b/pkgs/applications/display-managers/slim/default.nix @@ -22,6 +22,8 @@ stdenv.mkDerivation rec { # Don't set PAM_RHOST to "localhost", it confuses ConsoleKit # (which assumes that a non-empty string means a remote session). ./pam2.patch + + ./slim-1.3.1-gcc4.4.patch ]; buildInputs = [x11 libjpeg libpng libXmu freetype pam]; diff --git a/pkgs/applications/display-managers/slim/slim-1.3.1-gcc4.4.patch b/pkgs/applications/display-managers/slim/slim-1.3.1-gcc4.4.patch new file mode 100644 index 00000000000..71b028ec080 --- /dev/null +++ b/pkgs/applications/display-managers/slim/slim-1.3.1-gcc4.4.patch @@ -0,0 +1,17 @@ +Patch to allow compilation with gcc-4.4 + +Notified by Daniel J. - from Debian bug tracker + +http://bugs.gentoo.org/252745 + +--- a/switchuser.h 2008-11-11 19:40:18.000000000 +0000 ++++ a/switchuser.h 2008-11-11 19:40:28.000000000 +0000 +@@ -18,6 +18,7 @@ + #include + #include + #include ++#include + #include + #include "const.h" + #include "cfg.h" + From df6875914226bca3ee6efeb02890662ce721fe44 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Llu=C3=ADs=20Batlle=20i=20Rossell?= Date: Sat, 16 Jan 2010 16:41:33 +0000 Subject: [PATCH 150/232] Updating from trunk, to get the new mldonkey. Cleaning the mldonkey expression to build with the ocaml native compiler in some platforms, and with the bytecode in others. Removing the flag to support ocaml-3.11.1, as it is included in this new version of mldonkey. svn path=/nixpkgs/branches/stdenv-updates/; revision=19487 --- .../networking/p2p/mldonkey/default.nix | 19 ++++++++++--------- pkgs/top-level/all-packages.nix | 2 +- 2 files changed, 11 insertions(+), 10 deletions(-) diff --git a/pkgs/applications/networking/p2p/mldonkey/default.nix b/pkgs/applications/networking/p2p/mldonkey/default.nix index 02a5e22eb23..dfe79bff15e 100644 --- a/pkgs/applications/networking/p2p/mldonkey/default.nix +++ b/pkgs/applications/networking/p2p/mldonkey/default.nix @@ -1,11 +1,11 @@ -{stdenv, fetchurl, ocaml, zlib, ncurses, gd, libpng}: +{stdenv, fetchurl, ocaml, zlib, bzip2, ncurses, file, gd, libpng }: -stdenv.mkDerivation { - name = "mldonkey-3.0.0"; +stdenv.mkDerivation (rec { + name = "mldonkey-3.0.1"; src = fetchurl { - url = mirror://sourceforge/mldonkey/mldonkey-3.0.0.tar.bz2; - sha256 = "0zzvcfnbhxk8axfch5fbkd9j2ks67nbb1ndjjarxvrza78g5y8r7"; + url = "mirror://sourceforge/mldonkey/${name}.tar.bz2"; + sha256 = "09zk53rfdkjipf5sl37rypzi2mx0a5v57vsndj22zajkqr4l0zds"; }; meta = { @@ -13,9 +13,10 @@ stdenv.mkDerivation { homepage = http://mldonkey.sourceforge.net/; }; - buildInputs = [ ocaml zlib ncurses gd libpng ]; - configureFlags = [ "--disable-gui" "--enable-ocamlver=3.11.1" ]; - + buildInputs = [ ocaml zlib ncurses bzip2 file gd libpng ]; + configureFlags = [ "--disable-gui" ]; +} // (if (stdenv.system != "i686-linux" && stdenv.system != "x86_64-linux") then +{ # Byte code compilation (the ocaml opt compiler is not supported in many platforms) buildPhase = "make mlnet.byte"; installPhase = '' @@ -25,4 +26,4 @@ stdenv.mkDerivation { # ocaml bytecode selfcontained binaries loose the bytecode if stripped dontStrip = true; -} +} else {})) diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index bb59b7c5ab2..92318faa970 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -1043,7 +1043,7 @@ let }; mldonkey = import ../applications/networking/p2p/mldonkey { - inherit fetchurl stdenv ocaml zlib ncurses gd libpng; + inherit fetchurl stdenv ocaml zlib bzip2 ncurses file gd libpng; }; monit = builderDefsPackage ../tools/system/monit { From 30477123efd2ffe178204beacdad58784a546af4 Mon Sep 17 00:00:00 2001 From: Michael Raskin <7c6f434c@mail.ru> Date: Sat, 16 Jan 2010 20:40:59 +0000 Subject: [PATCH 151/232] Allow building kernels for CPUs incapable of running Xen svn path=/nixpkgs/branches/stdenv-updates/; revision=19489 --- pkgs/os-specific/linux/kernel/config-blocks.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/os-specific/linux/kernel/config-blocks.nix b/pkgs/os-specific/linux/kernel/config-blocks.nix index b7ae587569e..1564b0d6161 100644 --- a/pkgs/os-specific/linux/kernel/config-blocks.nix +++ b/pkgs/os-specific/linux/kernel/config-blocks.nix @@ -23,7 +23,7 @@ rec { PARAVIRT_GUEST y KVM_CLOCK y KVM_GUEST y - XEN y + XEN? y KSM y # We need 64 GB (PAE) support for Xen guest support. From 20e75e0cf019a5a3775ba443daf9a9a3ff30cbf6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Llu=C3=ADs=20Batlle=20i=20Rossell?= Date: Sat, 16 Jan 2010 21:26:10 +0000 Subject: [PATCH 152/232] Fixing the gcc-wrapper, so it does not link when gcc is called with '-x something'. It should not link at least for '-x c-header' and '-x c++-header', and maybe link for '-x c' or '-x c++', but we expect noone will be linking using these later strings. Adding opencv, which required '-x c-header' working, and that's why I have updated gcc wrapper. svn path=/nixpkgs/branches/stdenv-updates/; revision=19491 --- pkgs/build-support/gcc-wrapper/gcc-wrapper.sh | 4 ++++ pkgs/development/libraries/opencv/default.nix | 20 +++++++++++++++++++ pkgs/top-level/all-packages.nix | 7 +++++++ 3 files changed, 31 insertions(+) create mode 100644 pkgs/development/libraries/opencv/default.nix diff --git a/pkgs/build-support/gcc-wrapper/gcc-wrapper.sh b/pkgs/build-support/gcc-wrapper/gcc-wrapper.sh index 8a49fcb9b06..f1b394a1f54 100644 --- a/pkgs/build-support/gcc-wrapper/gcc-wrapper.sh +++ b/pkgs/build-support/gcc-wrapper/gcc-wrapper.sh @@ -30,6 +30,10 @@ for i in "$@"; do dontLink=1 elif test "$i" = "-MM"; then dontLink=1 + elif test "$i" = "-x"; then + # At least for the cases c-header or c++-header we should set dontLink. + # I expect no one use -x other than making precompiled headers. + dontLink=1 elif test "${i:0:1}" != "-"; then nonFlagArgs=1 elif test "$i" = "-m32"; then diff --git a/pkgs/development/libraries/opencv/default.nix b/pkgs/development/libraries/opencv/default.nix new file mode 100644 index 00000000000..244c3886822 --- /dev/null +++ b/pkgs/development/libraries/opencv/default.nix @@ -0,0 +1,20 @@ +{ stdenv, fetchurl, cmake, gtk, glib, libjpeg, libpng, libtiff, jasper, ffmpeg, pkgconfig, + xineLib, gstreamer }: + +stdenv.mkDerivation rec { + name = "opencv-2.0.0"; + + src = fetchurl { + url = "mirror://sourceforge/opencvlibrary/OpenCV-2.0.0.tar.bz2"; + sha256 = "08h03qzawj6zwifrh8rq66y4cya1kxx9ixrbq7phlac79nbvjzf1"; + }; + + buildInputs = [ cmake gtk glib libjpeg libpng libtiff jasper ffmpeg pkgconfig + xineLib gstreamer ]; + + meta = { + description = "Open Computer Vision Library with more than 500 algorithms"; + homepage = http://opencv.willowgarage.com/; + license = "BSD"; + }; +} diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 92318faa970..9d2ef35a4cd 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -4540,6 +4540,13 @@ let inherit fetchurl stdenv libtool pcsclite libusb pkgconfig; }; + opencv = import ../development/libraries/opencv { + inherit fetchurl stdenv cmake libjpeg libpng libtiff jasper ffmpeg + pkgconfig xineLib; + inherit (gtkLibs) gtk glib; + inherit (gst_all) gstreamer; + }; + # this ctl version is needed by openexr_viewers openexr_ctl = import ../development/libraries/openexr_ctl { inherit fetchurl stdenv ilmbase ctl; From e72908036f98bfae531affc34cc39397b554390d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Llu=C3=ADs=20Batlle=20i=20Rossell?= Date: Sat, 16 Jan 2010 21:32:44 +0000 Subject: [PATCH 153/232] Merging the gnat-wrapper and gcc-wrapper into a single gcc-wrapper. (I will remove the gnat-wrapper files if this works, later) svn path=/nixpkgs/branches/stdenv-updates/; revision=19492 --- pkgs/build-support/gcc-wrapper/add-flags | 4 ++ pkgs/build-support/gcc-wrapper/builder.sh | 43 ++++++++++++++++++++++ pkgs/build-support/gcc-wrapper/default.nix | 3 ++ pkgs/top-level/all-packages.nix | 7 ++-- 4 files changed, 53 insertions(+), 4 deletions(-) diff --git a/pkgs/build-support/gcc-wrapper/add-flags b/pkgs/build-support/gcc-wrapper/add-flags index 02755e44541..26e536f6d57 100644 --- a/pkgs/build-support/gcc-wrapper/add-flags +++ b/pkgs/build-support/gcc-wrapper/add-flags @@ -9,6 +9,10 @@ if test -e @out@/nix-support/gcc-cflags; then export NIX_CFLAGS_COMPILE="$(cat @out@/nix-support/gcc-cflags) $NIX_CFLAGS_COMPILE" fi +if test -e @out@/nix-support/gnat-cflags; then + export NIX_GNATFLAGS_COMPILE="$(cat @out@/nix-support/gnat-cflags) $NIX_GNATFLAGS_COMPILE" +fi + if test -e @out@/nix-support/libc-ldflags; then export NIX_LDFLAGS="$NIX_LDFLAGS $(cat @out@/nix-support/libc-ldflags)" fi diff --git a/pkgs/build-support/gcc-wrapper/builder.sh b/pkgs/build-support/gcc-wrapper/builder.sh index dd64987ade2..70e8498da7b 100644 --- a/pkgs/build-support/gcc-wrapper/builder.sh +++ b/pkgs/build-support/gcc-wrapper/builder.sh @@ -51,6 +51,15 @@ else if test -e "$gcc/lib64"; then gccCFlags="$gccCFlags -B$gcc/lib64" fi + + # Find the gcc libraries path (may work only without multilib) + if [ -n "$langAda" ]; then + basePath=`echo $gcc/lib/*/*/*` + gccCFlags="$gccCFlags -B$basePath -I$basePath/adainclude" + + gnatCFlags="-aI$basePath/adainclude -aO$basePath/adalib" + echo "$gnatCFlags" > $out/nix-support/gnat-cflags + fi echo "$gccCFlags" > $out/nix-support/gcc-cflags gccPath="$gcc/bin" @@ -68,6 +77,8 @@ doSubstitute() { -e "s^@shell@^$shell^g" \ -e "s^@gcc@^$gcc^g" \ -e "s^@gccProg@^$gccProg^g" \ + -e "s^@gnatProg@^$gnatProg^g" \ + -e "s^@gnatlinkProg@^$gnatlinkProg^g" \ -e "s^@binutils@^$binutils^g" \ -e "s^@coreutils@^$coreutils^g" \ -e "s^@libc@^$libc^g" \ @@ -92,6 +103,34 @@ mkGccWrapper() { chmod +x "$dst" } +mkGnatWrapper() { + local dst=$1 + local src=$2 + + if ! test -f "$src"; then + echo "$src does not exist (skipping)" + return 1 + fi + + gnatProg="$src" + doSubstitute "$gnatWrapper" "$dst" + chmod +x "$dst" +} + +mkGnatLinkWrapper() { + local dst=$1 + local src=$2 + + if ! test -f "$src"; then + echo "$src does not exist (skipping)" + return 1 + fi + + gnatlinkProg="$src" + doSubstitute "$gnatlinkWrapper" "$dst" + chmod +x "$dst" +} + if mkGccWrapper $out/bin/gcc $gccPath/gcc then ln -sv gcc $out/bin/cc @@ -110,6 +149,10 @@ fi mkGccWrapper $out/bin/gcj $gccPath/gcj || true +mkGccWrapper $out/bin/gnatgcc $gccPath/gnatgcc || true +mkGnatWrapper $out/bin/gnatmake $gccPath/gnatmake || true +mkGnatWrapper $out/bin/gnatbind $gccPath/gnatbind || true +mkGnatLinkWrapper $out/bin/gnatlink $gccPath/gnatlink || true # Create a symlink to as (the assembler). This is useful when a # gcc-wrapper is installed in a user environment, as it ensures that diff --git a/pkgs/build-support/gcc-wrapper/default.nix b/pkgs/build-support/gcc-wrapper/default.nix index 339aba74288..700de9d20f4 100644 --- a/pkgs/build-support/gcc-wrapper/default.nix +++ b/pkgs/build-support/gcc-wrapper/default.nix @@ -28,6 +28,8 @@ stdenv.mkDerivation { builder = ./builder.sh; setupHook = ./setup-hook.sh; gccWrapper = ./gcc-wrapper.sh; + gnatWrapper = ./gnat-wrapper.sh; + gnatlinkWrapper = ./gnatlink-wrapper.sh; ldWrapper = ./ld-wrapper.sh; utils = ./utils.sh; addFlags = ./add-flags; @@ -41,6 +43,7 @@ stdenv.mkDerivation { langC = if nativeTools then true else gcc.langC; langCC = if nativeTools then true else gcc.langCC; langFortran = if nativeTools then false else gcc ? langFortran; + langAda = if nativeTools then false else gcc ? langAda; shell = if shell == "" then stdenv.shell else shell; meta = diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 9d2ef35a4cd..65350e041dd 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -1982,7 +1982,7 @@ let gnat = gnat44; - gnat44 = wrapGNAT (gcc44_real.gcc.override { + gnat44 = wrapGCC (gcc44_real.gcc.override { name = "gnat"; langCC = false; langC = true; @@ -1995,7 +1995,7 @@ let ppl = null; }); - gnatboot = wrapGNAT (import ../development/compilers/gnatboot { + gnatboot = wrapGCC (import ../development/compilers/gnatboot { inherit fetchurl stdenv; }); @@ -2351,7 +2351,7 @@ let inherit fetchurl stdenv visualcpp windowssdk; }; - # All these wrappers: GCC, GNAT, GHDL, should be once merged into + # All these wrappers: GCC, GHDL, should be once merged into # only one. wrapGCCWith = gccWrapper: glibc: baseGCC: gccWrapper { nativeTools = stdenv ? gcc && stdenv.gcc.nativeTools; @@ -2363,7 +2363,6 @@ let }; wrapGCC = wrapGCCWith (import ../build-support/gcc-wrapper) glibc; - wrapGNAT = wrapGCCWith (import ../build-support/gnat-wrapper) glibc; wrapGHDLWith = gccWrapper: glibc: baseGCC: gccWrapper { nativeTools = stdenv ? gcc && stdenv.gcc.nativeTools; From 08eb3243c90af2102ce087b02c9cacc2f3234026 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Llu=C3=ADs=20Batlle=20i=20Rossell?= Date: Sat, 16 Jan 2010 21:41:27 +0000 Subject: [PATCH 154/232] Merging the ghdl-wrapper and gcc-wrapper into one. I will remove the ghdl-wrapper files later, if all this works. svn path=/nixpkgs/branches/stdenv-updates/; revision=19493 --- pkgs/build-support/gcc-wrapper/builder.sh | 8 ++++++++ pkgs/build-support/gcc-wrapper/default.nix | 8 +++++++- pkgs/top-level/all-packages.nix | 19 +++---------------- 3 files changed, 18 insertions(+), 17 deletions(-) diff --git a/pkgs/build-support/gcc-wrapper/builder.sh b/pkgs/build-support/gcc-wrapper/builder.sh index 70e8498da7b..2e87d82f52c 100644 --- a/pkgs/build-support/gcc-wrapper/builder.sh +++ b/pkgs/build-support/gcc-wrapper/builder.sh @@ -42,6 +42,9 @@ else gccLDFlags="$gccLDFlags -L$gcc/lib64" fi gccLDFlags="$gccLDFlags -L$gcc/lib" + if [ -n "$langVhdl" ]; then + gccLDFlags="$gccLDFlags -L$zlib/lib" + fi echo "$gccLDFlags" > $out/nix-support/gcc-ldflags # GCC shows $gcc/lib in `gcc -print-search-dirs', but not @@ -154,6 +157,11 @@ mkGnatWrapper $out/bin/gnatmake $gccPath/gnatmake || true mkGnatWrapper $out/bin/gnatbind $gccPath/gnatbind || true mkGnatLinkWrapper $out/bin/gnatlink $gccPath/gnatlink || true +if [ -f $gccPath/ghdl ]; then + ln -sf $gccPath/ghdl $out/bin/ghdl +fi + + # Create a symlink to as (the assembler). This is useful when a # gcc-wrapper is installed in a user environment, as it ensures that # the right assembler is called. diff --git a/pkgs/build-support/gcc-wrapper/default.nix b/pkgs/build-support/gcc-wrapper/default.nix index 700de9d20f4..87b2b097659 100644 --- a/pkgs/build-support/gcc-wrapper/default.nix +++ b/pkgs/build-support/gcc-wrapper/default.nix @@ -6,13 +6,17 @@ # variables so that the compiler and the linker just "work". { name ? "", stdenv, nativeTools, nativeLibc, nativePrefix ? "" -, gcc ? null, libc ? null, binutils ? null, coreutils ? null, shell ? "" +, gcc ? null, libc ? null, binutils ? null, coreutils ? null, shell ? "", +zlib ? null }: assert nativeTools -> nativePrefix != ""; assert !nativeTools -> gcc != null && binutils != null && coreutils != null; assert !nativeLibc -> libc != null; +# For ghdl (the vhdl language provider to gcc) we need zlib in the wrapper +assert (gcc != null && gcc ? langVhdl) -> zlib != null; + let gccVersion = (builtins.parseDrvName gcc.name).version; @@ -44,6 +48,8 @@ stdenv.mkDerivation { langCC = if nativeTools then true else gcc.langCC; langFortran = if nativeTools then false else gcc ? langFortran; langAda = if nativeTools then false else gcc ? langAda; + langVhdl = if nativeTools then false else gcc ? langVhdl; + zlib = if (gcc != null && gcc ? langVhdl) then zlib else null; shell = if shell == "" then stdenv.shell else shell; meta = diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 65350e041dd..a2fef41f26c 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -1999,7 +1999,7 @@ let inherit fetchurl stdenv; }); - ghdl = wrapGHDL (import ../development/compilers/gcc-4.3 { + ghdl = wrapGCC (import ../development/compilers/gcc-4.3 { inherit stdenv fetchurl texinfo gmp mpfr noSysDirs gnat; name = "ghdl"; langVhdl = true; @@ -2010,7 +2010,7 @@ let }); # Not officially supported version for ghdl - ghdl_gcc44 = lowPrio (wrapGHDL (import ../development/compilers/gcc-4.4 { + ghdl_gcc44 = lowPrio (wrapGCC (import ../development/compilers/gcc-4.4 { inherit stdenv fetchurl texinfo gmp mpfr noSysDirs gnat gettext which ppl cloogppl; name = "ghdl"; @@ -2351,20 +2351,7 @@ let inherit fetchurl stdenv visualcpp windowssdk; }; - # All these wrappers: GCC, GHDL, should be once merged into - # only one. wrapGCCWith = gccWrapper: glibc: baseGCC: gccWrapper { - nativeTools = stdenv ? gcc && stdenv.gcc.nativeTools; - nativeLibc = stdenv ? gcc && stdenv.gcc.nativeLibc; - nativePrefix = if stdenv ? gcc then stdenv.gcc.nativePrefix else ""; - gcc = baseGCC; - libc = glibc; - inherit stdenv binutils coreutils; - }; - - wrapGCC = wrapGCCWith (import ../build-support/gcc-wrapper) glibc; - - wrapGHDLWith = gccWrapper: glibc: baseGCC: gccWrapper { nativeTools = stdenv ? gcc && stdenv.gcc.nativeTools; nativeLibc = stdenv ? gcc && stdenv.gcc.nativeLibc; nativePrefix = if stdenv ? gcc then stdenv.gcc.nativePrefix else ""; @@ -2373,7 +2360,7 @@ let inherit stdenv binutils coreutils zlib; }; - wrapGHDL = wrapGHDLWith (import ../build-support/ghdl-wrapper) glibc; + wrapGCC = wrapGCCWith (import ../build-support/gcc-wrapper) glibc; wrapGCCCross = {gcc, libc, binutils, cross, shell ? "", name ? "gcc-cross-wrapper"}: From 3189e7a3937a4eaf5692139dbd7026b2f83607f0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Llu=C3=ADs=20Batlle=20i=20Rossell?= Date: Sat, 16 Jan 2010 23:09:27 +0000 Subject: [PATCH 155/232] Adding two files I forgot to the gcc-wrapper, comming from the old gnat-wrapper. svn path=/nixpkgs/branches/stdenv-updates/; revision=19494 --- .../build-support/gcc-wrapper/gnat-wrapper.sh | 113 ++++++++++++++++++ .../gcc-wrapper/gnatlink-wrapper.sh | 43 +++++++ 2 files changed, 156 insertions(+) create mode 100644 pkgs/build-support/gcc-wrapper/gnat-wrapper.sh create mode 100644 pkgs/build-support/gcc-wrapper/gnatlink-wrapper.sh diff --git a/pkgs/build-support/gcc-wrapper/gnat-wrapper.sh b/pkgs/build-support/gcc-wrapper/gnat-wrapper.sh new file mode 100644 index 00000000000..f6fa4b18400 --- /dev/null +++ b/pkgs/build-support/gcc-wrapper/gnat-wrapper.sh @@ -0,0 +1,113 @@ +#! @shell@ -e + +if test -n "$NIX_GNAT_WRAPPER_START_HOOK"; then + source "$NIX_GNAT_WRAPPER_START_HOOK" +fi + +if test -z "$NIX_GNAT_WRAPPER_FLAGS_SET"; then + source @out@/nix-support/add-flags.sh +fi + +source @out@/nix-support/utils.sh + + +# Figure out if linker flags should be passed. GCC prints annoying +# warnings when they are not needed. +dontLink=0 +getVersion=0 +nonFlagArgs=0 + +for i in "$@"; do + if test "$i" = "-c"; then + dontLink=1 + elif test "$i" = "-M"; then + dontLink=1 + elif test "${i:0:1}" != "-"; then + nonFlagArgs=1 + elif test "$i" = "-m32"; then + if test -e @out@/nix-support/dynamic-linker-m32; then + NIX_LDFLAGS="$NIX_LDFLAGS -dynamic-linker $(cat @out@/nix-support/dynamic-linker-m32)" + fi + fi +done + +# If we pass a flag like -Wl, then gcc will call the linker unless it +# can figure out that it has to do something else (e.g., because of a +# "-c" flag). So if no non-flag arguments are given, don't pass any +# linker flags. This catches cases like "gcc" (should just print +# "gcc: no input files") and "gcc -v" (should print the version). +if test "$nonFlagArgs" = "0"; then + dontLink=1 +fi + + +# Optionally filter out paths not refering to the store. +params=("$@") +if test "$NIX_ENFORCE_PURITY" = "1" -a -n "$NIX_STORE"; then + rest=() + n=0 + while test $n -lt ${#params[*]}; do + p=${params[n]} + p2=${params[$((n+1))]} + if test "${p:0:3}" = "-L/" && badPath "${p:2}"; then + skip $p + elif test "${p:0:3}" = "-I/" && badPath "${p:2}"; then + skip $p + elif test "${p:0:4}" = "-aI/" && badPath "${p:3}"; then + skip $p + elif test "${p:0:4}" = "-aO/" && badPath "${p:3}"; then + skip $p + else + rest=("${rest[@]}" "$p") + fi + n=$((n + 1)) + done + params=("${rest[@]}") +fi + + +# Add the flags for the GNAT compiler proper. +extraAfter=($NIX_GNATFLAGS_COMPILE) +extraBefore=() + +if [ "`basename $0`x" = "gnatmakex" ]; then + extraBefore=("--GNATBIND=@out@/bin/gnatbind --GNATLINK=@out@/bin/gnatlink ") +fi + +# Add the flags that should be passed to the linker (and prevent +# `ld-wrapper' from adding NIX_LDFLAGS again). +#for i in $NIX_LDFLAGS_BEFORE; do +# extraBefore=(${extraBefore[@]} "-largs $i") +#done + +# Optionally print debug info. +if test "$NIX_DEBUG" = "1"; then + echo "original flags to @gnatProg@:" >&2 + for i in "${params[@]}"; do + echo " $i" >&2 + done + echo "extraBefore flags to @gnatProg@:" >&2 + for i in ${extraBefore[@]}; do + echo " $i" >&2 + done + echo "extraAfter flags to @gnatProg@:" >&2 + for i in ${extraAfter[@]}; do + echo " $i" >&2 + done +fi + +if test -n "$NIX_GNAT_WRAPPER_EXEC_HOOK"; then + source "$NIX_GNAT_WRAPPER_EXEC_HOOK" +fi + + +# Call the real `gcc'. Filter out warnings from stderr about unused +# `-B' flags, since they confuse some programs. Deep bash magic to +# apply grep to stderr (by swapping stdin/stderr twice). +if test -z "$NIX_GNAT_NEEDS_GREP"; then + @gnatProg@ ${extraBefore[@]} "${params[@]}" ${extraAfter[@]} +else + (@gnatProg@ ${extraBefore[@]} "${params[@]}" ${extraAfter[@]} 3>&2 2>&1 1>&3- \ + | (grep -v 'file path prefix' || true); exit ${PIPESTATUS[0]}) 3>&2 2>&1 1>&3- + exit $? +fi diff --git a/pkgs/build-support/gcc-wrapper/gnatlink-wrapper.sh b/pkgs/build-support/gcc-wrapper/gnatlink-wrapper.sh new file mode 100644 index 00000000000..25907108b4d --- /dev/null +++ b/pkgs/build-support/gcc-wrapper/gnatlink-wrapper.sh @@ -0,0 +1,43 @@ +#! @shell@ -e + +# Add the flags for the GNAT compiler proper. +extraAfter="--GCC=@out@/bin/gcc" +extraBefore=() + +# Add the flags that should be passed to the linker (and prevent +# `ld-wrapper' from adding NIX_LDFLAGS again). +#for i in $NIX_LDFLAGS_BEFORE; do +# extraBefore=(${extraBefore[@]} "-largs $i") +#done + +# Optionally print debug info. +if test "$NIX_DEBUG" = "1"; then + echo "original flags to @gnatlinkProg@:" >&2 + for i in "$@"; do + echo " $i" >&2 + done + echo "extraBefore flags to @gnatlinkProg@:" >&2 + for i in ${extraBefore[@]}; do + echo " $i" >&2 + done + echo "extraAfter flags to @gnatlinkProg@:" >&2 + for i in ${extraAfter[@]}; do + echo " $i" >&2 + done +fi + +if test -n "$NIX_GNAT_WRAPPER_EXEC_HOOK"; then + source "$NIX_GNAT_WRAPPER_EXEC_HOOK" +fi + + +# Call the real `gcc'. Filter out warnings from stderr about unused +# `-B' flags, since they confuse some programs. Deep bash magic to +# apply grep to stderr (by swapping stdin/stderr twice). +if test -z "$NIX_GNAT_NEEDS_GREP"; then + @gnatlinkProg@ ${extraBefore[@]} "$@" ${extraAfter[@]} +else + (@gnatlinkProg@ ${extraBefore[@]} "$@" ${extraAfter[@]} 3>&2 2>&1 1>&3- \ + | (grep -v 'file path prefix' || true); exit ${PIPESTATUS[0]}) 3>&2 2>&1 1>&3- + exit $? +fi From e68a8a957562a8152f636e99d0a09c3bd1fff109 Mon Sep 17 00:00:00 2001 From: Armijn Hemel Date: Sun, 17 Jan 2010 21:34:55 +0000 Subject: [PATCH 156/232] patch for gcc44 svn path=/nixpkgs/branches/stdenv-updates/; revision=19503 --- .../libraries/qtscriptgenerator/default.nix | 2 ++ .../qtscriptgenerator/qtscriptgenerator.gcc-4.4.patch | 11 +++++++++++ 2 files changed, 13 insertions(+) create mode 100644 pkgs/development/libraries/qtscriptgenerator/qtscriptgenerator.gcc-4.4.patch diff --git a/pkgs/development/libraries/qtscriptgenerator/default.nix b/pkgs/development/libraries/qtscriptgenerator/default.nix index 52605a7eb0c..75bd7b4dc7f 100644 --- a/pkgs/development/libraries/qtscriptgenerator/default.nix +++ b/pkgs/development/libraries/qtscriptgenerator/default.nix @@ -7,6 +7,8 @@ stdenv.mkDerivation { sha256 = "0h8zjh38n2wfz7jld0jz6a09y66dbsd2jhm4f2024qfgcmxcabj6"; }; buildInputs = [ qt4 ]; + + patches = [./qtscriptgenerator.gcc-4.4.patch]; # Why isn't the author providing proper Makefile or a CMakeLists.txt ? buildPhase = '' diff --git a/pkgs/development/libraries/qtscriptgenerator/qtscriptgenerator.gcc-4.4.patch b/pkgs/development/libraries/qtscriptgenerator/qtscriptgenerator.gcc-4.4.patch new file mode 100644 index 00000000000..c0a710efb15 --- /dev/null +++ b/pkgs/development/libraries/qtscriptgenerator/qtscriptgenerator.gcc-4.4.patch @@ -0,0 +1,11 @@ +diff -uNr generator.orig/parser/rpp/pp.h generator/parser/rpp/pp.h +--- qtscriptgenerator-src-0.1.0/generator.orig/parser/rpp/pp.h 2008-12-05 11:01:44.000000000 +0100 ++++ qtscriptgenerator-src-0.1.0/generator/parser/rpp/pp.h 2008-12-13 10:42:22.000000000 +0100 +@@ -30,6 +30,7 @@ + #include + + #include ++#include + + #ifdef HAVE_MMAP + # include From aec137add16942ca5d123de4dd656a1cb14e6bfd Mon Sep 17 00:00:00 2001 From: Armijn Hemel Date: Sun, 17 Jan 2010 21:52:11 +0000 Subject: [PATCH 157/232] remove GNUism svn path=/nixpkgs/branches/stdenv-updates/; revision=19504 --- pkgs/development/libraries/ncurses/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/development/libraries/ncurses/default.nix b/pkgs/development/libraries/ncurses/default.nix index 3c833738308..fe8ff1fefae 100644 --- a/pkgs/development/libraries/ncurses/default.nix +++ b/pkgs/development/libraries/ncurses/default.nix @@ -21,7 +21,7 @@ stdenv.mkDerivation rec { # compatibility links from the the "normal" libraries to the # wide-character libraries (e.g. libncurses.so to libncursesw.so). postInstall = if unicode then '' - chmod -v 644 $out/lib/libncurses++w.a + chmod 644 $out/lib/libncurses++w.a for lib in curses ncurses form panel menu; do if test -e $out/lib/lib''${lib}w.a; then rm -vf $out/lib/lib$lib.so From 6a503c7d61f251780ddd78800a3d503952bfef09 Mon Sep 17 00:00:00 2001 From: Armijn Hemel Date: Sun, 17 Jan 2010 22:08:22 +0000 Subject: [PATCH 158/232] remove GNUism svn path=/nixpkgs/branches/stdenv-updates/; revision=19505 --- pkgs/development/libraries/ncurses/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/development/libraries/ncurses/default.nix b/pkgs/development/libraries/ncurses/default.nix index fe8ff1fefae..2e6de49958e 100644 --- a/pkgs/development/libraries/ncurses/default.nix +++ b/pkgs/development/libraries/ncurses/default.nix @@ -24,7 +24,7 @@ stdenv.mkDerivation rec { chmod 644 $out/lib/libncurses++w.a for lib in curses ncurses form panel menu; do if test -e $out/lib/lib''${lib}w.a; then - rm -vf $out/lib/lib$lib.so + rm -f $out/lib/lib$lib.so echo "INPUT(-l''${lib}w)" > $out/lib/lib$lib.so ln -svf lib''${lib}w.a $out/lib/lib$lib.a ln -svf lib''${lib}w.so.5 $out/lib/lib$lib.so.5 From bfbaa737064f04e285f81a4bb601633e2fd4aaed Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Llu=C3=ADs=20Batlle=20i=20Rossell?= Date: Sun, 17 Jan 2010 22:09:16 +0000 Subject: [PATCH 159/232] Making 'release.nix' point to linuxPackages, and not to kernelPackages (the new linux naming in stdenv-updates) svn path=/nixpkgs/branches/stdenv-updates/; revision=19506 --- pkgs/top-level/release.nix | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/pkgs/top-level/release.nix b/pkgs/top-level/release.nix index 0bfb086e8c7..52851a27dd8 100644 --- a/pkgs/top-level/release.nix +++ b/pkgs/top-level/release.nix @@ -534,45 +534,45 @@ in { l10n.ru = linux; }; - kernelPackages_2_6_25 = { + linuxPackages_2_6_25 = { aufs = linux; kernel = linux; }; - kernelPackages_2_6_27 = { + linuxPackages_2_6_27 = { aufs = linux; kernel = linux; virtualbox = linux; virtualboxGuestAdditions = linux; }; - kernelPackages_2_6_28 = { + linuxPackages_2_6_28 = { aufs = linux; kernel = linux; virtualbox = linux; virtualboxGuestAdditions = linux; }; - kernelPackages_2_6_29 = { + linuxPackages_2_6_29 = { aufs = linux; kernel = linux; virtualbox = linux; virtualboxGuestAdditions = linux; }; - kernelPackages_2_6_31 = { + linuxPackages_2_6_31 = { kernel = linux; }; - kernelPackages_2_6_31_zen = { + linuxPackages_2_6_31_zen = { kernel = linux; }; - kernelPackages_2_6_31_zen_bfs = { + linuxPackages_2_6_31_zen_bfs = { kernel = linux; }; - kernelPackages_2_6_32 = { + linuxPackages_2_6_32 = { aufs = linux; kernel = linux; virtualbox = linux; From 67038ea160a8ff9f1ccad6a86afe51b51e5b4257 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Llu=C3=ADs=20Batlle=20i=20Rossell?= Date: Sun, 17 Jan 2010 22:19:10 +0000 Subject: [PATCH 160/232] Fixing the meta platforms of python 2.6. svn path=/nixpkgs/branches/stdenv-updates/; revision=19507 --- pkgs/development/interpreters/python/2.6/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/development/interpreters/python/2.6/default.nix b/pkgs/development/interpreters/python/2.6/default.nix index 80c09722eec..2d607926a23 100644 --- a/pkgs/development/interpreters/python/2.6/default.nix +++ b/pkgs/development/interpreters/python/2.6/default.nix @@ -87,6 +87,6 @@ stdenv.mkDerivation ( { }; meta = { - platforms = stdenv.lib.platforms; + platforms = stdenv.lib.platforms.all; }; } // (if stdenv.isDarwin then { NIX_CFLAGS_COMPILE = "-msse2" ; patches = [./search-path.patch]; } else {} ) ) From d3288dd878b0d7f64dfc6ea9b0885086c747d7a3 Mon Sep 17 00:00:00 2001 From: Armijn Hemel Date: Sun, 17 Jan 2010 22:48:07 +0000 Subject: [PATCH 161/232] update to 3.6.22 svn path=/nixpkgs/branches/stdenv-updates/; revision=19509 --- pkgs/development/libraries/sqlite/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/development/libraries/sqlite/default.nix b/pkgs/development/libraries/sqlite/default.nix index 2f5ed3f5d42..38ff34e52ea 100644 --- a/pkgs/development/libraries/sqlite/default.nix +++ b/pkgs/development/libraries/sqlite/default.nix @@ -1,13 +1,13 @@ {stdenv, fetchurl, readline, tcl, static ? false}: stdenv.mkDerivation rec { - name = "sqlite-3.6.19"; + name = "sqlite-3.6.22"; # Note: don't use the "amalgamation" source release, since it # doesn't install sqlite3.pc. src = fetchurl { url = "http://www.sqlite.org/${name}.tar.gz"; - sha256 = "7d8649c44fb97b874aa59144faaeb2356ec1fc6a8a7baa1d16e9ff5f1e097003"; + sha256 = "1xjpryhrk6b3h2y0hwrzaa1vj44pbhgm65f8fj73kd5fbj4ikk68"; }; buildInputs = [readline tcl]; From e2a24424ece733b0f18397fcb865c15906e730f0 Mon Sep 17 00:00:00 2001 From: Armijn Hemel Date: Sun, 17 Jan 2010 23:04:20 +0000 Subject: [PATCH 162/232] update to 1.1.4 svn path=/nixpkgs/branches/stdenv-updates/; revision=19510 --- pkgs/development/libraries/libogg/default.nix | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pkgs/development/libraries/libogg/default.nix b/pkgs/development/libraries/libogg/default.nix index fc4c77f9f2a..aadc5f653fc 100644 --- a/pkgs/development/libraries/libogg/default.nix +++ b/pkgs/development/libraries/libogg/default.nix @@ -1,9 +1,9 @@ {stdenv, fetchurl}: stdenv.mkDerivation { - name = "libogg-1.1.3"; + name = "libogg-1.1.4"; src = fetchurl { - url = http://downloads.xiph.org/releases/ogg/libogg-1.1.3.tar.gz; - md5 = "eaf7dc6ebbff30975de7527a80831585"; + url = http://downloads.xiph.org/releases/ogg/libogg-1.1.4.tar.gz; + sha256 = "00z15ha73yfv7zn9z2z5yvc8g53ci6vn12vpc0l7qhc8zn1w2m4k"; }; } From f33363a8415d856e7422e8b9321969d52438f5bd Mon Sep 17 00:00:00 2001 From: Armijn Hemel Date: Sun, 17 Jan 2010 23:04:26 +0000 Subject: [PATCH 163/232] update to 1.2.3 svn path=/nixpkgs/branches/stdenv-updates/; revision=19511 --- pkgs/development/libraries/libvorbis/default.nix | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pkgs/development/libraries/libvorbis/default.nix b/pkgs/development/libraries/libvorbis/default.nix index 83925503ade..9480a7ad700 100644 --- a/pkgs/development/libraries/libvorbis/default.nix +++ b/pkgs/development/libraries/libvorbis/default.nix @@ -1,10 +1,10 @@ {stdenv, fetchurl, libogg}: stdenv.mkDerivation { - name = "libvorbis-1.2.0"; + name = "libvorbis-1.2.3"; src = fetchurl { - url = http://downloads.xiph.org/releases/vorbis/libvorbis-1.2.0.tar.bz2; - sha256 = "0nq62b8y2rhhgxxyiw6b4wchic61q5v649fdl8dd7090nxxcbx4y"; + url = http://downloads.xiph.org/releases/vorbis/libvorbis-1.2.3.tar.bz2; + sha256 = "0aj9jfxsp89vs78321sqvj8my4bxcb7pjr959nhi9wj0r032gyfv"; }; propagatedBuildInputs = [ libogg ]; From a9634c0c5a08edb66a68a724d68b5500e7fa72cd Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Mon, 18 Jan 2010 10:50:32 +0000 Subject: [PATCH 164/232] * The postInstall attribute in default.nix did nothing, because builder.sh already sets postInstall. As a result Glibc had a retained dependency on bootstrap-tools. Added the "rm" to builder.sh. * localesbuilder.sh -> locales-builder.sh. svn path=/nixpkgs/branches/stdenv-updates/; revision=19516 --- pkgs/development/libraries/glibc-2.11/builder.sh | 2 ++ pkgs/development/libraries/glibc-2.11/common.nix | 4 ++-- pkgs/development/libraries/glibc-2.11/default.nix | 12 ++++-------- .../{localesbuilder.sh => locales-builder.sh} | 0 pkgs/development/libraries/glibc-2.11/locales.nix | 2 +- 5 files changed, 9 insertions(+), 11 deletions(-) rename pkgs/development/libraries/glibc-2.11/{localesbuilder.sh => locales-builder.sh} (100%) diff --git a/pkgs/development/libraries/glibc-2.11/builder.sh b/pkgs/development/libraries/glibc-2.11/builder.sh index fc1ea2f83eb..57a44bd04ad 100644 --- a/pkgs/development/libraries/glibc-2.11/builder.sh +++ b/pkgs/development/libraries/glibc-2.11/builder.sh @@ -27,6 +27,8 @@ postInstall() { if test -n "$is64bit"; then ln -s lib $out/lib64 fi + + rm $out/lib/libgcc_s.so.1 } diff --git a/pkgs/development/libraries/glibc-2.11/common.nix b/pkgs/development/libraries/glibc-2.11/common.nix index b955bb31a45..5e0533664c2 100644 --- a/pkgs/development/libraries/glibc-2.11/common.nix +++ b/pkgs/development/libraries/glibc-2.11/common.nix @@ -68,11 +68,11 @@ stdenv.mkDerivation ({ "--enable-kernel=2.6.0" "--without-fp" "--with-__thread" - ] ++ (if (stdenv.system == "armv5tel-linux") then [ + ] ++ stdenv.lib.optionals (stdenv.system == "armv5tel-linux") [ "--host=arm-linux-gnueabi" "--build=arm-linux-gnueabi" "--without-fp" - ] else []); + ]; buildInputs = stdenv.lib.optionals (cross != null) [ gccCross ]; diff --git a/pkgs/development/libraries/glibc-2.11/default.nix b/pkgs/development/libraries/glibc-2.11/default.nix index 49ee71af506..a4ff10509ea 100644 --- a/pkgs/development/libraries/glibc-2.11/default.nix +++ b/pkgs/development/libraries/glibc-2.11/default.nix @@ -21,10 +21,6 @@ in ln -s ${stdenv.gcc.gcc}/lib/libgcc_s.so.1 $out/lib/libgcc_s.so.1 ''; - postInstall = '' - rm $out/lib/libgcc_s.so.1 - ''; - meta.description = "The GNU C Library"; } @@ -36,10 +32,10 @@ in sed -i s/-lgcc_eh//g "../$sourceRoot/Makeconfig" cat > config.cache << "EOF" -libc_cv_forced_unwind=yes -libc_cv_c_cleanup=yes -libc_cv_gnu89_inline=yes -EOF + libc_cv_forced_unwind=yes + libc_cv_c_cleanup=yes + libc_cv_gnu89_inline=yes + EOF export BUILD_CC=gcc export CC="$crossConfig-gcc" export AR="$crossConfig-ar" diff --git a/pkgs/development/libraries/glibc-2.11/localesbuilder.sh b/pkgs/development/libraries/glibc-2.11/locales-builder.sh similarity index 100% rename from pkgs/development/libraries/glibc-2.11/localesbuilder.sh rename to pkgs/development/libraries/glibc-2.11/locales-builder.sh diff --git a/pkgs/development/libraries/glibc-2.11/locales.nix b/pkgs/development/libraries/glibc-2.11/locales.nix index 61bfc9edc02..821eddd41f0 100644 --- a/pkgs/development/libraries/glibc-2.11/locales.nix +++ b/pkgs/development/libraries/glibc-2.11/locales.nix @@ -16,7 +16,7 @@ in inherit fetchurl stdenv; installLocales = true; - builder = ./localesbuilder.sh; + builder = ./locales-builder.sh; # Awful hack: `localedef' doesn't allow the path to `locale-archive' # to be overriden, but you *can* specify a prefix, i.e. it will use From fa5a119fcd7a44830c3b15fe126cc75a4b98973d Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Mon, 18 Jan 2010 12:09:51 +0000 Subject: [PATCH 165/232] * Perl 5.10.1. svn path=/nixpkgs/branches/stdenv-updates/; revision=19517 --- .../interpreters/perl-5.10/default.nix | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/pkgs/development/interpreters/perl-5.10/default.nix b/pkgs/development/interpreters/perl-5.10/default.nix index f5abffb26e2..aadf1b7d00d 100644 --- a/pkgs/development/interpreters/perl-5.10/default.nix +++ b/pkgs/development/interpreters/perl-5.10/default.nix @@ -3,18 +3,21 @@ }: let - preBuildNoNative = '' + + preBuildNoNative = + '' # Make Cwd work on NixOS (where we don't have a /bin/pwd). substituteInPlace lib/Cwd.pm --replace "'/bin/pwd'" "'$(type -tP pwd)'" ''; - preBuildNative = ""; + in -stdenv.mkDerivation { - name = "perl-5.10.0"; + +stdenv.mkDerivation rec { + name = "perl-5.10.1"; src = fetchurl { - url = mirror://cpan/src/perl-5.10.0.tar.gz; - sha256 = "0bivbz15x02m02gqs6hs77cgjr2msfrhnvp5xqk359jg6w6llill"; + url = "mirror://cpan/src/${name}.tar.gz"; + sha256 = "0dagnhjgmslfx1jawz986nvc3jh1klk7mn2l8djdca1b9gm2czyb"; }; patches = [ @@ -57,8 +60,7 @@ stdenv.mkDerivation { ${if stdenv.system == "armv5tel-linux" then "-Dldflags=\"-lm -lrt\"" else ""}; ''; - preBuild = if (stdenv ? gcc && stdenv.gcc.nativeTools) then - preBuildNative else preBuildNoNative; + preBuild = stdenv.lib.optionalString (!(stdenv ? gcc && stdenv.gcc.nativeTools)) preBuildNoNative; setupHook = ./setup-hook.sh; } From bf1ffcc595573734bfb6b44e1b98e0553e766816 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= Date: Mon, 18 Jan 2010 14:54:42 +0000 Subject: [PATCH 166/232] coreutils: Disable tests on non-GNU platforms. svn path=/nixpkgs/branches/stdenv-updates/; revision=19521 --- pkgs/tools/misc/coreutils/default.nix | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/pkgs/tools/misc/coreutils/default.nix b/pkgs/tools/misc/coreutils/default.nix index 67dd02ab422..d588c49e5c3 100644 --- a/pkgs/tools/misc/coreutils/default.nix +++ b/pkgs/tools/misc/coreutils/default.nix @@ -11,8 +11,10 @@ stdenv.mkDerivation rec { buildInputs = [ perl gmp ] ++ stdenv.lib.optional aclSupport acl; # The tests are known broken on Cygwin - # (http://thread.gmane.org/gmane.comp.gnu.core-utils.bugs/19025). - doCheck = (stdenv.system != "i686-cygwin"); + # (http://thread.gmane.org/gmane.comp.gnu.core-utils.bugs/19025), + # Darwin (http://thread.gmane.org/gmane.comp.gnu.core-utils.bugs/19351), + # and {Open,Free}BSD. + doCheck = (stdenv ? glibc); meta = { homepage = http://www.gnu.org/software/coreutils/; From 907be69b26c5c33c4cbb7acc7537ad0ddb773199 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= Date: Mon, 18 Jan 2010 14:54:46 +0000 Subject: [PATCH 167/232] GNU Patch: Fix for BSDs. svn path=/nixpkgs/branches/stdenv-updates/; revision=19522 --- pkgs/tools/text/gnupatch/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/tools/text/gnupatch/default.nix b/pkgs/tools/text/gnupatch/default.nix index b97c216df2b..cd2a67f6993 100644 --- a/pkgs/tools/text/gnupatch/default.nix +++ b/pkgs/tools/text/gnupatch/default.nix @@ -4,7 +4,7 @@ stdenv.mkDerivation rec { name = "patch-2.6.1"; src = - if stdenv.isDarwin + if !(stdenv ? glibc) then fetchurl { # Temporary fix for # http://lists.gnu.org/archive/html/bug-patch/2010-01/msg00004.html . From 3b37933dd49e94646ae1a6b4118bbf5148ade61c Mon Sep 17 00:00:00 2001 From: Marc Weber Date: Mon, 18 Jan 2010 19:15:36 +0000 Subject: [PATCH 168/232] second part of alsaLib patch + comment svn path=/nixpkgs/branches/stdenv-updates/; revision=19529 --- .../linux/alsa-lib/alsa-plugin-dirs.patch | 46 +++++++++++++++++++ pkgs/os-specific/linux/alsa-lib/default.nix | 5 +- 2 files changed, 50 insertions(+), 1 deletion(-) diff --git a/pkgs/os-specific/linux/alsa-lib/alsa-plugin-dirs.patch b/pkgs/os-specific/linux/alsa-lib/alsa-plugin-dirs.patch index 2b6d6276c22..3cee02aa0cd 100644 --- a/pkgs/os-specific/linux/alsa-lib/alsa-plugin-dirs.patch +++ b/pkgs/os-specific/linux/alsa-lib/alsa-plugin-dirs.patch @@ -62,3 +62,49 @@ index 74d1d1a..17ffb12 100644 } } #ifndef PIC + + +diff --git a/src/control/control.c b/src/control/control.c +index c090797..137fe57 100644 +--- a/src/control/control.c ++++ b/src/control/control.c +@@ -854,8 +854,38 @@ static int snd_ctl_open_conf(snd_ctl_t **ctlp, const char *name, + err = -ENOMEM; + goto _err; + } ++ sprintf(buf1, "%s/libasound_module_pcm_%s.so", ALSA_PLUGIN_DIR, str); ++ if (!file_exists(buf1)){ ++ // try to locate plugin in one of ALSA_PLUGIN_DIRS which is colon separated list of paths ++ char * pdirs = getenv("ALSA_PLUGIN_DIRS"); ++ ++ if (pdirs){ // env var set? ++ char * saveptr; ++ while (1) { ++ char * dir_tok = strtok_r(pdirs, "::::", &saveptr); // "::::" to work around bug in glibc and -O2 ? ":" seems to cause a segfault ++ if (dir_tok == NULL) ++ break; ++ char * so_file = malloc(strlen(str) + strlen(dir_tok) + 32); ++ if (so_file == NULL) { ++ err = -ENOMEM; ++ goto _err; ++ } ++ ++ sprintf(so_file, "%s/libasound_module_ctl_%s.so", dir_tok, str); ++ ++ if (file_exists(so_file)){ ++ ++ free(buf1); ++ buf1 = so_file; ++ break; ++ } else { ++ free (so_file); ++ } ++ pdirs = NULL; ++ } ++ } ++ } + lib = buf1; +- sprintf(buf1, "%s/libasound_module_ctl_%s.so", ALSA_PLUGIN_DIR, str); + } + } + #ifndef PIC diff --git a/pkgs/os-specific/linux/alsa-lib/default.nix b/pkgs/os-specific/linux/alsa-lib/default.nix index daabf99d543..36e99482f5d 100644 --- a/pkgs/os-specific/linux/alsa-lib/default.nix +++ b/pkgs/os-specific/linux/alsa-lib/default.nix @@ -28,7 +28,10 @@ stdenv.mkDerivation rec { patches = [ /* allow specifying alternatives alsa plugin locations using - export ALSA_PLUGIN_DIRS=$(nix-build -A alsaPlugins)/lib/alsa-lib */ + export ALSA_PLUGIN_DIRS=$(nix-build -A alsaPlugins)/lib/alsa-lib + This patch should be improved: + See http://thread.gmane.org/gmane.linux.distributions.nixos/3435 + */ ./alsa-plugin-dirs.patch ]; } From ec59bcbf370c43892f9a9f6e121f35ee1815a118 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Llu=C3=ADs=20Batlle=20i=20Rossell?= Date: Mon, 18 Jan 2010 22:47:45 +0000 Subject: [PATCH 169/232] Disable PPL tests (although maybe we did not reach a consensus, let's disable it for the possible massive stdenv rebuilds to come) svn path=/nixpkgs/branches/stdenv-updates/; revision=19530 --- pkgs/development/libraries/ppl/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/development/libraries/ppl/default.nix b/pkgs/development/libraries/ppl/default.nix index 0d1c920b635..ed4cc7f2497 100644 --- a/pkgs/development/libraries/ppl/default.nix +++ b/pkgs/development/libraries/ppl/default.nix @@ -15,7 +15,7 @@ let version = "0.10.2"; in # Beware! It took ~6 hours to compile PPL and run its tests on a 1.2 GHz # x86_64 box. Nevertheless, being a dependency of GCC, it probably ought # to be tested. - doCheck = true; + doCheck = false; meta = { description = "PPL: The Parma Polyhedra Library"; From 5968b490d66e2a6d0e1f06fd7d7c9492decc98f3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Llu=C3=ADs=20Batlle=20i=20Rossell?= Date: Mon, 18 Jan 2010 23:28:58 +0000 Subject: [PATCH 170/232] The fix in r19516 made evident an error in the gnatboot expression, about library paths. Fixing this, to get gnat properly built. svn path=/nixpkgs/branches/stdenv-updates/; revision=19531 --- pkgs/development/compilers/gnatboot/default.nix | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/pkgs/development/compilers/gnatboot/default.nix b/pkgs/development/compilers/gnatboot/default.nix index 1637cf5f927..954fb6bf594 100644 --- a/pkgs/development/compilers/gnatboot/default.nix +++ b/pkgs/development/compilers/gnatboot/default.nix @@ -19,12 +19,10 @@ stdenv.mkDerivation { installPhase = '' ensureDir $out cp -R * $out - cd $out/bin set +e - for a in *; do + for a in $out/bin/* ; do patchelf --interpreter $(cat $NIX_GCC/nix-support/dynamic-linker) \ - --set-rpath $(cat $NIX_GCC/nix-support/orig-libc)/lib:$(cat - $NIX_GCC/nix-support/orig-gcc) $a + --set-rpath $(cat $NIX_GCC/nix-support/orig-libc)/lib:$(cat $NIX_GCC/nix-support/orig-gcc)/lib64:$(cat $NIX_GCC/nix-support/orig-gcc)/lib $a done set -e mv $out/bin/gnatgcc_2wrap $out/bin/gnatgcc From 0dcc2967efc6b6a00111cf3f29ada6533d2f96e2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Llu=C3=ADs=20Batlle=20i=20Rossell?= Date: Tue, 19 Jan 2010 08:41:49 +0000 Subject: [PATCH 171/232] Updating cloog-ppl. svn path=/nixpkgs/branches/stdenv-updates/; revision=19532 --- pkgs/development/libraries/cloog-ppl/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/development/libraries/cloog-ppl/default.nix b/pkgs/development/libraries/cloog-ppl/default.nix index ab502d9e5ac..b1372d79cb5 100644 --- a/pkgs/development/libraries/cloog-ppl/default.nix +++ b/pkgs/development/libraries/cloog-ppl/default.nix @@ -1,11 +1,11 @@ { fetchurl, stdenv, ppl }: stdenv.mkDerivation rec { - name = "cloog-ppl-0.15.4"; + name = "cloog-ppl-0.15.7"; src = fetchurl { url = "mirror://gcc/infrastructure/${name}.tar.gz"; - sha256 = "133b6ayi6wmvbmvd4y1w1xh01qy38kp59n87j7apkm2ig8avfnmm"; + sha256 = "0zb96524jk2l78gr5gw0wq3dnvdsmyr2av59v89zv5xcps417q55"; }; propagatedBuildInputs = [ ppl ]; From dfd81bebb1e806187d0197a0ae1a03cfd36742d2 Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Tue, 19 Jan 2010 10:32:41 +0000 Subject: [PATCH 172/232] * gcc-wrapper2: obsolete. svn path=/nixpkgs/branches/stdenv-updates/; revision=19533 --- pkgs/build-support/gcc-wrapper2/README | 6 - pkgs/build-support/gcc-wrapper2/add-flags | 24 --- pkgs/build-support/gcc-wrapper2/builder.sh | 135 --------------- pkgs/build-support/gcc-wrapper2/default.nix | 61 ------- .../build-support/gcc-wrapper2/gcc-wrapper.sh | 148 ----------------- pkgs/build-support/gcc-wrapper2/ld-wrapper.sh | 155 ------------------ pkgs/build-support/gcc-wrapper2/setup-hook.sh | 29 ---- pkgs/build-support/gcc-wrapper2/utils.sh | 23 --- 8 files changed, 581 deletions(-) delete mode 100644 pkgs/build-support/gcc-wrapper2/README delete mode 100644 pkgs/build-support/gcc-wrapper2/add-flags delete mode 100644 pkgs/build-support/gcc-wrapper2/builder.sh delete mode 100644 pkgs/build-support/gcc-wrapper2/default.nix delete mode 100644 pkgs/build-support/gcc-wrapper2/gcc-wrapper.sh delete mode 100644 pkgs/build-support/gcc-wrapper2/ld-wrapper.sh delete mode 100644 pkgs/build-support/gcc-wrapper2/setup-hook.sh delete mode 100644 pkgs/build-support/gcc-wrapper2/utils.sh diff --git a/pkgs/build-support/gcc-wrapper2/README b/pkgs/build-support/gcc-wrapper2/README deleted file mode 100644 index 6753387b4e7..00000000000 --- a/pkgs/build-support/gcc-wrapper2/README +++ /dev/null @@ -1,6 +0,0 @@ -To be removed after we merge stdenv-updates in. -stdenv-updates should have this gcc-wrapper2 as gcc-wrapper. - -Changelog against gcc-wrapper: -- Support for linking shared objects with direct mention of the /path/libxxx.so object, - thus, adding its path to the rpath. diff --git a/pkgs/build-support/gcc-wrapper2/add-flags b/pkgs/build-support/gcc-wrapper2/add-flags deleted file mode 100644 index 02755e44541..00000000000 --- a/pkgs/build-support/gcc-wrapper2/add-flags +++ /dev/null @@ -1,24 +0,0 @@ -# `-B@out@/bin' forces gcc to use ld-wrapper.sh when calling ld. -export NIX_CFLAGS_COMPILE="-B@out@/bin/ $NIX_CFLAGS_COMPILE" - -if test -e @out@/nix-support/libc-cflags; then - export NIX_CFLAGS_COMPILE="$(cat @out@/nix-support/libc-cflags) $NIX_CFLAGS_COMPILE" -fi - -if test -e @out@/nix-support/gcc-cflags; then - export NIX_CFLAGS_COMPILE="$(cat @out@/nix-support/gcc-cflags) $NIX_CFLAGS_COMPILE" -fi - -if test -e @out@/nix-support/libc-ldflags; then - export NIX_LDFLAGS="$NIX_LDFLAGS $(cat @out@/nix-support/libc-ldflags)" -fi - -if test -e @out@/nix-support/gcc-ldflags; then - export NIX_LDFLAGS="$NIX_LDFLAGS $(cat @out@/nix-support/gcc-ldflags)" -fi - -if test -e @out@/nix-support/libc-ldflags-before; then - export NIX_LDFLAGS_BEFORE="$(cat @out@/nix-support/libc-ldflags-before) $NIX_LDFLAGS_BEFORE" -fi - -export NIX_GCC_WRAPPER_FLAGS_SET=1 diff --git a/pkgs/build-support/gcc-wrapper2/builder.sh b/pkgs/build-support/gcc-wrapper2/builder.sh deleted file mode 100644 index 0fe3f3768f2..00000000000 --- a/pkgs/build-support/gcc-wrapper2/builder.sh +++ /dev/null @@ -1,135 +0,0 @@ -source $stdenv/setup - - -ensureDir $out/bin -ensureDir $out/nix-support - - -if test -z "$nativeLibc"; then - dynamicLinker="$libc/lib/$dynamicLinker" - echo $dynamicLinker > $out/nix-support/dynamic-linker - - if test -e $libc/lib/32/ld-linux.so.2; then - echo $libc/lib/32/ld-linux.so.2 > $out/nix-support/dynamic-linker-m32 - fi - - # The "-B$libc/lib/" flag is a quick hack to force gcc to link - # against the crt1.o from our own glibc, rather than the one in - # /usr/lib. (This is only an issue when using an `impure' - # compiler/linker, i.e., one that searches /usr/lib and so on.) - # - # Unfortunately, setting -B appears to override the default search - # path. Thus, the gcc-specific "../includes-fixed" directory is - # now longer searched and glibc's header fails to - # compile, because it uses "#include_next " to find the - # limits.h file in ../includes-fixed. To remedy the problem, - # another -idirafter is necessary to add that directory again. - echo "-B$libc/lib/ -idirafter $libc/include -idirafter $gcc/lib/gcc/*/*/include-fixed" > $out/nix-support/libc-cflags - - echo "-L$libc/lib" > $out/nix-support/libc-ldflags - - # The dynamic linker is passed in `ldflagsBefore' to allow - # explicit overrides of the dynamic linker by callers to gcc/ld - # (the *last* value counts, so ours should come first). - echo "-dynamic-linker $dynamicLinker" > $out/nix-support/libc-ldflags-before -fi - -if test -n "$nativeTools"; then - gccPath="$nativePrefix/bin" - ldPath="$nativePrefix/bin" -else - if test -e "$gcc/lib64"; then - gccLDFlags="$gccLDFlags -L$gcc/lib64" - fi - gccLDFlags="$gccLDFlags -L$gcc/lib" - echo "$gccLDFlags" > $out/nix-support/gcc-ldflags - - # GCC shows $gcc/lib in `gcc -print-search-dirs', but not - # $gcc/lib64 (even though it does actually search there...).. - # This confuses libtool. So add it to the compiler tool search - # path explicitly. - if test -e "$gcc/lib64"; then - gccCFlags="$gccCFlags -B$gcc/lib64" - fi - echo "$gccCFlags" > $out/nix-support/gcc-cflags - - gccPath="$gcc/bin" - ldPath="$binutils/bin" -fi - - -doSubstitute() { - local src=$1 - local dst=$2 - # Can't use substitute() here, because replace may not have been - # built yet (in the bootstrap). - sed \ - -e "s^@out@^$out^g" \ - -e "s^@shell@^$shell^g" \ - -e "s^@gcc@^$gcc^g" \ - -e "s^@gccProg@^$gccProg^g" \ - -e "s^@binutils@^$binutils^g" \ - -e "s^@libc@^$libc^g" \ - -e "s^@ld@^$ldPath/ld^g" \ - < "$src" > "$dst" -} - - -# Make wrapper scripts around gcc, g++, and gfortran. Also make symlinks -# cc, c++, and f77. -mkGccWrapper() { - local dst=$1 - local src=$2 - - if ! test -f "$src"; then - echo "$src does not exist (skipping)" - return - fi - - gccProg="$src" - doSubstitute "$gccWrapper" "$dst" - chmod +x "$dst" -} - -mkGccWrapper $out/bin/gcc $gccPath/gcc -ln -s gcc $out/bin/cc - -mkGccWrapper $out/bin/g++ $gccPath/g++ -ln -s g++ $out/bin/c++ - -if test -e $gccPath/gfortran; then - mkGccWrapper $out/bin/gfortran $gccPath/gfortran - ln -s gfortran $out/bin/g77 - ln -s gfortran $out/bin/f77 -fi - - -# Create a symlink to as (the assembler). This is useful when a -# gcc-wrapper is installed in a user environment, as it ensures that -# the right assembler is called. -ln -s $ldPath/as $out/bin/as - - -# Make a wrapper around the linker. -doSubstitute "$ldWrapper" "$out/bin/ld" -chmod +x "$out/bin/ld" - - -# Emit a setup hook. Also store the path to the original GCC and -# Glibc. -test -n "$gcc" && echo $gcc > $out/nix-support/orig-gcc -test -n "$libc" && echo $libc > $out/nix-support/orig-libc - -doSubstitute "$addFlags" "$out/nix-support/add-flags.sh" - -doSubstitute "$setupHook" "$out/nix-support/setup-hook" - -cp -p $utils $out/nix-support/utils.sh - - -# Propagate the wrapped gcc so that if you install the wrapper, you get -# tools like gcov, the manpages, etc. as well (including for binutils -# and Glibc). -if test -z "$nativeTools"; then - echo $gcc $binutils $libc > $out/nix-support/propagated-user-env-packages -fi diff --git a/pkgs/build-support/gcc-wrapper2/default.nix b/pkgs/build-support/gcc-wrapper2/default.nix deleted file mode 100644 index 950ba4c9f78..00000000000 --- a/pkgs/build-support/gcc-wrapper2/default.nix +++ /dev/null @@ -1,61 +0,0 @@ -# The Nix `gcc' stdenv.mkDerivation is not directly usable, since it doesn't -# know where the C library and standard header files are. Therefore -# the compiler produced by that package cannot be installed directly -# in a user environment and used from the command line. This -# stdenv.mkDerivation provides a wrapper that sets up the right environment -# variables so that the compiler and the linker just "work". - -{ name ? "", stdenv, nativeTools, nativeLibc, nativePrefix ? "" -, gcc ? null, libc ? null, binutils ? null, shell ? "" -}: - -assert nativeTools -> nativePrefix != ""; -assert !nativeTools -> gcc != null && binutils != null; -assert !nativeLibc -> libc != null; -assert gcc != null; - -let - - gccVersion = (builtins.parseDrvName gcc.name).version; - gccName = (builtins.parseDrvName gcc.name).name; - -in - -stdenv.mkDerivation { - name = - (if name != "" then name else gccName + "-wrapper") + - (if gcc != null && gccVersion != "" then "-" + gccVersion else ""); - - builder = ./builder.sh; - setupHook = ./setup-hook.sh; - gccWrapper = ./gcc-wrapper.sh; - ldWrapper = ./ld-wrapper.sh; - utils = ./utils.sh; - addFlags = ./add-flags; - - inherit nativeTools nativeLibc nativePrefix gcc; - libc = if nativeLibc then null else libc; - binutils = if nativeTools then null else binutils; - - langC = if nativeTools then true else gcc.langC; - langCC = if nativeTools then true else gcc.langCC; - langFortran = if nativeTools then false else gcc ? langFortran; - shell = if shell == "" then stdenv.shell else shell; - - meta = - let gcc_ = if gcc != null then gcc else {}; in - (if gcc_ ? meta then removeAttrs gcc.meta ["priority"] else {}) // - { description = - stdenv.lib.attrByPath ["meta" "description"] "System C compiler" gcc_ - + " (wrapper script)"; - }; - - # The dynamic linker has different names on different Linux platforms. - dynamicLinker = - if !nativeLibc then - (if stdenv.system == "i686-linux" then "ld-linux.so.2" else - if stdenv.system == "x86_64-linux" then "ld-linux-x86-64.so.2" else - if stdenv.system == "powerpc-linux" then "ld.so.1" else - abort "don't know the name of the dynamic linker for this platform") - else ""; -} diff --git a/pkgs/build-support/gcc-wrapper2/gcc-wrapper.sh b/pkgs/build-support/gcc-wrapper2/gcc-wrapper.sh deleted file mode 100644 index 8a49fcb9b06..00000000000 --- a/pkgs/build-support/gcc-wrapper2/gcc-wrapper.sh +++ /dev/null @@ -1,148 +0,0 @@ -#! @shell@ -e - -if test -n "$NIX_GCC_WRAPPER_START_HOOK"; then - source "$NIX_GCC_WRAPPER_START_HOOK" -fi - -if test -z "$NIX_GCC_WRAPPER_FLAGS_SET"; then - source @out@/nix-support/add-flags.sh -fi - -source @out@/nix-support/utils.sh - - -# Figure out if linker flags should be passed. GCC prints annoying -# warnings when they are not needed. -dontLink=0 -getVersion=0 -nonFlagArgs=0 - -for i in "$@"; do - if test "$i" = "-c"; then - dontLink=1 - elif test "$i" = "-S"; then - dontLink=1 - elif test "$i" = "-E"; then - dontLink=1 - elif test "$i" = "-E"; then - dontLink=1 - elif test "$i" = "-M"; then - dontLink=1 - elif test "$i" = "-MM"; then - dontLink=1 - elif test "${i:0:1}" != "-"; then - nonFlagArgs=1 - elif test "$i" = "-m32"; then - if test -e @out@/nix-support/dynamic-linker-m32; then - NIX_LDFLAGS="$NIX_LDFLAGS -dynamic-linker $(cat @out@/nix-support/dynamic-linker-m32)" - fi - fi -done - -# If we pass a flag like -Wl, then gcc will call the linker unless it -# can figure out that it has to do something else (e.g., because of a -# "-c" flag). So if no non-flag arguments are given, don't pass any -# linker flags. This catches cases like "gcc" (should just print -# "gcc: no input files") and "gcc -v" (should print the version). -if test "$nonFlagArgs" = "0"; then - dontLink=1 -fi - - -# Optionally filter out paths not refering to the store. -params=("$@") -if test "$NIX_ENFORCE_PURITY" = "1" -a -n "$NIX_STORE"; then - rest=() - n=0 - while test $n -lt ${#params[*]}; do - p=${params[n]} - p2=${params[$((n+1))]} - if test "${p:0:3}" = "-L/" && badPath "${p:2}"; then - skip $p - elif test "$p" = "-L" && badPath "$p2"; then - n=$((n + 1)); skip $p2 - elif test "${p:0:3}" = "-I/" && badPath "${p:2}"; then - skip $p - elif test "$p" = "-I" && badPath "$p2"; then - n=$((n + 1)); skip $p2 - elif test "$p" = "-isystem" && badPath "$p2"; then - n=$((n + 1)); skip $p2 - else - rest=("${rest[@]}" "$p") - fi - n=$((n + 1)) - done - params=("${rest[@]}") -fi - - -# Add the flags for the C compiler proper. -extraAfter=($NIX_CFLAGS_COMPILE) -extraBefore=() - -if test "$dontLink" != "1"; then - - # Add the flags that should only be passed to the compiler when - # linking. - extraAfter=(${extraAfter[@]} $NIX_CFLAGS_LINK) - - # Add the flags that should be passed to the linker (and prevent - # `ld-wrapper' from adding NIX_LDFLAGS again). - for i in $NIX_LDFLAGS_BEFORE; do - extraBefore=(${extraBefore[@]} "-Wl,$i") - done - for i in $NIX_LDFLAGS; do - if test "${i:0:3}" = "-L/"; then - extraAfter=(${extraAfter[@]} "$i") - else - extraAfter=(${extraAfter[@]} "-Wl,$i") - fi - done - export NIX_LDFLAGS_SET=1 - - if test "$NIX_STRIP_DEBUG" = "1"; then - # Add executable-stripping flags. - extraAfter=(${extraAfter[@]} $NIX_CFLAGS_STRIP) - fi -fi - -# As a very special hack, if the arguments are just `-v', then don't -# add anything. This is to prevent `gcc -v' (which normally prints -# out the version number and returns exit code 0) from printing out -# `No input files specified' and returning exit code 1. -if test "$*" = "-v"; then - extraAfter=() - extraBefore=() -fi - -# Optionally print debug info. -if test "$NIX_DEBUG" = "1"; then - echo "original flags to @gccProg@:" >&2 - for i in "${params[@]}"; do - echo " $i" >&2 - done - echo "extraBefore flags to @gccProg@:" >&2 - for i in ${extraBefore[@]}; do - echo " $i" >&2 - done - echo "extraAfter flags to @gccProg@:" >&2 - for i in ${extraAfter[@]}; do - echo " $i" >&2 - done -fi - -if test -n "$NIX_GCC_WRAPPER_EXEC_HOOK"; then - source "$NIX_GCC_WRAPPER_EXEC_HOOK" -fi - - -# Call the real `gcc'. Filter out warnings from stderr about unused -# `-B' flags, since they confuse some programs. Deep bash magic to -# apply grep to stderr (by swapping stdin/stderr twice). -if test -z "$NIX_GCC_NEEDS_GREP"; then - @gccProg@ ${extraBefore[@]} "${params[@]}" ${extraAfter[@]} -else - (@gccProg@ ${extraBefore[@]} "${params[@]}" ${extraAfter[@]} 3>&2 2>&1 1>&3- \ - | (grep -v 'file path prefix' || true); exit ${PIPESTATUS[0]}) 3>&2 2>&1 1>&3- - exit $? -fi diff --git a/pkgs/build-support/gcc-wrapper2/ld-wrapper.sh b/pkgs/build-support/gcc-wrapper2/ld-wrapper.sh deleted file mode 100644 index 52aa57bc1ea..00000000000 --- a/pkgs/build-support/gcc-wrapper2/ld-wrapper.sh +++ /dev/null @@ -1,155 +0,0 @@ -#! @shell@ -e - -if test -n "$NIX_LD_WRAPPER_START_HOOK"; then - source "$NIX_LD_WRAPPER_START_HOOK" -fi - -if test -z "$NIX_GCC_WRAPPER_FLAGS_SET"; then - source @out@/nix-support/add-flags.sh -fi - -source @out@/nix-support/utils.sh - - -# Optionally filter out paths not refering to the store. -params=("$@") -if test "$NIX_ENFORCE_PURITY" = "1" -a -n "$NIX_STORE" \ - -a \( -z "$NIX_IGNORE_LD_THROUGH_GCC" -o -z "$NIX_LDFLAGS_SET" \); then - rest=() - n=0 - while test $n -lt ${#params[*]}; do - p=${params[n]} - p2=${params[$((n+1))]} - if test "${p:0:3}" = "-L/" && badPath "${p:2}"; then - skip $p - elif test "$p" = "-L" && badPath "$p2"; then - n=$((n + 1)); skip $p2 - elif test "$p" = "-rpath" && badPath "$p2"; then - n=$((n + 1)); skip $p2 - elif test "$p" = "-dynamic-linker" && badPath "$p2"; then - n=$((n + 1)); skip $p2 - elif test "${p:0:1}" = "/" && badPath "$p"; then - # We cannot skip this; barf. - echo "impure path \`$p' used in link" >&2 - exit 1 - else - rest=("${rest[@]}" "$p") - fi - n=$((n + 1)) - done - params=("${rest[@]}") -fi - - -extra=() -extraBefore=() - -if test -z "$NIX_LDFLAGS_SET"; then - extra=(${extra[@]} $NIX_LDFLAGS) - extraBefore=(${extraBefore[@]} $NIX_LDFLAGS_BEFORE) -fi - - -# Add all used dynamic libraries to the rpath. -if test "$NIX_DONT_SET_RPATH" != "1"; then - - # First, find all -L... switches. - allParams=("${params[@]}" ${extra[@]}) - libPath="" - addToLibPath() { - local path="$1" - if test "${path:0:1}" != "/"; then return 0; fi - case "$path" in - *..*|*./*|*/.*|*//*) - local path2 - if path2=$(readlink -f "$path"); then - path="$path2" - fi - ;; - esac - case $libPath in - *\ $path\ *) return 0 ;; - esac - libPath="$libPath $path " - } - n=0 - while test $n -lt ${#allParams[*]}; do - p=${allParams[n]} - p2=${allParams[$((n+1))]} - if test "${p:0:3}" = "-L/"; then - addToLibPath ${p:2} - elif test "$p" = "-L"; then - addToLibPath ${p2} - n=$((n + 1)) - elif $(echo "$p" | grep -q '\.so\($\|\.\)'); then - path="$(dirname "$p")"; - addToLibPath "${path}" - fi - n=$((n + 1)) - done - - # Second, for each directory in the library search path (-L...), - # see if it contains a dynamic library used by a -l... flag. If - # so, add the directory to the rpath. - rpath="" - - addToRPath() { - # If the path is not in the store, don't add it to the rpath. - # This typically happens for libraries in /tmp that are later - # copied to $out/lib. If not, we're screwed. - if test "${1:0:${#NIX_STORE}}" != "$NIX_STORE"; then return 0; fi - case $rpath in - *\ $1\ *) return 0 ;; - esac - rpath="$rpath $1 " - } - - for i in $libPath; do - n=0 - while test $n -lt ${#allParams[*]}; do - p=${allParams[n]} - p2=${allParams[$((n+1))]} - if test "${p:0:2}" = "-l" -a -f "$i/lib${p:2}.so"; then - addToRPath $i - break - elif test "$p" = "-l" -a -f "$i/lib${p2}"; then - # I haven't seen `-l foo', but you never know... - addToRPath $i - break - elif $(echo "$p" | grep -q '\.so\($\|\.\)'); then - path="$(dirname "$p")"; - if test "$path" == "$i"; then - addToRPath $i - break; - fi - fi - n=$((n + 1)) - done - - done - - - # Finally, add `-rpath' switches. - for i in $rpath; do - extra=(${extra[@]} -rpath $i) - done -fi - - -# Optionally print debug info. -if test "$NIX_DEBUG" = "1"; then - echo "original flags to @ld@:" >&2 - for i in "${params[@]}"; do - echo " $i" >&2 - done - echo "extra flags to @ld@:" >&2 - for i in ${extra[@]}; do - echo " $i" >&2 - done -fi - -if test -n "$NIX_LD_WRAPPER_EXEC_HOOK"; then - source "$NIX_LD_WRAPPER_EXEC_HOOK" -fi - -exec @ld@ ${extraBefore[@]} "${params[@]}" ${extra[@]} diff --git a/pkgs/build-support/gcc-wrapper2/setup-hook.sh b/pkgs/build-support/gcc-wrapper2/setup-hook.sh deleted file mode 100644 index 76167df3c31..00000000000 --- a/pkgs/build-support/gcc-wrapper2/setup-hook.sh +++ /dev/null @@ -1,29 +0,0 @@ -addCVars () { - if test -d $1/include; then - export NIX_CFLAGS_COMPILE="$NIX_CFLAGS_COMPILE -I$1/include" - fi - - if test -d $1/lib64; then - export NIX_LDFLAGS="$NIX_LDFLAGS -L$1/lib64" - fi - - if test -d $1/lib; then - export NIX_LDFLAGS="$NIX_LDFLAGS -L$1/lib" - fi -} - -envHooks=(${envHooks[@]} addCVars) - -# Note: these come *after* $out in the PATH (see setup.sh). - -if test -n "@gcc@"; then - addToSearchPath PATH @gcc@/bin -fi - -if test -n "@binutils@"; then - addToSearchPath PATH @binutils@/bin -fi - -if test -n "@libc@"; then - addToSearchPath PATH @libc@/bin -fi diff --git a/pkgs/build-support/gcc-wrapper2/utils.sh b/pkgs/build-support/gcc-wrapper2/utils.sh deleted file mode 100644 index 9a664e1d1e6..00000000000 --- a/pkgs/build-support/gcc-wrapper2/utils.sh +++ /dev/null @@ -1,23 +0,0 @@ -skip () { - if test "$NIX_DEBUG" = "1"; then - echo "skipping impure path $1" >&2 - fi -} - - -# Checks whether a path is impure. E.g., `/lib/foo.so' is impure, but -# `/nix/store/.../lib/foo.so' isn't. -badPath() { - local p=$1 - - # Relative paths are okay (since they're presumably relative to - # the temporary build directory). - if test "${p:0:1}" != "/"; then return 1; fi - - # Otherwise, the path should refer to the store or some temporary - # directory (including the build directory). - test \ - "${p:0:${#NIX_STORE}}" != "$NIX_STORE" -a \ - "${p:0:4}" != "/tmp" -a \ - "${p:0:${#NIX_BUILD_TOP}}" != "$NIX_BUILD_TOP" -} From 61a72ef9619be1f88ed8286349831dd243842eb5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Llu=C3=ADs=20Batlle=20i=20Rossell?= Date: Tue, 19 Jan 2010 10:58:03 +0000 Subject: [PATCH 173/232] Removing the gnat and the ghdl wrappers, which I already integrated into gcc-wrapper. svn path=/nixpkgs/branches/stdenv-updates/; revision=19534 --- pkgs/build-support/ghdl-wrapper/add-flags | 24 --- pkgs/build-support/ghdl-wrapper/builder.sh | 145 -------------- pkgs/build-support/ghdl-wrapper/default.nix | 64 ------- .../build-support/ghdl-wrapper/gcc-wrapper.sh | 148 -------------- pkgs/build-support/ghdl-wrapper/ld-wrapper.sh | 155 --------------- pkgs/build-support/ghdl-wrapper/setup-hook.sh | 33 ---- pkgs/build-support/ghdl-wrapper/utils.sh | 23 --- pkgs/build-support/gnat-wrapper/add-flags | 28 --- pkgs/build-support/gnat-wrapper/builder.sh | 181 ------------------ pkgs/build-support/gnat-wrapper/default.nix | 66 ------- .../build-support/gnat-wrapper/gcc-wrapper.sh | 148 -------------- .../gnat-wrapper/gnat-wrapper.sh | 113 ----------- .../gnat-wrapper/gnatlink-wrapper.sh | 43 ----- pkgs/build-support/gnat-wrapper/ld-wrapper.sh | 155 --------------- pkgs/build-support/gnat-wrapper/setup-hook.sh | 33 ---- pkgs/build-support/gnat-wrapper/utils.sh | 23 --- 16 files changed, 1382 deletions(-) delete mode 100644 pkgs/build-support/ghdl-wrapper/add-flags delete mode 100644 pkgs/build-support/ghdl-wrapper/builder.sh delete mode 100644 pkgs/build-support/ghdl-wrapper/default.nix delete mode 100644 pkgs/build-support/ghdl-wrapper/gcc-wrapper.sh delete mode 100644 pkgs/build-support/ghdl-wrapper/ld-wrapper.sh delete mode 100644 pkgs/build-support/ghdl-wrapper/setup-hook.sh delete mode 100644 pkgs/build-support/ghdl-wrapper/utils.sh delete mode 100644 pkgs/build-support/gnat-wrapper/add-flags delete mode 100644 pkgs/build-support/gnat-wrapper/builder.sh delete mode 100644 pkgs/build-support/gnat-wrapper/default.nix delete mode 100644 pkgs/build-support/gnat-wrapper/gcc-wrapper.sh delete mode 100644 pkgs/build-support/gnat-wrapper/gnat-wrapper.sh delete mode 100644 pkgs/build-support/gnat-wrapper/gnatlink-wrapper.sh delete mode 100644 pkgs/build-support/gnat-wrapper/ld-wrapper.sh delete mode 100644 pkgs/build-support/gnat-wrapper/setup-hook.sh delete mode 100644 pkgs/build-support/gnat-wrapper/utils.sh diff --git a/pkgs/build-support/ghdl-wrapper/add-flags b/pkgs/build-support/ghdl-wrapper/add-flags deleted file mode 100644 index 02755e44541..00000000000 --- a/pkgs/build-support/ghdl-wrapper/add-flags +++ /dev/null @@ -1,24 +0,0 @@ -# `-B@out@/bin' forces gcc to use ld-wrapper.sh when calling ld. -export NIX_CFLAGS_COMPILE="-B@out@/bin/ $NIX_CFLAGS_COMPILE" - -if test -e @out@/nix-support/libc-cflags; then - export NIX_CFLAGS_COMPILE="$(cat @out@/nix-support/libc-cflags) $NIX_CFLAGS_COMPILE" -fi - -if test -e @out@/nix-support/gcc-cflags; then - export NIX_CFLAGS_COMPILE="$(cat @out@/nix-support/gcc-cflags) $NIX_CFLAGS_COMPILE" -fi - -if test -e @out@/nix-support/libc-ldflags; then - export NIX_LDFLAGS="$NIX_LDFLAGS $(cat @out@/nix-support/libc-ldflags)" -fi - -if test -e @out@/nix-support/gcc-ldflags; then - export NIX_LDFLAGS="$NIX_LDFLAGS $(cat @out@/nix-support/gcc-ldflags)" -fi - -if test -e @out@/nix-support/libc-ldflags-before; then - export NIX_LDFLAGS_BEFORE="$(cat @out@/nix-support/libc-ldflags-before) $NIX_LDFLAGS_BEFORE" -fi - -export NIX_GCC_WRAPPER_FLAGS_SET=1 diff --git a/pkgs/build-support/ghdl-wrapper/builder.sh b/pkgs/build-support/ghdl-wrapper/builder.sh deleted file mode 100644 index a1236e08462..00000000000 --- a/pkgs/build-support/ghdl-wrapper/builder.sh +++ /dev/null @@ -1,145 +0,0 @@ -source $stdenv/setup - - -ensureDir $out/bin -ensureDir $out/nix-support - - -if test -z "$nativeLibc"; then - dynamicLinker="$libc/lib/$dynamicLinker" - echo $dynamicLinker > $out/nix-support/dynamic-linker - - if test -e $libc/lib/32/ld-linux.so.2; then - echo $libc/lib/32/ld-linux.so.2 > $out/nix-support/dynamic-linker-m32 - fi - - # The "-B$libc/lib/" flag is a quick hack to force gcc to link - # against the crt1.o from our own glibc, rather than the one in - # /usr/lib. (This is only an issue when using an `impure' - # compiler/linker, i.e., one that searches /usr/lib and so on.) - # - # Unfortunately, setting -B appears to override the default search - # path. Thus, the gcc-specific "../includes-fixed" directory is - # now longer searched and glibc's header fails to - # compile, because it uses "#include_next " to find the - # limits.h file in ../includes-fixed. To remedy the problem, - # another -idirafter is necessary to add that directory again. - echo "-B$libc/lib/ -idirafter $libc/include -idirafter $gcc/lib/gcc/*/*/include-fixed" > $out/nix-support/libc-cflags - - echo "-L$libc/lib" > $out/nix-support/libc-ldflags - - # The dynamic linker is passed in `ldflagsBefore' to allow - # explicit overrides of the dynamic linker by callers to gcc/ld - # (the *last* value counts, so ours should come first). - echo "-dynamic-linker $dynamicLinker" > $out/nix-support/libc-ldflags-before -fi - -if test -n "$nativeTools"; then - gccPath="$nativePrefix/bin" - ldPath="$nativePrefix/bin" -else - if test -e "$gcc/lib64"; then - gccLDFlags="$gccLDFlags -L$gcc/lib64" - fi - gccLDFlags="$gccLDFlags -L$gcc/lib -L$zlib/lib" - echo "$gccLDFlags" > $out/nix-support/gcc-ldflags - - # GCC shows $gcc/lib in `gcc -print-search-dirs', but not - # $gcc/lib64 (even though it does actually search there...).. - # This confuses libtool. So add it to the compiler tool search - # path explicitly. - if test -e "$gcc/lib64"; then - gccCFlags="$gccCFlags -B$gcc/lib64" - fi - echo "$gccCFlags" > $out/nix-support/gcc-cflags - - gccPath="$gcc/bin" - ldPath="$binutils/bin" -fi - - -doSubstitute() { - local src=$1 - local dst=$2 - # Can't use substitute() here, because replace may not have been - # built yet (in the bootstrap). - sed \ - -e "s^@out@^$out^g" \ - -e "s^@shell@^$shell^g" \ - -e "s^@gcc@^$gcc^g" \ - -e "s^@gccProg@^$gccProg^g" \ - -e "s^@binutils@^$binutils^g" \ - -e "s^@coreutils@^$coreutils^g" \ - -e "s^@libc@^$libc^g" \ - -e "s^@ld@^$ldPath/ld^g" \ - < "$src" > "$dst" -} - - -# Make wrapper scripts around gcc, g++, and gfortran. Also make symlinks -# cc, c++, and f77. -mkGccWrapper() { - local dst=$1 - local src=$2 - - if ! test -f "$src"; then - echo "$src does not exist (skipping)" - return 1 - fi - - gccProg="$src" - doSubstitute "$gccWrapper" "$dst" - chmod +x "$dst" -} - -if mkGccWrapper $out/bin/gcc $gccPath/gcc -then - ln -sv gcc $out/bin/cc -fi - -if mkGccWrapper $out/bin/g++ $gccPath/g++ -then - ln -sv g++ $out/bin/c++ -fi - -if mkGccWrapper $out/bin/gfortran $gccPath/gfortran -then - ln -sv gfortran $out/bin/g77 - ln -sv gfortran $out/bin/f77 -fi - -mkGccWrapper $out/bin/gcj $gccPath/gcj || true - -if [ -f $gccPath/ghdl ]; then - ln -sf $gccPath/ghdl $out/bin/ghdl -fi - -# Create a symlink to as (the assembler). This is useful when a -# gcc-wrapper is installed in a user environment, as it ensures that -# the right assembler is called. -ln -s $ldPath/as $out/bin/as - - -# Make a wrapper around the linker. -doSubstitute "$ldWrapper" "$out/bin/ld" -chmod +x "$out/bin/ld" - - -# Emit a setup hook. Also store the path to the original GCC and -# Glibc. -test -n "$gcc" && echo $gcc > $out/nix-support/orig-gcc -test -n "$libc" && echo $libc > $out/nix-support/orig-libc - -doSubstitute "$addFlags" "$out/nix-support/add-flags.sh" - -doSubstitute "$setupHook" "$out/nix-support/setup-hook" - -cp -p $utils $out/nix-support/utils.sh - - -# Propagate the wrapped gcc so that if you install the wrapper, you get -# tools like gcov, the manpages, etc. as well (including for binutils -# and Glibc). -if test -z "$nativeTools"; then - echo $gcc $binutils $libc > $out/nix-support/propagated-user-env-packages -fi diff --git a/pkgs/build-support/ghdl-wrapper/default.nix b/pkgs/build-support/ghdl-wrapper/default.nix deleted file mode 100644 index 89b643dabb2..00000000000 --- a/pkgs/build-support/ghdl-wrapper/default.nix +++ /dev/null @@ -1,64 +0,0 @@ -# The Nix `gcc' stdenv.mkDerivation is not directly usable, since it doesn't -# know where the C library and standard header files are. Therefore -# the compiler produced by that package cannot be installed directly -# in a user environment and used from the command line. This -# stdenv.mkDerivation provides a wrapper that sets up the right environment -# variables so that the compiler and the linker just "work". - -{ name ? "", stdenv, nativeTools, nativeLibc, nativePrefix ? "" -, gcc ? null, libc ? null, binutils ? null, coreutils ? null, shell ? "" -, zlib -}: - -assert nativeTools -> nativePrefix != ""; -assert !nativeTools -> gcc != null && binutils != null && coreutils != null; -assert !nativeLibc -> libc != null; - -let - - gccVersion = (builtins.parseDrvName gcc.name).version; - gccName = (builtins.parseDrvName gcc.name).name; - -in - -stdenv.mkDerivation { - name = - (if name != "" then name else gccName + "-wrapper") + - (if gcc != null && gccVersion != "" then "-" + gccVersion else ""); - - builder = ./builder.sh; - setupHook = ./setup-hook.sh; - gccWrapper = ./gcc-wrapper.sh; - ldWrapper = ./ld-wrapper.sh; - utils = ./utils.sh; - addFlags = ./add-flags; - - inherit nativeTools nativeLibc nativePrefix gcc zlib; - libc = if nativeLibc then null else libc; - binutils = if nativeTools then null else binutils; - # The wrapper scripts use 'cat', so we may need coreutils - coreutils = if nativeTools then null else coreutils; - - langC = if nativeTools then true else gcc.langC; - langCC = if nativeTools then true else gcc.langCC; - langFortran = if nativeTools then false else gcc ? langFortran; - shell = if shell == "" then stdenv.shell else shell; - - meta = - let gcc_ = if gcc != null then gcc else {}; in - (if gcc_ ? meta then removeAttrs gcc.meta ["priority"] else {}) // - { description = - stdenv.lib.attrByPath ["meta" "description"] "System C compiler" gcc_ - + " (wrapper script)"; - }; - - # The dynamic linker has different names on different Linux platforms. - dynamicLinker = - if !nativeLibc then - (if stdenv.system == "i686-linux" then "ld-linux.so.2" else - if stdenv.system == "x86_64-linux" then "ld-linux-x86-64.so.2" else - if stdenv.system == "armv5tel-linux" then "ld-linux.so.3" else - if stdenv.system == "powerpc-linux" then "ld.so.1" else - abort "don't know the name of the dynamic linker for this platform") - else ""; -} diff --git a/pkgs/build-support/ghdl-wrapper/gcc-wrapper.sh b/pkgs/build-support/ghdl-wrapper/gcc-wrapper.sh deleted file mode 100644 index 8a49fcb9b06..00000000000 --- a/pkgs/build-support/ghdl-wrapper/gcc-wrapper.sh +++ /dev/null @@ -1,148 +0,0 @@ -#! @shell@ -e - -if test -n "$NIX_GCC_WRAPPER_START_HOOK"; then - source "$NIX_GCC_WRAPPER_START_HOOK" -fi - -if test -z "$NIX_GCC_WRAPPER_FLAGS_SET"; then - source @out@/nix-support/add-flags.sh -fi - -source @out@/nix-support/utils.sh - - -# Figure out if linker flags should be passed. GCC prints annoying -# warnings when they are not needed. -dontLink=0 -getVersion=0 -nonFlagArgs=0 - -for i in "$@"; do - if test "$i" = "-c"; then - dontLink=1 - elif test "$i" = "-S"; then - dontLink=1 - elif test "$i" = "-E"; then - dontLink=1 - elif test "$i" = "-E"; then - dontLink=1 - elif test "$i" = "-M"; then - dontLink=1 - elif test "$i" = "-MM"; then - dontLink=1 - elif test "${i:0:1}" != "-"; then - nonFlagArgs=1 - elif test "$i" = "-m32"; then - if test -e @out@/nix-support/dynamic-linker-m32; then - NIX_LDFLAGS="$NIX_LDFLAGS -dynamic-linker $(cat @out@/nix-support/dynamic-linker-m32)" - fi - fi -done - -# If we pass a flag like -Wl, then gcc will call the linker unless it -# can figure out that it has to do something else (e.g., because of a -# "-c" flag). So if no non-flag arguments are given, don't pass any -# linker flags. This catches cases like "gcc" (should just print -# "gcc: no input files") and "gcc -v" (should print the version). -if test "$nonFlagArgs" = "0"; then - dontLink=1 -fi - - -# Optionally filter out paths not refering to the store. -params=("$@") -if test "$NIX_ENFORCE_PURITY" = "1" -a -n "$NIX_STORE"; then - rest=() - n=0 - while test $n -lt ${#params[*]}; do - p=${params[n]} - p2=${params[$((n+1))]} - if test "${p:0:3}" = "-L/" && badPath "${p:2}"; then - skip $p - elif test "$p" = "-L" && badPath "$p2"; then - n=$((n + 1)); skip $p2 - elif test "${p:0:3}" = "-I/" && badPath "${p:2}"; then - skip $p - elif test "$p" = "-I" && badPath "$p2"; then - n=$((n + 1)); skip $p2 - elif test "$p" = "-isystem" && badPath "$p2"; then - n=$((n + 1)); skip $p2 - else - rest=("${rest[@]}" "$p") - fi - n=$((n + 1)) - done - params=("${rest[@]}") -fi - - -# Add the flags for the C compiler proper. -extraAfter=($NIX_CFLAGS_COMPILE) -extraBefore=() - -if test "$dontLink" != "1"; then - - # Add the flags that should only be passed to the compiler when - # linking. - extraAfter=(${extraAfter[@]} $NIX_CFLAGS_LINK) - - # Add the flags that should be passed to the linker (and prevent - # `ld-wrapper' from adding NIX_LDFLAGS again). - for i in $NIX_LDFLAGS_BEFORE; do - extraBefore=(${extraBefore[@]} "-Wl,$i") - done - for i in $NIX_LDFLAGS; do - if test "${i:0:3}" = "-L/"; then - extraAfter=(${extraAfter[@]} "$i") - else - extraAfter=(${extraAfter[@]} "-Wl,$i") - fi - done - export NIX_LDFLAGS_SET=1 - - if test "$NIX_STRIP_DEBUG" = "1"; then - # Add executable-stripping flags. - extraAfter=(${extraAfter[@]} $NIX_CFLAGS_STRIP) - fi -fi - -# As a very special hack, if the arguments are just `-v', then don't -# add anything. This is to prevent `gcc -v' (which normally prints -# out the version number and returns exit code 0) from printing out -# `No input files specified' and returning exit code 1. -if test "$*" = "-v"; then - extraAfter=() - extraBefore=() -fi - -# Optionally print debug info. -if test "$NIX_DEBUG" = "1"; then - echo "original flags to @gccProg@:" >&2 - for i in "${params[@]}"; do - echo " $i" >&2 - done - echo "extraBefore flags to @gccProg@:" >&2 - for i in ${extraBefore[@]}; do - echo " $i" >&2 - done - echo "extraAfter flags to @gccProg@:" >&2 - for i in ${extraAfter[@]}; do - echo " $i" >&2 - done -fi - -if test -n "$NIX_GCC_WRAPPER_EXEC_HOOK"; then - source "$NIX_GCC_WRAPPER_EXEC_HOOK" -fi - - -# Call the real `gcc'. Filter out warnings from stderr about unused -# `-B' flags, since they confuse some programs. Deep bash magic to -# apply grep to stderr (by swapping stdin/stderr twice). -if test -z "$NIX_GCC_NEEDS_GREP"; then - @gccProg@ ${extraBefore[@]} "${params[@]}" ${extraAfter[@]} -else - (@gccProg@ ${extraBefore[@]} "${params[@]}" ${extraAfter[@]} 3>&2 2>&1 1>&3- \ - | (grep -v 'file path prefix' || true); exit ${PIPESTATUS[0]}) 3>&2 2>&1 1>&3- - exit $? -fi diff --git a/pkgs/build-support/ghdl-wrapper/ld-wrapper.sh b/pkgs/build-support/ghdl-wrapper/ld-wrapper.sh deleted file mode 100644 index bf3c2620f29..00000000000 --- a/pkgs/build-support/ghdl-wrapper/ld-wrapper.sh +++ /dev/null @@ -1,155 +0,0 @@ -#! @shell@ -e - -if test -n "$NIX_LD_WRAPPER_START_HOOK"; then - source "$NIX_LD_WRAPPER_START_HOOK" -fi - -if test -z "$NIX_GCC_WRAPPER_FLAGS_SET"; then - source @out@/nix-support/add-flags.sh -fi - -source @out@/nix-support/utils.sh - - -# Optionally filter out paths not refering to the store. -params=("$@") -if test "$NIX_ENFORCE_PURITY" = "1" -a -n "$NIX_STORE" \ - -a \( -z "$NIX_IGNORE_LD_THROUGH_GCC" -o -z "$NIX_LDFLAGS_SET" \); then - rest=() - n=0 - while test $n -lt ${#params[*]}; do - p=${params[n]} - p2=${params[$((n+1))]} - if test "${p:0:3}" = "-L/" && badPath "${p:2}"; then - skip $p - elif test "$p" = "-L" && badPath "$p2"; then - n=$((n + 1)); skip $p2 - elif test "$p" = "-rpath" && badPath "$p2"; then - n=$((n + 1)); skip $p2 - elif test "$p" = "-dynamic-linker" && badPath "$p2"; then - n=$((n + 1)); skip $p2 - elif test "${p:0:1}" = "/" && badPath "$p"; then - # We cannot skip this; barf. - echo "impure path \`$p' used in link" >&2 - exit 1 - else - rest=("${rest[@]}" "$p") - fi - n=$((n + 1)) - done - params=("${rest[@]}") -fi - - -extra=() -extraBefore=() - -if test -z "$NIX_LDFLAGS_SET"; then - extra=(${extra[@]} $NIX_LDFLAGS) - extraBefore=(${extraBefore[@]} $NIX_LDFLAGS_BEFORE) -fi - - -# Add all used dynamic libraries to the rpath. -if test "$NIX_DONT_SET_RPATH" != "1"; then - - # First, find all -L... switches. - allParams=("${params[@]}" ${extra[@]}) - libPath="" - addToLibPath() { - local path="$1" - if test "${path:0:1}" != "/"; then return 0; fi - case "$path" in - *..*|*./*|*/.*|*//*) - local path2 - if path2=$(readlink -f "$path"); then - path="$path2" - fi - ;; - esac - case $libPath in - *\ $path\ *) return 0 ;; - esac - libPath="$libPath $path " - } - n=0 - while test $n -lt ${#allParams[*]}; do - p=${allParams[n]} - p2=${allParams[$((n+1))]} - if test "${p:0:3}" = "-L/"; then - addToLibPath ${p:2} - elif test "$p" = "-L"; then - addToLibPath ${p2} - n=$((n + 1)) - elif $(echo "$p" | grep -q '^[^-].*\.so\($\|\.\)'); then - path="$(dirname "$p")"; - addToLibPath "${path}" - fi - n=$((n + 1)) - done - - # Second, for each directory in the library search path (-L...), - # see if it contains a dynamic library used by a -l... flag. If - # so, add the directory to the rpath. - rpath="" - - addToRPath() { - # If the path is not in the store, don't add it to the rpath. - # This typically happens for libraries in /tmp that are later - # copied to $out/lib. If not, we're screwed. - if test "${1:0:${#NIX_STORE}}" != "$NIX_STORE"; then return 0; fi - case $rpath in - *\ $1\ *) return 0 ;; - esac - rpath="$rpath $1 " - } - - for i in $libPath; do - n=0 - while test $n -lt ${#allParams[*]}; do - p=${allParams[n]} - p2=${allParams[$((n+1))]} - if test "${p:0:2}" = "-l" -a -f "$i/lib${p:2}.so"; then - addToRPath $i - break - elif test "$p" = "-l" -a -f "$i/lib${p2}"; then - # I haven't seen `-l foo', but you never know... - addToRPath $i - break - elif $(echo "$p" | grep -q '^[^-].*\.so\($\|\.\)'); then - path="$(dirname "$p")"; - if test "$path" == "$i"; then - addToRPath $i - break; - fi - fi - n=$((n + 1)) - done - - done - - - # Finally, add `-rpath' switches. - for i in $rpath; do - extra=(${extra[@]} -rpath $i) - done -fi - - -# Optionally print debug info. -if test "$NIX_DEBUG" = "1"; then - echo "original flags to @ld@:" >&2 - for i in "${params[@]}"; do - echo " $i" >&2 - done - echo "extra flags to @ld@:" >&2 - for i in ${extra[@]}; do - echo " $i" >&2 - done -fi - -if test -n "$NIX_LD_WRAPPER_EXEC_HOOK"; then - source "$NIX_LD_WRAPPER_EXEC_HOOK" -fi - -exec @ld@ ${extraBefore[@]} "${params[@]}" ${extra[@]} diff --git a/pkgs/build-support/ghdl-wrapper/setup-hook.sh b/pkgs/build-support/ghdl-wrapper/setup-hook.sh deleted file mode 100644 index 513ab8053a7..00000000000 --- a/pkgs/build-support/ghdl-wrapper/setup-hook.sh +++ /dev/null @@ -1,33 +0,0 @@ -addCVars () { - if test -d $1/include; then - export NIX_CFLAGS_COMPILE="$NIX_CFLAGS_COMPILE -I$1/include" - fi - - if test -d $1/lib64; then - export NIX_LDFLAGS="$NIX_LDFLAGS -L$1/lib64" - fi - - if test -d $1/lib; then - export NIX_LDFLAGS="$NIX_LDFLAGS -L$1/lib" - fi -} - -envHooks=(${envHooks[@]} addCVars) - -# Note: these come *after* $out in the PATH (see setup.sh). - -if test -n "@gcc@"; then - addToSearchPath PATH @gcc@/bin -fi - -if test -n "@binutils@"; then - addToSearchPath PATH @binutils@/bin -fi - -if test -n "@libc@"; then - addToSearchPath PATH @libc@/bin -fi - -if test -n "@coreutils@"; then - addToSearchPath PATH @coreutils@/bin -fi diff --git a/pkgs/build-support/ghdl-wrapper/utils.sh b/pkgs/build-support/ghdl-wrapper/utils.sh deleted file mode 100644 index 9a664e1d1e6..00000000000 --- a/pkgs/build-support/ghdl-wrapper/utils.sh +++ /dev/null @@ -1,23 +0,0 @@ -skip () { - if test "$NIX_DEBUG" = "1"; then - echo "skipping impure path $1" >&2 - fi -} - - -# Checks whether a path is impure. E.g., `/lib/foo.so' is impure, but -# `/nix/store/.../lib/foo.so' isn't. -badPath() { - local p=$1 - - # Relative paths are okay (since they're presumably relative to - # the temporary build directory). - if test "${p:0:1}" != "/"; then return 1; fi - - # Otherwise, the path should refer to the store or some temporary - # directory (including the build directory). - test \ - "${p:0:${#NIX_STORE}}" != "$NIX_STORE" -a \ - "${p:0:4}" != "/tmp" -a \ - "${p:0:${#NIX_BUILD_TOP}}" != "$NIX_BUILD_TOP" -} diff --git a/pkgs/build-support/gnat-wrapper/add-flags b/pkgs/build-support/gnat-wrapper/add-flags deleted file mode 100644 index 26e536f6d57..00000000000 --- a/pkgs/build-support/gnat-wrapper/add-flags +++ /dev/null @@ -1,28 +0,0 @@ -# `-B@out@/bin' forces gcc to use ld-wrapper.sh when calling ld. -export NIX_CFLAGS_COMPILE="-B@out@/bin/ $NIX_CFLAGS_COMPILE" - -if test -e @out@/nix-support/libc-cflags; then - export NIX_CFLAGS_COMPILE="$(cat @out@/nix-support/libc-cflags) $NIX_CFLAGS_COMPILE" -fi - -if test -e @out@/nix-support/gcc-cflags; then - export NIX_CFLAGS_COMPILE="$(cat @out@/nix-support/gcc-cflags) $NIX_CFLAGS_COMPILE" -fi - -if test -e @out@/nix-support/gnat-cflags; then - export NIX_GNATFLAGS_COMPILE="$(cat @out@/nix-support/gnat-cflags) $NIX_GNATFLAGS_COMPILE" -fi - -if test -e @out@/nix-support/libc-ldflags; then - export NIX_LDFLAGS="$NIX_LDFLAGS $(cat @out@/nix-support/libc-ldflags)" -fi - -if test -e @out@/nix-support/gcc-ldflags; then - export NIX_LDFLAGS="$NIX_LDFLAGS $(cat @out@/nix-support/gcc-ldflags)" -fi - -if test -e @out@/nix-support/libc-ldflags-before; then - export NIX_LDFLAGS_BEFORE="$(cat @out@/nix-support/libc-ldflags-before) $NIX_LDFLAGS_BEFORE" -fi - -export NIX_GCC_WRAPPER_FLAGS_SET=1 diff --git a/pkgs/build-support/gnat-wrapper/builder.sh b/pkgs/build-support/gnat-wrapper/builder.sh deleted file mode 100644 index e416766db66..00000000000 --- a/pkgs/build-support/gnat-wrapper/builder.sh +++ /dev/null @@ -1,181 +0,0 @@ -source $stdenv/setup - - -ensureDir $out/bin -ensureDir $out/nix-support - - -if test -z "$nativeLibc"; then - dynamicLinker="$libc/lib/$dynamicLinker" - echo $dynamicLinker > $out/nix-support/dynamic-linker - - if test -e $libc/lib/32/ld-linux.so.2; then - echo $libc/lib/32/ld-linux.so.2 > $out/nix-support/dynamic-linker-m32 - fi - - # The "-B$libc/lib/" flag is a quick hack to force gcc to link - # against the crt1.o from our own glibc, rather than the one in - # /usr/lib. (This is only an issue when using an `impure' - # compiler/linker, i.e., one that searches /usr/lib and so on.) - # - # Unfortunately, setting -B appears to override the default search - # path. Thus, the gcc-specific "../includes-fixed" directory is - # now longer searched and glibc's header fails to - # compile, because it uses "#include_next " to find the - # limits.h file in ../includes-fixed. To remedy the problem, - # another -idirafter is necessary to add that directory again. - echo "-B$libc/lib/ -idirafter $libc/include -idirafter $gcc/lib/gcc/*/*/include-fixed" > $out/nix-support/libc-cflags - - echo "-L$libc/lib" > $out/nix-support/libc-ldflags - - # The dynamic linker is passed in `ldflagsBefore' to allow - # explicit overrides of the dynamic linker by callers to gcc/ld - # (the *last* value counts, so ours should come first). - echo "-dynamic-linker $dynamicLinker" > $out/nix-support/libc-ldflags-before -fi - -if test -n "$nativeTools"; then - gccPath="$nativePrefix/bin" - ldPath="$nativePrefix/bin" -else - if test -e "$gcc/lib64"; then - gccLDFlags="$gccLDFlags -L$gcc/lib64" - fi - gccLDFlags="$gccLDFlags -L$gcc/lib" - echo "$gccLDFlags" > $out/nix-support/gcc-ldflags - - # GCC shows $gcc/lib in `gcc -print-search-dirs', but not - # $gcc/lib64 (even though it does actually search there...).. - # This confuses libtool. So add it to the compiler tool search - # path explicitly. - if test -e "$gcc/lib64"; then - gccCFlags="$gccCFlags -B$gcc/lib64" - fi - basePath=`echo $gcc/lib/*/*/*` - gccCFlags="$gccCFlags -B$basePath -I$basePath/adainclude" - echo "$gccCFlags" > $out/nix-support/gcc-cflags - - gnatCFlags="-aI$basePath/adainclude -aO$basePath/adalib" - echo "$gnatCFlags" > $out/nix-support/gnat-cflags - - gccPath="$gcc/bin" - ldPath="$binutils/bin" -fi - - -doSubstitute() { - local src=$1 - local dst=$2 - # Can't use substitute() here, because replace may not have been - # built yet (in the bootstrap). - sed \ - -e "s^@out@^$out^g" \ - -e "s^@shell@^$shell^g" \ - -e "s^@gcc@^$gcc^g" \ - -e "s^@gccProg@^$gccProg^g" \ - -e "s^@gnatProg@^$gnatProg^g" \ - -e "s^@gnatlinkProg@^$gnatlinkProg^g" \ - -e "s^@binutils@^$binutils^g" \ - -e "s^@coreutils@^$coreutils^g" \ - -e "s^@libc@^$libc^g" \ - -e "s^@ld@^$ldPath/ld^g" \ - < "$src" > "$dst" -} - - -# Make wrapper scripts around gcc, g++, and gfortran. Also make symlinks -# cc, c++, and f77. -mkGccWrapper() { - local dst=$1 - local src=$2 - - if ! test -f "$src"; then - echo "$src does not exist (skipping)" - return 1 - fi - - gccProg="$src" - doSubstitute "$gccWrapper" "$dst" - chmod +x "$dst" -} - -mkGnatWrapper() { - local dst=$1 - local src=$2 - - if ! test -f "$src"; then - echo "$src does not exist (skipping)" - return 1 - fi - - gnatProg="$src" - doSubstitute "$gnatWrapper" "$dst" - chmod +x "$dst" -} - -mkGnatLinkWrapper() { - local dst=$1 - local src=$2 - - if ! test -f "$src"; then - echo "$src does not exist (skipping)" - return 1 - fi - - gnatlinkProg="$src" - doSubstitute "$gnatlinkWrapper" "$dst" - chmod +x "$dst" -} - -if mkGccWrapper $out/bin/gcc $gccPath/gcc -then - ln -sv gcc $out/bin/cc -fi - -if mkGccWrapper $out/bin/g++ $gccPath/g++ -then - ln -sv g++ $out/bin/c++ -fi - -if mkGccWrapper $out/bin/gfortran $gccPath/gfortran -then - ln -sv gfortran $out/bin/g77 - ln -sv gfortran $out/bin/f77 -fi - -mkGccWrapper $out/bin/gcj $gccPath/gcj || true - -mkGccWrapper $out/bin/gnatgcc $gccPath/gnatgcc || true -mkGnatWrapper $out/bin/gnatmake $gccPath/gnatmake || true -mkGnatWrapper $out/bin/gnatbind $gccPath/gnatbind || true -mkGnatLinkWrapper $out/bin/gnatlink $gccPath/gnatlink || true - -# Create a symlink to as (the assembler). This is useful when a -# gcc-wrapper is installed in a user environment, as it ensures that -# the right assembler is called. -ln -s $ldPath/as $out/bin/as - - -# Make a wrapper around the linker. -doSubstitute "$ldWrapper" "$out/bin/ld" -chmod +x "$out/bin/ld" - - -# Emit a setup hook. Also store the path to the original GCC and -# Glibc. -test -n "$gcc" && echo $gcc > $out/nix-support/orig-gcc -test -n "$libc" && echo $libc > $out/nix-support/orig-libc - -doSubstitute "$addFlags" "$out/nix-support/add-flags.sh" - -doSubstitute "$setupHook" "$out/nix-support/setup-hook" - -cp -p $utils $out/nix-support/utils.sh - - -# Propagate the wrapped gcc so that if you install the wrapper, you get -# tools like gcov, the manpages, etc. as well (including for binutils -# and Glibc). -if test -z "$nativeTools"; then - echo $gcc $binutils $libc > $out/nix-support/propagated-user-env-packages -fi diff --git a/pkgs/build-support/gnat-wrapper/default.nix b/pkgs/build-support/gnat-wrapper/default.nix deleted file mode 100644 index 700de9d20f4..00000000000 --- a/pkgs/build-support/gnat-wrapper/default.nix +++ /dev/null @@ -1,66 +0,0 @@ -# The Nix `gcc' stdenv.mkDerivation is not directly usable, since it doesn't -# know where the C library and standard header files are. Therefore -# the compiler produced by that package cannot be installed directly -# in a user environment and used from the command line. This -# stdenv.mkDerivation provides a wrapper that sets up the right environment -# variables so that the compiler and the linker just "work". - -{ name ? "", stdenv, nativeTools, nativeLibc, nativePrefix ? "" -, gcc ? null, libc ? null, binutils ? null, coreutils ? null, shell ? "" -}: - -assert nativeTools -> nativePrefix != ""; -assert !nativeTools -> gcc != null && binutils != null && coreutils != null; -assert !nativeLibc -> libc != null; - -let - - gccVersion = (builtins.parseDrvName gcc.name).version; - gccName = (builtins.parseDrvName gcc.name).name; - -in - -stdenv.mkDerivation { - name = - (if name != "" then name else gccName + "-wrapper") + - (if gcc != null && gccVersion != "" then "-" + gccVersion else ""); - - builder = ./builder.sh; - setupHook = ./setup-hook.sh; - gccWrapper = ./gcc-wrapper.sh; - gnatWrapper = ./gnat-wrapper.sh; - gnatlinkWrapper = ./gnatlink-wrapper.sh; - ldWrapper = ./ld-wrapper.sh; - utils = ./utils.sh; - addFlags = ./add-flags; - - inherit nativeTools nativeLibc nativePrefix gcc; - libc = if nativeLibc then null else libc; - binutils = if nativeTools then null else binutils; - # The wrapper scripts use 'cat', so we may need coreutils - coreutils = if nativeTools then null else coreutils; - - langC = if nativeTools then true else gcc.langC; - langCC = if nativeTools then true else gcc.langCC; - langFortran = if nativeTools then false else gcc ? langFortran; - langAda = if nativeTools then false else gcc ? langAda; - shell = if shell == "" then stdenv.shell else shell; - - meta = - let gcc_ = if gcc != null then gcc else {}; in - (if gcc_ ? meta then removeAttrs gcc.meta ["priority"] else {}) // - { description = - stdenv.lib.attrByPath ["meta" "description"] "System C compiler" gcc_ - + " (wrapper script)"; - }; - - # The dynamic linker has different names on different Linux platforms. - dynamicLinker = - if !nativeLibc then - (if stdenv.system == "i686-linux" then "ld-linux.so.2" else - if stdenv.system == "x86_64-linux" then "ld-linux-x86-64.so.2" else - if stdenv.system == "armv5tel-linux" then "ld-linux.so.3" else - if stdenv.system == "powerpc-linux" then "ld.so.1" else - abort "don't know the name of the dynamic linker for this platform") - else ""; -} diff --git a/pkgs/build-support/gnat-wrapper/gcc-wrapper.sh b/pkgs/build-support/gnat-wrapper/gcc-wrapper.sh deleted file mode 100644 index 8a49fcb9b06..00000000000 --- a/pkgs/build-support/gnat-wrapper/gcc-wrapper.sh +++ /dev/null @@ -1,148 +0,0 @@ -#! @shell@ -e - -if test -n "$NIX_GCC_WRAPPER_START_HOOK"; then - source "$NIX_GCC_WRAPPER_START_HOOK" -fi - -if test -z "$NIX_GCC_WRAPPER_FLAGS_SET"; then - source @out@/nix-support/add-flags.sh -fi - -source @out@/nix-support/utils.sh - - -# Figure out if linker flags should be passed. GCC prints annoying -# warnings when they are not needed. -dontLink=0 -getVersion=0 -nonFlagArgs=0 - -for i in "$@"; do - if test "$i" = "-c"; then - dontLink=1 - elif test "$i" = "-S"; then - dontLink=1 - elif test "$i" = "-E"; then - dontLink=1 - elif test "$i" = "-E"; then - dontLink=1 - elif test "$i" = "-M"; then - dontLink=1 - elif test "$i" = "-MM"; then - dontLink=1 - elif test "${i:0:1}" != "-"; then - nonFlagArgs=1 - elif test "$i" = "-m32"; then - if test -e @out@/nix-support/dynamic-linker-m32; then - NIX_LDFLAGS="$NIX_LDFLAGS -dynamic-linker $(cat @out@/nix-support/dynamic-linker-m32)" - fi - fi -done - -# If we pass a flag like -Wl, then gcc will call the linker unless it -# can figure out that it has to do something else (e.g., because of a -# "-c" flag). So if no non-flag arguments are given, don't pass any -# linker flags. This catches cases like "gcc" (should just print -# "gcc: no input files") and "gcc -v" (should print the version). -if test "$nonFlagArgs" = "0"; then - dontLink=1 -fi - - -# Optionally filter out paths not refering to the store. -params=("$@") -if test "$NIX_ENFORCE_PURITY" = "1" -a -n "$NIX_STORE"; then - rest=() - n=0 - while test $n -lt ${#params[*]}; do - p=${params[n]} - p2=${params[$((n+1))]} - if test "${p:0:3}" = "-L/" && badPath "${p:2}"; then - skip $p - elif test "$p" = "-L" && badPath "$p2"; then - n=$((n + 1)); skip $p2 - elif test "${p:0:3}" = "-I/" && badPath "${p:2}"; then - skip $p - elif test "$p" = "-I" && badPath "$p2"; then - n=$((n + 1)); skip $p2 - elif test "$p" = "-isystem" && badPath "$p2"; then - n=$((n + 1)); skip $p2 - else - rest=("${rest[@]}" "$p") - fi - n=$((n + 1)) - done - params=("${rest[@]}") -fi - - -# Add the flags for the C compiler proper. -extraAfter=($NIX_CFLAGS_COMPILE) -extraBefore=() - -if test "$dontLink" != "1"; then - - # Add the flags that should only be passed to the compiler when - # linking. - extraAfter=(${extraAfter[@]} $NIX_CFLAGS_LINK) - - # Add the flags that should be passed to the linker (and prevent - # `ld-wrapper' from adding NIX_LDFLAGS again). - for i in $NIX_LDFLAGS_BEFORE; do - extraBefore=(${extraBefore[@]} "-Wl,$i") - done - for i in $NIX_LDFLAGS; do - if test "${i:0:3}" = "-L/"; then - extraAfter=(${extraAfter[@]} "$i") - else - extraAfter=(${extraAfter[@]} "-Wl,$i") - fi - done - export NIX_LDFLAGS_SET=1 - - if test "$NIX_STRIP_DEBUG" = "1"; then - # Add executable-stripping flags. - extraAfter=(${extraAfter[@]} $NIX_CFLAGS_STRIP) - fi -fi - -# As a very special hack, if the arguments are just `-v', then don't -# add anything. This is to prevent `gcc -v' (which normally prints -# out the version number and returns exit code 0) from printing out -# `No input files specified' and returning exit code 1. -if test "$*" = "-v"; then - extraAfter=() - extraBefore=() -fi - -# Optionally print debug info. -if test "$NIX_DEBUG" = "1"; then - echo "original flags to @gccProg@:" >&2 - for i in "${params[@]}"; do - echo " $i" >&2 - done - echo "extraBefore flags to @gccProg@:" >&2 - for i in ${extraBefore[@]}; do - echo " $i" >&2 - done - echo "extraAfter flags to @gccProg@:" >&2 - for i in ${extraAfter[@]}; do - echo " $i" >&2 - done -fi - -if test -n "$NIX_GCC_WRAPPER_EXEC_HOOK"; then - source "$NIX_GCC_WRAPPER_EXEC_HOOK" -fi - - -# Call the real `gcc'. Filter out warnings from stderr about unused -# `-B' flags, since they confuse some programs. Deep bash magic to -# apply grep to stderr (by swapping stdin/stderr twice). -if test -z "$NIX_GCC_NEEDS_GREP"; then - @gccProg@ ${extraBefore[@]} "${params[@]}" ${extraAfter[@]} -else - (@gccProg@ ${extraBefore[@]} "${params[@]}" ${extraAfter[@]} 3>&2 2>&1 1>&3- \ - | (grep -v 'file path prefix' || true); exit ${PIPESTATUS[0]}) 3>&2 2>&1 1>&3- - exit $? -fi diff --git a/pkgs/build-support/gnat-wrapper/gnat-wrapper.sh b/pkgs/build-support/gnat-wrapper/gnat-wrapper.sh deleted file mode 100644 index f6fa4b18400..00000000000 --- a/pkgs/build-support/gnat-wrapper/gnat-wrapper.sh +++ /dev/null @@ -1,113 +0,0 @@ -#! @shell@ -e - -if test -n "$NIX_GNAT_WRAPPER_START_HOOK"; then - source "$NIX_GNAT_WRAPPER_START_HOOK" -fi - -if test -z "$NIX_GNAT_WRAPPER_FLAGS_SET"; then - source @out@/nix-support/add-flags.sh -fi - -source @out@/nix-support/utils.sh - - -# Figure out if linker flags should be passed. GCC prints annoying -# warnings when they are not needed. -dontLink=0 -getVersion=0 -nonFlagArgs=0 - -for i in "$@"; do - if test "$i" = "-c"; then - dontLink=1 - elif test "$i" = "-M"; then - dontLink=1 - elif test "${i:0:1}" != "-"; then - nonFlagArgs=1 - elif test "$i" = "-m32"; then - if test -e @out@/nix-support/dynamic-linker-m32; then - NIX_LDFLAGS="$NIX_LDFLAGS -dynamic-linker $(cat @out@/nix-support/dynamic-linker-m32)" - fi - fi -done - -# If we pass a flag like -Wl, then gcc will call the linker unless it -# can figure out that it has to do something else (e.g., because of a -# "-c" flag). So if no non-flag arguments are given, don't pass any -# linker flags. This catches cases like "gcc" (should just print -# "gcc: no input files") and "gcc -v" (should print the version). -if test "$nonFlagArgs" = "0"; then - dontLink=1 -fi - - -# Optionally filter out paths not refering to the store. -params=("$@") -if test "$NIX_ENFORCE_PURITY" = "1" -a -n "$NIX_STORE"; then - rest=() - n=0 - while test $n -lt ${#params[*]}; do - p=${params[n]} - p2=${params[$((n+1))]} - if test "${p:0:3}" = "-L/" && badPath "${p:2}"; then - skip $p - elif test "${p:0:3}" = "-I/" && badPath "${p:2}"; then - skip $p - elif test "${p:0:4}" = "-aI/" && badPath "${p:3}"; then - skip $p - elif test "${p:0:4}" = "-aO/" && badPath "${p:3}"; then - skip $p - else - rest=("${rest[@]}" "$p") - fi - n=$((n + 1)) - done - params=("${rest[@]}") -fi - - -# Add the flags for the GNAT compiler proper. -extraAfter=($NIX_GNATFLAGS_COMPILE) -extraBefore=() - -if [ "`basename $0`x" = "gnatmakex" ]; then - extraBefore=("--GNATBIND=@out@/bin/gnatbind --GNATLINK=@out@/bin/gnatlink ") -fi - -# Add the flags that should be passed to the linker (and prevent -# `ld-wrapper' from adding NIX_LDFLAGS again). -#for i in $NIX_LDFLAGS_BEFORE; do -# extraBefore=(${extraBefore[@]} "-largs $i") -#done - -# Optionally print debug info. -if test "$NIX_DEBUG" = "1"; then - echo "original flags to @gnatProg@:" >&2 - for i in "${params[@]}"; do - echo " $i" >&2 - done - echo "extraBefore flags to @gnatProg@:" >&2 - for i in ${extraBefore[@]}; do - echo " $i" >&2 - done - echo "extraAfter flags to @gnatProg@:" >&2 - for i in ${extraAfter[@]}; do - echo " $i" >&2 - done -fi - -if test -n "$NIX_GNAT_WRAPPER_EXEC_HOOK"; then - source "$NIX_GNAT_WRAPPER_EXEC_HOOK" -fi - - -# Call the real `gcc'. Filter out warnings from stderr about unused -# `-B' flags, since they confuse some programs. Deep bash magic to -# apply grep to stderr (by swapping stdin/stderr twice). -if test -z "$NIX_GNAT_NEEDS_GREP"; then - @gnatProg@ ${extraBefore[@]} "${params[@]}" ${extraAfter[@]} -else - (@gnatProg@ ${extraBefore[@]} "${params[@]}" ${extraAfter[@]} 3>&2 2>&1 1>&3- \ - | (grep -v 'file path prefix' || true); exit ${PIPESTATUS[0]}) 3>&2 2>&1 1>&3- - exit $? -fi diff --git a/pkgs/build-support/gnat-wrapper/gnatlink-wrapper.sh b/pkgs/build-support/gnat-wrapper/gnatlink-wrapper.sh deleted file mode 100644 index 25907108b4d..00000000000 --- a/pkgs/build-support/gnat-wrapper/gnatlink-wrapper.sh +++ /dev/null @@ -1,43 +0,0 @@ -#! @shell@ -e - -# Add the flags for the GNAT compiler proper. -extraAfter="--GCC=@out@/bin/gcc" -extraBefore=() - -# Add the flags that should be passed to the linker (and prevent -# `ld-wrapper' from adding NIX_LDFLAGS again). -#for i in $NIX_LDFLAGS_BEFORE; do -# extraBefore=(${extraBefore[@]} "-largs $i") -#done - -# Optionally print debug info. -if test "$NIX_DEBUG" = "1"; then - echo "original flags to @gnatlinkProg@:" >&2 - for i in "$@"; do - echo " $i" >&2 - done - echo "extraBefore flags to @gnatlinkProg@:" >&2 - for i in ${extraBefore[@]}; do - echo " $i" >&2 - done - echo "extraAfter flags to @gnatlinkProg@:" >&2 - for i in ${extraAfter[@]}; do - echo " $i" >&2 - done -fi - -if test -n "$NIX_GNAT_WRAPPER_EXEC_HOOK"; then - source "$NIX_GNAT_WRAPPER_EXEC_HOOK" -fi - - -# Call the real `gcc'. Filter out warnings from stderr about unused -# `-B' flags, since they confuse some programs. Deep bash magic to -# apply grep to stderr (by swapping stdin/stderr twice). -if test -z "$NIX_GNAT_NEEDS_GREP"; then - @gnatlinkProg@ ${extraBefore[@]} "$@" ${extraAfter[@]} -else - (@gnatlinkProg@ ${extraBefore[@]} "$@" ${extraAfter[@]} 3>&2 2>&1 1>&3- \ - | (grep -v 'file path prefix' || true); exit ${PIPESTATUS[0]}) 3>&2 2>&1 1>&3- - exit $? -fi diff --git a/pkgs/build-support/gnat-wrapper/ld-wrapper.sh b/pkgs/build-support/gnat-wrapper/ld-wrapper.sh deleted file mode 100644 index bf3c2620f29..00000000000 --- a/pkgs/build-support/gnat-wrapper/ld-wrapper.sh +++ /dev/null @@ -1,155 +0,0 @@ -#! @shell@ -e - -if test -n "$NIX_LD_WRAPPER_START_HOOK"; then - source "$NIX_LD_WRAPPER_START_HOOK" -fi - -if test -z "$NIX_GCC_WRAPPER_FLAGS_SET"; then - source @out@/nix-support/add-flags.sh -fi - -source @out@/nix-support/utils.sh - - -# Optionally filter out paths not refering to the store. -params=("$@") -if test "$NIX_ENFORCE_PURITY" = "1" -a -n "$NIX_STORE" \ - -a \( -z "$NIX_IGNORE_LD_THROUGH_GCC" -o -z "$NIX_LDFLAGS_SET" \); then - rest=() - n=0 - while test $n -lt ${#params[*]}; do - p=${params[n]} - p2=${params[$((n+1))]} - if test "${p:0:3}" = "-L/" && badPath "${p:2}"; then - skip $p - elif test "$p" = "-L" && badPath "$p2"; then - n=$((n + 1)); skip $p2 - elif test "$p" = "-rpath" && badPath "$p2"; then - n=$((n + 1)); skip $p2 - elif test "$p" = "-dynamic-linker" && badPath "$p2"; then - n=$((n + 1)); skip $p2 - elif test "${p:0:1}" = "/" && badPath "$p"; then - # We cannot skip this; barf. - echo "impure path \`$p' used in link" >&2 - exit 1 - else - rest=("${rest[@]}" "$p") - fi - n=$((n + 1)) - done - params=("${rest[@]}") -fi - - -extra=() -extraBefore=() - -if test -z "$NIX_LDFLAGS_SET"; then - extra=(${extra[@]} $NIX_LDFLAGS) - extraBefore=(${extraBefore[@]} $NIX_LDFLAGS_BEFORE) -fi - - -# Add all used dynamic libraries to the rpath. -if test "$NIX_DONT_SET_RPATH" != "1"; then - - # First, find all -L... switches. - allParams=("${params[@]}" ${extra[@]}) - libPath="" - addToLibPath() { - local path="$1" - if test "${path:0:1}" != "/"; then return 0; fi - case "$path" in - *..*|*./*|*/.*|*//*) - local path2 - if path2=$(readlink -f "$path"); then - path="$path2" - fi - ;; - esac - case $libPath in - *\ $path\ *) return 0 ;; - esac - libPath="$libPath $path " - } - n=0 - while test $n -lt ${#allParams[*]}; do - p=${allParams[n]} - p2=${allParams[$((n+1))]} - if test "${p:0:3}" = "-L/"; then - addToLibPath ${p:2} - elif test "$p" = "-L"; then - addToLibPath ${p2} - n=$((n + 1)) - elif $(echo "$p" | grep -q '^[^-].*\.so\($\|\.\)'); then - path="$(dirname "$p")"; - addToLibPath "${path}" - fi - n=$((n + 1)) - done - - # Second, for each directory in the library search path (-L...), - # see if it contains a dynamic library used by a -l... flag. If - # so, add the directory to the rpath. - rpath="" - - addToRPath() { - # If the path is not in the store, don't add it to the rpath. - # This typically happens for libraries in /tmp that are later - # copied to $out/lib. If not, we're screwed. - if test "${1:0:${#NIX_STORE}}" != "$NIX_STORE"; then return 0; fi - case $rpath in - *\ $1\ *) return 0 ;; - esac - rpath="$rpath $1 " - } - - for i in $libPath; do - n=0 - while test $n -lt ${#allParams[*]}; do - p=${allParams[n]} - p2=${allParams[$((n+1))]} - if test "${p:0:2}" = "-l" -a -f "$i/lib${p:2}.so"; then - addToRPath $i - break - elif test "$p" = "-l" -a -f "$i/lib${p2}"; then - # I haven't seen `-l foo', but you never know... - addToRPath $i - break - elif $(echo "$p" | grep -q '^[^-].*\.so\($\|\.\)'); then - path="$(dirname "$p")"; - if test "$path" == "$i"; then - addToRPath $i - break; - fi - fi - n=$((n + 1)) - done - - done - - - # Finally, add `-rpath' switches. - for i in $rpath; do - extra=(${extra[@]} -rpath $i) - done -fi - - -# Optionally print debug info. -if test "$NIX_DEBUG" = "1"; then - echo "original flags to @ld@:" >&2 - for i in "${params[@]}"; do - echo " $i" >&2 - done - echo "extra flags to @ld@:" >&2 - for i in ${extra[@]}; do - echo " $i" >&2 - done -fi - -if test -n "$NIX_LD_WRAPPER_EXEC_HOOK"; then - source "$NIX_LD_WRAPPER_EXEC_HOOK" -fi - -exec @ld@ ${extraBefore[@]} "${params[@]}" ${extra[@]} diff --git a/pkgs/build-support/gnat-wrapper/setup-hook.sh b/pkgs/build-support/gnat-wrapper/setup-hook.sh deleted file mode 100644 index 513ab8053a7..00000000000 --- a/pkgs/build-support/gnat-wrapper/setup-hook.sh +++ /dev/null @@ -1,33 +0,0 @@ -addCVars () { - if test -d $1/include; then - export NIX_CFLAGS_COMPILE="$NIX_CFLAGS_COMPILE -I$1/include" - fi - - if test -d $1/lib64; then - export NIX_LDFLAGS="$NIX_LDFLAGS -L$1/lib64" - fi - - if test -d $1/lib; then - export NIX_LDFLAGS="$NIX_LDFLAGS -L$1/lib" - fi -} - -envHooks=(${envHooks[@]} addCVars) - -# Note: these come *after* $out in the PATH (see setup.sh). - -if test -n "@gcc@"; then - addToSearchPath PATH @gcc@/bin -fi - -if test -n "@binutils@"; then - addToSearchPath PATH @binutils@/bin -fi - -if test -n "@libc@"; then - addToSearchPath PATH @libc@/bin -fi - -if test -n "@coreutils@"; then - addToSearchPath PATH @coreutils@/bin -fi diff --git a/pkgs/build-support/gnat-wrapper/utils.sh b/pkgs/build-support/gnat-wrapper/utils.sh deleted file mode 100644 index 9a664e1d1e6..00000000000 --- a/pkgs/build-support/gnat-wrapper/utils.sh +++ /dev/null @@ -1,23 +0,0 @@ -skip () { - if test "$NIX_DEBUG" = "1"; then - echo "skipping impure path $1" >&2 - fi -} - - -# Checks whether a path is impure. E.g., `/lib/foo.so' is impure, but -# `/nix/store/.../lib/foo.so' isn't. -badPath() { - local p=$1 - - # Relative paths are okay (since they're presumably relative to - # the temporary build directory). - if test "${p:0:1}" != "/"; then return 1; fi - - # Otherwise, the path should refer to the store or some temporary - # directory (including the build directory). - test \ - "${p:0:${#NIX_STORE}}" != "$NIX_STORE" -a \ - "${p:0:4}" != "/tmp" -a \ - "${p:0:${#NIX_BUILD_TOP}}" != "$NIX_BUILD_TOP" -} From ca0464c067f2651cd925dc3b8e1b8db2d9c07141 Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Tue, 19 Jan 2010 11:23:42 +0000 Subject: [PATCH 174/232] * gmp 4.3.2. svn path=/nixpkgs/branches/stdenv-updates/; revision=19535 --- pkgs/development/libraries/gmp/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/development/libraries/gmp/default.nix b/pkgs/development/libraries/gmp/default.nix index 72561f27031..7091306cfda 100644 --- a/pkgs/development/libraries/gmp/default.nix +++ b/pkgs/development/libraries/gmp/default.nix @@ -1,11 +1,11 @@ {stdenv, fetchurl, m4, cxx ? true}: stdenv.mkDerivation rec { - name = "gmp-4.3.1"; + name = "gmp-4.3.2"; src = fetchurl { url = "mirror://gnu/gmp/${name}.tar.bz2"; - sha256 = "1j5pklq36ivg2cim5wfysns229a544lqkimp3mlzkwjl513ra0ma"; + sha256 = "0x8prpqi9amfcmi7r4zrza609ai9529pjaq0h4aw51i867064qck"; }; buildNativeInputs = [m4]; From 231b016142c78b1be90a6e0757b0ed580b3c03bb Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Tue, 19 Jan 2010 11:25:33 +0000 Subject: [PATCH 175/232] * During the bootstrap, build only 1 instance of Perl instead of 3. svn path=/nixpkgs/branches/stdenv-updates/; revision=19536 --- pkgs/stdenv/linux/default.nix | 23 ++++++++++++++++++----- pkgs/top-level/all-packages.nix | 3 ++- 2 files changed, 20 insertions(+), 6 deletions(-) diff --git a/pkgs/stdenv/linux/default.nix b/pkgs/stdenv/linux/default.nix index e04b81b152b..dd5647bec45 100644 --- a/pkgs/stdenv/linux/default.nix +++ b/pkgs/stdenv/linux/default.nix @@ -137,8 +137,11 @@ rec { # of bootstrap tools only, and a minimal Glibc to keep the GCC # configure script happy. stdenvLinuxBoot1 = stdenvBootFun { - gcc = wrapGCC {libc = bootstrapGlibc; binutils = bootstrapTools; - coreutils = bootstrapTools; }; + gcc = wrapGCC { + libc = bootstrapGlibc; + binutils = bootstrapTools; + coreutils = bootstrapTools; + }; inherit fetchurl; }; @@ -160,9 +163,15 @@ rec { # this one uses the Glibc built in step 3. It still uses # the rest of the bootstrap tools, including GCC. stdenvLinuxBoot2 = removeAttrs (stdenvBootFun { - gcc = wrapGCC {binutils = bootstrapTools; coreutils = bootstrapTools; - libc = stdenvLinuxGlibc;}; - extraAttrs = {glibc = stdenvLinuxGlibc;}; + gcc = wrapGCC { + binutils = bootstrapTools; + coreutils = bootstrapTools; + libc = stdenvLinuxGlibc; + }; + extraAttrs = { + glibc = stdenvLinuxGlibc; + inherit (stdenvLinuxBoot1Pkgs) perl; + }; inherit fetchurl; }) ["gcc" "binutils"]; @@ -186,6 +195,9 @@ rec { gcc = stdenvLinuxBoot2Pkgs.gcc.gcc; name = ""; }; + extraAttrs = { + inherit (stdenvLinuxBoot1Pkgs) perl; + }; inherit fetchurl; }; @@ -196,6 +208,7 @@ rec { bootStdenv = stdenvLinuxBoot3; }; + # 8) Construct the final stdenv. It uses the Glibc, GCC and # Binutils built above, and adds in dynamically linked versions # of all other tools. diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index a2fef41f26c..2858a2694aa 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -2476,7 +2476,8 @@ let impureLibcPath = if stdenv.isLinux then null else "/usr"; }; - perl = if system != "i686-cygwin" then perl510 else sysPerl; + perl = useFromStdenv "perl" + (if system != "i686-cygwin" then perl510 else sysPerl); # FIXME: unixODBC needs patching on Darwin (see darwinports) phpOld = import ../development/interpreters/php { From d348b996cfdd145b12431d416b0706e00e48f523 Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Tue, 19 Jan 2010 17:10:03 +0000 Subject: [PATCH 176/232] svn path=/nixpkgs/branches/stdenv-updates/; revision=19546 --- pkgs/development/interpreters/maude/default.nix | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/pkgs/development/interpreters/maude/default.nix b/pkgs/development/interpreters/maude/default.nix index acd82e2b2e5..ccf0c53daec 100644 --- a/pkgs/development/interpreters/maude/default.nix +++ b/pkgs/development/interpreters/maude/default.nix @@ -2,26 +2,34 @@ stdenv.mkDerivation rec { name = "maude-2.4"; + meta = { homepage = "http://maude.cs.uiuc.edu/"; description = "Maude -- a high-level specification language"; license = "GPLv2"; }; + src = fetchurl { url = "http://maude.cs.uiuc.edu/download/current/Maude-2.4.tar.gz"; sha256 = "0bydkf8fd5v267bfak4mm5lmm3vvnr6ir1jr7gimgyzqygdk0in2"; }; + fullMaude = fetchurl { url = "http://maude.cs.uiuc.edu/download/current/FM2.4/full-maude24.maude"; sha256 = "9e4ebdc717dc968d0b6c1179f360e60b3a39ea8cecc1a7fa49f2105bbddc48c4"; }; + docs = fetchurl { url = "http://mirror.switch.ch/mirror/gentoo/distfiles/maude-2.3.0-extras.tar.bz2"; sha256 = "0kd5623k1wwj1rk4b6halrm3sdvd9kbiwg1hi2c3qim1nlfdgl0d"; }; + buildInputs = [flex bison ncurses buddy tecla gmpxx libsigsegv makeWrapper]; + configurePhase = ''./configure --disable-dependency-tracking --prefix=$out --datadir=$out/share/maude TECLA_LIBS="-ltecla -lncursesw" CFLAGS="-O3" CXXFLAGS="-O3"''; + doCheck = true; + postInstall = '' for n in $out/bin/*; do wrapProgram "$n" --suffix MAUDE_LIB ':' "$out/share/maude"; done From 8cd183f062397f502e0dbd33a26f67049a8c1c68 Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Tue, 19 Jan 2010 17:10:53 +0000 Subject: [PATCH 177/232] * Disable Graphite in GCC, as discussed on the mailing list. svn path=/nixpkgs/branches/stdenv-updates/; revision=19547 --- pkgs/top-level/all-packages.nix | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 2858a2694aa..8be77814576 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -1908,7 +1908,7 @@ let })); gcc44_real = lowPrio (wrapGCC (makeOverridable (import ../development/compilers/gcc-4.4) { - inherit fetchurl stdenv texinfo gmp mpfr ppl cloogppl + inherit fetchurl stdenv texinfo gmp mpfr /* ppl cloogppl */ gettext which noSysDirs; profiledCompiler = true; })); @@ -3704,10 +3704,9 @@ let gmp = import ../development/libraries/gmp { inherit stdenv fetchurl m4; + cxx = false; }; - # `gmpxx' used to mean "GMP with C++ bindings". Now `gmp' has C++ bindings - # by default, so that distinction is obsolete. gmpxx = gmp; goffice = import ../development/libraries/goffice { From 4e65c8aa2a68fdafa2e5ce134d25eb54a0736d93 Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Tue, 19 Jan 2010 17:15:47 +0000 Subject: [PATCH 178/232] * Use patchelf 0.5. svn path=/nixpkgs/branches/stdenv-updates/; revision=19548 --- pkgs/applications/misc/googleearth/default.nix | 6 +++--- pkgs/development/tools/misc/patchelf/0.5.nix | 16 ---------------- pkgs/development/tools/misc/patchelf/default.nix | 8 ++++---- pkgs/top-level/all-packages.nix | 5 ----- 4 files changed, 7 insertions(+), 28 deletions(-) delete mode 100644 pkgs/development/tools/misc/patchelf/0.5.nix diff --git a/pkgs/applications/misc/googleearth/default.nix b/pkgs/applications/misc/googleearth/default.nix index 0d4b5fd03fb..139d3ac8b1f 100644 --- a/pkgs/applications/misc/googleearth/default.nix +++ b/pkgs/applications/misc/googleearth/default.nix @@ -1,6 +1,6 @@ { stdenv, fetchurl, glibc, mesa, freetype, glib, libSM, libICE, libXi, libXv, libXrender, libXrandr, libXfixes, libXcursor, libXinerama, libXext, libX11, -zlib, patchelf05 }: +zlib }: /* I haven't found any x86_64 package from them */ assert stdenv.system == "i686-linux"; @@ -55,12 +55,12 @@ stdenv.mkDerivation { fullPath=$fullPath:$i/lib done - ${patchelf05}/bin/patchelf --interpreter "$(cat $NIX_GCC/nix-support/dynamic-linker)" \ + patchelf --interpreter "$(cat $NIX_GCC/nix-support/dynamic-linker)" \ --set-rpath $fullPath \ $out/opt/googleearth/googleearth-bin for a in $out/opt/googleearth/*.so* ; do - ${patchelf05}/bin/patchelf --set-rpath $fullPath $a + patchelf --set-rpath $fullPath $a done ''; diff --git a/pkgs/development/tools/misc/patchelf/0.5.nix b/pkgs/development/tools/misc/patchelf/0.5.nix deleted file mode 100644 index a2b06d7f288..00000000000 --- a/pkgs/development/tools/misc/patchelf/0.5.nix +++ /dev/null @@ -1,16 +0,0 @@ -{stdenv, fetchurl}: - -stdenv.mkDerivation { - name = "patchelf-0.5pre15975"; - - src = fetchurl { - url = http://hydra.nixos.org/build/35275/download/1/patchelf-0.5pre15975.tar.bz2; - sha256 = "fa945392386c484b670c1182e354f0738b03db54d51ed6cc7ff9ebd645a20ecb"; - }; - - meta = { - homepage = http://nixos.org/patchelf.html; - license = "GPL"; - description = "A small utility to modify the dynamic linker and RPATH of ELF executables"; - }; -} diff --git a/pkgs/development/tools/misc/patchelf/default.nix b/pkgs/development/tools/misc/patchelf/default.nix index 91832cd45a7..43944ca9acd 100644 --- a/pkgs/development/tools/misc/patchelf/default.nix +++ b/pkgs/development/tools/misc/patchelf/default.nix @@ -1,11 +1,11 @@ {stdenv, fetchurl}: -stdenv.mkDerivation { - name = "patchelf-0.4"; +stdenv.mkDerivation rec { + name = "patchelf-0.5"; src = fetchurl { - url = http://nixos.org/releases/patchelf/patchelf-0.4/patchelf-0.4.tar.bz2; - sha256 = "65c455b62fc52292e2488f05f46e7e38c46fdcf69c002750f5887145284c4f85"; + url = "http://nixos.org/releases/patchelf/${name}/${name}.tar.bz2"; + sha256 = "24b9a850af45e1a277e234b9eb090b52305a2e1c6b02addeb3ae98b4b49d37ce"; }; meta = { diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 8be77814576..7a50590ba96 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -3023,10 +3023,6 @@ let inherit fetchurl stdenv; }); - patchelf05 = import ../development/tools/misc/patchelf/0.5.nix { - inherit fetchurl stdenv; - }; - pmccabe = import ../development/tools/misc/pmccabe { inherit fetchurl stdenv; }; @@ -7215,7 +7211,6 @@ let inherit stdenv fetchurl glibc mesa freetype zlib glib; inherit (xlibs) libSM libICE libXi libXv libXrender libXrandr libXfixes libXcursor libXinerama libXext libX11; - inherit patchelf05; }; gpsbabel = import ../applications/misc/gpsbabel { From d67f1d269e5521004009b0ea65a8d227db8912e1 Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Tue, 19 Jan 2010 17:41:54 +0000 Subject: [PATCH 179/232] * binutils creates hard links to the programs in $out/bin in $out//bin. Because the fixup phase causes those to be replaced by identical copies, use symlinks instead of hardlinks. This saves about 9 MB. svn path=/nixpkgs/branches/stdenv-updates/; revision=19549 --- pkgs/development/tools/misc/binutils/default.nix | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/pkgs/development/tools/misc/binutils/default.nix b/pkgs/development/tools/misc/binutils/default.nix index d8e1d611432..1bb110e35fd 100644 --- a/pkgs/development/tools/misc/binutils/default.nix +++ b/pkgs/development/tools/misc/binutils/default.nix @@ -27,6 +27,12 @@ stdenv.mkDerivation rec { if test "$noSysDirs" = "1"; then echo 'NATIVE_LIB_DIRS=' >> ld/configure.tgt fi + + # Use symlinks instead of hard links to save space ("strip" in the + # fixup phase strips each hard link separately). + for i in binutils/Makefile.in gas/Makefile.in ld/Makefile.in; do + substituteInPlace $i --replace 'ln ' 'ln -s ' + done ''; configureFlags = "--disable-werror" # needed for dietlibc build From cea86564fff27a87aa4b074e012fef7ff22aa0eb Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Tue, 19 Jan 2010 17:44:59 +0000 Subject: [PATCH 180/232] * Fix gmpxx. svn path=/nixpkgs/branches/stdenv-updates/; revision=19550 --- pkgs/top-level/all-packages.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 7a50590ba96..19e2da4365e 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -3698,12 +3698,12 @@ let inherit fetchurl stdenv; }; - gmp = import ../development/libraries/gmp { + gmp = makeOverridable (import ../development/libraries/gmp) { inherit stdenv fetchurl m4; cxx = false; }; - gmpxx = gmp; + gmpxx = gmp.override { cxx = true; }; goffice = import ../development/libraries/goffice { inherit fetchurl stdenv pkgconfig libgsf libxml2 cairo From 93b250b9601ca938f37edbe86b6b57a1cccd51c1 Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Tue, 19 Jan 2010 18:02:37 +0000 Subject: [PATCH 181/232] * Use the Linux 2.6.32 kernel headers. svn path=/nixpkgs/branches/stdenv-updates/; revision=19552 --- .../linux/kernel-headers/2.6.28.nix | 7 +-- .../linux/kernel-headers/2.6.32.nix | 54 +++++++++++++++++++ pkgs/top-level/all-packages.nix | 6 ++- 3 files changed, 61 insertions(+), 6 deletions(-) create mode 100644 pkgs/os-specific/linux/kernel-headers/2.6.32.nix diff --git a/pkgs/os-specific/linux/kernel-headers/2.6.28.nix b/pkgs/os-specific/linux/kernel-headers/2.6.28.nix index 50ce58ff347..7d11413da26 100644 --- a/pkgs/os-specific/linux/kernel-headers/2.6.28.nix +++ b/pkgs/os-specific/linux/kernel-headers/2.6.28.nix @@ -2,9 +2,7 @@ assert stdenv.isLinux; -let - version = "2.6.28.5"; -in +let version = "2.6.28.5"; in stdenv.mkDerivation { name = "linux-headers-${version}"; @@ -22,8 +20,7 @@ stdenv.mkDerivation { if stdenv.system == "x86_64-linux" then "x86_64" else if stdenv.system == "powerpc-linux" then "powerpc" else if stdenv.system == "armv5tel-linux" then "arm" else - abort "don't know what the kernel include directory is called for this - platform"; + abort "don't know what the kernel include directory is called for this platform"; buildInputs = [perl]; diff --git a/pkgs/os-specific/linux/kernel-headers/2.6.32.nix b/pkgs/os-specific/linux/kernel-headers/2.6.32.nix new file mode 100644 index 00000000000..a09ad98c85c --- /dev/null +++ b/pkgs/os-specific/linux/kernel-headers/2.6.32.nix @@ -0,0 +1,54 @@ +{stdenv, fetchurl, perl, cross ? null}: + +assert stdenv.isLinux; + +let version = "2.6.32.4"; in + +stdenv.mkDerivation { + name = "linux-headers-${version}"; + + src = fetchurl { + url = "mirror://kernel/linux/kernel/v2.6/linux-${version}.tar.bz2"; + sha256 = "1n8pj05sazxv1dgi68q61lrvrnzvvx61qqw6kx80vqizqanz97z1"; + }; + + targetConfig = if (cross != null) then cross.config else null; + + platform = + if cross != null then cross.arch else + if stdenv.system == "i686-linux" then "i386" else + if stdenv.system == "x86_64-linux" then "x86_64" else + if stdenv.system == "powerpc-linux" then "powerpc" else + if stdenv.system == "armv5tel-linux" then "arm" else + abort "don't know what the kernel include directory is called for this platform"; + + buildInputs = [perl]; + + extraIncludeDirs = + if cross != null then + (if cross.arch == "powerpc" then ["ppc"] else []) + else if stdenv.system == "powerpc-linux" then ["ppc"] else []; + + buildPhase = '' + if test -n "$targetConfig"; then + export ARCH=$platform + fi + make mrproper headers_check + ''; + + installPhase = '' + make INSTALL_HDR_PATH=$out headers_install + + # Some builds (e.g. KVM) want a kernel.release. + ensureDir $out/include/config + echo "${version}-default" > $out/include/config/kernel.release + ''; + + # !!! hacky + fixupPhase = '' + ln -s asm $out/include/asm-$platform + if test "$platform" = "i386" -o "$platform" = "x86_64"; then + ln -s asm $out/include/asm-x86 + fi + ''; +} diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 19e2da4365e..79c96753165 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -5693,7 +5693,7 @@ let inherit fetchurl stdenv bison flex; }; - linuxHeaders = linuxHeaders_2_6_28; + linuxHeaders = linuxHeaders_2_6_32; linuxHeadersCross = cross : forceBuildDrv (import ../os-specific/linux/kernel-headers/2.6.28.nix { inherit stdenv fetchurl cross perl; @@ -5707,6 +5707,10 @@ let inherit fetchurl stdenv perl; }; + linuxHeaders_2_6_32 = import ../os-specific/linux/kernel-headers/2.6.32.nix { + inherit fetchurl stdenv perl; + }; + linuxHeadersArm = import ../os-specific/linux/kernel-headers-cross { inherit fetchurl stdenv; cross = "arm-linux"; From f93620419fc4be3c34ba08649ed13100a3f572e3 Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Tue, 19 Jan 2010 18:28:48 +0000 Subject: [PATCH 182/232] * The Linux 2.6.32 headers contain a "scsi" subdirectory, which clashes with Glibc's "scsi" subdirectory. svn path=/nixpkgs/branches/stdenv-updates/; revision=19553 --- pkgs/development/libraries/glibc-2.11/builder.sh | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/pkgs/development/libraries/glibc-2.11/builder.sh b/pkgs/development/libraries/glibc-2.11/builder.sh index 57a44bd04ad..1e5dd6294ea 100644 --- a/pkgs/development/libraries/glibc-2.11/builder.sh +++ b/pkgs/development/libraries/glibc-2.11/builder.sh @@ -19,8 +19,12 @@ postInstall() { if test -n "$installLocales"; then make localedata/install-locales fi + test -f $out/etc/ld.so.cache && rm $out/etc/ld.so.cache - (cd $out/include && ln -s $kernelHeaders/include/* .) || exit 1 + + # Include the Linux kernel headers in Glibc, except the `scsi' + # subdirectory, which Glibc provides itself. + (cd $out/include && ln -s $(ls -d $kernelHeaders/include/* | grep -v 'scsi$') .) # Fix for NIXOS-54 (ldd not working on x86_64). Make a symlink # "lib64" to "lib". From 1d6d92c9a1cc9a3ecf4f7b38075b90bcffff02a5 Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Tue, 19 Jan 2010 22:27:07 +0000 Subject: [PATCH 183/232] * Make Valgrind compile with Glibc 2.11. svn path=/nixpkgs/branches/stdenv-updates/; revision=19554 --- .../tools/analysis/valgrind/default.nix | 9 +++- .../tools/analysis/valgrind/glibc-2.11.patch | 53 +++++++++++++++++++ pkgs/top-level/all-packages.nix | 2 +- 3 files changed, 61 insertions(+), 3 deletions(-) create mode 100644 pkgs/development/tools/analysis/valgrind/glibc-2.11.patch diff --git a/pkgs/development/tools/analysis/valgrind/default.nix b/pkgs/development/tools/analysis/valgrind/default.nix index ebd2d3ab07e..fdf2bf1777f 100644 --- a/pkgs/development/tools/analysis/valgrind/default.nix +++ b/pkgs/development/tools/analysis/valgrind/default.nix @@ -1,4 +1,4 @@ -{ stdenv, fetchurl, perl, gdb }: +{ stdenv, fetchurl, perl, gdb, autoconf, automake }: stdenv.mkDerivation rec { name = "valgrind-3.5.0"; @@ -8,9 +8,14 @@ stdenv.mkDerivation rec { sha256 = "105s4y6h5rsfvml1dfhsjvqgsxvnclbnxbpgk8b4ghpbpcr52fkl"; }; + # Make Valgrind compile with Glibc 2.11. + patches = [ ./glibc-2.11.patch ]; + patchFlags = "-p0"; + preConfigure = "autoreconf"; + # Perl is needed for `cg_annotate'. # GDB is needed to provide a sane default for `--db-command'. - buildInputs = [ perl ] ++ stdenv.lib.optional (!stdenv.isDarwin) gdb; + buildInputs = [ perl autoconf automake ] ++ stdenv.lib.optional (!stdenv.isDarwin) gdb; configureFlags = if stdenv.system == "x86_64-linux" then ["--enable-only64bit"] else []; diff --git a/pkgs/development/tools/analysis/valgrind/glibc-2.11.patch b/pkgs/development/tools/analysis/valgrind/glibc-2.11.patch new file mode 100644 index 00000000000..e2ce53217c9 --- /dev/null +++ b/pkgs/development/tools/analysis/valgrind/glibc-2.11.patch @@ -0,0 +1,53 @@ +r10941 from svn://svn.valgrind.org/valgrind/trunk + +------------------------------------------------------------------------ +r10941 | bart | 2009-11-15 20:11:19 +0100 (Sun, 15 Nov 2009) | 2 lines + +Added support for glibc 2.11. + +------------------------------------------------------------------------ + +Index: configure.in +=================================================================== +--- configure.in (revision 10940) ++++ configure.in (revision 10941) +@@ -656,6 +656,16 @@ + ], + GLIBC_VERSION="2.10") + ++AC_EGREP_CPP([GLIBC_211], [ ++#include ++#ifdef __GNU_LIBRARY__ ++ #if (__GLIBC__ == 2 && __GLIBC_MINOR__ == 11) ++ GLIBC_211 ++ #endif ++#endif ++], ++GLIBC_VERSION="2.11") ++ + AC_EGREP_CPP([AIX5_LIBC], [ + #include + #if defined(_AIXVERSION_510) || defined(_AIXVERSION_520) || defined(_AIXVERSION_530) +@@ -742,6 +752,13 @@ + DEFAULT_SUPP="glibc-2.34567-NPTL-helgrind.supp ${DEFAULT_SUPP}" + DEFAULT_SUPP="glibc-2.X-drd.supp ${DEFAULT_SUPP}" + ;; ++ 2.11) ++ AC_MSG_RESULT(2.11 family) ++ AC_DEFINE([GLIBC_2_11], 1, [Define to 1 if you're using glibc 2.11.x]) ++ DEFAULT_SUPP="glibc-2.X.supp ${DEFAULT_SUPP}" ++ DEFAULT_SUPP="glibc-2.34567-NPTL-helgrind.supp ${DEFAULT_SUPP}" ++ DEFAULT_SUPP="glibc-2.X-drd.supp ${DEFAULT_SUPP}" ++ ;; + aix5) + AC_MSG_RESULT(AIX 5.1 or 5.2 or 5.3) + AC_DEFINE([AIX5_LIBC], 1, [Define to 1 if you're using AIX 5.1 or 5.2 or 5.3]) +@@ -755,7 +772,7 @@ + + *) + AC_MSG_RESULT(unsupported version) +- AC_MSG_ERROR([Valgrind requires glibc version 2.2 - 2.10]) ++ AC_MSG_ERROR([Valgrind requires glibc version 2.2 - 2.11]) + AC_MSG_ERROR([or AIX 5.1 or 5.2 or 5.3 GLIBC_VERSION]) + AC_MSG_ERROR([or Darwin libc]) + ;; diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 79c96753165..db363a8c6de 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -3132,7 +3132,7 @@ let }; valgrind = import ../development/tools/analysis/valgrind { - inherit fetchurl stdenv perl gdb; + inherit fetchurl stdenv perl gdb autoconf automake; }; xxdiff = builderDefsPackage (import ../development/tools/misc/xxdiff/3.2.nix) { From 34071588732bc41b3b925c765dd07b332d68c48f Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Wed, 20 Jan 2010 10:55:30 +0000 Subject: [PATCH 184/232] * strace 4.5.19. svn path=/nixpkgs/branches/stdenv-updates/; revision=19561 --- .../development/tools/misc/strace/default.nix | 18 +- .../strace/strace-4.5.18-arm-syscalls.patch | 162 ------------------ 2 files changed, 11 insertions(+), 169 deletions(-) delete mode 100644 pkgs/development/tools/misc/strace/strace-4.5.18-arm-syscalls.patch diff --git a/pkgs/development/tools/misc/strace/default.nix b/pkgs/development/tools/misc/strace/default.nix index 6300304cf6b..43ddb2190c1 100644 --- a/pkgs/development/tools/misc/strace/default.nix +++ b/pkgs/development/tools/misc/strace/default.nix @@ -1,12 +1,16 @@ -{stdenv, fetchurl}: +{ stdenv, fetchurl }: -stdenv.mkDerivation { - name = "strace-4.5.18"; - - patches = [ ./strace-4.5.18-arm-syscalls.patch ]; +stdenv.mkDerivation rec { + name = "strace-4.5.19"; src = fetchurl { - url = mirror://sourceforge/strace/strace-4.5.18.tar.bz2; - sha256 = "1l16vax3mn2wak288g1inmn30i49vlghnvfwr0z2rwh41r3vgrwm"; + url = "mirror://sourceforge/strace/${name}.tar.bz2"; + sha256 = "021x06jyvpg156kf6ndbd370nz4w3xp6q06pbk20w6wpks8wx5w9"; + }; + + meta = { + homepage = http://strace.sourceforge.net/; + description = "A system call tracer for Linux"; + license = "bsd"; }; } diff --git a/pkgs/development/tools/misc/strace/strace-4.5.18-arm-syscalls.patch b/pkgs/development/tools/misc/strace/strace-4.5.18-arm-syscalls.patch deleted file mode 100644 index a2f50fd152f..00000000000 --- a/pkgs/development/tools/misc/strace/strace-4.5.18-arm-syscalls.patch +++ /dev/null @@ -1,162 +0,0 @@ -From f5da8d0c38ea0eb660cb17de7aa62cda6899eb75 Mon Sep 17 00:00:00 2001 -From: ldv -Date: Thu, 1 Jan 2009 23:20:38 +0000 -Subject: [PATCH] 2008-11-13 Kirill A. Shutemov - - * linux/arm/syscallent.h: Fix build on ARM EABI which does not - provide syscalls socketcall and ipc. ---- - ChangeLog | 5 +++++ - linux/arm/syscallent.h | 4 +++- - 2 files changed, 8 insertions(+), 1 deletions(-) - -diff --git a/linux/arm/syscallent.h b/linux/arm/syscallent.h -index 5ccef2f..edc3641 100644 ---- a/linux/arm/syscallent.h -+++ b/linux/arm/syscallent.h -@@ -431,6 +431,7 @@ - { 5, 0, printargs, "SYS_398" }, /* 398 */ - { 5, 0, printargs, "SYS_399" }, /* 399 */ - -+#ifndef __ARM_EABI__ - #if SYS_socket_subcall != 400 - #error fix me - #endif -@@ -481,3 +482,4 @@ - { 4, TI, sys_shmdt, "shmdt" }, /* 440 */ - { 4, TI, sys_shmget, "shmget" }, /* 441 */ - { 4, TI, sys_shmctl, "shmctl" }, /* 442 */ -+#endif --- -1.6.1.3 - -From 885d06bc92bae2f6aad85ef2fe0b806a06f60712 Mon Sep 17 00:00:00 2001 -From: ldv -Date: Thu, 1 Jan 2009 23:23:47 +0000 -Subject: [PATCH] 2008-11-13 Kirill A. Shutemov - - * linux/arm/syscallent.h: Update syscalls. - Based on patch by Enrico Scholz. ---- - ChangeLog | 3 + - linux/arm/syscallent.h | 98 ++++++++++++++++++++++++------------------------ - 2 files changed, 52 insertions(+), 49 deletions(-) - -diff --git a/linux/arm/syscallent.h b/linux/arm/syscallent.h -index edc3641..6dd783a 100644 ---- a/linux/arm/syscallent.h -+++ b/linux/arm/syscallent.h -@@ -328,63 +328,63 @@ - { 5, TN, sys_getsockopt, "getsockopt" }, /* 295 */ - { 3, TN, sys_sendmsg, "sendmsg" }, /* 296 */ - { 3, TN, sys_recvmsg, "recvmsg" }, /* 297 */ -- { 5, 0, printargs, "SYS_298" }, /* 298 */ -- { 5, 0, printargs, "SYS_299" }, /* 299 */ -- { 5, 0, printargs, "SYS_300" }, /* 300 */ -- { 5, 0, printargs, "SYS_301" }, /* 301 */ -- { 5, 0, printargs, "SYS_302" }, /* 302 */ -- { 5, 0, printargs, "SYS_303" }, /* 303 */ -- { 5, 0, printargs, "SYS_304" }, /* 304 */ -- { 5, 0, printargs, "SYS_305" }, /* 305 */ -- { 5, 0, printargs, "SYS_306" }, /* 306 */ -- { 5, 0, printargs, "SYS_307" }, /* 307 */ -- { 5, 0, printargs, "SYS_308" }, /* 308 */ -- { 5, 0, printargs, "SYS_309" }, /* 309 */ -- { 5, 0, printargs, "SYS_310" }, /* 310 */ -- { 5, 0, printargs, "SYS_311" }, /* 311 */ -- { 5, 0, printargs, "SYS_312" }, /* 312 */ -- { 5, 0, printargs, "SYS_313" }, /* 313 */ -- { 5, 0, printargs, "SYS_314" }, /* 314 */ -- { 5, 0, printargs, "SYS_315" }, /* 315 */ -- { 5, 0, printargs, "SYS_316" }, /* 316 */ -- { 5, 0, printargs, "SYS_317" }, /* 317 */ -- { 5, 0, printargs, "SYS_318" }, /* 318 */ -- { 5, 0, printargs, "SYS_319" }, /* 319 */ -- { 5, 0, printargs, "SYS_320" }, /* 320 */ -- { 5, 0, printargs, "SYS_321" }, /* 321 */ -- { 5, 0, printargs, "SYS_322" }, /* 322 */ -- { 5, 0, printargs, "SYS_323" }, /* 323 */ -- { 5, 0, printargs, "SYS_324" }, /* 324 */ -- { 5, 0, printargs, "SYS_325" }, /* 325 */ -- { 5, 0, printargs, "SYS_326" }, /* 326 */ -- { 5, 0, printargs, "SYS_327" }, /* 327 */ -- { 5, 0, printargs, "SYS_328" }, /* 328 */ -- { 5, 0, printargs, "SYS_329" }, /* 329 */ -- { 5, 0, printargs, "SYS_330" }, /* 330 */ -- { 5, 0, printargs, "SYS_331" }, /* 331 */ -- { 5, 0, printargs, "SYS_332" }, /* 332 */ -- { 5, 0, printargs, "SYS_333" }, /* 333 */ -- { 5, 0, printargs, "SYS_334" }, /* 334 */ -+ { 4, TI, sys_semop, "semop" }, /* 298 */ -+ { 4, TI, sys_semget, "semget" }, /* 299 */ -+ { 4, TI, sys_semctl, "semctl" }, /* 300 */ -+ { 4, TI, sys_msgsnd, "msgsnd" }, /* 301 */ -+ { 4, TI, sys_msgrcv, "msgrcv" }, /* 302 */ -+ { 4, TI, sys_msgget, "msgget" }, /* 303 */ -+ { 4, TI, sys_msgctl, "msgctl" }, /* 304 */ -+ { 4, TI, sys_shmat, "shmat" }, /* 305 */ -+ { 4, TI, sys_shmdt, "shmdt" }, /* 306 */ -+ { 4, TI, sys_shmget, "shmget" }, /* 307 */ -+ { 4, TI, sys_shmctl, "shmctl" }, /* 308 */ -+ { 5, 0, printargs, "add_key" }, /* 309 */ -+ { 4, 0, printargs, "request_key" }, /* 310 */ -+ { 5, 0, printargs, "keyctl" }, /* 311 */ -+ { 5, TI, sys_semtimedop, "semtimedop" }, /* 312 */ -+ { 5, 0, printargs, "vserver" }, /* 313 */ -+ { 3, 0, printargs, "ioprio_set" }, /* 314 */ -+ { 2, 0, printargs, "ioprio_get" }, /* 315 */ -+ { 0, TD, printargs, "inotify_init" }, /* 316 */ -+ { 3, TD, sys_inotify_add_watch, "inotify_add_watch" }, /* 317 */ -+ { 2, TD, sys_inotify_rm_watch, "inotify_rm_watch" }, /* 318 */ -+ { 6, 0, sys_mbind, "mbind" }, /* 319 */ -+ { 3, 0, sys_set_mempolicy, "set_mempolicy" }, /* 320 */ -+ { 5, 0, sys_get_mempolicy, "get_mempolicy" }, /* 321 */ -+ { 4, TD|TF, sys_openat, "openat" }, /* 322 */ -+ { 3, TD|TF, sys_mkdirat, "mkdirat" }, /* 323 */ -+ { 4, TD|TF, sys_mknodat, "mknodat" }, /* 324 */ -+ { 5, TD|TF, sys_fchownat, "fchownat" }, /* 325 */ -+ { 3, TD|TF, sys_futimesat, "futimesat" }, /* 326 */ -+ { 4, TD|TD, sys_newfstatat, "newfstatat" }, /* 327 */ -+ { 3, TD|TF, sys_unlinkat, "unlinkat" }, /* 328 */ -+ { 4, TD|TF, sys_renameat, "renameat" }, /* 329 */ -+ { 5, TD|TF, sys_linkat, "linkat" }, /* 330 */ -+ { 3, TD|TF, sys_symlinkat, "symlinkat" }, /* 331 */ -+ { 4, TD|TF, sys_readlinkat, "readlinkat" }, /* 332 */ -+ { 3, TD|TF, sys_fchmodat, "fchmodat" }, /* 333 */ -+ { 3, TD|TF, sys_faccessat, "faccessat" }, /* 334 */ - { 5, 0, printargs, "SYS_335" }, /* 335 */ - { 5, 0, printargs, "SYS_336" }, /* 336 */ -- { 5, 0, printargs, "SYS_337" }, /* 337 */ -- { 5, 0, printargs, "SYS_338" }, /* 338 */ -- { 5, 0, printargs, "SYS_339" }, /* 339 */ -- { 5, 0, printargs, "SYS_340" }, /* 340 */ -+ { 1, TP, sys_unshare, "unshare" }, /* 337 */ -+ { 2, 0, printargs, "set_robust_list" }, /* 338 */ -+ { 3, 0, printargs, "get_robust_list" }, /* 339 */ -+ { 6, TD, printargs, "splice" }, /* 340 */ - { 5, 0, printargs, "SYS_341" }, /* 341 */ -- { 5, 0, printargs, "SYS_342" }, /* 342 */ -- { 5, 0, printargs, "SYS_343" }, /* 343 */ -+ { 4, TD, printargs, "tee" }, /* 342 */ -+ { 4, TD, printargs, "vmsplice" }, /* 343 */ - { 6, 0, sys_move_pages, "move_pages" }, /* 344 */ - { 3, 0, sys_getcpu, "getcpu" }, /* 345 */ - { 5, 0, printargs, "SYS_346" }, /* 346 */ -- { 5, 0, printargs, "SYS_347" }, /* 347 */ -- { 5, 0, printargs, "SYS_348" }, /* 348 */ -+ { 5, 0, printargs, "kexec_load" }, /* 347 */ -+ { 4, TD|TF, sys_utimensat, "utimensat" }, /* 348 */ - { 3, TD|TS, sys_signalfd, "signalfd" }, /* 349 */ - { 4, TD, sys_timerfd, "timerfd" }, /* 350 */ - { 1, TD, sys_eventfd, "eventfd" }, /* 351 */ -- { 5, 0, printargs, "SYS_352" }, /* 352 */ -- { 5, 0, printargs, "SYS_353" }, /* 353 */ -- { 5, 0, printargs, "SYS_354" }, /* 354 */ -+ { 6, TF, sys_fallocate, "fallocate" }, /* 352 */ -+ { 4, TD, sys_timerfd_settime, "timerfd_settime"}, /* 353 */ -+ { 2, TD, sys_timerfd_gettime, "timerfd_gettime"}, /* 354 */ - { 5, 0, printargs, "SYS_355" }, /* 355 */ - { 5, 0, printargs, "SYS_356" }, /* 356 */ - { 5, 0, printargs, "SYS_357" }, /* 357 */ --- -1.6.1.3 From b5f288c4123f4cbc466dd59563510c2223563138 Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Wed, 20 Jan 2010 10:56:40 +0000 Subject: [PATCH 185/232] * Revert to the Linux 2.6.28 headers because 2.6.32 gives more problems than it's worth (e.g. build failures in strace and klibc - see also http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=538372). svn path=/nixpkgs/branches/stdenv-updates/; revision=19562 --- pkgs/top-level/all-packages.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index db363a8c6de..6384b1edc1a 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -5693,7 +5693,7 @@ let inherit fetchurl stdenv bison flex; }; - linuxHeaders = linuxHeaders_2_6_32; + linuxHeaders = linuxHeaders_2_6_28; linuxHeadersCross = cross : forceBuildDrv (import ../os-specific/linux/kernel-headers/2.6.28.nix { inherit stdenv fetchurl cross perl; From 8e885c0a522bac0df6793859af5755fab533435f Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Wed, 20 Jan 2010 13:49:07 +0000 Subject: [PATCH 186/232] * openssl 0.9.8l svn path=/nixpkgs/branches/stdenv-updates/; revision=19570 --- pkgs/development/libraries/openssl/default.nix | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/pkgs/development/libraries/openssl/default.nix b/pkgs/development/libraries/openssl/default.nix index 61fa64141d6..e9d75b78ebf 100644 --- a/pkgs/development/libraries/openssl/default.nix +++ b/pkgs/development/libraries/openssl/default.nix @@ -1,14 +1,16 @@ -{stdenv, fetchurl, perl}: +{ stdenv, fetchurl, perl }: -stdenv.mkDerivation (rec { - name = "openssl-0.9.8k"; +stdenv.mkDerivation rec { + name = "openssl-0.9.8l"; src = fetchurl { - url = http://www.openssl.org/source/openssl-0.9.8k.tar.gz; - sha1 = "3ba079f91d3c1ec90a36dcd1d43857165035703f"; + url = "http://www.openssl.org/source/${name}.tar.gz"; + sha1 = "d3fb6ec89532ab40646b65af179bb1770f7ca28f"; }; + + patches = [ ./darwin-arch.patch ]; - buildInputs = [perl]; + buildInputs = [ perl ]; configureScript = "./config"; @@ -18,4 +20,4 @@ stdenv.mkDerivation (rec { homepage = http://www.openssl.org/; description = "A cryptographic library that implements the SSL and TLS protocols"; }; -} // (if stdenv.isDarwin then { patches = [ ./darwin-arch.patch ]; } else {})) +} From 9761d31dc9a72e74e1caef07e2cb4230f1e7fccb Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Wed, 20 Jan 2010 14:26:19 +0000 Subject: [PATCH 187/232] * curl 7.19.7. svn path=/nixpkgs/branches/stdenv-updates/; revision=19573 --- pkgs/tools/networking/curl/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/tools/networking/curl/default.nix b/pkgs/tools/networking/curl/default.nix index 4a5fe228b22..1cd9b43309f 100644 --- a/pkgs/tools/networking/curl/default.nix +++ b/pkgs/tools/networking/curl/default.nix @@ -4,11 +4,11 @@ assert zlibSupport -> zlib != null; assert sslSupport -> openssl != null; stdenv.mkDerivation rec { - name = "curl-7.19.4"; + name = "curl-7.19.7"; src = fetchurl { url = "http://curl.haxx.se/download/${name}.tar.bz2"; - sha256 = "11myjjvx1bjl709bgibv8pb1sjf4cicim16k860qzg7d1ll3cd7v"; + sha256 = "0w2aqlms289jzpkymg14k00iay2pq9al3rlc43b3n7j0wd5gj58s"; }; # Zlib and OpenSSL must be propagated because `libcurl.la' contains From a2a51f2ae356c139470da0573c9526c4a2aba96b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Llu=C3=ADs=20Batlle=20i=20Rossell?= Date: Wed, 20 Jan 2010 19:13:18 +0000 Subject: [PATCH 188/232] Trying to make glibc211 build not only with the bootstrap-files compiler. svn path=/nixpkgs/branches/stdenv-updates/; revision=19581 --- pkgs/development/libraries/glibc-2.11/builder.sh | 4 +++- pkgs/development/libraries/glibc-2.11/default.nix | 13 +++++++++++-- 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/pkgs/development/libraries/glibc-2.11/builder.sh b/pkgs/development/libraries/glibc-2.11/builder.sh index 1e5dd6294ea..f8da3b8bbe2 100644 --- a/pkgs/development/libraries/glibc-2.11/builder.sh +++ b/pkgs/development/libraries/glibc-2.11/builder.sh @@ -32,7 +32,9 @@ postInstall() { ln -s lib $out/lib64 fi - rm $out/lib/libgcc_s.so.1 + # This file, that should not remain in the glibc derivation, + # may have not been created during the preInstall + rm -f $out/lib/libgcc_s.so.1 } diff --git a/pkgs/development/libraries/glibc-2.11/default.nix b/pkgs/development/libraries/glibc-2.11/default.nix index a4ff10509ea..9b4b4302a28 100644 --- a/pkgs/development/libraries/glibc-2.11/default.nix +++ b/pkgs/development/libraries/glibc-2.11/default.nix @@ -16,9 +16,18 @@ in builder = ./builder.sh; + # When building glibc from bootstrap-tools, we need libgcc_s at RPATH for + # any program we run, because the gcc will have been placed at a new + # store path than that determined when built (as a source for the + # bootstrap-tools tarball) + # Building from a proper gcc staying in the path where it was installed, + # libgcc_s will not be at {gcc}/lib, and gcc's libgcc will be found without + # any special hack. preInstall = '' - ensureDir $out/lib - ln -s ${stdenv.gcc.gcc}/lib/libgcc_s.so.1 $out/lib/libgcc_s.so.1 + if [ -f ${stdenv.gcc.gcc}/lib/libgcc_s.so.1 ]; then + ensureDir $out/lib + ln -s ${stdenv.gcc.gcc}/lib/libgcc_s.so.1 $out/lib/libgcc_s.so.1 + fi ''; meta.description = "The GNU C Library"; From 8b4f33ac7690d3dcf02618898dc81f6723a7269e Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Thu, 21 Jan 2010 15:39:11 +0000 Subject: [PATCH 189/232] pkgs/top-level/all-packages.nix: switch to Python 2.6 (except on Darwin) MacOS X can build Python 2.6 just fine, but for some reason a lot of modules don't work, so the resulting binary isn't very useful. svn path=/nixpkgs/branches/stdenv-updates/; revision=19598 --- pkgs/top-level/all-packages.nix | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 6384b1edc1a..b85bd77ce7a 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -184,7 +184,7 @@ let stdenvCross = makeStdenvCross defaultStdenv crossSystem (binutilsCross crossSystem) (gccCrossStageFinal crossSystem); - stdenv = + stdenv = if bootStdenv != null then bootStdenv else let changer = getConfig ["replaceStdenv"] null; in if changer != null then @@ -1689,7 +1689,7 @@ let }; wicd = import ../tools/networking/wicd { - inherit stdenv fetchurl python pygobject pycairo pyGtkGlade pythonDBus + inherit stdenv fetchurl python pygobject pycairo pyGtkGlade pythonDBus wpa_supplicant dhcp wirelesstools nettools iproute; }; @@ -2364,7 +2364,7 @@ let wrapGCCCross = {gcc, libc, binutils, cross, shell ? "", name ? "gcc-cross-wrapper"}: - + forceBuildDrv (import ../build-support/gcc-cross-wrapper { nativeTools = false; nativeLibc = false; @@ -2516,8 +2516,8 @@ let python = if getConfig ["python" "full"] false then pythonFull else pythonBase; python25 = if getConfig ["python" "full"] false then python25Full else python25Base; python26 = if getConfig ["python" "full"] false then python26Full else python26Base; - pythonBase = python25Base; - pythonFull = python25Full; + pythonBase = if stdenv.isDarwin then python25Base else python26Base; + pythonFull = if stdenv.isDarwin then python25Full else python26Full; python24 = import ../development/interpreters/python/2.4 { inherit fetchurl stdenv zlib bzip2; @@ -4404,7 +4404,7 @@ let liquidwar = builderDefsPackage ../games/liquidwar { inherit (xlibs) xproto libX11 libXrender; - inherit gmp guile mesa libjpeg libpng + inherit gmp guile mesa libjpeg libpng expat gettext perl SDL SDL_image SDL_mixer SDL_ttf curl sqlite @@ -8491,7 +8491,7 @@ let ncbiCTools = builderDefsPackage ../development/libraries/ncbi { inherit tcsh mesa lesstif; - inherit (xlibs) libX11 libXaw xproto libXt libSM libICE + inherit (xlibs) libX11 libXaw xproto libXt libSM libICE libXmu libXext; }; @@ -8520,7 +8520,7 @@ let content = builderDefsPackage ../applications/science/math/content { inherit mesa lesstif; - inherit (xlibs) libX11 libXaw xproto libXt libSM libICE + inherit (xlibs) libX11 libXaw xproto libXt libSM libICE libXmu libXext libXcursor; }; From ed3ebb7c2cae0a1f5ebc411ce553f5ce3a3c6e57 Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Thu, 21 Jan 2010 21:42:17 +0000 Subject: [PATCH 190/232] * libjpeg updated to version 8. * libpng updated to 1.4.0. * For libjpegStatic, use a stdenv adapter to build a static library. svn path=/nixpkgs/branches/stdenv-updates/; revision=19605 --- pkgs/development/libraries/libjpeg/default.nix | 10 ++++------ pkgs/development/libraries/libpng/default.nix | 4 ++-- pkgs/stdenv/adapters.nix | 16 +++++++++++++++- pkgs/top-level/all-packages.nix | 3 +-- 4 files changed, 22 insertions(+), 11 deletions(-) diff --git a/pkgs/development/libraries/libjpeg/default.nix b/pkgs/development/libraries/libjpeg/default.nix index 6e4ad9a0971..bc3245cf76d 100644 --- a/pkgs/development/libraries/libjpeg/default.nix +++ b/pkgs/development/libraries/libjpeg/default.nix @@ -1,15 +1,13 @@ -{ stdenv, fetchurl, libtool, static ? false }: +{ stdenv, fetchurl }: stdenv.mkDerivation { - name = "libjpeg-7"; + name = "libjpeg-8"; src = fetchurl { - url = http://www.ijg.org/files/jpegsrc.v7.tar.gz; - sha256 = "1gvy6f83pskxrxwnxqah3g9mhnlgi6aph39b99609gn50ri8ddsh"; + url = http://www.ijg.org/files/jpegsrc.v8.tar.gz; + sha256 = "1b0blpk8v397klssk99l6ddsb64krcb29pbkbp8ziw5kmjvsbfhp"; }; - configureFlags = "--enable-shared ${if static then " --enable-static" else ""}"; - meta = { homepage = http://www.ijg.org/; description = "A library that implements the JPEG image file format"; diff --git a/pkgs/development/libraries/libpng/default.nix b/pkgs/development/libraries/libpng/default.nix index 87148e76059..39b47c00a95 100644 --- a/pkgs/development/libraries/libpng/default.nix +++ b/pkgs/development/libraries/libpng/default.nix @@ -3,11 +3,11 @@ assert zlib != null; stdenv.mkDerivation rec { - name = "libpng-1.2.40"; + name = "libpng-1.4.0"; src = fetchurl { url = "mirror://sourceforge/libpng/${name}.tar.gz"; - md5 = "a2f6808735bf404967f81519a967fb2a"; + md5 = "dfa01122db3be9808a8c9ace7d0580fd"; }; propagatedBuildInputs = [zlib]; diff --git a/pkgs/stdenv/adapters.nix b/pkgs/stdenv/adapters.nix index 5b37f9908c2..ac9e807801c 100644 --- a/pkgs/stdenv/adapters.nix +++ b/pkgs/stdenv/adapters.nix @@ -107,6 +107,19 @@ rec { isStatic = true; } // {inherit fetchurl;}; + + # Return a modified stdenv that disables building shared libraries. + # However, executables will still be dynamically linked. + disableSharedLibraries = stdenv: stdenv // + { mkDerivation = args: stdenv.mkDerivation (args // { + dontDisableStatic = true; + configureFlags = + (if args ? configureFlags then args.configureFlags else "") + + " --disable-shared"; # brrr... + }); + } // {inherit fetchurl;}; + + # Return a modified stdenv that adds a cross compiler to the # builds. makeStdenvCross = stdenv: cross: binutilsCross: gccCross: stdenv // @@ -164,6 +177,7 @@ rec { }; } // { inherit cross; }; + /* Modify a stdenv so that the specified attributes are added to every derivation returned by its mkDerivation function. @@ -267,7 +281,6 @@ rec { /* Use the trace output to report all processed derivations with their license name. - */ traceDrvLicenses = stdenv: stdenv // { mkDerivation = args: @@ -289,6 +302,7 @@ rec { }; }; + /* Abort if the license predicate is not verified for a derivation declared with mkDerivation. diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index b85bd77ce7a..6d2ec6406a3 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -4172,7 +4172,6 @@ let libjpeg = makeOverridable (import ../development/libraries/libjpeg) { inherit fetchurl stdenv; - libtool = libtool_1_5; }; libjpeg62 = makeOverridable (import ../development/libraries/libjpeg/62.nix) { @@ -4181,7 +4180,7 @@ let }; libjpegStatic = lowPrio (appendToName "static" (libjpeg.override { - static = true; + stdenv = disableSharedLibraries stdenv; })); libksba = import ../development/libraries/libksba { From 94ed14ccef2638055ceee46f88d17698ef1e262f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Llu=C3=ADs=20Batlle=20i=20Rossell?= Date: Fri, 22 Jan 2010 14:59:27 +0000 Subject: [PATCH 191/232] Trying to add a cross build to hydra: bisonSheevaplug svn path=/nixpkgs/branches/stdenv-updates/; revision=19614 --- pkgs/top-level/release.nix | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/pkgs/top-level/release.nix b/pkgs/top-level/release.nix index 52851a27dd8..bbae904b04e 100644 --- a/pkgs/top-level/release.nix +++ b/pkgs/top-level/release.nix @@ -4,6 +4,15 @@ let pkgs = allPackages {}; + pkgsSheevaplug = allPackages { + crossSystem = { + config = "armv5tel-unknown-linux-gnueabi"; + bigEndian = false; + arch = "arm"; + float = "soft"; + }; + }; + /* Set the Hydra scheduling priority for a job. The default priority (100) should be used for most jobs. A different priority should only be used for a few particularly interesting @@ -78,6 +87,12 @@ in { tarball = import ./make-tarball.nix; + bisonSheevaplug = let + system = builtins.currentSystem; + in + assert (system == "i686-linux" || system == "x86_64-linux"); + pkgsSheevaplug.bison.hostDrv; + } // (mapTestOn ((packagesWithMetaPlatform pkgs) // rec { MPlayer = linux; From fedf79faeae90192ea83d9dfb15f252a23ece27e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Llu=C3=ADs=20Batlle=20i=20Rossell?= Date: Fri, 22 Jan 2010 15:00:15 +0000 Subject: [PATCH 192/232] Fixing 'my-env' on stdenv-updates, considering that users will add 'buildInputs' to its mkDerivation parameter, while the stdenv setup.sh script would expect buildNativeInputs. svn path=/nixpkgs/branches/stdenv-updates/; revision=19615 --- pkgs/misc/my-env/default.nix | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/pkgs/misc/my-env/default.nix b/pkgs/misc/my-env/default.nix index 34a21a7e37b..7c6c2d46239 100644 --- a/pkgs/misc/my-env/default.nix +++ b/pkgs/misc/my-env/default.nix @@ -41,7 +41,9 @@ { mkDerivation, substituteAll, pkgs } : { stdenv ? pkgs.stdenv, name, buildInputs ? [], cTags ? [], extraCmds ? ""} : mkDerivation { - buildInputs = [ ] ++ buildInputs ; + # The setup.sh script from stdenv will expect the native build inputs in + # the buildNativeInputs environment variable. + buildNativeInputs = [ ] ++ buildInputs ; name = "env-${name}"; phases = "buildPhase"; setupNew = substituteAll { @@ -62,7 +64,7 @@ mkDerivation { -e 's@trap.*@@' \ -i "$s" cat >> "$out/dev-envs/''${name/env-/}" << EOF - buildInputs="$buildNativeInputs" + buildNativeInputs="$buildNativeInputs" # the setup-new script wants to write some data to a temp file.. so just let it do that and tidy up afterwards tmp="\$("${pkgs.coreutils}/bin/mktemp" -d)" NIX_BUILD_TOP="\$tmp" From d47aead668944f9d684568f1daacad2aa8b5f655 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Llu=C3=ADs=20Batlle=20i=20Rossell?= Date: Fri, 22 Jan 2010 18:49:16 +0000 Subject: [PATCH 193/232] Setting the difference buildInputs/buildNativeInputs in some gtk related packages. svn path=/nixpkgs/branches/stdenv-updates/; revision=19620 --- pkgs/development/libraries/atk/1.24.x.nix | 3 ++- pkgs/development/libraries/glib/2.20.x.nix | 3 ++- pkgs/development/libraries/gtk+/2.16.x.nix | 3 ++- pkgs/development/libraries/gtk+/2.18.x.nix | 3 ++- pkgs/servers/x11/xorg/overrides.nix | 5 +++++ 5 files changed, 13 insertions(+), 4 deletions(-) diff --git a/pkgs/development/libraries/atk/1.24.x.nix b/pkgs/development/libraries/atk/1.24.x.nix index 1ff7f388c76..213c3ef72a4 100644 --- a/pkgs/development/libraries/atk/1.24.x.nix +++ b/pkgs/development/libraries/atk/1.24.x.nix @@ -8,7 +8,8 @@ stdenv.mkDerivation rec { sha256 = "0mjxliarzcy7iksh6v1npxsqdpc9sjj3q4wcl567asbdzdpbd803"; }; - buildInputs = [pkgconfig perl]; + buildNativeInputs = [perl]; + buildInputs = [pkgconfig]; propagatedBuildInputs = [glib]; meta = { diff --git a/pkgs/development/libraries/glib/2.20.x.nix b/pkgs/development/libraries/glib/2.20.x.nix index 01e70c172d1..c7a92a00b42 100644 --- a/pkgs/development/libraries/glib/2.20.x.nix +++ b/pkgs/development/libraries/glib/2.20.x.nix @@ -8,7 +8,8 @@ stdenv.mkDerivation rec { sha256 = "0ndgshcqzpj3piwmag3vrsv3rg4pnr12y70knl7z0k2i03cy5bav"; }; - buildInputs = [pkgconfig gettext perl]; + buildNativeInputs = [perl]; + buildInputs = [pkgconfig gettext]; # The nbd package depends on a static version of this library; hence # the default configure flag --disable-static is switched off. diff --git a/pkgs/development/libraries/gtk+/2.16.x.nix b/pkgs/development/libraries/gtk+/2.16.x.nix index b9f73184087..9abbd3aa49d 100644 --- a/pkgs/development/libraries/gtk+/2.16.x.nix +++ b/pkgs/development/libraries/gtk+/2.16.x.nix @@ -11,7 +11,8 @@ stdenv.mkDerivation rec { sha256 = "07gdsl3ialpwfcd0z3w108r60dn0agj12s21fpkpcx44lzknnbm3"; }; - buildInputs = [ pkgconfig perl jasper ]; + buildNativeInputs = [ perl ]; + buildInputs = [ pkgconfig jasper ]; propagatedBuildInputs = [ x11 glib atk pango libtiff libjpeg libpng cairo xlibs.libXrandr diff --git a/pkgs/development/libraries/gtk+/2.18.x.nix b/pkgs/development/libraries/gtk+/2.18.x.nix index b0d17bf4581..bb329ae8b14 100644 --- a/pkgs/development/libraries/gtk+/2.18.x.nix +++ b/pkgs/development/libraries/gtk+/2.18.x.nix @@ -15,7 +15,8 @@ stdenv.mkDerivation rec { sha256 = "0k9mz46q97537kdpmz8j5bhrzpn3zjp7k4mni4niafdp2x4r8aan"; }; - buildInputs = [ pkgconfig perl jasper ]; + buildNativeInputs = [ perl ]; + buildInputs = [ pkgconfig jasper ]; propagatedBuildInputs = [ xlibs.xlibs glib atk pango libtiff libjpeg libpng cairo xlibs.libXrandr ] diff --git a/pkgs/servers/x11/xorg/overrides.nix b/pkgs/servers/x11/xorg/overrides.nix index 064d7310536..4e8466f2621 100644 --- a/pkgs/servers/x11/xorg/overrides.nix +++ b/pkgs/servers/x11/xorg/overrides.nix @@ -42,6 +42,11 @@ in buildNativeInputs = [ args.python ]; }; + pixman = attrs : attrs // { + buildInputs = [ args.pkgconfig ]; + buildNativeInputs = [ args.perl ]; + }; + libX11 = attrs: attrs // { preConfigure = setMalloc0ReturnsNullCrossCompiling; }; From d9dd89396930de667205cc8182de665f4e02e3f5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Llu=C3=ADs=20Batlle=20i=20Rossell?= Date: Fri, 22 Jan 2010 18:51:18 +0000 Subject: [PATCH 194/232] Adding cross-build hydra jobs a bit more generic than it was. There is still a lot of room for improvement on how to write the cross build related jobs for hydra. Step by step. svn path=/nixpkgs/branches/stdenv-updates/; revision=19621 --- pkgs/top-level/release.nix | 92 +++++++++++++++++++++++++++++++------- 1 file changed, 77 insertions(+), 15 deletions(-) diff --git a/pkgs/top-level/release.nix b/pkgs/top-level/release.nix index bbae904b04e..673b417a0a0 100644 --- a/pkgs/top-level/release.nix +++ b/pkgs/top-level/release.nix @@ -4,14 +4,10 @@ let pkgs = allPackages {}; - pkgsSheevaplug = allPackages { - crossSystem = { - config = "armv5tel-unknown-linux-gnueabi"; - bigEndian = false; - arch = "arm"; - float = "soft"; - }; - }; + /* The working or failing letters for cross builds will be sent only to + the following maintainers, as most package maintainers will not be + interested in the result of cross building a package. */ + crossMaintainers = with pkgs.lib.maintainers; [ viric ]; /* Set the Hydra scheduling priority for a job. The default priority (100) should be used for most jobs. A different @@ -30,6 +26,12 @@ let testOn = systems: f: {system ? builtins.currentSystem}: if pkgs.lib.elem system systems then f (allPackages {inherit system;}) else {}; + /* Similar to the testOn function, but with an additional 'crossSystem' + * parameter for allPackages, defining the target platform for cross builds */ + testOnCross = crossSystem: systems: f: {system ? builtins.currentSystem}: + if pkgs.lib.elem system systems then f (allPackages {inherit system + crossSystem;}) else {}; + /* Map an attribute of the form `foo = [platforms...]' to `testOn [platforms...] (pkgs: pkgs.foo)'. */ mapTestOn = pkgs.lib.mapAttrsRecursiveCond @@ -42,6 +44,22 @@ let (pkgs.lib.getAttrFromPath path pkgs); in testOn job.systems getPkg); + + /* Similar to the testOn function, but with an additional 'crossSystem' + * parameter for allPackages, defining the target platform for cross builds, + * and triggering the build of the host derivation (cross built - hostDrv). */ + mapTestOnCross = crossSystem: pkgs.lib.mapAttrsRecursiveCond + (as: !(as ? type && as.type == "job")) + (path: value: + let + job = toJob value; + getPkg = pkgs: setCrossMaintainers + (pkgs.lib.addMetaAttrs { schedulingPriority = toString job.schedulingPriority; } + (pkgs.lib.getAttrFromPath (path ++ ["hostDrv"]) pkgs)); + in testOnCross crossSystem job.systems getPkg); + + setCrossMaintainers = pkg: pkg // { meta.maintainers = crossMaintainers; }; + /* Find all packages that have a meta.platforms field listing the supported platforms. */ packagesWithMetaPlatform = attrSet: @@ -87,12 +105,6 @@ in { tarball = import ./make-tarball.nix; - bisonSheevaplug = let - system = builtins.currentSystem; - in - assert (system == "i686-linux" || system == "x86_64-linux"); - pkgsSheevaplug.bison.hostDrv; - } // (mapTestOn ((packagesWithMetaPlatform pkgs) // rec { MPlayer = linux; @@ -652,4 +664,54 @@ in { xset = linux; }; -} )) +} )) // ( +/* Test some cross builds to the Sheevaplug */ +let + crossSystem = { + config = "armv5tel-unknown-linux-gnueabi"; + bigEndian = false; + arch = "arm"; + float = "soft"; + }; + nativePlatforms = linux; +in { + crossArmLinux = mapTestOnCross crossSystem (rec { + bison = nativePlatforms; + uboot = nativePlatforms; + uclibc = nativePlatforms; + xorg = { + fontadobe100dpi = nativePlatforms; + fontadobe75dpi = nativePlatforms; + fontbh100dpi = nativePlatforms; + fontbhlucidatypewriter100dpi = nativePlatforms; + fontbhlucidatypewriter75dpi = nativePlatforms; + fontbhttf = nativePlatforms; + fontcursormisc = nativePlatforms; + fontmiscmisc = nativePlatforms; + iceauth = nativePlatforms; + libX11 = nativePlatforms; + lndir = all; + setxkbmap = nativePlatforms; + xauth = nativePlatforms; + xev = nativePlatforms; + xf86inputkeyboard = nativePlatforms; + xf86inputmouse = nativePlatforms; + xf86inputevdev = nativePlatforms; + xf86inputsynaptics = nativePlatforms; + xf86videoati = nativePlatforms; + xf86videointel = nativePlatforms; + xf86videonv = nativePlatforms; + xf86videovesa = nativePlatforms; + xfs = nativePlatforms; + xkbcomp = nativePlatforms; + xmessage = nativePlatforms; + xorgserver = nativePlatforms; + xrandr = nativePlatforms; + xrdb = nativePlatforms; + xset = nativePlatforms; + }; + gtkLibs = { + gtk = nativePlatforms; + }; + }); +}) From 7ef8d2474b4522abab85d487e4505a99f2e67d0f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Llu=C3=ADs=20Batlle=20i=20Rossell?= Date: Sat, 23 Jan 2010 00:24:52 +0000 Subject: [PATCH 195/232] Fixing the cross-compiler build on i686-linux svn path=/nixpkgs/branches/stdenv-updates/; revision=19626 --- pkgs/development/compilers/gcc-4.4/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/development/compilers/gcc-4.4/default.nix b/pkgs/development/compilers/gcc-4.4/default.nix index c0c4f6cda21..741c440f92f 100644 --- a/pkgs/development/compilers/gcc-4.4/default.nix +++ b/pkgs/development/compilers/gcc-4.4/default.nix @@ -151,7 +151,7 @@ stdenv.mkDerivation ({ ) } ${if langAda then " --enable-libada" else ""} - ${if stdenv.isi686 then "--with-arch=i686" else ""} + ${if (cross == null && stdenv.isi686) then "--with-arch=i686" else ""} ${if cross != null then crossConfigureFlags else ""} "; From 38c0a2efbd43de3a4d2d0408907b0d28e9736f20 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Llu=C3=ADs=20Batlle=20i=20Rossell?= Date: Sat, 23 Jan 2010 00:29:38 +0000 Subject: [PATCH 196/232] Test how cross-compilation works on non-linux native platforms. svn path=/nixpkgs/branches/stdenv-updates/; revision=19627 --- pkgs/top-level/release.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/top-level/release.nix b/pkgs/top-level/release.nix index 673b417a0a0..30fec5af387 100644 --- a/pkgs/top-level/release.nix +++ b/pkgs/top-level/release.nix @@ -673,7 +673,7 @@ let arch = "arm"; float = "soft"; }; - nativePlatforms = linux; + nativePlatforms = all; in { crossArmLinux = mapTestOnCross crossSystem (rec { bison = nativePlatforms; From d8900100e515297720993904e4c97111b4dcd928 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Llu=C3=ADs=20Batlle=20i=20Rossell?= Date: Sat, 23 Jan 2010 09:41:50 +0000 Subject: [PATCH 197/232] Allowing linux-headers to be built for cross-compilations on non-linux platforms. Updating the list of hydra cross-build jobs to something more ambitious. svn path=/nixpkgs/branches/stdenv-updates/; revision=19628 --- .../linux/kernel-headers/2.6.28.nix | 2 +- pkgs/top-level/release.nix | 36 +++---------------- 2 files changed, 5 insertions(+), 33 deletions(-) diff --git a/pkgs/os-specific/linux/kernel-headers/2.6.28.nix b/pkgs/os-specific/linux/kernel-headers/2.6.28.nix index 7d11413da26..82840f8a51f 100644 --- a/pkgs/os-specific/linux/kernel-headers/2.6.28.nix +++ b/pkgs/os-specific/linux/kernel-headers/2.6.28.nix @@ -1,6 +1,6 @@ {stdenv, fetchurl, perl, cross ? null}: -assert stdenv.isLinux; +assert cross == null -> stdenv.isLinux; let version = "2.6.28.5"; in diff --git a/pkgs/top-level/release.nix b/pkgs/top-level/release.nix index 30fec5af387..0f7377b4311 100644 --- a/pkgs/top-level/release.nix +++ b/pkgs/top-level/release.nix @@ -678,40 +678,12 @@ in { crossArmLinux = mapTestOnCross crossSystem (rec { bison = nativePlatforms; uboot = nativePlatforms; - uclibc = nativePlatforms; + tightvnc = nativePlatforms; + openoffice = nativePlatforms; + wxGTK = nativePlatforms; + firefox = nativePlatforms; xorg = { - fontadobe100dpi = nativePlatforms; - fontadobe75dpi = nativePlatforms; - fontbh100dpi = nativePlatforms; - fontbhlucidatypewriter100dpi = nativePlatforms; - fontbhlucidatypewriter75dpi = nativePlatforms; - fontbhttf = nativePlatforms; - fontcursormisc = nativePlatforms; - fontmiscmisc = nativePlatforms; - iceauth = nativePlatforms; - libX11 = nativePlatforms; - lndir = all; - setxkbmap = nativePlatforms; - xauth = nativePlatforms; - xev = nativePlatforms; - xf86inputkeyboard = nativePlatforms; - xf86inputmouse = nativePlatforms; - xf86inputevdev = nativePlatforms; - xf86inputsynaptics = nativePlatforms; - xf86videoati = nativePlatforms; - xf86videointel = nativePlatforms; - xf86videonv = nativePlatforms; - xf86videovesa = nativePlatforms; - xfs = nativePlatforms; - xkbcomp = nativePlatforms; - xmessage = nativePlatforms; xorgserver = nativePlatforms; - xrandr = nativePlatforms; - xrdb = nativePlatforms; - xset = nativePlatforms; }; - gtkLibs = { - gtk = nativePlatforms; - }; }); }) From ede62831805ac72109e355757a116e96147fcb14 Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Sun, 24 Jan 2010 23:14:26 +0000 Subject: [PATCH 198/232] * Revert libpng to 1.2.x because 1.4 breaks too many things. svn path=/nixpkgs/branches/stdenv-updates/; revision=19641 --- pkgs/development/libraries/libpng/default.nix | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/pkgs/development/libraries/libpng/default.nix b/pkgs/development/libraries/libpng/default.nix index 39b47c00a95..746266b92c7 100644 --- a/pkgs/development/libraries/libpng/default.nix +++ b/pkgs/development/libraries/libpng/default.nix @@ -3,11 +3,11 @@ assert zlib != null; stdenv.mkDerivation rec { - name = "libpng-1.4.0"; + name = "libpng-1.2.42"; src = fetchurl { url = "mirror://sourceforge/libpng/${name}.tar.gz"; - md5 = "dfa01122db3be9808a8c9ace7d0580fd"; + md5 = "562066eb8557db91156eaeb309458488"; }; propagatedBuildInputs = [zlib]; @@ -20,3 +20,4 @@ stdenv.mkDerivation rec { license = "free-non-copyleft"; # http://www.libpng.org/pub/png/src/libpng-LICENSE.txt }; } + From 4430ce1952c42ab273ab93e43d3129463194a024 Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Tue, 26 Jan 2010 10:56:21 +0000 Subject: [PATCH 199/232] * Fix splashutils. svn path=/nixpkgs/branches/stdenv-updates/; revision=19662 --- pkgs/stdenv/adapters.nix | 7 +++---- pkgs/top-level/all-packages.nix | 2 +- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/pkgs/stdenv/adapters.nix b/pkgs/stdenv/adapters.nix index ac9e807801c..33e1f8505d2 100644 --- a/pkgs/stdenv/adapters.nix +++ b/pkgs/stdenv/adapters.nix @@ -108,14 +108,13 @@ rec { } // {inherit fetchurl;}; - # Return a modified stdenv that disables building shared libraries. - # However, executables will still be dynamically linked. - disableSharedLibraries = stdenv: stdenv // + # Return a modified stdenv that enables building static libraries. + enableStaticLibraries = stdenv: stdenv // { mkDerivation = args: stdenv.mkDerivation (args // { dontDisableStatic = true; configureFlags = (if args ? configureFlags then args.configureFlags else "") - + " --disable-shared"; # brrr... + + " --enable-static"; }); } // {inherit fetchurl;}; diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 100e07f0152..82f269fd00b 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -4220,7 +4220,7 @@ let }; libjpegStatic = lowPrio (appendToName "static" (libjpeg.override { - stdenv = disableSharedLibraries stdenv; + stdenv = enableStaticLibraries stdenv; })); libksba = import ../development/libraries/libksba { From a25a25e4f4855f4a43b2dbebd75507bc96ce4809 Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Tue, 26 Jan 2010 13:38:12 +0000 Subject: [PATCH 200/232] * Updated Email::Send because it didn't build. * Removed Email::Simple::Creator because it's part of Email::Simple now. svn path=/nixpkgs/branches/stdenv-updates/; revision=19665 --- pkgs/top-level/perl-packages.nix | 22 +++++++--------------- 1 file changed, 7 insertions(+), 15 deletions(-) diff --git a/pkgs/top-level/perl-packages.nix b/pkgs/top-level/perl-packages.nix index b4b16609290..e112298eb91 100644 --- a/pkgs/top-level/perl-packages.nix +++ b/pkgs/top-level/perl-packages.nix @@ -980,11 +980,11 @@ rec { }; }; - EmailSend = buildPerlPackage { - name = "Email-Send-2.185"; + EmailSend = buildPerlPackage rec { + name = "Email-Send-2.198"; src = fetchurl { - url = mirror://cpan/authors/id/R/RJ/RJBS/Email-Send-2.185.tar.gz; - sha256 = "0pbgnnbmv6z3zzqaiq1sdcv5d26ijhw4p8k8kp6ac7arvldblamz"; + url = "mirror://cpan/authors/id/R/RJ/RJBS/${name}.tar.gz"; + sha256 = "0ffmpqys7yph5lb28m2xan0zd837vywg8c6gjjd9p80dahpqknyx"; }; propagatedBuildInputs = [EmailSimple EmailAddress ModulePluggable ReturnValue]; }; @@ -1007,20 +1007,12 @@ rec { }; EmailSimple = buildPerlPackage rec { - name = "Email-Simple-2.005"; + name = "Email-Simple-2.100"; src = fetchurl { url = "mirror://cpan/authors/id/R/RJ/RJBS/${name}.tar.gz"; - sha256 = "1dh2qgwss1wm6ypvr6m2z01gz19g73kmlk7wa25wxd2gspsq9qck"; + sha256 = "1q86p9r5sb1dwdhcbnkfrbx08440cf74vzgrqc05cgi8mmhdfsh9"; }; - }; - - EmailSimpleCreator = buildPerlPackage rec { - name = "Email-Simple-Creator-1.424"; - src = fetchurl { - url = "mirror://cpan/authors/id/R/RJ/RJBS/${name}.tar.gz"; - sha256 = "16i15sarncacg86wl60dbddlv4p75i8xq6jqp1isj9plp60538ph"; - }; - propagatedBuildInputs = [EmailDateFormat EmailSimple]; + propagatedBuildInputs = [ EmailDateFormat ]; }; EmailValid = buildPerlPackage { From 566c9ffdc282d34b23fd16465d96cabbd274dbe4 Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Tue, 26 Jan 2010 14:31:23 +0000 Subject: [PATCH 201/232] * Disable some packages that don't evaluate. svn path=/nixpkgs/branches/stdenv-updates/; revision=19666 --- pkgs/top-level/release.nix | 27 ++++++++------------------- 1 file changed, 8 insertions(+), 19 deletions(-) diff --git a/pkgs/top-level/release.nix b/pkgs/top-level/release.nix index 3e8df1b6eda..806415ac70a 100644 --- a/pkgs/top-level/release.nix +++ b/pkgs/top-level/release.nix @@ -146,7 +146,7 @@ in { cksfv = all; classpath = linux; cmake = all; - compiz = linux; + #compiz = linux; consolekit = linux; coreutils = all; cpio = all; @@ -351,7 +351,7 @@ in { python = allBut "i686-cygwin"; pythonFull = linux; sbcl = all; - qt3 = allBut "i686-cygwin"; + qt3 = linux; qt4 = linux; qt45 = linux; qt46 = linux; @@ -437,7 +437,7 @@ in { wireshark = linux; wirelesstools = linux; wpa_supplicant = linux; - wxGTK = all; + wxGTK = linux; x11_ssh_askpass = linux; xchm = linux; xfig = x11Supported; @@ -595,18 +595,6 @@ in { virtualboxGuestAdditions = linux; }; - linuxPackages_2_6_31 = { - kernel = linux; - }; - - linuxPackages_2_6_31_zen = { - kernel = linux; - }; - - linuxPackages_2_6_31_zen_bfs = { - kernel = linux; - }; - linuxPackages_2_6_32 = { aufs = linux; kernel = linux; @@ -673,6 +661,7 @@ in { }; } )) // ( + /* Test some cross builds to the Sheevaplug */ let crossSystem = { @@ -681,17 +670,17 @@ let arch = "arm"; float = "soft"; }; - nativePlatforms = all; + nativePlatforms = linux; in { crossArmLinux = mapTestOnCross crossSystem (rec { bison = nativePlatforms; uboot = nativePlatforms; tightvnc = nativePlatforms; - openoffice = nativePlatforms; + #openoffice = nativePlatforms; wxGTK = nativePlatforms; - firefox = nativePlatforms; + #firefox = nativePlatforms; xorg = { - xorgserver = nativePlatforms; + #xorgserver = nativePlatforms; }; }); }) From e907369c62dd64dd1ae7b0153889fa5d10a25b0e Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Tue, 26 Jan 2010 14:48:44 +0000 Subject: [PATCH 202/232] * Applied a patch to make Pan build with GCC 4.4. svn path=/nixpkgs/branches/stdenv-updates/; revision=19667 --- pkgs/applications/networking/newsreaders/pan/default.nix | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/pkgs/applications/networking/newsreaders/pan/default.nix b/pkgs/applications/networking/newsreaders/pan/default.nix index 67158bb69b0..9df7868be1b 100644 --- a/pkgs/applications/networking/newsreaders/pan/default.nix +++ b/pkgs/applications/networking/newsreaders/pan/default.nix @@ -13,6 +13,14 @@ stdenv.mkDerivation { sha1 = "a0bd98ea1ba174800896611e3305a6b6d8dbde2f"; }; + patches = + [ # Build on GCC 4.4. + (fetchurl { + url = "http://sources.gentoo.org/viewcvs.py/*checkout*/gentoo-x86/net-nntp/pan/files/pan-0.133-gcc44.patch?rev=1.1"; + sha256 = "05xmgvcpl1gjcfab8xsdy400p55j59hp52fwa4qbwlqy3c35qv1v"; + }) + ]; + buildInputs = [pkgconfig gtk perl pcre gmime gettext] ++ stdenv.lib.optional spellChecking gtkspell; From d068c0dd50d098c47ce0a057a325a8b9d3f40b7b Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Tue, 26 Jan 2010 15:05:02 +0000 Subject: [PATCH 203/232] * ktorrent 2.2.8. svn path=/nixpkgs/branches/stdenv-updates/; revision=19675 --- pkgs/tools/networking/p2p/ktorrent/default.nix | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pkgs/tools/networking/p2p/ktorrent/default.nix b/pkgs/tools/networking/p2p/ktorrent/default.nix index 00b6f28dfe9..6950d9557de 100644 --- a/pkgs/tools/networking/p2p/ktorrent/default.nix +++ b/pkgs/tools/networking/p2p/ktorrent/default.nix @@ -3,11 +3,11 @@ }: stdenv.mkDerivation { - name = "ktorrent-2.2.7"; + name = "ktorrent-2.2.8"; src = fetchurl { - url = http://ktorrent.org/downloads/2.2.7/ktorrent-2.2.7.tar.bz2; - sha256 = "0wvv294grv07zwdsycfsyhq5fllqyljrcg5g9iwgn84fk3nszlbi"; + url = http://ktorrent.org/downloads/2.2.8/ktorrent-2.2.8.tar.bz2; + sha256 = "10zpc50sggg8h1g6vgcv12mm4sw4d6jvzvnghdplqs86m5bwpg9k"; }; buildInputs = [ From af9c3582261f652555d43e4da12b8a5bb34eb89b Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Tue, 26 Jan 2010 15:15:58 +0000 Subject: [PATCH 204/232] * Update some broken Perl packages. svn path=/nixpkgs/branches/stdenv-updates/; revision=19676 --- pkgs/top-level/perl-packages.nix | 47 ++++++++++++++++++-------------- 1 file changed, 27 insertions(+), 20 deletions(-) diff --git a/pkgs/top-level/perl-packages.nix b/pkgs/top-level/perl-packages.nix index e112298eb91..c59f70dc86a 100644 --- a/pkgs/top-level/perl-packages.nix +++ b/pkgs/top-level/perl-packages.nix @@ -638,11 +638,11 @@ rec { ]; }; - ConfigAny = buildPerlPackage { - name = "Config-Any-0.14"; + ConfigAny = buildPerlPackage rec { + name = "Config-Any-0.18"; src = fetchurl { - url = mirror://cpan/authors/id/B/BR/BRICAS/Config-Any-0.14.tar.gz; - sha256 = "1vlr4w2m88figac5pblg6ppzrm11x2pm7r05n48s84cp4mizhim1"; + url = "mirror://cpan/authors/id/B/BR/BRICAS/${name}.tar.gz"; + sha256 = "0hjfvbbhi8r52ycpw507y6d4cway5x5z9pij117q04r1xmwf0qnj"; }; }; @@ -715,6 +715,14 @@ rec { }; }; + DataDumperConcise = buildPerlPackage rec { + name = "Data-Dumper-Concise-1.100"; + src = fetchurl { + url = "mirror://cpan/authors/id/M/MS/MSTROUT/${name}.tar.gz"; + sha256 = "123iy2nnf41sq3sk4plrmqlbwsciir6ww31frrm7vzg388zziz7x"; + }; + }; + DataHierarchy = buildPerlPackage { name = "Data-Hierarchy-0.34"; src = fetchurl { @@ -863,17 +871,16 @@ rec { }; DBIxClass = buildPerlPackage rec { - name = "DBIx-Class-0.08112"; + name = "DBIx-Class-0.08115"; src = fetchurl { - url = "mirror://cpan/authors/id/R/RI/RIBASUSHI/${name}.tar.gz"; - sha256 = "167fmz4pdlis7k3fj20gngihjgs48smijcxhwh6ywsrv6v3vxd57"; + url = "mirror://cpan/authors/id/F/FR/FREW/${name}.tar.gz"; + sha256 = "1addd0763q2jyvh9hdi0ayppqk0bmypw48s1xcwfximbnja8z9mw"; }; propagatedBuildInputs = [ - TestNoWarnings TestException DBI ScopeGuard - PathClass ClassInspector ClassAccessorGrouped - CarpClan TestWarn DataPage SQLAbstract - SQLAbstractLimit ClassC3 ClassC3Componentised - ModuleFind DBDSQLite JSONAny SubName + TestNoWarnings TestException DBI ScopeGuard PathClass + ClassInspector ClassAccessorGrouped CarpClan TestWarn DataPage + SQLAbstract SQLAbstractLimit ClassC3 ClassC3Componentised + ModuleFind DBDSQLite JSONAny SubName DataDumperConcise ]; buildInputs = [TestPod TestPodCoverage]; }; @@ -888,10 +895,10 @@ rec { }; DBIxClassSchemaLoader = buildPerlPackage rec { - name = "DBIx-Class-Schema-Loader-0.04999_09"; + name = "DBIx-Class-Schema-Loader-0.04999_14"; src = fetchurl { url = "mirror://cpan/authors/id/R/RK/RKITOVER/${name}.tar.gz"; - sha256 = "1v4lqhjh9b6wwd8rayxmvr4nq44z5yffl5jkfccyhcp8lp84ysmf"; + sha256 = "0xswxcc31g6clwxc1d7skpjfpf5i0sw5y7d16n9v4x5vb8hd55dc"; }; propagatedBuildInputs = [ DBI DBDSQLite DataDump UNIVERSALrequire @@ -1935,10 +1942,10 @@ rec { }; ScopeUpper = buildPerlPackage rec { - name = "Scope-Upper-0.06"; + name = "Scope-Upper-0.10"; src = fetchurl { url = "mirror://cpan/authors/id/V/VP/VPIT/${name}.tar.gz"; - sha256 = "1qaf310wbfpjb0lmg3fpmhbfnjxqw3j47rj0w0f0cy4bgihi8l43"; + sha256 = "0llscmwyw657pzid2lpc3q8zz3jj28aa66bdpmldv6gfa2a5ny1v"; }; }; @@ -2147,11 +2154,11 @@ rec { }; }; - TestDeep = buildPerlPackage { - name = "Test-Deep-0.103"; + TestDeep = buildPerlPackage rec { + name = "Test-Deep-0.106"; src = fetchurl { - url = mirror://cpan/authors/id/F/FD/FDALY/Test-Deep-0.103.tar.gz; - sha256 = "0cdl08k5v0wc9w20va5qw98ynlbs9ifwndgsix8qhi7h15sj8a5j"; + url = "mirror://cpan/authors/id/F/FD/FDALY/${name}.tar.gz"; + sha256 = "1ix4jc5k696sjhv01mvypmmf7a6kpm5wmgq01j644zjkaxh1minz"; }; propagatedBuildInputs = [TestTester TestNoWarnings]; }; From fae05e6328914565b2c30921f6d0064110db2a0d Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Tue, 26 Jan 2010 15:27:18 +0000 Subject: [PATCH 205/232] * Build on GCC 4.4. svn path=/nixpkgs/branches/stdenv-updates/; revision=19677 --- pkgs/applications/science/xplanet/default.nix | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/pkgs/applications/science/xplanet/default.nix b/pkgs/applications/science/xplanet/default.nix index cb3c47734bd..15e04c3835c 100644 --- a/pkgs/applications/science/xplanet/default.nix +++ b/pkgs/applications/science/xplanet/default.nix @@ -2,11 +2,22 @@ stdenv.mkDerivation { name = "xplanet-1.2.1"; + src = fetchurl { url = mirror://sourceforge/xplanet/xplanet-1.2.1.tar.gz; sha256 = "1pp55a1rgjkfcrwc00y3l48fhpqcp3qagd1zbym6zg27fzi5fbgm"; }; + + patches = + [ # Build on GCC 4.4. + (fetchurl { + url = "http://sources.gentoo.org/viewcvs.py/*checkout*/gentoo-x86/x11-misc/xplanet/files/xplanet-1.2.1-gentoo.patch?rev=1.1"; + sha256 = "0mmagjizj4hj057qmpi45w95zlrqda32x96xy44f6126xzj02yd5"; + }) + ]; + buildInputs = [ pkgconfig freetype pango libpng libtiff giflib libjpeg ]; + meta = { description = "Renders an image of the earth or other planets into the X root window"; homepage = http://xplanet.sourceforge.net; From e8601a4227519ba979e0785855c28b6adfce779e Mon Sep 17 00:00:00 2001 From: Rob Vermaas Date: Tue, 26 Jan 2010 16:04:53 +0000 Subject: [PATCH 206/232] explicitly disable readline support for bash on darwin, hacky for now, to avoid massive rebuild svn path=/nixpkgs/branches/stdenv-updates/; revision=19678 --- pkgs/shells/bash/default.nix | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/pkgs/shells/bash/default.nix b/pkgs/shells/bash/default.nix index 2b373548ac1..8e3ce958672 100644 --- a/pkgs/shells/bash/default.nix +++ b/pkgs/shells/bash/default.nix @@ -2,7 +2,7 @@ assert interactive -> readline != null; -stdenv.mkDerivation rec { +stdenv.mkDerivation (rec { name = "bash-4.1"; src = fetchurl { @@ -71,4 +71,5 @@ stdenv.mkDerivation rec { maintainers = [ stdenv.lib.maintainers.ludo ]; }; -} +} // (if stdenv.isDarwin then { configureFlags = if interactive then "--with-installed-readline" else "--disable-readline"; } else {}) ) + From 07cdd0fbb182915c4a86fa46ede479c4bb55e44b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Llu=C3=ADs=20Batlle=20i=20Rossell?= Date: Tue, 26 Jan 2010 16:25:30 +0000 Subject: [PATCH 207/232] Updating gcc to 4.4.3 svn path=/nixpkgs/branches/stdenv-updates/; revision=19679 --- pkgs/development/compilers/gcc-4.4/default.nix | 4 ++-- pkgs/development/compilers/gcc-4.4/sources.nix | 12 ++++++------ 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/pkgs/development/compilers/gcc-4.4/default.nix b/pkgs/development/compilers/gcc-4.4/default.nix index 741c440f92f..36b4440cb27 100644 --- a/pkgs/development/compilers/gcc-4.4/default.nix +++ b/pkgs/development/compilers/gcc-4.4/default.nix @@ -33,7 +33,7 @@ assert langVhdl -> gnat != null; with stdenv.lib; -let version = "4.4.2"; +let version = "4.4.3"; javaEcj = fetchurl { # The `$(top_srcdir)/ecj.jar' file is automatically picked up at # `configure' time. @@ -100,7 +100,7 @@ stdenv.mkDerivation ({ # http://gcc.gnu.org/bugzilla/show_bug.cgi?id=42279 ./target-cpp.patch - # (fixed in gcc 4.4.3) bad mixture of build/target flags + # Bad mixture of build/target flags ./libstdc++-target.patch ] ++ optional noSysDirs ./no-sys-dirs.patch diff --git a/pkgs/development/compilers/gcc-4.4/sources.nix b/pkgs/development/compilers/gcc-4.4/sources.nix index 6da3d48e941..351240e73ca 100644 --- a/pkgs/development/compilers/gcc-4.4/sources.nix +++ b/pkgs/development/compilers/gcc-4.4/sources.nix @@ -2,25 +2,25 @@ For GCC 4.4.2. */ { fetchurl, optional, version, langC, langCC, langFortran, langJava, langAda }: -assert version == "4.4.2"; +assert version == "4.4.3"; optional /* langC */ true (fetchurl { url = "mirror://gcc/releases/gcc-${version}/gcc-core-${version}.tar.bz2"; - sha256 = "03cgv3b9bqhap4bks5wfg7nyj64l5c3qyn1igpqc6gk60bxm9wym"; + sha256 = "0ml360nwkf95w0ykn19zlyxmdvvzpmrbxj2vfrn0k8i2pvk13wwj"; }) ++ optional langCC (fetchurl { url = "mirror://gcc/releases/gcc-${version}/gcc-g++-${version}.tar.bz2"; - sha256 = "0al23gnx4v50j1y6xb23by34m2qhavm2xxn3f1v8kis7ajlbm1j1"; + sha256 = "1s5zy8pfn4rgfm2l1dpfzrrdhi2l5zhphqk0h3gsbn1pdw751kkv"; }) ++ optional langFortran (fetchurl { url = "mirror://gcc/releases/gcc-${version}/gcc-fortran-${version}.tar.bz2"; - sha256 = "0zk3j5r1cc5ahm0njxba1xfvv2h39d17aqakgg354pig4hpjkidc"; + sha256 = "0iivw5kgwxdlqamwgaw5zhw48jajsmg09fgynyxkrxsa702s74sw"; }) ++ optional langJava (fetchurl { url = "mirror://gcc/releases/gcc-${version}/gcc-java-${version}.tar.bz2"; - sha256 = "0ydk0qyhi1fdyz2xvj6m6l7cav4wg3962a1jxpf2j3nppm0p1dvp"; + sha256 = "13r0yxz6sif3i6sxh7b3fa5m1ygynvsg1bf6ssq6njp1fzp9a2kq"; }) ++ optional langAda (fetchurl { url = "mirror://gcc/releases/gcc-${version}/gcc-ada-${version}.tar.bz2"; - sha256 = "1isz90b772j7ar5d4265fxzwiwgljssi0kpmrkybsj545615s0wi"; + sha256 = "146jfkwgg7gdgfqnrm04133amk8k9vr51wc01rwp2bcjai9c3kk7"; }) ++ [] From 0d88060fb65663d2df03f096f3195f716343dd3d Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Tue, 26 Jan 2010 16:34:50 +0000 Subject: [PATCH 208/232] * Update to bash-4.1-p2 (since we're rebuilding everything anyway). svn path=/nixpkgs/branches/stdenv-updates/; revision=19680 --- pkgs/shells/bash/bash-patches.nix | 2 ++ pkgs/shells/bash/default.nix | 11 +++++------ 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/pkgs/shells/bash/bash-patches.nix b/pkgs/shells/bash/bash-patches.nix index b8019fb3350..d22435744cc 100644 --- a/pkgs/shells/bash/bash-patches.nix +++ b/pkgs/shells/bash/bash-patches.nix @@ -1,4 +1,6 @@ # Automatically generated by `update-patch-set.sh'; do not edit. patch: [ +(patch "001" "0y02cbfnc5s3dnwr4fw2nz43f3b826f5084mk7qd0lzq12hpzr56") +(patch "002" "1y3qzw6lx16vnb8hrw3zx01z25k773cbmgysvs3vvcw6w6fj4bij") ] diff --git a/pkgs/shells/bash/default.nix b/pkgs/shells/bash/default.nix index 8e3ce958672..cb26ce108c4 100644 --- a/pkgs/shells/bash/default.nix +++ b/pkgs/shells/bash/default.nix @@ -2,8 +2,8 @@ assert interactive -> readline != null; -stdenv.mkDerivation (rec { - name = "bash-4.1"; +stdenv.mkDerivation rec { + name = "bash-4.1-p2"; src = fetchurl { url = "mirror://gnu/bash/${name}.tar.gz"; @@ -36,8 +36,8 @@ stdenv.mkDerivation (rec { buildInputs = stdenv.lib.optional (texinfo != null) texinfo ++ stdenv.lib.optional interactive readline; - configureFlags = "--with-installed-readline"; - + configureFlags = if interactive then "--with-installed-readline" else "--disable-readline"; + postInstall = '' # Add an `sh' -> `bash' symlink. ln -s bash "$out/bin/sh" @@ -71,5 +71,4 @@ stdenv.mkDerivation (rec { maintainers = [ stdenv.lib.maintainers.ludo ]; }; -} // (if stdenv.isDarwin then { configureFlags = if interactive then "--with-installed-readline" else "--disable-readline"; } else {}) ) - +} From 64f1191313c9df006e7f09b2fe574ea88c86f195 Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Tue, 26 Jan 2010 18:10:59 +0000 Subject: [PATCH 209/232] * Fix Perl on FreeBSD. svn path=/nixpkgs/branches/stdenv-updates/; revision=19685 --- pkgs/build-support/gcc-wrapper/default.nix | 4 +- .../interpreters/perl-5.10/default.nix | 62 +++++++------- .../interpreters/perl-5.10/no-sys-dirs.patch | 80 +++++++++++++------ pkgs/top-level/all-packages.nix | 8 +- 4 files changed, 89 insertions(+), 65 deletions(-) diff --git a/pkgs/build-support/gcc-wrapper/default.nix b/pkgs/build-support/gcc-wrapper/default.nix index 87b2b097659..87557bb4779 100644 --- a/pkgs/build-support/gcc-wrapper/default.nix +++ b/pkgs/build-support/gcc-wrapper/default.nix @@ -6,8 +6,8 @@ # variables so that the compiler and the linker just "work". { name ? "", stdenv, nativeTools, nativeLibc, nativePrefix ? "" -, gcc ? null, libc ? null, binutils ? null, coreutils ? null, shell ? "", -zlib ? null +, gcc ? null, libc ? null, binutils ? null, coreutils ? null, shell ? "" +, zlib ? null }: assert nativeTools -> nativePrefix != ""; diff --git a/pkgs/development/interpreters/perl-5.10/default.nix b/pkgs/development/interpreters/perl-5.10/default.nix index aadf1b7d00d..31168291e3d 100644 --- a/pkgs/development/interpreters/perl-5.10/default.nix +++ b/pkgs/development/interpreters/perl-5.10/default.nix @@ -1,14 +1,8 @@ -{ stdenv, fetchurl -, impureLibcPath ? null -}: +{ stdenv, fetchurl }: -let - - preBuildNoNative = - '' - # Make Cwd work on NixOS (where we don't have a /bin/pwd). - substituteInPlace lib/Cwd.pm --replace "'/bin/pwd'" "'$(type -tP pwd)'" - ''; +let + + libc = if stdenv ? gcc && stdenv.gcc.libc != null then stdenv.gcc.libc else "/usr"; in @@ -20,47 +14,45 @@ stdenv.mkDerivation rec { sha256 = "0dagnhjgmslfx1jawz986nvc3jh1klk7mn2l8djdca1b9gm2czyb"; }; - patches = [ - # This patch does the following: - # 1) Do use the PATH environment variable to find the `pwd' command. - # By default, Perl will only look for it in /lib and /usr/lib. - # !!! what are the security implications of this? - # 2) Force the use of , not /usr/include/errno.h, on Linux - # systems. (This actually appears to be due to a bug in Perl.) - ./no-sys-dirs.patch - ]; + patches = + [ # Do not look in /usr etc. for dependencies. + ./no-sys-dirs.patch + ]; # Build a thread-safe Perl with a dynamic libperls.o. We need the # "installstyle" option to ensure that modules are put under # $out/lib/perl5 - this is the general default, but because $out # contains the string "perl", Configure would select $out/lib. # Miniperl needs -lm. perl needs -lrt. - configureFlags = [ - "-de" - "-Dcc=gcc" - "-Uinstallusrbinperl" - "-Dinstallstyle=lib/perl5" - "-Duseshrplib" - (if stdenv ? glibc then "-Dusethreads" else "") - ]; + configureFlags = + [ "-de" + "-Dcc=gcc" + "-Uinstallusrbinperl" + "-Dinstallstyle=lib/perl5" + "-Duseshrplib" + "-Dlocincpth=${libc}/include" + "-Dloclibpth=${libc}/lib" + ] + ++ stdenv.lib.optional (stdenv ? glibc) "-Dusethreads"; configureScript = "${stdenv.shell} ./Configure"; dontAddPrefix = true; - configurePhase = + preConfigure = '' configureFlags="$configureFlags -Dprefix=$out -Dman1dir=$out/share/man/man1 -Dman3dir=$out/share/man/man3" - if test "${if impureLibcPath == null then "$NIX_ENFORCE_PURITY" else "1"}" = "1"; then - GLIBC=${if impureLibcPath == null then "$(cat $NIX_GCC/nix-support/orig-libc)" else impureLibcPath} - configureFlags="$configureFlags -Dlocincpth=$GLIBC/include -Dloclibpth=$GLIBC/lib" - fi - ${stdenv.shell} ./Configure $configureFlags \ - ${if stdenv.system == "armv5tel-linux" then "-Dldflags=\"-lm -lrt\"" else ""}; + ${stdenv.lib.optionalString (stdenv.system == "armv5tel-linux") '' + configureFlagsArray=(-Dldflags="-lm -lrt") + ''} ''; - preBuild = stdenv.lib.optionalString (!(stdenv ? gcc && stdenv.gcc.nativeTools)) preBuildNoNative; + preBuild = stdenv.lib.optionalString (!(stdenv ? gcc && stdenv.gcc.nativeTools)) + '' + # Make Cwd work on NixOS (where we don't have a /bin/pwd). + substituteInPlace lib/Cwd.pm --replace "'/bin/pwd'" "'$(type -tP pwd)'" + ''; setupHook = ./setup-hook.sh; } diff --git a/pkgs/development/interpreters/perl-5.10/no-sys-dirs.patch b/pkgs/development/interpreters/perl-5.10/no-sys-dirs.patch index 0b1164a3250..29edf68bb64 100644 --- a/pkgs/development/interpreters/perl-5.10/no-sys-dirs.patch +++ b/pkgs/development/interpreters/perl-5.10/no-sys-dirs.patch @@ -1,8 +1,8 @@ -diff -rc perl-5.10.0-orig/Configure perl-5.10.0/Configure -*** perl-5.10.0-orig/Configure 2007-12-18 11:47:07.000000000 +0100 ---- perl-5.10.0/Configure 2008-02-21 17:00:40.000000000 +0100 +diff -rc -x '*~' perl-5.10.1-orig/Configure perl-5.10.1/Configure +*** perl-5.10.1-orig/Configure 2009-08-18 21:03:53.000000000 +0200 +--- perl-5.10.1/Configure 2010-01-26 19:08:32.933792254 +0100 *************** -*** 104,118 **** +*** 103,117 **** fi : Proper PATH setting @@ -18,7 +18,7 @@ diff -rc perl-5.10.0-orig/Configure perl-5.10.0/Configure for p in $paths do ---- 104,110 ---- +--- 103,109 ---- fi : Proper PATH setting @@ -27,8 +27,8 @@ diff -rc perl-5.10.0-orig/Configure perl-5.10.0/Configure for p in $paths do *************** -*** 1271,1287 **** - groupstype='' +*** 1301,1317 **** + archname='' libnames='' : change the next line if compiling for Xenix/286 on Xenix/386 ! xlibpth='/usr/lib/386 /lib/386' @@ -45,8 +45,8 @@ diff -rc perl-5.10.0-orig/Configure perl-5.10.0/Configure : Private path used by Configure to find libraries. Its value : is prepended to libpth. This variable takes care of special ---- 1263,1274 ---- - groupstype='' +--- 1293,1304 ---- + archname='' libnames='' : change the next line if compiling for Xenix/286 on Xenix/386 ! xlibpth='' @@ -59,7 +59,7 @@ diff -rc perl-5.10.0-orig/Configure perl-5.10.0/Configure : Private path used by Configure to find libraries. Its value : is prepended to libpth. This variable takes care of special *************** -*** 1302,1309 **** +*** 1329,1336 **** : Possible local include directories to search. : Set locincpth to "" in a hint file to defeat local include searches. @@ -68,7 +68,7 @@ diff -rc perl-5.10.0-orig/Configure perl-5.10.0/Configure : : no include file wanted by default inclwanted='' ---- 1289,1295 ---- +--- 1316,1322 ---- : Possible local include directories to search. : Set locincpth to "" in a hint file to defeat local include searches. @@ -77,7 +77,7 @@ diff -rc perl-5.10.0-orig/Configure perl-5.10.0/Configure : no include file wanted by default inclwanted='' *************** -*** 1331,1338 **** +*** 1358,1365 **** libswanted="$libswanted m crypt sec util c cposix posix ucb bsd BSD" : We probably want to search /usr/shlib before most other libraries. : This is only used by the lib/ExtUtils/MakeMaker.pm routine extliblist. @@ -86,9 +86,9 @@ diff -rc perl-5.10.0-orig/Configure perl-5.10.0/Configure : Do not use vfork unless overridden by a hint file. usevfork=false ---- 1317,1322 ---- +--- 1344,1349 ---- *************** -*** 2340,2346 **** +*** 2366,2372 **** zip " pth=`echo $PATH | sed -e "s/$p_/ /g"` @@ -96,9 +96,9 @@ diff -rc perl-5.10.0-orig/Configure perl-5.10.0/Configure for file in $loclist; do eval xxx=\$$file case "$xxx" in ---- 2324,2329 ---- +--- 2350,2355 ---- *************** -*** 8155,8167 **** +*** 8361,8373 **** echo " " case "$sysman" in '') @@ -112,7 +112,7 @@ diff -rc perl-5.10.0-orig/Configure perl-5.10.0/Configure ;; esac if $test -d "$sysman"; then ---- 8138,8145 ---- +--- 8344,8351 ---- echo " " case "$sysman" in '') @@ -122,7 +122,7 @@ diff -rc perl-5.10.0-orig/Configure perl-5.10.0/Configure esac if $test -d "$sysman"; then *************** -*** 19005,19013 **** +*** 19476,19484 **** case "$full_ar" in '') full_ar=$ar ;; esac @@ -132,7 +132,7 @@ diff -rc perl-5.10.0-orig/Configure perl-5.10.0/Configure : see what type gids are declared as in the kernel echo " " ---- 18983,18992 ---- +--- 19454,19463 ---- case "$full_ar" in '') full_ar=$ar ;; esac @@ -143,11 +143,11 @@ diff -rc perl-5.10.0-orig/Configure perl-5.10.0/Configure : see what type gids are declared as in the kernel echo " " -diff -rc perl-5.10.0-orig/ext/Errno/Errno_pm.PL perl-5.10.0/ext/Errno/Errno_pm.PL -*** perl-5.10.0-orig/ext/Errno/Errno_pm.PL 2007-12-18 11:47:07.000000000 +0100 ---- perl-5.10.0/ext/Errno/Errno_pm.PL 2008-02-21 17:00:02.000000000 +0100 +diff -rc -x '*~' perl-5.10.1-orig/ext/Errno/Errno_pm.PL perl-5.10.1/ext/Errno/Errno_pm.PL +*** perl-5.10.1-orig/ext/Errno/Errno_pm.PL 2009-06-27 18:09:45.000000000 +0200 +--- perl-5.10.1/ext/Errno/Errno_pm.PL 2010-01-26 18:08:09.552792021 +0100 *************** -*** 140,150 **** +*** 144,154 **** if ($dep =~ /(\S+errno\.h)/) { $file{$1} = 1; } @@ -159,7 +159,7 @@ diff -rc perl-5.10.0-orig/ext/Errno/Errno_pm.PL perl-5.10.0/ext/Errno/Errno_pm.P # Some Linuxes have weird errno.hs which generate # no #file or #line directives my $linux_errno_h = -e '/usr/include/errno.h' ? ---- 140,146 ---- +--- 144,150 ---- if ($dep =~ /(\S+errno\.h)/) { $file{$1} = 1; } @@ -167,3 +167,35 @@ diff -rc perl-5.10.0-orig/ext/Errno/Errno_pm.PL perl-5.10.0/ext/Errno/Errno_pm.P # Some Linuxes have weird errno.hs which generate # no #file or #line directives my $linux_errno_h = -e '/usr/include/errno.h' ? +diff -rc -x '*~' perl-5.10.1-orig/hints/freebsd.sh perl-5.10.1/hints/freebsd.sh +*** perl-5.10.1-orig/hints/freebsd.sh 2009-02-12 23:58:12.000000000 +0100 +--- perl-5.10.1/hints/freebsd.sh 2010-01-26 18:30:01.181854620 +0100 +*************** +*** 118,130 **** + objformat=`/usr/bin/objformat` + if [ x$objformat = xaout ]; then + if [ -e /usr/lib/aout ]; then +! libpth="/usr/lib/aout /usr/local/lib /usr/lib" +! glibpth="/usr/lib/aout /usr/local/lib /usr/lib" + fi + lddlflags='-Bshareable' + else +! libpth="/usr/lib /usr/local/lib" +! glibpth="/usr/lib /usr/local/lib" + ldflags="-Wl,-E " + lddlflags="-shared " + fi +--- 118,130 ---- + objformat=`/usr/bin/objformat` + if [ x$objformat = xaout ]; then + if [ -e /usr/lib/aout ]; then +! libpth="" +! glibpth="" + fi + lddlflags='-Bshareable' + else +! libpth="" +! glibpth="" + ldflags="-Wl,-E " + lddlflags="-shared " + fi diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 82f269fd00b..49c50d409cf 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -33,6 +33,7 @@ # argument. Otherwise, it's read from $NIXPKGS_CONFIG or # ~/.nixpkgs/config.nix. config ? null + , crossSystem ? null }: @@ -2496,14 +2497,13 @@ let }; perl58 = import ../development/interpreters/perl-5.8 { - inherit fetchurl stdenv; - impureLibcPath = if stdenv.isLinux then null else "/usr"; - }; + inherit fetchurl stdenv; + impureLibcPath = if stdenv.isLinux then null else "/usr"; + }; perl510 = makeOverridable (import ../development/interpreters/perl-5.10) { inherit stdenv; fetchurl = fetchurlBoot; - impureLibcPath = if stdenv.isLinux then null else "/usr"; }; perl = useFromStdenv "perl" From 6dc132be1e0d47dae64a73a7e42f7dbcc84bb3ad Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= Date: Tue, 26 Jan 2010 19:41:04 +0000 Subject: [PATCH 210/232] bash: Fix URL. svn path=/nixpkgs/branches/stdenv-updates/; revision=19688 --- pkgs/shells/bash/default.nix | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/pkgs/shells/bash/default.nix b/pkgs/shells/bash/default.nix index cb26ce108c4..c003c4347a0 100644 --- a/pkgs/shells/bash/default.nix +++ b/pkgs/shells/bash/default.nix @@ -2,11 +2,12 @@ assert interactive -> readline != null; +let realName = "bash-4.1"; in stdenv.mkDerivation rec { - name = "bash-4.1-p2"; + name = "${realName}-p${builtins.length patches}"; src = fetchurl { - url = "mirror://gnu/bash/${name}.tar.gz"; + url = "mirror://gnu/bash/${realName}.tar.gz"; sha256 = "1np1ggp1lv8idwfx3mcxl9rhadqdf4h3x4isa3dk8v9wm0j72qiz"; }; From 6b4de5c25e204b05cbea04e515fde1cccd45af09 Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Tue, 26 Jan 2010 20:13:23 +0000 Subject: [PATCH 211/232] * None of us is paying attention today ;-) svn path=/nixpkgs/branches/stdenv-updates/; revision=19690 --- pkgs/shells/bash/default.nix | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/pkgs/shells/bash/default.nix b/pkgs/shells/bash/default.nix index c003c4347a0..0f4b610f412 100644 --- a/pkgs/shells/bash/default.nix +++ b/pkgs/shells/bash/default.nix @@ -3,8 +3,9 @@ assert interactive -> readline != null; let realName = "bash-4.1"; in + stdenv.mkDerivation rec { - name = "${realName}-p${builtins.length patches}"; + name = "${realName}-p${toString (builtins.length patches)}"; src = fetchurl { url = "mirror://gnu/bash/${realName}.tar.gz"; From 7eff18fa0363e3a0aa93474a1a456d3d3d47f634 Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Tue, 26 Jan 2010 21:40:32 +0000 Subject: [PATCH 212/232] * Fixed xscreensaver (it couldn't find the X headers/libraries anymore). svn path=/nixpkgs/branches/stdenv-updates/; revision=19694 --- .../graphics/xscreensaver/default.nix | 73 +++++++++---------- pkgs/top-level/all-packages.nix | 10 +-- 2 files changed, 36 insertions(+), 47 deletions(-) diff --git a/pkgs/applications/graphics/xscreensaver/default.nix b/pkgs/applications/graphics/xscreensaver/default.nix index 2701892aa4a..7dfe31f8957 100644 --- a/pkgs/applications/graphics/xscreensaver/default.nix +++ b/pkgs/applications/graphics/xscreensaver/default.nix @@ -1,41 +1,36 @@ -args : with args; let localDefs = builderDefs.passthru.function (args // rec { - version = lib.attrByPath ["version"] "5.10" args; - src = /* put a fetchurl here */ - fetchurl { - url = "http://www.jwz.org/xscreensaver/xscreensaver-${version}.tar.gz"; - sha256 = "07zy157wqwgcapqycyv89yabxa8byk4p8jn3zlvhf7lx5w1xmval"; - }; - useConfig = true; - reqsList = [ - ["true" "libX11" "pkgconfig" "bc" "perl" "intltool" "libXmu"] - ["GL" "mesa"] - ["GUI" "gtk" "libxml2" "libglade"] - ["jpeg" "libjpeg"] - ["false"] - ]; - configFlags = [ - "GL" " --with-gl " - "gdkpixbuf" " --with-pixbuf " - "DPMS" " --with-dpms " - "true" (" --with-x-app-defaults=\$out/share/xscreensaver/app-defaults "+ - " --with-hackdir=\$out/share/xscreensaver-hacks ") - ]; - }); - in with localDefs; -let - preConfigure = fullDepEntry (" - sed -e 's%@GTK_DATADIR@%@datadir@% ; s%@PO_DATADIR@%@datadir@%' "+ - "-i driver/Makefile.in po/Makefile.in.in; - ") ["minInit" "doUnpack"]; -in +{ stdenv, fetchurl, pkgconfig, bc, perl, xlibs, libjpeg, mesa, gtk +, libxml2, libglade }: + stdenv.mkDerivation rec { - name = "xscreensaver-5.10"; - buildCommand = textClosure localDefs - [preConfigure doConfigure doMakeInstall doForceShare doPropagate]; - meta = { - description = "A set of screensavers"; - inherit src; - maintainers = [stdenv.lib.maintainers.raskin]; - platforms = stdenv.lib.platforms.allBut "i686-cygwin"; - }; + name = "xscreensaver-5.10"; + + src = fetchurl { + url = "http://www.jwz.org/xscreensaver/${name}.tar.gz"; + sha256 = "07zy157wqwgcapqycyv89yabxa8byk4p8jn3zlvhf7lx5w1xmval"; + }; + + buildInputs = + [ pkgconfig bc perl libjpeg mesa gtk libxml2 libglade + xlibs.xlibs xlibs.libXmu + ]; + + configureFlags = + [ "--with-gl" + "--with-dpms" + "--with-pixbuf" + "--with-x-app-defaults=\$out/share/xscreensaver/app-defaults" + "--with-hackdir=\$out/share/xscreensaver-hacks" + ]; + + preConfigure = + '' + sed -e 's%@GTK_DATADIR@%@datadir@% ; s%@PO_DATADIR@%@datadir@%' \ + -i driver/Makefile.in po/Makefile.in.in + ''; + + meta = { + description = "A set of screensavers"; + maintainers = [ stdenv.lib.maintainers.raskin ]; + platforms = stdenv.lib.platforms.allBut "i686-cygwin"; + }; } diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 49c50d409cf..7ff135b2c9c 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -8189,14 +8189,8 @@ let pyrex = pyrex095; }; - xscreensaverBase = composedArgsAndFun (import ../applications/graphics/xscreensaver) { - inherit stdenv fetchurl builderDefs lib pkgconfig bc perl intltool; - inherit (xlibs) libX11 libXmu; - }; - - xscreensaver = xscreensaverBase.passthru.function { - flags = ["GL" "gdkpixbuf" "DPMS" "gui" "jpeg"]; - inherit mesa libxml2 libjpeg; + xscreensaver = makeOverridable (import ../applications/graphics/xscreensaver) { + inherit stdenv fetchurl pkgconfig bc perl xlibs libjpeg mesa libxml2; inherit (gtkLibs) gtk; inherit (gnome) libglade; }; From 116443e839e7ca18f39e82273452f5ca6ec3fac2 Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Tue, 26 Jan 2010 22:42:43 +0000 Subject: [PATCH 213/232] * Don't call grep from ld-wrapper (especially not O(n^2) times) because it makes linking very slow. Use bash's =~ operator instead (and only once for each argument). We depend on bash already anyway because of arrays so it's not a problem. svn path=/nixpkgs/branches/stdenv-updates/; revision=19699 --- pkgs/build-support/gcc-wrapper/ld-wrapper.sh | 53 +++++++++----------- 1 file changed, 25 insertions(+), 28 deletions(-) diff --git a/pkgs/build-support/gcc-wrapper/ld-wrapper.sh b/pkgs/build-support/gcc-wrapper/ld-wrapper.sh index bf3c2620f29..3ca9e815a8f 100644 --- a/pkgs/build-support/gcc-wrapper/ld-wrapper.sh +++ b/pkgs/build-support/gcc-wrapper/ld-wrapper.sh @@ -53,8 +53,6 @@ fi # Add all used dynamic libraries to the rpath. if test "$NIX_DONT_SET_RPATH" != "1"; then - # First, find all -L... switches. - allParams=("${params[@]}" ${extra[@]}) libPath="" addToLibPath() { local path="$1" @@ -72,26 +70,6 @@ if test "$NIX_DONT_SET_RPATH" != "1"; then esac libPath="$libPath $path " } - n=0 - while test $n -lt ${#allParams[*]}; do - p=${allParams[n]} - p2=${allParams[$((n+1))]} - if test "${p:0:3}" = "-L/"; then - addToLibPath ${p:2} - elif test "$p" = "-L"; then - addToLibPath ${p2} - n=$((n + 1)) - elif $(echo "$p" | grep -q '^[^-].*\.so\($\|\.\)'); then - path="$(dirname "$p")"; - addToLibPath "${path}" - fi - n=$((n + 1)) - done - - # Second, for each directory in the library search path (-L...), - # see if it contains a dynamic library used by a -l... flag. If - # so, add the directory to the rpath. - rpath="" addToRPath() { # If the path is not in the store, don't add it to the rpath. @@ -104,6 +82,31 @@ if test "$NIX_DONT_SET_RPATH" != "1"; then rpath="$rpath $1 " } + # First, find all -L... switches. + allParams=("${params[@]}" ${extra[@]}) + n=0 + while test $n -lt ${#allParams[*]}; do + p=${allParams[n]} + p2=${allParams[$((n+1))]} + if test "${p:0:3}" = "-L/"; then + addToLibPath ${p:2} + elif test "$p" = "-L"; then + addToLibPath ${p2} + n=$((n + 1)) + elif [[ "$p" =~ ^[^-].*\.so($|\.) ]]; then + # This is a direct reference to a shared library, so add + # its directory to the rpath. + path="$(dirname "$p")"; + addToRPath "${path}" + fi + n=$((n + 1)) + done + + # Second, for each directory in the library search path (-L...), + # see if it contains a dynamic library used by a -l... flag. If + # so, add the directory to the rpath. + rpath="" + for i in $libPath; do n=0 while test $n -lt ${#allParams[*]}; do @@ -116,12 +119,6 @@ if test "$NIX_DONT_SET_RPATH" != "1"; then # I haven't seen `-l foo', but you never know... addToRPath $i break - elif $(echo "$p" | grep -q '^[^-].*\.so\($\|\.\)'); then - path="$(dirname "$p")"; - if test "$path" == "$i"; then - addToRPath $i - break; - fi fi n=$((n + 1)) done From c85ae25a34a24ce06d053b6524e3aad66dec67f4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Llu=C3=ADs=20Batlle=20i=20Rossell?= Date: Wed, 27 Jan 2010 08:30:56 +0000 Subject: [PATCH 214/232] Adapting the gcc-ada patch for gcc-4.4.3. svn path=/nixpkgs/branches/stdenv-updates/; revision=19701 --- pkgs/development/compilers/gcc-4.4/gnat-cflags.patch | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pkgs/development/compilers/gcc-4.4/gnat-cflags.patch b/pkgs/development/compilers/gcc-4.4/gnat-cflags.patch index 8e7c40778fc..a1bcc98627e 100644 --- a/pkgs/development/compilers/gcc-4.4/gnat-cflags.patch +++ b/pkgs/development/compilers/gcc-4.4/gnat-cflags.patch @@ -19,9 +19,9 @@ index f5057a0..337e0c6 100644 GNATLIBFLAGS = -gnatpg -nostdinc -GNATLIBCFLAGS = -g -O2 +GNATLIBCFLAGS = -g -O2 $(CFLAGS_FOR_TARGET) - GNATLIBCFLAGS_FOR_C = $(GNATLIBCFLAGS) $(TARGET_LIBGCC2_CFLAGS) -fexceptions \ - -DIN_RTS - ALL_ADAFLAGS = $(CFLAGS) $(ADA_CFLAGS) $(ADAFLAGS) + # Pretend that _Unwind_GetIPInfo is available for the target by default. This + # should be autodetected during the configuration of libada and passed down to + # here, but we need something for --disable-libada and hope for the best. @@ -1838,7 +1838,7 @@ ADA_INCLUDE_SRCS =\ LIBGNAT=../$(RTSDIR)/libgnat.a From b2fed75484a5e161932cb87dfd8df57bc05447f9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Llu=C3=ADs=20Batlle=20i=20Rossell?= Date: Wed, 27 Jan 2010 13:43:23 +0000 Subject: [PATCH 215/232] 2nd attempt at fixing the gnat44 build svn path=/nixpkgs/branches/stdenv-updates/; revision=19709 --- pkgs/development/compilers/gcc-4.4/gnat-cflags.patch | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/development/compilers/gcc-4.4/gnat-cflags.patch b/pkgs/development/compilers/gcc-4.4/gnat-cflags.patch index a1bcc98627e..e85e5076be6 100644 --- a/pkgs/development/compilers/gcc-4.4/gnat-cflags.patch +++ b/pkgs/development/compilers/gcc-4.4/gnat-cflags.patch @@ -8,9 +8,9 @@ index f5057a0..337e0c6 100644 TARGET_LIBGCC2_CFLAGS= -GNATLIBCFLAGS= -g -O2 +GNATLIBCFLAGS= -g -O2 $(CFLAGS) + GNATLIBCFLAGS_FOR_C = $(GNATLIBCFLAGS) $(TARGET_LIBGCC2_CFLAGS) -fexceptions \ + -DIN_RTS @have_getipinfo@ - # Get target-specific overrides for TARGET_LIBGCC2_CFLAGS. - host_subdir = @host_subdir@ --- a/gcc/ada/gcc-interface/Makefile.in +++ b/gcc/ada/gcc-interface/Makefile.in @@ -105,7 +105,7 @@ ADAFLAGS = -W -Wall -gnatpg -gnata From 9f992232194adea70e58e7c4620c42c1c329a23e Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Wed, 27 Jan 2010 14:35:38 +0000 Subject: [PATCH 216/232] * Removed splashutils 1.3 (obsolete). svn path=/nixpkgs/branches/stdenv-updates/; revision=19710 --- pkgs/os-specific/linux/splashutils/1.3.nix | 42 ------------ .../splashutils/{1.5.nix => default.nix} | 0 .../os-specific/linux/splashutils/fdset.patch | 20 ------ .../linux/splashutils/no-fbsplash.patch | 67 ------------------- .../linux/splashutils/purity.patch | 38 ----------- pkgs/top-level/all-packages.nix | 13 +--- 6 files changed, 2 insertions(+), 178 deletions(-) delete mode 100644 pkgs/os-specific/linux/splashutils/1.3.nix rename pkgs/os-specific/linux/splashutils/{1.5.nix => default.nix} (100%) delete mode 100644 pkgs/os-specific/linux/splashutils/fdset.patch delete mode 100644 pkgs/os-specific/linux/splashutils/no-fbsplash.patch delete mode 100644 pkgs/os-specific/linux/splashutils/purity.patch diff --git a/pkgs/os-specific/linux/splashutils/1.3.nix b/pkgs/os-specific/linux/splashutils/1.3.nix deleted file mode 100644 index 51c53dd2a79..00000000000 --- a/pkgs/os-specific/linux/splashutils/1.3.nix +++ /dev/null @@ -1,42 +0,0 @@ -{stdenv, fetchurl, klibc, zlib, libjpeg}: - -stdenv.mkDerivation { - name = "splashutils-1.3"; - - src = fetchurl { - url = http://dev.gentoo.org/~spock/projects/splashutils/archive/splashutils-1.3.tar.bz2; - md5 = "c7c92b98e34b860511aa57bd29d62f76"; - }; - - patches = [ - ./purity.patch - ./no-fbsplash.patch - # Borrowed from http://sources.gentoo.org/viewcvs.py/*checkout*/gentoo-x86/media-gfx/splashutils/files/splashutils-1.3-fdset.patch?rev=1.1. - ./fdset.patch - ]; - - buildInputs = [klibc zlib libjpeg]; - - inherit klibc; - - dontAddPrefix = 1; - configureScript = "sh ./configure"; - configureFlags = "--without-ttf --without-png --with-fifo=/var/run/splash_fifo"; - - # QUIET = false doesn't work due to the use of /dev/stdout (which - # doesn't work when the build user doesn't own stdout). - #makeFlags = "QUIET=false; - - installPhase = '' - ensureDir $out/bin - cp objs/splash_util objs/splash_util.static $out/bin - ensureDir $out/sbin - cp objs/splash_helper $out/sbin - ''; - - passthru = { - helperName = "sbin/splash_helper"; - controlName = "bin/splash_util"; - helperProcFile = "/proc/sys/kernel/fbsplash"; - }; -} diff --git a/pkgs/os-specific/linux/splashutils/1.5.nix b/pkgs/os-specific/linux/splashutils/default.nix similarity index 100% rename from pkgs/os-specific/linux/splashutils/1.5.nix rename to pkgs/os-specific/linux/splashutils/default.nix diff --git a/pkgs/os-specific/linux/splashutils/fdset.patch b/pkgs/os-specific/linux/splashutils/fdset.patch deleted file mode 100644 index 44c61339c45..00000000000 --- a/pkgs/os-specific/linux/splashutils/fdset.patch +++ /dev/null @@ -1,20 +0,0 @@ -diff --git a/core/render.c b/core/render.c -index 290ea97..47319a8 100644 ---- a/render.c -+++ b/render.c -@@ -9,8 +9,15 @@ - * - */ - -+/* -+ * HACK WARNING: -+ * This is necessary to get FD_SET and FD_ZERO on platforms other than x86. -+ */ -+ - #ifdef TARGET_KERNEL -+#define __KERNEL__ - #include -+#undef __KERNEL__ - #endif - - #include diff --git a/pkgs/os-specific/linux/splashutils/no-fbsplash.patch b/pkgs/os-specific/linux/splashutils/no-fbsplash.patch deleted file mode 100644 index f83275ea84a..00000000000 --- a/pkgs/os-specific/linux/splashutils/no-fbsplash.patch +++ /dev/null @@ -1,67 +0,0 @@ -diff -rc splashutils-1.3-orig/splash.h splashutils-1.3/splash.h -*** splashutils-1.3-orig/splash.h 2006-07-15 00:02:23.000000000 +0200 ---- splashutils-1.3/splash.h 2009-01-29 16:41:00.000000000 +0100 -*************** -*** 21,40 **** - */ - #ifdef TARGET_KERNEL - #include -- #include - #else - #include -- #include - #endif - - /* - * Necessary to avoid compilation errors when fbsplash support is - * disabled. - */ -- #if !defined(CONFIG_FBSPLASH) - #define FB_SPLASH_IO_ORIG_USER 0 - #define FB_SPLASH_IO_ORIG_KERNEL 1 -! #endif - - /* - * Adjustable settings ---- 21,60 ---- - */ - #ifdef TARGET_KERNEL - #include - #else - #include - #endif - - /* - * Necessary to avoid compilation errors when fbsplash support is - * disabled. - */ - #define FB_SPLASH_IO_ORIG_USER 0 - #define FB_SPLASH_IO_ORIG_KERNEL 1 -! -! #define FBIOSPLASH_SETCFG _IOWR('F', 0x19, struct fb_splash_iowrapper) -! #define FBIOSPLASH_GETCFG _IOR('F', 0x1A, struct fb_splash_iowrapper) -! #define FBIOSPLASH_SETSTATE _IOWR('F', 0x1B, struct fb_splash_iowrapper) -! #define FBIOSPLASH_GETSTATE _IOR('F', 0x1C, struct fb_splash_iowrapper) -! #define FBIOSPLASH_SETPIC _IOWR('F', 0x1D, struct fb_splash_iowrapper) -! -! #define FB_SPLASH_THEME_LEN 128 /* Maximum lenght of a theme name */ -! -! struct fb_splash_iowrapper -! { -! unsigned short vc; /* Virtual console */ -! unsigned char origin; /* Point of origin of the request */ -! void *data; -! }; -! -! /* A structure used by the framebuffer splash code (drivers/video/fbsplash.c) */ -! struct vc_splash { -! __u8 bg_color; /* The color that is to be treated as transparent */ -! __u8 state; /* Current splash state: 0 = off, 1 = on */ -! __u16 tx, ty; /* Top left corner coordinates of the text field */ -! __u16 twidth, theight; /* Width and height of the text field */ -! char* theme; -! }; - - /* - * Adjustable settings -Only in splashutils-1.3/: splash.h~ diff --git a/pkgs/os-specific/linux/splashutils/purity.patch b/pkgs/os-specific/linux/splashutils/purity.patch deleted file mode 100644 index 45cbafb7161..00000000000 --- a/pkgs/os-specific/linux/splashutils/purity.patch +++ /dev/null @@ -1,38 +0,0 @@ -diff -rc splashutils-1.3-orig/Makefile splashutils-1.3/Makefile -*** splashutils-1.3-orig/Makefile 2006-07-15 00:02:22.000000000 +0200 ---- splashutils-1.3/Makefile 2006-11-26 00:25:48.000000000 +0100 -*************** -*** 28,34 **** - usrbindir = ${prefix}/usr/bin - mandir = ${prefix}/usr/share/man - -! INSTALL = /usr/bin/install -c - INSTALL_PROG = ${INSTALL} - INSTALL_DATA = ${INSTALL} -m 644 - INSTALL_SCRIPT = ${INSTALL_PROG} ---- 28,34 ---- - usrbindir = ${prefix}/usr/bin - mandir = ${prefix}/usr/share/man - -! INSTALL = install -c - INSTALL_PROG = ${INSTALL} - INSTALL_DATA = ${INSTALL} -m 644 - INSTALL_SCRIPT = ${INSTALL_PROG} -*************** -*** 71,77 **** - - # Include the klibc header files so that we can compile against fb.h - # from a kernel thee patched with fbsplash. -! INCLUDES = -I/usr/include/freetype2 -idirafter /usr/lib/klibc/include/linux - OBJS = $(OBJDIR)/splash.o $(OBJDIR)/parse.o $(OBJDIR)/render.o $(OBJDIR)/image.o \ - $(OBJDIR)/cmd.o $(OBJDIR)/common.o $(OBJDIR)/daemon.o $(OBJDIR)/daemon_cmd.o \ - $(OBJDIR)/list.o $(OBJDIR)/effects.o ---- 71,77 ---- - - # Include the klibc header files so that we can compile against fb.h - # from a kernel thee patched with fbsplash. -! INCLUDES = -I${freetype}/include/freetype2 -idirafter ${klibc}/lib/klibc/include/linux - OBJS = $(OBJDIR)/splash.o $(OBJDIR)/parse.o $(OBJDIR)/render.o $(OBJDIR)/image.o \ - $(OBJDIR)/cmd.o $(OBJDIR)/common.o $(OBJDIR)/daemon.o $(OBJDIR)/daemon_cmd.o \ - $(OBJDIR)/list.o $(OBJDIR)/effects.o -Only in splashutils-1.3/: Makefile~ diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 7ff135b2c9c..c965d60a203 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -5896,10 +5896,7 @@ let }; splashutils = - # Splashutils 1.3 is broken, so disable splash on older kernels. - if kernel.features ? fbSplash then /* splashutils_13 */ null else - if kernel.features ? fbConDecor then splashutils_15 else - null; + if kernel.features ? fbConDecor then pkgs.splashutils else null; ext3cowtools = import ../os-specific/linux/ext3cow-tools { inherit stdenv fetchurl; @@ -6183,13 +6180,7 @@ let inherit fetchurl stdenv; }; - splashutils_13 = import ../os-specific/linux/splashutils/1.3.nix { - inherit fetchurl stdenv klibc; - zlib = zlibStatic; - libjpeg = libjpegStatic; - }; - - splashutils_15 = import ../os-specific/linux/splashutils/1.5.nix { + splashutils = import ../os-specific/linux/splashutils/default.nix { inherit fetchurl stdenv klibc; zlib = zlibStatic; libjpeg = libjpegStatic; From e9ff6517b962f852bae06932ae176ed56ec00c00 Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Wed, 27 Jan 2010 14:35:56 +0000 Subject: [PATCH 217/232] svn path=/nixpkgs/branches/stdenv-updates/; revision=19711 --- pkgs/top-level/release.nix | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/pkgs/top-level/release.nix b/pkgs/top-level/release.nix index 806415ac70a..e866bba9e87 100644 --- a/pkgs/top-level/release.nix +++ b/pkgs/top-level/release.nix @@ -377,8 +377,7 @@ in { smbfsFuse = linux; socat = linux; spidermonkey = linux; - splashutils_13 = linux; - splashutils_15 = linux; + splashutils = linux; sqlite = allBut "i686-cygwin"; squid = linux; ssmtp = linux; From e04beb262ee13b6639fb86594ca22acf3d98c95e Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Wed, 27 Jan 2010 15:43:27 +0000 Subject: [PATCH 218/232] * Strangely, running "make defconfig" before the generator causes "make config" to print an additional question that the script doesn't know how to answer ("Audio Excel DSP 16 [N/y] (NEW) ###"). Just ignore it. svn path=/nixpkgs/branches/stdenv-updates/; revision=19713 --- pkgs/os-specific/linux/kernel/builder.sh | 4 +++- pkgs/os-specific/linux/kernel/generate-config.pl | 3 ++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/pkgs/os-specific/linux/kernel/builder.sh b/pkgs/os-specific/linux/kernel/builder.sh index f756c140c49..a67877c9fd6 100644 --- a/pkgs/os-specific/linux/kernel/builder.sh +++ b/pkgs/os-specific/linux/kernel/builder.sh @@ -24,7 +24,7 @@ configurePhase() { # generate-config.pl can answer them. sed -e '/fflush(stdout);/i\printf("###");' -i scripts/kconfig/conf.c - # Get a basic config file for later refinement with $generateConfig + # Get a basic config file for later refinement with $generateConfig. make $kernelBaseConfig ARCH=$arch # Create the config file. @@ -33,12 +33,14 @@ configurePhase() { DEBUG=1 ARCH=$arch KERNEL_CONFIG=kernel-config perl -w $generateConfig } + postBuild() { if [ "$platformName" == "sheevaplug" ]; then make uImage fi } + installPhase() { ensureDir $out diff --git a/pkgs/os-specific/linux/kernel/generate-config.pl b/pkgs/os-specific/linux/kernel/generate-config.pl index be5118672e3..e8f7e6555d3 100644 --- a/pkgs/os-specific/linux/kernel/generate-config.pl +++ b/pkgs/os-specific/linux/kernel/generate-config.pl @@ -94,7 +94,8 @@ sub runConfig { } else { - die "don't know how to answer this question: $line\n"; + warn "don't know how to answer this question: $line\n"; + print OUT "\n"; } $line = ""; From 64f0d7431914b55b2fcf29a9301b886f33560f6b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Llu=C3=ADs=20Batlle=20i=20Rossell?= Date: Wed, 27 Jan 2010 16:29:11 +0000 Subject: [PATCH 219/232] Fixing the gcc/gcc-wrapper so 'ghdl' gets the proper wrapper (langVhdl = true, from gcc). svn path=/nixpkgs/branches/stdenv-updates/; revision=19714 --- pkgs/build-support/gcc-wrapper/default.nix | 6 +++--- pkgs/development/compilers/gcc-4.3/default.nix | 3 ++- pkgs/development/compilers/gcc-4.4/default.nix | 3 ++- 3 files changed, 7 insertions(+), 5 deletions(-) diff --git a/pkgs/build-support/gcc-wrapper/default.nix b/pkgs/build-support/gcc-wrapper/default.nix index 87557bb4779..c97fd4eb495 100644 --- a/pkgs/build-support/gcc-wrapper/default.nix +++ b/pkgs/build-support/gcc-wrapper/default.nix @@ -15,7 +15,7 @@ assert !nativeTools -> gcc != null && binutils != null && coreutils != null; assert !nativeLibc -> libc != null; # For ghdl (the vhdl language provider to gcc) we need zlib in the wrapper -assert (gcc != null && gcc ? langVhdl) -> zlib != null; +assert (gcc != null && gcc ? langVhdl && gcc.langVhdl) -> zlib != null; let @@ -47,8 +47,8 @@ stdenv.mkDerivation { langC = if nativeTools then true else gcc.langC; langCC = if nativeTools then true else gcc.langCC; langFortran = if nativeTools then false else gcc ? langFortran; - langAda = if nativeTools then false else gcc ? langAda; - langVhdl = if nativeTools then false else gcc ? langVhdl; + langAda = if nativeTools then false else gcc ? langAda && gcc.langAda; + langVhdl = if nativeTools then false else gcc ? langVhdl && gcc.langVhdl; zlib = if (gcc != null && gcc ? langVhdl) then zlib else null; shell = if shell == "" then stdenv.shell else shell; diff --git a/pkgs/development/compilers/gcc-4.3/default.nix b/pkgs/development/compilers/gcc-4.3/default.nix index ca3577cab05..73caa156bd0 100644 --- a/pkgs/development/compilers/gcc-4.3/default.nix +++ b/pkgs/development/compilers/gcc-4.3/default.nix @@ -124,7 +124,8 @@ stdenv.mkDerivation ({ inherit gmp mpfr; - passthru = { inherit langC langCC langFortran langTreelang enableMultilib; }; + passthru = { inherit langC langCC langFortran langVhdl langTreelang + enableMultilib; }; meta = { homepage = "http://gcc.gnu.org/"; diff --git a/pkgs/development/compilers/gcc-4.4/default.nix b/pkgs/development/compilers/gcc-4.4/default.nix index 36b4440cb27..86ac3c189c6 100644 --- a/pkgs/development/compilers/gcc-4.4/default.nix +++ b/pkgs/development/compilers/gcc-4.4/default.nix @@ -184,7 +184,8 @@ stdenv.mkDerivation ({ ++ optionals javaAwtGtk [ gmp mpfr ]))); - passthru = { inherit langC langCC langAda langFortran langTreelang enableMultilib; }; + passthru = { inherit langC langCC langAda langFortran langTreelang langVhdl + enableMultilib; }; meta = { homepage = http://gcc.gnu.org/; From 2dfeeb47bb8581fa166c9db3d054470e63390f3a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Llu=C3=ADs=20Batlle=20i=20Rossell?= Date: Fri, 29 Jan 2010 21:30:09 +0000 Subject: [PATCH 220/232] Making kbd build in armv5tel-linux. gcc 4.4.3 issues a warning with it, and kbd was compiled with -Werror. I switch off -Werror in armv5tel-linux. svn path=/nixpkgs/branches/stdenv-updates/; revision=19735 --- pkgs/os-specific/linux/kbd/default.nix | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/pkgs/os-specific/linux/kbd/default.nix b/pkgs/os-specific/linux/kbd/default.nix index 39d14b569f2..77d53adeb81 100644 --- a/pkgs/os-specific/linux/kbd/default.nix +++ b/pkgs/os-specific/linux/kbd/default.nix @@ -10,6 +10,11 @@ stdenv.mkDerivation rec { buildInputs = [ bison flex autoconf automake ]; + # We get a warning in armv5tel-linux, so we disable -Werror in it + patchPhase = if (stdenv.system == "armv5tel-linux") then '' + sed -i s/-Werror// src/Makefile.am + '' else ""; + # Grrr, kbd 1.15.1 doesn't include a configure script. preConfigure = "autoreconf"; From 822db4b9a98b6b01dd35b513b651c811bc516402 Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Mon, 1 Feb 2010 09:32:40 +0000 Subject: [PATCH 221/232] * Glibc updated to 2.11.1. Also cleaned up the expression a bit (don't use args. for instance). svn path=/nixpkgs/branches/stdenv-updates/; revision=19745 --- .../libraries/glibc-2.11/common.nix | 80 ++++++++----------- 1 file changed, 34 insertions(+), 46 deletions(-) diff --git a/pkgs/development/libraries/glibc-2.11/common.nix b/pkgs/development/libraries/glibc-2.11/common.nix index 5e0533664c2..2fd3fbcbab9 100644 --- a/pkgs/development/libraries/glibc-2.11/common.nix +++ b/pkgs/development/libraries/glibc-2.11/common.nix @@ -1,12 +1,15 @@ /* Build configuration used to build glibc, Info files, and locale information. */ -cross : { name, fetchurl, stdenv, installLocales ? false -, gccCross ? null, kernelHeaders ? null -, profilingLibraries ? false, meta, ... }@args : +cross : + +{ name, fetchurl, stdenv, installLocales ? false +, gccCross ? null, kernelHeaders ? null +, profilingLibraries ? false, meta +, preConfigure ? "", ... }@args : + +let version = "2.11.1"; in -let version = "2.11"; -in assert (cross != null) -> (gccCross != null); stdenv.mkDerivation ({ @@ -80,38 +83,28 @@ stdenv.mkDerivation ({ # prevent a retained dependency on the bootstrap tools in the stdenv-linux # bootstrap. BASH_SHELL = "/bin/sh"; + + # Workaround for this bug: + # http://sourceware.org/bugzilla/show_bug.cgi?id=411 + # I.e. when gcc is compiled with --with-arch=i686, then the + # preprocessor symbol `__i686' will be defined to `1'. This causes + # the symbol __i686.get_pc_thunk.dx to be mangled. + NIX_CFLAGS_COMPILE = stdenv.lib.optionalString (stdenv.system == "i686-linux") "-U__i686"; } -// - -(if (stdenv.system == "i686-linux") - then { - # Workaround for this bug: - # http://sourceware.org/bugzilla/show_bug.cgi?id=411 - # I.e. when gcc is compiled with --with-arch=i686, then the - # preprocessor symbol `__i686' will be defined to `1'. This causes - # the symbol __i686.get_pc_thunk.dx to be mangled. - NIX_CFLAGS_COMPILE = "-U__i686"; - } - else {}) - - // - - args - - // +// args // { - name = args.name + "-${version}" + + name = name + "-${version}" + stdenv.lib.optionalString (cross != null) "-${cross.config}"; src = fetchurl { url = "mirror://gnu/glibc/glibc-${version}.tar.bz2"; - sha256 = "0b6nbr89qmqcvzz26ggnw7gcxhvnzbc8z299h12wqjmcix4hxwcy"; + sha256 = "18azb6518ryqhkfmddr25p0h1s2msrmx7dblij58sjlnzh61vq34"; }; srcPorts = fetchurl { - url = "mirror://gnu/glibc/glibc-ports-${version}.tar.bz2"; + url = "mirror://gnu/glibc/glibc-ports-2.11.tar.bz2"; sha256 = "12b53f5k4gcr8rr1kg2ycf2701rygqsyf9r8gz4j3l9flaqi5liq"; }; @@ -135,30 +128,25 @@ stdenv.mkDerivation ({ configureScript="../$sourceRoot/configure" - ${if args ? preConfigure - then args.preConfigure - else ""} + ${preConfigure} ''; - meta = ({ - homepage = http://www.gnu.org/software/libc/; - description = "The GNU C Library"; + meta = { + homepage = http://www.gnu.org/software/libc/; + description = "The GNU C Library"; - longDescription = - '' Any Unix-like operating system needs a C library: the library which - defines the "system calls" and other basic facilities such as - open, malloc, printf, exit... + longDescription = + '' Any Unix-like operating system needs a C library: the library which + defines the "system calls" and other basic facilities such as + open, malloc, printf, exit... - The GNU C library is used as the C library in the GNU system and - most systems with the Linux kernel. - ''; + The GNU C library is used as the C library in the GNU system and + most systems with the Linux kernel. + ''; - license = "LGPLv2+"; + license = "LGPLv2+"; - maintainers = [ stdenv.lib.maintainers.ludo ]; - platforms = stdenv.lib.platforms.linux; - } - // - args.meta - ); + maintainers = [ stdenv.lib.maintainers.ludo ]; + platforms = stdenv.lib.platforms.linux; + } // meta; }) From b6943f0056f7b1386172ba3d4b4b6a4854a1c4fc Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Wed, 3 Feb 2010 12:24:03 +0000 Subject: [PATCH 222/232] * Clean up the Lynx expression a bit. svn path=/nixpkgs/branches/stdenv-updates/; revision=19775 --- pkgs/applications/networking/browsers/lynx/default.nix | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/pkgs/applications/networking/browsers/lynx/default.nix b/pkgs/applications/networking/browsers/lynx/default.nix index ccdda94a85f..c9da94258c8 100644 --- a/pkgs/applications/networking/browsers/lynx/default.nix +++ b/pkgs/applications/networking/browsers/lynx/default.nix @@ -6,14 +6,18 @@ assert sslSupport -> openssl != null; stdenv.mkDerivation { name = "lynx-2.8.7"; + src = fetchurl { url = http://lynx.isc.org/lynx2.8.7/lynx2.8.7.tar.bz2; sha256 = "1baxwpdvak6nalr943g22z67r1d3fbibbkqvkvvar9xlvrs9gv20"; }; - configureFlags = (if sslSupport then "--with-ssl" else ""); - buildInputs = [ncurses (if sslSupport then openssl else null)]; + + configureFlags = if sslSupport then "--with-ssl" else ""; + + buildInputs = [ ncurses ] ++ stdenv.lib.optional sslSupport openssl; meta = { + homepage = http://lynx.isc.org/; description = "A text-mode web browser"; }; } From 3687f56e7ac75e4f527802d88cc64bbba47acd61 Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Wed, 3 Feb 2010 12:56:57 +0000 Subject: [PATCH 223/232] * Drop the rhpl dependency in kdeadmin and kdeutils because it doesn't build. svn path=/nixpkgs/branches/stdenv-updates/; revision=19779 --- pkgs/desktops/kde-4.3/admin/default.nix | 11 +++++++++-- pkgs/desktops/kde-4.3/default.nix | 4 ++-- pkgs/desktops/kde-4.3/utils/default.nix | 11 +++++++++-- pkgs/development/python-modules/rhpl/default.nix | 4 ++++ 4 files changed, 24 insertions(+), 6 deletions(-) diff --git a/pkgs/desktops/kde-4.3/admin/default.nix b/pkgs/desktops/kde-4.3/admin/default.nix index 71282a23721..5dd8d30bb21 100644 --- a/pkgs/desktops/kde-4.3/admin/default.nix +++ b/pkgs/desktops/kde-4.3/admin/default.nix @@ -1,19 +1,26 @@ { stdenv, fetchurl, lib, cmake, qt4, pkgconfig, perl, python -, sip, pyqt4, pycups, system_config_printer, rhpl +, sip, pyqt4, pycups, system_config_printer , kdelibs, kdepimlibs, kdebindings, automoc4, phonon}: stdenv.mkDerivation { name = "kdeadmin-4.3.4"; + src = fetchurl { url = mirror://kde/stable/4.3.4/src/kdeadmin-4.3.4.tar.bz2; sha1 = "8f61aeb2ff9d51712d72cd77dad837c8902b6a5d"; }; + builder = ./builder.sh; + inherit system_config_printer; + includeAllQtDirs=true; + CMAKE_PREFIX_PATH=kdepimlibs; - buildInputs = [ cmake qt4 pkgconfig perl python sip pyqt4 pycups system_config_printer rhpl + + buildInputs = [ cmake qt4 pkgconfig perl python sip pyqt4 pycups system_config_printer kdelibs kdepimlibs kdebindings automoc4 phonon ]; + meta = { description = "KDE Administration Utilities"; license = "GPL"; diff --git a/pkgs/desktops/kde-4.3/default.nix b/pkgs/desktops/kde-4.3/default.nix index 48ba9fc65a3..9fa61fa4881 100644 --- a/pkgs/desktops/kde-4.3/default.nix +++ b/pkgs/desktops/kde-4.3/default.nix @@ -102,7 +102,7 @@ pkgs.recurseIntoAttrs (rec { }; kdeadmin = import ./admin { - inherit (pkgs) stdenv fetchurl lib cmake qt4 pkgconfig perl python sip pyqt4 pycups system_config_printer rhpl; + inherit (pkgs) stdenv fetchurl lib cmake qt4 pkgconfig perl python sip pyqt4 pycups system_config_printer; inherit kdelibs kdepimlibs kdebindings; inherit automoc4 phonon; }; @@ -185,7 +185,7 @@ pkgs.recurseIntoAttrs (rec { }; kdeutils = import ./utils { - inherit (pkgs) stdenv fetchurl lib cmake qt4 perl python gmp libzip libarchive xz sip pyqt4 pycups system_config_printer rhpl; + inherit (pkgs) stdenv fetchurl lib cmake qt4 perl python gmp libzip libarchive xz sip pyqt4 pycups system_config_printer; inherit kdelibs kdelibs_experimental kdepimlibs kdebase kdebindings; inherit automoc4 phonon qimageblitz qca2; }; diff --git a/pkgs/desktops/kde-4.3/utils/default.nix b/pkgs/desktops/kde-4.3/utils/default.nix index 005a3e3cdba..ced47d57b4a 100644 --- a/pkgs/desktops/kde-4.3/utils/default.nix +++ b/pkgs/desktops/kde-4.3/utils/default.nix @@ -1,19 +1,26 @@ { stdenv, fetchurl, lib, cmake, qt4, perl, gmp, python, libzip, libarchive, xz -, sip, pyqt4, pycups, system_config_printer, rhpl +, sip, pyqt4, pycups, system_config_printer , kdelibs, kdelibs_experimental, kdepimlibs, kdebase, kdebindings, automoc4, phonon, qimageblitz, qca2}: stdenv.mkDerivation { name = "kdeutils-4.3.4"; + src = fetchurl { url = mirror://kde/stable/4.3.4/src/kdeutils-4.3.4.tar.bz2; sha1 = "2d5e26055e364af2df7459cdbc3aebdc3a8abdea"; }; + builder = ./builder.sh; + inherit system_config_printer; + includeAllQtDirs=true; + CMAKE_PREFIX_PATH=kdepimlibs; - buildInputs = [ cmake qt4 perl gmp python libzip libarchive xz sip pyqt4 pycups system_config_printer rhpl + + buildInputs = [ cmake qt4 perl gmp python libzip libarchive xz sip pyqt4 pycups system_config_printer kdelibs kdelibs_experimental kdepimlibs kdebase kdebindings automoc4 phonon qimageblitz qca2 ]; + meta = { description = "KDE Utilities"; license = "GPL"; diff --git a/pkgs/development/python-modules/rhpl/default.nix b/pkgs/development/python-modules/rhpl/default.nix index a577d3ac7b9..7b33932492b 100644 --- a/pkgs/development/python-modules/rhpl/default.nix +++ b/pkgs/development/python-modules/rhpl/default.nix @@ -2,11 +2,15 @@ stdenv.mkDerivation { name = "rhpl-0.218"; + src = fetchurl { url = http://ftp.stw-bonn.de/pub/fedora/linux/releases/10/Everything/source/SRPMS/rhpl-0.218-1.src.rpm; md5 = "a72c6b66df782ca1d4950959d2aad292"; }; + inherit python; + builder = ./builder.sh; + buildInputs = [ rpm cpio python wirelesstools gettext ]; } From 0662fcbd23d1f522be6c126ff907eeeb53174dea Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Wed, 3 Feb 2010 13:04:12 +0000 Subject: [PATCH 224/232] * Fix teTeX on Glibc 2.11. svn path=/nixpkgs/branches/stdenv-updates/; revision=19781 --- pkgs/misc/tex/tetex/builder.sh | 22 ------- pkgs/misc/tex/tetex/default.nix | 26 +++++++-- pkgs/misc/tex/tetex/getline.patch | 96 +++++++++++++++++++++++++++++++ 3 files changed, 118 insertions(+), 26 deletions(-) delete mode 100644 pkgs/misc/tex/tetex/builder.sh create mode 100644 pkgs/misc/tex/tetex/getline.patch diff --git a/pkgs/misc/tex/tetex/builder.sh b/pkgs/misc/tex/tetex/builder.sh deleted file mode 100644 index 0611f676347..00000000000 --- a/pkgs/misc/tex/tetex/builder.sh +++ /dev/null @@ -1,22 +0,0 @@ -source $stdenv/setup - -postUnpack=postUnpack -postUnpack() { - ensureDir $out/share/texmf - ensureDir $out/share/texmf-dist - gunzip < $texmf | (cd $out/share/texmf-dist && tar xvf -) -} - -configureFlags="\ - --disable-multiplatform \ - --without-x11 \ - --without-xdvik \ - --without-oxdvik \ - --without-texinfo \ - --without-texi2html \ - --with-system-zlib \ - --with-system-pnglib \ - --with-system-ncurses \ - " - -genericBuild diff --git a/pkgs/misc/tex/tetex/default.nix b/pkgs/misc/tex/tetex/default.nix index 9ff50dd5ab3..5e0fb38c3bd 100644 --- a/pkgs/misc/tex/tetex/default.nix +++ b/pkgs/misc/tex/tetex/default.nix @@ -1,8 +1,7 @@ -{stdenv, fetchurl, flex, bison, zlib, libpng, ncurses, ed}: +{ stdenv, fetchurl, flex, bison, zlib, libpng, ncurses, ed }: stdenv.mkDerivation { name = "tetex-3.0"; - builder = ./builder.sh; src = fetchurl { url = ftp://cam.ctan.org/tex-archive/systems/unix/teTeX/current/distrib/tetex-src-3.0.tar.gz; @@ -14,12 +13,31 @@ stdenv.mkDerivation { md5 = "11aa15c8d3e28ee7815e0d5fcdf43fd4"; }; - buildInputs = [flex bison zlib libpng ncurses ed]; + buildInputs = [ flex bison zlib libpng ncurses ed ]; - patches = [./environment.patch]; + patches = [ ./environment.patch ./getline.patch ]; setupHook = ./setup-hook.sh; + configureFlags = + [ "--disable-multiplatform" + "--without-x11" + "--without-xdvik" + "--without-oxdvik" + "--without-texinfo" + "--without-texi2html" + "--with-system-zlib" + "--with-system-pnglib" + "--with-system-ncurses" + ]; + + postUnpack = + '' + ensureDir $out/share/texmf + ensureDir $out/share/texmf-dist + gunzip < $texmf | (cd $out/share/texmf-dist && tar xvf -) + ''; + meta = { description = "A full-featured (La)TeX distribution"; }; diff --git a/pkgs/misc/tex/tetex/getline.patch b/pkgs/misc/tex/tetex/getline.patch new file mode 100644 index 00000000000..c82c1b3ac36 --- /dev/null +++ b/pkgs/misc/tex/tetex/getline.patch @@ -0,0 +1,96 @@ +Glibc 2.10 has a `getline' symbol that clashes with teTeX's. +Taken from http://lists.ibiblio.org/pipermail/sm-commit/2009-July/024831.html + +diff -rc -x '*~' tetex-src-3.0-orig/texk/dvipsk/afm2tfm.c tetex-src-3.0/texk/dvipsk/afm2tfm.c +*** tetex-src-3.0-orig/texk/dvipsk/afm2tfm.c 2005-01-30 14:17:09.000000000 +0100 +--- tetex-src-3.0/texk/dvipsk/afm2tfm.c 2010-02-03 13:50:21.000000000 +0100 +*************** +*** 257,263 **** + } + + int +! getline P1H(void) { + register char *p ; + register int c ; + +--- 257,263 ---- + } + + int +! tetex_getline P1H(void) { + register char *p ; + register int c ; + +*************** +*** 606,612 **** + ai = newchar() ; + ai->adobenum = -1 ; + ai->adobename = "||" ; /* boundary character name */ +! while (getline()) { + switch(interest(paramstring())) { + case FontName: + fontname = paramnewstring() ; +--- 606,612 ---- + ai = newchar() ; + ai->adobenum = -1 ; + ai->adobename = "||" ; /* boundary character name */ +! while (tetex_getline()) { + switch(interest(paramstring())) { + case FontName: + fontname = paramnewstring() ; +*************** +*** 1882,1888 **** + + while (1) { + while (param == 0 || *param == 0) { +! if (getline() == 0) + error("! premature end in encoding file") ; + for (p=buffer; *p; p++) + if (*p == '%') { +--- 1882,1888 ---- + + while (1) { + while (param == 0 || *param == 0) { +! if (tetex_getline() == 0) + error("! premature end in encoding file") ; + for (p=buffer; *p; p++) + if (*p == '%') { +*************** +*** 1973,1979 **** + p = gettoken() ; + if (strcmp(p, "]")) + error("! token 258 in encoding must be make-array (])") ; +! while (getline()) { + for (p=buffer; *p; p++) + if (*p == '%') { + if (ignoreligkern == 0) +--- 1973,1979 ---- + p = gettoken() ; + if (strcmp(p, "]")) + error("! token 258 in encoding must be make-array (])") ; +! while (tetex_getline()) { + for (p=buffer; *p; p++) + if (*p == '%') { + if (ignoreligkern == 0) +diff -rc -x '*~' tetex-src-3.0-orig/texk/web2c/cpascal.h tetex-src-3.0/texk/web2c/cpascal.h +*** tetex-src-3.0-orig/texk/web2c/cpascal.h 2004-08-28 22:49:59.000000000 +0200 +--- tetex-src-3.0/texk/web2c/cpascal.h 2010-02-03 13:51:04.000000000 +0100 +*************** +*** 240,245 **** +--- 240,255 ---- + #undef getname + #define getname vms_getname + #endif ++ ++ /* Apparently POSIX 2008 has getline and glibc 2.9.90 exports it. ++ * tangle, weave, et al. use that symbol; try to define it away so ++ * something that a standard won't usurp. ++ * From http://tutimura.ath.cx/ptetex/?%C6%B0%BA%EE%CA%F3%B9%F0%2F134 */ ++ #ifdef getline ++ #undef getline ++ #endif ++ #define getline web2c_getline ++ + + /* Declarations for the routines we provide ourselves in lib/. */ + From d26683f5a98e95a41a3ebf332b7940094c852af1 Mon Sep 17 00:00:00 2001 From: Sander van der Burg Date: Wed, 3 Feb 2010 16:12:19 +0000 Subject: [PATCH 225/232] Fixed compilation for GLib on FreeBSD svn path=/nixpkgs/branches/stdenv-updates/; revision=19790 --- pkgs/development/libraries/glib/2.22.x.nix | 4 ++-- pkgs/top-level/all-packages.nix | 1 + 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/pkgs/development/libraries/glib/2.22.x.nix b/pkgs/development/libraries/glib/2.22.x.nix index eaf6a56dade..e6af08cae0e 100644 --- a/pkgs/development/libraries/glib/2.22.x.nix +++ b/pkgs/development/libraries/glib/2.22.x.nix @@ -1,4 +1,4 @@ -{ stdenv, fetchurl, pkgconfig, gettext, perl }: +{ stdenv, fetchurl, pkgconfig, gettext, perl, libiconv ? null}: stdenv.mkDerivation rec { name = "glib-2.22.4"; @@ -8,7 +8,7 @@ stdenv.mkDerivation rec { sha256 = "055dv2hymbyzwpcd39r97x747vsvlkyywa826zr75dzambw6n7qd"; }; - buildInputs = [pkgconfig gettext perl]; + buildInputs = [pkgconfig gettext perl libiconv]; # The nbd package depends on a static version of this library; hence # the default configure flag --disable-static is switched off. diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index d697b5af82e..51799fad2b8 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -3849,6 +3849,7 @@ let glib = import ../development/libraries/glib/2.22.x.nix { inherit fetchurl stdenv pkgconfig gettext perl; + libiconv = if (stdenv.system == "i686-freebsd") then libiconv else null; }; glibmm = import ../development/libraries/glibmm/2.22.x.nix { From 318dc53aa3f8df86a67d05e8e9fa7234f358b399 Mon Sep 17 00:00:00 2001 From: Sander van der Burg Date: Wed, 3 Feb 2010 20:20:00 +0000 Subject: [PATCH 226/232] Fixed dbus-glib compilation on FreeBSD svn path=/nixpkgs/branches/stdenv-updates/; revision=19793 --- pkgs/development/libraries/dbus-glib/default.nix | 2 +- pkgs/top-level/all-packages.nix | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/pkgs/development/libraries/dbus-glib/default.nix b/pkgs/development/libraries/dbus-glib/default.nix index 752ded6320b..a6d594af0f0 100644 --- a/pkgs/development/libraries/dbus-glib/default.nix +++ b/pkgs/development/libraries/dbus-glib/default.nix @@ -8,7 +8,7 @@ stdenv.mkDerivation rec { sha256 = "0nv4gxcbpa9f0907dmzmfm222w8y45z19cx27l85f5qknf8hncxm"; }; - buildInputs = [pkgconfig expat gettext]; + buildInputs = [pkgconfig expat gettext libiconv]; propagatedBuildInputs = [dbus.libs glib]; diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 51799fad2b8..32571c95356 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -3419,6 +3419,7 @@ let dbus_glib = makeOverridable (import ../development/libraries/dbus-glib) { inherit fetchurl stdenv pkgconfig gettext dbus expat glib; + libiconv = if (stdenv.system == "i686-freebsd") then libiconv else null; }; dbus_java = import ../development/libraries/java/dbus-java { From e38e9988a1a3b3a61b13a43cddb1de5350e87898 Mon Sep 17 00:00:00 2001 From: Sander van der Burg Date: Wed, 3 Feb 2010 20:41:28 +0000 Subject: [PATCH 227/232] Added all necessary aliases to match the Linux stdenv as closely as possible on FreeBSD svn path=/nixpkgs/branches/stdenv-updates/; revision=19795 --- pkgs/stdenv/native/default.nix | 149 +++++++++++++++++++- pkgs/stdenv/native/derivealiases-freebsd.sh | 49 +++++++ 2 files changed, 195 insertions(+), 3 deletions(-) create mode 100644 pkgs/stdenv/native/derivealiases-freebsd.sh diff --git a/pkgs/stdenv/native/default.nix b/pkgs/stdenv/native/default.nix index 1f2117ebba0..6f4ae7837df 100644 --- a/pkgs/stdenv/native/default.nix +++ b/pkgs/stdenv/native/default.nix @@ -23,12 +23,155 @@ rec { stripAllFlags=" " # the Darwin "strip" command doesn't know "-s" ''; + /* FreeBSD needs the following packages installed from the FreeBSD packages + * collection (pkg_add -r ...): + * + * bash + * coreutils + * diffutils + * findutils + * gawk + * gmake + * gsed + * gtar + * gsed + * gtar + * gzip + * + * The aliases are derived by using the derivealiases-freebsd.sh script + * + * The following packages seem to be fine in the default install: + * + * gcc (included with FreeBSD) + * binutils (FreeBSD uses GNU binutils) + * bzip2 (included with FreeBSD) + * grep (FreeBSD uses GNU grep) + * patch (included with FreeBSD) + * + * Moreover a symlink to /bin/bash is required and /bin/sh has to be a symlink to /bin/bash + */ + prehookFreeBSD = builtins.toFile "prehook-freebsd.sh" '' source ${prehookBase} - alias make=gmake - alias tar=gtar - alias sed=gsed + alias [='g[' + alias base64='gbase64' + alias basename='gbasename' + alias cat='gcat' + alias chcon='gchcon' + alias chgrp='gchgrp' + alias chmod='gchmod' + alias chown='gchown' + alias chroot='gchroot' + alias cksum='gcksum' + alias comm='gcomm' + alias cp='gcp' + alias csplit='gcsplit' + alias cut='gcut' + alias date='gdate' + alias dd='gdd' + alias df='gdf' + alias dir='gdir' + alias dircolors='gdircolors' + alias dirname='gdirname' + alias du='gdu' + alias echo='gecho' + alias env='genv' + alias expand='gexpand' + alias expr='gexpr' + alias factor='gfactor' + alias false='gfalse' + alias fmt='gfmt' + alias fold='gfold' + alias groups='ggroups' + alias head='ghead' + alias hostid='ghostid' + alias id='gid' + alias install='ginstall' + alias join='gjoin' + alias kill='gkill' + alias link='glink' + alias ln='gln' + alias logname='glogname' + alias ls='gls' + alias md5sum='gmd5sum' + alias mkdir='gmkdir' + alias mkfifo='gmkfifo' + alias mknod='gmknod' + alias mktemp='gmktemp' + alias mv='gmv' + alias nice='gnice' + alias nl='gnl' + alias nohup='gnohup' + alias od='god' + alias paste='gpaste' + alias pathchk='gpathchk' + alias pinky='gpinky' + alias pr='gpr' + alias printenv='gprintenv' + alias printf='gprintf' + alias ptx='gptx' + alias pwd='gpwd' + alias readlink='greadlink' + alias rm='grm' + alias rmdir='grmdir' + alias runcon='gruncon' + alias seq='gseq' + alias sha1sum='gsha1sum' + alias sha224sum='gsha224sum' + alias sha256sum='gsha256sum' + alias sha384sum='gsha384sum' + alias sha512sum='gsha512sum' + alias shred='gshred' + alias shuf='gshuf' + alias sleep='gsleep' + alias sort='gsort' + alias split='gsplit' + alias stat='gstat' + alias stdbuf='gstdbuf' + alias stty='gstty' + alias sum='gsum' + alias sync='gsync' + alias tac='gtac' + alias tail='gtail' + alias tee='gtee' + alias test='gtest' + alias timeout='gtimeout' + alias touch='gtouch' + alias tr='gtr' + alias true='gtrue' + alias truncate='gtruncate' + alias tsort='gtsort' + alias tty='gtty' + alias uname='guname' + alias unexpand='gunexpand' + alias uniq='guniq' + alias unlink='gunlink' + alias uptime='guptime' + alias users='gusers' + alias vdir='gvdir' + alias wc='gwc' + alias who='gwho' + alias whoami='gwhoami' + alias yes='gyes' + + alias cmp='gcmp' + alias diff='gdiff' + alias diff3='gdiff3' + alias sdiff='gsdiff' + + alias find='gfind' + alias oldfind='goldfind' + alias locate='glocate' + alias updatedb='gupdatedb' + alias xargs='gxargs' + + alias make='gmake' + + alias sed='gsed' + + alias tar='gtar' + export MAKE=gmake shopt -s expand_aliases diff --git a/pkgs/stdenv/native/derivealiases-freebsd.sh b/pkgs/stdenv/native/derivealiases-freebsd.sh new file mode 100644 index 00000000000..510abeaee1d --- /dev/null +++ b/pkgs/stdenv/native/derivealiases-freebsd.sh @@ -0,0 +1,49 @@ +#!/bin/bash + +for i in `cat /var/db/pkg/coreutils-*/+CONTENTS | grep "bin/g"` +do + name=`basename $i` + echo "alias ${name:1}='g${name:1}'" +done + +echo + +for i in `cat /var/db/pkg/diffutils-*/+CONTENTS | grep "bin/g"` +do + name=`basename $i` + echo "alias ${name:1}='g${name:1}'" +done + +echo + +for i in `cat /var/db/pkg/findutils-*/+CONTENTS | grep "bin/g"` +do + name=`basename $i` + echo "alias ${name:1}='g${name:1}'" +done + +echo + +for i in `cat /var/db/pkg/gmake-*/+CONTENTS | grep "bin/g"` +do + name=`basename $i` + echo "alias ${name:1}='g${name:1}'" +done + +echo + +for i in `cat /var/db/pkg/gsed-*/+CONTENTS | grep "bin/g"` +do + name=`basename $i` + echo "alias ${name:1}='g${name:1}'" +done + +echo + +for i in `cat /var/db/pkg/gtar-*/+CONTENTS | grep "bin/g"` +do + name=`basename $i` + echo "alias ${name:1}='g${name:1}'" +done + +echo From a709fd64e5fbaa8c4b3b9bb4b9d4cfd1e61a0fcb Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Thu, 4 Feb 2010 09:35:51 +0000 Subject: [PATCH 228/232] * Turn libxcrypt back on. Without it, it's impossible to login to NixOS (because pam_unix2 then cannot handle the passwords in /etc/shadow). svn path=/nixpkgs/branches/stdenv-updates/; revision=19810 --- pkgs/os-specific/linux/pam_unix2/default.nix | 8 ++++++-- pkgs/top-level/all-packages.nix | 2 +- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/pkgs/os-specific/linux/pam_unix2/default.nix b/pkgs/os-specific/linux/pam_unix2/default.nix index 090c3e9e541..4d125d5ab83 100644 --- a/pkgs/os-specific/linux/pam_unix2/default.nix +++ b/pkgs/os-specific/linux/pam_unix2/default.nix @@ -1,4 +1,4 @@ -{stdenv, fetchurl, pam, libxcrypt ? null}: +{ stdenv, fetchurl, pam, libxcrypt }: stdenv.mkDerivation { name = "pam_unix2-2.6"; @@ -8,5 +8,9 @@ stdenv.mkDerivation { sha256 = "067xnyd3q8ik73glxwyx1lydk4bgl78lzq44mnqqp4jrpnpd04ml"; }; - buildInputs = [pam ]; + buildInputs = [ pam libxcrypt ]; + + meta = { + homepage = ftp://ftp.suse.com/pub/people/kukuk/pam/pam_unix2; + }; } diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 32571c95356..bf6e23b77a1 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -6143,7 +6143,7 @@ let }; pam_unix2 = import ../os-specific/linux/pam_unix2 { - inherit stdenv fetchurl pam; + inherit stdenv fetchurl pam libxcrypt; }; pam_usb = import ../os-specific/linux/pam_usb { From 318091ed2b7b68429ab1204722c7cd14ef7fe211 Mon Sep 17 00:00:00 2001 From: Sander van der Burg Date: Thu, 4 Feb 2010 13:47:46 +0000 Subject: [PATCH 229/232] Added all necessary aliases to match the Linux stdenv as closely as possible on OpenBSD svn path=/nixpkgs/branches/stdenv-updates/; revision=19814 --- pkgs/stdenv/native/default.nix | 76 ++++++++++++++++++++++++++++++---- 1 file changed, 68 insertions(+), 8 deletions(-) diff --git a/pkgs/stdenv/native/default.nix b/pkgs/stdenv/native/default.nix index 6f4ae7837df..e5b89d3fc9c 100644 --- a/pkgs/stdenv/native/default.nix +++ b/pkgs/stdenv/native/default.nix @@ -34,8 +34,6 @@ rec { * gmake * gsed * gtar - * gsed - * gtar * gzip * * The aliases are derived by using the derivealiases-freebsd.sh script @@ -179,15 +177,77 @@ rec { export NIX_GCC_NEEDS_GREP=1 ''; + /* OpenBSD needs the following packages installed from the OpenBSD packages + * collection (pkg_add -r ...): + * + * bash + * fileutils (there is no coreutils package) + * gdiff + * findutils + * gawk + * ggrep + * gmake + * gsed + * gtar + * + * The aliases are derived by using the derivealiases-openbsd.sh script + * + * The following packages seem to be fine in the default install: + * + * gcc (included with OpenBSD) + * binutils (OpenBSD uses GNU binutils) + * bzip2 (included with openBSD) + * patch (included with OpenBSD) + * gzip (included with OpenBSD + * + * Moreover a symlink to /bin/bash is required and /bin/sh has to be a symlink to /bin/bash + */ + prehookOpenBSD = builtins.toFile "prehook-openbsd.sh" '' source ${prehookBase} - alias make=gmake - alias grep=ggrep - alias mv=gmv - alias ln=gln - alias sed=gsed - alias tar=gtar + alias chgrp='gchgrp' + alias chmod='gchmod' + alias chown='gchown' + alias cp='gcp' + alias dd='gdd' + alias df='gdf' + alias dir='gdir' + alias dircolors='gdircolors' + alias du='gdu' + alias install='ginstall' + alias ln='gln' + alias ls='gls' + alias mkdir='gmkdir' + alias mkfifo='gmkfifo' + alias mknod='gmknod' + alias mv='gmv' + alias rm='grm' + alias rmdir='grmdir' + alias shred='gshred' + alias sync='gsync' + alias touch='gtouch' + alias vdir='gvdir' + + alias find='gfind' + alias locate='glocate' + alias updatedb='gupdatedb' + alias xargs='gxargs' + + alias cmp='gcmp' + alias diff='gdiff' + alias diff3='gdiff3' + alias sdiff='gsdiff' + + alias egrep='gegrep' + alias fgrep='gfgrep' + alias grep='ggrep' + + alias make='gmake' + + alias sed='gsed' + + alias tar='gtar' export MAKE=gmake shopt -s expand_aliases From a879785099362c62342251ca3df0a75927d104c1 Mon Sep 17 00:00:00 2001 From: Sander van der Burg Date: Thu, 4 Feb 2010 13:49:51 +0000 Subject: [PATCH 230/232] Script I used to derive the aliases on OpenBSD svn path=/nixpkgs/branches/stdenv-updates/; revision=19815 --- pkgs/stdenv/native/derivealiases-openbsd.sh | 58 +++++++++++++++++++++ 1 file changed, 58 insertions(+) create mode 100644 pkgs/stdenv/native/derivealiases-openbsd.sh diff --git a/pkgs/stdenv/native/derivealiases-openbsd.sh b/pkgs/stdenv/native/derivealiases-openbsd.sh new file mode 100644 index 00000000000..b6c5bf8f9c4 --- /dev/null +++ b/pkgs/stdenv/native/derivealiases-openbsd.sh @@ -0,0 +1,58 @@ +#!/bin/bash + +for i in `cat /var/db/pkg/fileutils-*/+CONTENTS | grep "bin/g"` +do + name=`basename $i` + echo "alias ${name:1}='g${name:1}'" +done + +echo + +for i in `cat /var/db/pkg/findutils-*/+CONTENTS | grep "bin/g"` +do + name=`basename $i` + echo "alias ${name:1}='g${name:1}'" +done + +echo + +for i in `cat /var/db/pkg/gdiff-*/+CONTENTS | grep "bin/g"` +do + name=`basename $i` + echo "alias ${name:1}='g${name:1}'" +done + +echo + +for i in `cat /var/db/pkg/ggrep-*/+CONTENTS | grep "bin/g"` +do + name=`basename $i` + echo "alias ${name:1}='g${name:1}'" +done + +echo + +for i in `cat /var/db/pkg/gmake-*/+CONTENTS | grep "bin/g"` +do + name=`basename $i` + echo "alias ${name:1}='g${name:1}'" +done + +echo + +for i in `cat /var/db/pkg/gsed-*/+CONTENTS | grep "bin/g"` +do + name=`basename $i` + echo "alias ${name:1}='g${name:1}'" +done + +echo + +for i in `cat /var/db/pkg/gtar-*/+CONTENTS | grep "bin/g"` +do + name=`basename $i` + echo "alias ${name:1}='g${name:1}'" +done + +echo + From b8c1641515feb234ec443f0af787af433b736130 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Llu=C3=ADs=20Batlle=20i=20Rossell?= Date: Thu, 4 Feb 2010 18:40:54 +0000 Subject: [PATCH 231/232] Making pam_unix2 not link to libxcrypt under armv5tel, because libxcrypt does not build under it. svn path=/nixpkgs/branches/stdenv-updates/; revision=19824 --- pkgs/os-specific/linux/pam_unix2/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/os-specific/linux/pam_unix2/default.nix b/pkgs/os-specific/linux/pam_unix2/default.nix index 4d125d5ab83..d48598afd0d 100644 --- a/pkgs/os-specific/linux/pam_unix2/default.nix +++ b/pkgs/os-specific/linux/pam_unix2/default.nix @@ -8,7 +8,7 @@ stdenv.mkDerivation { sha256 = "067xnyd3q8ik73glxwyx1lydk4bgl78lzq44mnqqp4jrpnpd04ml"; }; - buildInputs = [ pam libxcrypt ]; + buildInputs = [ pam ] ++ stdenv.lib.optional (stdenv.system != "armv5tel-linux") libxcrypt; meta = { homepage = ftp://ftp.suse.com/pub/people/kukuk/pam/pam_unix2; From bdfff8e76961d7dd8fbf71fa40717b73e74aeb43 Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Fri, 5 Feb 2010 23:08:11 +0000 Subject: [PATCH 232/232] * Comment out uclibc because it causes evaluation errors. svn path=/nixpkgs/branches/stdenv-updates/; revision=19850 --- pkgs/top-level/all-packages.nix | 2 ++ 1 file changed, 2 insertions(+) diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 76330a29cb9..6bc28c32263 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -6277,9 +6277,11 @@ let inherit fetchurl stdenv unzip; }; +/* uclibc = import ../os-specific/linux/uclibc { inherit fetchurl stdenv linuxHeaders; }; +*/ uclibcCross = target: import ../os-specific/linux/uclibc { inherit fetchurl stdenv;