summary refs log tree commit diff
path: root/pkgs/stdenv/generic
Commit message (Collapse)AuthorAge
...
| | * | | Revert "Revert "Merge pull request #28029 from cstrahan/hardening-fix""John Ericson2018-04-11
| | | | | | | | | | | | | | | | | | | | | | | | | This reverts commit 6c064e6b1f34a8416f990db0cc617a7195f71588, reapplying PR #28029 which was supposed to have gone to staging all along.
| * | | | check-meta.nix: specify meta.timeoutMichael Raskin2018-04-27
| | | | |
| * | | | treewide: isArm -> isAarch32John Ericson2018-04-25
| | |/ / | |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Following legacy packing conventions, `isArm` was defined just for 32-bit ARM instruction set. This is confusing to non packagers though, because Aarch64 is an ARM instruction set. The official ARM overview for ARMv8[1] is surprisingly not confusing, given the overall state of affairs for ARM naming conventions, and offers us a solution. It divides the nomenclature into three levels: ``` ISA: ARMv8 {-A, -R, -M} / \ Mode: Aarch32 Aarch64 | / \ Encoding: A64 A32 T32 ``` At the top is the overall v8 instruction set archicture. Second are the two modes, defined by bitwidth but differing in other semantics too, and buttom are the encodings, (hopefully?) isomorphic if they encode the same mode. The 32 bit encodings are mostly backwards compatible with previous non-Thumb and Thumb encodings, and if so we can pun the mode names to instead mean "sets of compatable or isomorphic encodings", and then voilà we have nice names for 32-bit and 64-bit arm instruction sets which do not use the word ARM so as to not confused either laymen or experienced ARM packages. [1]: https://developer.arm.com/products/architecture/a-profile
| * | | Merge pull request #38485 from obsidiansystems/nixos-nixpkgs-optionsJohn Ericson2018-04-19
| |\ \ \ | | | | | | | | | | nixpkgs module: Clean up platform options
| | * | | nixpkgs module: Clean up platform optionsJohn Ericson2018-04-06
| | |/ / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - `localSystem` is added, it strictly supercedes system - `crossSystem`'s description mentions `localSystem` (and vice versa). - No more weird special casing I don't even understand TEMP
| * | | meta: Add `NIXPKGS_ALLOW_UNSUPPORTED_SYSTEM` for consistencyJohn Ericson2018-04-17
| | | |
| * | | meta: Don't bypass unsupported platforms with allowBroken.Shea Levy2018-04-17
| |/ / | | | | | | | | | Our platforms are open-world oriented these days, and anyway there's allowUnsupportedSystem.
| * | meta: Simplify platform check logicJohn Ericson2018-03-27
| | | | | | | | | | | | Code golf or readability, you decide
| * | meta: Add badPlatforms attribute for platform blacklisting.Shea Levy2018-03-27
| | |
| * | Merge pull request #37395 from obsidiansystems/lib-meta-platformJohn Ericson2018-03-19
| |\ \ | | | | | | | | lib: Factor in tiny bit of `meta.platform` checking
| * \ \ Merge pull request #34444 from obsidiansystems/meta-checkJohn Ericson2018-03-18
| |\ \ \ | | | | | | | | | | lib: Fix #30902
| * | | | stdenv: check-meta: fix fallout from #36119Jan Malakhovski2018-03-06
| | | | |
* | | | | treewide: Get rid of all uses of crossConfigJohn Ericson2018-05-14
| |_|_|/ |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The hack of using `crossConfig` to enforce stricter handling of dependencies is replaced with a dedicated `strictDeps` for that purpose. (Experience has shown that my punning was a terrible idea that made more difficult and embarrising to teach teach.) Now that is is clear, a few packages now use `strictDeps`, to fix various bugs: - bintools-wrapper and cc-wrapper
* | | | stdenv: Put back isArm, with deprecation notice.John Ericson2018-05-07
| | | | | | | | | | | | | | | | This was always meant to be deprecated rather than removed.
* | | | treewide: isArm -> isAarch32John Ericson2018-04-25
| |_|/ |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Following legacy packing conventions, `isArm` was defined just for 32-bit ARM instruction set. This is confusing to non packagers though, because Aarch64 is an ARM instruction set. The official ARM overview for ARMv8[1] is surprisingly not confusing, given the overall state of affairs for ARM naming conventions, and offers us a solution. It divides the nomenclature into three levels: ``` ISA: ARMv8 {-A, -R, -M} / \ Mode: Aarch32 Aarch64 | / \ Encoding: A64 A32 T32 ``` At the top is the overall v8 instruction set archicture. Second are the two modes, defined by bitwidth but differing in other semantics too, and buttom are the encodings, (hopefully?) isomorphic if they encode the same mode. The 32 bit encodings are mostly backwards compatible with previous non-Thumb and Thumb encodings, and if so we can pun the mode names to instead mean "sets of compatable or isomorphic encodings", and then voilà we have nice names for 32-bit and 64-bit arm instruction sets which do not use the word ARM so as to not confused either laymen or experienced ARM packages. [1]: https://developer.arm.com/products/architecture/a-profile (cherry picked from commit ba52ae50488de85a9cf60a3a04f1c9ca7122ec74)
* | | 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.
* | lib, stdenv: Check `meta.platforms` against host platform and be open worldJohn Ericson2018-03-15
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | First, we need check against the host platform, not the build platform. That's simple enough. Second, we move away from exahustive finite case analysis (i.e. exhaustively listing all platforms the package builds on). That only work in a closed-world setting, where we know all platforms we might build one. But with cross compilation, we may be building for arbitrary platforms, So we need fancier filters. This is the closed world to open world change. The solution is instead of having a list of systems (strings in the form "foo-bar"), we have a list of of systems or "patterns", i.e. attributes that partially match the output of the parsers in `lib.systems.parse`. The "check meta" logic treats the systems strings as an exact whitelist just as before, but treats the patterns as a fuzzy whitelist, intersecting the actual `hostPlatform` with the pattern and then checking for equality. (This is done using `matchAttrs`). The default convenience lists for `meta.platforms` are now changed to be lists of patterns (usually a single pattern) in `lib/systems/for-meta.nix` for maximum flexibility under this new system. Fixes #30902
* | stdenv: Clean up check meta argsJohn Ericson2018-03-14
|/
* libgcrypt: Fix cross-compilationShea Levy2018-02-24
|
* Merge branch 'master' into stagingVladimír Čunát2018-02-20
|\ | | | | | | Larger rebuilds from master.
| * stdenv.mkDerivation: rename `meta.evaluates` -> `meta.available`Jan Malakhovski2018-02-18
| | | | | | | | A much better name.
* | Handle sourceRoots with leading dashesShea Levy2018-02-15
|/
* check-meta: Use concatStringsTuomas Tynkkynen2018-02-11
|
* unpackPhase: Handle sources starting with a hyphenShea Levy2018-01-24
|
* Merge branch 'ericson2314-cross-master' into stagingJohn Ericson2018-01-16
|\
| * Merge #33057: stdenv meta checks: make them lazyVladimír Čunát2018-01-14
| |\ | | | | | | | | | | | | Closes #22277 - it's superseded; I have some WIP on evaluation performance, but best do that in a separate PR/thread.
| | * stdenv: provide `meta.name`Jan Malakhovski2018-01-14
| | |
| | * stdenv: hide `name` under `check-meta` assertJan Malakhovski2018-01-14
| | | | | | | | | | | | | | | | | | | | | | | | This is a temporary workaround to make `nix-env -qa` and `nix search` ignore broken packages as they they did before this patchset. This patch should be reverted after `nix` gets a proper fix for this. See NixOS/nix#1771.
| | * stdenv: implement `config.checkMetaRecursively`Jan Malakhovski2018-01-14
| | | | | | | | | | | | | | | | | | | | | This option makes `meta.evaluate` into a close approximation of the result of evaluating `.outPath` by checking all the dependencies recursively at a cost of 2x slowdown. Note that actually evaluating `.outPath` costs some 5x-7x more because `.outPath` also computes all the hashes.
| | * stdenv: provide `meta.evaluates`Jan Malakhovski2018-01-14
| | | | | | | | | | | | This gives a way to see the result of `check-meta` without triggering any assertions.
| | * stdenv: change some indentJan Malakhovski2018-01-14
| | |
| | * stdenv: perform checks only when evaluating .drv and .outJan Malakhovski2018-01-03
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This pushes check-meta evaluation to derivation evaluation step, leaving all other attributes accessible. Before this commit: > $ HOME=/homeless-shelter NIX_PATH=nixpkgs=$(pwd) nix-instantiate --eval --strict ./default.nix -A xen --argstr system aarch64-linux > Package ‘xen-4.5.5’ in pkgs/applications/virtualization/xen/generic.nix:226 is not supported on ‘aarch64-linux’, refusing to evaluate. as expected > $ HOME=/homeless-shelter NIX_PATH=nixpkgs=$(pwd) nix-instantiate --eval --strict ./default.nix -A xen.name --argstr system aarch64-linux > Package ‘xen-4.5.5’ in pkgs/applications/virtualization/xen/generic.nix:226 is not supported on ‘aarch64-linux’, refusing to evaluate. > $ HOME=/homeless-shelter NIX_PATH=nixpkgs=$(pwd) nix-instantiate --eval --strict ./default.nix -A xen.meta.description --argstr system aarch64-linux > Package ‘xen-4.5.5’ in pkgs/applications/virtualization/xen/generic.nix:226 is not supported on ‘aarch64-linux’, refusing to evaluate. which is unfortunate since its impossible to use packages in autogenerated documentation on all platforms. After this commit: > $ HOME=/homeless-shelter NIX_PATH=nixpkgs=$(pwd) nix-instantiate --eval --strict ./default.nix -A xen --argstr system aarch64-linux still fails > $ HOME=/homeless-shelter NIX_PATH=nixpkgs=$(pwd) nix-instantiate --eval --strict ./default.nix -A xen.name --argstr system aarch64-linux > "xen-4.5.5" > $ HOME=/homeless-shelter NIX_PATH=nixpkgs=$(pwd) nix-instantiate --eval --strict ./default.nix -A xen.meta.description --argstr system aarch64-linux > "Xen hypervisor and related components (vanilla)"
* | | Merge remote-tracking branch 'upstream/master' into stagingTuomas Tynkkynen2018-01-14
|\| | | | | | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: pkgs/build-support/fetchbower/default.nix pkgs/build-support/fetchdarcs/default.nix pkgs/build-support/fetchgx/default.nix pkgs/development/python-modules/botocore/default.nix pkgs/os-specific/linux/firmware/firmware-linux-nonfree/default.nix pkgs/tools/admin/awscli/default.nix
| * | Merge pull request #33670 from obsidiansystems/cross-checkJohn Ericson2018-01-09
| |\ \ | | | | | | | | stdenv: Fix doCheck and doInstallCheck logic
| | * | stdenv: Fix doCheck and doInstallCheck logicJohn Ericson2018-01-09
| | | | | | | | | | | | | | | | It's host != build, not host != target
| * | | Merge pull request #33603 from obsidiansystems/cross-checkJohn Ericson2018-01-09
| |\| | | | | | | | | | stdenv: Force `doCheck` to be false when we are cross compiling
| | * | stdenv: Force `doCheck` and `doInstallCheck` to be false when we are cross ↵John Ericson2018-01-09
| | |/ | | | | | | | | | | | | | | | | | | | | | compiling I hope this will be a temporary measure. If there is consensus around issue #33599, then we can follow an explicit `dontCheck`, but default to not checking during cross builds when none is given.
| * / schedulingPriority should be an int, fix check-meta type and in-tree useWill Dietz2018-01-09
| |/
* / stdenv: Kill off ensureDiradisbladis2018-01-09
|/
* stdenv-setup: Ease the transition with native buildsJohn Ericson2017-12-30
| | | | | | | | | | | | - All deps go on the PATH - CC and Bintools wrappers with their host != depender's host still get their setup hooks run. - Environment hooks get applied to all packages This isn't so elegent, but eases the transition on a very significant PR.
* {bintools,cc}-wrapper: Fix setup hook to respect the role of the cc-compilerJohn Ericson2017-12-30
| | | | | | | We now have the information to properly determine the role the cc-wrapper dependency has, by taking advantage of `offset`. No longer use the soon-to-be-deprecated crossConfig environment variable, the temp hack used before this change.
* stdenv: Fix handling of dependencies and hooksJohn Ericson2017-12-30
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 4 far-reaching changes: Smaller PATH, New vars, different propagation logic, and different hook logic Smaller PATH ------------ `buildInputs` no longer go on the PATH at build time, as they cannot be run when cross compiling and we don't want to special case. Simply make a `nativeBuildInput` too if one needs them on the PATH. Fixes #21191. Many new depedendency variables ------------------------------- See the stdenv chapter of the nixpkgs manual. I pulled out the existing documentation of dependency specification into a new section, and added language for these two (and their propagated equivalents) along side the others'. More complex propagation logic ------------------------------ Before a propagated*XXX*Input always acted as if it was specified directly as a *XXX*Input downstream. That's simple enough, but violates the intended roles of each sort of dep, which has functional and not just stylistic consequences. The new algorithm is detailed in the manual, and ensures everything ends up in the right place. I tried to give both an informal and formal description, but I suspect in practice it will not make much sense until one tries cross compiling, after which it will immediately make sense as the only sane option. Simplified hook logic --------------------- Rather than `envHook` and `crossEnvHook`, whose behavior differs depending on whether we are cross compiling or not, there is now one hook per sort (or rather non-propagated and propagated pair of sorts) of dependency. These new hooks have the same meaning regardless of cross compilation. See the setup hook section of stdenv chapter of the Nixpkgs manual for more details.
* stdenv: make knownVulnerabilities a known meta-typeGraham Christensen2017-12-14
|
* stdenv: allow specifying a eval issuee handlerGraham Christensen2017-12-12
|
* stdenv checkMeta: throw -> traceVladimír Čunát2017-12-12
| | | | | | - tracing seems annoying enough - we get errors for all packages instead of aborting on the first one - easier to differentiate from unwanted packages (broken, unfree, etc.)
* stdenv: fix use of config-specified allowInsecurePredicateWill Dietz2017-12-09
| | | | for some reason we were checking allowUnfreePredicate instead
* tree-wide: fix either check-meta or meta attrs of all the packages I evaluateJan Malakhovski2017-12-05
|
* stdenv/generic/check-meta: fix error message evaluationJan Malakhovski2017-12-05
|
* stdenv setup: Always use both propagated filesJohn Ericson2017-11-21
| | | | | | | | | | | This continues #23374, which always kept around both attributes, by always including both propagated files: `propgated-native-build-inputs` and `propagated-build-inputs`. `nativePkgs` and `crossPkgs` are still defined as before, however, so this change should only barely observable. This is an incremental step to fully keeping the dependencies separate in all cases.
* stdenv setup: Run setup hooks and other processing after accumulating depsJohn Ericson2017-11-15
| | | | | | I find the separation of concerns, accumulating, then processing, easier to follow. Also, with my yet-to-be-merged cross work, the accumulation part will become more complex.