Skip to content
Snippets Groups Projects
  1. Feb 04, 2016
    • Eelco Dolstra's avatar
      Eliminate the "store" global variable · c10c6144
      Eelco Dolstra authored
      Also, move a few free-standing functions into StoreAPI and Derivation.
      
      Also, introduce a non-nullable smart pointer, ref<T>, which is just a
      wrapper around std::shared_ptr ensuring that the pointer is never
      null. (For reference-counted values, this is better than passing a
      "T&", because the latter doesn't maintain the refcount. Usually, the
      caller will have a shared_ptr keeping the value alive, but that's not
      always the case, e.g., when passing a reference to a std::thread via
      std::bind.)
      c10c6144
  2. Jan 31, 2016
    • Eelco Dolstra's avatar
      Add build mode to compute fixed-output derivation hashes · d367b8e7
      Eelco Dolstra authored
      For example,
      
        $ nix-build --hash -A nix-repl.src
      
      will build the fixed-output derivation nix-repl.src (a fetchFromGitHub
      call), but instead of *verifying* the hash given in the Nix
      expression, it prints out the resulting hash, and then moves the
      result to its content-addressed location in the Nix store. E.g
      
        build produced path ‘/nix/store/504a4k6zi69dq0yjc0bm12pa65bccxam-nix-repl-8a2f5f06-src’ with sha256 hash ‘0cjablz01i0g9smnavhf86imwx1f9mnh5flax75i615ml71gsr88’
      
      The goal of this is to make all nix-prefetch-* scripts unnecessary: we
      can just let Nix run the real thing (i.e., the corresponding fetch*
      derivation).
      
      Another example:
      
        $ nix-build --hash -E 'with import <nixpkgs> {}; fetchgit { url = "https://github.com/NixOS/nix.git"; sha256 = "ffffffffffffffffffffffffffffffffffffffffffffffffffff"; }'
        ...
        git revision is 9e7c1a4b
        ...
        build produced path ‘/nix/store/gmsnh9i7x4mb7pyd2ns7n3c9l90jfsi1-nix’ with sha256 hash ‘1188xb621diw89n25rifqg9lxnzpz7nj5bfh4i1y3dnis0dmc0zp’
      
      (Having to specify a fake sha256 hash is a bit annoying...)
      d367b8e7
    • Eelco Dolstra's avatar
  3. Jan 28, 2016
  4. Jan 27, 2016
  5. Jan 20, 2016
  6. Jan 19, 2016
  7. Jan 12, 2016
    • Fabian Schmitthenner's avatar
    • Eelco Dolstra's avatar
      --option build-repeat: Keep the differing output if -K is given · 786046cf
      Eelco Dolstra authored
      Similar to 00903fa7. Regardless of -K,
      we now also print which output differs.
      786046cf
    • Eelco Dolstra's avatar
      Canonicalize gids to 0 · 8906eda2
      Eelco Dolstra authored
      Previously files in the Nix store were owned by root or by nixbld,
      depending on whether they were created by a substituter or by a
      builder. This doesn't matter much, but causes spurious diffoscope
      differences. So use root everywhere.
      8906eda2
    • Eelco Dolstra's avatar
      --check: Keep the differing output if -K is given · 00903fa7
      Eelco Dolstra authored
      This makes it easier to investigate the non-determinism, e.g.
      
        $ nix-build pkgs/stdenv/linux -A stage1.pkgs.zlib --check -K
        error: derivation ‘/nix/store/l54i8wlw22656i4pk05c52ngv9rpl39q-zlib-1.2.8.drv’ may not be deterministic: output ‘/nix/store/11a27shh6n2ivi4a7s964i65ql80cf27-zlib-1.2.8’ differs from ‘/nix/store/11a27shh6n2ivi4a7s964i65ql80cf27-zlib-1.2.8-check’
      
        $ diffoscope /nix/store/11a27shh6n2ivi4a7s964i65ql80cf27-zlib-1.2.8 /nix/store/11a27shh6n2ivi4a7s964i65ql80cf27-zlib-1.2.8-check
        ...
        ├── lib/libz.a
        │   ├── metadata
        │   │ @@ -1,15 +1,15 @@
        │   │ -rw-r--r-- 30001/30000   3096 Jan 12 15:20 2016 adler32.o
        ...
        │   │ +rw-r--r-- 30001/30000   3096 Jan 12 15:28 2016 adler32.o
        ...
      00903fa7
    • Eelco Dolstra's avatar
      --check: Fix "failed to produce output path" · 0cad1f80
      Eelco Dolstra authored
      This occured when sandbox building is disabled, at least one output
      exists, and at least one other output does not.
      0cad1f80
    • Eelco Dolstra's avatar
      --check: Fix assertion failure when some outputs are missing · 1c57ab8b
      Eelco Dolstra authored
      E.g.
      
        $ nix-build pkgs/stdenv/linux/ -A stage1.pkgs.perl --check
        nix-store: src/libstore/build.cc:1323: void nix::DerivationGoal::tryToBuild(): Assertion `buildMode != bmCheck || validPaths.size() == drv->outputs.size()' failed.
      
      when perl.out exists but perl.man doesn't. The fix is to only check
      the outputs that exist. Note that "nix-build -A stage1.pkgs.all
      --check" will still give a (proper) error in this case.
      1c57ab8b
  8. Jan 07, 2016
  9. Jan 06, 2016
  10. Jan 05, 2016
  11. Jan 04, 2016
    • Eelco Dolstra's avatar
      Don't allow sandbox profile except in relaxed mode · 71a93a5f
      Eelco Dolstra authored
      This makes Darwin consistent with Linux: Nix expressions can't break
      out of the sandbox unless relaxed sandbox mode is enabled.
      
      For the normal sandbox mode this will require fixing #759 however.
      71a93a5f
    • Eelco Dolstra's avatar
      ~PathLocks(): Handle exceptions · 77ad443b
      Eelco Dolstra authored
      Otherwise, since the call to write a "d" character to the lock file
      can fail with ENOSPC, we can get an unhandled exception resulting in a
      call to terminate().
      77ad443b
  12. Dec 29, 2015
    • Eelco Dolstra's avatar
      Fix regression in passAsFile · b8258a44
      Eelco Dolstra authored
      Caused by 8063fc49. If tmpDir !=
      tmpDirInSandbox (typically when there are multiple concurrent builds
      with the same name), the *Path attribute would not point to an
      existing file. This caused Nixpkgs' writeTextFile to write an empty
      file. In particular this showed up as hanging VM builds (because it
      would run an empty run-nixos-vm script and then wait for it to finish
      booting).
      b8258a44
  13. Dec 22, 2015
  14. Dec 17, 2015
  15. Dec 10, 2015
  16. Dec 08, 2015
    • Bjørn Forsman's avatar
      Clarify error message for hash mismatches (again) · 65bd82d4
      Bjørn Forsman authored
      This is arguably nitpicky, but I think this new formulation is even
      clearer. My thinking is that it's easier to comprehend when the
      calculated hash value is displayed close to the output path. (I think it
      is somewhat similar to eliminating double negatives in logic
      statements.)
      
      The formulation is inspired / copied from the OpenEmbedded build tool,
      bitbake.
      65bd82d4
Loading