···1213 - default linux: 5.15 -\> 6.1, all supported kernels available
14000015- Cinnamon has been updated to 5.6, see [the pull request](https://github.com/NixOS/nixpkgs/pull/201328#issue-1449910204) for what is changed.
1617- KDE Plasma has been updated to v5.27, see [the release notes](https://kde.org/announcements/plasma/5/5.27.0/) for what is changed.
1819- `nixos-rebuild` now supports an extra `--specialisation` option that can be used to change specialisation for `switch` and `test` commands.
002021## New Services {#sec-release-23.05-new-services}
22···161162- conntrack helper autodetection has been removed from kernels 6.0 and up upstream, and an assertion was added to ensure things don't silently stop working. Migrate your configuration to assign helpers explicitly or use an older LTS kernel branch as a temporary workaround.
163000164## Other Notable Changes {#sec-release-23.05-notable-changes}
165166<!-- To avoid merge conflicts, consider adding your item at an arbitrary place in the list instead. -->
···307- The option `services.prometheus.exporters.pihole.interval` does not exist anymore and has been removed.
308309- `k3s` can now be configured with an EnvironmentFile for its systemd service, allowing secrets to be provided without ending up in the Nix Store.
0000000000000000000000000000000000000000000000000000000000000000000000000000000000
···1213 - default linux: 5.15 -\> 6.1, all supported kernels available
1415+ - systemd has been updated to v253.1, see [the pull request](https://github.com/NixOS/nixpkgs/pull/216826) for more info.
16+ It's recommended to use `nixos-rebuild boot` and `reboot`, rather than `nixos-rebuild switch` - since in some rare cases
17+ the switch of a live system might fail.
18+19- Cinnamon has been updated to 5.6, see [the pull request](https://github.com/NixOS/nixpkgs/pull/201328#issue-1449910204) for what is changed.
2021- KDE Plasma has been updated to v5.27, see [the release notes](https://kde.org/announcements/plasma/5/5.27.0/) for what is changed.
2223- `nixos-rebuild` now supports an extra `--specialisation` option that can be used to change specialisation for `switch` and `test` commands.
24+25+- `libxcrypt`, the library providing the `crypt(3)` password hashing function, is now built without support for algorithms not flagged [`strong`](https://github.com/besser82/libxcrypt/blob/v4.4.33/lib/hashes.conf#L48). This affects the availability of password hashing algorithms used for system login (`login(1)`, `passwd(1)`), but also Apache2 Basic-Auth, Samba, OpenLDAP, and [many other packages](https://github.com/search?q=repo%3ANixOS%2Fnixpkgs%20libxcrypt&type=code).
2627## New Services {#sec-release-23.05-new-services}
28···167168- conntrack helper autodetection has been removed from kernels 6.0 and up upstream, and an assertion was added to ensure things don't silently stop working. Migrate your configuration to assign helpers explicitly or use an older LTS kernel branch as a temporary workaround.
169170+- The `services.pipewire.config` options have been removed, as they have basically never worked correctly. All behavior defined by the default configuration can be overridden with drop-in files as necessary - see [below](#sec-release-23.05-migration-pipewire) for details.
171+172+- `services.pipewire.media-session` and the `pipewire-media-session` package have been removed, as they are no longer supported upstream. Users are encouraged to use `services.pipewire.wireplumber` instead.
173## Other Notable Changes {#sec-release-23.05-notable-changes}
174175<!-- To avoid merge conflicts, consider adding your item at an arbitrary place in the list instead. -->
···316- The option `services.prometheus.exporters.pihole.interval` does not exist anymore and has been removed.
317318- `k3s` can now be configured with an EnvironmentFile for its systemd service, allowing secrets to be provided without ending up in the Nix Store.
319+320+## Detailed migration information {#sec-release-23.05-migration}
321+322+### Pipewire configuration overrides {#sec-release-23.05-migration-pipewire}
323+324+#### Why this change? {#sec-release-23.05-migration-pipewire-why}
325+326+The Pipewire config semantics don't really match the NixOS module semantics, so it's extremely awkward to override the default config, especially when lists are involved. Vendoring the configuration files in nixpkgs also creates unnecessary maintenance overhead.
327+328+Also, upstream added a lot of accomodations to allow doing most of the things you'd want to do with a config edit in better ways.
329+330+#### Migrating your configuration {#sec-release-23.05-migration-pipewire-how}
331+332+Compare your settings to [the defaults](https://gitlab.freedesktop.org/pipewire/pipewire/-/tree/master/src/daemon) and where your configuration differs from them.
333+334+Then, create a drop-in JSON file in `/etc/pipewire/<config file name>.d/99-custom.conf` (the actual filename can be anything) and migrate your changes to it according to the following sections.
335+336+Repeat for every file you've modified, changing the directory name accordingly.
337+338+#### Things you can just copy over {#sec-release-23.05-migration-pipewire-simple}
339+340+If you are:
341+342+- setting properties via `*.properties`
343+- loading a new module to `context.modules`
344+- creating new objects with `context.objects`
345+- declaring SPA libraries with `context.spa-libs`
346+- running custom commands with `context.exec`
347+- adding new rules with `*.rules`
348+- running custom PulseAudio commands with `pulse.cmd`
349+350+Simply move the definitions into the drop-in.
351+352+Note that the use of `context.exec` is not recommended and other methods of running your thing are likely a better option.
353+354+```json
355+{
356+ "context.properties": {
357+ "your.property.name": "your.property.value"
358+ },
359+ "context.modules": [
360+ { "name": "libpipewire-module-my-cool-thing" }
361+ ],
362+ "context.objects": [
363+ { "factory": { ... } }
364+ ],
365+ "alsa.rules": [
366+ { "matches: { ... }, "actions": { ... } }
367+ ]
368+}
369+```
370+371+#### Removing a module from `context.modules` {#sec-release-23.05-migration-pipewire-removing-modules}
372+373+Look for an option to disable it via `context.properties` (`"module.x11.bell": "false"` is likely the most common use case here).
374+If one is not available, proceed to [Nuclear option](#sec-release-23.05-migration-pipewire).
375+376+#### Modifying a module's parameters in `context.modules` {#sec-release-23.05-migration-pipewire-modifying-modules}
377+378+For most modules (e.g. `libpipewire-module-rt`) it's enough to load the module again with the new arguments, e.g.:
379+380+```json
381+{
382+ "context.modules": [
383+ {
384+ "name": "libpipewire-module-rt",
385+ "args": {
386+ "rt.prio": 90
387+ }
388+ }
389+ ]
390+}
391+```
392+393+Note that `module-rt` specifically will generally use the highest values available by default, so setting limits on the `pipewire` systemd service is preferable to reloading.
394+395+If reloading the module is not an option, proceed to [Nuclear option](#sec-release-23.05-migration-pipewire).
396+397+#### Nuclear option {#sec-release-23.05-migration-pipewire-nuclear}
398+If all else fails, you can still manually copy the contents of the default configuration file
399+from `${pkgs.pipewire.lib}/share/pipewire` to `/etc/pipewire` and edit it to fully override the default.
400+However, this should be done only as a last resort. Please talk to the Pipewire maintainers if you ever need to do this.
+8-5
nixos/modules/config/users-groups.nix
···539540 ###### implementation
541542- config = {
00543544 users.users = {
545 root = {
···601 text = ''
602 users=()
603 while IFS=: read -r user hash tail; do
604- if [[ "$hash" = "$"* && ! "$hash" =~ ^\$(y|gy|7|2b|2y|2a|6)\$ ]]; then
605 users+=("$user")
606 fi
607 done </etc/shadow
608609 if (( "''${#users[@]}" )); then
610 echo "
611- WARNING: The following user accounts rely on password hashes that will
612- be removed in NixOS 23.05. They should be renewed as soon as possible."
0613 printf ' - %s\n' "''${users[@]}"
614 fi
615 '';
···716 let
717 sep = "\\$";
718 base64 = "[a-zA-Z0-9./]+";
719- id = "[a-z0-9-]+";
720 value = "[a-zA-Z0-9/+.-]+";
721 options = "${id}(=${value})?(,${id}=${value})*";
722 scheme = "${id}(${sep}${options})?";
···539540 ###### implementation
541542+ config = let
543+ cryptSchemeIdPatternGroup = "(${lib.concatStringsSep "|" pkgs.libxcrypt.enabledCryptSchemeIds})";
544+ in {
545546 users.users = {
547 root = {
···603 text = ''
604 users=()
605 while IFS=: read -r user hash tail; do
606+ if [[ "$hash" = "$"* && ! "$hash" =~ ^\''$${cryptSchemeIdPatternGroup}\$ ]]; then
607 users+=("$user")
608 fi
609 done </etc/shadow
610611 if (( "''${#users[@]}" )); then
612 echo "
613+ WARNING: The following user accounts rely on password hashing algorithms
614+ that have been removed. They need to be renewed as soon as possible, as
615+ they do prevent their users from logging in."
616 printf ' - %s\n' "''${users[@]}"
617 fi
618 '';
···719 let
720 sep = "\\$";
721 base64 = "[a-zA-Z0-9./]+";
722+ id = cryptSchemeIdPatternGroup;
723 value = "[a-zA-Z0-9/+.-]+";
724 options = "${id}(=${value})?(,${id}=${value})*";
725 scheme = "${id}(${sep}${options})?";
···29 config = lib.mkIf cfg.enable {
30 assertions = [
31 {
32- assertion = !config.services.pipewire.media-session.enable;
33- message = "WirePlumber and pipewire-media-session can't be enabled at the same time.";
34- }
35- {
36 assertion = !config.hardware.bluetooth.hsphfpd.enable;
37 message = "Using Wireplumber conflicts with hsphfpd, as it provides the same functionality. `hardware.bluetooth.hsphfpd.enable` needs be set to false";
38 }
···29 config = lib.mkIf cfg.enable {
30 assertions = [
31 {
000032 assertion = !config.hardware.bluetooth.hsphfpd.enable;
33 message = "Using Wireplumber conflicts with hsphfpd, as it provides the same functionality. `hardware.bluetooth.hsphfpd.enable` needs be set to false";
34 }
···64 '';
6566 meta = with lib; {
67- broken = (stdenv.isLinux && stdenv.isAarch64) || stdenv.isDarwin;
68 description = "An open source crypto-currency focused on fast private transactions";
69 longDescription = ''
70 PIVX is an MIT licensed, open source, blockchain-based cryptocurrency with
···64 '';
6566 meta = with lib; {
67+ broken = true;
68 description = "An open source crypto-currency focused on fast private transactions";
69 longDescription = ''
70 PIVX is an MIT licensed, open source, blockchain-based cryptocurrency with
···13# specific to this function's use case, which is setting up the output variables.
14_assignFirst() {
15 local varName="$1"
016 local REMOVE=REMOVE # slightly hacky - we allow REMOVE (i.e. not a variable name)
17 shift
18- for var in "$@"; do
19- if [ -n "${!var-}" ]; then eval "${varName}"="${var}"; return; fi
20 done
21 echo
22- echo "error: _assignFirst: could not find a non-empty variable to assign to ${varName}."
23 echo " The following variables were all unset or empty:"
24 echo " $*"
25 if [ -z "${out:-}" ]; then
···138139 # remove empty directories, printing iff at least one gets removed
140 local srcParent="$(readlink -m "$srcPath/..")"
141- if rmdir "$srcParent"; then
142 echo "Removing empty $srcParent/ and (possibly) its parents"
143- rmdir -p --ignore-fail-on-non-empty "$(readlink -m "$srcParent/..")" \
144 2> /dev/null || true # doesn't ignore failure for some reason
145 fi
146 done
···13# specific to this function's use case, which is setting up the output variables.
14_assignFirst() {
15 local varName="$1"
16+ local _var
17 local REMOVE=REMOVE # slightly hacky - we allow REMOVE (i.e. not a variable name)
18 shift
19+ for _var in "$@"; do
20+ if [ -n "${!_var-}" ]; then eval "${varName}"="${_var}"; return; fi
21 done
22 echo
23+ echo "error: _assignFirst: could not find a non-empty variable whose name to assign to ${varName}."
24 echo " The following variables were all unset or empty:"
25 echo " $*"
26 if [ -z "${out:-}" ]; then
···139140 # remove empty directories, printing iff at least one gets removed
141 local srcParent="$(readlink -m "$srcPath/..")"
142+ if [ -n "$(find "$srcParent" -maxdepth 0 -type d -empty 2>/dev/null)" ]; then
143 echo "Removing empty $srcParent/ and (possibly) its parents"
144+ rmdir -p --ignore-fail-on-non-empty "$srcParent" \
145 2> /dev/null || true # doesn't ignore failure for some reason
146 fi
147 done
···11 local dst="${debug:-$out}"
12 if [ "$prefix" = "$dst" ]; then return 0; fi
1300014 dst="$dst/lib/debug/.build-id"
1516 # Find executables and dynamic libraries.
···11 local dst="${debug:-$out}"
12 if [ "$prefix" = "$dst" ]; then return 0; fi
1314+ # in case there is nothing to strip, don't fail the build
15+ mkdir -p "$dst"
16+17 dst="$dst/lib/debug/.build-id"
1819 # Find executables and dynamic libraries.
···250 done
251 fi
25200000000000253 # Get rid of some "fixed" header files
254 rm -rfv $out/lib/gcc/*/*/include-fixed/{root,linux}
255
···250 done
251 fi
252253+ # Cross-compiler specific:
254+ # --with-headers=$dir option triggers gcc to make a private copy
255+ # of $dir headers and use it later as `-isysroot`. This prevents
256+ # cc-wrapper from overriding libc headers with `-idirafter`.
257+ # It should be safe to drop it and rely solely on the cc-wrapper.
258+ local sysinc_dir=$out/${targetConfig+$targetConfig/}sys-include
259+ if [ -d "$sysinc_dir" ]; then
260+ chmod -R u+w "$out/${targetConfig+$targetConfig/}sys-include"
261+ rm -rfv "$out/${targetConfig+$targetConfig/}sys-include"
262+ fi
263+264 # Get rid of some "fixed" header files
265 rm -rfv $out/lib/gcc/*/*/include-fixed/{root,linux}
266
···15, zlib
16, buildLlvmTools
17, debugVersion ? false
18+, doCheck ? stdenv.isLinux && (!stdenv.isx86_32)
19+ && (stdenv.hostPlatform == stdenv.buildPlatform)
20, enableManpages ? false
21, enableSharedLibraries ? !stdenv.hostPlatform.isStatic
22# broken for Ampere eMAG 8180 (c2.large.arm on Packet) #56245
···32 shortVersion = with lib;
33 concatStringsSep "." (take 1 (splitString "." release_version));
3435+ # Ordinarily we would just the `doCheck` and `checkDeps` functionality
36+ # `mkDerivation` gives us to manage our test dependencies (instead of breaking
37+ # out `doCheck` as a package level attribute).
38+ #
39+ # Unfortunately `lit` does not forward `$PYTHONPATH` to children processes, in
40+ # particular the children it uses to do feature detection.
41+ #
42+ # This means that python deps we add to `checkDeps` (which the python
43+ # interpreter is made aware of via `$PYTHONPATH` – populated by the python
44+ # setup hook) are not picked up by `lit` which causes it to skip tests.
45+ #
46+ # Adding `python3.withPackages (ps: [ ... ])` to `checkDeps` also doesn't work
47+ # because this package is shadowed in `$PATH` by the regular `python3`
48+ # package.
49+ #
50+ # So, we "manually" assemble one python derivation for the package to depend
51+ # on, taking into account whether checks are enabled or not:
52+ python = if doCheck then
53+ let
54+ checkDeps = ps: with ps; [ psutil ];
55+ in python3.withPackages checkDeps
56+ else python3;
57+58in stdenv.mkDerivation (rec {
59 pname = "llvm";
60 inherit version;
···7374 outputs = [ "out" "lib" "dev" "python" ];
7576+ nativeBuildInputs = [ cmake python ]
77 ++ optionals enableManpages [ python3.pkgs.sphinx python3.pkgs.recommonmark ];
7879 buildInputs = [ libxml2 libffi ]
···280 cp NATIVE/bin/llvm-config $dev/bin/llvm-config-native
281 '';
282283+ inherit doCheck;
0284285 checkTarget = "check-all";
286
···15, zlib
16, buildLlvmTools
17, debugVersion ? false
18+, doCheck ? stdenv.isLinux && (!stdenv.isx86_32) && (!stdenv.hostPlatform.isMusl) && (!stdenv.hostPlatform.isRiscV)
19+ && (stdenv.hostPlatform == stdenv.buildPlatform)
20, enableManpages ? false
21, enableSharedLibraries ? !stdenv.hostPlatform.isStatic
22# broken for Ampere eMAG 8180 (c2.large.arm on Packet) #56245
···32 shortVersion = with lib;
33 concatStringsSep "." (take 1 (splitString "." release_version));
3435+ # Ordinarily we would just the `doCheck` and `checkDeps` functionality
36+ # `mkDerivation` gives us to manage our test dependencies (instead of breaking
37+ # out `doCheck` as a package level attribute).
38+ #
39+ # Unfortunately `lit` does not forward `$PYTHONPATH` to children processes, in
40+ # particular the children it uses to do feature detection.
41+ #
42+ # This means that python deps we add to `checkDeps` (which the python
43+ # interpreter is made aware of via `$PYTHONPATH` – populated by the python
44+ # setup hook) are not picked up by `lit` which causes it to skip tests.
45+ #
46+ # Adding `python3.withPackages (ps: [ ... ])` to `checkDeps` also doesn't work
47+ # because this package is shadowed in `$PATH` by the regular `python3`
48+ # package.
49+ #
50+ # So, we "manually" assemble one python derivation for the package to depend
51+ # on, taking into account whether checks are enabled or not:
52+ python = if doCheck then
53+ let
54+ checkDeps = ps: with ps; [ psutil ];
55+ in python3.withPackages checkDeps
56+ else python3;
57+58in stdenv.mkDerivation (rec {
59 pname = "llvm";
60 inherit version;
···7374 outputs = [ "out" "lib" "dev" "python" ];
7576+ nativeBuildInputs = [ cmake python ]
77 ++ optionals enableManpages [ python3.pkgs.sphinx python3.pkgs.recommonmark ];
7879 buildInputs = [ libxml2 libffi ]
···292 cp NATIVE/bin/llvm-config $dev/bin/llvm-config-native
293 '';
294295+ inherit doCheck;
0296297 checkTarget = "check-all";
298
···15, zlib
16, buildLlvmTools
17, debugVersion ? false
18+, doCheck ? stdenv.isLinux && (!stdenv.isx86_32) && (!stdenv.hostPlatform.isMusl)
19+ && (stdenv.hostPlatform == stdenv.buildPlatform)
20, enableManpages ? false
21, enableSharedLibraries ? !stdenv.hostPlatform.isStatic
22# broken for Ampere eMAG 8180 (c2.large.arm on Packet) #56245
···32 shortVersion = with lib;
33 concatStringsSep "." (take 1 (splitString "." release_version));
3435+ # Ordinarily we would just the `doCheck` and `checkDeps` functionality
36+ # `mkDerivation` gives us to manage our test dependencies (instead of breaking
37+ # out `doCheck` as a package level attribute).
38+ #
39+ # Unfortunately `lit` does not forward `$PYTHONPATH` to children processes, in
40+ # particular the children it uses to do feature detection.
41+ #
42+ # This means that python deps we add to `checkDeps` (which the python
43+ # interpreter is made aware of via `$PYTHONPATH` – populated by the python
44+ # setup hook) are not picked up by `lit` which causes it to skip tests.
45+ #
46+ # Adding `python3.withPackages (ps: [ ... ])` to `checkDeps` also doesn't work
47+ # because this package is shadowed in `$PATH` by the regular `python3`
48+ # package.
49+ #
50+ # So, we "manually" assemble one python derivation for the package to depend
51+ # on, taking into account whether checks are enabled or not:
52+ python = if doCheck then
53+ let
54+ checkDeps = ps: with ps; [ psutil ];
55+ in python3.withPackages checkDeps
56+ else python3;
57+58in stdenv.mkDerivation (rec {
59 pname = "llvm";
60 inherit version;
···7374 outputs = [ "out" "lib" "dev" "python" ];
7576+ nativeBuildInputs = [ cmake python ]
77 ++ optionals enableManpages [ python3.pkgs.sphinx python3.pkgs.recommonmark ];
7879 buildInputs = [ libxml2 libffi ]
···280 cp NATIVE/bin/llvm-config $dev/bin/llvm-config-native
281 '';
282283+ inherit doCheck;
0284285 checkTarget = "check-all";
286
···37 ] ++ lib.optionals (useLLVM || bareMetal || isMusl) [
38 "-DCOMPILER_RT_BUILD_SANITIZERS=OFF"
39 "-DCOMPILER_RT_BUILD_XRAY=OFF"
40- "-DCOMPILER_RT_BUILD_PROFILE=OFF"
41 "-DCOMPILER_RT_BUILD_MEMPROF=OFF"
42 "-DCOMPILER_RT_BUILD_ORC=OFF" # may be possible to build with musl if necessary
0043 ] ++ lib.optionals ((useLLVM && !haveLibc) || bareMetal) [
44 "-DCMAKE_C_COMPILER_WORKS=ON"
45 "-DCMAKE_CXX_COMPILER_WORKS=ON"
···71 ./darwin-targetconditionals.patch
72 ../../common/compiler-rt/darwin-plistbuddy-workaround.patch
73 ./armv7l.patch
00000074 ];
7576 # TSAN requires XPC on Darwin, which we have no public/free source files for. We can depend on the Apple frameworks
···37 ] ++ lib.optionals (useLLVM || bareMetal || isMusl) [
38 "-DCOMPILER_RT_BUILD_SANITIZERS=OFF"
39 "-DCOMPILER_RT_BUILD_XRAY=OFF"
040 "-DCOMPILER_RT_BUILD_MEMPROF=OFF"
41 "-DCOMPILER_RT_BUILD_ORC=OFF" # may be possible to build with musl if necessary
42+ ] ++ lib.optionals (useLLVM || bareMetal) [
43+ "-DCOMPILER_RT_BUILD_PROFILE=OFF"
44 ] ++ lib.optionals ((useLLVM && !haveLibc) || bareMetal) [
45 "-DCMAKE_C_COMPILER_WORKS=ON"
46 "-DCMAKE_CXX_COMPILER_WORKS=ON"
···72 ./darwin-targetconditionals.patch
73 ../../common/compiler-rt/darwin-plistbuddy-workaround.patch
74 ./armv7l.patch
75+ # Fix build on armv6l
76+ ../../common/compiler-rt/armv6-mcr-dmb.patch
77+ ../../common/compiler-rt/armv6-sync-ops-no-thumb.patch
78+ ../../common/compiler-rt/armv6-no-ldrexd-strexd.patch
79+ ../../common/compiler-rt/armv6-scudo-no-yield.patch
80+ ../../common/compiler-rt/armv6-scudo-libatomic.patch
81 ];
8283 # TSAN requires XPC on Darwin, which we have no public/free source files for. We can depend on the Apple frameworks
···16, which
17, buildLlvmTools
18, debugVersion ? false
19+, doCheck ? stdenv.isLinux && (!stdenv.isx86_32) && (!stdenv.hostPlatform.isMusl)
20+ && (stdenv.hostPlatform == stdenv.buildPlatform)
21, enableManpages ? false
22, enableSharedLibraries ? !stdenv.hostPlatform.isStatic
23# broken for Ampere eMAG 8180 (c2.large.arm on Packet) #56245
···33 shortVersion = with lib;
34 concatStringsSep "." (take 1 (splitString "." release_version));
3536+ # Ordinarily we would just the `doCheck` and `checkDeps` functionality
37+ # `mkDerivation` gives us to manage our test dependencies (instead of breaking
38+ # out `doCheck` as a package level attribute).
39+ #
40+ # Unfortunately `lit` does not forward `$PYTHONPATH` to children processes, in
41+ # particular the children it uses to do feature detection.
42+ #
43+ # This means that python deps we add to `checkDeps` (which the python
44+ # interpreter is made aware of via `$PYTHONPATH` – populated by the python
45+ # setup hook) are not picked up by `lit` which causes it to skip tests.
46+ #
47+ # Adding `python3.withPackages (ps: [ ... ])` to `checkDeps` also doesn't work
48+ # because this package is shadowed in `$PATH` by the regular `python3`
49+ # package.
50+ #
51+ # So, we "manually" assemble one python derivation for the package to depend
52+ # on, taking into account whether checks are enabled or not:
53+ python = if doCheck then
54+ let
55+ checkDeps = ps: with ps; [ psutil ];
56+ in python3.withPackages checkDeps
57+ else python3;
58+59in stdenv.mkDerivation (rec {
60 pname = "llvm";
61 inherit version;
···6566 outputs = [ "out" "lib" "dev" "python" ];
6768+ nativeBuildInputs = [ cmake python ]
69 ++ optionals enableManpages [ python3.pkgs.sphinx python3.pkgs.recommonmark ];
7071 buildInputs = [ libxml2 libffi ]
···242 cp NATIVE/bin/llvm-config $dev/bin/llvm-config-native
243 '';
244245+ inherit doCheck;
0246247 checkTarget = "check-all";
248
···81 ./darwin-targetconditionals.patch
82 ../../common/compiler-rt/darwin-plistbuddy-workaround.patch
83 ./armv7l.patch
00000084 ];
8586 # TSAN requires XPC on Darwin, which we have no public/free source files for. We can depend on the Apple frameworks
···81 ./darwin-targetconditionals.patch
82 ../../common/compiler-rt/darwin-plistbuddy-workaround.patch
83 ./armv7l.patch
84+ # Fix build on armv6l
85+ ../../common/compiler-rt/armv6-mcr-dmb.patch
86+ ../../common/compiler-rt/armv6-sync-ops-no-thumb.patch
87+ ../../common/compiler-rt/armv6-no-ldrexd-strexd.patch
88+ ../../common/compiler-rt/armv6-scudo-no-yield.patch
89+ ../../common/compiler-rt/armv6-scudo-libatomic.patch
90 ];
9192 # TSAN requires XPC on Darwin, which we have no public/free source files for. We can depend on the Apple frameworks
+3-3
pkgs/development/compilers/llvm/14/default.nix
···1{ lowPrio, newScope, pkgs, lib, stdenv, cmake
2, gccForLibs, preLibcCrossHeaders
3-, libxml2, python3, isl, fetchFromGitHub, overrideCC, wrapCCWith, wrapBintoolsWith
4, buildLlvmTools # tools, but from the previous stage, for cross
5, targetLlvmLibraries # libraries, but from the next stage, for cross
6, targetLlvm
···52 };
5354 tools = lib.makeExtensible (tools: let
55- callPackage = newScope (tools // { inherit stdenv cmake libxml2 python3 isl release_version version monorepoSrc buildLlvmTools; });
56 mkExtraBuildCommands0 = cc: ''
57 rsrc="$out/resource-root"
58 mkdir "$rsrc"
···232 });
233234 libraries = lib.makeExtensible (libraries: let
235- callPackage = newScope (libraries // buildLlvmTools // { inherit stdenv cmake libxml2 python3 isl release_version version monorepoSrc; });
236 in {
237238 compiler-rt-libc = callPackage ./compiler-rt {
···1{ lowPrio, newScope, pkgs, lib, stdenv, cmake
2, gccForLibs, preLibcCrossHeaders
3+, libxml2, python3, fetchFromGitHub, overrideCC, wrapCCWith, wrapBintoolsWith
4, buildLlvmTools # tools, but from the previous stage, for cross
5, targetLlvmLibraries # libraries, but from the next stage, for cross
6, targetLlvm
···52 };
5354 tools = lib.makeExtensible (tools: let
55+ callPackage = newScope (tools // { inherit stdenv cmake libxml2 python3 release_version version monorepoSrc buildLlvmTools; });
56 mkExtraBuildCommands0 = cc: ''
57 rsrc="$out/resource-root"
58 mkdir "$rsrc"
···232 });
233234 libraries = lib.makeExtensible (libraries: let
235+ callPackage = newScope (libraries // buildLlvmTools // { inherit stdenv cmake libxml2 python3 release_version version monorepoSrc; });
236 in {
237238 compiler-rt-libc = callPackage ./compiler-rt {
···17, which
18, buildLlvmTools
19, debugVersion ? false
20+, doCheck ? stdenv.isLinux && (!stdenv.isx86_32) && (!stdenv.hostPlatform.isMusl)
21+ && (stdenv.hostPlatform == stdenv.buildPlatform)
22, enableManpages ? false
23, enableSharedLibraries ? !stdenv.hostPlatform.isStatic
24# broken for Ampere eMAG 8180 (c2.large.arm on Packet) #56245
25# broken for the armv7l builder
26, enablePFM ? stdenv.isLinux && !stdenv.hostPlatform.isAarch
27+, enablePolly ? true
28} @args:
2930let
···34 shortVersion = with lib;
35 concatStringsSep "." (take 1 (splitString "." release_version));
3637+ # Ordinarily we would just the `doCheck` and `checkDeps` functionality
38+ # `mkDerivation` gives us to manage our test dependencies (instead of breaking
39+ # out `doCheck` as a package level attribute).
40+ #
41+ # Unfortunately `lit` does not forward `$PYTHONPATH` to children processes, in
42+ # particular the children it uses to do feature detection.
43+ #
44+ # This means that python deps we add to `checkDeps` (which the python
45+ # interpreter is made aware of via `$PYTHONPATH` – populated by the python
46+ # setup hook) are not picked up by `lit` which causes it to skip tests.
47+ #
48+ # Adding `python3.withPackages (ps: [ ... ])` to `checkDeps` also doesn't work
49+ # because this package is shadowed in `$PATH` by the regular `python3`
50+ # package.
51+ #
52+ # So, we "manually" assemble one python derivation for the package to depend
53+ # on, taking into account whether checks are enabled or not:
54+ python = if doCheck then
55+ let
56+ checkDeps = ps: with ps; [ psutil ];
57+ in python3.withPackages checkDeps
58+ else python3;
59+60in stdenv.mkDerivation (rec {
61 pname = "llvm";
62 inherit version;
···67 cp -r ${monorepoSrc}/${pname} "$out"
68 cp -r ${monorepoSrc}/third-party "$out"
69 '' + lib.optionalString enablePolly ''
70+ chmod u+w "$out/${pname}/tools"
71+ cp -r ${monorepoSrc}/polly "$out/${pname}/tools"
72 '');
7374 sourceRoot = "${src.name}/${pname}";
7576 outputs = [ "out" "lib" "dev" "python" ];
7778+ nativeBuildInputs = [ cmake python ]
79 ++ optionals enableManpages [ python3.pkgs.sphinx python3.pkgs.recommonmark ];
8081 buildInputs = [ libxml2 libffi ]
···255 cp NATIVE/bin/llvm-config $dev/bin/llvm-config-native
256 '';
257258+ inherit doCheck;
0259260 checkTarget = "check-all";
261
···1+This is the one remaining Polly install dirs related change that hasn't made it
2+into upstream yet; previously this patch file also included:
3+https://reviews.llvm.org/D117541
4+00000000000000000000000000000000000000000000000000000000000000000000005diff --git a/tools/polly/cmake/polly_macros.cmake b/tools/polly/cmake/polly_macros.cmake
6index 518a09b45a42..bd9d6f5542ad 100644
7--- a/tools/polly/cmake/polly_macros.cmake
···17 endif()
18 set_property(GLOBAL APPEND PROPERTY LLVM_EXPORTS ${name})
19 endmacro(add_polly_library)
0000000000000
···13, zlib
14, buildLlvmTools
15, fetchpatch
16+, doCheck ? stdenv.isLinux && (!stdenv.isi686)
17+ && (stdenv.hostPlatform == stdenv.buildPlatform)
18, debugVersion ? false
19, enableManpages ? false
20, enableSharedLibraries ? !stdenv.hostPlatform.isStatic
···28 versionSuffixes = with lib;
29 let parts = splitVersion release_version; in
30 imap (i: _: concatStringsSep "." (take i parts)) parts;
31+32+ # Ordinarily we would just the `doCheck` and `checkDeps` functionality
33+ # `mkDerivation` gives us to manage our test dependencies (instead of breaking
34+ # out `doCheck` as a package level attribute).
35+ #
36+ # Unfortunately `lit` does not forward `$PYTHONPATH` to children processes, in
37+ # particular the children it uses to do feature detection.
38+ #
39+ # This means that python deps we add to `checkDeps` (which the python
40+ # interpreter is made aware of via `$PYTHONPATH` – populated by the python
41+ # setup hook) are not picked up by `lit` which causes it to skip tests.
42+ #
43+ # Adding `python3.withPackages (ps: [ ... ])` to `checkDeps` also doesn't work
44+ # because this package is shadowed in `$PATH` by the regular `python3`
45+ # package.
46+ #
47+ # So, we "manually" assemble one python derivation for the package to depend
48+ # on, taking into account whether checks are enabled or not:
49+ python = if doCheck then
50+ let
51+ checkDeps = ps: with ps; [ psutil ];
52+ in python3.withPackages checkDeps
53+ else python3;
54in
5556stdenv.mkDerivation (rec {
···7172 outputs = [ "out" "lib" "dev" "python" ];
7374+ nativeBuildInputs = [ cmake python ]
75 ++ optional enableManpages python3.pkgs.sphinx;
7677 buildInputs = [ libxml2 libffi ];
···252 cp NATIVE/bin/llvm-config $dev/bin/llvm-config-native
253 '';
254255+ inherit doCheck;
0256257 checkTarget = "check-all";
258
···15, zlib
16, buildLlvmTools
17, debugVersion ? false
18+, doCheck ? stdenv.isLinux && (!stdenv.isx86_32)
19+ && (stdenv.hostPlatform == stdenv.buildPlatform)
20, enableManpages ? false
21, enableSharedLibraries ? !stdenv.hostPlatform.isStatic
22# broken for Ampere eMAG 8180 (c2.large.arm on Packet) #56245
···33 let parts = splitVersion release_version; in
34 imap (i: _: concatStringsSep "." (take i parts)) parts;
3536+ # Ordinarily we would just the `doCheck` and `checkDeps` functionality
37+ # `mkDerivation` gives us to manage our test dependencies (instead of breaking
38+ # out `doCheck` as a package level attribute).
39+ #
40+ # Unfortunately `lit` does not forward `$PYTHONPATH` to children processes, in
41+ # particular the children it uses to do feature detection.
42+ #
43+ # This means that python deps we add to `checkDeps` (which the python
44+ # interpreter is made aware of via `$PYTHONPATH` – populated by the python
45+ # setup hook) are not picked up by `lit` which causes it to skip tests.
46+ #
47+ # Adding `python3.withPackages (ps: [ ... ])` to `checkDeps` also doesn't work
48+ # because this package is shadowed in `$PATH` by the regular `python3`
49+ # package.
50+ #
51+ # So, we "manually" assemble one python derivation for the package to depend
52+ # on, taking into account whether checks are enabled or not:
53+ python = if doCheck then
54+ let
55+ checkDeps = ps: with ps; [ psutil ];
56+ in python3.withPackages checkDeps
57+ else python3;
58+59in stdenv.mkDerivation (rec {
60 pname = "llvm";
61 inherit version;
···7475 outputs = [ "out" "lib" "dev" "python" ];
7677+ nativeBuildInputs = [ cmake python ]
78 ++ optional enableManpages python3.pkgs.sphinx;
7980 buildInputs = [ libxml2 libffi ]
···270 cp NATIVE/bin/llvm-config $dev/bin/llvm-config-native
271 '';
272273+ inherit doCheck;
0274275 checkTarget = "check-all";
276
···15, zlib
16, buildLlvmTools
17, debugVersion ? false
18+, doCheck ? stdenv.isLinux && (!stdenv.isx86_32)
19+ && (stdenv.hostPlatform == stdenv.buildPlatform)
20, enableManpages ? false
21, enableSharedLibraries ? !stdenv.hostPlatform.isStatic
22# broken for Ampere eMAG 8180 (c2.large.arm on Packet) #56245
···32 shortVersion = with lib;
33 concatStringsSep "." (take 1 (splitVersion release_version));
3435+ # Ordinarily we would just the `doCheck` and `checkDeps` functionality
36+ # `mkDerivation` gives us to manage our test dependencies (instead of breaking
37+ # out `doCheck` as a package level attribute).
38+ #
39+ # Unfortunately `lit` does not forward `$PYTHONPATH` to children processes, in
40+ # particular the children it uses to do feature detection.
41+ #
42+ # This means that python deps we add to `checkDeps` (which the python
43+ # interpreter is made aware of via `$PYTHONPATH` – populated by the python
44+ # setup hook) are not picked up by `lit` which causes it to skip tests.
45+ #
46+ # Adding `python3.withPackages (ps: [ ... ])` to `checkDeps` also doesn't work
47+ # because this package is shadowed in `$PATH` by the regular `python3`
48+ # package.
49+ #
50+ # So, we "manually" assemble one python derivation for the package to depend
51+ # on, taking into account whether checks are enabled or not:
52+ python = if doCheck then
53+ let
54+ checkDeps = ps: with ps; [ psutil ];
55+ in python3.withPackages checkDeps
56+ else python3;
57+58in stdenv.mkDerivation (rec {
59 pname = "llvm";
60 inherit version;
···7374 outputs = [ "out" "lib" "dev" "python" ];
7576+ nativeBuildInputs = [ cmake python ]
77 ++ optionals enableManpages [ python3.pkgs.sphinx python3.pkgs.recommonmark ];
7879 buildInputs = [ libxml2 libffi ]
···262 cp NATIVE/bin/llvm-config $dev/bin/llvm-config-native
263 '';
264265+ inherit doCheck;
0266267 checkTarget = "check-all";
268
···15, zlib
16, buildLlvmTools
17, debugVersion ? false
18+, doCheck ? stdenv.isLinux && (!stdenv.isx86_32) && (!stdenv.hostPlatform.isRiscV)
19+ && (stdenv.hostPlatform == stdenv.buildPlatform)
20, enableManpages ? false
21, enableSharedLibraries ? !stdenv.hostPlatform.isStatic
22# broken for Ampere eMAG 8180 (c2.large.arm on Packet) #56245
···32 shortVersion = with lib;
33 concatStringsSep "." (take 1 (splitString "." release_version));
3435+ # Ordinarily we would just the `doCheck` and `checkDeps` functionality
36+ # `mkDerivation` gives us to manage our test dependencies (instead of breaking
37+ # out `doCheck` as a package level attribute).
38+ #
39+ # Unfortunately `lit` does not forward `$PYTHONPATH` to children processes, in
40+ # particular the children it uses to do feature detection.
41+ #
42+ # This means that python deps we add to `checkDeps` (which the python
43+ # interpreter is made aware of via `$PYTHONPATH` – populated by the python
44+ # setup hook) are not picked up by `lit` which causes it to skip tests.
45+ #
46+ # Adding `python3.withPackages (ps: [ ... ])` to `checkDeps` also doesn't work
47+ # because this package is shadowed in `$PATH` by the regular `python3`
48+ # package.
49+ #
50+ # So, we "manually" assemble one python derivation for the package to depend
51+ # on, taking into account whether checks are enabled or not:
52+ python = if doCheck then
53+ let
54+ checkDeps = ps: with ps; [ psutil ];
55+ in python3.withPackages checkDeps
56+ else python3;
57+58in stdenv.mkDerivation (rec {
59 pname = "llvm";
60 inherit version;
···7374 outputs = [ "out" "lib" "dev" "python" ];
7576+ nativeBuildInputs = [ cmake python ]
77 ++ optionals enableManpages [ python3.pkgs.sphinx python3.pkgs.recommonmark ];
7879 buildInputs = [ libxml2 libffi ]
···277 cp NATIVE/bin/llvm-config $dev/bin/llvm-config-native
278 '';
279280+ inherit doCheck;
0281282 checkTarget = "check-all";
283
···1+From a56bb19a9dc303a50ef12d83cd24c2395bf81076 Mon Sep 17 00:00:00 2001
2+From: Ben Wolsieffer <benwolsieffer@gmail.com>
3+Date: Wed, 7 Dec 2022 21:25:46 -0500
4+Subject: [PATCH] [scudo][standalone] Use CheckAtomic to decide to link to
5+ libatomic
6+7+Standalone scudo uses the atomic operation builtin functions, which require
8+linking to libatomic on some platforms. Currently, this is done in an ad-hoc
9+manner. MIPS platforms always link to libatomic, and the tests are always linked
10+to it as well. libatomic is required on base ARMv6 (but not ARMv6K), but it is
11+currently not linked, causing the build to fail.
12+13+This patch replaces this ad-hoc logic with the CheckAtomic CMake module already
14+used in other parts of LLVM. The CheckAtomic module checks whether std::atomic
15+requires libatomic, which is not strictly the same as checking the atomic
16+builtins, but should have the same results as far as I know. If this is
17+problematic, a custom version of CheckAtomic could be used to specifically test
18+the builtins.
19+---
20+ compiler-rt/lib/scudo/standalone/CMakeLists.txt | 7 +++++++
21+ compiler-rt/lib/scudo/standalone/tests/CMakeLists.txt | 4 +---
22+ 2 files changed, 8 insertions(+), 3 deletions(-)
23+24+diff --git a/lib/scudo/standalone/CMakeLists.txt b/lib/scudo/standalone/CMakeLists.txt
25+index ae5c354768c8..eb27374ca520 100644
26+--- a/lib/scudo/standalone/CMakeLists.txt
27++++ b/lib/scudo/standalone/CMakeLists.txt
28+@@ -1,5 +1,8 @@
29+ add_compiler_rt_component(scudo_standalone)
30+31++include(DetermineGCCCompatible)
32++include(CheckAtomic)
33++
34+ include_directories(../.. include)
35+36+ set(SCUDO_CFLAGS)
37+@@ -34,6 +37,10 @@ list(APPEND SCUDO_LINK_FLAGS -Wl,-z,defs,-z,now,-z,relro)
38+39+ list(APPEND SCUDO_LINK_FLAGS -ffunction-sections -fdata-sections -Wl,--gc-sections)
40+41++if(HAVE_CXX_ATOMICS_WITH_LIB OR HAVE_CXX_ATOMICS64_WITH_LIB)
42++ list(APPEND SCUDO_LINK_FLAGS -latomic)
43++endif()
44++
45+ # We don't use the C++ standard library, so avoid including it by mistake.
46+ append_list_if(COMPILER_RT_HAS_NOSTDLIBXX_FLAG -nostdlib++ SCUDO_LINK_FLAGS)
47+48+diff --git a/lib/scudo/standalone/tests/CMakeLists.txt b/lib/scudo/standalone/tests/CMakeLists.txt
49+index 6d0936cbb5c1..70a5a7e959c1 100644
50+--- a/lib/scudo/standalone/tests/CMakeLists.txt
51++++ b/lib/scudo/standalone/tests/CMakeLists.txt
52+@@ -38,9 +38,7 @@ set(LINK_FLAGS
53+ ${SANITIZER_TEST_CXX_LIBRARIES}
54+ )
55+ list(APPEND LINK_FLAGS -pthread)
56+-# Linking against libatomic is required with some compilers
57+-check_library_exists(atomic __atomic_load_8 "" COMPILER_RT_HAS_LIBATOMIC)
58+-if (COMPILER_RT_HAS_LIBATOMIC)
59++if(HAVE_CXX_ATOMICS_WITH_LIB OR HAVE_CXX_ATOMICS64_WITH_LIB)
60+ list(APPEND LINK_FLAGS -latomic)
61+ endif()
62+63+--
64+2.38.1
65+
···1+From 5017de8ba4b1fe985169cf54590e858a9019a91f Mon Sep 17 00:00:00 2001
2+From: Khem Raj <raj.khem@gmail.com>
3+Date: Fri, 11 Mar 2022 16:25:49 -0800
4+Subject: [PATCH] [builtins] Do not force thumb mode directive in
5+ arm/sync-ops.h
6+7+.thumb_func was not switching mode until [1]
8+so it did not show up but now that .thumb_func (without argument) is
9+switching mode, its causing build failures on armv6 ( rpi0 ) even when
10+build is explicitly asking for this file to be built with -marm (ARM
11+mode), therefore use DEFINE_COMPILERRT_FUNCTION macro to add function
12+header which considers arch and mode from compiler cmdline to decide if
13+the function is built using thumb mode or arm mode.
14+15+[1] https://reviews.llvm.org/D101975
16+17+Note that it also needs https://reviews.llvm.org/D99282
18+19+Reviewed By: peter.smith, MaskRay
20+21+Differential Revision: https://reviews.llvm.org/D104183
22+---
23+ compiler-rt/lib/builtins/arm/sync-ops.h | 6 ++----
24+ 1 file changed, 2 insertions(+), 4 deletions(-)
25+26+diff --git a/lib/builtins/arm/sync-ops.h b/lib/builtins/arm/sync-ops.h
27+index 7a26170741ad2..d914f9d3a1093 100644
28+--- a/lib/builtins/arm/sync-ops.h
29++++ b/lib/builtins/arm/sync-ops.h
30+@@ -16,9 +16,8 @@
31+32+ #define SYNC_OP_4(op) \
33+ .p2align 2; \
34+- .thumb; \
35+ .syntax unified; \
36+- DEFINE_COMPILERRT_THUMB_FUNCTION(__sync_fetch_and_##op) \
37++ DEFINE_COMPILERRT_FUNCTION(__sync_fetch_and_##op) \
38+ DMB; \
39+ mov r12, r0; \
40+ LOCAL_LABEL(tryatomic_##op) : ldrex r0, [r12]; \
41+@@ -31,9 +30,8 @@
42+43+ #define SYNC_OP_8(op) \
44+ .p2align 2; \
45+- .thumb; \
46+ .syntax unified; \
47+- DEFINE_COMPILERRT_THUMB_FUNCTION(__sync_fetch_and_##op) \
48++ DEFINE_COMPILERRT_FUNCTION(__sync_fetch_and_##op) \
49+ push {r4, r5, r6, lr}; \
50+ DMB; \
51+ mov r12, r0; \
52+
···45 "-DCOMPILER_RT_BUILD_SANITIZERS=OFF"
46 "-DCOMPILER_RT_BUILD_XRAY=OFF"
47 "-DCOMPILER_RT_BUILD_LIBFUZZER=OFF"
48- "-DCOMPILER_RT_BUILD_PROFILE=OFF"
49 "-DCOMPILER_RT_BUILD_MEMPROF=OFF"
50 "-DCOMPILER_RT_BUILD_ORC=OFF" # may be possible to build with musl if necessary
0051 ] ++ lib.optionals ((useLLVM && !haveLibc) || bareMetal) [
52 "-DCMAKE_C_COMPILER_WORKS=ON"
53 "-DCMAKE_CXX_COMPILER_WORKS=ON"
···45 "-DCOMPILER_RT_BUILD_SANITIZERS=OFF"
46 "-DCOMPILER_RT_BUILD_XRAY=OFF"
47 "-DCOMPILER_RT_BUILD_LIBFUZZER=OFF"
048 "-DCOMPILER_RT_BUILD_MEMPROF=OFF"
49 "-DCOMPILER_RT_BUILD_ORC=OFF" # may be possible to build with musl if necessary
50+ ] ++ lib.optionals (useLLVM || bareMetal) [
51+ "-DCOMPILER_RT_BUILD_PROFILE=OFF"
52 ] ++ lib.optionals ((useLLVM && !haveLibc) || bareMetal) [
53 "-DCMAKE_C_COMPILER_WORKS=ON"
54 "-DCMAKE_CXX_COMPILER_WORKS=ON"
+26-14
pkgs/development/compilers/llvm/git/default.nix
···1{ lowPrio, newScope, pkgs, lib, stdenv, cmake, ninja
2, gccForLibs, preLibcCrossHeaders
3-, libxml2, python3, isl, fetchFromGitHub, overrideCC, wrapCCWith, wrapBintoolsWith
4, buildLlvmTools # tools, but from the previous stage, for cross
5, targetLlvmLibraries # libraries, but from the next stage, for cross
6# This is the default binutils, but with *this* version of LLD rather
···51 };
5253 tools = lib.makeExtensible (tools: let
54- callPackage = newScope (tools // { inherit stdenv cmake ninja libxml2 python3 isl release_version version monorepoSrc buildLlvmTools; });
55 mkExtraBuildCommands0 = cc: ''
56 rsrc="$out/resource-root"
57 mkdir "$rsrc"
···231 });
232233 libraries = lib.makeExtensible (libraries: let
234- callPackage = newScope (libraries // buildLlvmTools // { inherit stdenv cmake ninja libxml2 python3 isl release_version version monorepoSrc; });
235 in {
236237 compiler-rt-libc = callPackage ./compiler-rt {
···257258 libcxxStdenv = overrideCC stdenv buildLlvmTools.libcxxClang;
259260- libcxx = callPackage ./libcxx {
261- inherit llvm_meta;
262- stdenv = if stdenv.hostPlatform.useLLVM or false
263- then overrideCC stdenv buildLlvmTools.clangNoLibcxx
264- else stdenv;
265- };
266-267 libcxxabi = let
268- stdenv_ = if stdenv.hostPlatform.useLLVM or false
269- then overrideCC stdenv buildLlvmTools.clangNoLibcxx
270- else stdenv;
271 cxx-headers = callPackage ./libcxx {
272 inherit llvm_meta;
273- stdenv = stdenv_;
274 headersOnly = true;
275 };
000000000000276 in callPackage ./libcxxabi {
277 stdenv = stdenv_;
278 inherit llvm_meta cxx-headers;
00000000279 };
280281 libunwind = callPackage ./libunwind {
···1{ lowPrio, newScope, pkgs, lib, stdenv, cmake, ninja
2, gccForLibs, preLibcCrossHeaders
3+, libxml2, python3, fetchFromGitHub, overrideCC, wrapCCWith, wrapBintoolsWith
4, buildLlvmTools # tools, but from the previous stage, for cross
5, targetLlvmLibraries # libraries, but from the next stage, for cross
6# This is the default binutils, but with *this* version of LLD rather
···51 };
5253 tools = lib.makeExtensible (tools: let
54+ callPackage = newScope (tools // { inherit stdenv cmake ninja libxml2 python3 release_version version monorepoSrc buildLlvmTools; });
55 mkExtraBuildCommands0 = cc: ''
56 rsrc="$out/resource-root"
57 mkdir "$rsrc"
···231 });
232233 libraries = lib.makeExtensible (libraries: let
234+ callPackage = newScope (libraries // buildLlvmTools // { inherit stdenv cmake ninja libxml2 python3 release_version version monorepoSrc; });
235 in {
236237 compiler-rt-libc = callPackage ./compiler-rt {
···257258 libcxxStdenv = overrideCC stdenv buildLlvmTools.libcxxClang;
2590000000260 libcxxabi = let
261+ # CMake will "require" a compiler capable of compiling C++ programs
262+ # cxx-header's build does not actually use one so it doesn't really matter
263+ # what stdenv we use here, as long as CMake is happy.
264 cxx-headers = callPackage ./libcxx {
265 inherit llvm_meta;
0266 headersOnly = true;
267 };
268+269+ # `libcxxabi` *doesn't* need a compiler with a working C++ stdlib but it
270+ # *does* need a relatively modern C++ compiler (see:
271+ # https://releases.llvm.org/15.0.0/projects/libcxx/docs/index.html#platform-and-compiler-support).
272+ #
273+ # So, we use the clang from this LLVM package set, like libc++
274+ # "boostrapping builds" do:
275+ # https://releases.llvm.org/15.0.0/projects/libcxx/docs/BuildingLibcxx.html#bootstrapping-build
276+ #
277+ # We cannot use `clangNoLibcxx` because that contains `compiler-rt` which,
278+ # on macOS, depends on `libcxxabi`, thus forming a cycle.
279+ stdenv_ = overrideCC stdenv buildLlvmTools.clangNoCompilerRtWithLibc;
280 in callPackage ./libcxxabi {
281 stdenv = stdenv_;
282 inherit llvm_meta cxx-headers;
283+ };
284+285+ # Like `libcxxabi` above, `libcxx` requires a fairly modern C++ compiler,
286+ # so: we use the clang from this LLVM package set instead of the regular
287+ # stdenv's compiler.
288+ libcxx = callPackage ./libcxx {
289+ inherit llvm_meta;
290+ stdenv = overrideCC stdenv buildLlvmTools.clangNoLibcxx;
291 };
292293 libunwind = callPackage ./libunwind {
···58 cmakeFlags = [
59 "-DLLVM_ENABLE_RUNTIMES=libcxxabi"
60 "-DLIBCXXABI_LIBCXX_INCLUDES=${cxx-headers}/include/c++/v1"
61+62+ # `libcxxabi`'s build does not need a toolchain with a c++ stdlib attached
63+ # (we specify the headers it should use explicitly above).
64+ #
65+ # CMake however checks for this anyways; this flag tells it not to. See:
66+ # https://github.com/llvm/llvm-project/blob/4bd3f3759259548e159aeba5c76efb9a0864e6fa/llvm/runtimes/CMakeLists.txt#L243
67+ "-DCMAKE_CXX_COMPILER_WORKS=ON"
68 ] ++ lib.optionals (stdenv.hostPlatform.useLLVM or false) [
69 "-DLLVM_ENABLE_LIBCXX=ON"
70 "-DLIBCXXABI_USE_LLVM_UNWINDER=ON"
···18, which
19, buildLlvmTools
20, debugVersion ? false
21+, doCheck ? stdenv.isLinux && (!stdenv.isx86_32) && (!stdenv.hostPlatform.isMusl)
22+ && (stdenv.hostPlatform == stdenv.buildPlatform)
23, enableManpages ? false
24, enableSharedLibraries ? !stdenv.hostPlatform.isStatic
25, enablePFM ? !(stdenv.isDarwin
26 || stdenv.isAarch64 # broken for Ampere eMAG 8180 (c2.large.arm on Packet) #56245
27 || stdenv.isAarch32 # broken for the armv7l builder
28)
29+, enablePolly ? true
30} @args:
3132let
···36 shortVersion = with lib;
37 concatStringsSep "." (take 1 (splitString "." release_version));
3839+ # Ordinarily we would just the `doCheck` and `checkDeps` functionality
40+ # `mkDerivation` gives us to manage our test dependencies (instead of breaking
41+ # out `doCheck` as a package level attribute).
42+ #
43+ # Unfortunately `lit` does not forward `$PYTHONPATH` to children processes, in
44+ # particular the children it uses to do feature detection.
45+ #
46+ # This means that python deps we add to `checkDeps` (which the python
47+ # interpreter is made aware of via `$PYTHONPATH` – populated by the python
48+ # setup hook) are not picked up by `lit` which causes it to skip tests.
49+ #
50+ # Adding `python3.withPackages (ps: [ ... ])` to `checkDeps` also doesn't work
51+ # because this package is shadowed in `$PATH` by the regular `python3`
52+ # package.
53+ #
54+ # So, we "manually" assemble one python derivation for the package to depend
55+ # on, taking into account whether checks are enabled or not:
56+ python = if doCheck then
57+ let
58+ checkDeps = ps: with ps; [ psutil ];
59+ in python3.withPackages checkDeps
60+ else python3;
61+62in stdenv.mkDerivation (rec {
63 pname = "llvm";
64 inherit version;
···69 cp -r ${monorepoSrc}/${pname} "$out"
70 cp -r ${monorepoSrc}/third-party "$out"
71 '' + lib.optionalString enablePolly ''
72+ chmod u+w "$out/${pname}/tools"
73+ cp -r ${monorepoSrc}/polly "$out/${pname}/tools"
74 '');
7576 sourceRoot = "${src.name}/${pname}";
7778 outputs = [ "out" "lib" "dev" "python" ];
7980+ nativeBuildInputs = [ cmake ninja python ]
81 ++ optionals enableManpages [ python3.pkgs.sphinx python3.pkgs.recommonmark ];
8283 buildInputs = [ libxml2 libffi ]
···242 cp NATIVE/bin/llvm-config $dev/bin/llvm-config-native
243 '';
244245+ inherit doCheck;
0246247 checkTarget = "check-all";
248
···1+This is the one remaining Polly install dirs related change that hasn't made it
2+into upstream yet; previously this patch file also included:
3+https://reviews.llvm.org/D117541
4+00000000000000000000000000000000000000000000000000000000000000000000005diff --git a/tools/polly/cmake/polly_macros.cmake b/tools/polly/cmake/polly_macros.cmake
6index 518a09b45a42..bd9d6f5542ad 100644
7--- a/tools/polly/cmake/polly_macros.cmake
···17 endif()
18 set_property(GLOBAL APPEND PROPERTY LLVM_EXPORTS ${name})
19 endmacro(add_polly_library)
0000000000000
+5
pkgs/development/compilers/ocaml/generic.nix
···95 # make[2]: *** [Makefile:199: backup] Error 1
96 enableParallelBuilding = lib.versionAtLeast version "4.08";
970000098 # Workaround lack of parallelism support among top-level targets:
99 # we place nixpkgs-specific targets to a separate file and set
100 # sequential order among them as a single rule.
···95 # make[2]: *** [Makefile:199: backup] Error 1
96 enableParallelBuilding = lib.versionAtLeast version "4.08";
9798+ # Workaround missing dependencies for install parallelism:
99+ # install: target '...-ocaml-4.14.0/lib/ocaml/threads': No such file or directory
100+ # make[1]: *** [Makefile:140: installopt] Error 1
101+ enableParallelInstalling = false;
102+103 # Workaround lack of parallelism support among top-level targets:
104 # we place nixpkgs-specific targets to a separate file and set
105 # sequential order among them as a single rule.
···10 if stdenv.isLinux then
11 [
12 "d3d12" # WSL emulated GPU (aka Dozen)
13- "kmsro" # helper driver for display-only devices
14 "nouveau" # Nvidia
15 "radeonsi" # new AMD (GCN+)
16 "r300" # very old AMD
···19 "svga" # VMWare virtualized GPU
20 "virgl" # QEMU virtualized GPU (aka VirGL)
21 "zink" # generic OpenGL over Vulkan, experimental
22- ]
23- ++ lib.optionals stdenv.isAarch64 [
24 "etnaviv" # Vivante GPU designs (mostly NXP/Marvell SoCs)
25 "freedreno" # Qualcomm Adreno (all Qualcomm SoCs)
26 "lima" # ARM Mali 4xx
27 "panfrost" # ARM Mali Midgard and up (T/G series)
0028 "tegra" # Nvidia Tegra SoCs
29 "v3d" # Broadcom VC5 (Raspberry Pi 4)
30- "vc4" # Broadcom VC4 (Raspberry Pi 0-3)
31 ] ++ lib.optionals stdenv.hostPlatform.isx86 [
32 "iris" # new Intel, could work on non-x86 with PCIe cards, but doesn't build as of 22.3.4
33 "crocus" # Intel legacy, x86 only
···10 if stdenv.isLinux then
11 [
12 "d3d12" # WSL emulated GPU (aka Dozen)
013 "nouveau" # Nvidia
14 "radeonsi" # new AMD (GCN+)
15 "r300" # very old AMD
···18 "svga" # VMWare virtualized GPU
19 "virgl" # QEMU virtualized GPU (aka VirGL)
20 "zink" # generic OpenGL over Vulkan, experimental
21+ ] ++ lib.optionals (stdenv.isAarch64 || stdenv.isAarch32) [
022 "etnaviv" # Vivante GPU designs (mostly NXP/Marvell SoCs)
23 "freedreno" # Qualcomm Adreno (all Qualcomm SoCs)
24 "lima" # ARM Mali 4xx
25 "panfrost" # ARM Mali Midgard and up (T/G series)
26+ "vc4" # Broadcom VC4 (Raspberry Pi 0-3)
27+ ] ++ lib.optionals stdenv.isAarch64 [
28 "tegra" # Nvidia Tegra SoCs
29 "v3d" # Broadcom VC5 (Raspberry Pi 4)
030 ] ++ lib.optionals stdenv.hostPlatform.isx86 [
31 "iris" # new Intel, could work on non-x86 with PCIe cards, but doesn't build as of 22.3.4
32 "crocus" # Intel legacy, x86 only
+1
pkgs/development/libraries/ncurses/default.nix
···53 # Only the C compiler, and explicitly not C++ compiler needs this flag on solaris:
54 CFLAGS = lib.optionalString stdenv.isSunOS "-D_XOPEN_SOURCE_EXTENDED";
55056 depsBuildBuild = [
57 buildPackages.stdenv.cc
58 ];
···53 # Only the C compiler, and explicitly not C++ compiler needs this flag on solaris:
54 CFLAGS = lib.optionalString stdenv.isSunOS "-D_XOPEN_SOURCE_EXTENDED";
5556+ strictDeps = true;
57 depsBuildBuild = [
58 buildPackages.stdenv.cc
59 ];
···1-From e00a5257a6ca5fedbf68b09eee7df3502971a057 Mon Sep 17 00:00:00 2001
2-From: =?UTF-8?q?J=C3=B6rg=20Thalheim?= <joerg@thalheim.io>
3-Date: Sat, 24 Apr 2021 10:11:40 +0200
4-Subject: [PATCH 1/2] No impure bin sh
5-6-default_shell is used to populuate default shell used to execute jobs.
7-Unless SHELL is set to a different value this would be /bin/sh.
8-Our stdenv provides sh in form of bash anyway. Having this value not
9-hard-coded has some advantages:
10-11-- It would ensure that on all systems it uses sh from its PATH rather
12- than /bin/sh, which helps as different systems might have different
13- shells there (bash vs. dash)
14-- In the past I had issues with LD_PRELOAD with BEAR, where /bin/sh
15- used a different glibc than BEAR which came from my development shell.
16----
17- src/job.c | 2 +-
18- 1 file changed, 1 insertion(+), 1 deletion(-)
19-20-diff --git a/src/job.c b/src/job.c
21-index ae1f18b..6b4ddb3 100644
22---- a/src/job.c
23-+++ b/src/job.c
24-@@ -77,7 +77,7 @@ char * vms_strsignal (int status);
25-26- #else
27-28--const char *default_shell = "/bin/sh";
29-+const char *default_shell = "sh";
30- int batch_mode_shell = 0;
31-32- #endif
33---
34-2.31.1
35-
···1-{ lib
2-, stdenv
3-, fetchurl
4-, guileSupport ? false, guile
5-# avoid guile depend on bootstrap to prevent dependency cycles
6-, inBootstrap ? false
7-, pkg-config
8-, gnumake
9-}:
10-11-let
12- guileEnabled = guileSupport && !inBootstrap;
13-in
14-15-stdenv.mkDerivation rec {
16- pname = "gnumake";
17- version = "4.4";
18-19- src = fetchurl {
20- url = "mirror://gnu/make/make-${version}.tar.gz";
21- hash = "sha256-WB9NToctp0s5Qch0IViYp9NYAvA3Mr3M7h1KeXkQXRg=";
22- };
23-24- # to update apply these patches with `git am *.patch` to https://git.savannah.gnu.org/git/make.git
25- patches = [
26- # Replaces /bin/sh with sh, see patch file for reasoning
27- ./0001-No-impure-bin-sh.patch
28- # Purity: don't look for library dependencies (of the form `-lfoo') in /lib
29- # and /usr/lib. It's a stupid feature anyway. Likewise, when searching for
30- # included Makefiles, don't look in /usr/include and friends.
31- ./0002-remove-impure-dirs.patch
32- ];
33-34- nativeBuildInputs = lib.optionals guileEnabled [ pkg-config ];
35- buildInputs = lib.optionals guileEnabled [ guile ];
36-37- configureFlags = lib.optional guileEnabled "--with-guile"
38-39- # Make uses this test to decide whether it should keep track of
40- # subseconds. Apple made this possible with APFS and macOS 10.13.
41- # However, we still support macOS 10.11 and 10.12. Binaries built
42- # in Nixpkgs will be unable to use futimens to set mtime less than
43- # a second. So, tell Make to ignore nanoseconds in mtime here by
44- # overriding the autoconf test for the struct.
45- # See https://github.com/NixOS/nixpkgs/issues/51221 for discussion.
46- ++ lib.optional stdenv.isDarwin "ac_cv_struct_st_mtim_nsec=no";
47-48- outputs = [ "out" "man" "info" ];
49- separateDebugInfo = true;
50-51- passthru.tests = {
52- # make sure that the override doesn't break bootstrapping
53- gnumakeWithGuile = gnumake.override { guileSupport = true; };
54- };
55-56- meta = with lib; {
57- description = "A tool to control the generation of non-source files from sources";
58- longDescription = ''
59- Make is a tool which controls the generation of executables and
60- other non-source files of a program from the program's source files.
61-62- Make gets its knowledge of how to build your program from a file
63- called the makefile, which lists each of the non-source files and
64- how to compute it from other files. When you write a program, you
65- should write a makefile for it, so that it is possible to use Make
66- to build and install the program.
67- '';
68- homepage = "https://www.gnu.org/software/make/";
69-70- license = licenses.gpl3Plus;
71- maintainers = [ maintainers.vrthra ];
72- mainProgram = "make";
73- platforms = platforms.all;
74- };
75-}
···9 buildDepends = drv.buildDepends or [] ++ [haskellPackages.file-embed];
10 buildTools = (drv.buildTools or []) ++ [ removeReferencesTo ];
11000000012 postInstall = drv.postInstall or "" + ''
13 remove-references-to \
14 -t ${haskellPackages.pandoc-types} \
00015 $out/bin/pandoc
16 '' + lib.optionalString (stdenv.buildPlatform == stdenv.hostPlatform) ''
17 mkdir -p $out/share/bash-completion/completions
···25 # lead to a transitive runtime dependency on the whole GHC distribution.
26 # This should ideally be fixed in haskellPackages (or even Cabal),
27 # but a minimal pandoc is important enough to patch it manually.
28- disallowedReferences = [ haskellPackages.pandoc-types ];
29 })
···9 buildDepends = drv.buildDepends or [] ++ [haskellPackages.file-embed];
10 buildTools = (drv.buildTools or []) ++ [ removeReferencesTo ];
1112+ # Normally, the static linked executable shouldn't refer to any library or the compiler.
13+ # This is not always the case when the dependency has Paths_* module generated by Cabal,
14+ # where bindir, datadir, and libdir contain the path to the library, and thus make the
15+ # executable indirectly refer to GHC. However, most Haskell programs only use Paths_*.version for
16+ # getting the version at runtime, so it's safe to remove the references to them.
17+ # This is true so far for pandoc-types and warp.
18+ # For details see: https://github.com/NixOS/nixpkgs/issues/34376
19 postInstall = drv.postInstall or "" + ''
20 remove-references-to \
21 -t ${haskellPackages.pandoc-types} \
22+ $out/bin/pandoc
23+ remove-references-to \
24+ -t ${haskellPackages.warp} \
25 $out/bin/pandoc
26 '' + lib.optionalString (stdenv.buildPlatform == stdenv.hostPlatform) ''
27 mkdir -p $out/share/bash-completion/completions
···35 # lead to a transitive runtime dependency on the whole GHC distribution.
36 # This should ideally be fixed in haskellPackages (or even Cabal),
37 # but a minimal pandoc is important enough to patch it manually.
38+ disallowedReferences = [ haskellPackages.pandoc-types haskellPackages.warp ];
39 })
+1
pkgs/development/tools/shadered/default.nix
···45 homepage = "https://github.com/dfranx/SHADERed";
46 license = with licenses; [ mit ];
47 maintainers = with maintainers; [ Scriptkiddi ];
048 };
49}
···45 homepage = "https://github.com/dfranx/SHADERed";
46 license = with licenses; [ mit ];
47 maintainers = with maintainers; [ Scriptkiddi ];
48+ broken = true;
49 };
50}
···8we should again be able to discover the udev rules amongst other default
9files that I might have missed.
10---
11- src/basic/def.h | 6 ++++--
12 1 file changed, 4 insertions(+), 2 deletions(-)
1314-diff --git a/src/basic/def.h b/src/basic/def.h
15-index 2b4de29021..1bd61dc45f 100644
16---- a/src/basic/def.h
17-+++ b/src/basic/def.h
18-@@ -44,13 +44,15 @@
19 "/run/" n "\0" \
20 "/usr/local/lib/" n "\0" \
21 "/usr/lib/" n "\0" \
···8we should again be able to discover the udev rules amongst other default
9files that I might have missed.
10---
11+ src/basic/constants.h | 6 ++++--
12 1 file changed, 4 insertions(+), 2 deletions(-)
1314+diff --git a/src/basic/constants.h b/src/basic/constants.h
15+index 5d68cc6332..a2ccc315e1 100644
16+--- a/src/basic/constants.h
17++++ b/src/basic/constants.h
18+@@ -73,13 +73,15 @@
19 "/run/" n "\0" \
20 "/usr/local/lib/" n "\0" \
21 "/usr/lib/" n "\0" \
···16 1 file changed, 8 insertions(+)
1718diff --git a/src/core/manager.c b/src/core/manager.c
19-index d9e7d77913..ba3ce14bf0 100644
20--- a/src/core/manager.c
21+++ b/src/core/manager.c
22-@@ -3693,9 +3693,17 @@ static int build_generator_environment(Manager *m, char ***ret) {
23 * adjust generated units to that. Let's pass down some bits of information that are easy for us to
24 * determine (but a bit harder for generator scripts to determine), as environment variables. */
25
···16 1 file changed, 8 insertions(+)
1718diff --git a/src/core/manager.c b/src/core/manager.c
19+index 50d092042c..898f9ed2f1 100644
20--- a/src/core/manager.c
21+++ b/src/core/manager.c
22+@@ -3714,9 +3714,17 @@ static int build_generator_environment(Manager *m, char ***ret) {
23 * adjust generated units to that. Let's pass down some bits of information that are easy for us to
24 * determine (but a bit harder for generator scripts to determine), as environment variables. */
25
···4{ stdenv
5, pkgs
6, lib
7-, runCommand
8, testers
9}:
1011let
12 # early enough not to rebuild gcc but late enough to have patchelf
13 earlyPkgs = stdenv.__bootPackages.stdenv.__bootPackages;
014 # use a early stdenv so when hacking on stdenv this test can be run quickly
15 bootStdenv = stdenv.__bootPackages.stdenv.__bootPackages.stdenv.__bootPackages.stdenv.__bootPackages.stdenv;
16 pkgsStructured = import pkgs.path { config = { structuredAttrsByDefault = true; }; inherit (stdenv.hostPlatform) system; };
17 bootStdenvStructuredAttrsByDefault = pkgsStructured.stdenv.__bootPackages.stdenv.__bootPackages.stdenv.__bootPackages.stdenv.__bootPackages.stdenv;
00181920 ccWrapperSubstitutionsTest = { name, stdenv', extraAttrs ? { } }:
···101 hooks = lib.recurseIntoAttrs (import ./hooks.nix { stdenv = bootStdenv; pkgs = earlyPkgs; inherit lib; });
102103 outputs-no-out = runCommand "outputs-no-out-assert" {
104- result = testers.testBuildFailure (stdenv.mkDerivation {
105 NIX_DEBUG = 1;
106 name = "outputs-no-out";
107 outputs = ["foo"];
···113114 # Assumption: the first output* variable to be configured is
115 # _overrideFirst outputDev "dev" "out"
116- expectedMsg = "error: _assignFirst: could not find a non-empty variable to assign to outputDev.\n The following variables were all unset or empty:\n dev out";
117 } ''
118 grep -F "$expectedMsg" $result/testBuildFailure.log >/dev/null
119 touch $out
···4{ stdenv
5, pkgs
6, lib
07, testers
8}:
910let
11 # early enough not to rebuild gcc but late enough to have patchelf
12 earlyPkgs = stdenv.__bootPackages.stdenv.__bootPackages;
13+ earlierPkgs = stdenv.__bootPackages.stdenv.__bootPackages.stdenv.__bootPackages.stdenv.__bootPackages.stdenv.__bootPackages;
14 # use a early stdenv so when hacking on stdenv this test can be run quickly
15 bootStdenv = stdenv.__bootPackages.stdenv.__bootPackages.stdenv.__bootPackages.stdenv.__bootPackages.stdenv;
16 pkgsStructured = import pkgs.path { config = { structuredAttrsByDefault = true; }; inherit (stdenv.hostPlatform) system; };
17 bootStdenvStructuredAttrsByDefault = pkgsStructured.stdenv.__bootPackages.stdenv.__bootPackages.stdenv.__bootPackages.stdenv.__bootPackages.stdenv;
18+19+ runCommand = earlierPkgs.runCommand;
202122 ccWrapperSubstitutionsTest = { name, stdenv', extraAttrs ? { } }:
···103 hooks = lib.recurseIntoAttrs (import ./hooks.nix { stdenv = bootStdenv; pkgs = earlyPkgs; inherit lib; });
104105 outputs-no-out = runCommand "outputs-no-out-assert" {
106+ result = earlierPkgs.testers.testBuildFailure (bootStdenv.mkDerivation {
107 NIX_DEBUG = 1;
108 name = "outputs-no-out";
109 outputs = ["foo"];
···115116 # Assumption: the first output* variable to be configured is
117 # _overrideFirst outputDev "dev" "out"
118+ expectedMsg = "error: _assignFirst: could not find a non-empty variable whose name to assign to outputDev.\n The following variables were all unset or empty:\n dev out";
119 } ''
120 grep -F "$expectedMsg" $result/testBuildFailure.log >/dev/null
121 touch $out
···23 propagatedBuildInputs = [ libuuid ]; # Dev headers include <uuid/uuid.h>
2425 enableParallelBuilding = true;
0002627 # @sbindir@ is replaced with /run/current-system/sw/bin to fix dependency cycles
28 preConfigure = ''
···23 propagatedBuildInputs = [ libuuid ]; # Dev headers include <uuid/uuid.h>
2425 enableParallelBuilding = true;
26+ # Install fails as:
27+ # make[1]: *** No rule to make target '\', needed by 'kmem.lo'. Stop.
28+ enableParallelInstalling = false;
2930 # @sbindir@ is replaced with /run/current-system/sw/bin to fix dependency cycles
31 preConfigure = ''
+4
pkgs/tools/graphics/asymptote/default.nix
···67 '';
6869 enableParallelBuilding = true;
00007071 meta = with lib; {
72 description = "A tool for programming graphics intended to replace Metapost";
···67 '';
6869 enableParallelBuilding = true;
70+ # Missing install depends:
71+ # ...-coreutils-9.1/bin/install: cannot stat 'asy-keywords.el': No such file or directory
72+ # make: *** [Makefile:272: install-asy] Error 1
73+ enableParallelInstalling = false;
7475 meta = with lib; {
76 description = "A tool for programming graphics intended to replace Metapost";
···1225 pidginwindowmerge = throw "'pidginwindowmerge' has been renamed to/replaced by 'pidgin-window-merge'"; # Converted to throw 2022-02-22
1226 pifi = throw "pifi has been removed from nixpkgs, as it is no longer developed"; # Added 2022-01-19
1227 ping = throw "'ping' does not build with recent valac and has been removed. If you are just looking for the 'ping' command use either 'iputils' or 'inetutils'"; # Added 2022-04-18
01228 piwik = throw "'piwik' has been renamed to/replaced by 'matomo'"; # Converted to throw 2022-02-22
1229 pixie = throw "pixie has been removed: abandoned by upstream"; # Added 2022-04-21
1230 pkgconfig = pkg-config; # Added 2018-02-02, moved to aliases.nix 2021-01-18
···1225 pidginwindowmerge = throw "'pidginwindowmerge' has been renamed to/replaced by 'pidgin-window-merge'"; # Converted to throw 2022-02-22
1226 pifi = throw "pifi has been removed from nixpkgs, as it is no longer developed"; # Added 2022-01-19
1227 ping = throw "'ping' does not build with recent valac and has been removed. If you are just looking for the 'ping' command use either 'iputils' or 'inetutils'"; # Added 2022-04-18
1228+ pipewire-media-session = throw "pipewire-media-session is no longer maintained and has been removed. Please use Wireplumber instead.";
1229 piwik = throw "'piwik' has been renamed to/replaced by 'matomo'"; # Converted to throw 2022-02-22
1230 pixie = throw "pixie has been removed: abandoned by upstream"; # Added 2022-04-21
1231 pkgconfig = pkg-config; # Added 2018-02-02, moved to aliases.nix 2021-01-18