Commit Graph

6608 Commits

Author SHA1 Message Date
K900
a3cad4378e pkgs/build-support: call the right makeWrapper function from wrapProgram<Type> 2023-04-30 20:35:27 +03:00
Winter
ac35d7ea86
prefetch-npm-deps: look up hashes from cache when fixing up lockfiles 2023-04-30 10:29:46 -04:00
Guillaume Maudoux
6efefdc8c1 buildDotnetModule: add support for dotnet tools 2023-04-29 18:54:04 -04:00
D Anzorge
38fb742663 rustPlatform.importCargoLock: fix [package] section handling
Members of the [package] table in Cargo.toml can be either subtables, or
values like strings and bools. Python is happy to check for membership
of "workspace" in a string, since Python strings are iterables, but if
the value is a bool, Python will throw an exception.
2023-04-29 21:05:05 +02:00
Alyssa Ross
194ddeefd5
wrapBintoolsWith: support LINK.EXE-style args in purity checks
LLD supports Windows-style linker arguments, but these previously
triggered purity check false positives, because it saw that they
started with a '/' and assumed they were paths.

This tweaks the path detection to allow through certain values that
could be paths, but are much more likely to be LINK.EXE-style flags.
The risk of false negatives here is low — the only things we'd now
fail to catch would be attempts to link with libraries in the root
directory, which doesn't happen in practice.

We also teach the wrapper how to apply its purity checks to library
paths specified with the /LIBPATH: option.

Tested that paths we expect to be rejected (like /lib/libfoo.so) still
are.
2023-04-29 01:37:00 +00:00
Winter
7efebca89c
prefetch-npm-deps: fix reproducibility
v1 lockfiles can contain multiple references to the same version of a
package, and these references can contain different `integrity` values,
such as one having SHA-1 and SHA-512, while another just has SHA-512.

Given that HashMap iteration order isn't defined, this causes
reproducibility issues, as a different integrity value could be chosen
each time.

Thanks to @lilyinstarlight for discovering this issue originally, as well
as the idea for the sorting-based implementation.
2023-04-28 18:09:39 -04:00
github-actions[bot]
e1fd5ee13e
Merge staging-next into staging 2023-04-28 12:01:49 +00:00
github-actions[bot]
85a45c2a04
Merge master into staging-next 2023-04-28 12:01:08 +00:00
Weijia Wang
b2ef7956b6
Merge pull request #227560 from jackyliu16/loongnix-commit
lib.platforms.loongarch64: init
2023-04-28 13:21:42 +03:00
Alyssa Ross
bfc7aaa8af wrapCCWith: disable pic when building for Windows
According to <https://gcc.gnu.org/legacy-ml/gcc-patches/2015-08/msg00836.html>,
all code is position-independent on Windows.  Some compilers
apparently warn for -fPIC on Windows, and clang errors:

> clang-15: error: unsupported option '-fPIC' for target 'x86_64-pc-windows-msvc'

I'm guessing the check was hostPlatform instead of targetPlatform by mistake.
2023-04-28 10:01:22 +00:00
jackyliu16
b522b5a887 bintools: set dynamic linker 2023-04-28 12:09:43 +03:00
github-actions[bot]
63a3bd8731
Merge staging-next into staging 2023-04-26 18:01:39 +00:00
Vladimír Čunát
d6b863fd9b
Merge #226795: staging-next 2023-04-18 2023-04-26 18:35:28 +02:00
sternenseemann
1d71d2e883 buildBazelPackage: never append to fFetchAttrs.installPhase
In f8ee061247, the fallback installPhase
if fFetchAttrs.installPhase is not provided, became dynamically computed.
Due to operator precedence this had the side effect of appending to
fFetchAttrs.installPhase if it is provided, breaking custom
installPhases altogether.
2023-04-26 17:34:39 +02:00
github-actions[bot]
3f176be544
Merge staging-next into staging 2023-04-25 18:01:56 +00:00
github-actions[bot]
2e27a36b4b
Merge master into staging-next 2023-04-25 18:01:17 +00:00
toonn
acc386e521
Merge pull request #223759 from 2xsaiko/outgoing/darwin-bundle
desktopToDarwinBundle: Parsing & icon conversion fixes
2023-04-25 15:38:05 +02:00
github-actions[bot]
c9a253ff7f
Merge staging-next into staging 2023-04-25 12:02:03 +00:00
github-actions[bot]
a39805cda2
Merge master into staging-next 2023-04-25 12:01:31 +00:00
Maciej Krüger
9096817104
Merge pull request #201027 from hacker1024/patch-3 2023-04-25 11:16:53 +02:00
Alyssa Ross
57e73d23bb rustc,rustPlatform.buildRustPackage: broaden platforms
rustc supports way more platforms than Linux and Darwin.  We might not
be able to build it for every platform at the moment, but that's what
meta.broken is for.

There are other platforms that rustc can produce binaries for, but
can't run on itself, so those are listed in the defaults for
buildRustPackage.
2023-04-25 08:27:59 +00:00
github-actions[bot]
26e826e1f8
Merge staging-next into staging 2023-04-25 06:02:14 +00:00
github-actions[bot]
497ac06266
Merge master into staging-next 2023-04-25 06:01:40 +00:00
hacker1024
c4cbf526e9 Merge remote-tracking branch 'NixOS/master' into feature/futter-linux-desktop 2023-04-25 12:51:56 +10:00
Lily Foster
6fd6ce1094
Merge pull request #206476 from winterqt/prefetch-npm-deps-git-dev-deps
prefetch-npm-deps: download dev deps for git deps with install scripts
2023-04-24 20:26:32 -04:00
github-actions[bot]
405bff2673
Merge staging-next into staging 2023-04-25 00:02:39 +00:00
github-actions[bot]
9908dfacfa
Merge master into staging-next 2023-04-25 00:02:08 +00:00
Alyssa Ross
90a8b9e3fe rustPlatform.buildRustPackage: fix cross
.override breaks splicing, so this was using the shell for the host
platform.
2023-04-24 19:43:39 +00:00
Guillaume Girol
56009de17d
Merge pull request #227762 from raboof/separate-debug-info-deterministically
setup-hooks/separate-debug-info.sh: make deterministic
2023-04-23 13:41:09 +00:00
Arnout Engelen
9156daa547
setup-hooks/separate-debug-info.sh: make deterministic
If multiple files with the same build id were found, we silently randomly
overwrote one with the other.

Change the order to make the output deterministic, and emit a
warning when overwriting.
2023-04-23 11:53:47 +02:00
github-actions[bot]
cf8e955712
Merge master into staging-next 2023-04-23 00:02:24 +00:00
Weijia Wang
1d76b4d7f1
Merge pull request #227634 from GenericNerdyUsername/requireFile-hash
`requireFile`: allow using `hash` instead of `sha256`/`sha1`
2023-04-22 23:42:32 +03:00
piegames
a205795c8a treewide: Make some fetchers overridable 2023-04-22 22:29:23 +02:00
Weijia Wang
a6cf8594cb
Merge pull request #227510 from wegank/fhs-aarch64
buildFHSEnv: restrict pkgsi686Linux to x86_64-linux
2023-04-22 22:00:35 +03:00
github-actions[bot]
c1093794b3
Merge master into staging-next 2023-04-22 18:00:58 +00:00
GenericNerdyUsername
3687bee81c
requireFile: allow using hash instead of sha256/sha1 2023-04-22 16:02:34 +01:00
hacker1024
89bb0ed91b flutter.buildFlutterApplication: Add an option to generate the dependency list with IFD
This is useful for projects outside of Nixpkgs.
2023-04-23 00:32:24 +10:00
hacker1024
9f05297dc8 flutter.buildFlutterApplication: Manually supply the dependency list
This removes the need for IFD.
2023-04-23 00:12:45 +10:00
Artturi
5fd9ce4fa7
Merge pull request #190610 from amjoseph-nixpkgs/pr/build-rust-crate/gdk3 2023-04-22 15:45:56 +03:00
Weijia Wang
3c6e26b2ee buildFHSEnv: restrict pkgsi686Linux to x86_64-linux 2023-04-22 15:31:27 +03:00
github-actions[bot]
28227b79ab
Merge master into staging-next 2023-04-22 06:01:12 +00:00
Doron Behar
a82c8611ce
buildGoModule: don't inherit build hooks when building go-modules (#225349)
* buildGoModule: don't inherit postBuild hook when building go-modules

This is a slight revert of 5ce647b8bf
(#212800).

Inheriting these hooks in the `.go-modules` derivation can be confusing:
One doesn't expect them to run when generating the fixed output modules
derivation, but only on the main derivation. A `postBuild` hook that
adds some files to $out will cause a very hard to debug issue[1].

This commit adds support for a dedicated `modPostBuild` hook that will
be used only by the derivation building `.go-modules`. Additionally,
`go.section.md` now explains these attributes behavior better.

[1]:
https://discourse.nixos.org/t/cant-update-a-go-package-getting-go-inconsistent-vendoring/27063/6

Co-authored-by: Sandro <sandro.jaeckel@gmail.com>
2023-04-22 11:08:54 +10:00
github-actions[bot]
ca0f3efdbe
Merge master into staging-next 2023-04-21 18:01:26 +00:00
Florian Klink
6b27ed3229
Merge pull request #169116 from ElvishJerricco/systemd-stage-1-networkd
Systemd stage 1 networkd
2023-04-21 18:40:59 +02:00
github-actions[bot]
f5d4a4e3d6
Merge master into staging-next 2023-04-19 06:01:15 +00:00
Artturi
ddc418f3b1
Merge pull request #187210 from pinn3/fetchgit/remove-outdated-comment 2023-04-19 03:49:19 +03:00
github-actions[bot]
23eaff7dae
Merge staging-next into staging 2023-04-17 18:01:41 +00:00
7c6f434c
17b4ad7c2f
Merge pull request #217587 from winterqt/build-dotnet-module-darwin-sandbox
buildDotnetModule: fix sandboxed builds on darwin
2023-04-17 14:08:21 +00:00
hacker1024
37e93f7c3b flutter.buildFlutterApplication: Supply package metadata to overrides 2023-04-17 14:40:18 +10:00
github-actions[bot]
3d3f04baba
Merge staging-next into staging 2023-04-17 00:02:39 +00:00
Adam Joseph
9e3b2a5822
Merge pull request #226366 from mmlb/rename-gnatboot
gnatboot: rename to gnat-bootstrap
2023-04-16 22:37:53 +00:00
hacker1024
0495725a1f flutter.buildFlutterApplication: Introduce a package override repository
Some Flutter packages require additional attribute values to be added to buildFlutterApplication, to add things like libraries and environment variables.

To prevent duplication in applications that use the packages, a repository of package overrides is kept. buildFlutterApplication will look for package overrides for each dependency, and apply them by calling overrideAttrs on itself.
2023-04-17 03:21:01 +10:00
hacker1024
329c494d0c flutter.buildFlutterApplication: Allow overriding configuration attributes
This allows thing like `flutterBuildFlags` and `runtimeDependencies` to be overridden with `overrideAttrs`.

Attributes that affect dependency retrieval cannot be overridden.
2023-04-17 02:59:02 +10:00
hacker1024
87f809e0c6 dart.list-dart-deps: Add list-dart-deps function
This uses `dart pub deps` (https://dart.dev/tools/pub/cmd/pub-deps) to retrieve information about project dependencies.

It requires a fetch-dart-deps derivation as input.
2023-04-16 23:16:17 +10:00
hacker1024
4f5dd08fe8 dart.fetch-dart-deps: Add hook runtime dependencies 2023-04-16 23:11:07 +10:00
hacker1024
b68a185b0f dart.fetch-dart-deps: Expose the package cache files through passthru 2023-04-16 23:06:22 +10:00
github-actions[bot]
2859a56694
Merge staging-next into staging 2023-04-16 12:01:49 +00:00
hacker1024
bbfc7911d3 flutter.buildFlutterApplication: Supply runtime dependencies
This wraps Flutter programs with an appropriate LD_LIBRARY_PATH.

For some reason, the RUNPATH of the executable is not used to load dynamic libraries in dart:ffi with DynamicLibrary.open().

This could alternatively be fixed with patchelf --add-needed, but this would cause all the libraries to be opened immediately,
which is not what application authors expect.

The name of the runtimeDependencies argument was chosen to match autoPatchelfHook, which has a similar feature.
2023-04-16 19:25:42 +10:00
Atemu
f63a12f296 tree-wide: buildFHSUserEnv -> buildFHSEnv 2023-04-16 10:15:13 +02:00
Vladimír Čunát
f2186222c6
Merge #225846: cc-wrapper: deunify clang/gcc handling of -B
...into staging
2023-04-16 09:59:54 +02:00
hacker1024
eefb67036f flutter.buildFlutterApplication: Move debugging symbols into another output
This reduces the size of the executable.

It works well with Nix - if the user includes the version in their bug report, the exact debugging symbols required can easily be found.
2023-04-16 16:47:08 +10:00
hacker1024
5a5435dea6 flutter.buildFlutterApplication: Add flutterBuildFlags argument 2023-04-16 15:45:09 +10:00
Manuel Mendez
31d6802773 gnatboot: rename to gnat-bootstrap
Most other bootstrap compilers are named -bootstrap so lets follow that
pattern.
2023-04-15 18:52:14 -04:00
hacker1024
1f7eab1c38 dart.fetch-dart-deps: Fix invalid syntax in pubspec validation statement 2023-04-16 03:56:14 +10:00
hacker1024
075f50f2d1 dart.fetch-dart-deps: Compress the generated pubspec.lock file
This is much more practical for users to copy, as it significantly reduces the length of the output.
2023-04-16 03:32:26 +10:00
hacker1024
643b62c8f1 dart.fetch-dart-deps: Don't allow overriding the deps derivation name 2023-04-16 03:21:29 +10:00
hacker1024
5fa3b41041 dart.fetch-dart-deps: Verify the pubspec.lock as well as pubspec.yaml
88275ca6d6 inadvertently stopped the pubspec.lock from changing, as it copied the file before running pub get.

pub get can modify the pubspec.lock to update it to newer formats (for example by adding hashes and updating URLs, see an example diff below). We do not need the modifications at any later stage, so we can preserve the original file.

      boolean_selector:
        dependency: transitive
        description:
          name: boolean_selector
    +      sha256: "6cfb5af12253eaf2b368f07bacc5a80d1301a071c73360d746b7f2e32d762c66"
    +      url: "https://pub.dev"
    -      url: "https://pub.dartlang.org"
        source: hosted
    +    version: "2.1.1"
    -    version: "2.1.0"
2023-04-16 03:20:36 +10:00
hacker1024
0e5db63dc3 dart.fetch-dart-deps: Don't delete .git/pub-packages 2023-04-16 02:56:43 +10:00
hacker1024
88275ca6d6 flutter.buildFlutterApplication: Allow using a custom pubspec.lock 2023-04-16 01:49:43 +10:00
hacker1024
d2ab34122d dart.fetch-dart-deps: Remove stray comment from the dependency derivation 2023-04-16 00:55:55 +10:00
gilice
4e68ee327e flutter.buildFlutterApplication: Add an explanation when a pubspec mismatch occurs 2023-04-16 00:35:15 +10:00
hacker1024
915a6779fc flutter.buildFlutterApplication: Refactor dependency setup as a standalone derivation with an output hook
This allows anything that needs to build a Dart application (such as a future `buildDartApplication` function) to use the same setup.
2023-04-16 00:17:41 +10:00
github-actions[bot]
a6e62de641
Merge staging-next into staging 2023-04-15 12:02:10 +00:00
Kira Bruneau
99a95083df
Merge pull request #178280 from veprbl/pr/ccache_clang_fix
cc-wrapper: disable response files for ccache
2023-04-15 06:47:01 -04:00
hacker1024
f00f918e27 flutter: Remove cached Git package Git directories
Pub does not perform any Git operations on the cached package directly, instead cloning it through a mirror.

The .git directories are not needed, and are a source of non-determinism.
2023-04-15 20:30:46 +10:00
hacker1024
c3a87421ae flutter: Don't tarball the package cache
Co-authored-by: FlafyDev <flafyarazi@gmail.com>

The dependency fixed-output derivation now uses the recursive hash mode to avoid tarballing and copying all the files.

https://github.com/NixOS/nix/issues/6660 was ran into during the development of this change. Input references were found in the Git package cache before nukeReferences was used.

It turns out that the mirrors in the Git package cache do not actually need to be preserved, as the SDK does not use them during the build process. They are therefore deleted in the dependency derivation and re-created as blank repositories in the main derivation.

A description of the Git package cache layout can be found here: c890afa1d6/lib/src/source/git.dart (L339)
2023-04-15 20:17:44 +10:00
github-actions[bot]
5f6ff7e8cf
Merge staging-next into staging 2023-04-15 00:02:38 +00:00
Weijia Wang
ddd8604a3b moveBuildTree: init 2023-04-14 21:08:27 +03:00
hacker1024
fdce3f30c4 flutter.mkFlutterApp: Don't hash more unstable files
Files and directories such as .dart_tool, .flutter-plugins, .packages and .pub-cache/hosted/*/.cache will be happily regenerated by the SDK in an offline environment.

The patches being made to these files and directories to remove non-determinism were flawed: They did not handle cases where files only appeared in one run, or cases where tooling versions had an effect on the output.
2023-04-15 03:18:56 +10:00
github-actions[bot]
6176f16de2
Merge staging-next into staging 2023-04-14 12:02:03 +00:00
Guillaume Maudoux
46a39c48c0
Merge pull request #226038 from SomeoneSerge/cuda_nvrtc-origin
cudaPackages: append $ORIGIN to Runpaths
2023-04-14 11:28:16 +02:00
Sandro
b04d4bad27
Merge pull request #216992 from SuperSandro2000/stdenvNative-fix-eval
{bintools,cc}-wrapper: don't fallback to version = null
2023-04-14 11:22:20 +02:00
Adam Joseph
c1e956e0a9 cc-wrapper: deunify clang/gcc handling of -B flag
Closes #225779
Closes #225780
2023-04-13 22:57:09 -07:00
hacker1024
7e12e3afaa flutter.mkFlutterApp: Remove the target architecture from the dependency derivation name
As the dependency tarballs no longer include SDK artifacts, they are not platform dependent.
2023-04-14 14:25:33 +10:00
hacker1024
30caca0839 flutter.mkFlutterApp: Add Git to nativeBuildInputs
The deterministic Git script depends on it.
2023-04-14 02:16:04 +10:00
Someone Serge
b612fe36b2
autoPatchelfHook: add appendRunpaths argument 2023-04-13 19:12:37 +03:00
hacker1024
f7e3c19cc8 flutter.mkFlutterApp: Don't vendor arbitrary configuration files 2023-04-14 01:49:09 +10:00
hacker1024
8f9aa6b18b flutter.mkFlutterApp: Don't use autoPatchelf on package cache
While this may be beneficial for packages that ship native binaries, this causes issues due to Flutter packages that have inappropriately uploaded build artifacts (such as those from example subprojects) to pub.dev.
2023-04-14 01:41:58 +10:00
hacker1024
04e7ced7e2 mkFlutterApp: Don't fetch prebuilt artifacts
Artifacts are now supplied by the Flutter SDK derivation.

In addition, they are no longer a factor in the dependency hash calculation.
2023-04-13 22:01:42 +10:00
hacker1024
6d50bcc487 mkFlutterApp: Deduplicate build environment setup
The build environment is now set up by the Flutter wrapper, and does not need to be done in mkFlutterApp.
2023-04-13 22:00:24 +10:00
hacker1024
d5aa0c1f97 Merge remote-tracking branch 'NixOS/master' into patch-3 2023-04-13 19:22:50 +10:00
github-actions[bot]
ae00b7fb14
Merge staging-next into staging 2023-04-13 00:02:47 +00:00
Sandro Jäckel
7090651071
{bintools,cc}-wrapper: don't fallback to version = null
mkDerivation cannot handle that
2023-04-12 22:08:36 +02:00
Sandro Jäckel
a7dbdb7644
cc-wrapper: don't set env to null when nativeTools is used
This is not allowed and fails fatal
2023-04-12 22:08:36 +02:00
Adam Joseph
42c8e4dd18 build-rust-crate: dontStrip=!release
Without this PR, unlike `RUST_LIB_BACKTRACE=1 cargo run` you won't
get line numbers in backtraces from binaries built with:

```
nix build -f Cargo.nix --arg release false
```

This PR fixes that.
2023-04-12 15:24:50 -04:00
Adam Joseph
15e2a735f8 Revert "cc-wrapper: add optional temporary hack for -B"
This reverts commit ac3acd956f.
2023-04-12 10:26:23 -07:00
github-actions[bot]
f4a0b6d5fa
Merge staging-next into staging 2023-04-12 12:02:59 +00:00
Vladimír Čunát
ac3acd956f
cc-wrapper: add optional temporary hack for -B
This fixes parts in llvmPackages_{13,rocm}
e.g. build .clang for testing.
Longterm mass-rebuild fix should come in PR #225846
2023-04-12 09:37:24 +02:00
Artturi
a2da3d62a6
Merge pull request #225220 from amjoseph-nixpkgs/pr/gfortran/do-not-disable-bootstrap 2023-04-11 22:33:14 +03:00
Will Fancher
762b69f2ff systemd-initrd: Fix up root directory mode 2023-04-11 15:20:47 -04:00