···858858 );
859859 hercules-ci-cnix-store = super.hercules-ci-cnix-store.override { nix = pkgs.nixVersions.nix_2_9; };
860860861861+ # the testsuite fails because of not finding tsc without some help
862862+ aeson-typescript = overrideCabal (drv: {
863863+ testToolDepends = drv.testToolDepends or [] ++ [ pkgs.nodePackages.typescript ];
864864+ # the testsuite assumes that tsc is in the PATH if it thinks it's in
865865+ # CI, otherwise trying to install it.
866866+ #
867867+ # https://github.com/codedownio/aeson-typescript/blob/ee1a87fcab8a548c69e46685ce91465a7462be89/test/Util.hs#L27-L33
868868+ preCheck = "export CI=true";
869869+ }) super.aeson-typescript;
870870+861871 # Enable extra optimisations which increase build time, but also
862872 # later compiler performance, so we should do this for user's benefit.
863873 # Flag added in Agda 2.6.2
···978988 hls-floskell-plugin
979989 hls-fourmolu-plugin
980990 hls-module-name-plugin
981981- hls-ormolu-plugin
982991 hls-pragmas-plugin
983992 hls-splice-plugin;
984993 # Tests have file permissions expections that don‘t work with the nix store.
···9941003 hls-tactics-plugin = dontCheck super.hls-tactics-plugin;
9951004 hls-call-hierarchy-plugin = dontCheck super.hls-call-hierarchy-plugin;
9961005 hls-selection-range-plugin = dontCheck super.hls-selection-range-plugin;
10061006+ hls-ormolu-plugin = dontCheck super.hls-ormolu-plugin;
99710079981008 # Wants to execute cabal-install to (re-)build itself
9991009 hint = dontCheck super.hint;
···105105 (if stdenv.targetPlatform.isMusl
106106 then substitute { src = ./mips64-default-n64.patch; replacements = [ "--replace" "gnuabi64" "muslabi64" ]; }
107107 else ./mips64-default-n64.patch)
108108+ # On PowerPC, when generating assembly code, GCC generates a `.machine`
109109+ # custom instruction which instructs the assembler to generate code for this
110110+ # machine. However, some GCC versions generate the wrong one, or make it
111111+ # too strict, which leads to some confusing "unrecognized opcode: wrtee"
112112+ # or "unrecognized opcode: eieio" errors.
113113+ #
114114+ # To remove when binutils 2.39 is released.
115115+ #
116116+ # Upstream commit:
117117+ # https://sourceware.org/git/?p=binutils-gdb.git;a=commit;h=cebc89b9328eab994f6b0314c263f94e7949a553
118118+ ++ lib.optional stdenv.targetPlatform.isPower ./ppc-make-machine-less-strict.patch
108119 ;
109120110121 outputs = [ "out" "info" "man" ];
···11+From cebc89b9328eab994f6b0314c263f94e7949a553 Mon Sep 17 00:00:00 2001
22+From: Alan Modra <amodra@gmail.com>
33+Date: Mon, 21 Feb 2022 10:58:57 +1030
44+Subject: [PATCH] binutils 2.38 vs. ppc32 linux kernel
55+66+Commit b25f942e18d6 made .machine more strict. Weaken it again.
77+88+ * config/tc-ppc.c (ppc_machine): Treat an early .machine specially,
99+ keeping sticky options to work around gcc bugs.
1010+---
1111+ gas/config/tc-ppc.c | 25 ++++++++++++++++++++++++-
1212+ 1 file changed, 24 insertions(+), 1 deletion(-)
1313+1414+diff --git a/gas/config/tc-ppc.c b/gas/config/tc-ppc.c
1515+index 054f9c72161..89bc7d3f9b9 100644
1616+--- a/gas/config/tc-ppc.c
1717++++ b/gas/config/tc-ppc.c
1818+@@ -5965,7 +5965,30 @@ ppc_machine (int ignore ATTRIBUTE_UNUSED)
1919+ options do not count as a new machine, instead they add
2020+ to currently selected opcodes. */
2121+ ppc_cpu_t machine_sticky = 0;
2222+- new_cpu = ppc_parse_cpu (ppc_cpu, &machine_sticky, cpu_string);
2323++ /* Unfortunately, some versions of gcc emit a .machine
2424++ directive very near the start of the compiler's assembly
2525++ output file. This is bad because it overrides user -Wa
2626++ cpu selection. Worse, there are versions of gcc that
2727++ emit the *wrong* cpu, not even respecting the -mcpu given
2828++ to gcc. See gcc pr101393. And to compound the problem,
2929++ as of 20220222 gcc doesn't pass the correct cpu option to
3030++ gas on the command line. See gcc pr59828. Hack around
3131++ this by keeping sticky options for an early .machine. */
3232++ asection *sec;
3333++ for (sec = stdoutput->sections; sec != NULL; sec = sec->next)
3434++ {
3535++ segment_info_type *info = seg_info (sec);
3636++ /* Are the frags for this section perturbed from their
3737++ initial state? Even .align will count here. */
3838++ if (info != NULL
3939++ && (info->frchainP->frch_root != info->frchainP->frch_last
4040++ || info->frchainP->frch_root->fr_type != rs_fill
4141++ || info->frchainP->frch_root->fr_fix != 0))
4242++ break;
4343++ }
4444++ new_cpu = ppc_parse_cpu (ppc_cpu,
4545++ sec == NULL ? &sticky : &machine_sticky,
4646++ cpu_string);
4747+ if (new_cpu != 0)
4848+ ppc_cpu = new_cpu;
4949+ else
5050+--
5151+2.31.1