anchor.diff:  # cannot execute.
   #
   # To avoid these issues, the build is configured using the 'cpuConfig'
  -# parameter as follows:
  +# parameter. Upstream recommends these defaults for distributions:
   #
   #   | x86 CPU                                     | x86_64 CPU             |
   #   |---------------------------------------------+------------------------|
   #   | -b 32                                       | -b 64                  |
  -#   | -A 18  (Pentium II)                         | -A 31 (Athlon K7)      |
  -#   | -V 1 (No SIMD: Pentium II doesn't have SSE) | -V 384 (SSE1 and SSE2) |
  +#   | -A 12  (x86x87)                             | -A 14 (x86SSE2)        |
  +#   | -V 1 (No SIMD)                              | -V 384 (SSE1 and SSE2) |
   #
  -# Users who want to compile a highly optimized version of ATLAS that's suitable
  -# for their local machine can override these settings accordingly.
  +# These defaults should give consistent performance across machines.
  +# Performance will be substantially lower than an optimized build, but a build
  +# optimized for one machine will give even worse performance on others. If you
  +# are a serious user of Atlas (e.g., you write code that uses it) you should
  +# compile an optimized version for each of your machines.
  +#
  +# The parameter 'cacheEdge' sets the L2 cache per core (in bytes). Setting this
  +# parameter reduces build time because some tests to detect the L2 cache size
  +# will not be run. It will also reduce impurity; different build nodes on Hydra
  +# may have different L2 cache sizes, but fixing the L2 cache size should
  +# account for that. This also makes the performance of binary substitutes more
  +# consistent.
   #
   # The -V flags can change with each release as new instruction sets are added
   # because upstream thinks it's a good idea to add entries at the start of an
   # enum, rather than the end. If the build suddenly fails with messages about
   # missing instruction sets, you may need to poke around in the source a bit.
  +#
  +# Upstream recommends the x86x87/x86SSE2 architectures for generic x86/x86_64
  +# for distribution builds. Additionally, we set 'cacheEdge' to reduce impurity.
  +# Otherwise, the cache parameters will be detected by timing which will be
  +# highly variable on Hydra.
   
   let
  +  inherit (stdenv.lib) optional optionalString;
     version = "3.10.2";
  -
  -  optionalString = stdenv.lib.optionalString;
  -  optional = stdenv.lib.optional;
   in
   
   stdenv.mkDerivation {
  
positive.code:   patches = optional tolerateCpuTimingInaccuracy ./disable-timing-accuracy-check.patch;
  
    # Configure outside of the source directory.
    preConfigure = '' mkdir build; cd build; configureScript=../configure; '';
  
    # * -fPIC is passed even in non-shared builds so that the ATLAS code can be
    #   used to inside of shared libraries, like Octave does.
    #
    # * -t 0 disables use of multi-threading. It's not quite clear what the
    #   consequences of that setting are and whether it's necessary or not.
    configureFlags = "-Fa alg -fPIC -t 0 ${cpuConfig}" + optionalString shared " --shared";
  
    doCheck = true;
  
    meta = {
      homepage = "http://math-atlas.sourceforge.net/";
  
negative.code: { stdenv, fetchurl, gfortran, tolerateCpuTimingInaccuracy ? true, shared ? false
  , cpuConfig ? if stdenv.isi686 then "-b 32 -A 12 -V 1" else "-b 64 -A 14 -V 384"
  , cacheEdge ? "262144"
  , threads ? "0"
  }:
  
  # Atlas detects the CPU and optimizes its build accordingly. This is great when
  