Find a file
Eelco Dolstra 4f09ce7940
Fix 'deadlock: trying to re-acquire self-held lock'
This was caused by derivations with 'allowSubstitutes = false'. Such
derivations will be built locally. However, if there is another
SubstitionGoal that has the output of the first derivation in its
closure, then the path will be simultaneously built and substituted.

There was a check to catch this situation (via pathIsLockedByMe()),
but it no longer worked reliably because substitutions are now done in
another thread. (Thus the comment 'It can't happen between here and
the lockPaths() call below because we're not allowing multi-threading'
was no longer valid.)

The fix is to handle the path already being locked in both
SubstitutionGoal and DerivationGoal.
2018-02-12 17:06:06 +01:00
.github Rename 1.12 -> 2.0 2018-01-31 18:58:45 +01:00
config Add config.guess, config.sub and install-sh 2013-11-25 11:26:02 +00:00
corepkgs <nix/fetchurl.nix>: Don't access builtins.currentSystem 2018-01-16 19:24:23 +01:00
doc/manual Merge pull request #1816 from shlevy/add-path 2018-02-07 13:32:35 +01:00
maintainers upload-release.pl: support aarch64-linux 2017-12-07 19:02:35 -05:00
misc docker: ensure that the installation works for users other than 'root', too 2017-10-07 17:28:34 +02:00
mk Add pure evaluation mode 2018-01-16 19:23:18 +01:00
perl Replace Unicode quotes in user-facing strings by ASCII 2017-07-30 12:32:45 +01:00
scripts solves #1582 2018-01-29 21:33:17 +01:00
src Fix 'deadlock: trying to re-acquire self-held lock' 2018-02-12 17:06:06 +01:00
tests nix-env: Fix parsing of --system 2018-02-08 15:25:03 +01:00
.dir-locals.el Add .dir-locals.el for Emacs 2016-01-28 11:12:04 +01:00
.editorconfig Add .editorconfig 2017-06-05 22:57:28 +01:00
.gitignore Reverse retry logic to retry in all but a few cases 2017-10-02 23:22:02 -04:00
.travis.yml Test the installer 2017-07-14 12:11:04 -04:00
bootstrap.sh bootstrap: Simplify & make more robust. 2011-09-06 12:11:05 +00:00
configure.ac configure: Use $CPP instead of cpp directly 2018-01-29 02:20:48 -05:00
COPYING * Change this to LGPL to keep the government happy. 2006-04-25 16:41:06 +00:00
local.mk release.nix: Use fetchTarball and fetchGit 2017-12-22 11:35:32 +01:00
Makefile Remove nix-mode.el from Nix. 2017-08-19 21:16:30 -07:00
Makefile.config.in use libbrotli directly when available 2017-12-30 20:26:33 -06:00
nix.spec.in Fix RPM build 2017-10-24 15:44:29 +02:00
README.md Fix minor grammatical nitpick ("it's" vs. "its") in README.md. 2017-03-22 10:11:23 -04:00
release-common.nix release-common: use shell from nixpkgs, provide fallback for compat 2018-02-05 11:33:18 -06:00
release.nix Simplify 2018-02-07 14:15:20 +01:00
shell.nix Simplify build by including nlohmann/json.hpp 2017-12-04 17:11:36 +01:00
version Rename 1.12 -> 2.0 2018-01-31 18:58:45 +01:00

Nix, the purely functional package manager

Nix is a new take on package management that is fairly unique. Because of its purity aspects, a lot of issues found in traditional package managers don't appear with Nix.

To find out more about the tool, usage and installation instructions, please read the manual, which is available on the Nix website at http://nixos.org/nix/manual.

Contributing

Take a look at the Hacking Section of the manual. It helps you to get started with building Nix from source.

License

Nix is released under the LGPL v2.1

This product includes software developed by the OpenSSL Project for use in the OpenSSL Toolkit.