about summary refs log tree commit diff
path: root/lib/meta.nix
Commit message (Collapse)AuthorAge
* Merge pull request #291909 from cdmistman/lib-meta-available-on-doc-exampleRyan Mulligan2024-02-27
|\ | | | | lib.meta.availableOn: add example in documentation
| * lib.meta.availableOn: add example in documentationColton Donnelly2024-02-27
| |
* | lib.meta.platformMatch: expand documentationColton Donnelly2024-02-27
|/
* lib.getExe: Make more efficientadisbladis2023-12-12
|
* lib.meta: Avoid attrset allocation in platformMatchadisbladis2023-11-25
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Benchmarks (`nix-instantiate ./. -A python3`) - Before ``` json { "cpuTime": 0.30625399947166443, "envs": { "bytes": 4484216, "elements": 221443, "number": 169542 }, "gc": { "heapSize": 402915328, "totalBytes": 53091024 }, "list": { "bytes": 749424, "concats": 4242, "elements": 93678 }, "nrAvoided": 253991, "nrFunctionCalls": 149848, "nrLookups": 49614, "nrOpUpdateValuesCopied": 1588326, "nrOpUpdates": 10106, "nrPrimOpCalls": 130356, "nrThunks": 359013, "sets": { "bytes": 30432320, "elements": 1860540, "number": 41480 }, "sizes": { "Attr": 16, "Bindings": 16, "Env": 16, "Value": 24 }, "symbols": { "bytes": 236218, "number": 24459 }, "values": { "bytes": 10504632, "number": 437693 } } ``` - After ``` { "cpuTime": 0.29695799946784973, "envs": { "bytes": 3296712, "elements": 169055, "number": 121517 }, "gc": { "heapSize": 402915328, "totalBytes": 49044992 }, "list": { "bytes": 504928, "concats": 4242, "elements": 63116 }, "nrAvoided": 175403, "nrFunctionCalls": 110554, "nrLookups": 44907, "nrOpUpdateValuesCopied": 1588326, "nrOpUpdates": 10106, "nrPrimOpCalls": 82330, "nrThunks": 306625, "sets": { "bytes": 29943328, "elements": 1843076, "number": 28382 }, "sizes": { "Attr": 16, "Bindings": 16, "Env": 16, "Value": 24 }, "symbols": { "bytes": 236218, "number": 24459 }, "values": { "bytes": 9037752, "number": 376573 } } ```
* lib.getExe': check argumentsGerg-L2023-10-16
|
* Merge pull request #248895 from Scrumplex/getExe2Silvan Mosberger2023-08-16
|\
| * lib/meta.nix: recommend use of getExe' in getExe warningSefa Eyeoglu2023-08-15
| | | | | | | | Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
| * lib/meta.nix: introduce getExe'Sefa Eyeoglu2023-08-13
| | | | | | | | | | | | | | getExe' can be used to get a binary other than the mainProgram from a derivation. Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
* | treewide: update mainProgram docsArtturin2023-08-04
|/
* lib.getExe: Do not make assumptions about the main programRobert Hensing2023-07-31
| | | | | | | | | | | | | | | | | | | | | | | | | | | Before this commit, getExe assumes that if `meta.mainProgram` is unset, it has a main program that's named after the package name. While this is probable, it leads to a bad error when the assumption does not hold. If the user called `getExe` themselves, they might narrow down the location of the assumption quite easily, but if that's not the case, they'll have to go down the rabbit hole to figure out what went wrong. For example, a NixOS module may use `lib.getExe` on a package-typed option which is then used in the system configuration. This then typically leads to a failure *after* deployment, which is bad, and it's quite likely that the user will debug the package output contents before digging through the NixOS module, which is bad. Furthermore the `getExe` call is rather inconspicuous as it does not contain something like "/bin/foo", which is bad. Also modules can be hard to read for a newbie, which is bad. All of this can be avoided by requiring `meta.mainProgram`. Many packages already have the attribute, and I would expect 80% of `getExe` usages to be covered by 20% of packages, because plenty of packages aren't used with `getExe` anyway. Finally we could make an effort to set `mainProgram` semi-automatically using `nix-index`.
* Update lib/meta.nixAdam Joseph2023-01-27
| | | Co-authored-by: Naïm Favier <n@monade.li>
* Update lib/meta.nixAdam Joseph2023-01-27
| | | Co-authored-by: Naïm Favier <n@monade.li>
* lib/meta.nix: allow patterns over entire platform, not just `.parsed`Adam Joseph2023-01-27
|
* Revert "lib/meta.nix: platformMatch: allow predicate functions"Adam Joseph2023-01-27
| | | | This reverts commit b7d097438b9b0f782a707f3295d320d824810864.
* lib/meta.nix: platformMatch: allow predicate functionsAdam Joseph2023-01-22
|
* check-meta(hasUnsupportedPlatform): use lib.meta.availableOnAdam Joseph2023-01-11
| | | | | | | | | | | | | | `hasUnsupportedPlatform` was not updated with #37395, so it does not understand attrsets in `meta.[bad]platforms`. In particular, attrsets in `meta.badPlatforms` will "fail open" and be ignored. Let's use `lib.meta.availableOn` instead of duplicating its logic. Thanks to @alyssais for [noticing][1]. [1][https://github.com/NixOS/nixpkgs/pull/194148#discussion_r990817610] Co-authored-by: sternenseemann <sternenseemann@systemli.org>
* lib/meta(availableOn): handle missing meta and empty meta.platformAdam Joseph2023-01-11
|
* lib: Fix mismatched quotes in `lib.*` doc commentsYoshiRulz2023-01-02
| | | | | caused problems for automated rich text generation such as https://teu5us.github.io/nix-lib.html#customisation-functions
* lib/meta: add getExe to get the main program of a drvArtturin2022-04-24
|
* lib/meta: fix typo in platformMatch commentThiago Kenji Okada2022-01-24
|
* lib/meta: add getLicenseFromSpdxId functionShamrock Lee2021-12-02
| | | | | | | | | | | | Move function spdxLicense, internally used in yarn2nix to lib/meta.nix, and rename to getLicenseFromSpdxId A similar function is implemented in poetry2nix, but the one originally in yarn2nix seems beter. since it falls back to an license-like attrset for mismatched case instead of a plain string
* lib.meta: introduce `availableOn`oxalica2021-04-02
|
* lib: implement `setPrio`Jan Malakhovski2018-11-22
| | | | For when `hiPrio` and `lowPrio` are not enough.
* treewide: remove lib.meta.enableIfAvailableMatthew Bauer2018-05-09
|
* kexectools: Disable only on RISC-V if Linux.Shea Levy2018-03-27
| | | | | | The isKexecable flag treated Linux without kexec as just a normal variant, when it really should be treated as a special case incurring complexity debt to support.
* lib: Factor in tiny bit of `meta.platform` checkingJohn Ericson2018-03-19
| | | | I need it in stdenv and release-lib, so that seems motivation enough.
* Convert libs to a fixed-pointGraham Christensen2017-09-16
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This does break the API of being able to import any lib file and get its libs, however I'm not sure people did this. I made this while exploring being able to swap out docFn with a stub in #2305, to avoid functor performance problems. I don't know if that is going to move forward (or if it is a problem or not,) but after doing all this work figured I'd put it up anyway :) Two notable advantages to this approach: 1. when a lib inherits another lib's functions, it doesn't automatically get put in to the scope of lib 2. when a lib implements a new obscure functions, it doesn't automatically get put in to the scope of lib Using the test script (later in this commit) I got the following diff on the API: + diff master fixed-lib 11764a11765,11766 > .types.defaultFunctor > .types.defaultTypeMerge 11774a11777,11778 > .types.isOptionType > .types.isType 11781a11786 > .types.mkOptionType 11788a11794 > .types.setType 11795a11802 > .types.types This means that this commit _adds_ to the API, however I can't find a way to fix these last remaining discrepancies. At least none are _removed_. Test script (run with nix-repl in the PATH): #!/bin/sh set -eux repl() { suff=${1:-} echo "(import ./lib)$suff" \ | nix-repl 2>&1 } attrs_to_check() { repl "${1:-}" \ | tr ';' $'\n' \ | grep "\.\.\." \ | cut -d' ' -f2 \ | sed -e "s/^/${1:-}./" \ | sort } summ() { repl "${1:-}" \ | tr ' ' $'\n' \ | sort \ | uniq } deep_summ() { suff="${1:-}" depth="${2:-4}" depth=$((depth - 1)) summ "$suff" for attr in $(attrs_to_check "$suff" | grep -v "types.types"); do if [ $depth -eq 0 ]; then summ "$attr" | sed -e "s/^/$attr./" else deep_summ "$attr" "$depth" | sed -e "s/^/$attr./" fi done } ( cd nixpkgs #git add . #git commit -m "Auto-commit, sorry" || true git checkout fixed-lib deep_summ > ../fixed-lib git checkout master deep_summ > ../master ) if diff master fixed-lib; then echo "SHALLOW MATCH!" fi ( cd nixpkgs git checkout fixed-lib repl .types )
* aliases: don't distribute on HydraNikolay Amiantov2017-06-04
|
* treewide: Always use integers for meta.priorityAneesh Agrawal2017-05-02
| | | | | | | | | | Meta attributes types are now enforce as of commit 90b9719f4fc95e54400a66bffcc8044c568cfa4b, so ensure meta.priority is always set to an integer. This fixes evaluation of `linuxPackages_latest.virtualbox` (the impetus for this commit) and other packages that use lowPrio or hiPrio.
* Make appendToName do the right thingEelco Dolstra2014-03-10
| | | | | | | | I.e. append a suffix *before* the version, rather than after. So we get "sqlite-interactive-3.8.0.2" instead of "sqlite-3.8.0.2-interactive". The latter is broken since nix-env just sees it the suffix as part of the version, so "nix-env -u" will happily upgrade "sqlite-3.8.0.2-interactive" to "sqlite-3.9".
* openjdk: Ugly hack to fix nix-env installationEelco Dolstra2014-01-20
| | | | | | | | | | | | Nix-env always wants to install all outputs of a derivation, but this failed for openjdk/openjre because openjdk has some symlinks (such as bin/java) to openjre. Also, it prevents installing the openjre without the openjdk. So as a workaround, mess with the "outputs" attribute to fool nix-env. Also, give openjre a separate name and description. Fixes #1535.
* add lowPrioSet and hiPrioSet functions to enable changing of priorities of ↵Evgeny Egorochkin2013-12-26
| | | | attrsets with packages such as kde.
* Move pkgs/lib/ to lib/Eelco Dolstra2013-10-10