aboutsummaryrefslogtreecommitdiff
path: root/src/libexpr
AgeCommit message (Collapse)Author
2021-10-11(partially) Revert "Don't copy in rethrow"regnat
This reverts some parts of commit 8430a8f0866e4463a891ccce62779ea9ac0f3b38 which was trying to rethrow some exceptions while we weren’t in the context of a `catch` block, causing some weird “terminate called without an active exception” errors. Fix #5368
2021-10-07Make builtins.{path,filterSource} work with chroot storesEelco Dolstra
2021-10-07Add a trace to all errors in addPath()Eelco Dolstra
2021-10-07Allow builtins.{path,filterSource} on paths with a contextEelco Dolstra
We now build the context (so this has the side-effect of making builtins.{path,filterSource} work on derivations outputs, if IFD is enabled) and then check that the path has no references (which is what we really care about).
2021-10-07Remove unnecessary call to queryMissing()Eelco Dolstra
Worker::run() already does this.
2021-10-07Allow access to path copied to the storeEelco Dolstra
Fixes https://github.com/NixOS/nix/pull/5163#issuecomment-931733912.
2021-10-07Refactoring: Add allowPath() methodEelco Dolstra
2021-10-07Merge pull request #5341 from andir/libexpr-formalsEelco Dolstra
libexpr: remove matchAttrs boolean from ExprLambda
2021-10-06Merge pull request #5286 from ilkecan/add-a-warning-to-filterSourceEelco Dolstra
Warn about the usage of filterSource with Nix store paths
2021-10-06Add a warning to `filterSource`ilkecan
Warn about the usage of `filterSource` with Nix store paths
2021-10-06Remove no-op call to realiseContext()Eelco Dolstra
2021-10-06Merge branch 'flakes_filterSource' of https://github.com/tomberek/nixEelco Dolstra
2021-10-06fetchTree(): Parse type attribute firstEelco Dolstra
The 'url' attribute depends on whether type == 'git', so this is needed for builtins.fetchTree {url = "git@github.com:NixOS/nix.git"; type = "git";}
2021-10-06CleanupEelco Dolstra
2021-10-06libexpr: remove matchAttrs boolean from ExprLambdaAndreas Rammhold
The boolean is only used to determine if the formals are set to a non-null pointer in all our cases. We can get rid of that allocation and instead just compare the pointer value with NULL. Saving up to sizeof(bool) + platform specific alignment per ExprLambda instace. Probably not a lot of memory but perhaps a few kilobyte with nixpkgs? This also gets rid of a potential issue with dereferencing formals based on the value of the boolean that didn't have to be aligned with the formals pointer but was in all our cases.
2021-10-06Merge branch 'considerate/scp-like-urls' of https://github.com/considerate/nixEelco Dolstra
2021-09-30`std::visit` by referenceJohn Ericson
I had started the trend of doing `std::visit` by value (because a type error once mislead me into thinking that was the only form that existed). While the optomizer in principle should be able to deal with extra coppying or extra indirection once the lambdas inlined, sticking with by reference is the conventional default. I hope this might even improve performance.
2021-09-29reset yylloc when yyless(0) is calledTaeer Bar-Yam
2021-09-29Merge pull request #5301 from Ma27/builtins-missing-feature-errorEelco Dolstra
libexpr: throw a more helpful eval-error if a builtin is not available due to a missing feature-flag
2021-09-29libexpr: throw a more helpful eval-error if a builtin is not available due ↵Maximilian Bosch
to a missing feature-flag I found it somewhat confusing to have an error like error: attribute 'getFlake' missing if the required experimental-feature (`flakes`) is not enabled. Instead, I'd expect Nix to throw an error just like it's the case when using e.g. `nix flake` without `flakes` being enabled. With this change, the error looks like this: $ nix-instantiate -E 'builtins.getFlake "nixpkgs"' error: Cannot call 'builtins.getFlake' because experimental Nix feature 'flakes' is disabled. You can enable it via '--extra-experimental-features flakes'. at «string»:1:1: 1| builtins.getFlake "nixpkgs" | ^ I didn't use `settings.requireExperimentalFeature` here on purpose because this doesn't contain a position. Also, it doesn't seem as if we need to catch the error and check for the missing feature here since this already happens at evaluation time.
2021-09-27Don't copy in rethrowEelco Dolstra
2021-09-24Merge pull request #5253 from edolstra/flake-ifdEelco Dolstra
Don't allow IFD in flakes by default
2021-09-22Revert "Merge pull request #4922 from nrdxp/default-submodules"Eelco Dolstra
This reverts commit 6678e98411cd3bfe8143a4ba1b35d1451babce32, reversing changes made to 90b2dd570cbd8313a8cf45b3cf66ddef2bb06e07.
2021-09-22Don't cache realiseContext() errorsEelco Dolstra
Errors that depend on the configuration (such as whether allow-import-from-derivation is set) should not be cached.
2021-09-21Set input parent at construction timeEelco Dolstra
2021-09-16Include subpath in flake fingerprintGeoff Reedy
Without this, flakes within the same tree and same lock data will have the same fingerprint and the eval cache for one flake will be incorrectly used for another.
2021-09-15Merge pull request #5257 from edolstra/dirty-lock-fileEelco Dolstra
If we can't write a lock file, pretend the top-level flake is dirty
2021-09-15Merge branch 'mh/fix-chroot-eval' of https://github.com/obsidiansystems/nixEelco Dolstra
2021-09-15If we can't write a lock file, pretend the top-level flake is dirtyEelco Dolstra
Alternative to #4639. You can still read flake.lock, but at least in reproducible workflows like NixOS configurations where you require a non-dirty tree, evaluation will fail because there is no rev.
2021-09-15Revert "Disallow reading flake.lock"Eelco Dolstra
This reverts commit e5596113f7fc5e47e058bb15afdf75eee02ed95e.
2021-09-14Disallow reading flake.lockEelco Dolstra
With --no-write-lock-file, it's possible that flake.lock is out of sync with the actual inputs used by the evaluation. So doing fromJSON (readFile ./flake.lock) will give wrong results. Fixes #4639.
2021-09-14Merge pull request #5240 from edolstra/builtin-helpEelco Dolstra
nix --help: Display help using lowdown instead of man
2021-09-13hashFile, hashString: realize context before calculation, and discard afterwardskvtb
2021-09-13nix --help: Display help using lowdown instead of manEelco Dolstra
Fixes #4476. Fixes #5231.
2021-09-08Merge pull request #5215 from ncfavier/patch-1Eelco Dolstra
Fix use-registries logic in builtins.getFlake
2021-09-07Merge pull request #4922 from nrdxp/default-submodulesShea Levy
libfetchers/git: fetch submodules by default
2021-09-05Fix use-registries logic in builtins.getFlakeNaïm Favier
2021-09-01Merge pull request #5066 from Radvendii/masterEelco Dolstra
add antiquotations to paths
2021-08-31fix parse of `/${foo}`. was `// + foo`Taeer Bar-Yam
I don't think this changes the way any program would behave, but it's a cleaner internal representation.
2021-08-31path antiquotations: canonizePath -> canonicalizePathTaeer Bar-Yam
2021-08-30Merge pull request #5175 from Pamplemousse/makeEelco Dolstra
Don't overwrite user provided `lib*_LDFLAGS`
2021-08-30Merge pull request #5191 from hercules-ci/evalstate-lifetime-hygieneEelco Dolstra
EvalState lifetime hygiene
2021-08-29Fix use after free with vImportedDrvToDerivationRobert Hensing
2021-08-29Move vCallFlake into EvalStateRobert Hensing
This fixes a use-after-free bug: 1. s = new EvalState(); 2. callFlake() 3. static vCallFlake now references s 4. delete s; 5. s2 = new EvalState(); 6. callFlake() 7. static vCallFlake still references s 8. crash Nix 2.3 did not have a problem with recreating EvalState.
2021-08-29Force all Pos* to be non-nullRobert Hensing
This fixes a class of crashes and introduces ptr<T> to make the code robust against this failure mode going forward. Thanks regnat for the idea of a ref<T> without overhead! Closes #4895 Closes #4893 Closes #5127 Closes #5113
2021-08-25Don't overwrite user provided `lib*_LDFLAGS`Pamplemousse
Signed-off-by: Pamplemousse <xav.maso@gmail.com>
2021-08-23Coding styleEelco Dolstra
2021-08-22Allow use of path and filterSource in flakesTom Bereknyei
As filterSource and path perform work, add paths to allowedPaths.
2021-08-17Fix follows paths in subordinate lockfilesAlex Zero
2021-08-13Install pkg-config files in the correct locationPiotr Szubiakowski
Use `$(libdir)` while installing .pc files looks like a more generic solution. For example, it will work for distributions like RHEL or Fedora where .pc files are installed in `/usr/lib64/pkgconfig`.