aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2012-08-27Disable the binary cache substituter by default for nowEelco Dolstra
2012-08-27Fix stupid type error in calling std::maxEelco Dolstra
2012-08-27Add libwww-curl-perl to the Debian/Ubuntu imagesEelco Dolstra
2012-08-27Add WWW::Curl to the RPM dependenciesEelco Dolstra
2012-08-27Add perl-WWW-Curl to the RPM imageEelco Dolstra
2012-08-27WhitespaceEelco Dolstra
2012-08-27Drop dependency on List::MoreUtilsEelco Dolstra
2012-08-27Add missing fileEelco Dolstra
2012-08-27Merge branch 'master' into no-manifestsEelco Dolstra
2012-08-24Include the output name in the GC root linkEelco Dolstra
Output names are now appended to resulting GC symlinks, e.g. by nix-build. For backwards compatibility, if the output is named "out", nothing is appended. E.g. doing "nix-build -A foo" on a derivation that produces outputs "out", "bin" and "dev" will produce symlinks "./result", "./result-bin" and "./result-dev", respectively.
2012-08-22Receive reserveSpace before calling startWork()Eelco Dolstra
Otherwise we can get a SIGPOLL. Reported by Ludovic.
2012-08-20Check if MS_PRIVATE is definedEelco Dolstra
http://hydra.nixos.org/build/2955671
2012-08-20In the chroot, make all mounted filesystems privateEelco Dolstra
This is required on systemd, which mounts filesystems as "shared" subtrees. Changes to shared trees in a private mount namespace are propagated to the outside world, which is bad.
2012-08-20Don't bind-mount /proc since we mount our ownEelco Dolstra
2012-08-19Fix 1755 permission on temporary directories left behind by ‘-K’Eelco Dolstra
2012-08-13Avoid concatenating lists of one stringEelco Dolstra
2012-08-13Don't allocate empty listsEelco Dolstra
This saves about 4 MB when evaluating a NixOS system configuration.
2012-08-13Optimise concatenating a list to an empty listEelco Dolstra
More precisely, in concatLists, if all lists except one are empty, then just return the non-empty list. This reduces the number of list element allocations by 32% when evaluating a NixOS system configuration.
2012-08-13Add a primop ‘elemAt’ to get an element from a listEelco Dolstra
2012-08-13Add a primop ‘concatLists’Eelco Dolstra
This can serve as a generic efficient list builder. For instance, the function ‘catAttrs’ in Nixpkgs can be rewritten from attr: l: fold (s: l: if hasAttr attr s then [(getAttr attr s)] ++ l else l) [] l to attr: l: builtins.concatLists (map (s: if hasAttr attr s then [(getAttr attr s)] else []) l) Statistics before: time elapsed: 1.08683 size of a value: 24 environments allocated: 1384376 (35809568 bytes) list elements: 6946783 (55574264 bytes) list concatenations: 37434 values allocated: 1760440 (42250560 bytes) attribute sets allocated: 392040 right-biased unions: 186334 values copied in right-biased unions: 591137 symbols in symbol table: 18273 number of thunks: 1297673 number of thunks avoided: 1380759 number of attr lookups: 430802 number of primop calls: 628912 number of function calls: 1333544 Statistics after (including new catAttrs): time elapsed: 0.959854 size of a value: 24 environments allocated: 1010198 (26829296 bytes) list elements: 1984878 (15879024 bytes) list concatenations: 30488 values allocated: 1589760 (38154240 bytes) attribute sets allocated: 392040 right-biased unions: 186334 values copied in right-biased unions: 591137 symbols in symbol table: 18274 number of thunks: 1040925 number of thunks avoided: 1038428 number of attr lookups: 438419 number of primop calls: 474844 number of function calls: 959366
2012-08-13Provide an efficient implementation of ‘elem’Eelco Dolstra
The one in Nixpkgs is O(n^2), this one is O(n). Big reduction in the number of list allocations. Statistics before (on a NixOS system config): time elapsed: 1.17982 size of a value: 24 environments allocated: 1543334 (39624560 bytes) list elements: 9612638 (76901104 bytes) list concatenations: 37434 values allocated: 1854933 (44518392 bytes) attribute sets allocated: 392040 right-biased unions: 186334 values copied in right-biased unions: 591137 symbols in symbol table: 18272 number of thunks: 1392467 number of thunks avoided: 1507311 number of attr lookups: 430801 number of primop calls: 691600 number of function calls: 1492502 Statistics after: time elapsed: 1.08683 size of a value: 24 environments allocated: 1384376 (35809568 bytes) list elements: 6946783 (55574264 bytes) list concatenations: 37434 values allocated: 1760440 (42250560 bytes) attribute sets allocated: 392040 right-biased unions: 186334 values copied in right-biased unions: 591137 symbols in symbol table: 18273 number of thunks: 1297673 number of thunks avoided: 1380759 number of attr lookups: 430802 number of primop calls: 628912 number of function calls: 1333544
2012-08-13Add a "filter" primopEelco Dolstra
Evaluation of a NixOS configuration spends quite a lot of time in the "filter" function in Nixpkgs. As implemented in Nixpkgs, this is a O(n^2) operation, so it's a good candidate for providing a more efficient (i.e. primop) implementation. Using it gives a ~10% speed increase and a significant reduction in the number of evaluations. Statistics before (on a NixOS system config): time elapsed: 1.3258 size of a value: 24 environments allocated: 1980939 (50127080 bytes) list elements: 14679308 (117434464 bytes) list concatenations: 50828 values allocated: 2098938 (50374512 bytes) attribute sets allocated: 392040 right-biased unions: 186334 values copied in right-biased unions: 591137 symbols in symbol table: 18271 number of thunks: 1645752 number of thunks avoided: 1921196 number of attr lookups: 430798 number of primop calls: 838807 number of function calls: 1930107 Statistics after: time elapsed: 1.17982 size of a value: 24 environments allocated: 1543334 (39624560 bytes) list elements: 9612638 (76901104 bytes) list concatenations: 37434 values allocated: 1854933 (44518392 bytes) attribute sets allocated: 392040 right-biased unions: 186334 values copied in right-biased unions: 591137 symbols in symbol table: 18272 number of thunks: 1392467 number of thunks avoided: 1507311 number of attr lookups: 430801 number of primop calls: 691600 number of function calls: 1492502
2012-08-12Add some more evaluations statsEelco Dolstra
2012-08-12Add some basic profiling support to the evaluatorEelco Dolstra
Setting the environment variable NIX_COUNT_CALLS to 1 enables some basic profiling in the evaluator. It will count calls to functions and primops as well as evaluations of attributes. For example, to see where evaluation of a NixOS configuration spends its time: $ NIX_SHOW_STATS=1 NIX_COUNT_CALLS=1 ./src/nix-instantiate/nix-instantiate '<nixos>' -A system --readonly-mode ... calls to 39 primops: 239532 head 233962 tail 191252 hasAttr ... calls to 1595 functions: 224157 `/nix/var/nix/profiles/per-user/root/channels/nixos/nixpkgs/pkgs/lib/lists.nix:17:19' 221767 `/nix/var/nix/profiles/per-user/root/channels/nixos/nixpkgs/pkgs/lib/lists.nix:17:14' 221767 `/nix/var/nix/profiles/per-user/root/channels/nixos/nixpkgs/pkgs/lib/lists.nix:17:10' ... evaluations of 7088 attributes: 167377 undefined position 132459 `/nix/var/nix/profiles/per-user/root/channels/nixos/nixpkgs/pkgs/lib/attrsets.nix:119:41' 47322 `/nix/var/nix/profiles/per-user/root/channels/nixos/nixpkgs/pkgs/lib/attrsets.nix:13:21' ...
2012-08-07Don't warn about maximum link count exceeded on 0-byte filesEelco Dolstra
2012-08-05Handle amount of disk space saved by hard linking being negativeEelco Dolstra
Fixes bogus messages like "currently hard linking saves 17592186044416.00 MiB".
2012-08-05Fix race condition when two processes create a hard link to a file in .linksEelco Dolstra
This is a problem because one process may set the immutable bit before the second process has created its link. Addressed random Hydra failures such as: error: cannot rename `/nix/store/.tmp-link-17397-1804289383' to `/nix/store/rsvzm574rlfip3830ac7kmaa028bzl6h-nixos-0.1pre-git/upstart-interface-version': Operation not permitted
2012-08-05Fix race condition when two processes create the same link in /nix/store/.linksEelco Dolstra
2012-08-01Count bytes freed deleting unused linksEelco Dolstra
2012-08-01Drop the block count in the garbage collectorEelco Dolstra
2012-08-01nix-store --gc: Make ‘--max-freed 0’ do the right thingEelco Dolstra
That is, delete almost nothing (it will still remove unused links from /nix/store/.links).
2012-08-01removeUnusedLinks(): Print stats on disk space saved by hard linkingEelco Dolstra
2012-08-01Merge branch 'master' into no-manifestsEelco Dolstra
2012-08-01nix-channel: Use binary caches advertised by channelsEelco Dolstra
Channels can now advertise a binary cache by creating a file <channel-url>/binary-cache-url. The channel unpacker puts these in its "binary-caches" subdirectory. Thus, the URLS of the binary caches for the channels added by root appear in /nix/var/nix/profiles/per-user/eelco/channels/binary-caches/*. The binary cache substituter reads these and adds them to the list of binary caches.
2012-08-01DohEelco Dolstra
2012-08-01nix-env: Ignore manifest.nix when recursing into ~/.nix-defexprEelco Dolstra
Channels are implemented using a profile now, and profiles contain a manifest.nix file. This should be ignored to prevent bogus packages from showing up in nix-env.
2012-08-01Use a GNU tar flag to shut up warnings about implausibly old timestampEelco Dolstra
2012-08-01Inline unpack-channel.shEelco Dolstra
2012-08-01DohEelco Dolstra
2012-08-01Make ‘nix-store --optimise’ interruptibleEelco Dolstra
2012-08-01download-from-binary-cache: Remove duplicate URLsEelco Dolstra
2012-08-01Report substituter errors to clients of the Nix daemonEelco Dolstra
2012-07-31Allow daemon users to override ‘binary-caches’Eelco Dolstra
For security reasons, daemon users can only specify caches that appear in the ‘binary-caches’ and ‘trusted-binary-caches’ options in nix.conf.
2012-07-31Prevent an injection attack in passing untrusted options to substitutersEelco Dolstra
2012-07-31Pass all --option flags to the daemonEelco Dolstra
2012-07-31Add an option ‘build-fallback’ (equivalent to the --fallback flag)Eelco Dolstra
2012-07-30Manual: Remove reference to non-existent -I optionEelco Dolstra
2012-07-30Refactor settings processingEelco Dolstra
Put all Nix configuration flags in a Settings object.
2012-07-30WhitespaceEelco Dolstra
2012-07-30Do some validation of URLsEelco Dolstra