Commit Graph

2348 Commits

Author SHA1 Message Date
Robert Hensing
1484e1acfe
Merge pull request #83201 from michaelpj/imp/sources-unnamed
cleanSourceWith: don't use baseNameOf
2020-03-24 10:05:32 +01:00
Michael Peyton Jones
07f363fae3
cleanSourceWith: don't use baseNameOf
Currently, not providing `name` to `cleanSourceWith` will use the name
of the imported directory. However, a common case is for this to be the
top level of some repository. In that case, the name will be the name of
the checkout on the current machine, which is not necessarily
reproducible across different settings, and can lead to e.g. cache
misses in CI.

This is documented in the comment on `cleanSourceWith`, but this does
not stop it being a subtle trap for users.

There are different tradeoffs in each case:

1. If `cleanSourceWith` defaults to `"source"`, then we may end up with a
user not knowing what directory a source store path corresponds to.
However, it being called "unnamed" may give them a clue that there is a
way for them to name it, and lead them to the definition of the
function, which has a clear `name` parameter.

2. If `cleanSoureWith` defaults to the directory name, then a user may face
occasional loss of caching, which is hard to notice, and hard to track
down. Tracking it down likely requires use of more advanced tools like
`nix-diff`, and reading the source of a lot of nix code.

I think the downside of the status quo is worse.

This is really another iteration of
https://github.com/NixOS/nix/issues/1305: that led to adding the `name`
argument in the first place, this just makes us use a better default
`name`.
2020-03-23 09:53:07 +00:00
John Ericson
19a0b38cbe
Merge pull request #82882 from obsidiansystems/armv6-embedded
Misc fixes for armv6 bare metal cross
2020-03-19 10:38:22 -04:00
Robert Hensing
9b3515eb95
Merge pull request #82897 from Infinisil/fix-recursive-visible-docs
lib/options: Only recurse into visible sub options
2020-03-19 11:24:57 +01:00
Silvan Mosberger
742e3fc002
lib/tests: Check for nested option-dependent definitions 2020-03-19 03:50:47 +01:00
Silvan Mosberger
9eecf2d057
Revert "lib/modules: Throw better error when definitions assign to an option set"
This reverts commit 15c873b486347e7861c64fb0b5a7852be9fc82e4.

This was causing infinite recursion when depending on nested options
2020-03-19 03:50:15 +01:00
Silvan Mosberger
f195625227
lib/options: Only recurse into visible sub options 2020-03-19 01:13:27 +01:00
John Ericson
7c0d3f6f70 lib: Fix systems test for new armv6l-none 2020-03-18 17:43:11 -04:00
Robert Hensing
5f357b20b3
Merge pull request #82751 from Infinisil/minor-module-improvements
Minor module improvements
2020-03-18 10:06:06 +01:00
Silvan Mosberger
e931de58a2
lib/modules: Fix type checks not being done before merging
Co-Authored-By: Robert Hensing <robert@roberthensing.nl>
2020-03-18 04:38:53 +01:00
Silvan Mosberger
15c873b486
lib/modules: Throw better error when definitions assign to an option set 2020-03-18 04:38:50 +01:00
Robert Hensing
31206e44e1 lib/modules: Test the ability for config to depend on options for compatibility 2020-03-17 20:21:10 +01:00
Silvan Mosberger
dcdd232939
lib/modules: Remove internal _module attribute from config
The _module option is added as an internal option set, and it messes up
the results of module evaluations, requiring people to manually filter
_modules out.

If people depend on this, they can still use config._module from inside
the modules, exposing _module as an explicitly declared user option. Or
alternatively with the _module attribute now returned by evalModules.
2020-03-17 19:19:39 +01:00
Silvan Mosberger
eff447b321
Merge pull request #70157 from teto/lib_kernel
Add lib.kernel
2020-03-12 23:53:42 +01:00
John Ericson
00afca0929 lib: Add armv6l-none to doubles list 2020-03-12 09:56:17 -04:00
Vladimír Čunát
4d543ca048
Merge #81713: lib.callPackages(With): guard against a repeated mistake 2020-03-12 09:41:12 +01:00
Vladimír Čunát
b63f684b3d
lib.callPackages(With): guard against a repeated mistake
For example see the parent commit.
2020-03-12 09:40:15 +01:00
Matthew Bauer
acb24b4cc4 lib/systems: Assume newlib when no kernel and no libc is provided
newlib is the default for most tools when no kernel is provided. Other
exist, but this seems like a safe default.

(cherry picked from commit 8009c2071179ee3490f244b91a49202728efe403)
2020-03-12 02:22:19 -04:00
Jan Tojnar
8515b703cf
Merge pull request #72125 from jtojnar/maintainer-groups
lib: Add lib.maintainer-groups
2020-03-10 21:09:33 +01:00
Silvan Mosberger
575354babf
lib/generators: Add toINI option for duplicate keys 2020-03-10 16:01:04 +01:00
Robert Hensing
99a2910733
Merge pull request #80919 from hercules-ci/modules-add-file-context
lib/modules.nix: Add file context to unmerged values in mergeDefinitions
2020-03-05 23:21:02 +01:00
Robert Hensing
e38a01db5d
Merge pull request #68491 from roberth/fix-dontRecurseIntoAttrs
Fix dontRecurseIntoAttrs + add to lib + doc
2020-03-01 11:05:34 +01:00
Robert Hensing
9c0ab2f26d lib/modules.nix: Add file context to unmerged values in mergeDefinitions
This helps with troubleshooting exceptions in config values, which were hard
to track down for options with many definitions.
The trace will look like:

    error: while evaluating the attribute 'config.foo' at undefined position:
    [...]
    while evaluating the option `foo':
    [...]
    while evaluating definitions from `/home/user/mymod.nix':
    while evaluating 'dischargeProperties' at /home/user/nixpkgs/lib/modules.nix:464:25, called from /home/user/nixpkgs/lib/modules.nix:392:137:
    while evaluating the attribute 'value' at /home/user/nixpkgs/lib/modules.nix:277:44:
    Value error!

where the `/home/user/mymod.nix` module is

    { lib, ... }: {
      options.foo = lib.mkOption {
        type = lib.types.lines;
      };
      config.foo = builtins.throw "Value error!";
    }
2020-02-24 00:15:36 +01:00
John Ericson
2682170f21
Merge pull request #80814 from matthewbauer/default-newlib-for-none
lib/systems: Assume newlib when no kernel and no libc is provided
2020-02-22 15:36:03 -05:00
Matthew Bauer
8009c20711 lib/systems: Assume newlib when no kernel and no libc is provided
newlib is the default for most tools when no kernel is provided. Other
exist, but this seems like a safe default.
2020-02-22 12:37:46 -05:00
worldofpeace
2ba2b0cf23 20.09 is Nightingale 2020-02-10 14:14:18 -05:00
Eelco Dolstra
0e6ceb8758
Merge pull request #68897 from edolstra/master
Flake support
2020-02-10 16:44:54 +01:00
Eelco Dolstra
5c389f84d4 lib/tests/misc.nix: Don't make a copy on Nixpkgs 2020-02-10 16:21:04 +01:00
Eelco Dolstra
a274da605d lib/tests/misc.nix: Fix dependency on currentSystem
This doesn't work in pure mode.
2020-02-10 16:20:41 +01:00
worldofpeace
1193468f13 Merge pull request #79291 from chkno/remove-isArm
Remove isArm
2020-02-08 09:57:30 -05:00
Chuck
5d4821141b stdenv: Remove isArm (use isAarch32 instead)
isArm has been deprecated for three releases.  All references have been
removed.  Tree-wide substitution was performed in #37401 21 months ago.
2020-02-05 10:56:14 -08:00
Chuck
a7835b936e lib.systems.elaborate: isArm -> isAarch32
This is the last reference to isArm.  isArm is deprecated after 18.03.
This substitution was performed tree-wide in #37401.
2020-02-05 10:56:14 -08:00
Frederik Rietdijk
419bc0a4cd Revert "Revert "Merge master into staging-next""
In 87a19e9048773d5a363679617406ad148d36c3b8 I merged staging-next into master using the GitHub gui as intended.
In ac241fb7a570d6cf81d229ad22a8889602639160 I merged master into staging-next for the next staging cycle, however, I accidentally pushed it to master.
Thinking this may cause trouble, I reverted it in 0be87c79797a5fa384fbc356c74ed54f9f7829ea. This was however wrong, as it "removed" master.

This reverts commit 0be87c79797a5fa384fbc356c74ed54f9f7829ea.
2020-02-05 19:41:25 +01:00
Frederik Rietdijk
0be87c7979 Revert "Merge master into staging-next"
I merged master into staging-next but accidentally pushed it to master.
This should get us back to 87a19e9048773d5a363679617406ad148d36c3b8.

This reverts commit ac241fb7a570d6cf81d229ad22a8889602639160, reversing
changes made to 76a439239eb310d9ad76d998b34d5d3bc0e37acb.
2020-02-05 19:18:35 +01:00
Robert Helgesson
fc3bd1aeb9
lib/strings: fix comment typo 2020-02-05 18:09:37 +01:00
Profpatsch
07eb21ceaf
Merge pull request #78337 from Profpatsch/lib-improve-cli-module
lib: improve cli module
2020-01-24 21:05:53 +01:00
Franz Pletz
402b97fa1e
Merge pull request #78058 from mayflower/nixos/version-gitdir-symlink
nixos/version: fix case where .git is a symlink
2020-01-24 14:58:31 +00:00
Profpatsch
7228a3c0bc lib/cli: mkKey -> mkOptionName, use generators.mkValueStringDefault
Let’s call them by what they are, option names.

`generators.mkValueStringDefault` is a better value string renderer
than plain `toString`.

Also add docs to all options.
2020-01-23 14:47:38 +01:00
Profpatsch
18520b7f36 lib/generators: floats are not supported in mkValueStringDefault
They are cut off after a few decimal places; we cannot in good faith
define a default string representation with that.
2020-01-23 14:47:38 +01:00
Profpatsch
e71e1be859 lib/cli: rename renderX options to mkX
Mirrors the naming scheme in `generators.nix`, for consistency.

Also rename `key` to `k` and value to `v` to aid readability to the
code structure.
2020-01-23 14:47:38 +01:00
Profpatsch
b2654c226a lib/cli,lib/tests/misc: somewhat more standard formatting 2020-01-23 14:47:38 +01:00
Profpatsch
582354d3b6 lib/cli: encodeGNUCommandLine -> toGNUCommandLineShell
The semantic difference between `encode` and `to` is not apparent.
Users are likely to confuse both functions (which leads to unexpected
error messages about the wrong types). Like in `generators.nix`, all
functions should be prefixed by `to`.

Furthermore, converting to a string depends on the target context. In
this case, it’s a POSIX shell, so we should name it that (compare
`escapeShellArg` in `strings.nix`).

We can later add versions that escape for embedding in e.g. python
scripts or similar.
2020-01-23 14:47:38 +01:00
Profpatsch
88a7f65c83 lib/cli: unexport symbols & sort with generators
lib/cli is very similar to generators, so it should follow largely the
same interface. Similar to how generators isn’t exported, we should
also namespace cli by default (plus “cli” is only three characters to
type).
2020-01-23 14:47:38 +01:00
Anderson Torres
45b400880a
Merge pull request #77855 from AndersonTorres/update/notion
notion: 3-2017050501 -> 3-2019050101
2020-01-22 07:46:22 -03:00
Silvan Mosberger
774e3d8e48
nixos/lib: Inherit type for doRename options (#78135)
nixos/lib: Inherit type for doRename options
2020-01-20 23:15:24 +01:00
Silvan Mosberger
74775d1d72
lib/attrsets: Fix error in comment for getAttrFromPath 2020-01-20 22:42:38 +01:00
Janne Heß
790cd012d0
nixos/lib: Inherit type for doRename options
Co-authored-by: Silvan Mosberger <contact@infinisil.com>
2020-01-20 22:06:20 +01:00
Franz Pletz
46773a15b3
nixos/version: fix case where .git is a symlink
Before c9214c394b248e1f26e45dbe1be2bd82363af3a6 and
9d396d2e426b9a765de0b8999aa214f1259633e6 if .git is symlink the version
would gracefully default to no git revision. With those changes an
exception is thrown instead.

This introduces a new function `pathIsGitRepo` that checks if
`commitIdFromGitRepo` fails without error so we don't have to
reimplement this logic again and can fail gracefully.
2020-01-20 00:53:44 +01:00
AndersonTorres
bdf32f33fa Notion custom license: exclude 2020-01-17 08:31:22 -03:00
Silvan Mosberger
3c2e9fa53d
Merge pull request #77704 from mayflower/also-submodules
lib.commitIdFromGitRepo: fix support for git-submodule
2020-01-16 00:44:46 +01:00