diff --git a/nixos/doc/manual/default.nix b/nixos/doc/manual/default.nix index 47e01437ccc41..085299ba9cb5c 100644 --- a/nixos/doc/manual/default.nix +++ b/nixos/doc/manual/default.nix @@ -55,7 +55,7 @@ in rec { inherit sources; - buildInputs = [ libxml2 libxslt ]; + buildInputs = [ libxml2 libxslt perl ]; buildCommand = '' ${copySources} @@ -83,6 +83,21 @@ in rec { --nonet --xinclude --output $dst/ \ ${docbook5_xsl}/xml/xsl/docbook/xhtml/chunkfast.xsl ./manual.xml + # Fix the non-deterministic id-generation used by xsltproc + # !!! Move this somewhere else + perl -0777 -pi -e ' + # xsltproc html output id remapping + # pretty weird that xsltproc cannot do this + # Author: Alexander Kjeldaas + my @parts = split(/(href="#|id="|href="#ftn.|id="ftn.)(id.\d+")/g, $_); + my %remap = {}; + for (my $i = 0; $i < @parts; $i += 3) { + my $id = @parts[ $i+2 ]; + $remap{$id} = $i unless exists $remap{$id}; + @parts[ $i+2 ] = "idp$remap{$id}\""; + } + $_ = join "", @parts; ' $dst/manual.html + mkdir -p $dst/images/callouts cp ${docbook5_xsl}/xml/xsl/docbook/images/callouts/*.gif $dst/images/callouts/ diff --git a/nixos/lib/make-system-tarball.sh b/nixos/lib/make-system-tarball.sh index 2eb668115a6ff..c68e3ea75e50b 100644 --- a/nixos/lib/make-system-tarball.sh +++ b/nixos/lib/make-system-tarball.sh @@ -50,7 +50,12 @@ done mkdir -p $out/tarball -tar cvJf $out/tarball/$fileName.tar.xz * $extraArgs + +rm ./env-vars + +find * ! -type d -print0 | sort -z | + tar -cv --mtime='1970-01-01' -T- --null -f- $extraArgs | + xz -c > $out/tarball/$fileName.tar.xz mkdir -p $out/nix-support echo $system > $out/nix-support/system diff --git a/nixos/modules/system/boot/stage-1.nix b/nixos/modules/system/boot/stage-1.nix index 426da778f434d..b987c655fb33c 100644 --- a/nixos/modules/system/boot/stage-1.nix +++ b/nixos/modules/system/boot/stage-1.nix @@ -298,7 +298,7 @@ in boot.initrd.compressor = mkOption { internal = true; - default = "gzip -9"; + default = "gzip -9n"; type = types.str; description = "The compressor to use on the initrd image."; example = "xz"; diff --git a/pkgs/build-support/gcc-wrapper/gcc-wrapper.sh b/pkgs/build-support/gcc-wrapper/gcc-wrapper.sh index c53fd44207d00..33c14527f51a9 100644 --- a/pkgs/build-support/gcc-wrapper/gcc-wrapper.sh +++ b/pkgs/build-support/gcc-wrapper/gcc-wrapper.sh @@ -85,22 +85,32 @@ fi extraAfter=($NIX_CFLAGS_COMPILE) extraBefore=() +# When enforcing purity, pretend gcc can't find the current date and +# time +if test "$NIX_ENFORCE_PURITY" = "1"; then + extraBefore=(-D__DATE__=\"Jan\ \ 1\ 1970\" + -D__TIME__=\"00:00:01\" + -Wno-builtin-macro-redefined + "${extraBefore[@]}") +fi + + 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_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") + extraBefore=("${extraBefore[@]}" "-Wl,$i") done for i in $NIX_LDFLAGS; do if test "${i:0:3}" = "-L/"; then - extraAfter=(${extraAfter[@]} "$i") + extraAfter=("${extraAfter[@]}" "$i") else - extraAfter=(${extraAfter[@]} "-Wl,$i") + extraAfter=("${extraAfter[@]}" "-Wl,$i") fi done export NIX_LDFLAGS_SET=1 @@ -122,11 +132,11 @@ if test "$NIX_DEBUG" = "1"; then echo " $i" >&2 done echo "extraBefore flags to @gccProg@:" >&2 - for i in ${extraBefore[@]}; do + for i in "${extraBefore[@]}"; do echo " $i" >&2 done echo "extraAfter flags to @gccProg@:" >&2 - for i in ${extraAfter[@]}; do + for i in "${extraAfter[@]}"; do echo " $i" >&2 done fi @@ -140,9 +150,9 @@ fi # `-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[@]} + @gccProg@ "${extraBefore[@]}" "${params[@]}" "${extraAfter[@]}" else - (@gccProg@ ${extraBefore[@]} "${params[@]}" ${extraAfter[@]} 3>&2 2>&1 1>&3- \ + (@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/kernel/cpio-clean.pl b/pkgs/build-support/kernel/cpio-clean.pl index ddc6435a5a819..459eac9aa1754 100644 --- a/pkgs/build-support/kernel/cpio-clean.pl +++ b/pkgs/build-support/kernel/cpio-clean.pl @@ -9,8 +9,11 @@ my $cpio = Archive::Cpio->new; my $IN = \*STDIN; my $ino = 1; +my %ino_remap = {}; $cpio->read_with_handler($IN, sub { my ($e) = @_; + $ino_remap{$e->{inode}} = $ino++ unless exists $ino_remap{$e->{inode}}; + $e->{inode} = $ino_remap{$e->{inode}}; $e->{mtime} = 1; $cpio->write_one(\*STDOUT, $e); }); diff --git a/pkgs/build-support/kernel/make-initrd.sh b/pkgs/build-support/kernel/make-initrd.sh index 17b261f984073..c06692429a3ec 100644 --- a/pkgs/build-support/kernel/make-initrd.sh +++ b/pkgs/build-support/kernel/make-initrd.sh @@ -36,7 +36,11 @@ storePaths=$(perl $pathsFromGraph closure-*) # Put the closure in a gzipped cpio archive. mkdir -p $out -(cd root && find * -print0 | cpio -o -H newc --null | perl $cpioClean | $compressor > $out/initrd) +(cd root && find * -print0 | + sort -z | + cpio -o -H newc -R 0.0 --null | + perl $cpioClean | + $compressor > $out/initrd) if [ -n "$makeUInitrd" ]; then mv $out/initrd $out/initrd.gz diff --git a/pkgs/development/compilers/qcmm/builder.sh b/pkgs/development/compilers/qcmm/builder.sh index c6aa18fea3c84..acdfbaa08dce0 100644 --- a/pkgs/development/compilers/qcmm/builder.sh +++ b/pkgs/development/compilers/qcmm/builder.sh @@ -16,7 +16,7 @@ installPhase() { mv $file ${file%.opt} done - find $out/man -type f -exec gzip -9 {} \; + find $out/man -type f -exec gzip -9n {} \; find $out -name \*.a -exec echo stripping {} \; \ -exec strip -S {} \; diff --git a/pkgs/development/interpreters/perl/5.16/default.nix b/pkgs/development/interpreters/perl/5.16/default.nix index 600884db5e67d..a98db56d45649 100644 --- a/pkgs/development/interpreters/perl/5.16/default.nix +++ b/pkgs/development/interpreters/perl/5.16/default.nix @@ -21,6 +21,9 @@ stdenv.mkDerivation rec { patches = [ # Do not look in /usr etc. for dependencies. ./no-sys-dirs.patch + ./no-impure-config-time.patch + ./fixed-man-page-date.patch + ./no-date-in-perl-binary.patch ] ++ optional stdenv.isSunOS ./ld-shared.patch ++ stdenv.lib.optional stdenv.isDarwin [ ./cpp-precomp.patch ./no-libutil.patch ] ; @@ -64,5 +67,31 @@ stdenv.mkDerivation rec { setupHook = ./setup-hook.sh; + doCheck = !stdenv.isDarwin; + + # some network-related tests don't work, mostly probably due to our sandboxing + # man-heading.t is skipped due to output determinism (no dates) + testsToSkip = '' + lib/Net/hostent.t \ + dist/IO/t/{io_multihomed.t,io_sock.t} \ + dist/Net-Ping/t/*.t \ + cpan/autodie/t/truncate.t \ + t/porting/{maintainers.t,regen.t} \ + cpan/Socket/t/get{name,addr}info.t \ + cpan/podlators/t/man-heading.t \ + '' + optionalString stdenv.isFreeBSD '' + cpan/CPANPLUS/t/04_CPANPLUS-Module.t \ + cpan/CPANPLUS/t/20_CPANPLUS-Dist-MM.t \ + '' + " "; + + postPatch = optionalString (!stdenv.isDarwin) /* this failed on Darwin, no idea why */ '' + for test in ${testsToSkip}; do + echo "Removing test" $test + rm "$test" + pat=`echo "$test" | sed 's,/,\\\\/,g'` # just escape slashes + sed "/^$pat/d" -i MANIFEST + done + ''; + passthru.libPrefix = "lib/perl5/site_perl"; } diff --git a/pkgs/development/interpreters/perl/5.16/fixed-man-page-date.patch b/pkgs/development/interpreters/perl/5.16/fixed-man-page-date.patch new file mode 100644 index 0000000000000..79f9bc3658e36 --- /dev/null +++ b/pkgs/development/interpreters/perl/5.16/fixed-man-page-date.patch @@ -0,0 +1,11 @@ +--- a/cpan/podlators/lib/Pod/Man.pm 2014-04-07 06:25:23.730505243 +0200 ++++ b/cpan/podlators/lib/Pod/Man.pm 2014-04-07 06:26:40.816552603 +0200 +@@ -768,7 +768,7 @@ + } else { + ($name, $section) = $self->devise_title; + } +- my $date = $$self{date} || $self->devise_date; ++ my $date = "1970-01-01"; # Fixed date for NixOS, orig: $$self{date} || $self->devise_date; + $self->preamble ($name, $section, $date) + unless $self->bare_output or DEBUG > 9; + diff --git a/pkgs/development/interpreters/perl/5.16/no-date-in-perl-binary.patch b/pkgs/development/interpreters/perl/5.16/no-date-in-perl-binary.patch new file mode 100644 index 0000000000000..00ea47ae45f60 --- /dev/null +++ b/pkgs/development/interpreters/perl/5.16/no-date-in-perl-binary.patch @@ -0,0 +1,11 @@ +--- a/perl.c 2014-04-07 07:58:01.402831615 +0200 ++++ b/perl.c 2014-04-07 07:59:38.556945298 +0200 +@@ -1754,7 +1754,7 @@ + PUSHs(Perl_newSVpvn_flags(aTHX_ non_bincompat_options, + sizeof(non_bincompat_options) - 1, SVs_TEMP)); + +-#ifdef __DATE__ ++#if 0 + # ifdef __TIME__ + PUSHs(Perl_newSVpvn_flags(aTHX_ + STR_WITH_LEN("Compiled at " __DATE__ " " __TIME__), diff --git a/pkgs/development/interpreters/perl/5.16/no-impure-config-time.patch b/pkgs/development/interpreters/perl/5.16/no-impure-config-time.patch new file mode 100644 index 0000000000000..1382de70625ec --- /dev/null +++ b/pkgs/development/interpreters/perl/5.16/no-impure-config-time.patch @@ -0,0 +1,11 @@ +--- a/Configure 2014-04-05 20:21:33.714635700 +0200 ++++ b/Configure 2014-04-05 20:23:23.377441026 +0200 +@@ -3609,6 +3609,8 @@ + + : who configured the system + cf_time=`LC_ALL=C; LANGUAGE=C; export LC_ALL; export LANGUAGE; $date 2>&1` ++cf_time='Thu Jan 1 00:00:01 UTC 1970' ++ + case "$cf_by" in + "") + cf_by=`(logname) 2>/dev/null` diff --git a/pkgs/development/interpreters/python/2.7/default.nix b/pkgs/development/interpreters/python/2.7/default.nix index c19430862c214..fa530a01e388a 100644 --- a/pkgs/development/interpreters/python/2.7/default.nix +++ b/pkgs/development/interpreters/python/2.7/default.nix @@ -19,6 +19,9 @@ let [ # Look in C_INCLUDE_PATH and LIBRARY_PATH for stuff. ./search-path.patch + # No time in the bdist wininst + ./no-time-wininst.patch + # Python recompiles a Python if the mtime stored *in* the # pyc/pyo file differs from the mtime of the source file. This # doesn't work in Nix because Nix changes the mtime of files in @@ -72,7 +75,8 @@ let ''; NIX_CFLAGS_COMPILE = optionalString stdenv.isDarwin "-msse2"; - + DETERMINISTIC_BUILD = 1; + useFakeTime = 1; setupHook = ./setup-hook.sh; postInstall = @@ -83,6 +87,11 @@ let ln -s $out/share/man/man1/{python2.7.1.gz,python.1.gz} paxmark E $out/bin/python${majorVersion} + # !!! This is a stopgap measure for getting deterministic builds. + # It disables creation of windows installers and the lib2to3 which + # can rewrite python2-programs to python3. + rm $out/lib/python${majorVersion}/distutils/command/wininst-*.exe + rm $out/lib/python${majorVersion}/lib2to3/Grammar2.7.7.final.0.pickle ''; passthru = rec { diff --git a/pkgs/development/interpreters/python/2.7/no-time-wininst.patch b/pkgs/development/interpreters/python/2.7/no-time-wininst.patch new file mode 100644 index 0000000000000..ccac20386fe0f --- /dev/null +++ b/pkgs/development/interpreters/python/2.7/no-time-wininst.patch @@ -0,0 +1,12 @@ +diff -ur Python-2.7.6.orig/Lib/distutils/command/bdist_wininst.py Python-2.7.6/Lib/distutils/command/bdist_wininst.py +--- Python-2.7.6.orig/Lib/distutils/command/bdist_wininst.py 2013-11-10 08:36:40.000000000 +0100 ++++ Python-2.7.6/Lib/distutils/command/bdist_wininst.py 2014-04-11 14:49:49.789235982 +0200 +@@ -245,7 +245,7 @@ + import time + import distutils + build_info = "Built %s with distutils-%s" % \ +- (time.ctime(time.time()), distutils.__version__) ++ (time.ctime(0), distutils.__version__) + lines.append("build_info=%s" % build_info) + return string.join(lines, "\n") + diff --git a/pkgs/development/libraries/apr-util/default.nix b/pkgs/development/libraries/apr-util/default.nix index 229529f08cecf..d427d5e21502f 100644 --- a/pkgs/development/libraries/apr-util/default.nix +++ b/pkgs/development/libraries/apr-util/default.nix @@ -35,6 +35,11 @@ stdenv.mkDerivation rec { # Give apr1 access to sed for runtime invocations postInstall = '' + # Determinism changes + sed -i -e 's/APU_SOURCE_DIR=".*"/APU_SOURCE_DIR="unknown"/g' \ + -e 's/APU_BUILD_DIR=".*"/APU_BUILD_DIR="unknown"/g' \ + $out/bin/apu-1-config + wrapProgram $out/bin/apu-1-config --prefix PATH : "${gnused}/bin" ''; diff --git a/pkgs/development/libraries/atomic-ops/default.nix b/pkgs/development/libraries/atomic-ops/default.nix new file mode 100644 index 0000000000000..da06221c72f35 --- /dev/null +++ b/pkgs/development/libraries/atomic-ops/default.nix @@ -0,0 +1,28 @@ +{stdenv, fetchgit, autoconf, automake, libtool}: + +stdenv.mkDerivation rec { + baseName = "atomic-ops"; + version = "7.4.0"; + name="${baseName}-${version}"; + + buildInputs = [ autoconf automake libtool ]; + + preConfigure = '' + ./autogen.sh + ''; + + src = fetchgit { + url = "https://github.com/ivmai/libatomic_ops"; + rev = "a5df11ab031f7541442bac387e2ec5b6c88d8600"; + sha256 = "0ij9i0m9lq7ipx5mbp0qpr1y95zpgiv8cp11d46sss2fs1jkj1i3"; + }; + + meta = { + homepage = "https://github.com/ivmai/libatomic_ops"; + description = '' + This package provides semi-portable access to hardware-provided + atomic memory update operations on a number architectures.''; + platforms = stdenv.lib.platforms.linux ++ stdenv.lib.platforms.darwin; + maintainers = [ stdenv.lib.maintainers.ak ]; + }; +} diff --git a/pkgs/development/libraries/glib/default.nix b/pkgs/development/libraries/glib/default.nix index 839ba7cfa951a..a6f28b8034219 100644 --- a/pkgs/development/libraries/glib/default.nix +++ b/pkgs/development/libraries/glib/default.nix @@ -100,6 +100,7 @@ stdenv.mkDerivation rec { ''; postInstall = ''rm -rvf $out/share/gtk-doc''; + DETERMINISTIC_BUILD = 1; passthru = { gioModuleDir = "lib/gio/modules"; diff --git a/pkgs/development/libraries/glibc/2.19/common.nix b/pkgs/development/libraries/glibc/2.19/common.nix index cd1ba747d7c67..c5e02ab1c4b26 100644 --- a/pkgs/development/libraries/glibc/2.19/common.nix +++ b/pkgs/development/libraries/glibc/2.19/common.nix @@ -60,6 +60,14 @@ stdenv.mkDerivation ({ ./fix-math.patch ./cve-2014-0475.patch + + /* Remove references to the compilation date. */ + ./glibc-remove-date-from-compilation-banner.patch + + /* Remove the date and time from nscd. It is used as a protocol + compatibility check, but we assume nix takes care of that for + us. */ + ./glibc-remove-datetime-from-nscd.patch ]; postPatch = '' diff --git a/pkgs/development/libraries/glibc/2.19/glibc-remove-date-from-compilation-banner.patch b/pkgs/development/libraries/glibc/2.19/glibc-remove-date-from-compilation-banner.patch new file mode 100644 index 0000000000000..5d0b1a51762e9 --- /dev/null +++ b/pkgs/development/libraries/glibc/2.19/glibc-remove-date-from-compilation-banner.patch @@ -0,0 +1,12 @@ +diff -ur glibc-2.17.orig/csu/Makefile glibc-2.17/csu/Makefile +--- glibc-2.17.orig/csu/Makefile 2012-12-25 04:02:13.000000000 +0100 ++++ glibc-2.17/csu/Makefile 2013-08-19 16:01:57.132378550 +0200 +@@ -172,7 +172,7 @@ + os=Linux; \ + fi; \ + printf '"Compiled on a %s %s system on %s.\\n"\n' \ +- "$$os" "$$version" "`date +%Y-%m-%d`";; \ ++ "$$os" "$$version";; \ + *) ;; \ + esac; \ + files="$(all-Banner-files)"; \ diff --git a/pkgs/development/libraries/glibc/2.19/glibc-remove-datetime-from-nscd.patch b/pkgs/development/libraries/glibc/2.19/glibc-remove-datetime-from-nscd.patch new file mode 100644 index 0000000000000..83b61799c4c74 --- /dev/null +++ b/pkgs/development/libraries/glibc/2.19/glibc-remove-datetime-from-nscd.patch @@ -0,0 +1,11 @@ +--- a/nscd/nscd_stat.c 2014-04-08 20:35:24.253715420 +0200 ++++ b/nscd/nscd_stat.c 2014-04-08 20:38:32.526634400 +0200 +@@ -37,7 +37,7 @@ + + + /* We use this to make sure the receiver is the same. */ +-static const char compilation[21] = __DATE__ " " __TIME__; ++static const char compilation[21] = "Thu 1 1970 00:00:01"; /* __DATE__ " " __TIME__; */ + + /* Statistic data for one database. */ + struct dbstat diff --git a/pkgs/development/libraries/icu/default.nix b/pkgs/development/libraries/icu/default.nix index a029eab6f1218..f22a0845df2fd 100644 --- a/pkgs/development/libraries/icu/default.nix +++ b/pkgs/development/libraries/icu/default.nix @@ -34,6 +34,7 @@ stdenv.mkDerivation { stdenv.lib.optionalString stdenv.isDarwin " --enable-rpath"; enableParallelBuilding = true; + useFakeTime = 1; meta = { description = "Unicode and globalization support library"; diff --git a/pkgs/development/libraries/libfaketime/avoid-spurious-lrt.patch b/pkgs/development/libraries/libfaketime/avoid-spurious-lrt.patch new file mode 100644 index 0000000000000..90eb88f3655f7 --- /dev/null +++ b/pkgs/development/libraries/libfaketime/avoid-spurious-lrt.patch @@ -0,0 +1,12 @@ +diff -ur libfaketime-0.9.5.orig/src/Makefile libfaketime-0.9.5/src/Makefile +--- libfaketime-0.9.5.orig/src/Makefile 2013-10-13 11:19:30.000000000 +0200 ++++ libfaketime-0.9.5/src/Makefile 2014-04-11 21:58:06.285435083 +0200 +@@ -69,7 +69,7 @@ + + CFLAGS += -std=gnu99 -Wall -Wextra -Werror -DFAKE_STAT -DFAKE_SLEEP -DFAKE_TIMERS -DFAKE_INTERNAL_CALLS -fPIC -DPREFIX='"'$(PREFIX)'"' -DLIBDIRNAME='"'$(LIBDIRNAME)'"' + LIB_LDFLAGS += -shared +-LDFLAGS += -Wl,--version-script=libfaketime.map -lrt ++LDFLAGS += -Wl,--version-script=libfaketime.map + LDADD += -ldl -lm -lpthread -lrt + + SRC = libfaketime.c diff --git a/pkgs/development/libraries/libfaketime/default.nix b/pkgs/development/libraries/libfaketime/default.nix new file mode 100644 index 0000000000000..3e8c874d44493 --- /dev/null +++ b/pkgs/development/libraries/libfaketime/default.nix @@ -0,0 +1,41 @@ +{stdenv, fetchurl }: + +stdenv.mkDerivation rec +{ + version = "0.9.5"; + name = "libfaketime-${version}"; + +# src = fetchgit { +# url = "https://github.com/wolfcw/libfaketime.git"; +# rev = "4c23ee273006e72a26dcbba62317ab05645e892d"; +# sha256 = "efa231e0091e8c7785385149dc97b2d8dc24aba65f4b0974b8ed7f62b7596ad3"; +# }; + +# Need http-only storing facility, like tarballs.nixos.org +# src = fetchurl { +# url = http://github.com/wolfcw/libfaketime/archive/v0.9.5.tar.gz; +# sha256 = "efa231e0091e8c7785385149dc97b2d8dc24aba65f4b0974b8ed7f62b7596ad3"; +# }; + + src = ./libfaketime-v0.9.5.tar.gz; + +# buildInputs = [ ]; + + preBuild = '' + makeFlags="PREFIX=$out LIBDIRNAME=/lib" + ''; + + patches = [ + ./avoid-spurious-lrt.patch + ./no-date-in-gzip-man-page.patch + ]; + + meta = + { + homepage = "https://github.com/wolfcw/libfaketime"; + description = "libfaketime modifies the system time for a single application"; + license = stdenv.lib.licenses.gpl2; + platforms = stdenv.lib.platforms.linux; + maintainers = [ ]; + }; +} diff --git a/pkgs/development/libraries/libfaketime/libfaketime-v0.9.5.tar.gz b/pkgs/development/libraries/libfaketime/libfaketime-v0.9.5.tar.gz new file mode 100644 index 0000000000000..f07a19379a48c Binary files /dev/null and b/pkgs/development/libraries/libfaketime/libfaketime-v0.9.5.tar.gz differ diff --git a/pkgs/development/libraries/libfaketime/no-date-in-gzip-man-page.patch b/pkgs/development/libraries/libfaketime/no-date-in-gzip-man-page.patch new file mode 100644 index 0000000000000..7b7e362fbf0f8 --- /dev/null +++ b/pkgs/development/libraries/libfaketime/no-date-in-gzip-man-page.patch @@ -0,0 +1,12 @@ +diff -ur libfaketime-0.9.5.orig/man/Makefile libfaketime-0.9.5/man/Makefile +--- libfaketime-0.9.5.orig/man/Makefile 2013-10-13 11:19:30.000000000 +0200 ++++ libfaketime-0.9.5/man/Makefile 2014-04-13 01:22:14.362296519 +0200 +@@ -6,7 +6,7 @@ + + install: + $(INSTALL) -Dm0644 faketime.1 "${DESTDIR}${PREFIX}/share/man/man1/faketime.1" +- gzip -f "${DESTDIR}${PREFIX}/share/man/man1/faketime.1" ++ gzip -9nf "${DESTDIR}${PREFIX}/share/man/man1/faketime.1" + + uninstall: + rm -f "${DESTDIR}${PREFIX}/share/man/man1/faketime.1.gz" diff --git a/pkgs/development/libraries/libgcrypt/default.nix b/pkgs/development/libraries/libgcrypt/default.nix index ed267e23c87b5..b47709940dd5e 100644 --- a/pkgs/development/libraries/libgcrypt/default.nix +++ b/pkgs/development/libraries/libgcrypt/default.nix @@ -18,6 +18,8 @@ stdenv.mkDerivation (rec { make check ''; + patches = [ ./no-build-timestamp.patch ]; + meta = { description = "General-pupose cryptographic library"; diff --git a/pkgs/development/libraries/libgcrypt/no-build-timestamp.patch b/pkgs/development/libraries/libgcrypt/no-build-timestamp.patch new file mode 100644 index 0000000000000..897773387232c --- /dev/null +++ b/pkgs/development/libraries/libgcrypt/no-build-timestamp.patch @@ -0,0 +1,12 @@ +diff -ur libgcrypt-1.5.3.orig/configure libgcrypt-1.5.3/configure +--- libgcrypt-1.5.3.orig/configure 2013-07-25 11:22:47.000000000 +0200 ++++ libgcrypt-1.5.3/configure 2014-04-09 00:17:58.659147199 +0200 +@@ -16520,6 +16520,7 @@ + + + BUILD_TIMESTAMP=`date -u +%Y-%m-%dT%H:%M+0000 2>/dev/null || date` ++BUILD_TIMESTAMP=1970-01-01T00:01+0000 + + + cat >>confdefs.h <<_ACEOF +Only in libgcrypt-1.5.3: out diff --git a/pkgs/development/libraries/libgpg-error/default.nix b/pkgs/development/libraries/libgpg-error/default.nix index 663bd944fb924..03662571adeb8 100644 --- a/pkgs/development/libraries/libgpg-error/default.nix +++ b/pkgs/development/libraries/libgpg-error/default.nix @@ -14,6 +14,8 @@ stdenv.mkDerivation (rec { doCheck = true; + patches = [ ./no-build-timestamp.patch ]; + meta = { description = "Libgpg-error, a small library that defines common error values for all GnuPG components"; diff --git a/pkgs/development/libraries/libgpg-error/no-build-timestamp.patch b/pkgs/development/libraries/libgpg-error/no-build-timestamp.patch new file mode 100644 index 0000000000000..eab9d6d63ad63 --- /dev/null +++ b/pkgs/development/libraries/libgpg-error/no-build-timestamp.patch @@ -0,0 +1,11 @@ +diff -ur libgpg-error-1.12.orig/configure libgpg-error-1.12/configure +--- libgpg-error-1.12.orig/configure 2013-06-24 06:42:28.000000000 +0200 ++++ libgpg-error-1.12/configure 2014-04-09 00:12:47.867856520 +0200 +@@ -14585,6 +14585,7 @@ + + + BUILD_TIMESTAMP=`date -u +%Y-%m-%dT%H:%M+0000 2>/dev/null || date` ++BUILD_TIMESTAMP=1970-01-01T00:01+0000 + + + cat >>confdefs.h <<_ACEOF diff --git a/pkgs/development/libraries/libjpeg-turbo/default.nix b/pkgs/development/libraries/libjpeg-turbo/default.nix index bf27e074dd58b..076d366dd8502 100644 --- a/pkgs/development/libraries/libjpeg-turbo/default.nix +++ b/pkgs/development/libraries/libjpeg-turbo/default.nix @@ -13,6 +13,8 @@ stdenv.mkDerivation rec { doCheck = true; checkTarget = "test"; + useFakeTime = 1; + meta = { homepage = http://libjpeg-turbo.virtualgl.org/; description = "A faster (using SIMD) libjpeg implementation"; diff --git a/pkgs/development/libraries/nspr/default.nix b/pkgs/development/libraries/nspr/default.nix index 0355ce25c62cf..6531e915f1a8d 100644 --- a/pkgs/development/libraries/nspr/default.nix +++ b/pkgs/development/libraries/nspr/default.nix @@ -20,6 +20,7 @@ stdenv.mkDerivation { ''; enableParallelBuilding = true; + useFakeTime = 1; meta = { homepage = http://www.mozilla.org/projects/nspr/; diff --git a/pkgs/development/libraries/openldap/default.nix b/pkgs/development/libraries/openldap/default.nix index 01a4e2e21daf2..7d87034fe4a6b 100644 --- a/pkgs/development/libraries/openldap/default.nix +++ b/pkgs/development/libraries/openldap/default.nix @@ -16,8 +16,6 @@ stdenv.mkDerivation rec { ] ++ stdenv.lib.optional (openssl == null) "--without-tls" ++ stdenv.lib.optional (cyrus_sasl == null) "--without-cyrus-sasl"; - dontPatchELF = 1; # !!! - meta = with stdenv.lib; { homepage = http://www.openldap.org/; description = "An open source implementation of the Lightweight Directory Access Protocol"; diff --git a/pkgs/development/libraries/openssl/default.nix b/pkgs/development/libraries/openssl/default.nix index 8c88df984f059..559bce7b2f5b7 100644 --- a/pkgs/development/libraries/openssl/default.nix +++ b/pkgs/development/libraries/openssl/default.nix @@ -19,6 +19,8 @@ let # cannot be overriden per-process. For security, the # environment variable is ignored for setuid binaries. ./cert-file.patch + # Remove the compilation time from the library + ./no-date-in-library.patch ] ++ stdenv.lib.optionals (isCross && opensslCrossSystem == "hurd-x86") diff --git a/pkgs/development/libraries/openssl/no-date-in-library.patch b/pkgs/development/libraries/openssl/no-date-in-library.patch new file mode 100644 index 0000000000000..3eb501dfa0206 --- /dev/null +++ b/pkgs/development/libraries/openssl/no-date-in-library.patch @@ -0,0 +1,12 @@ +diff -ur openssl-1.0.1f.orig/crypto/Makefile openssl-1.0.1f/crypto/Makefile +--- openssl-1.0.1f.orig/crypto/Makefile 2014-01-06 15:35:56.000000000 +0100 ++++ openssl-1.0.1f/crypto/Makefile 2014-04-09 13:05:28.071346204 +0200 +@@ -57,7 +57,7 @@ + echo ' /* auto-generated by crypto/Makefile for crypto/cversion.c */'; \ + echo ' #define CFLAGS "$(CC) $(CFLAG)"'; \ + echo ' #define PLATFORM "$(PLATFORM)"'; \ +- echo " #define DATE \"`LC_ALL=C LC_TIME=C date`\""; \ ++ echo " #define DATE \"Thu Jan 1 00:00:01 UTC 1970\""; \ + echo '#endif' ) >buildinf.h + + x86cpuid.s: x86cpuid.pl perlasm/x86asm.pl diff --git a/pkgs/development/perl-modules/generic/default.nix b/pkgs/development/perl-modules/generic/default.nix index 96094ab4e5388..6cd4134cc9c41 100644 --- a/pkgs/development/perl-modules/generic/default.nix +++ b/pkgs/development/perl-modules/generic/default.nix @@ -11,6 +11,9 @@ perl.stdenv.mkDerivation ( # Prevent CPAN downloads. PERL_AUTOINSTALL = "--skipdeps"; + # Avoid creating perllocal.pod, which contains a timestamp + installTargets = "pure_install"; + # From http://wiki.cpantesters.org/wiki/CPANAuthorNotes: "allows # authors to skip certain tests (or include certain tests) when # the results are not being monitored by a human being." diff --git a/pkgs/os-specific/linux/busybox/default.nix b/pkgs/os-specific/linux/busybox/default.nix index 98fedb2d3f4f4..34eb19380d4a3 100644 --- a/pkgs/os-specific/linux/busybox/default.nix +++ b/pkgs/os-specific/linux/busybox/default.nix @@ -49,6 +49,7 @@ stdenv.mkDerivation rec { }; configurePhase = '' + export KCONFIG_NOTIMESTAMP=1 make defconfig ${configParser} cat << EOF | parseconfig diff --git a/pkgs/os-specific/linux/cpufrequtils/default.nix b/pkgs/os-specific/linux/cpufrequtils/default.nix index d056e60f2da37..eb431683308af 100644 --- a/pkgs/os-specific/linux/cpufrequtils/default.nix +++ b/pkgs/os-specific/linux/cpufrequtils/default.nix @@ -21,6 +21,7 @@ stdenv.mkDerivation rec { -i Makefile ''; + useFakeTime = 1; buildInputs = [ stdenv.gcc.libc.kernelHeaders libtool gettext ]; meta = { diff --git a/pkgs/os-specific/linux/iputils/default.nix b/pkgs/os-specific/linux/iputils/default.nix index 5ca3a6a0a5c76..d0293d99f768d 100644 --- a/pkgs/os-specific/linux/iputils/default.nix +++ b/pkgs/os-specific/linux/iputils/default.nix @@ -27,6 +27,8 @@ stdenv.mkDerivation rec { # Stdenv doesn't handle symlinks well for that dontGzipMan = true; + useFakeTime = 1; + installPhase = '' mkdir -p $out/sbin $out/bin diff --git a/pkgs/os-specific/linux/kernel/generic.nix b/pkgs/os-specific/linux/kernel/generic.nix index 13250e45494fc..119d990a33de0 100644 --- a/pkgs/os-specific/linux/kernel/generic.nix +++ b/pkgs/os-specific/linux/kernel/generic.nix @@ -57,6 +57,8 @@ let autoModules = stdenv.platform.kernelAutoModules; arch = stdenv.platform.kernelArch; + useFakeTime = 1; + KBUILD_BUILD_TIMESTAMP = 1; # (time_t)1 crossAttrs = let cp = stdenv.cross.platform; in { diff --git a/pkgs/os-specific/linux/kernel/linux-3-10-35-no-dates.patch b/pkgs/os-specific/linux/kernel/linux-3-10-35-no-dates.patch new file mode 100644 index 0000000000000..34cc454a4c2fe --- /dev/null +++ b/pkgs/os-specific/linux/kernel/linux-3-10-35-no-dates.patch @@ -0,0 +1,52 @@ +diff -ur linux-3.10.35.orig/drivers/mtd/nand/denali_pci.c linux-3.10.35/drivers/mtd/nand/denali_pci.c +--- linux-3.10.35.orig/drivers/mtd/nand/denali_pci.c 2014-03-31 18:58:38.000000000 +0200 ++++ linux-3.10.35/drivers/mtd/nand/denali_pci.c 2014-04-09 13:11:10.424424289 +0200 +@@ -132,7 +132,7 @@ + + static int denali_init_pci(void) + { +- pr_info("Spectra MTD driver built on %s @ %s\n", __DATE__, __TIME__); ++ pr_info("Spectra MTD driver\n"); + return pci_register_driver(&denali_pci_driver); + } + module_init(denali_init_pci); +diff -ur linux-3.10.35.orig/drivers/staging/csr/drv.c linux-3.10.35/drivers/staging/csr/drv.c +--- linux-3.10.35.orig/drivers/staging/csr/drv.c 2014-03-31 18:58:38.000000000 +0200 ++++ linux-3.10.35/drivers/staging/csr/drv.c 2014-04-09 13:15:25.923936184 +0200 +@@ -2104,9 +2104,8 @@ + { + int r; + +- printk("UniFi SDIO Driver: %s %s %s\n", +- CSR_WIFI_VERSION, +- __DATE__, __TIME__); ++ printk("UniFi SDIO Driver: %s\n", ++ CSR_WIFI_VERSION); + + #ifdef CSR_SME_USERSPACE + #ifdef CSR_SUPPORT_WEXT +diff -ur linux-3.10.35.orig/drivers/staging/csr/io.c linux-3.10.35/drivers/staging/csr/io.c +--- linux-3.10.35.orig/drivers/staging/csr/io.c 2014-03-31 18:58:38.000000000 +0200 ++++ linux-3.10.35/drivers/staging/csr/io.c 2014-04-09 13:15:45.603976856 +0200 +@@ -878,8 +878,8 @@ + if (!priv) + return 0; + +- seq_printf(m, "UniFi SDIO Driver: %s %s %s\n", +- CSR_WIFI_VERSION, __DATE__, __TIME__); ++ seq_printf(m, "UniFi SDIO Driver: %s\n", ++ CSR_WIFI_VERSION); + #ifdef CSR_SME_USERSPACE + seq_puts(m, "SME: CSR userspace "); + #ifdef CSR_SUPPORT_WEXT +diff -ur linux-3.10.35.orig/drivers/staging/rts5139/rts51x_scsi.c linux-3.10.35/drivers/staging/rts5139/rts51x_scsi.c +--- linux-3.10.35.orig/drivers/staging/rts5139/rts51x_scsi.c 2014-03-31 18:58:38.000000000 +0200 ++++ linux-3.10.35/drivers/staging/rts5139/rts51x_scsi.c 2014-04-09 13:14:21.906550886 +0200 +@@ -1985,7 +1985,6 @@ + SPRINTF(" Vendor: Realtek Corp.\n"); + SPRINTF(" Product: RTS51xx USB Card Reader\n"); + SPRINTF(" Version: %s\n", DRIVER_VERSION); +- SPRINTF(" Build: %s\n", __TIME__); + return 0; + } + diff --git a/pkgs/os-specific/linux/kernel/linux-3.10.nix b/pkgs/os-specific/linux/kernel/linux-3.10.nix index 8fa684e407cff..65d74fcbf1bd2 100644 --- a/pkgs/os-specific/linux/kernel/linux-3.10.nix +++ b/pkgs/os-specific/linux/kernel/linux-3.10.nix @@ -1,4 +1,11 @@ -{ stdenv, fetchurl, ... } @ args: +{ stdenv, fetchurl, kernelPatches ? [], ... } @ args: + +let + patches = kernelPatches ++ + [{ name = "remove-driver-compilation-dates"; + patch = ./linux-3-10-35-no-dates.patch; + }]; +in import ./generic.nix (args // rec { version = "3.10.53"; @@ -9,6 +16,8 @@ import ./generic.nix (args // rec { sha256 = "1sxa6ppgpy9fgj4lyj8d53y309v6r5nmifbrcf5pqs6l944frhq6"; }; + kernelPatches = patches; + features.iwlwifi = true; features.efiBootStub = true; features.needsCifsUtils = true; diff --git a/pkgs/os-specific/linux/kernel/manual-config.nix b/pkgs/os-specific/linux/kernel/manual-config.nix index 6d9baed7f2ddf..385f4cd271e7f 100644 --- a/pkgs/os-specific/linux/kernel/manual-config.nix +++ b/pkgs/os-specific/linux/kernel/manual-config.nix @@ -104,10 +104,9 @@ let buildFlagsArray+=("KBUILD_BUILD_TIMESTAMP=Thu Jan 1 00:00:01 UTC 1970") ''; - buildFlags = [ - "KBUILD_BUILD_VERSION=1-NixOS" - platform.kernelTarget - ] ++ optional isModular "modules"; + KBUILD_BUILD_TIMESTAMP=1; # (time_t)1 + KBUILD_BUILD_VERSION="1-NixOS"; + buildFlags = [ platform.kernelTarget ] ++ optional isModular "modules"; installFlags = [ "INSTALLKERNEL=${installkernel}" diff --git a/pkgs/os-specific/linux/kexectools/default.nix b/pkgs/os-specific/linux/kexectools/default.nix index 09594a5c59eb3..4b322b8967b64 100644 --- a/pkgs/os-specific/linux/kexectools/default.nix +++ b/pkgs/os-specific/linux/kexectools/default.nix @@ -10,6 +10,8 @@ stdenv.mkDerivation rec { buildInputs = [ zlib ]; + useFakeTime = 1; + meta = { homepage = http://horms.net/projects/kexec/kexec-tools; description = "Tools related to the kexec Linux feature"; diff --git a/pkgs/os-specific/linux/multipath-tools/default.nix b/pkgs/os-specific/linux/multipath-tools/default.nix index 90722d74ace15..3da37a89923a4 100644 --- a/pkgs/os-specific/linux/multipath-tools/default.nix +++ b/pkgs/os-specific/linux/multipath-tools/default.nix @@ -14,7 +14,7 @@ stdenv.mkDerivation rec { preBuild = '' - makeFlagsArray=(GZIP="${gzip}/bin/gzip -9 -c" prefix=$out mandir=$out/share/man/man8 man5dir=$out/share/man/man5 LIB=lib) + makeFlagsArray=(GZIP="${gzip}/bin/gzip -9n -c" prefix=$out mandir=$out/share/man/man8 man5dir=$out/share/man/man5 LIB=lib) substituteInPlace multipath/Makefile --replace /etc $out/etc substituteInPlace kpartx/Makefile --replace /etc $out/etc diff --git a/pkgs/os-specific/linux/syslinux/default.nix b/pkgs/os-specific/linux/syslinux/default.nix index 734613c44ac8a..0c82ddda455a9 100644 --- a/pkgs/os-specific/linux/syslinux/default.nix +++ b/pkgs/os-specific/linux/syslinux/default.nix @@ -8,7 +8,7 @@ stdenv.mkDerivation rec { sha256 = "0y2ld2s64s6vc5pf8rj36w71rq2cfax3c1iafp0w1qbjpxy1p8xg"; }; - patches = [ ./perl-deps.patch ]; + patches = [ ./perl-deps.patch ./no-date-in-banner.patch ]; buildInputs = [ nasm perl libuuid ]; diff --git a/pkgs/os-specific/linux/syslinux/no-date-in-banner.patch b/pkgs/os-specific/linux/syslinux/no-date-in-banner.patch new file mode 100644 index 0000000000000..e139c8d734d12 --- /dev/null +++ b/pkgs/os-specific/linux/syslinux/no-date-in-banner.patch @@ -0,0 +1,9 @@ +diff -ur syslinux-4.07.orig/gen-id.sh syslinux-4.07/gen-id.sh +--- syslinux-4.07.orig/gen-id.sh 2013-07-25 11:28:59.000000000 +0200 ++++ syslinux-4.07/gen-id.sh 2014-04-14 16:00:37.000006164 +0200 +@@ -30,4 +30,5 @@ + if test -z "$id"; then + id="$tim" + fi ++id="unknown" + echo "$id" diff --git a/pkgs/servers/x11/xorg/default.nix b/pkgs/servers/x11/xorg/default.nix index c4dfa983f55fc..b1d2ba513c483 100644 --- a/pkgs/servers/x11/xorg/default.nix +++ b/pkgs/servers/x11/xorg/default.nix @@ -17,6 +17,7 @@ let applewmproto = (mkDerivation "applewmproto" { name = "applewmproto-1.4.2"; builder = ./builder.sh; + useFakeTime = 1; src = fetchurl { url = mirror://xorg/X11R7.7/src/everything/applewmproto-1.4.2.tar.bz2; sha256 = "1zi4p07mp6jmk030p4gmglwxcwp0lzs5mi31y1b4rp8lsqxdxizw"; @@ -27,6 +28,7 @@ let bdftopcf = (mkDerivation "bdftopcf" { name = "bdftopcf-1.0.4"; builder = ./builder.sh; + useFakeTime = 1; src = fetchurl { url = mirror://xorg/individual/app/bdftopcf-1.0.4.tar.bz2; sha256 = "1617zmgnx50n7vxlqyj84fl7vnk813jjqmi6jpigyz1xp9br1xga"; @@ -37,6 +39,7 @@ let bigreqsproto = (mkDerivation "bigreqsproto" { name = "bigreqsproto-1.1.2"; builder = ./builder.sh; + useFakeTime = 1; src = fetchurl { url = mirror://xorg/X11R7.7/src/everything/bigreqsproto-1.1.2.tar.bz2; sha256 = "07hvfm84scz8zjw14riiln2v4w03jlhp756ypwhq27g48jmic8a6"; @@ -47,6 +50,7 @@ let compositeproto = (mkDerivation "compositeproto" { name = "compositeproto-0.4.2"; builder = ./builder.sh; + useFakeTime = 1; src = fetchurl { url = mirror://xorg/X11R7.7/src/everything/compositeproto-0.4.2.tar.bz2; sha256 = "1z0crmf669hirw4s7972mmp8xig80kfndja9h559haqbpvq5k4q4"; @@ -57,6 +61,7 @@ let damageproto = (mkDerivation "damageproto" { name = "damageproto-1.2.1"; builder = ./builder.sh; + useFakeTime = 1; src = fetchurl { url = mirror://xorg/X11R7.7/src/everything/damageproto-1.2.1.tar.bz2; sha256 = "0nzwr5pv9hg7c21n995pdiv0zqhs91yz3r8rn3aska4ykcp12z2w"; @@ -67,6 +72,7 @@ let dmxproto = (mkDerivation "dmxproto" { name = "dmxproto-2.3.1"; builder = ./builder.sh; + useFakeTime = 1; src = fetchurl { url = mirror://xorg/X11R7.7/src/everything/dmxproto-2.3.1.tar.bz2; sha256 = "02b5x9dkgajizm8dqyx2w6hmqx3v25l67mgf35nj6sz0lgk52877"; @@ -77,6 +83,7 @@ let dri2proto = (mkDerivation "dri2proto" { name = "dri2proto-2.8"; builder = ./builder.sh; + useFakeTime = 1; src = fetchurl { url = mirror://xorg/individual/proto/dri2proto-2.8.tar.bz2; sha256 = "015az1vfdqmil1yay5nlsmpf6cf7vcbpslxjb72cfkzlvrv59dgr"; @@ -87,6 +94,7 @@ let dri3proto = (mkDerivation "dri3proto" { name = "dri3proto-1.0"; builder = ./builder.sh; + useFakeTime = 1; src = fetchurl { url = mirror://xorg/individual/proto/dri3proto-1.0.tar.bz2; sha256 = "0x609xvnl8jky5m8jdklw4nymx3irkv32w99dfd8nl800bblkgh1"; @@ -97,6 +105,7 @@ let encodings = (mkDerivation "encodings" { name = "encodings-1.0.4"; builder = ./builder.sh; + useFakeTime = 1; src = fetchurl { url = mirror://xorg/X11R7.7/src/everything/encodings-1.0.4.tar.bz2; sha256 = "0ffmaw80vmfwdgvdkp6495xgsqszb6s0iira5j0j6pd4i0lk3mnf"; @@ -107,6 +116,7 @@ let fixesproto = (mkDerivation "fixesproto" { name = "fixesproto-5.0"; builder = ./builder.sh; + useFakeTime = 1; src = fetchurl { url = mirror://xorg/X11R7.7/src/everything/fixesproto-5.0.tar.bz2; sha256 = "1ki4wiq2iivx5g4w5ckzbjbap759kfqd72yg18m3zpbb4hqkybxs"; @@ -117,6 +127,7 @@ let fontadobe100dpi = (mkDerivation "fontadobe100dpi" { name = "font-adobe-100dpi-1.0.3"; builder = ./builder.sh; + useFakeTime = 1; src = fetchurl { url = mirror://xorg/X11R7.7/src/everything/font-adobe-100dpi-1.0.3.tar.bz2; sha256 = "0m60f5bd0caambrk8ksknb5dks7wzsg7g7xaf0j21jxmx8rq9h5j"; @@ -127,6 +138,7 @@ let fontadobe75dpi = (mkDerivation "fontadobe75dpi" { name = "font-adobe-75dpi-1.0.3"; builder = ./builder.sh; + useFakeTime = 1; src = fetchurl { url = mirror://xorg/X11R7.7/src/everything/font-adobe-75dpi-1.0.3.tar.bz2; sha256 = "02advcv9lyxpvrjv8bjh1b797lzg6jvhipclz49z8r8y98g4l0n6"; @@ -137,6 +149,7 @@ let fontadobeutopia100dpi = (mkDerivation "fontadobeutopia100dpi" { name = "font-adobe-utopia-100dpi-1.0.4"; builder = ./builder.sh; + useFakeTime = 1; src = fetchurl { url = mirror://xorg/X11R7.7/src/everything/font-adobe-utopia-100dpi-1.0.4.tar.bz2; sha256 = "19dd9znam1ah72jmdh7i6ny2ss2r6m21z9v0l43xvikw48zmwvyi"; @@ -147,6 +160,7 @@ let fontadobeutopia75dpi = (mkDerivation "fontadobeutopia75dpi" { name = "font-adobe-utopia-75dpi-1.0.4"; builder = ./builder.sh; + useFakeTime = 1; src = fetchurl { url = mirror://xorg/X11R7.7/src/everything/font-adobe-utopia-75dpi-1.0.4.tar.bz2; sha256 = "152wigpph5wvl4k9m3l4mchxxisgsnzlx033mn5iqrpkc6f72cl7"; @@ -157,6 +171,7 @@ let fontadobeutopiatype1 = (mkDerivation "fontadobeutopiatype1" { name = "font-adobe-utopia-type1-1.0.4"; builder = ./builder.sh; + useFakeTime = 1; src = fetchurl { url = mirror://xorg/X11R7.7/src/everything/font-adobe-utopia-type1-1.0.4.tar.bz2; sha256 = "0xw0pdnzj5jljsbbhakc6q9ha2qnca1jr81zk7w70yl9bw83b54p"; @@ -167,6 +182,7 @@ let fontalias = (mkDerivation "fontalias" { name = "font-alias-1.0.3"; builder = ./builder.sh; + useFakeTime = 1; src = fetchurl { url = mirror://xorg/X11R7.7/src/everything/font-alias-1.0.3.tar.bz2; sha256 = "16ic8wfwwr3jicaml7b5a0sk6plcgc1kg84w02881yhwmqm3nicb"; @@ -177,6 +193,7 @@ let fontarabicmisc = (mkDerivation "fontarabicmisc" { name = "font-arabic-misc-1.0.3"; builder = ./builder.sh; + useFakeTime = 1; src = fetchurl { url = mirror://xorg/X11R7.7/src/everything/font-arabic-misc-1.0.3.tar.bz2; sha256 = "1x246dfnxnmflzf0qzy62k8jdpkb6jkgspcjgbk8jcq9lw99npah"; @@ -187,6 +204,7 @@ let fontbh100dpi = (mkDerivation "fontbh100dpi" { name = "font-bh-100dpi-1.0.3"; builder = ./builder.sh; + useFakeTime = 1; src = fetchurl { url = mirror://xorg/X11R7.7/src/everything/font-bh-100dpi-1.0.3.tar.bz2; sha256 = "10cl4gm38dw68jzln99ijix730y7cbx8np096gmpjjwff1i73h13"; @@ -197,6 +215,7 @@ let fontbh75dpi = (mkDerivation "fontbh75dpi" { name = "font-bh-75dpi-1.0.3"; builder = ./builder.sh; + useFakeTime = 1; src = fetchurl { url = mirror://xorg/X11R7.7/src/everything/font-bh-75dpi-1.0.3.tar.bz2; sha256 = "073jmhf0sr2j1l8da97pzsqj805f7mf9r2gy92j4diljmi8sm1il"; @@ -207,6 +226,7 @@ let fontbhlucidatypewriter100dpi = (mkDerivation "fontbhlucidatypewriter100dpi" { name = "font-bh-lucidatypewriter-100dpi-1.0.3"; builder = ./builder.sh; + useFakeTime = 1; src = fetchurl { url = mirror://xorg/X11R7.7/src/everything/font-bh-lucidatypewriter-100dpi-1.0.3.tar.bz2; sha256 = "1fqzckxdzjv4802iad2fdrkpaxl4w0hhs9lxlkyraq2kq9ik7a32"; @@ -217,6 +237,7 @@ let fontbhlucidatypewriter75dpi = (mkDerivation "fontbhlucidatypewriter75dpi" { name = "font-bh-lucidatypewriter-75dpi-1.0.3"; builder = ./builder.sh; + useFakeTime = 1; src = fetchurl { url = mirror://xorg/X11R7.7/src/everything/font-bh-lucidatypewriter-75dpi-1.0.3.tar.bz2; sha256 = "0cfbxdp5m12cm7jsh3my0lym9328cgm7fa9faz2hqj05wbxnmhaa"; @@ -227,6 +248,7 @@ let fontbhttf = (mkDerivation "fontbhttf" { name = "font-bh-ttf-1.0.3"; builder = ./builder.sh; + useFakeTime = 1; src = fetchurl { url = mirror://xorg/X11R7.7/src/everything/font-bh-ttf-1.0.3.tar.bz2; sha256 = "0pyjmc0ha288d4i4j0si4dh3ncf3jiwwjljvddrb0k8v4xiyljqv"; @@ -237,6 +259,7 @@ let fontbhtype1 = (mkDerivation "fontbhtype1" { name = "font-bh-type1-1.0.3"; builder = ./builder.sh; + useFakeTime = 1; src = fetchurl { url = mirror://xorg/X11R7.7/src/everything/font-bh-type1-1.0.3.tar.bz2; sha256 = "1hb3iav089albp4sdgnlh50k47cdjif9p4axm0kkjvs8jyi5a53n"; @@ -247,6 +270,7 @@ let fontbitstream100dpi = (mkDerivation "fontbitstream100dpi" { name = "font-bitstream-100dpi-1.0.3"; builder = ./builder.sh; + useFakeTime = 1; src = fetchurl { url = mirror://xorg/X11R7.7/src/everything/font-bitstream-100dpi-1.0.3.tar.bz2; sha256 = "1kmn9jbck3vghz6rj3bhc3h0w6gh0qiaqm90cjkqsz1x9r2dgq7b"; @@ -257,6 +281,7 @@ let fontbitstream75dpi = (mkDerivation "fontbitstream75dpi" { name = "font-bitstream-75dpi-1.0.3"; builder = ./builder.sh; + useFakeTime = 1; src = fetchurl { url = mirror://xorg/X11R7.7/src/everything/font-bitstream-75dpi-1.0.3.tar.bz2; sha256 = "13plbifkvfvdfym6gjbgy9wx2xbdxi9hfrl1k22xayy02135wgxs"; @@ -267,6 +292,7 @@ let fontbitstreamtype1 = (mkDerivation "fontbitstreamtype1" { name = "font-bitstream-type1-1.0.3"; builder = ./builder.sh; + useFakeTime = 1; src = fetchurl { url = mirror://xorg/X11R7.7/src/everything/font-bitstream-type1-1.0.3.tar.bz2; sha256 = "1256z0jhcf5gbh1d03593qdwnag708rxqa032izmfb5dmmlhbsn6"; @@ -277,6 +303,7 @@ let fontcronyxcyrillic = (mkDerivation "fontcronyxcyrillic" { name = "font-cronyx-cyrillic-1.0.3"; builder = ./builder.sh; + useFakeTime = 1; src = fetchurl { url = mirror://xorg/X11R7.7/src/everything/font-cronyx-cyrillic-1.0.3.tar.bz2; sha256 = "0ai1v4n61k8j9x2a1knvfbl2xjxk3xxmqaq3p9vpqrspc69k31kf"; @@ -287,6 +314,7 @@ let fontcursormisc = (mkDerivation "fontcursormisc" { name = "font-cursor-misc-1.0.3"; builder = ./builder.sh; + useFakeTime = 1; src = fetchurl { url = mirror://xorg/X11R7.7/src/everything/font-cursor-misc-1.0.3.tar.bz2; sha256 = "0dd6vfiagjc4zmvlskrbjz85jfqhf060cpys8j0y1qpcbsrkwdhp"; @@ -297,6 +325,7 @@ let fontdaewoomisc = (mkDerivation "fontdaewoomisc" { name = "font-daewoo-misc-1.0.3"; builder = ./builder.sh; + useFakeTime = 1; src = fetchurl { url = mirror://xorg/X11R7.7/src/everything/font-daewoo-misc-1.0.3.tar.bz2; sha256 = "1s2bbhizzgbbbn5wqs3vw53n619cclxksljvm759h9p1prqdwrdw"; @@ -307,6 +336,7 @@ let fontdecmisc = (mkDerivation "fontdecmisc" { name = "font-dec-misc-1.0.3"; builder = ./builder.sh; + useFakeTime = 1; src = fetchurl { url = mirror://xorg/X11R7.7/src/everything/font-dec-misc-1.0.3.tar.bz2; sha256 = "0yzza0l4zwyy7accr1s8ab7fjqkpwggqydbm2vc19scdby5xz7g1"; @@ -317,6 +347,7 @@ let fontibmtype1 = (mkDerivation "fontibmtype1" { name = "font-ibm-type1-1.0.3"; builder = ./builder.sh; + useFakeTime = 1; src = fetchurl { url = mirror://xorg/X11R7.7/src/everything/font-ibm-type1-1.0.3.tar.bz2; sha256 = "1pyjll4adch3z5cg663s6vhi02k8m6488f0mrasg81ssvg9jinzx"; @@ -327,6 +358,7 @@ let fontisasmisc = (mkDerivation "fontisasmisc" { name = "font-isas-misc-1.0.3"; builder = ./builder.sh; + useFakeTime = 1; src = fetchurl { url = mirror://xorg/X11R7.7/src/everything/font-isas-misc-1.0.3.tar.bz2; sha256 = "0rx8q02rkx673a7skkpnvfkg28i8gmqzgf25s9yi0lar915sn92q"; @@ -337,6 +369,7 @@ let fontjismisc = (mkDerivation "fontjismisc" { name = "font-jis-misc-1.0.3"; builder = ./builder.sh; + useFakeTime = 1; src = fetchurl { url = mirror://xorg/X11R7.7/src/everything/font-jis-misc-1.0.3.tar.bz2; sha256 = "0rdc3xdz12pnv951538q6wilx8mrdndpkphpbblszsv7nc8cw61b"; @@ -347,6 +380,7 @@ let fontmicromisc = (mkDerivation "fontmicromisc" { name = "font-micro-misc-1.0.3"; builder = ./builder.sh; + useFakeTime = 1; src = fetchurl { url = mirror://xorg/X11R7.7/src/everything/font-micro-misc-1.0.3.tar.bz2; sha256 = "1dldxlh54zq1yzfnrh83j5vm0k4ijprrs5yl18gm3n9j1z0q2cws"; @@ -357,6 +391,7 @@ let fontmisccyrillic = (mkDerivation "fontmisccyrillic" { name = "font-misc-cyrillic-1.0.3"; builder = ./builder.sh; + useFakeTime = 1; src = fetchurl { url = mirror://xorg/X11R7.7/src/everything/font-misc-cyrillic-1.0.3.tar.bz2; sha256 = "0q2ybxs8wvylvw95j6x9i800rismsmx4b587alwbfqiw6biy63z4"; @@ -367,6 +402,7 @@ let fontmiscethiopic = (mkDerivation "fontmiscethiopic" { name = "font-misc-ethiopic-1.0.3"; builder = ./builder.sh; + useFakeTime = 1; src = fetchurl { url = mirror://xorg/X11R7.7/src/everything/font-misc-ethiopic-1.0.3.tar.bz2; sha256 = "19cq7iq0pfad0nc2v28n681fdq3fcw1l1hzaq0wpkgpx7bc1zjsk"; @@ -377,6 +413,7 @@ let fontmiscmeltho = (mkDerivation "fontmiscmeltho" { name = "font-misc-meltho-1.0.3"; builder = ./builder.sh; + useFakeTime = 1; src = fetchurl { url = mirror://xorg/X11R7.7/src/everything/font-misc-meltho-1.0.3.tar.bz2; sha256 = "148793fqwzrc3bmh2vlw5fdiwjc2n7vs25cic35gfp452czk489p"; @@ -387,6 +424,7 @@ let fontmiscmisc = (mkDerivation "fontmiscmisc" { name = "font-misc-misc-1.1.2"; builder = ./builder.sh; + useFakeTime = 1; src = fetchurl { url = mirror://xorg/X11R7.7/src/everything/font-misc-misc-1.1.2.tar.bz2; sha256 = "150pq6n8n984fah34n3k133kggn9v0c5k07igv29sxp1wi07krxq"; @@ -397,6 +435,7 @@ let fontmuttmisc = (mkDerivation "fontmuttmisc" { name = "font-mutt-misc-1.0.3"; builder = ./builder.sh; + useFakeTime = 1; src = fetchurl { url = mirror://xorg/X11R7.7/src/everything/font-mutt-misc-1.0.3.tar.bz2; sha256 = "13qghgr1zzpv64m0p42195k1kc77pksiv059fdvijz1n6kdplpxx"; @@ -407,6 +446,7 @@ let fontschumachermisc = (mkDerivation "fontschumachermisc" { name = "font-schumacher-misc-1.1.2"; builder = ./builder.sh; + useFakeTime = 1; src = fetchurl { url = mirror://xorg/X11R7.7/src/everything/font-schumacher-misc-1.1.2.tar.bz2; sha256 = "0nkym3n48b4v36y4s927bbkjnsmicajarnf6vlp7wxp0as304i74"; @@ -417,6 +457,7 @@ let fontscreencyrillic = (mkDerivation "fontscreencyrillic" { name = "font-screen-cyrillic-1.0.4"; builder = ./builder.sh; + useFakeTime = 1; src = fetchurl { url = mirror://xorg/X11R7.7/src/everything/font-screen-cyrillic-1.0.4.tar.bz2; sha256 = "0yayf1qlv7irf58nngddz2f1q04qkpr5jwp4aja2j5gyvzl32hl2"; @@ -427,6 +468,7 @@ let fontsonymisc = (mkDerivation "fontsonymisc" { name = "font-sony-misc-1.0.3"; builder = ./builder.sh; + useFakeTime = 1; src = fetchurl { url = mirror://xorg/X11R7.7/src/everything/font-sony-misc-1.0.3.tar.bz2; sha256 = "1xfgcx4gsgik5mkgkca31fj3w72jw9iw76qyrajrsz1lp8ka6hr0"; @@ -437,6 +479,7 @@ let fontsproto = (mkDerivation "fontsproto" { name = "fontsproto-2.1.2"; builder = ./builder.sh; + useFakeTime = 1; src = fetchurl { url = mirror://xorg/X11R7.7/src/everything/fontsproto-2.1.2.tar.bz2; sha256 = "1ab8mbqxdwvdz4k5x4xb9c4n5w7i1xw276cbpk4z7a1nlpjrg746"; @@ -447,6 +490,7 @@ let fontsunmisc = (mkDerivation "fontsunmisc" { name = "font-sun-misc-1.0.3"; builder = ./builder.sh; + useFakeTime = 1; src = fetchurl { url = mirror://xorg/X11R7.7/src/everything/font-sun-misc-1.0.3.tar.bz2; sha256 = "1q6jcqrffg9q5f5raivzwx9ffvf7r11g6g0b125na1bhpz5ly7s8"; @@ -457,6 +501,7 @@ let fontutil = (mkDerivation "fontutil" { name = "font-util-1.3.0"; builder = ./builder.sh; + useFakeTime = 1; src = fetchurl { url = mirror://xorg/X11R7.7/src/everything/font-util-1.3.0.tar.bz2; sha256 = "15cijajwhjzpy3ydc817zz8x5z4gbkyv3fps687jbq544mbfbafz"; @@ -467,6 +512,7 @@ let fontwinitzkicyrillic = (mkDerivation "fontwinitzkicyrillic" { name = "font-winitzki-cyrillic-1.0.3"; builder = ./builder.sh; + useFakeTime = 1; src = fetchurl { url = mirror://xorg/X11R7.7/src/everything/font-winitzki-cyrillic-1.0.3.tar.bz2; sha256 = "181n1bgq8vxfxqicmy1jpm1hnr6gwn1kdhl6hr4frjigs1ikpldb"; @@ -477,6 +523,7 @@ let fontxfree86type1 = (mkDerivation "fontxfree86type1" { name = "font-xfree86-type1-1.0.4"; builder = ./builder.sh; + useFakeTime = 1; src = fetchurl { url = mirror://xorg/X11R7.7/src/everything/font-xfree86-type1-1.0.4.tar.bz2; sha256 = "0jp3zc0qfdaqfkgzrb44vi9vi0a8ygb35wp082yz7rvvxhmg9sya"; @@ -487,6 +534,7 @@ let gccmakedep = (mkDerivation "gccmakedep" { name = "gccmakedep-1.0.3"; builder = ./builder.sh; + useFakeTime = 1; src = fetchurl { url = mirror://xorg/individual/util/gccmakedep-1.0.3.tar.bz2; sha256 = "1r1fpy5ni8chbgx7j5sz0008fpb6vbazpy1nifgdhgijyzqxqxdj"; @@ -497,6 +545,7 @@ let glamoregl = (mkDerivation "glamoregl" { name = "glamor-egl-0.6.0"; builder = ./builder.sh; + useFakeTime = 1; src = fetchurl { url = mirror://xorg/individual/driver/glamor-egl-0.6.0.tar.bz2; sha256 = "1jg5clihklb9drh1jd7nhhdsszla6nv7xmbvm8yvakh5wrb1nlv6"; @@ -507,6 +556,7 @@ let glproto = (mkDerivation "glproto" { name = "glproto-1.4.17"; builder = ./builder.sh; + useFakeTime = 1; src = fetchurl { url = mirror://xorg/individual/proto/glproto-1.4.17.tar.bz2; sha256 = "0h5ykmcddwid5qj6sbrszgkcypwn3mslvswxpgy2n2iixnyr9amd"; @@ -517,6 +567,7 @@ let iceauth = (mkDerivation "iceauth" { name = "iceauth-1.0.6"; builder = ./builder.sh; + useFakeTime = 1; src = fetchurl { url = mirror://xorg/individual/app/iceauth-1.0.6.tar.bz2; sha256 = "1x72y99dxf2fxnlyf0yrf9yzd8xzimxshy6l8mprwhrv6lvhi6dx"; @@ -527,6 +578,7 @@ let imake = (mkDerivation "imake" { name = "imake-1.0.7"; builder = ./builder.sh; + useFakeTime = 1; src = fetchurl { url = mirror://xorg/individual/util/imake-1.0.7.tar.bz2; sha256 = "0zpk8p044jh14bis838shbf4100bjg7mccd7bq54glpsq552q339"; @@ -537,6 +589,7 @@ let inputproto = (mkDerivation "inputproto" { name = "inputproto-2.3.1"; builder = ./builder.sh; + useFakeTime = 1; src = fetchurl { url = mirror://xorg/individual/proto/inputproto-2.3.1.tar.bz2; sha256 = "1lf1jlxp0fc8h6fjdffhd084dqab94966l1zm3rwwsis0mifwiss"; @@ -547,6 +600,7 @@ let kbproto = (mkDerivation "kbproto" { name = "kbproto-1.0.6"; builder = ./builder.sh; + useFakeTime = 1; src = fetchurl { url = mirror://xorg/X11R7.7/src/everything/kbproto-1.0.6.tar.bz2; sha256 = "0yal11hhpiisy3w8wmacsdzzzcnc3xwnswxz8k7zri40xc5aqz03"; @@ -557,6 +611,7 @@ let libAppleWM = (mkDerivation "libAppleWM" { name = "libAppleWM-1.4.1"; builder = ./builder.sh; + useFakeTime = 1; src = fetchurl { url = mirror://xorg/X11R7.7/src/everything/libAppleWM-1.4.1.tar.bz2; sha256 = "0r8x28n45q89x91mz8mv0zkkcxi8wazkac886fyvflhiv2y8ap2y"; @@ -567,6 +622,7 @@ let libFS = (mkDerivation "libFS" { name = "libFS-1.0.6"; builder = ./builder.sh; + useFakeTime = 1; src = fetchurl { url = mirror://xorg/individual/lib/libFS-1.0.6.tar.bz2; sha256 = "1mxfsvj9m3pn8cdkcn4kg190zp665mf4pv0083g6xykvsgxzq1wh"; @@ -577,6 +633,7 @@ let libICE = (mkDerivation "libICE" { name = "libICE-1.0.9"; builder = ./builder.sh; + useFakeTime = 1; src = fetchurl { url = mirror://xorg/individual/lib/libICE-1.0.9.tar.bz2; sha256 = "00p2b6bsg6kcdbb39bv46339qcywxfl4hsrz8asm4hy6q7r34w4g"; @@ -587,6 +644,7 @@ let libSM = (mkDerivation "libSM" { name = "libSM-1.2.2"; builder = ./builder.sh; + useFakeTime = 1; src = fetchurl { url = mirror://xorg/individual/lib/libSM-1.2.2.tar.bz2; sha256 = "1gc7wavgs435g9qkp9jw4lhmaiq6ip9llv49f054ad6ryp4sib0b"; @@ -597,6 +655,7 @@ let libWindowsWM = (mkDerivation "libWindowsWM" { name = "libWindowsWM-1.0.1"; builder = ./builder.sh; + useFakeTime = 1; src = fetchurl { url = mirror://xorg/X11R7.7/src/everything/libWindowsWM-1.0.1.tar.bz2; sha256 = "1p0flwb67xawyv6yhri9w17m1i4lji5qnd0gq8v1vsfb8zw7rw15"; @@ -607,6 +666,7 @@ let libX11 = (mkDerivation "libX11" { name = "libX11-1.6.2"; builder = ./builder.sh; + useFakeTime = 1; src = fetchurl { url = mirror://xorg/individual/lib/libX11-1.6.2.tar.bz2; sha256 = "05mx0s0vqzds3qjc1gmjr2s6x2ll37z4lfhgm7p2w7936zl2g81a"; @@ -617,6 +677,7 @@ let libXScrnSaver = (mkDerivation "libXScrnSaver" { name = "libXScrnSaver-1.2.2"; builder = ./builder.sh; + useFakeTime = 1; src = fetchurl { url = mirror://xorg/X11R7.7/src/everything/libXScrnSaver-1.2.2.tar.bz2; sha256 = "07ff4r20nkkrj7h08f9fwamds9b3imj8jz5iz6y38zqw6jkyzwcg"; @@ -627,6 +688,7 @@ let libXau = (mkDerivation "libXau" { name = "libXau-1.0.8"; builder = ./builder.sh; + useFakeTime = 1; src = fetchurl { url = mirror://xorg/individual/lib/libXau-1.0.8.tar.bz2; sha256 = "1wm4pv12f36cwzhldpp7vy3lhm3xdcnp4f184xkxsp7b18r7gm7x"; @@ -637,6 +699,7 @@ let libXaw = (mkDerivation "libXaw" { name = "libXaw-1.0.12"; builder = ./builder.sh; + useFakeTime = 1; src = fetchurl { url = mirror://xorg/individual/lib/libXaw-1.0.12.tar.bz2; sha256 = "1xnv7jy86j9vhmw74frkzcraynqbw1p1s79jasargsgwfi433z4n"; @@ -647,6 +710,7 @@ let libXcomposite = (mkDerivation "libXcomposite" { name = "libXcomposite-0.4.4"; builder = ./builder.sh; + useFakeTime = 1; src = fetchurl { url = mirror://xorg/individual/lib/libXcomposite-0.4.4.tar.bz2; sha256 = "0y21nfpa5s8qmx0srdlilyndas3sgl0c6rc26d5fx2vx436m1qpd"; @@ -657,6 +721,7 @@ let libXcursor = (mkDerivation "libXcursor" { name = "libXcursor-1.1.14"; builder = ./builder.sh; + useFakeTime = 1; src = fetchurl { url = mirror://xorg/individual/lib/libXcursor-1.1.14.tar.bz2; sha256 = "1prkdicl5y5yx32h1azh6gjfbijvjp415javv8dsakd13jrarilv"; @@ -667,6 +732,7 @@ let libXdamage = (mkDerivation "libXdamage" { name = "libXdamage-1.1.4"; builder = ./builder.sh; + useFakeTime = 1; src = fetchurl { url = mirror://xorg/individual/lib/libXdamage-1.1.4.tar.bz2; sha256 = "1bamagq7g6s0d23l8rb3nppj8ifqj05f7z9bhbs4fdg8az3ffgvw"; @@ -677,6 +743,7 @@ let libXdmcp = (mkDerivation "libXdmcp" { name = "libXdmcp-1.1.1"; builder = ./builder.sh; + useFakeTime = 1; src = fetchurl { url = mirror://xorg/X11R7.7/src/everything/libXdmcp-1.1.1.tar.bz2; sha256 = "13highx4xpgkiwykpcl7z2laslrjc4pzi4h617ny9p7r6116vkls"; @@ -687,6 +754,7 @@ let libXext = (mkDerivation "libXext" { name = "libXext-1.3.3"; builder = ./builder.sh; + useFakeTime = 1; src = fetchurl { url = mirror://xorg/individual/lib/libXext-1.3.3.tar.bz2; sha256 = "0dbfn5bznnrhqzvkrcmw4c44yvvpwdcsrvzxf4rk27r36b9x865m"; @@ -697,6 +765,7 @@ let libXfixes = (mkDerivation "libXfixes" { name = "libXfixes-5.0.1"; builder = ./builder.sh; + useFakeTime = 1; src = fetchurl { url = mirror://xorg/individual/lib/libXfixes-5.0.1.tar.bz2; sha256 = "0rs7qgzr6dpr62db7sd91c1b47hzhzfr010qwnpcm8sg122w1gk3"; @@ -707,6 +776,7 @@ let libXfont = (mkDerivation "libXfont" { name = "libXfont-1.4.8"; builder = ./builder.sh; + useFakeTime = 1; src = fetchurl { url = mirror://xorg/individual/lib/libXfont-1.4.8.tar.bz2; sha256 = "01fh2hnnaby8x6mv57x78nsqwhls70gwykldzd8b43vrpzzd8s2m"; diff --git a/pkgs/stdenv/generic/builder.sh b/pkgs/stdenv/generic/builder.sh index 60360e7b8256b..4722f3ce1009b 100644 --- a/pkgs/stdenv/generic/builder.sh +++ b/pkgs/stdenv/generic/builder.sh @@ -5,14 +5,27 @@ for i in $initialPath; do done mkdir $out +mkdir $out/bin echo "$preHook" > $out/setup cat "$setup" >> $out/setup +real_date=$(type -Pa date | sed 1d) + +if test -n "$real_date"; then + cat >$out/bin/date < $out/setup.tmp mv $out/setup.tmp $out/setup diff --git a/pkgs/stdenv/generic/default.nix b/pkgs/stdenv/generic/default.nix index 11731c1c1c105..aa9b3fbc14aab 100644 --- a/pkgs/stdenv/generic/default.nix +++ b/pkgs/stdenv/generic/default.nix @@ -1,7 +1,7 @@ let lib = import ../../../lib; in lib.makeOverridable ( { system, name ? "stdenv", preHook ? "", initialPath, gcc, shell -, extraAttrs ? {}, overrides ? (pkgs: {}), config +, libfaketime, extraAttrs ? {}, overrides ? (pkgs: {}), config , # The `fetchurl' to use for downloading curl and its dependencies # (see all-packages.nix). @@ -58,7 +58,7 @@ let setup = setupScript; - inherit preHook initialPath gcc shell; + inherit preHook initialPath gcc shell libfaketime; # Whether we should run paxctl to pax-mark binaries needsPax = result.isLinux && !skipPaxMarking; @@ -115,10 +115,11 @@ let __ignoreNulls = true; # Inputs built by the cross compiler. - buildInputs = lib.optionals (crossConfig != null) (buildInputs ++ extraBuildInputs); + buildInputs = lib.optionals (crossConfig != null) (buildInputs ++ extraBuildInputs) ++ + lib.optionals (libfaketime != null) [libfaketime]; propagatedBuildInputs = lib.optionals (crossConfig != null) propagatedBuildInputs; # Inputs built by the usual native compiler. - nativeBuildInputs = nativeBuildInputs ++ lib.optionals (crossConfig == null) (buildInputs ++ extraBuildInputs); + nativeBuildInputs = nativeBuildInputs ++ lib.optionals (crossConfig == null) (buildInputs ++ extraBuildInputs) ++ lib.optionals (libfaketime != null) [libfaketime]; propagatedNativeBuildInputs = propagatedNativeBuildInputs ++ lib.optionals (crossConfig == null) propagatedBuildInputs; }))) ( diff --git a/pkgs/stdenv/generic/setup.sh b/pkgs/stdenv/generic/setup.sh index c3b9033b49a6a..c35398d8f0891 100644 --- a/pkgs/stdenv/generic/setup.sh +++ b/pkgs/stdenv/generic/setup.sh @@ -100,6 +100,20 @@ if [ "$NIX_DEBUG" = 1 ]; then echo "initial path: $PATH" fi +# By setting useFakeTime, the time can be overridden. +# The following example sets the time to 1 for gcc and date +# FAKETIME="1970-01-01\ 00:00:01" +# FAKETIME_ONLY_CMDS="gcc,date" +if [ "$NIX_ENFORCE_PURITY" = "1" -a -n "@libfaketime@" -a -n "$useFakeTime" ]; then + makePreloads=("${makePreloads[@]}" LD_PRELOAD=@libfaketime@/lib/libfaketime.so.1) + if [ -z "$FAKETIME" ]; then + export FAKETIME="1970-01-01 00:00:01" + fi + echo "using libfaketime: FAKETIME_SKIP_CMDS:'$FAKETIME_SKIP_CMDS'" + echo "using libfaketime: FAKETIME_ONLY_CMDS:'$FAKETIME_ONLY_CMDS'" + echo "using libfaketime: FAKETIME_ONLY_CMDS:'$FAKETIME_ONLY_CMDS'" + echo "using libfaketime: FAKETIME:'$FAKETIME'" +fi # Execute the pre-hook. export SHELL=@shell@ @@ -632,10 +646,10 @@ buildPhase() { makeFlags="SHELL=$SHELL $makeFlags" echo "make flags: $makeFlags ${makeFlagsArray[@]} $buildFlags ${buildFlagsArray[@]}" - make ${makefile:+-f $makefile} \ + eval $(echo "${makePreloads[@]}") 'make ${makefile:+-f $makefile} \ ${enableParallelBuilding:+-j${NIX_BUILD_CORES} -l${NIX_BUILD_CORES}} \ $makeFlags "${makeFlagsArray[@]}" \ - $buildFlags "${buildFlagsArray[@]}" + $buildFlags "${buildFlagsArray[@]}"' runHook postBuild } @@ -645,10 +659,10 @@ checkPhase() { runHook preCheck echo "check flags: $makeFlags ${makeFlagsArray[@]} $checkFlags ${checkFlagsArray[@]}" - make ${makefile:+-f $makefile} \ + eval $(echo "${makePreloads[@]}") 'make ${makefile:+-f $makefile} \ ${enableParallelBuilding:+-j${NIX_BUILD_CORES} -l${NIX_BUILD_CORES}} \ $makeFlags "${makeFlagsArray[@]}" \ - ${checkFlags:-VERBOSE=y} "${checkFlagsArray[@]}" ${checkTarget:-check} + ${checkFlags:-VERBOSE=y} "${checkFlagsArray[@]}" ${checkTarget:-check}' runHook postCheck } @@ -735,9 +749,9 @@ installPhase() { installTargets=${installTargets:-install} echo "install flags: $installTargets $makeFlags ${makeFlagsArray[@]} $installFlags ${installFlagsArray[@]}" - make ${makefile:+-f $makefile} $installTargets \ + eval $(echo "${makePreloads[@]}") 'make ${makefile:+-f $makefile} $installTargets \ $makeFlags "${makeFlagsArray[@]}" \ - $installFlags "${installFlagsArray[@]}" + $installFlags "${installFlagsArray[@]}"' runHook postInstall } @@ -840,10 +854,20 @@ installCheckPhase() { runHook preInstallCheck echo "installcheck flags: $makeFlags ${makeFlagsArray[@]} $installCheckFlags ${installCheckFlagsArray[@]}" - make ${makefile:+-f $makefile} \ + eval $(echo "${makePreloads[@]}") 'make ${makefile:+-f $makefile} \ ${enableParallelBuilding:+-j${NIX_BUILD_CORES} -l${NIX_BUILD_CORES}} \ $makeFlags "${makeFlagsArray[@]}" \ - $installCheckFlags "${installCheckFlagsArray[@]}" ${installCheckTarget:-installcheck} + $installCheckFlags "${installCheckFlagsArray[@]}" ${installCheckTarget:-installcheck}' + + + if [ -z "$noErrorBuildTop" -a "$NIX_ENFORCE_PURITY" = "1" -a -n "$NIX_BUILD_TOP" ]; then + if grep -qr $NIX_BUILD_TOP $out; then + echo "ERROR: The following files include the build path: $NIX_BUILD_TOP" + echo "ERROR: Either fix the nix expression or set noErrorBuildTop" + grep -lr $NIX_BUILD_TOP $out + exit 1 + fi + fi runHook postInstallCheck } @@ -853,7 +877,8 @@ distPhase() { runHook preDist echo "dist flags: $distFlags ${distFlagsArray[@]}" - make ${makefile:+-f $makefile} $distFlags "${distFlagsArray[@]}" ${distTarget:-dist} + eval $("${makePreloads[@]}") 'make ${makefile:+-f $makefile} $distFlags "${distFlagsArray[@]}" \ + ${distTarget:-dist}' if [ "$dontCopyDist" != 1 ]; then mkdir -p "$out/tarballs" diff --git a/pkgs/stdenv/linux/default.nix b/pkgs/stdenv/linux/default.nix index 23cccf223f4f5..8ab7212caa393 100644 --- a/pkgs/stdenv/linux/default.nix +++ b/pkgs/stdenv/linux/default.nix @@ -69,21 +69,31 @@ rec { # This function builds the various standard environments used during # the bootstrap. stdenvBootFun = - {gcc, extraAttrs ? {}, overrides ? (pkgs: {}), extraPath ? [], fetchurl}: + {gcc, extraAttrs ? {}, overrides ? (pkgs: {}), extraPath ? [], fetchurl, + deterministic ? false, bootnum ? "", binutils}: import ../generic { inherit system config; - name = "stdenv-linux-boot"; + name = "stdenv-linux-boot" + bootnum; preHook = '' # Don't patch #!/interpreter because it leads to retained # dependencies on the bootstrapTools in the final stdenv. dontPatchShebangs=1 ${commonPreHook} + '' + + lib.optionalString deterministic '' + # Make "strip" produce deterministic output, by setting + # timestamps etc. to a fixed value. + commonStripFlags="--enable-deterministic-archives" ''; + shell = "${bootstrapTools}/bin/sh"; - initialPath = [bootstrapTools] ++ extraPath; + # We put binutils before bootstrapTools so that we gradually use less from bootstrapTools. + # Also, deterministic builds require a fresh binutils (strip). + initialPath = [binutils] ++ [bootstrapTools] ++ extraPath; fetchurlBoot = fetchurl; + libfaketime = null; inherit gcc; # Having the proper 'platform' in all the stdenvs allows getting proper # linuxHeaders for example. @@ -97,7 +107,9 @@ rec { # because we need a stdenv to build the GCC wrapper and fetchurl. stdenvLinuxBoot0 = stdenvBootFun { gcc = "/no-such-path"; + bootnum = "0"; fetchurl = null; + binutils = null; }; @@ -142,6 +154,10 @@ rec { binutils = bootstrapTools; coreutils = bootstrapTools; }; + bootnum = "1"; + # The bootstrap tools might not support a deterministic strip + deterministic = false; + binutils = bootstrapTools; inherit fetchurl; }; @@ -168,6 +184,9 @@ rec { overrides = pkgs: { inherit (stdenvLinuxBoot1Pkgs) perl; }; + bootnum = "2"; + deterministic = true; + binutils = binutils1; inherit fetchurl; }; @@ -211,6 +230,9 @@ rec { glibc = stdenvLinuxGlibc; # Required by gcc47 build }; extraPath = [ stdenvLinuxBoot1Pkgs.paxctl ]; + bootnum = "3"; + deterministic = true; + binutils = binutils1; inherit fetchurl; }; @@ -238,6 +260,9 @@ rec { inherit (stdenvLinuxBoot1Pkgs) perl; inherit (stdenvLinuxBoot3Pkgs) gettext gnum4 gmp; }; + bootnum = "4"; + deterministic = true; + binutils = binutils1; inherit fetchurl; }; @@ -289,13 +314,15 @@ rec { shellPackage = stdenvLinuxBoot4Pkgs.bash; }; + inherit (stdenvLinuxBoot4Pkgs) libfaketime; + overrides = pkgs: { inherit gcc; inherit (stdenvLinuxBoot3Pkgs) glibc; inherit (stdenvLinuxBoot4Pkgs) binutils; inherit (stdenvLinuxBoot4Pkgs) gzip bzip2 xz bash coreutils diffutils findutils gawk - gnumake gnused gnutar gnugrep gnupatch patchelf + gnumake gnused gnutar gnugrep gnupatch libfaketime patchelf attr acl paxctl; }; }; diff --git a/pkgs/tools/filesystems/e2fsprogs/default.nix b/pkgs/tools/filesystems/e2fsprogs/default.nix index dcbf7235e49c4..f637bd3070a25 100644 --- a/pkgs/tools/filesystems/e2fsprogs/default.nix +++ b/pkgs/tools/filesystems/e2fsprogs/default.nix @@ -25,6 +25,12 @@ stdenv.mkDerivation rec { postInstall = "make install-libs"; + # Remove references to the build directory + preFixup = '' + sed -i -e 's/ET_DIR=".*"/""/' $out/bin/compile_et + sed -i -e 's/SS_DIR=".*"/""/' $out/bin/mk_cmds + ''; + meta = { homepage = http://e2fsprogs.sourceforge.net/; description = "Tools for creating and checking ext2/ext3/ext4 filesystems"; diff --git a/pkgs/tools/networking/ntp/default.nix b/pkgs/tools/networking/ntp/default.nix index 465f15184f143..1f9c01f501bbc 100644 --- a/pkgs/tools/networking/ntp/default.nix +++ b/pkgs/tools/networking/ntp/default.nix @@ -16,6 +16,11 @@ stdenv.mkDerivation rec { ''; buildInputs = stdenv.lib.optional stdenv.isLinux libcap; + # Do not useFakeTime here, as this can create indeterminism + # in the version string, because ntp records how many times a + # certain file is regenerated, and with libfaketime it can + # happen more than once. + patches = [ ./fixed-date-in-version-string.patch ]; meta = { homepage = http://www.ntp.org/; diff --git a/pkgs/tools/networking/ntp/fixed-date-in-version-string.patch b/pkgs/tools/networking/ntp/fixed-date-in-version-string.patch new file mode 100644 index 0000000000000..b9f3545edf610 --- /dev/null +++ b/pkgs/tools/networking/ntp/fixed-date-in-version-string.patch @@ -0,0 +1,12 @@ +diff -ur ntp-4.2.6p5.orig/scripts/mkver.in ntp-4.2.6p5/scripts/mkver.in +--- ntp-4.2.6p5.orig/scripts/mkver.in 2010-01-24 11:01:47.000000000 +0100 ++++ ntp-4.2.6p5/scripts/mkver.in 2014-04-13 00:01:02.262030824 +0200 +@@ -17,7 +17,7 @@ + *) ConfStr="${ConfStr}-?" ;; + esac + +-ConfStr="$ConfStr `LC_TIME=C TZ=UTC date`" ++ConfStr="${ConfStr}Thu Jan 1 00:00:01 UTC 1970" + + if [ ! -f .version ]; then + echo 0 > .version diff --git a/pkgs/tools/system/smartmontools/default.nix b/pkgs/tools/system/smartmontools/default.nix index 0290d1961ce53..2c4cdbcccfdee 100644 --- a/pkgs/tools/system/smartmontools/default.nix +++ b/pkgs/tools/system/smartmontools/default.nix @@ -16,11 +16,16 @@ stdenv.mkDerivation rec { sha256 = "0nq6jvfh8nqwfrvp6fb6qs2rdydi3i9xgpi7p7vb83xvg42ncvs8"; }; - patchPhase = '' + prePatch = '' : cp ${driverdb} drivedb.h sed -i -e 's@which which >/dev/null || exit 1@alias which="type -p"@' update-smart-drivedb.in ''; + patches = [ ./no-dates-in-binary.patch ]; + + # This package does not handle useFakeTime well + # useFakeTime = 1; + meta = { description = "Tools for monitoring the health of hard drivers"; homepage = "http://smartmontools.sourceforge.net/"; diff --git a/pkgs/tools/system/smartmontools/no-dates-in-binary.patch b/pkgs/tools/system/smartmontools/no-dates-in-binary.patch new file mode 100644 index 0000000000000..4ccad7c50de07 --- /dev/null +++ b/pkgs/tools/system/smartmontools/no-dates-in-binary.patch @@ -0,0 +1,12 @@ +diff -ur smartmontools-6.2.orig/configure smartmontools-6.2/configure +--- smartmontools-6.2.orig/configure 2013-07-26 19:39:04.000000000 +0200 ++++ smartmontools-6.2/configure 2014-04-12 17:30:57.023293078 +0200 +@@ -2390,6 +2390,8 @@ + + + smartmontools_configure_date=`date -u +'%Y-%m-%d %T %Z'` ++smartmontools_configure_date="1970-01-01 00:00:01 UTC" ++ + smartmontools_cvs_tag=`echo '$Id: configure.ac 3841 2013-07-26 17:38:57Z chrfranke $'` + smartmontools_release_date=2013-07-26 + smartmontools_release_time="17:38:20 UTC" diff --git a/pkgs/tools/text/groff/default.nix b/pkgs/tools/text/groff/default.nix index 97cc3c611733f..99c191fdc3ae1 100644 --- a/pkgs/tools/text/groff/default.nix +++ b/pkgs/tools/text/groff/default.nix @@ -28,6 +28,15 @@ stdenv.mkDerivation rec { ''; }; + useFakeTime = 1; + postInstall = '' + # Remove example output with (random?) colors to + # avoid non-determinism in the output + rm $out/share/doc/${name}/examples/hdtbl/*color*ps + # Remove creation date + find $out/share/doc/${name} -type f -print0 | xargs -0 sed -i -e 's/%%CreationDate: .*//' + ''; + meta = { homepage = "http://www.gnu.org/software/groff/"; description = "GNU Troff, a typesetting package that reads plain text and produces formatted output"; diff --git a/pkgs/tools/text/sgml/opensp/default.nix b/pkgs/tools/text/sgml/opensp/default.nix index 59b9b7bc13d13..23ce8ccc5a885 100644 --- a/pkgs/tools/text/sgml/opensp/default.nix +++ b/pkgs/tools/text/sgml/opensp/default.nix @@ -13,8 +13,16 @@ stdenv.mkDerivation { docsrc/*.xml ''; + setupHook = ./setup-hook.sh; + postFixup = '' + # Remove random ids in the release notes + sed -i -e 's/href="#idm.*"//g' $out/share/doc/OpenSP/releasenotes.html + sed -i -e 's/name="idm.*"//g' $out/share/doc/OpenSP/releasenotes.html + ''; + + buildInputs = [ xmlto docbook_xml_dtd_412 libxslt docbook_xsl ]; meta = { diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index d2d0f69132c47..8cfdd9077c127 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -366,7 +366,7 @@ let inherit lib; }; - makeInitrd = {contents, compressor ? "gzip -9"}: + makeInitrd = {contents, compressor ? "gzip -9n"}: import ../build-support/kernel/make-initrd.nix { inherit stdenv perl perlArchiveCpio cpio contents ubootChooser compressor; }; @@ -664,6 +664,8 @@ let enableStandardFeatures = true; }); + atomicops = callPackage ../development/libraries/atomic-ops { }; + autossh = callPackage ../tools/networking/autossh { }; bacula = callPackage ../tools/backup/bacula { }; @@ -2837,7 +2839,8 @@ let inherit noSysDirs; # PGO seems to speed up compilation by gcc by ~10%, see #445 discussion - profiledCompiler = with stdenv; (!isDarwin && (isi686 || isx86_64)); + # however, it results in non-deterministic output + profiledCompiler = false; # When building `gcc.crossDrv' (a "Canadian cross", with host == target # and host != build), `cross' must be null but the cross-libc must still @@ -5291,6 +5294,8 @@ let libf2c = callPackage ../development/libraries/libf2c {}; + libfaketime = callPackage ../development/libraries/libfaketime {}; + libfixposix = callPackage ../development/libraries/libfixposix {}; libffcall = builderDefsPackage (import ../development/libraries/libffcall) {