···2727 steps:2828 # Use a GitHub App to create the PR so that CI gets triggered2929 # The App is scoped to Repository > Contents and Pull Requests: write for Nixpkgs3030- - uses: actions/create-github-app-token@a8d616148505b5069dccd32f177bb87d7f39123b # v2.1.13030+ - uses: actions/create-github-app-token@67018539274d69449ef7c02e8e71183d1719ab42 # v2.1.43131 id: app-token3232 with:3333 app-id: ${{ vars.NIXPKGS_CI_APP_ID }}
···3636 # Use a GitHub App to create the PR so that CI gets triggered3737 # The App is scoped to Repository > Contents and Pull Requests: write for Nixpkgs3838 # We only need Pull Requests: write here, but the app is also used for backports.3939- - uses: actions/create-github-app-token@a8d616148505b5069dccd32f177bb87d7f39123b # v2.1.13939+ - uses: actions/create-github-app-token@67018539274d69449ef7c02e8e71183d1719ab42 # v2.1.44040 id: app-token4141 with:4242 app-id: ${{ vars.NIXPKGS_CI_APP_ID }}
+1-1
.github/workflows/labels.yml
···4949 run: npm install @actions/artifact bottleneck50505151 # Use a GitHub App, because it has much higher rate limits: 12,500 instead of 5,000 req / hour.5252- - uses: actions/create-github-app-token@a8d616148505b5069dccd32f177bb87d7f39123b # v2.1.15252+ - uses: actions/create-github-app-token@67018539274d69449ef7c02e8e71183d1719ab42 # v2.1.45353 if: github.event_name != 'pull_request' && vars.NIXPKGS_CI_APP_ID5454 id: app-token5555 with:
+1-1
.github/workflows/periodic-merge.yml
···2323 steps:2424 # Use a GitHub App to create the PR so that CI gets triggered2525 # The App is scoped to Repository > Contents and Pull Requests: write for Nixpkgs2626- - uses: actions/create-github-app-token@a8d616148505b5069dccd32f177bb87d7f39123b # v2.1.12626+ - uses: actions/create-github-app-token@67018539274d69449ef7c02e8e71183d1719ab42 # v2.1.42727 id: app-token2828 with:2929 app-id: ${{ vars.NIXPKGS_CI_APP_ID }}
+1-1
.github/workflows/reviewers.yml
···4848 # - OWNER_APP_PRIVATE_KEY (secret)4949 #5050 # Can't use the token received from permissions above, because it can't get enough permissions.5151- - uses: actions/create-github-app-token@a8d616148505b5069dccd32f177bb87d7f39123b # v2.1.15151+ - uses: actions/create-github-app-token@67018539274d69449ef7c02e8e71183d1719ab42 # v2.1.45252 if: github.event_name == 'pull_request_target' && vars.OWNER_APP_ID5353 id: app-token5454 with:
+2
doc/release-notes/rl-2511.section.md
···26262727- GCC 9, 10, 11, and 12 have been removed, as they have reached end‐of‐life upstream and are no longer supported.28282929+- LLVM 12, 13, 14, 15, 16, and 17 have been removed, as they have reached end‐of‐life upstream and are no longer supported.3030+2931- GHCJS 8.10, exposed via `haskell.compiler.ghcjs` and `haskell.compiler.ghcjs810`, has been removed. Downstream users should migrate their projects to the new JavaScript backend of GHC proper which can be used via `pkgsCross.ghcjs` from Nixpkgs. Haskell packaging code, like `haskellPackages.mkDerivation`, `ghcWithPackages` and `hoogleWithPackages`, also no longer supports GHCJS.30323133- GHC 8.6, 8.10, 9.0, 9.2, and their package sets have been removed.
···38383939- GNOME 3 has been upgraded to 3.34. Please take a look at their [Release Notes](https://help.gnome.org/misc/release-notes/3.34) for details.40404141-- If you enable the Pantheon Desktop Manager via [services.xserver.desktopManager.pantheon.enable](options.html#opt-services.xserver.desktopManager.pantheon.enable), we now default to also use [ Pantheon's newly designed greeter ](https://blog.elementary.io/say-hello-to-the-new-greeter/). Contrary to NixOS's usual update policy, Pantheon will receive updates during the cycle of NixOS 20.03 when backwards compatible.4141+- If you enable the Pantheon Desktop Manager via `services.xserver.desktopManager.pantheon.enable`, we now default to also use [ Pantheon's newly designed greeter ](https://blog.elementary.io/say-hello-to-the-new-greeter/). Contrary to NixOS's usual update policy, Pantheon will receive updates during the cycle of NixOS 20.03 when backwards compatible.42424343- By default zfs pools will now be trimmed on a weekly basis. Trimming is only done on supported devices (i.e. NVME or SSDs) and should improve throughput and lifetime of these devices. It is controlled by the `services.zfs.trim.enable` varname. The zfs scrub service (`services.zfs.autoScrub.enable`) and the zfs autosnapshot service (`services.zfs.autoSnapshot.enable`) are now only enabled if zfs is set in `config.boot.initrd.supportedFilesystems` or `config.boot.supportedFilesystems`. These lists will automatically contain zfs as soon as any zfs mountpoint is configured in `fileSystems`.4444
+2
nixos/doc/manual/release-notes/rl-2511.section.md
···248248249249- mate-wayland-session 1.28.4 is now using the default wayfire decorator instead of firedecor, thus `services.xserver.desktopManager.mate.enableWaylandSession` is no longer shipping firedecor. If you are experiencing broken window decorations after upgrade, backup and remove `~/.config/mate/wayfire.ini` and re-login.250250251251+- Due to [deprecation of gnome-session X11 support](https://blogs.gnome.org/alatiera/2025/06/08/the-x11-session-removal/), `services.desktopManager.pantheon` now defaults to pantheon-wayland session. The X11 session will be removed before gnome-session 49 lands.252252+251253- `services.gitea` supports sending notifications with sendmail again. To do this, activate the parameter `services.gitea.mailerUseSendmail` and configure SMTP server.252254253255- `networking.wireless.networks.<name>` now has an option to specify SSID, hence allowing duplicated SSID setup. The BSSID option is added along side with this.
···11+# Pantheon Desktop {#chap-pantheon}22+33+Pantheon is the desktop environment created for the elementary OS distribution. It is written from scratch in Vala, utilizing GNOME technologies with GTK and Granite.44+55+## Enabling Pantheon {#sec-pantheon-enable}66+77+All of Pantheon is working in NixOS and the applications should be available, aside from a few [exceptions](https://github.com/NixOS/nixpkgs/issues/58161). To enable Pantheon, set88+```nix99+{ services.desktopManager.pantheon.enable = true; }1010+```1111+This automatically enables LightDM and Pantheon's LightDM greeter. If you'd like to disable this, set1212+```nix1313+{1414+ services.xserver.displayManager.lightdm.greeters.pantheon.enable = false;1515+ services.xserver.displayManager.lightdm.enable = false;1616+}1717+```1818+but please be aware using Pantheon without LightDM as a display manager will break screenlocking from the UI. The NixOS module for Pantheon installs all of Pantheon's default applications. If you'd like to not install Pantheon's apps, set1919+```nix2020+{ services.pantheon.apps.enable = false; }2121+```2222+You can also use [](#opt-environment.pantheon.excludePackages) to remove any other app (like `elementary-mail`).2323+2424+## Wingpanel and Switchboard plugins {#sec-pantheon-wingpanel-switchboard}2525+2626+Wingpanel and Switchboard work differently than they do in other distributions, as far as using plugins. You cannot install a plugin globally (like with {option}`environment.systemPackages`) to start using it. You should instead be using the following options:2727+2828+ - [](#opt-services.desktopManager.pantheon.extraWingpanelIndicators)2929+ - [](#opt-services.desktopManager.pantheon.extraSwitchboardPlugs)3030+3131+to configure the programs with plugs or indicators.3232+3333+The difference in NixOS is both these programs are patched to load plugins from a directory that is the value of an environment variable. All of which is controlled in Nix. If you need to configure the particular packages manually you can override the packages like:3434+```nix3535+wingpanel-with-indicators.override {3636+ indicators = [ pkgs.some-special-indicator ];3737+}3838+```3939+```nix4040+switchboard-with-plugs.override { plugs = [ pkgs.some-special-plug ]; }4141+```4242+please note that, like how the NixOS options describe these as extra plugins, this would only add to the default plugins included with the programs. If for some reason you'd like to configure which plugins to use exactly, both packages have an argument for this:4343+```nix4444+wingpanel-with-indicators.override {4545+ useDefaultIndicators = false;4646+ indicators = specialListOfIndicators;4747+}4848+```4949+```nix5050+switchboard-with-plugs.override {5151+ useDefaultPlugs = false;5252+ plugs = specialListOfPlugs;5353+}5454+```5555+this could be most useful for testing a particular plug-in in isolation.5656+5757+## FAQ {#sec-pantheon-faq}5858+5959+[I have switched from a different desktop and Pantheon’s theming looks messed up.]{#sec-pantheon-faq-messed-up-theme}6060+ : Open Switchboard and go to: Administration → About → Restore Default Settings → Restore Settings. This will reset any dconf settings to their Pantheon defaults. Note this could reset certain GNOME specific preferences if that desktop was used prior.6161+6262+[I cannot enable both GNOME and Pantheon.]{#sec-pantheon-faq-gnome-and-pantheon}6363+ : This is a known [issue](https://github.com/NixOS/nixpkgs/issues/64611) and there is no known workaround.6464+6565+[Does AppCenter work, or is it available?]{#sec-pantheon-faq-appcenter}6666+ : AppCenter is available and the Flatpak backend should work so you can install some Flatpak applications using it. However, due to missing appstream metadata, the Packagekit backend does not function currently. See this [issue](https://github.com/NixOS/nixpkgs/issues/15932).6767+6868+ If you are using Pantheon, AppCenter should be installed by default if you have [Flatpak support](#module-services-flatpak) enabled. If you also wish to add the `appcenter` Flatpak remote:6969+7070+ ```ShellSession7171+ $ flatpak remote-add --if-not-exists appcenter https://flatpak.elementary.io/repo.flatpakrepo7272+ ```
···11-# Pantheon Desktop {#chap-pantheon}22-33-Pantheon is the desktop environment created for the elementary OS distribution. It is written from scratch in Vala, utilizing GNOME technologies with GTK and Granite.44-55-## Enabling Pantheon {#sec-pantheon-enable}66-77-All of Pantheon is working in NixOS and the applications should be available, aside from a few [exceptions](https://github.com/NixOS/nixpkgs/issues/58161). To enable Pantheon, set88-```nix99-{ services.xserver.desktopManager.pantheon.enable = true; }1010-```1111-This automatically enables LightDM and Pantheon's LightDM greeter. If you'd like to disable this, set1212-```nix1313-{1414- services.xserver.displayManager.lightdm.greeters.pantheon.enable = false;1515- services.xserver.displayManager.lightdm.enable = false;1616-}1717-```1818-but please be aware using Pantheon without LightDM as a display manager will break screenlocking from the UI. The NixOS module for Pantheon installs all of Pantheon's default applications. If you'd like to not install Pantheon's apps, set1919-```nix2020-{ services.pantheon.apps.enable = false; }2121-```2222-You can also use [](#opt-environment.pantheon.excludePackages) to remove any other app (like `elementary-mail`).2323-2424-## Wingpanel and Switchboard plugins {#sec-pantheon-wingpanel-switchboard}2525-2626-Wingpanel and Switchboard work differently than they do in other distributions, as far as using plugins. You cannot install a plugin globally (like with {option}`environment.systemPackages`) to start using it. You should instead be using the following options:2727-2828- - [](#opt-services.xserver.desktopManager.pantheon.extraWingpanelIndicators)2929- - [](#opt-services.xserver.desktopManager.pantheon.extraSwitchboardPlugs)3030-3131-to configure the programs with plugs or indicators.3232-3333-The difference in NixOS is both these programs are patched to load plugins from a directory that is the value of an environment variable. All of which is controlled in Nix. If you need to configure the particular packages manually you can override the packages like:3434-```nix3535-wingpanel-with-indicators.override {3636- indicators = [ pkgs.some-special-indicator ];3737-}3838-```3939-```nix4040-switchboard-with-plugs.override { plugs = [ pkgs.some-special-plug ]; }4141-```4242-please note that, like how the NixOS options describe these as extra plugins, this would only add to the default plugins included with the programs. If for some reason you'd like to configure which plugins to use exactly, both packages have an argument for this:4343-```nix4444-wingpanel-with-indicators.override {4545- useDefaultIndicators = false;4646- indicators = specialListOfIndicators;4747-}4848-```4949-```nix5050-switchboard-with-plugs.override {5151- useDefaultPlugs = false;5252- plugs = specialListOfPlugs;5353-}5454-```5555-this could be most useful for testing a particular plug-in in isolation.5656-5757-## FAQ {#sec-pantheon-faq}5858-5959-[I have switched from a different desktop and Pantheon’s theming looks messed up.]{#sec-pantheon-faq-messed-up-theme}6060- : Open Switchboard and go to: Administration → About → Restore Default Settings → Restore Settings. This will reset any dconf settings to their Pantheon defaults. Note this could reset certain GNOME specific preferences if that desktop was used prior.6161-6262-[I cannot enable both GNOME and Pantheon.]{#sec-pantheon-faq-gnome-and-pantheon}6363- : This is a known [issue](https://github.com/NixOS/nixpkgs/issues/64611) and there is no known workaround.6464-6565-[Does AppCenter work, or is it available?]{#sec-pantheon-faq-appcenter}6666- : AppCenter is available and the Flatpak backend should work so you can install some Flatpak applications using it. However, due to missing appstream metadata, the Packagekit backend does not function currently. See this [issue](https://github.com/NixOS/nixpkgs/issues/15932).6767-6868- If you are using Pantheon, AppCenter should be installed by default if you have [Flatpak support](#module-services-flatpak) enabled. If you also wish to add the `appcenter` Flatpak remote:6969-7070- ```ShellSession7171- $ flatpak remote-add --if-not-exists appcenter https://flatpak.elementary.io/repo.flatpakrepo7272- ```
···11-{ pkgs, lib, ... }:22-33-{44- name = "pantheon-wayland";55-66- meta.maintainers = lib.teams.pantheon.members;77-88- nodes.machine =99- { nodes, ... }:1010-1111- let1212- videosAutostart = pkgs.writeTextFile {1313- name = "autostart-elementary-videos";1414- destination = "/etc/xdg/autostart/io.elementary.videos.desktop";1515- text = ''1616- [Desktop Entry]1717- Version=1.01818- Name=Videos1919- Type=Application2020- Terminal=false2121- Exec=io.elementary.videos %U2222- '';2323- };2424- in2525- {2626- imports = [ ./common/user-account.nix ];2727-2828- # Workaround ".gala-wrapped invoked oom-killer"2929- virtualisation.memorySize = 2047;3030-3131- services.xserver.enable = true;3232- services.xserver.desktopManager.pantheon.enable = true;3333- services.displayManager = {3434- autoLogin.enable = true;3535- autoLogin.user = nodes.machine.users.users.alice.name;3636- defaultSession = "pantheon-wayland";3737- };3838-3939- # We ship pantheon.appcenter by default when this is enabled.4040- services.flatpak.enable = true;4141-4242- # For basic OCR tests.4343- environment.systemPackages = [ videosAutostart ];4444-4545- # We don't ship gnome-text-editor in Pantheon module, we add this line mainly4646- # to catch eval issues related to this option.4747- environment.pantheon.excludePackages = [ pkgs.gnome-text-editor ];4848- };4949-5050- enableOCR = true;5151-5252- testScript =5353- { nodes, ... }:5454- let5555- user = nodes.machine.users.users.alice;5656- in5757- ''5858- machine.wait_for_unit("display-manager.service")5959-6060- with subtest("Wait for wayland server"):6161- machine.wait_for_file("/run/user/${toString user.uid}/wayland-0")6262-6363- with subtest("Check that logging in has given the user ownership of devices"):6464- machine.succeed("getfacl -p /dev/snd/timer | grep -q ${user.name}")6565-6666- with subtest("Check if Pantheon components actually start"):6767- # We specifically check gsd-xsettings here since it is manually pulled up by gala.6868- # https://github.com/elementary/gala/pull/21406969- for i in ["gala", "io.elementary.wingpanel", "io.elementary.dock", "gsd-media-keys", "gsd-xsettings", "io.elementary.desktop.agent-polkit"]:7070- machine.wait_until_succeeds(f"pgrep -f {i}")7171- machine.wait_until_succeeds("pgrep -xf ${pkgs.pantheon.elementary-files}/libexec/io.elementary.files.xdg-desktop-portal")7272-7373- with subtest("Check if various environment variables are set"):7474- cmd = "xargs --null --max-args=1 echo < /proc/$(pgrep -xf ${pkgs.pantheon.gala}/bin/gala)/environ"7575- machine.succeed(f"{cmd} | grep 'XDG_CURRENT_DESKTOP' | grep 'Pantheon'")7676- machine.succeed(f"{cmd} | grep 'XDG_SESSION_TYPE' | grep 'wayland'")7777- # Hopefully from the sessionPath option.7878- machine.succeed(f"{cmd} | grep 'XDG_DATA_DIRS' | grep 'gsettings-schemas/pantheon-agent-geoclue2'")7979- # Hopefully from login shell.8080- machine.succeed(f"{cmd} | grep '__NIXOS_SET_ENVIRONMENT_DONE' | grep '1'")8181- # Hopefully from gcr-ssh-agent.8282- machine.succeed(f"{cmd} | grep 'SSH_AUTH_SOCK' | grep 'gcr'")8383-8484- with subtest("Wait for elementary videos autostart"):8585- machine.wait_until_succeeds("pgrep -f io.elementary.videos")8686- machine.wait_for_text("No Videos Open")8787- machine.screenshot("videos")8888-8989- with subtest("Trigger multitasking view"):9090- cmd = "dbus-send --session --dest=org.pantheon.gala --print-reply /org/pantheon/gala org.pantheon.gala.PerformAction int32:1"9191- env = "DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/${toString user.uid}/bus"9292- machine.succeed(f"su - ${user.name} -c '{env} {cmd}'")9393- machine.sleep(5)9494- machine.screenshot("multitasking")9595- machine.succeed(f"su - ${user.name} -c '{env} {cmd}'")9696-9797- with subtest("Check if gala has ever coredumped"):9898- machine.fail("coredumpctl --json=short | grep gala")9999- # So we can see the dock.100100- machine.execute("pkill -f -9 io.elementary.videos")101101- machine.sleep(10)102102- machine.screenshot("screen")103103- '';104104-}
+34-35
nixos/tests/pantheon.nix
···88 nodes.machine =99 { ... }:10101111+ let1212+ videosAutostart = pkgs.writeTextFile {1313+ name = "autostart-elementary-videos";1414+ destination = "/etc/xdg/autostart/io.elementary.videos.desktop";1515+ text = ''1616+ [Desktop Entry]1717+ Version=1.01818+ Name=Videos1919+ Type=Application2020+ Terminal=false2121+ Exec=io.elementary.videos %U2222+ '';2323+ };2424+ in1125 {1226 imports = [ ./common/user-account.nix ];1327···2915 virtualisation.memorySize = 2047;30163117 services.xserver.enable = true;3232- services.xserver.desktopManager.pantheon.enable = true;1818+ services.desktopManager.pantheon.enable = true;33193420 # We ship pantheon.appcenter by default when this is enabled.3521 services.flatpak.enable = true;2222+2323+ # For basic OCR tests.2424+ environment.systemPackages = [ videosAutostart ];36253726 # We don't ship gnome-text-editor in Pantheon module, we add this line mainly3827 # to catch eval issues related to this option.3928 environment.pantheon.excludePackages = [ pkgs.gnome-text-editor ];40294141- environment.systemPackages = [ pkgs.xdotool ];3030+ programs.ydotool.enable = true;4231 };43324433 enableOCR = true;···5033 { nodes, ... }:5134 let5235 user = nodes.machine.users.users.alice;5353- bob = nodes.machine.users.users.bob;5436 in5537 ''5638 machine.wait_for_unit("display-manager.service")···5741 with subtest("Test we can see usernames in elementary-greeter"):5842 machine.wait_for_text("${user.description}")5943 machine.wait_until_succeeds("pgrep -f io.elementary.greeter-compositor")6060- # OCR was struggling with this one.6161- # machine.wait_for_text("${bob.description}")6244 # Ensure the password box is focused by clicking it.6345 # Workaround for https://github.com/NixOS/nixpkgs/issues/211366.6464- machine.succeed("XAUTHORITY=/var/lib/lightdm/.Xauthority DISPLAY=:0 xdotool mousemove 512 505 click 1")4646+ machine.succeed("ydotool mousemove -a 220 275")4747+ machine.succeed("ydotool click 0xC0")6548 machine.sleep(2)6649 machine.screenshot("elementary_greeter_lightdm")67506851 with subtest("Login with elementary-greeter"):6952 machine.send_chars("${user.password}\n")7070- machine.wait_for_x()7171- machine.wait_for_file("${user.home}/.Xauthority")7272- machine.succeed("xauth merge ${user.home}/.Xauthority")7353 machine.wait_until_succeeds('journalctl -t gnome-session-binary --grep "Entering running state"')5454+5555+ with subtest("Wait for wayland server"):5656+ machine.wait_for_file("/run/user/${toString user.uid}/wayland-0")74577558 with subtest("Check that logging in has given the user ownership of devices"):7659 machine.succeed("getfacl -p /dev/snd/timer | grep -q ${user.name}")77607861 with subtest("Check if Pantheon components actually start"):7979- for i in ["gala", "io.elementary.wingpanel", "io.elementary.dock", "gsd-media-keys", "io.elementary.desktop.agent-polkit"]:6262+ # We specifically check gsd-xsettings here since it is manually pulled up by gala.6363+ # https://github.com/elementary/gala/pull/21406464+ for i in ["gala", "io.elementary.wingpanel", "io.elementary.dock", "gsd-media-keys", "gsd-xsettings", "io.elementary.desktop.agent-polkit"]:8065 machine.wait_until_succeeds(f"pgrep -f {i}")8181- for i in ["gala", "io.elementary.wingpanel", "io.elementary.dock"]:8282- machine.wait_for_window(i)8366 machine.wait_until_succeeds("pgrep -xf ${pkgs.pantheon.elementary-files}/libexec/io.elementary.files.xdg-desktop-portal")84678568 with subtest("Check if various environment variables are set"):8669 cmd = "xargs --null --max-args=1 echo < /proc/$(pgrep -xf ${pkgs.pantheon.gala}/bin/gala)/environ"8770 machine.succeed(f"{cmd} | grep 'XDG_CURRENT_DESKTOP' | grep 'Pantheon'")7171+ machine.succeed(f"{cmd} | grep 'XDG_SESSION_TYPE' | grep 'wayland'")8872 # Hopefully from the sessionPath option.8973 machine.succeed(f"{cmd} | grep 'XDG_DATA_DIRS' | grep 'gsettings-schemas/pantheon-agent-geoclue2'")9074 # Hopefully from login shell.···9276 # Hopefully from gcr-ssh-agent.9377 machine.succeed(f"{cmd} | grep 'SSH_AUTH_SOCK' | grep 'gcr'")94789595- with subtest("Open elementary videos"):9696- machine.execute("su - ${user.name} -c 'DISPLAY=:0 io.elementary.videos >&2 &'")9797- machine.sleep(2)9898- machine.wait_for_window("io.elementary.videos")7979+ with subtest("Wait for elementary videos autostart"):8080+ machine.wait_until_succeeds("pgrep -f io.elementary.videos")9981 machine.wait_for_text("No Videos Open")100100-101101- with subtest("Open elementary calendar"):102102- machine.wait_until_succeeds("pgrep -f evolution-calendar-factory")103103- machine.execute("su - ${user.name} -c 'DISPLAY=:0 io.elementary.calendar >&2 &'")104104- machine.sleep(2)105105- machine.wait_for_window("io.elementary.calendar")106106-107107- with subtest("Open system settings"):108108- machine.execute("su - ${user.name} -c 'DISPLAY=:0 io.elementary.settings >&2 &'")109109- # Wait for all plugins to be loaded before we check if the window is still there.110110- machine.sleep(5)111111- machine.wait_for_window("io.elementary.settings")112112-113113- with subtest("Open elementary terminal"):114114- machine.execute("su - ${user.name} -c 'DISPLAY=:0 io.elementary.terminal >&2 &'")115115- machine.wait_for_window("io.elementary.terminal")8282+ machine.screenshot("videos")1168311784 with subtest("Trigger multitasking view"):11885 cmd = "dbus-send --session --dest=org.pantheon.gala --print-reply /org/pantheon/gala org.pantheon.gala.PerformAction int32:1"119119- env = "DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/${toString user.uid}/bus DISPLAY=:0"8686+ env = "DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/${toString user.uid}/bus"12087 machine.succeed(f"su - ${user.name} -c '{env} {cmd}'")12188 machine.sleep(5)12289 machine.screenshot("multitasking")···107108108109 with subtest("Check if gala has ever coredumped"):109110 machine.fail("coredumpctl --json=short | grep gala")110110- # So you can see the dock in the below screenshot.111111- machine.succeed("su - ${user.name} -c 'DISPLAY=:0 xdotool mousemove 450 1000 >&2 &'")111111+ # So we can see the dock.112112+ machine.execute("pkill -f -9 io.elementary.videos")112113 machine.sleep(10)113114 machine.screenshot("screen")114115 '';
···11-diff --git a/lldb/cmake/modules/LLDBConfig.cmake b/lldb/cmake/modules/LLDBConfig.cmake22-index 37364341ff8b..7f74c1a3e257 10064433---- a/cmake/modules/LLDBConfig.cmake44-+++ b/cmake/modules/LLDBConfig.cmake55-@@ -257,7 +257,7 @@ if (NOT TARGET clang-resource-headers)66- # Iterate over the possible places where the external resource directory77- # could be and pick the first that exists.88- foreach(CANDIDATE "${Clang_DIR}/../.." "${LLVM_DIR}" "${LLVM_LIBRARY_DIRS}"99-- "${LLVM_BUILD_LIBRARY_DIR}"1010-+ "${LLVM_BUILD_LIBRARY_DIR}" "@clangLibDir@"1111- "${LLVM_BINARY_DIR}/lib${LLVM_LIBDIR_SUFFIX}")1212- # Build the resource directory path by appending 'clang/<version number>'.1313- set(CANDIDATE_RESOURCE_DIR "${CANDIDATE}/clang/${LLDB_CLANG_RESOURCE_DIR_NAME}")
···11-From a56bb19a9dc303a50ef12d83cd24c2395bf81076 Mon Sep 17 00:00:00 200122-From: Ben Wolsieffer <benwolsieffer@gmail.com>33-Date: Wed, 7 Dec 2022 21:25:46 -050044-Subject: [PATCH] [scudo][standalone] Use CheckAtomic to decide to link to55- libatomic66-77-Standalone scudo uses the atomic operation builtin functions, which require88-linking to libatomic on some platforms. Currently, this is done in an ad-hoc99-manner. MIPS platforms always link to libatomic, and the tests are always linked1010-to it as well. libatomic is required on base ARMv6 (but not ARMv6K), but it is1111-currently not linked, causing the build to fail.1212-1313-This patch replaces this ad-hoc logic with the CheckAtomic CMake module already1414-used in other parts of LLVM. The CheckAtomic module checks whether std::atomic1515-requires libatomic, which is not strictly the same as checking the atomic1616-builtins, but should have the same results as far as I know. If this is1717-problematic, a custom version of CheckAtomic could be used to specifically test1818-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.txt2525-index ae5c354768c8..eb27374ca520 1006442626---- a/lib/scudo/standalone/CMakeLists.txt2727-+++ b/lib/scudo/standalone/CMakeLists.txt2828-@@ -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.txt4949-index 6d0936cbb5c1..70a5a7e959c1 1006445050---- a/lib/scudo/standalone/tests/CMakeLists.txt5151-+++ b/lib/scudo/standalone/tests/CMakeLists.txt5252-@@ -38,9 +38,7 @@ set(LINK_FLAGS5353- ${SANITIZER_TEST_CXX_LIBRARIES}5454- )5555- list(APPEND LINK_FLAGS -pthread)5656--# Linking against libatomic is required with some compilers5757--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.16565-
···11-diff --git a/CMakeLists.txt b/CMakeLists.txt22-index 3a41aa43e406..f000cee6eae0 10064433---- a/CMakeLists.txt44-+++ b/CMakeLists.txt55-@@ -5,6 +5,8 @@66-77- cmake_minimum_required(VERSION 3.13.4)88-99-+include(GNUInstallDirs)1010-+1111- # Check if compiler-rt is built as a standalone project.1212- if (CMAKE_SOURCE_DIR STREQUAL CMAKE_CURRENT_SOURCE_DIR OR COMPILER_RT_STANDALONE_BUILD)1313- project(CompilerRT C CXX ASM)1414-diff --git a/cmake/base-config-ix.cmake b/cmake/base-config-ix.cmake1515-index d7b0124f3546..3e111146df4d 1006441616---- a/cmake/base-config-ix.cmake1717-+++ b/cmake/base-config-ix.cmake1818-@@ -67,7 +67,7 @@ if (LLVM_TREE_AVAILABLE)1919- else()2020- # Take output dir and install path from the user.2121- set(COMPILER_RT_OUTPUT_DIR ${CMAKE_CURRENT_BINARY_DIR} CACHE PATH2222-- "Path where built compiler-rt libraries should be stored.")2323-+ "Path where built compiler-rt build artifacts should be stored.")2424- set(COMPILER_RT_EXEC_OUTPUT_DIR ${CMAKE_CURRENT_BINARY_DIR}/bin CACHE PATH2525- "Path where built compiler-rt executables should be stored.")2626- set(COMPILER_RT_INSTALL_PATH "" CACHE PATH2727-@@ -99,13 +99,13 @@ endif()2828- if(LLVM_ENABLE_PER_TARGET_RUNTIME_DIR AND NOT APPLE)2929- set(COMPILER_RT_OUTPUT_LIBRARY_DIR3030- ${COMPILER_RT_OUTPUT_DIR}/lib)3131-- extend_path(default_install_path "${COMPILER_RT_INSTALL_PATH}" lib)3232-+ extend_path(default_install_path "${COMPILER_RT_INSTALL_PATH}" "${CMAKE_INSTALL_LIBDIR}")3333- set(COMPILER_RT_INSTALL_LIBRARY_DIR "${default_install_path}" CACHE PATH3434- "Path where built compiler-rt libraries should be installed.")3535- else(LLVM_ENABLE_PER_TARGET_RUNTIME_DIR AND NOT APPLE)3636- set(COMPILER_RT_OUTPUT_LIBRARY_DIR3737- ${COMPILER_RT_OUTPUT_DIR}/lib/${COMPILER_RT_OS_DIR})3838-- extend_path(default_install_path "${COMPILER_RT_INSTALL_PATH}" "lib/${COMPILER_RT_OS_DIR}")3939-+ extend_path(default_install_path "${COMPILER_RT_INSTALL_PATH}" "${CMAKE_INSTALL_LIBDIR}/${COMPILER_RT_OS_DIR}")4040- set(COMPILER_RT_INSTALL_LIBRARY_DIR "${default_install_path}" CACHE PATH4141- "Path where built compiler-rt libraries should be installed.")4242- endif()
···11-diff --git a/utils/lit/lit/TestRunner.py b/utils/lit/lit/TestRunner.py22-index 0242e0b75af3..d732011306f7 10064433---- a/utils/lit/lit/TestRunner.py44-+++ b/utils/lit/lit/TestRunner.py55-@@ -1029,6 +1029,12 @@ def executeScript(test, litConfig, tmpBase, commands, cwd):66- f.write('@echo off\n')77- f.write('\n@if %ERRORLEVEL% NEQ 0 EXIT\n'.join(commands))88- else:99-+ # This env var is *purged* when invoking subprocesses so we have to1010-+ # manually set it from within the bash script in order for the commands1111-+ # in run lines to see this var:1212-+ if "DYLD_LIBRARY_PATH" in test.config.environment:1313-+ f.write(f'export DYLD_LIBRARY_PATH="{test.config.environment["DYLD_LIBRARY_PATH"]}"\n')1414-+1515- for i, ln in enumerate(commands):1616- match = re.match(kPdbgRegex, ln)1717- if match:1818-@@ -1363,7 +1369,7 @@ def applySubstitutions(script, substitutions, conditions={},1919- return processed2020-2121- process = processLine if recursion_limit is None else processLineToFixedPoint2222-- 2323-+2424- return [unescapePercents(process(ln)) for ln in script]2525-2626-
···11-diff --git a/CMakeLists.txt b/CMakeLists.txt22-index b6ddbe90516d..311ab1d50e7f 10064433---- a/CMakeLists.txt44-+++ b/CMakeLists.txt55-@@ -29,7 +29,7 @@ if (OPENMP_STANDALONE_BUILD)66- set(OPENMP_LIBDIR_SUFFIX "" CACHE STRING77- "Suffix of lib installation directory, e.g. 64 => lib64")88- # Do not use OPENMP_LIBDIR_SUFFIX directly, use OPENMP_INSTALL_LIBDIR.99-- set(OPENMP_INSTALL_LIBDIR "lib${OPENMP_LIBDIR_SUFFIX}")1010-+ set(OPENMP_INSTALL_LIBDIR "${CMAKE_INSTALL_LIBDIR}${OPENMP_LIBDIR_SUFFIX}")1111-1212- # Group test settings.1313- set(OPENMP_TEST_C_COMPILER ${CMAKE_C_COMPILER} CACHE STRING1414-@@ -40,7 +40,7 @@ if (OPENMP_STANDALONE_BUILD)1515- else()1616- set(OPENMP_ENABLE_WERROR ${LLVM_ENABLE_WERROR})1717- # If building in tree, we honor the same install suffix LLVM uses.1818-- set(OPENMP_INSTALL_LIBDIR "lib${LLVM_LIBDIR_SUFFIX}")1919-+ set(OPENMP_INSTALL_LIBDIR "${CMAKE_INSTALL_LIBDIR}${LLVM_LIBDIR_SUFFIX}")2020-2121- if (NOT MSVC)2222- set(OPENMP_TEST_C_COMPILER ${LLVM_RUNTIME_OUTPUT_INTDIR}/clang)
···11-diff --git a/cmake/modules/LLDBConfig.cmake b/cmake/modules/LLDBConfig.cmake22-index ec06ba285f27..286162f098fb 10064433---- a/cmake/modules/LLDBConfig.cmake44-+++ b/cmake/modules/LLDBConfig.cmake55-@@ -290,7 +290,8 @@ if (NOT TARGET clang-resource-headers)66- # could be and pick the first that exists.77- foreach(CANDIDATE "${Clang_DIR}/../.." "${LLVM_DIR}" "${LLVM_LIBRARY_DIRS}"88- "${LLVM_BUILD_LIBRARY_DIR}"99-- "${LLVM_LIBRARY_DIR}")1010-+ "${LLVM_LIBRARY_DIR}"1111-+ "@clangLibDir@")1212- # Build the resource directory path by appending 'clang/<version number>'.1313- set(CANDIDATE_RESOURCE_DIR "${CANDIDATE}/clang/${LLDB_CLANG_RESOURCE_DIR_NAME}")1414- if (IS_DIRECTORY "${CANDIDATE_RESOURCE_DIR}")
···11-diff --git a/CMakeLists.txt b/CMakeLists.txt22-index 7e25e0407db2..72f031a82b75 10064433---- a/CMakeLists.txt44-+++ b/CMakeLists.txt55-@@ -995,7 +995,7 @@ if (NOT TENSORFLOW_AOT_PATH STREQUAL "")66- add_subdirectory(${TENSORFLOW_AOT_PATH}/xla_aot_runtime_src77- ${CMAKE_ARCHIVE_OUTPUT_DIRECTORY}/tf_runtime)88- install(TARGETS tf_xla_runtime EXPORT LLVMExports99-- ARCHIVE DESTINATION lib${LLVM_LIBDIR_SUFFIX} COMPONENT tf_xla_runtime)1010-+ ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}${LLVM_LIBDIR_SUFFIX} COMPONENT tf_xla_runtime)1111- set_property(GLOBAL APPEND PROPERTY LLVM_EXPORTS tf_xla_runtime)1212- # Once we add more modules, we should handle this more automatically.1313- if (DEFINED LLVM_OVERRIDE_MODEL_HEADER_INLINERSIZEMODEL)1414-diff --git a/cmake/modules/AddLLVM.cmake b/cmake/modules/AddLLVM.cmake1515-index 93e6d67551de..8d367457af5a 1006441616---- a/cmake/modules/AddLLVM.cmake1717-+++ b/cmake/modules/AddLLVM.cmake1818-@@ -874,8 +874,8 @@ macro(add_llvm_library name)1919- get_target_export_arg(${name} LLVM export_to_llvmexports ${umbrella})2020- install(TARGETS ${name}2121- ${export_to_llvmexports}2222-- LIBRARY DESTINATION lib${LLVM_LIBDIR_SUFFIX} COMPONENT ${name}2323-- ARCHIVE DESTINATION lib${LLVM_LIBDIR_SUFFIX} COMPONENT ${name}2424-+ LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}${LLVM_LIBDIR_SUFFIX}" COMPONENT ${name}2525-+ ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}${LLVM_LIBDIR_SUFFIX}" COMPONENT ${name}2626- RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}" COMPONENT ${name})2727-2828- if (NOT LLVM_ENABLE_IDE)2929-@@ -2043,7 +2043,7 @@ function(llvm_install_library_symlink name dest type)3030- set(full_name ${CMAKE_${type}_LIBRARY_PREFIX}${name}${CMAKE_${type}_LIBRARY_SUFFIX})3131- set(full_dest ${CMAKE_${type}_LIBRARY_PREFIX}${dest}${CMAKE_${type}_LIBRARY_SUFFIX})3232-3333-- set(output_dir lib${LLVM_LIBDIR_SUFFIX})3434-+ set(output_dir ${CMAKE_INSTALL_FULL_LIBDIR}${LLVM_LIBDIR_SUFFIX})3535- if(WIN32 AND "${type}" STREQUAL "SHARED")3636- set(output_dir "${CMAKE_INSTALL_BINDIR}")3737- endif()3838-@@ -2312,16 +2312,37 @@ function(llvm_setup_rpath name)3939-4040- if (APPLE)4141- set(_install_name_dir INSTALL_NAME_DIR "@rpath")4242-- set(_install_rpath "@loader_path/../lib${LLVM_LIBDIR_SUFFIX}" ${extra_libdir})4343-+ set(_install_rpath "@loader_path/../${CMAKE_INSTALL_LIBDIR}${LLVM_LIBDIR_SUFFIX}" ${extra_libdir})4444- elseif(${CMAKE_SYSTEM_NAME} MATCHES "AIX" AND BUILD_SHARED_LIBS)4545- # $ORIGIN is not interpreted at link time by aix ld.4646- # Since BUILD_SHARED_LIBS is only recommended for use by developers,4747- # hardcode the rpath to build/install lib dir first in this mode.4848- # FIXME: update this when there is better solution.4949-- set(_install_rpath "${LLVM_LIBRARY_OUTPUT_INTDIR}" "${CMAKE_INSTALL_PREFIX}/lib${LLVM_LIBDIR_SUFFIX}" ${extra_libdir})5050-+ set(_install_rpath "${LLVM_LIBRARY_OUTPUT_INTDIR}" "${CMAKE_INSTALL_FULL_LIBDIR}${LLVM_LIBDIR_SUFFIX}" ${extra_libdir})5151- elseif(UNIX)5252-- set(_build_rpath "\$ORIGIN/../lib${LLVM_LIBDIR_SUFFIX}" ${extra_libdir})5353-- set(_install_rpath "\$ORIGIN/../lib${LLVM_LIBDIR_SUFFIX}")5454-+ # Note that we add `extra_libdir` (aka `LLVM_LIBRARY_DIR` in our case) back5555-+ # to `_install_rpath` here.5656-+ #5757-+ # In nixpkgs we do not build and install LLVM alongside rdeps of LLVM (i.e.5858-+ # clang); instead LLVM is its own package and thus lands at its own nix5959-+ # store path. This makes it so that the default relative rpath (`../lib/`)6060-+ # does not point at the LLVM shared objects.6161-+ #6262-+ # More discussion here:6363-+ # - https://github.com/NixOS/nixpkgs/pull/235624#discussion_r12201503296464-+ # - https://reviews.llvm.org/D146918 (16.0.5+)6565-+ #6666-+ # Note that we leave `extra_libdir` in `_build_rpath`: without FHS there is6767-+ # no potential that this will result in us pulling in the "wrong" LLVM.6868-+ # Adding this to the build rpath means we aren't forced to use6969-+ # `installCheckPhase` instead of `checkPhase` (i.e. binaries in the build7070-+ # dir, pre-install, will have the right rpath for LLVM).7171-+ #7272-+ # As noted in the differential above, an alternative solution is to have7373-+ # all rdeps of nixpkgs' LLVM (that use the AddLLVM.cmake machinery) set7474-+ # `CMAKE_INSTALL_RPATH`.7575-+ set(_build_rpath "\$ORIGIN/../${CMAKE_INSTALL_LIBDIR}${LLVM_LIBDIR_SUFFIX}" ${extra_libdir})7676-+ set(_install_rpath "\$ORIGIN/../${CMAKE_INSTALL_LIBDIR}${LLVM_LIBDIR_SUFFIX}" ${extra_libdir})7777- if(${CMAKE_SYSTEM_NAME} MATCHES "(FreeBSD|DragonFly)")7878- set_property(TARGET ${name} APPEND_STRING PROPERTY7979- LINK_FLAGS " -Wl,-z,origin ")8080-diff --git a/cmake/modules/AddOCaml.cmake b/cmake/modules/AddOCaml.cmake8181-index 891c9e6d618c..8d963f3b0069 1006448282---- a/cmake/modules/AddOCaml.cmake8383-+++ b/cmake/modules/AddOCaml.cmake8484-@@ -147,9 +147,9 @@ function(add_ocaml_library name)8585- endforeach()8686-8787- if( APPLE )8888-- set(ocaml_rpath "@executable_path/../../../lib${LLVM_LIBDIR_SUFFIX}")8989-+ set(ocaml_rpath "@executable_path/../../../${CMAKE_INSTALL_LIBDIR}${LLVM_LIBDIR_SUFFIX}")9090- elseif( UNIX )9191-- set(ocaml_rpath "\\$ORIGIN/../../../lib${LLVM_LIBDIR_SUFFIX}")9292-+ set(ocaml_rpath "\\$ORIGIN/../../../${CMAKE_INSTALL_LIBDIR}${LLVM_LIBDIR_SUFFIX}")9393- endif()9494- list(APPEND ocaml_flags "-ldopt" "-Wl,-rpath,${ocaml_rpath}")9595-9696-diff --git a/cmake/modules/CMakeLists.txt b/cmake/modules/CMakeLists.txt9797-index d99af79aa38e..21e794224b99 1006449898---- a/cmake/modules/CMakeLists.txt9999-+++ b/cmake/modules/CMakeLists.txt100100-@@ -127,7 +127,7 @@ set(LLVM_CONFIG_INCLUDE_DIRS101101- )102102- list(REMOVE_DUPLICATES LLVM_CONFIG_INCLUDE_DIRS)103103-104104--extend_path(LLVM_CONFIG_LIBRARY_DIR "\${LLVM_INSTALL_PREFIX}" "lib\${LLVM_LIBDIR_SUFFIX}")105105-+extend_path(LLVM_CONFIG_LIBRARY_DIR "\${LLVM_INSTALL_PREFIX}" "${CMAKE_INSTALL_LIBDIR}\${LLVM_LIBDIR_SUFFIX}")106106- set(LLVM_CONFIG_LIBRARY_DIRS107107- "${LLVM_CONFIG_LIBRARY_DIR}"108108- # FIXME: Should there be other entries here?109109-diff --git a/docs/CMake.rst b/docs/CMake.rst110110-index 7926de258ec8..5ae01adc3905 100644111111---- a/docs/CMake.rst112112-+++ b/docs/CMake.rst113113-@@ -250,7 +250,7 @@ description is in `LLVM-related variables`_ below.114114- **LLVM_LIBDIR_SUFFIX**:STRING115115- Extra suffix to append to the directory where libraries are to be116116- installed. On a 64-bit architecture, one could use ``-DLLVM_LIBDIR_SUFFIX=64``117117-- to install libraries to ``/usr/lib64``.118118-+ to install libraries to ``/usr/lib64``. See also ``CMAKE_INSTALL_LIBDIR``.119119-120120- **LLVM_PARALLEL_{COMPILE,LINK}_JOBS**:STRING121121- Building the llvm toolchain can use a lot of resources, particularly122122-@@ -284,6 +284,10 @@ manual, or execute ``cmake --help-variable VARIABLE_NAME``.123123- The path to install executables, relative to the *CMAKE_INSTALL_PREFIX*.124124- Defaults to "bin".125125-126126-+**CMAKE_INSTALL_LIBDIR**:PATH127127-+ The path to install libraries, relative to the *CMAKE_INSTALL_PREFIX*.128128-+ Defaults to "lib".129129-+130130- **CMAKE_INSTALL_INCLUDEDIR**:PATH131131- The path to install header files, relative to the *CMAKE_INSTALL_PREFIX*.132132- Defaults to "include".133133-diff --git a/tools/llvm-config/BuildVariables.inc.in b/tools/llvm-config/BuildVariables.inc.in134134-index 370005cd8d7d..7e790bc52111 100644135135---- a/tools/llvm-config/BuildVariables.inc.in136136-+++ b/tools/llvm-config/BuildVariables.inc.in137137-@@ -23,6 +23,7 @@138138- #define LLVM_CXXFLAGS "@LLVM_CXXFLAGS@"139139- #define LLVM_BUILDMODE "@LLVM_BUILDMODE@"140140- #define LLVM_LIBDIR_SUFFIX "@LLVM_LIBDIR_SUFFIX@"141141-+#define LLVM_INSTALL_LIBDIR "@CMAKE_INSTALL_LIBDIR@"142142- #define LLVM_INSTALL_INCLUDEDIR "@CMAKE_INSTALL_INCLUDEDIR@"143143- #define LLVM_INSTALL_PACKAGE_DIR "@LLVM_INSTALL_PACKAGE_DIR@"144144- #define LLVM_TARGETS_BUILT "@LLVM_TARGETS_BUILT@"145145-diff --git a/tools/llvm-config/llvm-config.cpp b/tools/llvm-config/llvm-config.cpp146146-index b1d795a0a349..de6cb1514f05 100644147147---- a/tools/llvm-config/llvm-config.cpp148148-+++ b/tools/llvm-config/llvm-config.cpp149149-@@ -366,7 +366,11 @@ int main(int argc, char **argv) {150150- sys::fs::make_absolute(ActivePrefix, Path);151151- ActiveBinDir = std::string(Path.str());152152- }153153-- ActiveLibDir = ActivePrefix + "/lib" + LLVM_LIBDIR_SUFFIX;154154-+ {155155-+ SmallString<256> Path(LLVM_INSTALL_LIBDIR LLVM_LIBDIR_SUFFIX);156156-+ sys::fs::make_absolute(ActivePrefix, Path);157157-+ ActiveLibDir = std::string(Path.str());158158-+ }159159- {160160- SmallString<256> Path(LLVM_INSTALL_PACKAGE_DIR);161161- sys::fs::make_absolute(ActivePrefix, Path);
···11-diff --git a/utils/lit/lit/TestRunner.py b/utils/lit/lit/TestRunner.py22-index 0242e0b75af3..d732011306f7 10064433---- a/utils/lit/lit/TestRunner.py44-+++ b/utils/lit/lit/TestRunner.py55-@@ -1029,6 +1029,12 @@ def executeScript(test, litConfig, tmpBase, commands, cwd):66- f.write('@echo off\n')77- f.write('\n@if %ERRORLEVEL% NEQ 0 EXIT\n'.join(commands))88- else:99-+ # This env var is *purged* when invoking subprocesses so we have to1010-+ # manually set it from within the bash script in order for the commands1111-+ # in run lines to see this var:1212-+ if "DYLD_LIBRARY_PATH" in test.config.environment:1313-+ f.write(f'export DYLD_LIBRARY_PATH="{test.config.environment["DYLD_LIBRARY_PATH"]}"\n')1414-+1515- for i, ln in enumerate(commands):1616- match = re.match(kPdbgRegex, ln)1717- if match:
···11-diff --git a/CMakeLists.txt b/CMakeLists.txt22-index b6ddbe90516d..311ab1d50e7f 10064433---- a/CMakeLists.txt44-+++ b/CMakeLists.txt55-@@ -29,7 +29,7 @@ if (OPENMP_STANDALONE_BUILD)66- set(OPENMP_LIBDIR_SUFFIX "" CACHE STRING77- "Suffix of lib installation directory, e.g. 64 => lib64")88- # Do not use OPENMP_LIBDIR_SUFFIX directly, use OPENMP_INSTALL_LIBDIR.99-- set(OPENMP_INSTALL_LIBDIR "lib${OPENMP_LIBDIR_SUFFIX}")1010-+ set(OPENMP_INSTALL_LIBDIR "${CMAKE_INSTALL_LIBDIR}${OPENMP_LIBDIR_SUFFIX}")1111-1212- # Group test settings.1313- set(OPENMP_TEST_C_COMPILER ${CMAKE_C_COMPILER} CACHE STRING1414-@@ -40,7 +40,7 @@ if (OPENMP_STANDALONE_BUILD)1515- else()1616- set(OPENMP_ENABLE_WERROR ${LLVM_ENABLE_WERROR})1717- # If building in tree, we honor the same install suffix LLVM uses.1818-- set(OPENMP_INSTALL_LIBDIR "lib${LLVM_LIBDIR_SUFFIX}")1919-+ set(OPENMP_INSTALL_LIBDIR "${CMAKE_INSTALL_LIBDIR}${LLVM_LIBDIR_SUFFIX}")2020-2121- if (NOT MSVC)2222- set(OPENMP_TEST_C_COMPILER ${LLVM_RUNTIME_OUTPUT_INTDIR}/clang)
···11-diff --git a/CMakeLists.txt b/CMakeLists.txt22-index 471817d68286..c51463304159 10064433---- a/CMakeLists.txt44-+++ b/CMakeLists.txt55-@@ -1010,7 +1010,7 @@ if (NOT TENSORFLOW_AOT_PATH STREQUAL "")66- add_subdirectory(${TENSORFLOW_AOT_PATH}/xla_aot_runtime_src77- ${CMAKE_ARCHIVE_OUTPUT_DIRECTORY}/tf_runtime)88- install(TARGETS tf_xla_runtime EXPORT LLVMExports99-- ARCHIVE DESTINATION lib${LLVM_LIBDIR_SUFFIX} COMPONENT tf_xla_runtime)1010-+ ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}${LLVM_LIBDIR_SUFFIX} COMPONENT tf_xla_runtime)1111- set_property(GLOBAL APPEND PROPERTY LLVM_EXPORTS tf_xla_runtime)1212- # Once we add more modules, we should handle this more automatically.1313- if (DEFINED LLVM_OVERRIDE_MODEL_HEADER_INLINERSIZEMODEL)1414-diff --git a/cmake/modules/AddLLVM.cmake b/cmake/modules/AddLLVM.cmake1515-index 230620c37027..dd16cab1835e 1006441616---- a/cmake/modules/AddLLVM.cmake1717-+++ b/cmake/modules/AddLLVM.cmake1818-@@ -876,8 +876,8 @@ macro(add_llvm_library name)1919- get_target_export_arg(${name} LLVM export_to_llvmexports ${umbrella})2020- install(TARGETS ${name}2121- ${export_to_llvmexports}2222-- LIBRARY DESTINATION lib${LLVM_LIBDIR_SUFFIX} COMPONENT ${name}2323-- ARCHIVE DESTINATION lib${LLVM_LIBDIR_SUFFIX} COMPONENT ${name}2424-+ LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}${LLVM_LIBDIR_SUFFIX}" COMPONENT ${name}2525-+ ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}${LLVM_LIBDIR_SUFFIX}" COMPONENT ${name}2626- RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}" COMPONENT ${name})2727-2828- if (NOT LLVM_ENABLE_IDE)2929-@@ -2069,7 +2069,7 @@ function(llvm_install_library_symlink name dest type)3030- set(LLVM_LINK_OR_COPY copy)3131- endif()3232-3333-- set(output_dir lib${LLVM_LIBDIR_SUFFIX})3434-+ set(output_dir ${CMAKE_INSTALL_FULL_LIBDIR}${LLVM_LIBDIR_SUFFIX})3535- if(WIN32 AND "${type}" STREQUAL "SHARED")3636- set(output_dir "${CMAKE_INSTALL_BINDIR}")3737- endif()3838-@@ -2344,16 +2344,37 @@ function(llvm_setup_rpath name)3939-4040- if (APPLE)4141- set(_install_name_dir INSTALL_NAME_DIR "@rpath")4242-- set(_install_rpath "@loader_path/../lib${LLVM_LIBDIR_SUFFIX}" ${extra_libdir})4343-+ set(_install_rpath "@loader_path/../${CMAKE_INSTALL_LIBDIR}${LLVM_LIBDIR_SUFFIX}" ${extra_libdir})4444- elseif(${CMAKE_SYSTEM_NAME} MATCHES "AIX" AND BUILD_SHARED_LIBS)4545- # $ORIGIN is not interpreted at link time by aix ld.4646- # Since BUILD_SHARED_LIBS is only recommended for use by developers,4747- # hardcode the rpath to build/install lib dir first in this mode.4848- # FIXME: update this when there is better solution.4949-- set(_install_rpath "${LLVM_LIBRARY_OUTPUT_INTDIR}" "${CMAKE_INSTALL_PREFIX}/lib${LLVM_LIBDIR_SUFFIX}" ${extra_libdir})5050-+ set(_install_rpath "${LLVM_LIBRARY_OUTPUT_INTDIR}" "${CMAKE_INSTALL_FULL_LIBDIR}${LLVM_LIBDIR_SUFFIX}" ${extra_libdir})5151- elseif(UNIX)5252-- set(_build_rpath "\$ORIGIN/../lib${LLVM_LIBDIR_SUFFIX}" ${extra_libdir})5353-- set(_install_rpath "\$ORIGIN/../lib${LLVM_LIBDIR_SUFFIX}")5454-+ # Note that we add `extra_libdir` (aka `LLVM_LIBRARY_DIR` in our case) back5555-+ # to `_install_rpath` here.5656-+ #5757-+ # In nixpkgs we do not build and install LLVM alongside rdeps of LLVM (i.e.5858-+ # clang); instead LLVM is its own package and thus lands at its own nix5959-+ # store path. This makes it so that the default relative rpath (`../lib/`)6060-+ # does not point at the LLVM shared objects.6161-+ #6262-+ # More discussion here:6363-+ # - https://github.com/NixOS/nixpkgs/pull/235624#discussion_r12201503296464-+ # - https://reviews.llvm.org/D146918 (16.0.5+)6565-+ #6666-+ # Note that we leave `extra_libdir` in `_build_rpath`: without FHS there is6767-+ # no potential that this will result in us pulling in the "wrong" LLVM.6868-+ # Adding this to the build rpath means we aren't forced to use6969-+ # `installCheckPhase` instead of `checkPhase` (i.e. binaries in the build7070-+ # dir, pre-install, will have the right rpath for LLVM).7171-+ #7272-+ # As noted in the differential above, an alternative solution is to have7373-+ # all rdeps of nixpkgs' LLVM (that use the AddLLVM.cmake machinery) set7474-+ # `CMAKE_INSTALL_RPATH`.7575-+ set(_build_rpath "\$ORIGIN/../lib${LLVM_LIBDIR_SUFFIX}" ${extra_libdir})7676-+ set(_install_rpath ${extra_libdir})7777- if(${CMAKE_SYSTEM_NAME} MATCHES "(FreeBSD|DragonFly)")7878- set_property(TARGET ${name} APPEND_STRING PROPERTY7979- LINK_FLAGS " -Wl,-z,origin ")8080-diff --git a/cmake/modules/AddOCaml.cmake b/cmake/modules/AddOCaml.cmake8181-index 891c9e6d618c..8d963f3b0069 1006448282---- a/cmake/modules/AddOCaml.cmake8383-+++ b/cmake/modules/AddOCaml.cmake8484-@@ -147,9 +147,9 @@ function(add_ocaml_library name)8585- endforeach()8686-8787- if( APPLE )8888-- set(ocaml_rpath "@executable_path/../../../lib${LLVM_LIBDIR_SUFFIX}")8989-+ set(ocaml_rpath "${LLVM_LIBRARY_DIR}")9090- elseif( UNIX )9191-- set(ocaml_rpath "\\$ORIGIN/../../../lib${LLVM_LIBDIR_SUFFIX}")9292-+ set(ocaml_rpath "${LLVM_LIBRARY_DIR}")9393- endif()9494- list(APPEND ocaml_flags "-ldopt" "-Wl,-rpath,${ocaml_rpath}")9595-9696-diff --git a/cmake/modules/CMakeLists.txt b/cmake/modules/CMakeLists.txt9797-index d99af79aa38e..21e794224b99 1006449898---- a/cmake/modules/CMakeLists.txt9999-+++ b/cmake/modules/CMakeLists.txt100100-@@ -127,7 +127,7 @@ set(LLVM_CONFIG_INCLUDE_DIRS101101- )102102- list(REMOVE_DUPLICATES LLVM_CONFIG_INCLUDE_DIRS)103103-104104--extend_path(LLVM_CONFIG_LIBRARY_DIR "\${LLVM_INSTALL_PREFIX}" "lib\${LLVM_LIBDIR_SUFFIX}")105105-+extend_path(LLVM_CONFIG_LIBRARY_DIR "\${LLVM_INSTALL_PREFIX}" "${CMAKE_INSTALL_LIBDIR}\${LLVM_LIBDIR_SUFFIX}")106106- set(LLVM_CONFIG_LIBRARY_DIRS107107- "${LLVM_CONFIG_LIBRARY_DIR}"108108- # FIXME: Should there be other entries here?109109-diff --git a/tools/llvm-config/BuildVariables.inc.in b/tools/llvm-config/BuildVariables.inc.in110110-index 370005cd8d7d..7e790bc52111 100644111111---- a/tools/llvm-config/BuildVariables.inc.in112112-+++ b/tools/llvm-config/BuildVariables.inc.in113113-@@ -23,6 +23,7 @@114114- #define LLVM_CXXFLAGS "@LLVM_CXXFLAGS@"115115- #define LLVM_BUILDMODE "@LLVM_BUILDMODE@"116116- #define LLVM_LIBDIR_SUFFIX "@LLVM_LIBDIR_SUFFIX@"117117-+#define LLVM_INSTALL_LIBDIR "@CMAKE_INSTALL_LIBDIR@"118118- #define LLVM_INSTALL_INCLUDEDIR "@CMAKE_INSTALL_INCLUDEDIR@"119119- #define LLVM_INSTALL_PACKAGE_DIR "@LLVM_INSTALL_PACKAGE_DIR@"120120- #define LLVM_TARGETS_BUILT "@LLVM_TARGETS_BUILT@"121121-diff --git a/tools/llvm-config/llvm-config.cpp b/tools/llvm-config/llvm-config.cpp122122-index e86eb2b44b10..f63e207e792e 100644123123---- a/tools/llvm-config/llvm-config.cpp124124-+++ b/tools/llvm-config/llvm-config.cpp125125-@@ -366,7 +366,11 @@ int main(int argc, char **argv) {126126- sys::fs::make_absolute(ActivePrefix, Path);127127- ActiveBinDir = std::string(Path.str());128128- }129129-- ActiveLibDir = ActivePrefix + "/lib" + LLVM_LIBDIR_SUFFIX;130130-+ {131131-+ SmallString<256> Path(LLVM_INSTALL_LIBDIR LLVM_LIBDIR_SUFFIX);132132-+ sys::fs::make_absolute(ActivePrefix, Path);133133-+ ActiveLibDir = std::string(Path.str());134134-+ }135135- {136136- SmallString<256> Path(LLVM_INSTALL_PACKAGE_DIR);137137- sys::fs::make_absolute(ActivePrefix, Path);
···11-diff --git a/CMakeLists.txt b/CMakeLists.txt22-index b6ddbe90516d..311ab1d50e7f 10064433---- a/CMakeLists.txt44-+++ b/CMakeLists.txt55-@@ -29,7 +29,7 @@ if (OPENMP_STANDALONE_BUILD)66- set(OPENMP_LIBDIR_SUFFIX "" CACHE STRING77- "Suffix of lib installation directory, e.g. 64 => lib64")88- # Do not use OPENMP_LIBDIR_SUFFIX directly, use OPENMP_INSTALL_LIBDIR.99-- set(OPENMP_INSTALL_LIBDIR "lib${OPENMP_LIBDIR_SUFFIX}")1010-+ set(OPENMP_INSTALL_LIBDIR "${CMAKE_INSTALL_LIBDIR}${OPENMP_LIBDIR_SUFFIX}")1111-1212- # Group test settings.1313- set(OPENMP_TEST_C_COMPILER ${CMAKE_C_COMPILER} CACHE STRING1414-@@ -40,7 +40,7 @@ if (OPENMP_STANDALONE_BUILD)1515- else()1616- set(OPENMP_ENABLE_WERROR ${LLVM_ENABLE_WERROR})1717- # If building in tree, we honor the same install suffix LLVM uses.1818-- set(OPENMP_INSTALL_LIBDIR "lib${LLVM_LIBDIR_SUFFIX}")1919-+ set(OPENMP_INSTALL_LIBDIR "${CMAKE_INSTALL_LIBDIR}${LLVM_LIBDIR_SUFFIX}")2020-2121- if (NOT MSVC)2222- set(OPENMP_TEST_C_COMPILER ${LLVM_RUNTIME_OUTPUT_INTDIR}/clang)
···11-From ff0b373b959165477f45d9f5f9a8da471ae111ab Mon Sep 17 00:00:00 200122-From: Ben Wolsieffer <benwolsieffer@gmail.com>33-Date: Wed, 7 Dec 2022 18:03:56 -050044-Subject: [PATCH] [scudo][standalone] Only use yield on ARMv6K and newer55-66-The yield instruction is only available in ARMv6K and newer. It behaves as a77-nop on single threaded platforms anyway, so use nop instead on unsupported88-architectures.99-1010-Differential Revision: https://reviews.llvm.org/D1396001111----1212- compiler-rt/lib/scudo/standalone/common.h | 5 +++++1313- 1 file changed, 5 insertions(+)1414-1515-diff --git a/lib/scudo/standalone/common.h b/lib/scudo/standalone/common.h1616-index bc3dfec6dbba..862cda1d4bc4 1006441717---- a/lib/scudo/standalone/common.h1818-+++ b/lib/scudo/standalone/common.h1919-@@ -109,7 +109,12 @@ inline void yieldProcessor(u8 Count) {2020- #elif defined(__aarch64__) || defined(__arm__)2121- __asm__ __volatile__("" ::: "memory");2222- for (u8 I = 0; I < Count; I++)2323-+#if __ARM_ARCH >= 6 && !defined(__ARM_ARCH_6__)2424-+ // yield is supported on ARMv6K and newer2525- __asm__ __volatile__("yield");2626-+#else2727-+ __asm__ __volatile__("nop");2828-+#endif2929- #endif3030- __asm__ __volatile__("" ::: "memory");3131- }3232--- 3333-2.38.13434-
···11-From 5017de8ba4b1fe985169cf54590e858a9019a91f Mon Sep 17 00:00:00 200122-From: Khem Raj <raj.khem@gmail.com>33-Date: Fri, 11 Mar 2022 16:25:49 -080044-Subject: [PATCH] [builtins] Do not force thumb mode directive in55- arm/sync-ops.h66-77-.thumb_func was not switching mode until [1]88-so it did not show up but now that .thumb_func (without argument) is99-switching mode, its causing build failures on armv6 ( rpi0 ) even when1010-build is explicitly asking for this file to be built with -marm (ARM1111-mode), therefore use DEFINE_COMPILERRT_FUNCTION macro to add function1212-header which considers arch and mode from compiler cmdline to decide if1313-the function is built using thumb mode or arm mode.1414-1515-[1] https://reviews.llvm.org/D1019751616-1717-Note that it also needs https://reviews.llvm.org/D992821818-1919-Reviewed By: peter.smith, MaskRay2020-2121-Differential Revision: https://reviews.llvm.org/D1041832222----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.h2727-index 7a26170741ad2..d914f9d3a1093 1006442828---- a/lib/builtins/arm/sync-ops.h2929-+++ b/lib/builtins/arm/sync-ops.h3030-@@ -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-
···3131 # broken for Ampere eMAG 8180 (c2.large.arm on Packet) #562453232 # broken for the armv7l builder3333 && !stdenv.hostPlatform.isAarch,3434- enablePolly ? lib.versionAtLeast release_version "14",3434+ enablePolly ? true,3535 enableTerminfo ? true,3636 devExtraCmakeFlags ? [ ],3737 getVersionFile,···8383 pname = "llvm";8484 inherit version;85858686- # Used when creating a version-suffixed symlink of libLLVM.dylib8686+ # TODO: Remove on `staging`.8787 shortVersion = lib.concatStringsSep "." (lib.take 1 (lib.splitString "." release_version));88888989 src =···9292 ''9393 mkdir -p "$out"9494 cp -r ${monorepoSrc}/llvm "$out"9595- ''9696- + lib.optionalString (lib.versionAtLeast release_version "14") ''9795 cp -r ${monorepoSrc}/cmake "$out"9896 cp -r ${monorepoSrc}/third-party "$out"9997 ''···121123 ];122124123125 patches =124124- lib.optional (lib.versionOlder release_version "14")125125- # When cross-compiling we configure llvm-config-native with an approximation126126- # of the flags used for the normal LLVM build. To avoid the need for building127127- # a native libLLVM.so (which would fail) we force llvm-config to be linked128128- # statically against the necessary LLVM components always.129129- ./llvm-config-link-static.patch130130- ++ lib.optionals (lib.versions.major release_version == "12") [131131- # Fix llvm being miscompiled by some gccs. See https://github.com/llvm/llvm-project/issues/49955132132- (getVersionFile "llvm/fix-llvm-issue-49955.patch")133133-134134- # On older CPUs (e.g. Hydra/wendy) we'd be getting an error in this test.135135- (fetchpatch {136136- name = "uops-CMOV16rm-noreg.diff";137137- url = "https://github.com/llvm/llvm-project/commit/9e9f991ac033.diff";138138- sha256 = "sha256:12s8vr6ibri8b48h2z38f3afhwam10arfiqfy4yg37bmc054p5hi";139139- stripLen = 1;140140- })141141- ]142126 # Support custom installation dirs143127 # Originally based off https://reviews.llvm.org/D99484144128 # Latest state: https://github.com/llvm/llvm-project/pull/125376145145- ++ [ (getVersionFile "llvm/gnu-install-dirs.patch") ]146146- ++ lib.optionals (lib.versionAtLeast release_version "15") [129129+ [ (getVersionFile "llvm/gnu-install-dirs.patch") ]130130+ ++ [147131 # Running the tests involves invoking binaries (like `opt`) that depend on148132 # the LLVM dylibs and reference them by absolute install path (i.e. their149133 # nix store path).···168188 (getVersionFile "llvm/lit-shell-script-runner-set-dyld-library-path.patch")169189 ]170190 ++171171- lib.optional (lib.versions.major release_version == "13")172172- # Fix random compiler crashes: https://bugs.llvm.org/show_bug.cgi?id=50611173173- (174174- fetchpatch {175175- url = "https://raw.githubusercontent.com/archlinux/svntogit-packages/4764a4f8c920912a2bfd8b0eea57273acfe0d8a8/trunk/no-strict-aliasing-DwarfCompileUnit.patch";176176- sha256 = "18l6mrvm2vmwm77ckcnbjvh6ybvn72rhrb799d4qzwac4x2ifl7g";177177- stripLen = 1;178178- }179179- )180180- ++181181- lib.optional (lib.versionAtLeast release_version "12" && lib.versionOlder release_version "19")191191+ lib.optional (lib.versionOlder release_version "19")182192 # Add missing include headers to build against gcc-15:183193 # https://github.com/llvm/llvm-project/pull/101761184194 (···176206 url = "https://github.com/llvm/llvm-project/commit/7e44305041d96b064c197216b931ae3917a34ac1.patch";177207 hash = "sha256-1htuzsaPHbYgravGc1vrR8sqpQ/NSQ8PUZeAU8ucCFk=";178208 stripLen = 1;179179- }180180- )181181- ++ lib.optionals (lib.versionOlder release_version "16") [182182- # Fix musl build.183183- (fetchpatch {184184- url = "https://github.com/llvm/llvm-project/commit/5cd554303ead0f8891eee3cd6d25cb07f5a7bf67.patch";185185- relative = "llvm";186186- hash = "sha256-XPbvNJ45SzjMGlNUgt/IgEvM2dHQpDOe6woUJY+nUYA=";187187- })188188- # Fix for Python 3.13189189- (getVersionFile "llvm/no-pipes.patch")190190- ]191191- ++ lib.optionals (lib.versionOlder release_version "14") [192192- # Backport gcc-13 fixes with missing includes.193193- (fetchpatch {194194- name = "signals-gcc-13.patch";195195- url = "https://github.com/llvm/llvm-project/commit/ff1681ddb303223973653f7f5f3f3435b48a1983.patch";196196- hash = "sha256-CXwYxQezTq5vdmc8Yn88BUAEly6YZ5VEIA6X3y5NNOs=";197197- stripLen = 1;198198- })199199- (fetchpatch {200200- name = "base64-gcc-13.patch";201201- url = "https://github.com/llvm/llvm-project/commit/5e9be93566f39ee6cecd579401e453eccfbe81e5.patch";202202- hash = "sha256-PAwrVrvffPd7tphpwCkYiz+67szPRzRB2TXBvKfzQ7U=";203203- stripLen = 1;204204- })205205- ]206206- ++207207- lib.optionals208208- (209209- (lib.versionAtLeast (lib.versions.major release_version) "14")210210- && (lib.versionOlder (lib.versions.major release_version) "17")211211- )212212- [213213- # fix RuntimeDyld usage on aarch64-linux (e.g. python312Packages.numba tests)214214- # See also: https://github.com/numba/numba/issues/9109215215- (fetchpatch {216216- url = "https://github.com/llvm/llvm-project/commit/2e1b838a889f9793d4bcd5dbfe10db9796b77143.patch";217217- relative = "llvm";218218- hash = "sha256-Ot45P/iwaR4hkcM3xtLwfryQNgHI6pv6ADjv98tgdZA=";219219- })220220- ]221221- ++222222- lib.optional (lib.versions.major release_version == "17")223223- # Fixes a crash with -fzero-call-used-regs=used-gpr224224- # See also https://github.com/llvm/llvm-project/issues/75168225225- (226226- fetchpatch {227227- name = "fix-fzero-call-used-regs.patch";228228- url = "https://github.com/llvm/llvm-project/commit/f800c1f3b207e7bcdc8b4c7192928d9a078242a0.patch";229229- stripLen = 1;230230- hash = "sha256-e8YKrMy2rGcSJGC6er2V66cOnAnI+u1/yImkvsRsmg8=";231209 }232210 )233211 ++ lib.optionals (lib.versions.major release_version == "18") [···195277 hash = "sha256-fqw5gTSEOGs3kAguR4tINFG7Xja1RAje+q67HJt2nGg=";196278 })197279 ]198198- ++199199- lib.optionals (lib.versionAtLeast release_version "17" && lib.versionOlder release_version "19")200200- [201201- # Fixes test-suite on glibc 2.40 (https://github.com/llvm/llvm-project/pull/100804)202202- (fetchpatch {203203- url = "https://github.com/llvm/llvm-project/commit/1e8df9e85a1ff213e5868bd822877695f27504ad.patch";204204- hash = "sha256-mvBlG2RxpZPFnPI7jvCMz+Fc8JuM15Ye3th1FVZMizE=";205205- stripLen = 1;206206- })207207- ]280280+ ++ lib.optionals (lib.versionOlder release_version "19") [281281+ # Fixes test-suite on glibc 2.40 (https://github.com/llvm/llvm-project/pull/100804)282282+ (fetchpatch {283283+ url = "https://github.com/llvm/llvm-project/commit/1e8df9e85a1ff213e5868bd822877695f27504ad.patch";284284+ hash = "sha256-mvBlG2RxpZPFnPI7jvCMz+Fc8JuM15Ye3th1FVZMizE=";285285+ stripLen = 1;286286+ })287287+ ]208288 ++ lib.optionals enablePolly [209289 # Just like the `gnu-install-dirs` patch, but for `polly`.210290 (getVersionFile "llvm/gnu-install-dirs-polly.patch")211291 ]212212- ++213213- lib.optional (lib.versionAtLeast release_version "15")214214- # Just like the `llvm-lit-cfg` patch, but for `polly`.215215- (getVersionFile "llvm/polly-lit-cfg-add-libs-to-dylib-path.patch")292292+ ++ [293293+ # Just like the `llvm-lit-cfg` patch, but for `polly`.294294+ (getVersionFile "llvm/polly-lit-cfg-add-libs-to-dylib-path.patch")295295+ ]216296 ++217297 lib.optional (lib.versions.major release_version == "20")218298 # Test failure on riscv64, fixed in llvm 21···229313 # this is needed until scripts are updated to not use /usr/bin/uname on FreeBSD native230314 updateAutotoolsGnuConfigScriptsHook231315 python316316+ ninja232317 ]233233- ++ (lib.optional (lib.versionAtLeast release_version "15") ninja)234318 ++ optionals enableManpages [235319 # Note: we intentionally use `python3Packages` instead of `python3.pkgs`;236320 # splicing does *not* work with the latter. (TODO: fix)237321 python3Packages.sphinx238238- ]239239- ++ optionals (lib.versionOlder version "18" && enableManpages) [240240- python3Packages.recommonmark241241- ]242242- ++ optionals (lib.versionAtLeast version "18" && enableManpages) [243322 python3Packages.myst-parser244323 ];245324···244333 ]245334 ++ optional enablePFM libpfm; # exegesis246335247247- propagatedBuildInputs =248248- (lib.optional (249249- lib.versionAtLeast release_version "14" || stdenv.buildPlatform == stdenv.hostPlatform250250- ) ncurses)251251- ++ [ zlib ];336336+ propagatedBuildInputs = [337337+ ncurses338338+ zlib339339+ ];340340+341341+ nativeCheckInputs = [342342+ which343343+ ]344344+ ++ lib.optional stdenv.hostPlatform.isDarwin sysctl;252345253346 postPatch =254347 optionalString stdenv.hostPlatform.isDarwin (···263348 +264349 # As of LLVM 15, marked as XFAIL on arm64 macOS but lit doesn't seem to pick265350 # this up: https://github.com/llvm/llvm-project/blob/c344d97a125b18f8fed0a64aace73c49a870e079/llvm/test/MC/ELF/cfi-version.ll#L7266266- (optionalString (lib.versionAtLeast release_version "15") (267267- ''268268- rm test/MC/ELF/cfi-version.ll351351+ ''352352+ rm test/MC/ELF/cfi-version.ll269353270270- ''271271- +272272- # This test tries to call `sw_vers` by absolute path (`/usr/bin/sw_vers`)273273- # and thus fails under the sandbox:274274- (275275- if lib.versionAtLeast release_version "16" then276276- ''277277- substituteInPlace unittests/TargetParser/Host.cpp \278278- --replace-fail '/usr/bin/sw_vers' "${(builtins.toString darwin.DarwinTools) + "/bin/sw_vers"}"279279- ''280280- else281281- ''282282- substituteInPlace unittests/Support/Host.cpp \283283- --replace-fail '/usr/bin/sw_vers' "${(builtins.toString darwin.DarwinTools) + "/bin/sw_vers"}"284284- ''285285- )286286- +287287- # This test tries to call the intrinsics `@llvm.roundeven.f32` and288288- # `@llvm.roundeven.f64` which seem to (incorrectly?) lower to `roundevenf`289289- # and `roundeven` on macOS and FreeBSD.290290- #291291- # However these functions are glibc specific so the test fails:292292- # - https://www.gnu.org/software/gnulib/manual/html_node/roundevenf.html293293- # - https://www.gnu.org/software/gnulib/manual/html_node/roundeven.html294294- #295295- # TODO(@rrbutani): this seems to run fine on `aarch64-darwin`, why does it296296- # pass there?297297- optionalString (lib.versionAtLeast release_version "16") ''298298- substituteInPlace test/ExecutionEngine/Interpreter/intrinsics.ll \299299- --replace-fail "%roundeven32 = call float @llvm.roundeven.f32(float 0.000000e+00)" "" \300300- --replace-fail "%roundeven64 = call double @llvm.roundeven.f64(double 0.000000e+00)" ""301301- ''302302- +303303- # fails when run in sandbox304304- optionalString (!stdenv.hostPlatform.isx86 && lib.versionAtLeast release_version "18") ''305305- substituteInPlace unittests/Support/VirtualFileSystemTest.cpp \306306- --replace-fail "PhysicalFileSystemWorkingDirFailure" "DISABLED_PhysicalFileSystemWorkingDirFailure"307307- ''308308- ))354354+ ''355355+ +356356+ # This test tries to call `sw_vers` by absolute path (`/usr/bin/sw_vers`)357357+ # and thus fails under the sandbox:358358+ ''359359+ substituteInPlace unittests/TargetParser/Host.cpp \360360+ --replace-fail '/usr/bin/sw_vers' "${(builtins.toString darwin.DarwinTools) + "/bin/sw_vers"}"361361+ ''362362+ +363363+ # This test tries to call the intrinsics `@llvm.roundeven.f32` and364364+ # `@llvm.roundeven.f64` which seem to (incorrectly?) lower to `roundevenf`365365+ # and `roundeven` on macOS and FreeBSD.366366+ #367367+ # However these functions are glibc specific so the test fails:368368+ # - https://www.gnu.org/software/gnulib/manual/html_node/roundevenf.html369369+ # - https://www.gnu.org/software/gnulib/manual/html_node/roundeven.html370370+ #371371+ # TODO(@rrbutani): this seems to run fine on `aarch64-darwin`, why does it372372+ # pass there?373373+ ''374374+ substituteInPlace test/ExecutionEngine/Interpreter/intrinsics.ll \375375+ --replace-fail "%roundeven32 = call float @llvm.roundeven.f32(float 0.000000e+00)" "" \376376+ --replace-fail "%roundeven64 = call double @llvm.roundeven.f64(double 0.000000e+00)" ""377377+ ''378378+ +379379+ # fails when run in sandbox380380+ optionalString (!stdenv.hostPlatform.isx86) ''381381+ substituteInPlace unittests/Support/VirtualFileSystemTest.cpp \382382+ --replace-fail "PhysicalFileSystemWorkingDirFailure" "DISABLED_PhysicalFileSystemWorkingDirFailure"383383+ ''309384 )310385 +311386 # dup of above patch with different conditions312312- optionalString387387+ optionalString (stdenv.hostPlatform.isDarwin && stdenv.hostPlatform.isx86) (388388+ # fails when run in sandbox313389 (314314- stdenv.hostPlatform.isDarwin && stdenv.hostPlatform.isx86 && lib.versionAtLeast release_version "15"315315- )316316- (317317- optionalString (lib.versionOlder release_version "16") ''318318- substituteInPlace test/ExecutionEngine/Interpreter/intrinsics.ll \319319- --replace-fail "%roundeven32 = call float @llvm.roundeven.f32(float 0.000000e+00)" "" \320320- --replace-fail "%roundeven64 = call double @llvm.roundeven.f64(double 0.000000e+00)" ""321321-390390+ ''391391+ substituteInPlace unittests/Support/VirtualFileSystemTest.cpp \392392+ --replace-fail "PhysicalFileSystemWorkingDirFailure" "DISABLED_PhysicalFileSystemWorkingDirFailure"322393 ''323394 +324324- # fails when run in sandbox325325- (326326- (optionalString (lib.versionAtLeast release_version "18") ''327327- substituteInPlace unittests/Support/VirtualFileSystemTest.cpp \328328- --replace-fail "PhysicalFileSystemWorkingDirFailure" "DISABLED_PhysicalFileSystemWorkingDirFailure"329329- '')330330- +331331- # This test fails on darwin x86_64 because `sw_vers` reports a different332332- # macOS version than what LLVM finds by reading333333- # `/System/Library/CoreServices/SystemVersion.plist` (which is passed into334334- # the sandbox on macOS).335335- #336336- # The `sw_vers` provided by nixpkgs reports the macOS version associated337337- # with the `CoreFoundation` framework with which it was built. Because338338- # nixpkgs pins the SDK for `aarch64-darwin` and `x86_64-darwin` what339339- # `sw_vers` reports is not guaranteed to match the macOS version of the host340340- # that's building this derivation.341341- #342342- # Astute readers will note that we only _patch_ this test on aarch64-darwin343343- # (to use the nixpkgs provided `sw_vers`) instead of disabling it outright.344344- # So why does this test pass on aarch64?345345- #346346- # Well, it seems that `sw_vers` on aarch64 actually links against the _host_347347- # CoreFoundation framework instead of the nixpkgs provided one.348348- #349349- # Not entirely sure what the right fix is here. I'm assuming aarch64350350- # `sw_vers` doesn't intentionally link against the host `CoreFoundation`351351- # (still digging into how this ends up happening, will follow up) but that352352- # aside I think the more pertinent question is: should we be patching LLVM's353353- # macOS version detection logic to use `sw_vers` instead of reading host354354- # paths? This *is* a way in which details about builder machines can creep355355- # into the artifacts that are produced, affecting reproducibility, but it's356356- # not clear to me when/where/for what this even gets used in LLVM.357357- #358358- # TODO(@rrbutani): fix/follow-up359359- (360360- if lib.versionAtLeast release_version "16" then361361- ''362362- substituteInPlace unittests/TargetParser/Host.cpp \363363- --replace-fail "getMacOSHostVersion" "DISABLED_getMacOSHostVersion"364364- ''365365- else366366- ''367367- substituteInPlace unittests/Support/Host.cpp \368368- --replace-fail "getMacOSHostVersion" "DISABLED_getMacOSHostVersion"369369- ''370370- )371371- +372372- # This test fails with a `dysmutil` crash; have not yet dug into what's373373- # going on here (TODO(@rrbutani)).374374- lib.optionalString (lib.versionOlder release_version "19") ''375375- rm test/tools/dsymutil/ARM/obfuscated.test376376- ''377377- )395395+ # This test fails on darwin x86_64 because `sw_vers` reports a different396396+ # macOS version than what LLVM finds by reading397397+ # `/System/Library/CoreServices/SystemVersion.plist` (which is passed into398398+ # the sandbox on macOS).399399+ #400400+ # The `sw_vers` provided by nixpkgs reports the macOS version associated401401+ # with the `CoreFoundation` framework with which it was built. Because402402+ # nixpkgs pins the SDK for `aarch64-darwin` and `x86_64-darwin` what403403+ # `sw_vers` reports is not guaranteed to match the macOS version of the host404404+ # that's building this derivation.405405+ #406406+ # Astute readers will note that we only _patch_ this test on aarch64-darwin407407+ # (to use the nixpkgs provided `sw_vers`) instead of disabling it outright.408408+ # So why does this test pass on aarch64?409409+ #410410+ # Well, it seems that `sw_vers` on aarch64 actually links against the _host_411411+ # CoreFoundation framework instead of the nixpkgs provided one.412412+ #413413+ # Not entirely sure what the right fix is here. I'm assuming aarch64414414+ # `sw_vers` doesn't intentionally link against the host `CoreFoundation`415415+ # (still digging into how this ends up happening, will follow up) but that416416+ # aside I think the more pertinent question is: should we be patching LLVM's417417+ # macOS version detection logic to use `sw_vers` instead of reading host418418+ # paths? This *is* a way in which details about builder machines can creep419419+ # into the artifacts that are produced, affecting reproducibility, but it's420420+ # not clear to me when/where/for what this even gets used in LLVM.421421+ #422422+ # TODO(@rrbutani): fix/follow-up423423+ ''424424+ substituteInPlace unittests/TargetParser/Host.cpp \425425+ --replace-fail "getMacOSHostVersion" "DISABLED_getMacOSHostVersion"426426+ ''427427+ +428428+ # This test fails with a `dysmutil` crash; have not yet dug into what's429429+ # going on here (TODO(@rrbutani)).430430+ lib.optionalString (lib.versionOlder release_version "19") ''431431+ rm test/tools/dsymutil/ARM/obfuscated.test432432+ ''378433 )434434+ )379435 +380436 # FileSystem permissions tests fail with various special bits381437 ''···356470 substituteInPlace unittests/IR/CMakeLists.txt \357471 --replace-fail "PassBuilderCallbacksTest.cpp" ""358472 rm unittests/IR/PassBuilderCallbacksTest.cpp473473+ rm test/tools/llvm-objcopy/ELF/mirror-permissions-unix.test359474 ''360360- + lib.optionalString (lib.versionAtLeast release_version "13") ''361361- rm test/tools/llvm-objcopy/ELF/mirror-permissions-unix.test362362- ''363363- + lib.optionalString (lib.versionOlder release_version "13") ''364364- # TODO: Fix failing tests:365365- rm test/DebugInfo/X86/vla-multi.ll366366- ''367475 +368476 # Fails in the presence of anti-virus software or other intrusion-detection software that369477 # modifies the atime when run. See #284056.370370- lib.optionalString (lib.versionAtLeast release_version "16") (371371- ''372372- rm test/tools/llvm-objcopy/ELF/strip-preserve-atime.test373373- ''374374- + lib.optionalString (lib.versionOlder release_version "17") ''375375-376376- ''377377- )378378- +379379- # timing-based tests are trouble380380- lib.optionalString381381- (lib.versionAtLeast release_version "15" && lib.versionOlder release_version "17")382382- ''383383- rm utils/lit/tests/googletest-timeout.py384384- ''478478+ ''479479+ rm test/tools/llvm-objcopy/ELF/strip-preserve-atime.test480480+ ''385481 +386482 # valgrind unhappy with musl or glibc, but fails w/musl only387483 optionalString stdenv.hostPlatform.isMusl ''···408540 ''409541 + ''410542 patchShebangs test/BugPoint/compile-custom.ll.py411411- ''412412- +413413- # Tweak tests to ignore namespace part of type to support414414- # gcc-12: https://gcc.gnu.org/PR103598.415415- # The change below mangles strings like:416416- # CHECK-NEXT: Starting llvm::Function pass manager run.417417- # to:418418- # CHECK-NEXT: Starting {{.*}}Function pass manager run.419419- (lib.optionalString (lib.versionOlder release_version "13") (420420- ''421421- for f in \422422- test/Other/new-pass-manager.ll \423423- test/Other/new-pm-O0-defaults.ll \424424- test/Other/new-pm-defaults.ll \425425- test/Other/new-pm-lto-defaults.ll \426426- test/Other/new-pm-thinlto-defaults.ll \427427- test/Other/pass-pipeline-parsing.ll \428428- test/Transforms/Inline/cgscc-incremental-invalidate.ll \429429- test/Transforms/Inline/clear-analyses.ll \430430- test/Transforms/LoopUnroll/unroll-loop-invalidation.ll \431431- test/Transforms/SCCP/ipsccp-preserve-analysis.ll \432432- test/Transforms/SCCP/preserve-analysis.ll \433433- test/Transforms/SROA/dead-inst.ll \434434- test/tools/gold/X86/new-pm.ll \435435- ; do436436- echo "PATCH: $f"437437- substituteInPlace $f \438438- --replace-quiet 'Starting llvm::' 'Starting {{.*}}' \439439- --replace-quiet 'Finished llvm::' 'Finished {{.*}}'440440- done441441- ''442442- +443443- # gcc-13 fix444444- ''445445- sed -i '/#include <string>/i#include <cstdint>' \446446- include/llvm/DebugInfo/Symbolize/DIPrinter.h447447- ''448448- ));543543+ '';449544450545 # Workaround for configure flags that need to have spaces451546 preConfigure = ''···416585 -DLLVM_LIT_ARGS="--verbose -j''${NIX_BUILD_CORES}"417586 )418587 '';588588+589589+ # Defensive check: some paths (that we make symlinks to) depend on the release590590+ # version, for example:591591+ # - https://github.com/llvm/llvm-project/blob/406bde9a15136254f2b10d9ef3a42033b3cb1b16/clang/lib/Headers/CMakeLists.txt#L185592592+ #593593+ # So we want to sure that the version in the source matches the release594594+ # version we were given.595595+ #596596+ # We do this check here, in the LLVM build, because it happens early.597597+ postConfigure =598598+ let599599+ v = lib.versions;600600+ major = v.major release_version;601601+ minor = v.minor release_version;602602+ patch = v.patch release_version;603603+ in604604+ ''605605+ # $1: part, $2: expected606606+ check_version() {607607+ part="''${1^^}"608608+ part="$(cat include/llvm/Config/llvm-config.h | grep "#define LLVM_VERSION_''${part} " | cut -d' ' -f3)"609609+610610+ if [[ "$part" != "$2" ]]; then611611+ echo >&2 \612612+ "mismatch in the $1 version! we have version ${release_version}" \613613+ "and expected the $1 version to be '$2'; the source has '$part' instead"614614+ exit 3615615+ fi616616+ }617617+618618+ check_version major ${major}619619+ check_version minor ${minor}620620+ check_version patch ${patch}621621+ '';419622420623 # E.g. Mesa uses the build-id as a cache key (see #93946):421624 LDFLAGS = optionalString (···467602 #468603 # Some flags don't need to be repassed because LLVM already does so (like469604 # CMAKE_BUILD_TYPE), others are irrelevant to the result.470470- flagsForLlvmConfig =471471- (472472- if lib.versionOlder release_version "15" then473473- [474474- (lib.cmakeFeature "LLVM_INSTALL_CMAKE_DIR" "${placeholder "dev"}/lib/cmake/llvm/")475475- ]476476- else477477- [478478- (lib.cmakeFeature "LLVM_INSTALL_PACKAGE_DIR" "${placeholder "dev"}/lib/cmake/llvm")479479- ]480480- )481481- ++ [482482- (lib.cmakeBool "LLVM_ENABLE_RTTI" true)483483- (lib.cmakeBool "LLVM_LINK_LLVM_DYLIB" enableSharedLibraries)484484- (lib.cmakeFeature "LLVM_TABLEGEN" "${buildLlvmTools.tblgen}/bin/llvm-tblgen")485485- ];605605+ flagsForLlvmConfig = [606606+ (lib.cmakeFeature "LLVM_INSTALL_PACKAGE_DIR" "${placeholder "dev"}/lib/cmake/llvm")607607+ (lib.cmakeBool "LLVM_ENABLE_RTTI" true)608608+ (lib.cmakeBool "LLVM_LINK_LLVM_DYLIB" enableSharedLibraries)609609+ (lib.cmakeFeature "LLVM_TABLEGEN" "${buildLlvmTools.tblgen}/bin/llvm-tblgen")610610+ ];486611 in487612 flagsForLlvmConfig488613 ++ [···562707 moveToOutput "bin/llvm-config*" "$dev"563708 substituteInPlace "$dev/lib/cmake/llvm/LLVMExports-${lib.toLower finalAttrs.finalPackage.cmakeBuildType}.cmake" \564709 --replace-fail "$out/bin/llvm-config" "$dev/bin/llvm-config"710710+ substituteInPlace "$dev/lib/cmake/llvm/LLVMConfig.cmake" \711711+ --replace-fail 'set(LLVM_BINARY_DIR "''${LLVM_INSTALL_PREFIX}")' 'set(LLVM_BINARY_DIR "'"$lib"'")'565712 ''566566- + (567567- if lib.versionOlder release_version "15" then568568- ''569569- substituteInPlace "$dev/lib/cmake/llvm/LLVMConfig.cmake" \570570- --replace-fail 'set(LLVM_BINARY_DIR "''${LLVM_INSTALL_PREFIX}")' 'set(LLVM_BINARY_DIR "''${LLVM_INSTALL_PREFIX}'"$lib"'")'571571- ''572572- else573573- ''574574- substituteInPlace "$dev/lib/cmake/llvm/LLVMConfig.cmake" \575575- --replace-fail 'set(LLVM_BINARY_DIR "''${LLVM_INSTALL_PREFIX}")' 'set(LLVM_BINARY_DIR "'"$lib"'")'576576- ''577577- )578713 + optionalString (stdenv.hostPlatform.isDarwin && enableSharedLibraries) ''579579- ln -s $lib/lib/libLLVM.dylib $lib/lib/libLLVM-${580580- if lib.versionOlder release_version "18" then "$shortVersion" else release_version581581- }.dylib714714+ ln -s $lib/lib/libLLVM.dylib $lib/lib/libLLVM-${release_version}.dylib582715 ''583716 + optionalString (stdenv.buildPlatform != stdenv.hostPlatform) (584717 if stdenv.buildPlatform.canExecute stdenv.hostPlatform then···582739 doCheck =583740 !isDarwinBootstrap584741 && !stdenv.hostPlatform.isAarch32585585- && (if lib.versionOlder release_version "15" then stdenv.hostPlatform.isLinux else true)586742 && (587743 !stdenv.hostPlatform.isx86_32 # TODO: why588744 )···614772 '';615773 };616774 }617617- // lib.optionalAttrs enableManpages (618618- {619619- pname = "llvm-manpages";775775+ // lib.optionalAttrs enableManpages {776776+ pname = "llvm-manpages";620777621621- propagatedBuildInputs = [ ];778778+ propagatedBuildInputs = [ ];622779623623- postPatch = null;624624- postInstall = null;780780+ ninjaFlags = [ "docs-llvm-man" ];781781+ installTargets = [ "install-docs-llvm-man" ];625782626626- outputs = [ "out" ];783783+ doCheck = false;627784628628- doCheck = false;785785+ postPatch = null;786786+ postInstall = null;629787630630- meta = llvm_meta // {631631- description = "man pages for LLVM ${version}";632632- };633633- }634634- // (635635- if lib.versionOlder release_version "15" then636636- {637637- buildPhase = ''638638- make docs-llvm-man639639- '';788788+ outputs = [ "out" ];640789641641- installPhase = ''642642- make -C docs install643643- '';644644- }645645- else646646- {647647- ninjaFlags = [ "docs-llvm-man" ];648648- installTargets = [ "install-docs-llvm-man" ];649649-650650- postPatch = null;651651- postInstall = null;652652- }653653- )654654- )655655- // lib.optionalAttrs (lib.versionAtLeast release_version "13") {656656- nativeCheckInputs = [657657- which658658- ]659659- ++ lib.optional (stdenv.hostPlatform.isDarwin && lib.versionAtLeast release_version "15") sysctl;660660- }661661- // lib.optionalAttrs (lib.versionOlder release_version "15") {662662- # hacky fix: created binaries need to be run before installation663663- preBuild = ''664664- mkdir -p $out/665665- ln -sv $PWD/lib $out666666- '';667667-668668- postBuild = ''669669- rm -fR $out670670- '';671671-672672- preCheck = ''673673- export LD_LIBRARY_PATH=$LD_LIBRARY_PATH''${LD_LIBRARY_PATH:+:}$PWD/lib674674- '';675675- }676676- // lib.optionalAttrs (lib.versionAtLeast release_version "15") {677677- # Defensive check: some paths (that we make symlinks to) depend on the release678678- # version, for example:679679- # - https://github.com/llvm/llvm-project/blob/406bde9a15136254f2b10d9ef3a42033b3cb1b16/clang/lib/Headers/CMakeLists.txt#L185680680- #681681- # So we want to sure that the version in the source matches the release682682- # version we were given.683683- #684684- # We do this check here, in the LLVM build, because it happens early.685685- postConfigure =686686- let687687- v = lib.versions;688688- major = v.major release_version;689689- minor = v.minor release_version;690690- patch = v.patch release_version;691691- in692692- ''693693- # $1: part, $2: expected694694- check_version() {695695- part="''${1^^}"696696- part="$(cat include/llvm/Config/llvm-config.h | grep "#define LLVM_VERSION_''${part} " | cut -d' ' -f3)"697697-698698- if [[ "$part" != "$2" ]]; then699699- echo >&2 \700700- "mismatch in the $1 version! we have version ${release_version}" \701701- "and expected the $1 version to be '$2'; the source has '$part' instead"702702- exit 3703703- fi704704- }705705-706706- check_version major ${major}707707- check_version minor ${minor}708708- check_version patch ${patch}709709- '';790790+ meta = llvm_meta // {791791+ description = "man pages for LLVM ${version}";792792+ };710793 }711794)
···20202121readonly ATTRSET="llvmPackages_$VERSION_MAJOR"22222323-if [ "$VERSION_MAJOR" -ge "14" ]; then2424- readonly SOURCES=(2525- "llvm.monorepoSrc"2626- )2727-elif [ "$VERSION_MAJOR" -eq "13" ]; then2828- readonly SOURCES=(2929- "llvm.src"3030- )3131-else3232- readonly SOURCES=(3333- "clang-unwrapped.src"3434- "compiler-rt.src"3535- "clang-unwrapped.clang-tools-extra_src"3636- "libcxx.src"3737- "libcxxabi.src"3838- "libunwind.src"3939- "lld.src"4040- "lldb.src"4141- "llvm.src"4242- "llvm.polly_src"4343- "openmp.src"4444- )4545-fi4646-4747-for SOURCE in "${SOURCES[@]}"; do4848- echo "Updating the hash of $SOURCE:"4949- declare ATTR="$ATTRSET.$SOURCE"5050- declare OLD_HASH="$(nix --extra-experimental-features nix-command eval -f . $ATTR.outputHash)"5151- declare NEW_HASH="\"$(nix-prefetch-url -A $ATTR)\""5252- find "$DIR" -type f -exec sed -i "s/$OLD_HASH/$NEW_HASH/" {} +5353-done2323+echo "Updating the hash of llvm.monorepoSrc:"2424+declare ATTR="$ATTRSET.llvm.monorepoSrc"2525+declare OLD_HASH="$(nix --extra-experimental-features nix-command eval -f . $ATTR.outputHash)"2626+declare NEW_HASH="\"$(nix-prefetch-url -A $ATTR)\""2727+find "$DIR" -type f -exec sed -i "s/$OLD_HASH/$NEW_HASH/" {} +54285529echo OK
+22-3
pkgs/development/compilers/mrustc/bootstrap.nix
···44 fetchurl,55 mrustc,66 mrustc-minicargo,77- llvm_12,77+ #llvm_12,88 libffi,99 cmake,1010 perl,···6464 ];6565 buildInputs = [6666 # for rustc6767- llvm_126767+ #llvm_126868 libffi6969 zlib7070 libxml2···7676 # Use shared mrustc/minicargo/llvm instead of rebuilding them7777 "MRUSTC=${mrustc}/bin/mrustc"7878 #"MINICARGO=${mrustc-minicargo}/bin/minicargo" # FIXME: we need to rebuild minicargo locally so --manifest-overrides is applied7979- "LLVM_CONFIG=${llvm_12.dev}/bin/llvm-config"7979+ #"LLVM_CONFIG=${llvm_12.dev}/bin/llvm-config"8080 "RUSTC_TARGET=${stdenv.targetPlatform.rust.rustcTarget}"8181 ];8282···153153 asl20154154 ];155155 platforms = [ "x86_64-linux" ];156156+ # rustc 1.54 only supports LLVM 12, which was removed from Nixpkgs.157157+ # mrustc can bootstrap up to rustc 1.74, which supported LLVM 17,158158+ # which has also been removed.159159+ #160160+ # 1.74 also shipped with the Cranelift backend, so perhaps that161161+ # could be used instead? Alternatively, it may be possible to162162+ # backport the upstream patches to support LLVM 18 to 1.74.163163+ # Assuming LLVM 18 is still in Nixpkgs by the time you read this164164+ # comment, anyway. But if not, then maybe mrustc has been updated165165+ # to support newer rustc versions? Hope springs eternal.166166+ #167167+ # (Note that you still have to “draw the rest of the owl” to168168+ # bootstrap the chain of rustc versions between this bootstrap169169+ # and the version currently used in Nixpkgs, anyway, so this was170170+ # already not useful for bootstrapping a Rust compiler for use with171171+ # Nixpkgs without a lot of additional work. See Guix’s Rust172172+ # bootstrap chain, or the non‐Rust minimal bootstrap in Guix and173173+ # Nixpkgs, for inspiration.)174174+ broken = true;156175 };157176}
···182182 + postBuild;183183 preferLocalBuild = true;184184 passthru = {185185- inherit (ghc) version meta targetPrefix;185185+ inherit (ghc) version targetPrefix;186186187187 hoogle = hoogleWithPackages';188188···202202203203 Also note that withLLVM has been renamed to useLLVM for consistency with204204 the GHC Nix expressions.'';205205+ };206206+ pos = __curPos;207207+ meta = ghc.meta // {208208+ # To be fixed by <https://github.com/NixOS/nixpkgs/pull/440774>.209209+ broken = useLLVM;205210 };206211 }
+6-6
pkgs/development/libraries/quarto/default.nix
···9696 '';9797 };98989999- meta = with lib; {9999+ meta = {100100 description = "Open-source scientific and technical publishing system built on Pandoc";101101 mainProgram = "quarto";102102 longDescription = ''···104104 Quarto documents are authored using markdown, an easy to write plain text format.105105 '';106106 homepage = "https://quarto.org/";107107- changelog = "https://github.com/quarto-dev/quarto-cli/releases/tag/v${version}";108108- license = licenses.gpl2Plus;109109- maintainers = with maintainers; [107107+ changelog = "https://github.com/quarto-dev/quarto-cli/releases/tag/v${final.version}";108108+ license = lib.licenses.gpl2Plus;109109+ maintainers = with lib.maintainers; [110110 minijackson111111 mrtarantoga112112 ];113113- platforms = platforms.all;114114- sourceProvenance = with sourceTypes; [113113+ platforms = lib.platforms.all;114114+ sourceProvenance = with lib.sourceTypes; [115115 binaryNativeCode116116 binaryBytecode117117 ];
···47474848 passthru.entrypoint = "custom-sidebar-yaml.js";49495050- meta = with lib; {5050+ meta = {5151 description = "Custom plugin that allows you to personalise the Home Assistant's sidebar per user or device basis";5252 homepage = "https://elchininet.github.io/custom-sidebar";5353 downloadPage = "https://github.com/elchininet/custom-sidebar";5454- changelog = "https://github.com/elchininet/custom-sidebar/releases/tag/v${version}";5454+ changelog = "https://github.com/elchininet/custom-sidebar/releases/tag/v${finalAttrs.version}";5555 license = lib.licenses.asl20;5656- maintainers = with maintainers; [ kranzes ];5656+ maintainers = with lib.maintainers; [ kranzes ];5757 };5858})
+2-7
pkgs/servers/sql/postgresql/ext/pgroonga.nix
···11111212postgresqlBuildExtension (finalAttrs: {1313 pname = "pgroonga";1414- version = "4.0.1";1414+ version = "4.0.2";15151616 src = fetchFromGitHub {1717 owner = "pgroonga";1818 repo = "pgroonga";1919 tag = "${finalAttrs.version}";2020- hash = "sha256-a5nNtlUiFBuuqWAjIN0gU/FaoV3VpJh+/fab8R/77dw=";2020+ hash = "sha256-hZy2qDI9bNFvcm7SbCMZxixPEXgPmjmeEOM4VoXKttE=";2121 };22222323 nativeBuildInputs = [ pkg-config ];···3434 ];35353636 meta = {3737- # PostgreSQL 18 support issue upstream: https://github.com/pgroonga/pgroonga/issues/7083838- # Check after next package update.3939- broken = lib.warnIf (4040- finalAttrs.version != "4.0.1"4141- ) "Is postgresql18Packages.pgroonga still broken?" (lib.versionAtLeast postgresql.version "18");4237 description = "PostgreSQL extension to use Groonga as the index";4338 longDescription = ''4439 PGroonga is a PostgreSQL extension to use Groonga as the index.
+6
pkgs/test/default.nix
···1616 (filter (n: n != "llvmPackages_9"))1717 (filter (n: n != "llvmPackages_10"))1818 (filter (n: n != "llvmPackages_11"))1919+ (filter (n: n != "llvmPackages_12"))2020+ (filter (n: n != "llvmPackages_13"))2121+ (filter (n: n != "llvmPackages_14"))2222+ (filter (n: n != "llvmPackages_15"))2323+ (filter (n: n != "llvmPackages_16"))2424+ (filter (n: n != "llvmPackages_17"))1925 ];2026 tests = lib.genAttrs pkgSets (2127 name:
+64-18
pkgs/top-level/aliases.nix
···516516 beatsabermodmanager = throw "'beatsabermodmanager' has been removed due to lack of upstream maintainenance. Consider using 'bs-manager' instead"; # Added 2025-03-18517517 betterbird = throw "betterbird has been removed as there were insufficient maintainer resources to keep up with security updates"; # Added 2024-10-25518518 betterbird-unwrapped = throw "betterbird has been removed as there were insufficient maintainer resources to keep up with security updates"; # Added 2024-10-25519519+ bfc = throw "bfc has been removed, as it does not build with supported LLVM versions"; # Added 2025-08-10519520 bibata-extra-cursors = throw "bibata-cursors has been removed as it was broken"; # Added 2024-07-15520521 bitbucket-server-cli = throw "bitbucket-server-cli has been removed due to lack of maintenance upstream."; # Added 2025-05-27521522 bitcoin-abc = throw "bitcoin-abc has been removed due to a lack of maintanance"; # Added 2025-06-17···642641 colloid-kde = throw "'colloid-kde' has been removed, as it is only compatible with Plasma 5, which is EOL"; # Added 2025-08-20643642 colorpicker = throw "'colorpicker' has been removed due to lack of maintenance upstream. Consider using 'xcolor', 'gcolor3', 'eyedropper' or 'gpick' instead"; # Added 2024-10-19644643 colorstorm = throw "'colorstorm' has been removed because it was unmaintained in nixpkgs and upstream was rewritten."; # Added 2025-06-15644644+ cone = throw "cone has been removed, as it does not build with supported LLVM versions"; # Added 2025-08-10645645 connman-ncurses = throw "'connman-ncurses' has been removed due to lack of maintenance upstream."; # Added 2025-05-27646646 copilot-language-server-fhs = lib.warnOnInstantiate "The package set `copilot-language-server-fhs` has been renamed to `copilot-language-server`." copilot-language-server; # Added 2025-09-07647647 copper = throw "'copper' has been removed, as it was broken since 22.11"; # Added 2025-08-22···701699 cyber = throw "cyber has been removed, as it does not build with supported Zig versions"; # Added 2025-08-09702700703701 # these are for convenience, not for backward compat., and shouldn't expire until the package is deprecated.704704- clang9Stdenv = throw "clang9Stdenv has been removed from nixpkgs"; # Added 2024-04-08705705- clang12Stdenv = lowPrio llvmPackages_12.stdenv; # preserve, reason: see above706706- clang13Stdenv = lowPrio llvmPackages_13.stdenv; # preserve, reason: see above707707- clang14Stdenv = lowPrio llvmPackages_14.stdenv; # preserve, reason: see above708708- clang15Stdenv = lowPrio llvmPackages_15.stdenv; # preserve, reason: see above709709- clang16Stdenv = lowPrio llvmPackages_16.stdenv; # preserve, reason: see above710710- clang17Stdenv = lowPrio llvmPackages_17.stdenv; # preserve, reason: see above711702 clang18Stdenv = lowPrio llvmPackages_18.stdenv; # preserve, reason: see above712703 clang19Stdenv = lowPrio llvmPackages_19.stdenv; # preserve, reason: see above713704714714- clang-tools_9 = throw "clang-tools_9 has been removed from nixpkgs"; # Added 2024-04-08715715- clang_9 = throw "clang_9 has been removed from nixpkgs"; # Added 2024-04-08716716-717717- clang-tools_12 = llvmPackages_12.clang-tools; # Added 2024-04-22718718- clang-tools_13 = llvmPackages_13.clang-tools; # Added 2024-04-22719719- clang-tools_14 = llvmPackages_14.clang-tools; # Added 2024-04-22720720- clang-tools_15 = llvmPackages_15.clang-tools; # Added 2024-04-22721721- clang-tools_16 = llvmPackages_16.clang-tools; # Added 2024-04-22722722- clang-tools_17 = llvmPackages_17.clang-tools; # Added 2024-04-22723705 clang-tools_18 = llvmPackages_18.clang-tools; # Added 2024-04-22724706 clang-tools_19 = llvmPackages_19.clang-tools; # Added 2024-08-21725707···712726713727 ### D ###714728729729+ dale = throw "dale has been removed, as it does not build with supported LLVM versions"; # Added 2025-08-10715730 dap = throw "'dap' has been removed because it doesn't compile and has been unmaintained since 2014"; # Added 2025-05-10716731 daq = throw "'daq' has been removed as it is unmaintained and broken. Snort2 has also been removed, which depended on this"; # Added 2025-05-21717732 darling = throw "'darling' has been removed due to vendoring Python2"; # Added 2025-05-10···11481161 hiddify-app = throw "hiddify-app has been removed, since it is unmaintained"; # added 2025-08-2011491162 hll2390dw-cups = throw "The hll2390dw-cups package was dropped since it was unmaintained."; # Added 2024-06-2111501163 hoarder = throw "'hoarder' has been renamed to 'karakeep'"; # Added 2025-04-2111641164+ hobbes = throw "hobbes has been removed, as it does not build with supported LLVM versions"; # Added 2025-08-2011511165 hmetis = throw "'hmetis' has been removed as it was unmaintained and the upstream was unavailable"; # Added 2025-05-0511521166 hop-cli = throw "hop-cli has been removed as the service has been shut-down"; # Added 2024-08-1311531167 hpp-fcl = coal; # Added 2024-11-15···11701182 ib-controller = throw "ib-controller has been removed from nixpkgs as it was broken"; # Added 2024-07-1511711183 ibm-sw-tpm2 = throw "ibm-sw-tpm2 has been removed, as it was broken"; # Added 2025-08-2511721184 icuReal = throw "icuReal has been removed from nixpkgs as a mistake"; # Added 2025-02-1811851185+ ikos = throw "ikos has been removed, as it does not build with supported LLVM versions"; # Added 2025-08-1011731186 imagemagick7Big = throw "'imagemagick7Big' has been renamed to/replaced by 'imagemagickBig'"; # Converted to throw 2024-10-1711741187 imagemagick7 = throw "'imagemagick7' has been renamed to/replaced by 'imagemagick'"; # Converted to throw 2024-10-1711751188 imagemagick7_light = throw "'imagemagick7_light' has been renamed to/replaced by 'imagemagick_light'"; # Converted to throw 2024-10-17···1472148314731484 llvmPackages_git = (callPackages ../development/compilers/llvm { }).git; # Added 2024-08-021474148514751475- lld_9 = throw "lld_9 has been removed from nixpkgs"; # Added 2024-04-0814761476- lldb_9 = throw "lldb_9 has been removed from nixpkgs"; # Added 2024-04-0814771486 llvmPackages_9 = throw "llvmPackages_9 has been removed from nixpkgs"; # Added 2024-04-0814781487 llvm_9 = throw "llvm_9 has been removed from nixpkgs"; # Added 2024-04-0814881488+ lld_9 = throw "lld_9 has been removed from nixpkgs"; # Added 2024-04-0814891489+ lldb_9 = throw "lldb_9 has been removed from nixpkgs"; # Added 2024-04-0814901490+ clang_9 = throw "clang_9 has been removed from nixpkgs"; # Added 2024-04-0814911491+ clang9Stdenv = throw "clang9Stdenv has been removed from nixpkgs"; # Added 2024-04-0814921492+ clang-tools_9 = throw "clang-tools_9 has been removed from nixpkgs"; # Added 2024-04-0814931493+14941494+ llvmPackages_12 = throw "llvmPackages_12 has been removed, as it is unmaintained and obsolete"; # Added 2025-08-1014951495+ llvm_12 = throw "llvm_12 has been removed, as it is unmaintained and obsolete"; # Added 2025-08-1014961496+ lld_12 = throw "lld_12 has been removed, as it is unmaintained and obsolete"; # Added 2025-08-1014971497+ lldb_12 = throw "lldb_12 has been removed, as it is unmaintained and obsolete"; # Added 2025-08-1014981498+ clang_12 = throw "clang_12 has been removed, as it is unmaintained and obsolete"; # Added 2025-08-1014991499+ clang12Stdenv = throw "clang12Stdenv has been removed, as it is unmaintained and obsolete"; # Added 2025-08-1015001500+ clang-tools_12 = throw "clang-tools_12 has been removed, as it is unmaintained and obsolete"; # Added 2025-08-1015011501+15021502+ llvmPackages_13 = throw "llvmPackages_13 has been removed, as it is unmaintained and obsolete"; # Added 2025-08-1015031503+ llvm_13 = throw "llvm_13 has been removed, as it is unmaintained and obsolete"; # Added 2025-08-1015041504+ lld_13 = throw "lld_13 has been removed, as it is unmaintained and obsolete"; # Added 2025-08-1015051505+ lldb_13 = throw "lldb_13 has been removed, as it is unmaintained and obsolete"; # Added 2025-08-1015061506+ clang_13 = throw "clang_13 has been removed, as it is unmaintained and obsolete"; # Added 2025-08-1015071507+ clang13Stdenv = throw "clang13Stdenv has been removed, as it is unmaintained and obsolete"; # Added 2025-08-1015081508+ clang-tools_13 = throw "clang-tools_13 has been removed, as it is unmaintained and obsolete"; # Added 2025-08-1015091509+15101510+ llvmPackages_14 = throw "llvmPackages_14 has been removed, as it is unmaintained and obsolete"; # Added 2025-08-1015111511+ llvm_14 = throw "llvm_14 has been removed, as it is unmaintained and obsolete"; # Added 2025-08-1015121512+ lld_14 = throw "lld_14 has been removed, as it is unmaintained and obsolete"; # Added 2025-08-1015131513+ lldb_14 = throw "lldb_14 has been removed, as it is unmaintained and obsolete"; # Added 2025-08-1015141514+ clang_14 = throw "clang_14 has been removed, as it is unmaintained and obsolete"; # Added 2025-08-1015151515+ clang14Stdenv = throw "clang14Stdenv has been removed, as it is unmaintained and obsolete"; # Added 2025-08-1015161516+ clang-tools_14 = throw "clang-tools_14 has been removed, as it is unmaintained and obsolete"; # Added 2025-08-1015171517+15181518+ llvmPackages_15 = throw "llvmPackages_15 has been removed, as it is unmaintained and obsolete"; # Added 2025-08-1215191519+ llvm_15 = throw "llvm_15 has been removed, as it is unmaintained and obsolete"; # Added 2025-08-1215201520+ lld_15 = throw "lld_15 has been removed, as it is unmaintained and obsolete"; # Added 2025-08-1215211521+ lldb_15 = throw "lldb_15 has been removed, as it is unmaintained and obsolete"; # Added 2025-08-1215221522+ clang_15 = throw "clang_15 has been removed, as it is unmaintained and obsolete"; # Added 2025-08-1215231523+ clang15Stdenv = throw "clang15Stdenv has been removed, as it is unmaintained and obsolete"; # Added 2025-08-1215241524+ clang-tools_15 = throw "clang-tools_15 has been removed, as it is unmaintained and obsolete"; # Added 2025-08-1215251525+15261526+ llvmPackages_16 = throw "llvmPackages_16 has been removed, as it is unmaintained and obsolete"; # Added 2025-08-0915271527+ llvm_16 = throw "llvm_16 has been removed, as it is unmaintained and obsolete"; # Added 2025-08-0915281528+ lld_16 = throw "lld_16 has been removed, as it is unmaintained and obsolete"; # Added 2025-08-0915291529+ lldb_16 = throw "lldb_16 has been removed, as it is unmaintained and obsolete"; # Added 2025-08-0915301530+ mlir_16 = throw "mlir_16 has been removed, as it is unmaintained and obsolete"; # Added 2025-08-0915311531+ clang_16 = throw "clang_16 has been removed, as it is unmaintained and obsolete"; # Added 2025-08-0915321532+ clang16Stdenv = throw "clang16Stdenv has been removed, as it is unmaintained and obsolete"; # Added 2025-08-0915331533+ clang-tools_16 = throw "clang-tools_16 has been removed, as it is unmaintained and obsolete"; # Added 2025-08-0915341534+15351535+ llvmPackages_17 = throw "llvmPackages_17 has been removed, as it is unmaintained and obsolete"; # Added 2025-08-0915361536+ llvm_17 = throw "llvm_17 has been removed, as it is unmaintained and obsolete"; # Added 2025-08-0915371537+ lld_17 = throw "lld_17 has been removed, as it is unmaintained and obsolete"; # Added 2025-08-0915381538+ lldb_17 = throw "lldb_17 has been removed, as it is unmaintained and obsolete"; # Added 2025-08-0915391539+ mlir_17 = throw "mlir_17 has been removed, as it is unmaintained and obsolete"; # Added 2025-08-0915401540+ clang_17 = throw "clang_17 has been removed, as it is unmaintained and obsolete"; # Added 2025-08-0915411541+ clang17Stdenv = throw "clang17Stdenv has been removed, as it is unmaintained and obsolete"; # Added 2025-08-0915421542+ clang-tools_17 = throw "clang-tools_17 has been removed, as it is unmaintained and obsolete"; # Added 2025-08-091479154314801544 lobster-two = throw "'lobster-two' has been renamed to/replaced by 'google-fonts'"; # Converted to throw 2024-10-1714811545 loc = throw "'loc' has been removed due to lack of upstream maintenance. Consider 'tokei' as an alternative."; # Added 2025-01-25···17031661 mpdWithFeatures = lib.warnOnInstantiate "mpdWithFeatures has been replaced by mpd.override" mpd.override; # Added 2025-08-0817041662 mpdevil = plattenalbum; # Added 2024-05-2217051663 mpg321 = throw "'mpg321' has been removed due to it being unmaintained by upstream. Consider using mpg123 instead."; # Added 2024-05-1016641664+ mpris-discord-rpc = throw "'mpris-discord-rpc' has been renamed to 'music-discord-rpc'."; # Added 2025-09-1417061665 mq-cli = throw "'mq-cli' has been removed due to lack of upstream maintenance"; # Added 2025-01-2517071666 mrkd = throw "'mrkd' has been removed as it is unmaintained since 2021"; # Added 2024-12-2117081667 msp430NewlibCross = msp430Newlib; # Added 2024-09-06···18441801 oauth2_proxy = throw "'oauth2_proxy' has been renamed to/replaced by 'oauth2-proxy'"; # Converted to throw 2024-10-1718451802 obliv-c = throw "obliv-c has been removed from Nixpkgs, as it has been unmaintained upstream for 4 years and does not build with supported GCC versions"; # Added 2025-08-1818461803 ocis-bin = throw "ocis-bin has been renamed to ocis_5-bin'. Future major.minor versions will be made available as separate packages"; # Added 2025-03-3018041804+ oclgrind = throw "oclgrind has been removed, as it does not build with supported LLVM versions"; # Added 2025-08-1018471805 odoo15 = throw "odoo15 has been removed from nixpkgs as it is unsupported; migrate to a newer version of odoo"; # Added 2025-05-0618481806 offrss = throw "offrss has been removed due to lack of upstream maintenance; consider using another rss reader"; # Added 2025-06-0118491807 oil = lib.warnOnInstantiate "Oil has been replaced with the faster native C++ version and renamed to 'oils-for-unix'. See also https://github.com/oils-for-unix/oils/wiki/Oils-Deployments" oils-for-unix; # Added 2024-10-22···21202076 qcachegrind = throw "'qcachegrind' has been removed, as it depends on KDE Gear 5, which has reached EOL"; # Added 2025-08-2021212077 qflipper = qFlipper; # Added 2022-02-1121222078 qnial = throw "'qnial' has been removed due to failing to build and being unmaintained"; # Added 2025-06-2620792079+ qrscan = throw "qrscan has been removed, as it does not build with supported LLVM versions"; # Added 2025-08-1921232080 qscintilla = libsForQt5.qscintilla; # Added 2023-09-2021242081 qscintilla-qt6 = qt6Packages.qscintilla; # Added 2023-09-2021252082 qt-video-wlr = throw "'qt-video-wlr' has been removed, as it depends on KDE Gear 5, which has reached EOL"; # Added 2025-08-20···25682523 ### W ###25692524 w_scan = throw "'w_scan' has been removed due to lack of upstream maintenance"; # Added 2025-08-2925702525 wakatime = wakatime-cli; # 2024-05-3025262526+ wavm = throw "wavm has been removed, as it does not build with supported LLVM versions"; # Added 2025-08-1025712527 wal_e = throw "wal_e was removed as it is unmaintained upstream and depends on the removed boto package; upstream recommends using wal-g or pgbackrest"; # Added 2024-09-2225722528 wapp = tclPackages.wapp; # Added 2024-10-0225732529 wavebox = throw "'wavebox' has been removed due to lack of maintenance in nixpkgs"; # Added 2025-06-24