···12121313 - default linux: 5.15 -\> 6.1, all supported kernels available
14141515+ - systemd has been updated to v253.1, see [the pull request](https://github.com/NixOS/nixpkgs/pull/216826) for more info.
1616+ It's recommended to use `nixos-rebuild boot` and `reboot`, rather than `nixos-rebuild switch` - since in some rare cases
1717+ the switch of a live system might fail.
1818+1519- Cinnamon has been updated to 5.6, see [the pull request](https://github.com/NixOS/nixpkgs/pull/201328#issue-1449910204) for what is changed.
16201721- 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.
18221923- `nixos-rebuild` now supports an extra `--specialisation` option that can be used to change specialisation for `switch` and `test` commands.
2424+2525+- `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).
20262127## New Services {#sec-release-23.05-new-services}
2228···161167162168- 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.
163169170170+- 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.
171171+172172+- `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.
164173## Other Notable Changes {#sec-release-23.05-notable-changes}
165174166175<!-- To avoid merge conflicts, consider adding your item at an arbitrary place in the list instead. -->
···307316- The option `services.prometheus.exporters.pihole.interval` does not exist anymore and has been removed.
308317309318- `k3s` can now be configured with an EnvironmentFile for its systemd service, allowing secrets to be provided without ending up in the Nix Store.
319319+320320+## Detailed migration information {#sec-release-23.05-migration}
321321+322322+### Pipewire configuration overrides {#sec-release-23.05-migration-pipewire}
323323+324324+#### Why this change? {#sec-release-23.05-migration-pipewire-why}
325325+326326+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.
327327+328328+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.
329329+330330+#### Migrating your configuration {#sec-release-23.05-migration-pipewire-how}
331331+332332+Compare your settings to [the defaults](https://gitlab.freedesktop.org/pipewire/pipewire/-/tree/master/src/daemon) and where your configuration differs from them.
333333+334334+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.
335335+336336+Repeat for every file you've modified, changing the directory name accordingly.
337337+338338+#### Things you can just copy over {#sec-release-23.05-migration-pipewire-simple}
339339+340340+If you are:
341341+342342+- setting properties via `*.properties`
343343+- loading a new module to `context.modules`
344344+- creating new objects with `context.objects`
345345+- declaring SPA libraries with `context.spa-libs`
346346+- running custom commands with `context.exec`
347347+- adding new rules with `*.rules`
348348+- running custom PulseAudio commands with `pulse.cmd`
349349+350350+Simply move the definitions into the drop-in.
351351+352352+Note that the use of `context.exec` is not recommended and other methods of running your thing are likely a better option.
353353+354354+```json
355355+{
356356+ "context.properties": {
357357+ "your.property.name": "your.property.value"
358358+ },
359359+ "context.modules": [
360360+ { "name": "libpipewire-module-my-cool-thing" }
361361+ ],
362362+ "context.objects": [
363363+ { "factory": { ... } }
364364+ ],
365365+ "alsa.rules": [
366366+ { "matches: { ... }, "actions": { ... } }
367367+ ]
368368+}
369369+```
370370+371371+#### Removing a module from `context.modules` {#sec-release-23.05-migration-pipewire-removing-modules}
372372+373373+Look for an option to disable it via `context.properties` (`"module.x11.bell": "false"` is likely the most common use case here).
374374+If one is not available, proceed to [Nuclear option](#sec-release-23.05-migration-pipewire).
375375+376376+#### Modifying a module's parameters in `context.modules` {#sec-release-23.05-migration-pipewire-modifying-modules}
377377+378378+For most modules (e.g. `libpipewire-module-rt`) it's enough to load the module again with the new arguments, e.g.:
379379+380380+```json
381381+{
382382+ "context.modules": [
383383+ {
384384+ "name": "libpipewire-module-rt",
385385+ "args": {
386386+ "rt.prio": 90
387387+ }
388388+ }
389389+ ]
390390+}
391391+```
392392+393393+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.
394394+395395+If reloading the module is not an option, proceed to [Nuclear option](#sec-release-23.05-migration-pipewire).
396396+397397+#### Nuclear option {#sec-release-23.05-migration-pipewire-nuclear}
398398+If all else fails, you can still manually copy the contents of the default configuration file
399399+from `${pkgs.pipewire.lib}/share/pipewire` to `/etc/pipewire` and edit it to fully override the default.
400400+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
···539539540540 ###### implementation
541541542542- config = {
542542+ config = let
543543+ cryptSchemeIdPatternGroup = "(${lib.concatStringsSep "|" pkgs.libxcrypt.enabledCryptSchemeIds})";
544544+ in {
543545544546 users.users = {
545547 root = {
···601603 text = ''
602604 users=()
603605 while IFS=: read -r user hash tail; do
604604- if [[ "$hash" = "$"* && ! "$hash" =~ ^\$(y|gy|7|2b|2y|2a|6)\$ ]]; then
606606+ if [[ "$hash" = "$"* && ! "$hash" =~ ^\''$${cryptSchemeIdPatternGroup}\$ ]]; then
605607 users+=("$user")
606608 fi
607609 done </etc/shadow
608610609611 if (( "''${#users[@]}" )); then
610612 echo "
611611- WARNING: The following user accounts rely on password hashes that will
612612- be removed in NixOS 23.05. They should be renewed as soon as possible."
613613+ WARNING: The following user accounts rely on password hashing algorithms
614614+ that have been removed. They need to be renewed as soon as possible, as
615615+ they do prevent their users from logging in."
613616 printf ' - %s\n' "''${users[@]}"
614617 fi
615618 '';
···716719 let
717720 sep = "\\$";
718721 base64 = "[a-zA-Z0-9./]+";
719719- id = "[a-z0-9-]+";
722722+ id = cryptSchemeIdPatternGroup;
720723 value = "[a-zA-Z0-9/+.-]+";
721724 options = "${id}(=${value})?(,${id}=${value})*";
722725 scheme = "${id}(${sep}${options})?";
···2929 config = lib.mkIf cfg.enable {
3030 assertions = [
3131 {
3232- assertion = !config.services.pipewire.media-session.enable;
3333- message = "WirePlumber and pipewire-media-session can't be enabled at the same time.";
3434- }
3535- {
3632 assertion = !config.hardware.bluetooth.hsphfpd.enable;
3733 message = "Using Wireplumber conflicts with hsphfpd, as it provides the same functionality. `hardware.bluetooth.hsphfpd.enable` needs be set to false";
3834 }
···6464 '';
65656666 meta = with lib; {
6767- broken = (stdenv.isLinux && stdenv.isAarch64) || stdenv.isDarwin;
6767+ broken = true;
6868 description = "An open source crypto-currency focused on fast private transactions";
6969 longDescription = ''
7070 PIVX is an MIT licensed, open source, blockchain-based cryptocurrency with
···1313# specific to this function's use case, which is setting up the output variables.
1414_assignFirst() {
1515 local varName="$1"
1616+ local _var
1617 local REMOVE=REMOVE # slightly hacky - we allow REMOVE (i.e. not a variable name)
1718 shift
1818- for var in "$@"; do
1919- if [ -n "${!var-}" ]; then eval "${varName}"="${var}"; return; fi
1919+ for _var in "$@"; do
2020+ if [ -n "${!_var-}" ]; then eval "${varName}"="${_var}"; return; fi
2021 done
2122 echo
2222- echo "error: _assignFirst: could not find a non-empty variable to assign to ${varName}."
2323+ echo "error: _assignFirst: could not find a non-empty variable whose name to assign to ${varName}."
2324 echo " The following variables were all unset or empty:"
2425 echo " $*"
2526 if [ -z "${out:-}" ]; then
···138139139140 # remove empty directories, printing iff at least one gets removed
140141 local srcParent="$(readlink -m "$srcPath/..")"
141141- if rmdir "$srcParent"; then
142142+ if [ -n "$(find "$srcParent" -maxdepth 0 -type d -empty 2>/dev/null)" ]; then
142143 echo "Removing empty $srcParent/ and (possibly) its parents"
143143- rmdir -p --ignore-fail-on-non-empty "$(readlink -m "$srcParent/..")" \
144144+ rmdir -p --ignore-fail-on-non-empty "$srcParent" \
144145 2> /dev/null || true # doesn't ignore failure for some reason
145146 fi
146147 done
···1111 local dst="${debug:-$out}"
1212 if [ "$prefix" = "$dst" ]; then return 0; fi
13131414+ # in case there is nothing to strip, don't fail the build
1515+ mkdir -p "$dst"
1616+1417 dst="$dst/lib/debug/.build-id"
15181619 # Find executables and dynamic libraries.
···250250 done
251251 fi
252252253253+ # Cross-compiler specific:
254254+ # --with-headers=$dir option triggers gcc to make a private copy
255255+ # of $dir headers and use it later as `-isysroot`. This prevents
256256+ # cc-wrapper from overriding libc headers with `-idirafter`.
257257+ # It should be safe to drop it and rely solely on the cc-wrapper.
258258+ local sysinc_dir=$out/${targetConfig+$targetConfig/}sys-include
259259+ if [ -d "$sysinc_dir" ]; then
260260+ chmod -R u+w "$out/${targetConfig+$targetConfig/}sys-include"
261261+ rm -rfv "$out/${targetConfig+$targetConfig/}sys-include"
262262+ fi
263263+253264 # Get rid of some "fixed" header files
254265 rm -rfv $out/lib/gcc/*/*/include-fixed/{root,linux}
255266
···1515, zlib
1616, buildLlvmTools
1717, debugVersion ? false
1818+, doCheck ? stdenv.isLinux && (!stdenv.isx86_32)
1919+ && (stdenv.hostPlatform == stdenv.buildPlatform)
1820, enableManpages ? false
1921, enableSharedLibraries ? !stdenv.hostPlatform.isStatic
2022# broken for Ampere eMAG 8180 (c2.large.arm on Packet) #56245
···3032 shortVersion = with lib;
3133 concatStringsSep "." (take 1 (splitString "." release_version));
32343535+ # Ordinarily we would just the `doCheck` and `checkDeps` functionality
3636+ # `mkDerivation` gives us to manage our test dependencies (instead of breaking
3737+ # out `doCheck` as a package level attribute).
3838+ #
3939+ # Unfortunately `lit` does not forward `$PYTHONPATH` to children processes, in
4040+ # particular the children it uses to do feature detection.
4141+ #
4242+ # This means that python deps we add to `checkDeps` (which the python
4343+ # interpreter is made aware of via `$PYTHONPATH` – populated by the python
4444+ # setup hook) are not picked up by `lit` which causes it to skip tests.
4545+ #
4646+ # Adding `python3.withPackages (ps: [ ... ])` to `checkDeps` also doesn't work
4747+ # because this package is shadowed in `$PATH` by the regular `python3`
4848+ # package.
4949+ #
5050+ # So, we "manually" assemble one python derivation for the package to depend
5151+ # on, taking into account whether checks are enabled or not:
5252+ python = if doCheck then
5353+ let
5454+ checkDeps = ps: with ps; [ psutil ];
5555+ in python3.withPackages checkDeps
5656+ else python3;
5757+3358in stdenv.mkDerivation (rec {
3459 pname = "llvm";
3560 inherit version;
···48734974 outputs = [ "out" "lib" "dev" "python" ];
50755151- nativeBuildInputs = [ cmake python3 ]
7676+ nativeBuildInputs = [ cmake python ]
5277 ++ optionals enableManpages [ python3.pkgs.sphinx python3.pkgs.recommonmark ];
53785479 buildInputs = [ libxml2 libffi ]
···255280 cp NATIVE/bin/llvm-config $dev/bin/llvm-config-native
256281 '';
257282258258- doCheck = stdenv.isLinux && (!stdenv.isx86_32)
259259- && (stdenv.hostPlatform == stdenv.buildPlatform);
283283+ inherit doCheck;
260284261285 checkTarget = "check-all";
262286
···1515, zlib
1616, buildLlvmTools
1717, debugVersion ? false
1818+, doCheck ? stdenv.isLinux && (!stdenv.isx86_32) && (!stdenv.hostPlatform.isMusl) && (!stdenv.hostPlatform.isRiscV)
1919+ && (stdenv.hostPlatform == stdenv.buildPlatform)
1820, enableManpages ? false
1921, enableSharedLibraries ? !stdenv.hostPlatform.isStatic
2022# broken for Ampere eMAG 8180 (c2.large.arm on Packet) #56245
···3032 shortVersion = with lib;
3133 concatStringsSep "." (take 1 (splitString "." release_version));
32343535+ # Ordinarily we would just the `doCheck` and `checkDeps` functionality
3636+ # `mkDerivation` gives us to manage our test dependencies (instead of breaking
3737+ # out `doCheck` as a package level attribute).
3838+ #
3939+ # Unfortunately `lit` does not forward `$PYTHONPATH` to children processes, in
4040+ # particular the children it uses to do feature detection.
4141+ #
4242+ # This means that python deps we add to `checkDeps` (which the python
4343+ # interpreter is made aware of via `$PYTHONPATH` – populated by the python
4444+ # setup hook) are not picked up by `lit` which causes it to skip tests.
4545+ #
4646+ # Adding `python3.withPackages (ps: [ ... ])` to `checkDeps` also doesn't work
4747+ # because this package is shadowed in `$PATH` by the regular `python3`
4848+ # package.
4949+ #
5050+ # So, we "manually" assemble one python derivation for the package to depend
5151+ # on, taking into account whether checks are enabled or not:
5252+ python = if doCheck then
5353+ let
5454+ checkDeps = ps: with ps; [ psutil ];
5555+ in python3.withPackages checkDeps
5656+ else python3;
5757+3358in stdenv.mkDerivation (rec {
3459 pname = "llvm";
3560 inherit version;
···48734974 outputs = [ "out" "lib" "dev" "python" ];
50755151- nativeBuildInputs = [ cmake python3 ]
7676+ nativeBuildInputs = [ cmake python ]
5277 ++ optionals enableManpages [ python3.pkgs.sphinx python3.pkgs.recommonmark ];
53785479 buildInputs = [ libxml2 libffi ]
···267292 cp NATIVE/bin/llvm-config $dev/bin/llvm-config-native
268293 '';
269294270270- doCheck = stdenv.isLinux && (!stdenv.isx86_32) && (!stdenv.hostPlatform.isMusl) && (!stdenv.hostPlatform.isRiscV)
271271- && (stdenv.hostPlatform == stdenv.buildPlatform);
295295+ inherit doCheck;
272296273297 checkTarget = "check-all";
274298
···1515, zlib
1616, buildLlvmTools
1717, debugVersion ? false
1818+, doCheck ? stdenv.isLinux && (!stdenv.isx86_32) && (!stdenv.hostPlatform.isMusl)
1919+ && (stdenv.hostPlatform == stdenv.buildPlatform)
1820, enableManpages ? false
1921, enableSharedLibraries ? !stdenv.hostPlatform.isStatic
2022# broken for Ampere eMAG 8180 (c2.large.arm on Packet) #56245
···3032 shortVersion = with lib;
3133 concatStringsSep "." (take 1 (splitString "." release_version));
32343535+ # Ordinarily we would just the `doCheck` and `checkDeps` functionality
3636+ # `mkDerivation` gives us to manage our test dependencies (instead of breaking
3737+ # out `doCheck` as a package level attribute).
3838+ #
3939+ # Unfortunately `lit` does not forward `$PYTHONPATH` to children processes, in
4040+ # particular the children it uses to do feature detection.
4141+ #
4242+ # This means that python deps we add to `checkDeps` (which the python
4343+ # interpreter is made aware of via `$PYTHONPATH` – populated by the python
4444+ # setup hook) are not picked up by `lit` which causes it to skip tests.
4545+ #
4646+ # Adding `python3.withPackages (ps: [ ... ])` to `checkDeps` also doesn't work
4747+ # because this package is shadowed in `$PATH` by the regular `python3`
4848+ # package.
4949+ #
5050+ # So, we "manually" assemble one python derivation for the package to depend
5151+ # on, taking into account whether checks are enabled or not:
5252+ python = if doCheck then
5353+ let
5454+ checkDeps = ps: with ps; [ psutil ];
5555+ in python3.withPackages checkDeps
5656+ else python3;
5757+3358in stdenv.mkDerivation (rec {
3459 pname = "llvm";
3560 inherit version;
···48734974 outputs = [ "out" "lib" "dev" "python" ];
50755151- nativeBuildInputs = [ cmake python3 ]
7676+ nativeBuildInputs = [ cmake python ]
5277 ++ optionals enableManpages [ python3.pkgs.sphinx python3.pkgs.recommonmark ];
53785479 buildInputs = [ libxml2 libffi ]
···255280 cp NATIVE/bin/llvm-config $dev/bin/llvm-config-native
256281 '';
257282258258- doCheck = stdenv.isLinux && (!stdenv.isx86_32) && (!stdenv.hostPlatform.isMusl)
259259- && (stdenv.hostPlatform == stdenv.buildPlatform);
283283+ inherit doCheck;
260284261285 checkTarget = "check-all";
262286
···1616, which
1717, buildLlvmTools
1818, debugVersion ? false
1919+, doCheck ? stdenv.isLinux && (!stdenv.isx86_32) && (!stdenv.hostPlatform.isMusl)
2020+ && (stdenv.hostPlatform == stdenv.buildPlatform)
1921, enableManpages ? false
2022, enableSharedLibraries ? !stdenv.hostPlatform.isStatic
2123# broken for Ampere eMAG 8180 (c2.large.arm on Packet) #56245
···3133 shortVersion = with lib;
3234 concatStringsSep "." (take 1 (splitString "." release_version));
33353636+ # Ordinarily we would just the `doCheck` and `checkDeps` functionality
3737+ # `mkDerivation` gives us to manage our test dependencies (instead of breaking
3838+ # out `doCheck` as a package level attribute).
3939+ #
4040+ # Unfortunately `lit` does not forward `$PYTHONPATH` to children processes, in
4141+ # particular the children it uses to do feature detection.
4242+ #
4343+ # This means that python deps we add to `checkDeps` (which the python
4444+ # interpreter is made aware of via `$PYTHONPATH` – populated by the python
4545+ # setup hook) are not picked up by `lit` which causes it to skip tests.
4646+ #
4747+ # Adding `python3.withPackages (ps: [ ... ])` to `checkDeps` also doesn't work
4848+ # because this package is shadowed in `$PATH` by the regular `python3`
4949+ # package.
5050+ #
5151+ # So, we "manually" assemble one python derivation for the package to depend
5252+ # on, taking into account whether checks are enabled or not:
5353+ python = if doCheck then
5454+ let
5555+ checkDeps = ps: with ps; [ psutil ];
5656+ in python3.withPackages checkDeps
5757+ else python3;
5858+3459in stdenv.mkDerivation (rec {
3560 pname = "llvm";
3661 inherit version;
···40654166 outputs = [ "out" "lib" "dev" "python" ];
42674343- nativeBuildInputs = [ cmake python3 ]
6868+ nativeBuildInputs = [ cmake python ]
4469 ++ optionals enableManpages [ python3.pkgs.sphinx python3.pkgs.recommonmark ];
45704671 buildInputs = [ libxml2 libffi ]
···217242 cp NATIVE/bin/llvm-config $dev/bin/llvm-config-native
218243 '';
219244220220- doCheck = stdenv.isLinux && (!stdenv.isx86_32) && (!stdenv.hostPlatform.isMusl)
221221- && (stdenv.hostPlatform == stdenv.buildPlatform);
245245+ inherit doCheck;
222246223247 checkTarget = "check-all";
224248
···8181 ./darwin-targetconditionals.patch
8282 ../../common/compiler-rt/darwin-plistbuddy-workaround.patch
8383 ./armv7l.patch
8484+ # Fix build on armv6l
8585+ ../../common/compiler-rt/armv6-mcr-dmb.patch
8686+ ../../common/compiler-rt/armv6-sync-ops-no-thumb.patch
8787+ ../../common/compiler-rt/armv6-no-ldrexd-strexd.patch
8888+ ../../common/compiler-rt/armv6-scudo-no-yield.patch
8989+ ../../common/compiler-rt/armv6-scudo-libatomic.patch
8490 ];
85918692 # 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
···11{ lowPrio, newScope, pkgs, lib, stdenv, cmake
22, gccForLibs, preLibcCrossHeaders
33-, libxml2, python3, isl, fetchFromGitHub, overrideCC, wrapCCWith, wrapBintoolsWith
33+, libxml2, python3, fetchFromGitHub, overrideCC, wrapCCWith, wrapBintoolsWith
44, buildLlvmTools # tools, but from the previous stage, for cross
55, targetLlvmLibraries # libraries, but from the next stage, for cross
66, targetLlvm
···5252 };
53535454 tools = lib.makeExtensible (tools: let
5555- callPackage = newScope (tools // { inherit stdenv cmake libxml2 python3 isl release_version version monorepoSrc buildLlvmTools; });
5555+ callPackage = newScope (tools // { inherit stdenv cmake libxml2 python3 release_version version monorepoSrc buildLlvmTools; });
5656 mkExtraBuildCommands0 = cc: ''
5757 rsrc="$out/resource-root"
5858 mkdir "$rsrc"
···232232 });
233233234234 libraries = lib.makeExtensible (libraries: let
235235- callPackage = newScope (libraries // buildLlvmTools // { inherit stdenv cmake libxml2 python3 isl release_version version monorepoSrc; });
235235+ callPackage = newScope (libraries // buildLlvmTools // { inherit stdenv cmake libxml2 python3 release_version version monorepoSrc; });
236236 in {
237237238238 compiler-rt-libc = callPackage ./compiler-rt {
···1313, zlib
1414, buildLlvmTools
1515, fetchpatch
1616+, doCheck ? stdenv.isLinux && (!stdenv.isi686)
1717+ && (stdenv.hostPlatform == stdenv.buildPlatform)
1618, debugVersion ? false
1719, enableManpages ? false
1820, enableSharedLibraries ? !stdenv.hostPlatform.isStatic
···2628 versionSuffixes = with lib;
2729 let parts = splitVersion release_version; in
2830 imap (i: _: concatStringsSep "." (take i parts)) parts;
3131+3232+ # Ordinarily we would just the `doCheck` and `checkDeps` functionality
3333+ # `mkDerivation` gives us to manage our test dependencies (instead of breaking
3434+ # out `doCheck` as a package level attribute).
3535+ #
3636+ # Unfortunately `lit` does not forward `$PYTHONPATH` to children processes, in
3737+ # particular the children it uses to do feature detection.
3838+ #
3939+ # This means that python deps we add to `checkDeps` (which the python
4040+ # interpreter is made aware of via `$PYTHONPATH` – populated by the python
4141+ # setup hook) are not picked up by `lit` which causes it to skip tests.
4242+ #
4343+ # Adding `python3.withPackages (ps: [ ... ])` to `checkDeps` also doesn't work
4444+ # because this package is shadowed in `$PATH` by the regular `python3`
4545+ # package.
4646+ #
4747+ # So, we "manually" assemble one python derivation for the package to depend
4848+ # on, taking into account whether checks are enabled or not:
4949+ python = if doCheck then
5050+ let
5151+ checkDeps = ps: with ps; [ psutil ];
5252+ in python3.withPackages checkDeps
5353+ else python3;
2954in
30553156stdenv.mkDerivation (rec {
···46714772 outputs = [ "out" "lib" "dev" "python" ];
48734949- nativeBuildInputs = [ cmake python3 ]
7474+ nativeBuildInputs = [ cmake python ]
5075 ++ optional enableManpages python3.pkgs.sphinx;
51765277 buildInputs = [ libxml2 libffi ];
···227252 cp NATIVE/bin/llvm-config $dev/bin/llvm-config-native
228253 '';
229254230230- doCheck = stdenv.isLinux && (!stdenv.isi686)
231231- && (stdenv.hostPlatform == stdenv.buildPlatform);
255255+ inherit doCheck;
232256233257 checkTarget = "check-all";
234258
···1515, zlib
1616, buildLlvmTools
1717, debugVersion ? false
1818+, doCheck ? stdenv.isLinux && (!stdenv.isx86_32)
1919+ && (stdenv.hostPlatform == stdenv.buildPlatform)
1820, enableManpages ? false
1921, enableSharedLibraries ? !stdenv.hostPlatform.isStatic
2022# broken for Ampere eMAG 8180 (c2.large.arm on Packet) #56245
···3133 let parts = splitVersion release_version; in
3234 imap (i: _: concatStringsSep "." (take i parts)) parts;
33353636+ # Ordinarily we would just the `doCheck` and `checkDeps` functionality
3737+ # `mkDerivation` gives us to manage our test dependencies (instead of breaking
3838+ # out `doCheck` as a package level attribute).
3939+ #
4040+ # Unfortunately `lit` does not forward `$PYTHONPATH` to children processes, in
4141+ # particular the children it uses to do feature detection.
4242+ #
4343+ # This means that python deps we add to `checkDeps` (which the python
4444+ # interpreter is made aware of via `$PYTHONPATH` – populated by the python
4545+ # setup hook) are not picked up by `lit` which causes it to skip tests.
4646+ #
4747+ # Adding `python3.withPackages (ps: [ ... ])` to `checkDeps` also doesn't work
4848+ # because this package is shadowed in `$PATH` by the regular `python3`
4949+ # package.
5050+ #
5151+ # So, we "manually" assemble one python derivation for the package to depend
5252+ # on, taking into account whether checks are enabled or not:
5353+ python = if doCheck then
5454+ let
5555+ checkDeps = ps: with ps; [ psutil ];
5656+ in python3.withPackages checkDeps
5757+ else python3;
5858+3459in stdenv.mkDerivation (rec {
3560 pname = "llvm";
3661 inherit version;
···49745075 outputs = [ "out" "lib" "dev" "python" ];
51765252- nativeBuildInputs = [ cmake python3 ]
7777+ nativeBuildInputs = [ cmake python ]
5378 ++ optional enableManpages python3.pkgs.sphinx;
54795580 buildInputs = [ libxml2 libffi ]
···245270 cp NATIVE/bin/llvm-config $dev/bin/llvm-config-native
246271 '';
247272248248- doCheck = stdenv.isLinux && (!stdenv.isx86_32)
249249- && (stdenv.hostPlatform == stdenv.buildPlatform);
273273+ inherit doCheck;
250274251275 checkTarget = "check-all";
252276
···1515, zlib
1616, buildLlvmTools
1717, debugVersion ? false
1818+, doCheck ? stdenv.isLinux && (!stdenv.isx86_32)
1919+ && (stdenv.hostPlatform == stdenv.buildPlatform)
1820, enableManpages ? false
1921, enableSharedLibraries ? !stdenv.hostPlatform.isStatic
2022# broken for Ampere eMAG 8180 (c2.large.arm on Packet) #56245
···3032 shortVersion = with lib;
3133 concatStringsSep "." (take 1 (splitVersion release_version));
32343535+ # Ordinarily we would just the `doCheck` and `checkDeps` functionality
3636+ # `mkDerivation` gives us to manage our test dependencies (instead of breaking
3737+ # out `doCheck` as a package level attribute).
3838+ #
3939+ # Unfortunately `lit` does not forward `$PYTHONPATH` to children processes, in
4040+ # particular the children it uses to do feature detection.
4141+ #
4242+ # This means that python deps we add to `checkDeps` (which the python
4343+ # interpreter is made aware of via `$PYTHONPATH` – populated by the python
4444+ # setup hook) are not picked up by `lit` which causes it to skip tests.
4545+ #
4646+ # Adding `python3.withPackages (ps: [ ... ])` to `checkDeps` also doesn't work
4747+ # because this package is shadowed in `$PATH` by the regular `python3`
4848+ # package.
4949+ #
5050+ # So, we "manually" assemble one python derivation for the package to depend
5151+ # on, taking into account whether checks are enabled or not:
5252+ python = if doCheck then
5353+ let
5454+ checkDeps = ps: with ps; [ psutil ];
5555+ in python3.withPackages checkDeps
5656+ else python3;
5757+3358in stdenv.mkDerivation (rec {
3459 pname = "llvm";
3560 inherit version;
···48734974 outputs = [ "out" "lib" "dev" "python" ];
50755151- nativeBuildInputs = [ cmake python3 ]
7676+ nativeBuildInputs = [ cmake python ]
5277 ++ optionals enableManpages [ python3.pkgs.sphinx python3.pkgs.recommonmark ];
53785479 buildInputs = [ libxml2 libffi ]
···237262 cp NATIVE/bin/llvm-config $dev/bin/llvm-config-native
238263 '';
239264240240- doCheck = stdenv.isLinux && (!stdenv.isx86_32)
241241- && (stdenv.hostPlatform == stdenv.buildPlatform);
265265+ inherit doCheck;
242266243267 checkTarget = "check-all";
244268
···1515, zlib
1616, buildLlvmTools
1717, debugVersion ? false
1818+, doCheck ? stdenv.isLinux && (!stdenv.isx86_32) && (!stdenv.hostPlatform.isRiscV)
1919+ && (stdenv.hostPlatform == stdenv.buildPlatform)
1820, enableManpages ? false
1921, enableSharedLibraries ? !stdenv.hostPlatform.isStatic
2022# broken for Ampere eMAG 8180 (c2.large.arm on Packet) #56245
···3032 shortVersion = with lib;
3133 concatStringsSep "." (take 1 (splitString "." release_version));
32343535+ # Ordinarily we would just the `doCheck` and `checkDeps` functionality
3636+ # `mkDerivation` gives us to manage our test dependencies (instead of breaking
3737+ # out `doCheck` as a package level attribute).
3838+ #
3939+ # Unfortunately `lit` does not forward `$PYTHONPATH` to children processes, in
4040+ # particular the children it uses to do feature detection.
4141+ #
4242+ # This means that python deps we add to `checkDeps` (which the python
4343+ # interpreter is made aware of via `$PYTHONPATH` – populated by the python
4444+ # setup hook) are not picked up by `lit` which causes it to skip tests.
4545+ #
4646+ # Adding `python3.withPackages (ps: [ ... ])` to `checkDeps` also doesn't work
4747+ # because this package is shadowed in `$PATH` by the regular `python3`
4848+ # package.
4949+ #
5050+ # So, we "manually" assemble one python derivation for the package to depend
5151+ # on, taking into account whether checks are enabled or not:
5252+ python = if doCheck then
5353+ let
5454+ checkDeps = ps: with ps; [ psutil ];
5555+ in python3.withPackages checkDeps
5656+ else python3;
5757+3358in stdenv.mkDerivation (rec {
3459 pname = "llvm";
3560 inherit version;
···48734974 outputs = [ "out" "lib" "dev" "python" ];
50755151- nativeBuildInputs = [ cmake python3 ]
7676+ nativeBuildInputs = [ cmake python ]
5277 ++ optionals enableManpages [ python3.pkgs.sphinx python3.pkgs.recommonmark ];
53785479 buildInputs = [ libxml2 libffi ]
···252277 cp NATIVE/bin/llvm-config $dev/bin/llvm-config-native
253278 '';
254279255255- doCheck = stdenv.isLinux && (!stdenv.isx86_32) && (!stdenv.hostPlatform.isRiscV)
256256- && (stdenv.hostPlatform == stdenv.buildPlatform);
280280+ inherit doCheck;
257281258282 checkTarget = "check-all";
259283
···11+From a56bb19a9dc303a50ef12d83cd24c2395bf81076 Mon Sep 17 00:00:00 2001
22+From: Ben Wolsieffer <benwolsieffer@gmail.com>
33+Date: Wed, 7 Dec 2022 21:25:46 -0500
44+Subject: [PATCH] [scudo][standalone] Use CheckAtomic to decide to link to
55+ libatomic
66+77+Standalone scudo uses the atomic operation builtin functions, which require
88+linking to libatomic on some platforms. Currently, this is done in an ad-hoc
99+manner. MIPS platforms always link to libatomic, and the tests are always linked
1010+to it as well. libatomic is required on base ARMv6 (but not ARMv6K), but it is
1111+currently not linked, causing the build to fail.
1212+1313+This patch replaces this ad-hoc logic with the CheckAtomic CMake module already
1414+used in other parts of LLVM. The CheckAtomic module checks whether std::atomic
1515+requires libatomic, which is not strictly the same as checking the atomic
1616+builtins, but should have the same results as far as I know. If this is
1717+problematic, a custom version of CheckAtomic could be used to specifically test
1818+the builtins.
1919+---
2020+ compiler-rt/lib/scudo/standalone/CMakeLists.txt | 7 +++++++
2121+ compiler-rt/lib/scudo/standalone/tests/CMakeLists.txt | 4 +---
2222+ 2 files changed, 8 insertions(+), 3 deletions(-)
2323+2424+diff --git a/lib/scudo/standalone/CMakeLists.txt b/lib/scudo/standalone/CMakeLists.txt
2525+index ae5c354768c8..eb27374ca520 100644
2626+--- a/lib/scudo/standalone/CMakeLists.txt
2727++++ b/lib/scudo/standalone/CMakeLists.txt
2828+@@ -1,5 +1,8 @@
2929+ add_compiler_rt_component(scudo_standalone)
3030+3131++include(DetermineGCCCompatible)
3232++include(CheckAtomic)
3333++
3434+ include_directories(../.. include)
3535+3636+ set(SCUDO_CFLAGS)
3737+@@ -34,6 +37,10 @@ list(APPEND SCUDO_LINK_FLAGS -Wl,-z,defs,-z,now,-z,relro)
3838+3939+ list(APPEND SCUDO_LINK_FLAGS -ffunction-sections -fdata-sections -Wl,--gc-sections)
4040+4141++if(HAVE_CXX_ATOMICS_WITH_LIB OR HAVE_CXX_ATOMICS64_WITH_LIB)
4242++ list(APPEND SCUDO_LINK_FLAGS -latomic)
4343++endif()
4444++
4545+ # We don't use the C++ standard library, so avoid including it by mistake.
4646+ append_list_if(COMPILER_RT_HAS_NOSTDLIBXX_FLAG -nostdlib++ SCUDO_LINK_FLAGS)
4747+4848+diff --git a/lib/scudo/standalone/tests/CMakeLists.txt b/lib/scudo/standalone/tests/CMakeLists.txt
4949+index 6d0936cbb5c1..70a5a7e959c1 100644
5050+--- a/lib/scudo/standalone/tests/CMakeLists.txt
5151++++ b/lib/scudo/standalone/tests/CMakeLists.txt
5252+@@ -38,9 +38,7 @@ set(LINK_FLAGS
5353+ ${SANITIZER_TEST_CXX_LIBRARIES}
5454+ )
5555+ list(APPEND LINK_FLAGS -pthread)
5656+-# Linking against libatomic is required with some compilers
5757+-check_library_exists(atomic __atomic_load_8 "" COMPILER_RT_HAS_LIBATOMIC)
5858+-if (COMPILER_RT_HAS_LIBATOMIC)
5959++if(HAVE_CXX_ATOMICS_WITH_LIB OR HAVE_CXX_ATOMICS64_WITH_LIB)
6060+ list(APPEND LINK_FLAGS -latomic)
6161+ endif()
6262+6363+--
6464+2.38.1
6565+
···11+From 5017de8ba4b1fe985169cf54590e858a9019a91f Mon Sep 17 00:00:00 2001
22+From: Khem Raj <raj.khem@gmail.com>
33+Date: Fri, 11 Mar 2022 16:25:49 -0800
44+Subject: [PATCH] [builtins] Do not force thumb mode directive in
55+ arm/sync-ops.h
66+77+.thumb_func was not switching mode until [1]
88+so it did not show up but now that .thumb_func (without argument) is
99+switching mode, its causing build failures on armv6 ( rpi0 ) even when
1010+build is explicitly asking for this file to be built with -marm (ARM
1111+mode), therefore use DEFINE_COMPILERRT_FUNCTION macro to add function
1212+header which considers arch and mode from compiler cmdline to decide if
1313+the function is built using thumb mode or arm mode.
1414+1515+[1] https://reviews.llvm.org/D101975
1616+1717+Note that it also needs https://reviews.llvm.org/D99282
1818+1919+Reviewed By: peter.smith, MaskRay
2020+2121+Differential Revision: https://reviews.llvm.org/D104183
2222+---
2323+ compiler-rt/lib/builtins/arm/sync-ops.h | 6 ++----
2424+ 1 file changed, 2 insertions(+), 4 deletions(-)
2525+2626+diff --git a/lib/builtins/arm/sync-ops.h b/lib/builtins/arm/sync-ops.h
2727+index 7a26170741ad2..d914f9d3a1093 100644
2828+--- a/lib/builtins/arm/sync-ops.h
2929++++ b/lib/builtins/arm/sync-ops.h
3030+@@ -16,9 +16,8 @@
3131+3232+ #define SYNC_OP_4(op) \
3333+ .p2align 2; \
3434+- .thumb; \
3535+ .syntax unified; \
3636+- DEFINE_COMPILERRT_THUMB_FUNCTION(__sync_fetch_and_##op) \
3737++ DEFINE_COMPILERRT_FUNCTION(__sync_fetch_and_##op) \
3838+ DMB; \
3939+ mov r12, r0; \
4040+ LOCAL_LABEL(tryatomic_##op) : ldrex r0, [r12]; \
4141+@@ -31,9 +30,8 @@
4242+4343+ #define SYNC_OP_8(op) \
4444+ .p2align 2; \
4545+- .thumb; \
4646+ .syntax unified; \
4747+- DEFINE_COMPILERRT_THUMB_FUNCTION(__sync_fetch_and_##op) \
4848++ DEFINE_COMPILERRT_FUNCTION(__sync_fetch_and_##op) \
4949+ push {r4, r5, r6, lr}; \
5050+ DMB; \
5151+ mov r12, r0; \
5252+
···4545 "-DCOMPILER_RT_BUILD_SANITIZERS=OFF"
4646 "-DCOMPILER_RT_BUILD_XRAY=OFF"
4747 "-DCOMPILER_RT_BUILD_LIBFUZZER=OFF"
4848- "-DCOMPILER_RT_BUILD_PROFILE=OFF"
4948 "-DCOMPILER_RT_BUILD_MEMPROF=OFF"
5049 "-DCOMPILER_RT_BUILD_ORC=OFF" # may be possible to build with musl if necessary
5050+ ] ++ lib.optionals (useLLVM || bareMetal) [
5151+ "-DCOMPILER_RT_BUILD_PROFILE=OFF"
5152 ] ++ lib.optionals ((useLLVM && !haveLibc) || bareMetal) [
5253 "-DCMAKE_C_COMPILER_WORKS=ON"
5354 "-DCMAKE_CXX_COMPILER_WORKS=ON"
+26-14
pkgs/development/compilers/llvm/git/default.nix
···11{ lowPrio, newScope, pkgs, lib, stdenv, cmake, ninja
22, gccForLibs, preLibcCrossHeaders
33-, libxml2, python3, isl, fetchFromGitHub, overrideCC, wrapCCWith, wrapBintoolsWith
33+, libxml2, python3, fetchFromGitHub, overrideCC, wrapCCWith, wrapBintoolsWith
44, buildLlvmTools # tools, but from the previous stage, for cross
55, targetLlvmLibraries # libraries, but from the next stage, for cross
66# This is the default binutils, but with *this* version of LLD rather
···5151 };
52525353 tools = lib.makeExtensible (tools: let
5454- callPackage = newScope (tools // { inherit stdenv cmake ninja libxml2 python3 isl release_version version monorepoSrc buildLlvmTools; });
5454+ callPackage = newScope (tools // { inherit stdenv cmake ninja libxml2 python3 release_version version monorepoSrc buildLlvmTools; });
5555 mkExtraBuildCommands0 = cc: ''
5656 rsrc="$out/resource-root"
5757 mkdir "$rsrc"
···231231 });
232232233233 libraries = lib.makeExtensible (libraries: let
234234- callPackage = newScope (libraries // buildLlvmTools // { inherit stdenv cmake ninja libxml2 python3 isl release_version version monorepoSrc; });
234234+ callPackage = newScope (libraries // buildLlvmTools // { inherit stdenv cmake ninja libxml2 python3 release_version version monorepoSrc; });
235235 in {
236236237237 compiler-rt-libc = callPackage ./compiler-rt {
···257257258258 libcxxStdenv = overrideCC stdenv buildLlvmTools.libcxxClang;
259259260260- libcxx = callPackage ./libcxx {
261261- inherit llvm_meta;
262262- stdenv = if stdenv.hostPlatform.useLLVM or false
263263- then overrideCC stdenv buildLlvmTools.clangNoLibcxx
264264- else stdenv;
265265- };
266266-267260 libcxxabi = let
268268- stdenv_ = if stdenv.hostPlatform.useLLVM or false
269269- then overrideCC stdenv buildLlvmTools.clangNoLibcxx
270270- else stdenv;
261261+ # CMake will "require" a compiler capable of compiling C++ programs
262262+ # cxx-header's build does not actually use one so it doesn't really matter
263263+ # what stdenv we use here, as long as CMake is happy.
271264 cxx-headers = callPackage ./libcxx {
272265 inherit llvm_meta;
273273- stdenv = stdenv_;
274266 headersOnly = true;
275267 };
268268+269269+ # `libcxxabi` *doesn't* need a compiler with a working C++ stdlib but it
270270+ # *does* need a relatively modern C++ compiler (see:
271271+ # https://releases.llvm.org/15.0.0/projects/libcxx/docs/index.html#platform-and-compiler-support).
272272+ #
273273+ # So, we use the clang from this LLVM package set, like libc++
274274+ # "boostrapping builds" do:
275275+ # https://releases.llvm.org/15.0.0/projects/libcxx/docs/BuildingLibcxx.html#bootstrapping-build
276276+ #
277277+ # We cannot use `clangNoLibcxx` because that contains `compiler-rt` which,
278278+ # on macOS, depends on `libcxxabi`, thus forming a cycle.
279279+ stdenv_ = overrideCC stdenv buildLlvmTools.clangNoCompilerRtWithLibc;
276280 in callPackage ./libcxxabi {
277281 stdenv = stdenv_;
278282 inherit llvm_meta cxx-headers;
283283+ };
284284+285285+ # Like `libcxxabi` above, `libcxx` requires a fairly modern C++ compiler,
286286+ # so: we use the clang from this LLVM package set instead of the regular
287287+ # stdenv's compiler.
288288+ libcxx = callPackage ./libcxx {
289289+ inherit llvm_meta;
290290+ stdenv = overrideCC stdenv buildLlvmTools.clangNoLibcxx;
279291 };
280292281293 libunwind = callPackage ./libunwind {
···5858 cmakeFlags = [
5959 "-DLLVM_ENABLE_RUNTIMES=libcxxabi"
6060 "-DLIBCXXABI_LIBCXX_INCLUDES=${cxx-headers}/include/c++/v1"
6161+6262+ # `libcxxabi`'s build does not need a toolchain with a c++ stdlib attached
6363+ # (we specify the headers it should use explicitly above).
6464+ #
6565+ # CMake however checks for this anyways; this flag tells it not to. See:
6666+ # https://github.com/llvm/llvm-project/blob/4bd3f3759259548e159aeba5c76efb9a0864e6fa/llvm/runtimes/CMakeLists.txt#L243
6767+ "-DCMAKE_CXX_COMPILER_WORKS=ON"
6168 ] ++ lib.optionals (stdenv.hostPlatform.useLLVM or false) [
6269 "-DLLVM_ENABLE_LIBCXX=ON"
6370 "-DLIBCXXABI_USE_LLVM_UNWINDER=ON"
···9595 # make[2]: *** [Makefile:199: backup] Error 1
9696 enableParallelBuilding = lib.versionAtLeast version "4.08";
97979898+ # Workaround missing dependencies for install parallelism:
9999+ # install: target '...-ocaml-4.14.0/lib/ocaml/threads': No such file or directory
100100+ # make[1]: *** [Makefile:140: installopt] Error 1
101101+ enableParallelInstalling = false;
102102+98103 # Workaround lack of parallelism support among top-level targets:
99104 # we place nixpkgs-specific targets to a separate file and set
100105 # sequential order among them as a single rule.
···1010 if stdenv.isLinux then
1111 [
1212 "d3d12" # WSL emulated GPU (aka Dozen)
1313- "kmsro" # helper driver for display-only devices
1413 "nouveau" # Nvidia
1514 "radeonsi" # new AMD (GCN+)
1615 "r300" # very old AMD
···1918 "svga" # VMWare virtualized GPU
2019 "virgl" # QEMU virtualized GPU (aka VirGL)
2120 "zink" # generic OpenGL over Vulkan, experimental
2222- ]
2323- ++ lib.optionals stdenv.isAarch64 [
2121+ ] ++ lib.optionals (stdenv.isAarch64 || stdenv.isAarch32) [
2422 "etnaviv" # Vivante GPU designs (mostly NXP/Marvell SoCs)
2523 "freedreno" # Qualcomm Adreno (all Qualcomm SoCs)
2624 "lima" # ARM Mali 4xx
2725 "panfrost" # ARM Mali Midgard and up (T/G series)
2626+ "vc4" # Broadcom VC4 (Raspberry Pi 0-3)
2727+ ] ++ lib.optionals stdenv.isAarch64 [
2828 "tegra" # Nvidia Tegra SoCs
2929 "v3d" # Broadcom VC5 (Raspberry Pi 4)
3030- "vc4" # Broadcom VC4 (Raspberry Pi 0-3)
3130 ] ++ lib.optionals stdenv.hostPlatform.isx86 [
3231 "iris" # new Intel, could work on non-x86 with PCIe cards, but doesn't build as of 22.3.4
3332 "crocus" # Intel legacy, x86 only
+1
pkgs/development/libraries/ncurses/default.nix
···5353 # Only the C compiler, and explicitly not C++ compiler needs this flag on solaris:
5454 CFLAGS = lib.optionalString stdenv.isSunOS "-D_XOPEN_SOURCE_EXTENDED";
55555656+ strictDeps = true;
5657 depsBuildBuild = [
5758 buildPackages.stdenv.cc
5859 ];
···11-From e00a5257a6ca5fedbf68b09eee7df3502971a057 Mon Sep 17 00:00:00 2001
22-From: =?UTF-8?q?J=C3=B6rg=20Thalheim?= <joerg@thalheim.io>
33-Date: Sat, 24 Apr 2021 10:11:40 +0200
44-Subject: [PATCH 1/2] No impure bin sh
55-66-default_shell is used to populuate default shell used to execute jobs.
77-Unless SHELL is set to a different value this would be /bin/sh.
88-Our stdenv provides sh in form of bash anyway. Having this value not
99-hard-coded has some advantages:
1010-1111-- It would ensure that on all systems it uses sh from its PATH rather
1212- than /bin/sh, which helps as different systems might have different
1313- shells there (bash vs. dash)
1414-- In the past I had issues with LD_PRELOAD with BEAR, where /bin/sh
1515- used a different glibc than BEAR which came from my development shell.
1616----
1717- src/job.c | 2 +-
1818- 1 file changed, 1 insertion(+), 1 deletion(-)
1919-2020-diff --git a/src/job.c b/src/job.c
2121-index ae1f18b..6b4ddb3 100644
2222---- a/src/job.c
2323-+++ b/src/job.c
2424-@@ -77,7 +77,7 @@ char * vms_strsignal (int status);
2525-2626- #else
2727-2828--const char *default_shell = "/bin/sh";
2929-+const char *default_shell = "sh";
3030- int batch_mode_shell = 0;
3131-3232- #endif
3333---
3434-2.31.1
3535-
···11-{ lib
22-, stdenv
33-, fetchurl
44-, guileSupport ? false, guile
55-# avoid guile depend on bootstrap to prevent dependency cycles
66-, inBootstrap ? false
77-, pkg-config
88-, gnumake
99-}:
1010-1111-let
1212- guileEnabled = guileSupport && !inBootstrap;
1313-in
1414-1515-stdenv.mkDerivation rec {
1616- pname = "gnumake";
1717- version = "4.4";
1818-1919- src = fetchurl {
2020- url = "mirror://gnu/make/make-${version}.tar.gz";
2121- hash = "sha256-WB9NToctp0s5Qch0IViYp9NYAvA3Mr3M7h1KeXkQXRg=";
2222- };
2323-2424- # to update apply these patches with `git am *.patch` to https://git.savannah.gnu.org/git/make.git
2525- patches = [
2626- # Replaces /bin/sh with sh, see patch file for reasoning
2727- ./0001-No-impure-bin-sh.patch
2828- # Purity: don't look for library dependencies (of the form `-lfoo') in /lib
2929- # and /usr/lib. It's a stupid feature anyway. Likewise, when searching for
3030- # included Makefiles, don't look in /usr/include and friends.
3131- ./0002-remove-impure-dirs.patch
3232- ];
3333-3434- nativeBuildInputs = lib.optionals guileEnabled [ pkg-config ];
3535- buildInputs = lib.optionals guileEnabled [ guile ];
3636-3737- configureFlags = lib.optional guileEnabled "--with-guile"
3838-3939- # Make uses this test to decide whether it should keep track of
4040- # subseconds. Apple made this possible with APFS and macOS 10.13.
4141- # However, we still support macOS 10.11 and 10.12. Binaries built
4242- # in Nixpkgs will be unable to use futimens to set mtime less than
4343- # a second. So, tell Make to ignore nanoseconds in mtime here by
4444- # overriding the autoconf test for the struct.
4545- # See https://github.com/NixOS/nixpkgs/issues/51221 for discussion.
4646- ++ lib.optional stdenv.isDarwin "ac_cv_struct_st_mtim_nsec=no";
4747-4848- outputs = [ "out" "man" "info" ];
4949- separateDebugInfo = true;
5050-5151- passthru.tests = {
5252- # make sure that the override doesn't break bootstrapping
5353- gnumakeWithGuile = gnumake.override { guileSupport = true; };
5454- };
5555-5656- meta = with lib; {
5757- description = "A tool to control the generation of non-source files from sources";
5858- longDescription = ''
5959- Make is a tool which controls the generation of executables and
6060- other non-source files of a program from the program's source files.
6161-6262- Make gets its knowledge of how to build your program from a file
6363- called the makefile, which lists each of the non-source files and
6464- how to compute it from other files. When you write a program, you
6565- should write a makefile for it, so that it is possible to use Make
6666- to build and install the program.
6767- '';
6868- homepage = "https://www.gnu.org/software/make/";
6969-7070- license = licenses.gpl3Plus;
7171- maintainers = [ maintainers.vrthra ];
7272- mainProgram = "make";
7373- platforms = platforms.all;
7474- };
7575-}
···99 buildDepends = drv.buildDepends or [] ++ [haskellPackages.file-embed];
1010 buildTools = (drv.buildTools or []) ++ [ removeReferencesTo ];
11111212+ # Normally, the static linked executable shouldn't refer to any library or the compiler.
1313+ # This is not always the case when the dependency has Paths_* module generated by Cabal,
1414+ # where bindir, datadir, and libdir contain the path to the library, and thus make the
1515+ # executable indirectly refer to GHC. However, most Haskell programs only use Paths_*.version for
1616+ # getting the version at runtime, so it's safe to remove the references to them.
1717+ # This is true so far for pandoc-types and warp.
1818+ # For details see: https://github.com/NixOS/nixpkgs/issues/34376
1219 postInstall = drv.postInstall or "" + ''
1320 remove-references-to \
1421 -t ${haskellPackages.pandoc-types} \
2222+ $out/bin/pandoc
2323+ remove-references-to \
2424+ -t ${haskellPackages.warp} \
1525 $out/bin/pandoc
1626 '' + lib.optionalString (stdenv.buildPlatform == stdenv.hostPlatform) ''
1727 mkdir -p $out/share/bash-completion/completions
···2535 # lead to a transitive runtime dependency on the whole GHC distribution.
2636 # This should ideally be fixed in haskellPackages (or even Cabal),
2737 # but a minimal pandoc is important enough to patch it manually.
2828- disallowedReferences = [ haskellPackages.pandoc-types ];
3838+ disallowedReferences = [ haskellPackages.pandoc-types haskellPackages.warp ];
2939 })
+1
pkgs/development/tools/shadered/default.nix
···4545 homepage = "https://github.com/dfranx/SHADERed";
4646 license = with licenses; [ mit ];
4747 maintainers = with maintainers; [ Scriptkiddi ];
4848+ broken = true;
4849 };
4950}
···1616 1 file changed, 8 insertions(+)
17171818diff --git a/src/core/manager.c b/src/core/manager.c
1919-index d9e7d77913..ba3ce14bf0 100644
1919+index 50d092042c..898f9ed2f1 100644
2020--- a/src/core/manager.c
2121+++ b/src/core/manager.c
2222-@@ -3693,9 +3693,17 @@ static int build_generator_environment(Manager *m, char ***ret) {
2222+@@ -3714,9 +3714,17 @@ static int build_generator_environment(Manager *m, char ***ret) {
2323 * adjust generated units to that. Let's pass down some bits of information that are easy for us to
2424 * determine (but a bit harder for generator scripts to determine), as environment variables. */
2525
···44{ stdenv
55, pkgs
66, lib
77-, runCommand
87, testers
98}:
1091110let
1211 # early enough not to rebuild gcc but late enough to have patchelf
1312 earlyPkgs = stdenv.__bootPackages.stdenv.__bootPackages;
1313+ earlierPkgs = stdenv.__bootPackages.stdenv.__bootPackages.stdenv.__bootPackages.stdenv.__bootPackages.stdenv.__bootPackages;
1414 # use a early stdenv so when hacking on stdenv this test can be run quickly
1515 bootStdenv = stdenv.__bootPackages.stdenv.__bootPackages.stdenv.__bootPackages.stdenv.__bootPackages.stdenv;
1616 pkgsStructured = import pkgs.path { config = { structuredAttrsByDefault = true; }; inherit (stdenv.hostPlatform) system; };
1717 bootStdenvStructuredAttrsByDefault = pkgsStructured.stdenv.__bootPackages.stdenv.__bootPackages.stdenv.__bootPackages.stdenv.__bootPackages.stdenv;
1818+1919+ runCommand = earlierPkgs.runCommand;
182019212022 ccWrapperSubstitutionsTest = { name, stdenv', extraAttrs ? { } }:
···101103 hooks = lib.recurseIntoAttrs (import ./hooks.nix { stdenv = bootStdenv; pkgs = earlyPkgs; inherit lib; });
102104103105 outputs-no-out = runCommand "outputs-no-out-assert" {
104104- result = testers.testBuildFailure (stdenv.mkDerivation {
106106+ result = earlierPkgs.testers.testBuildFailure (bootStdenv.mkDerivation {
105107 NIX_DEBUG = 1;
106108 name = "outputs-no-out";
107109 outputs = ["foo"];
···113115114116 # Assumption: the first output* variable to be configured is
115117 # _overrideFirst outputDev "dev" "out"
116116- 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";
118118+ 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";
117119 } ''
118120 grep -F "$expectedMsg" $result/testBuildFailure.log >/dev/null
119121 touch $out
···12251225 pidginwindowmerge = throw "'pidginwindowmerge' has been renamed to/replaced by 'pidgin-window-merge'"; # Converted to throw 2022-02-22
12261226 pifi = throw "pifi has been removed from nixpkgs, as it is no longer developed"; # Added 2022-01-19
12271227 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
12281228+ pipewire-media-session = throw "pipewire-media-session is no longer maintained and has been removed. Please use Wireplumber instead.";
12281229 piwik = throw "'piwik' has been renamed to/replaced by 'matomo'"; # Converted to throw 2022-02-22
12291230 pixie = throw "pixie has been removed: abandoned by upstream"; # Added 2022-04-21
12301231 pkgconfig = pkg-config; # Added 2018-02-02, moved to aliases.nix 2021-01-18