···254254 hash = "sha256-2IpdSyye3VT4VB95WurnyRFtdN1lfVtYpgEiUVhfNjw=";
255255 })
256256 ]
257257+ ++ [
258258+ # LLVM 19 turned on WASM reference types by default, exposing a bug
259259+ # that broke the Mozilla WASI build. Supposedly, it has been fixed
260260+ # upstream in LLVM, but the build fails in the same way for us even
261261+ # with LLVM 19 versions that contain the upstream patch.
262262+ #
263263+ # Apply the temporary patch Mozilla used to work around this bug
264264+ # for now until someone can investigate what’s going on here.
265265+ #
266266+ # TODO: Please someone figure out what’s up with this.
267267+ #
268268+ # See: <https://bugzilla.mozilla.org/show_bug.cgi?id=1905251>
269269+ # See: <https://github.com/llvm/llvm-project/pull/97451>
270270+ (fetchpatch {
271271+ name = "wasi-sdk-disable-reference-types.patch";
272272+ url = "https://hg.mozilla.org/integration/autoland/raw-rev/23a9f6555c7c";
273273+ hash = "sha256-CRywalJlRMFVLITEYXxpSq3jLPbUlWKNRHuKLwXqQfU=";
274274+ })
275275+ ]
257276 ++ extraPatches;
258277259278 postPatch = ''
-4
pkgs/build-support/bintools-wrapper/default.nix
···343343 done
344344 ''
345345346346- + optionalString targetPlatform.isDarwin ''
347347- echo "-arch ${targetPlatform.darwinArch}" >> $out/nix-support/libc-ldflags
348348- ''
349349-350346 ##
351347 ## GNU specific extra strip flags
352348 ##
···1616 sha256 = "sha256-sYBTbX2ZYLBeACOhl7ANyxAJKaSaq3HRnVX0obIQ9Jo=";
1717 };
18181919- # Clang 16 defaults to C++17. `std::auto_ptr` has been removed from C++17, and the
2020- # `register` type class specifier is no longer allowed.
2121- patches = [ ./c++-17-fixes.patch ];
1919+ patches = [
2020+ # Clang 16 defaults to C++17. `std::auto_ptr` has been removed from C++17,
2121+ # and the `register` type class specifier is no longer allowed.
2222+ ./c++-17-fixes.patch
2323+2424+ # Clang-19 errors out for dead code (in header) which accesses undefined
2525+ # class members
2626+ ./remove-subtract-and-union-debug.diff
2727+ ];
22282329 hardeningDisable = [ "format" ];
2430
···11+diff --git a/y4mdenoise/Region2D.hh b/y4mdenoise/Region2D.hh
22+index b44e93f..ebc2821 100644
33+--- a/y4mdenoise/Region2D.hh
44++++ b/y4mdenoise/Region2D.hh
55+@@ -97,35 +97,11 @@ public:
66+ // Add the given horizontal extent to the region. Note that
77+ // a_tnXEnd is technically one past the end of the extent.
88+99+- template <class REGION, class REGION_TEMP>
1010+- void UnionDebug (Status_t &a_reStatus, INDEX a_tnY,
1111+- INDEX a_tnXStart, INDEX a_tnXEnd, REGION_TEMP &a_rTemp);
1212+- // Add the given horizontal extent to the region. Note that
1313+- // a_tnXEnd is technically one past the end of the extent.
1414+- // Exhaustively (i.e. slowly) verifies the results, using a
1515+- // much simpler algorithm.
1616+- // Requires the use of a temporary region, usually of the
1717+- // final subclass' type, in order to work. (Since that can't
1818+- // be known at this level, a template parameter is included for
1919+- // it.)
2020+-
2121+ template <class REGION>
2222+ void Union (Status_t &a_reStatus, const REGION &a_rOther);
2323+ // Make the current region represent the union between itself
2424+ // and the other given region.
2525+2626+- template <class REGION, class REGION_O, class REGION_TEMP>
2727+- void UnionDebug (Status_t &a_reStatus,
2828+- REGION_O &a_rOther, REGION_TEMP &a_rTemp);
2929+- // Make the current region represent the union between itself
3030+- // and the other given region.
3131+- // Exhaustively (i.e. slowly) verifies the results, using a
3232+- // much simpler algorithm.
3333+- // Requires the use of a temporary region, usually of the
3434+- // final subclass' type, in order to work. (Since that can't
3535+- // be known at this level, a template parameter is included for
3636+- // it.)
3737+-
3838+ //void Merge (Status_t &a_reStatus, INDEX a_tnY, INDEX a_tnXStart,
3939+ // INDEX a_tnXEnd);
4040+ // Merge this extent into the current region.
4141+@@ -166,37 +142,12 @@ public:
4242+ // Subtract the given horizontal extent from the region. Note
4343+ // that a_tnXEnd is technically one past the end of the extent.
4444+4545+- template <class REGION_TEMP>
4646+- void SubtractDebug (Status_t &a_reStatus, INDEX a_tnY,
4747+- INDEX a_tnXStart, INDEX a_tnXEnd, REGION_TEMP &a_rTemp);
4848+- // Subtract the given horizontal extent from the region. Note
4949+- // that a_tnXEnd is technically one past the end of the extent.
5050+- // Exhaustively (i.e. slowly) verifies the results, using a
5151+- // much simpler algorithm.
5252+- // Requires the use of a temporary region, usually of the
5353+- // final subclass' type, in order to work. (Since that can't
5454+- // be known at this level, a template parameter is included for
5555+- // it.)
5656+-
5757+ template <class REGION>
5858+ void Subtract (Status_t &a_reStatus, const REGION &a_rOther);
5959+ // Subtract the other region from the current region, i.e.
6060+ // remove from the current region any extents that exist in the
6161+ // other region.
6262+6363+- template <class REGION, class REGION_O, class REGION_TEMP>
6464+- void SubtractDebug (Status_t &a_reStatus, REGION_O &a_rOther,
6565+- REGION_TEMP &a_rTemp);
6666+- // Subtract the other region from the current region, i.e.
6767+- // remove from the current region any extents that exist in the
6868+- // other region.
6969+- // Exhaustively (i.e. slowly) verifies the results, using a
7070+- // much simpler algorithm.
7171+- // Requires the use of a temporary region, usually of the
7272+- // final subclass' type, in order to work. (Since that can't
7373+- // be known at this level, a template parameter is included for
7474+- // it.)
7575+-
7676+ //typedef ... ConstIterator;
7777+ //ConstIterator Begin (void) const { return m_setExtents.Begin(); }
7878+ //ConstIterator End (void) const { return m_setExtents.End(); }
7979+@@ -404,85 +355,6 @@ Region2D<INDEX,SIZE>::~Region2D()
8080+8181+8282+8383+-// Add the given horizontal extent to the region.
8484+-template <class INDEX, class SIZE>
8585+-template <class REGION, class REGION_TEMP>
8686+-void
8787+-Region2D<INDEX,SIZE>::UnionDebug (Status_t &a_reStatus, INDEX a_tnY,
8888+- INDEX a_tnXStart, INDEX a_tnXEnd, REGION_TEMP &a_rTemp)
8989+-{
9090+- typename REGION::ConstIterator itHere;
9191+- typename REGION_TEMP::ConstIterator itHereO;
9292+- INDEX tnX;
9393+- // Used to loop through points.
9494+-
9595+- // Make sure they didn't start us off with an error.
9696+- assert (a_reStatus == g_kNoError);
9797+-
9898+- // Calculate the union.
9999+- a_rTemp.Assign (a_reStatus, *this);
100100+- if (a_reStatus != g_kNoError)
101101+- return;
102102+- a_rTemp.Union (a_reStatus, a_tnY, a_tnXStart, a_tnXEnd);
103103+- if (a_reStatus != g_kNoError)
104104+- return;
105105+-
106106+- // Loop through every point in the result, make sure it's in
107107+- // one of the two input regions.
108108+- for (itHereO = a_rTemp.Begin(); itHereO != a_rTemp.End(); ++itHereO)
109109+- {
110110+- const Extent &rHere = *itHereO;
111111+- for (tnX = rHere.m_tnXStart; tnX < rHere.m_tnXEnd; ++tnX)
112112+- {
113113+- if (!((rHere.m_tnY == a_tnY
114114+- && (tnX >= a_tnXStart && tnX < a_tnXEnd))
115115+- || this->DoesContainPoint (rHere.m_tnY, tnX)))
116116+- goto error;
117117+- }
118118+- }
119119+-
120120+- // Loop through every point in the original region, make sure
121121+- // it's in the result.
122122+- for (itHere = this->Begin(); itHere != this->End(); ++itHere)
123123+- {
124124+- const Extent &rHere = *itHere;
125125+- for (tnX = rHere.m_tnXStart; tnX < rHere.m_tnXEnd; ++tnX)
126126+- {
127127+- if (!a_rTemp.DoesContainPoint (rHere.m_tnY, tnX))
128128+- goto error;
129129+- }
130130+- }
131131+-
132132+- // Loop through every point in the added extent, make sure it's in
133133+- // the result.
134134+- for (tnX = a_tnXStart; tnX < a_tnXEnd; ++tnX)
135135+- {
136136+- if (!a_rTemp.DoesContainPoint (a_tnY, tnX))
137137+- goto error;
138138+- }
139139+-
140140+- // The operation succeeded. Commit it.
141141+- Assign (a_reStatus, a_rTemp);
142142+- if (a_reStatus != g_kNoError)
143143+- return;
144144+-
145145+- // All done.
146146+- return;
147147+-
148148+-error:
149149+- // Handle deviations.
150150+- fprintf (stderr, "Region2D::Union() failed\n");
151151+- fprintf (stderr, "Input region:\n");
152152+- PrintRegion (*this);
153153+- fprintf (stderr, "Input extent: [%d,%d-%d]\n",
154154+- int (a_tnY), int (a_tnXStart), int (a_tnXEnd));
155155+- fprintf (stderr, "Result:\n");
156156+- PrintRegion (a_rTemp);
157157+- assert (false);
158158+-}
159159+-
160160+-
161161+-
162162+ // Make the current region represent the union between itself
163163+ // and the other given region.
164164+ template <class INDEX, class SIZE>
165165+@@ -513,182 +385,6 @@ Region2D<INDEX,SIZE>::Union (Status_t &a_reStatus,
166166+167167+168168+169169+-// Make the current region represent the union between itself
170170+-// and the other given region.
171171+-template <class INDEX, class SIZE>
172172+-template <class REGION, class REGION_O, class REGION_TEMP>
173173+-void
174174+-Region2D<INDEX,SIZE>::UnionDebug (Status_t &a_reStatus,
175175+- REGION_O &a_rOther, REGION_TEMP &a_rTemp)
176176+-{
177177+- typename REGION::ConstIterator itHere;
178178+- typename REGION_O::ConstIterator itHereO;
179179+- typename REGION_TEMP::ConstIterator itHereT;
180180+- INDEX tnX;
181181+- // Used to loop through points.
182182+-
183183+- // Make sure they didn't start us off with an error.
184184+- assert (a_reStatus == g_kNoError);
185185+-
186186+- // Calculate the union.
187187+- a_rTemp.Assign (a_reStatus, *this);
188188+- if (a_reStatus != g_kNoError)
189189+- return;
190190+- a_rTemp.Union (a_reStatus, a_rOther);
191191+- if (a_reStatus != g_kNoError)
192192+- return;
193193+-
194194+- // Loop through every point in the result, make sure it's in
195195+- // one of the two input regions.
196196+- for (itHereT = a_rTemp.Begin(); itHereT != a_rTemp.End(); ++itHereT)
197197+- {
198198+- const Extent &rHere = *itHereT;
199199+- for (tnX = rHere.m_tnXStart; tnX < rHere.m_tnXEnd; ++tnX)
200200+- {
201201+- if (!a_rOther.DoesContainPoint (rHere.m_tnY, tnX)
202202+- && !this->DoesContainPoint (rHere.m_tnY, tnX))
203203+- goto error;
204204+- }
205205+- }
206206+-
207207+- // Loop through every point in the first input region, make sure
208208+- // it's in the result.
209209+- for (itHere = this->Begin(); itHere != this->End(); ++itHere)
210210+- {
211211+- const Extent &rHere = *itHere;
212212+- for (tnX = rHere.m_tnXStart; tnX < rHere.m_tnXEnd; ++tnX)
213213+- {
214214+- if (!a_rTemp.DoesContainPoint (rHere.m_tnY, tnX))
215215+- goto error;
216216+- }
217217+- }
218218+-
219219+- // Loop through every point in the second input region, make sure
220220+- // it's in the result.
221221+- for (itHereO = a_rOther.Begin();
222222+- itHereO != a_rOther.End();
223223+- ++itHereO)
224224+- {
225225+- const Extent &rHere = *itHereO;
226226+- for (tnX = rHere.m_tnXStart; tnX < rHere.m_tnXEnd; ++tnX)
227227+- {
228228+- if (!a_rTemp.DoesContainPoint (rHere.m_tnY, tnX))
229229+- goto error;
230230+- }
231231+- }
232232+-
233233+- // The operation succeeded. Commit it.
234234+- Assign (a_reStatus, a_rTemp);
235235+- if (a_reStatus != g_kNoError)
236236+- return;
237237+-
238238+- // All done.
239239+- return;
240240+-
241241+-error:
242242+- // Handle deviations.
243243+- fprintf (stderr, "Region2D::Union() failed\n");
244244+- fprintf (stderr, "First input region:\n");
245245+- PrintRegion (*this);
246246+- fprintf (stderr, "Second input region:\n");
247247+- PrintRegion (a_rOther);
248248+- fprintf (stderr, "Result:\n");
249249+- PrintRegion (a_rTemp);
250250+- assert (false);
251251+-}
252252+-
253253+-
254254+-
255255+-// Subtract the other region from the current region, i.e.
256256+-// remove from the current region any areas that exist in the
257257+-// other region.
258258+-template <class INDEX, class SIZE>
259259+-template <class REGION, class REGION_O, class REGION_TEMP>
260260+-void
261261+-Region2D<INDEX,SIZE>::SubtractDebug (Status_t &a_reStatus,
262262+- REGION_O &a_rOther, REGION_TEMP &a_rTemp)
263263+-{
264264+- typename REGION::ConstIterator itHere;
265265+- typename REGION_O::ConstIterator itHereO;
266266+- typename REGION_TEMP::ConstIterator itHereT;
267267+- INDEX tnX;
268268+- // Used to loop through points.
269269+-
270270+- // Make sure they didn't start us off with an error.
271271+- assert (a_reStatus == g_kNoError);
272272+-
273273+- // Calculate the difference.
274274+- a_rTemp.Assign (a_reStatus, *this);
275275+- if (a_reStatus != g_kNoError)
276276+- return;
277277+- a_rTemp.Subtract (a_reStatus, a_rOther);
278278+- if (a_reStatus != g_kNoError)
279279+- return;
280280+-
281281+- // Loop through every point in the result, make sure it's in
282282+- // the first input region but not the second.
283283+- for (itHereT = a_rTemp.Begin(); itHereT != a_rTemp.End(); ++itHereT)
284284+- {
285285+- const Extent &rHere = *itHereT;
286286+- for (tnX = rHere.m_tnXStart; tnX < rHere.m_tnXEnd; ++tnX)
287287+- {
288288+- if (!(this->DoesContainPoint (rHere.m_tnY, tnX)
289289+- && !a_rOther.DoesContainPoint (rHere.m_tnY, tnX)))
290290+- goto error;
291291+- }
292292+- }
293293+-
294294+- // Loop through every point in the first input region, and if it's
295295+- // not in the second input region, make sure it's in the result.
296296+- for (itHere = this->Begin(); itHere != this->End(); ++itHere)
297297+- {
298298+- const Extent &rHere = *itHere;
299299+- for (tnX = rHere.m_tnXStart; tnX < rHere.m_tnXEnd; ++tnX)
300300+- {
301301+- if (!a_rOther.DoesContainPoint (rHere.m_tnY, tnX))
302302+- {
303303+- if (!a_rTemp.DoesContainPoint (rHere.m_tnY, tnX))
304304+- goto error;
305305+- }
306306+- }
307307+- }
308308+-
309309+- // Loop through every point in the second input region, make sure
310310+- // it's not in the result.
311311+- for (itHereO = a_rOther.Begin();
312312+- itHereO != a_rOther.End();
313313+- ++itHereO)
314314+- {
315315+- const Extent &rHere = *itHere;
316316+- for (tnX = rHere.m_tnXStart; tnX < rHere.m_tnXEnd; ++tnX)
317317+- {
318318+- if (a_rTemp.DoesContainPoint (rHere.m_tnY, tnX))
319319+- goto error;
320320+- }
321321+- }
322322+-
323323+- // The operation succeeded. Commit it.
324324+- Assign (a_reStatus, a_rTemp);
325325+- if (a_reStatus != g_kNoError)
326326+- return;
327327+-
328328+- // All done.
329329+- return;
330330+-
331331+-error:
332332+- // Handle deviations.
333333+- fprintf (stderr, "Region2D::Subtract() failed\n");
334334+- fprintf (stderr, "First input region:\n");
335335+- PrintRegion (*this);
336336+- fprintf (stderr, "Second input region:\n");
337337+- PrintRegion (a_rOther);
338338+- fprintf (stderr, "Result:\n");
339339+- PrintRegion (a_rTemp);
340340+- assert (false);
341341+-}
342342+-
343343+-
344344+-
345345+ // Flood-fill the current region.
346346+ template <class INDEX, class SIZE>
347347+ template <class CONTROL>
···2626 ] ++ lib.optionals stdenv.hostPlatform.isDarwin [
2727 # https://github.com/xtensor-stack/xsimd/issues/1030
2828 ./disable-test_error_gamma.patch
2929+3030+ # https://github.com/xtensor-stack/xsimd/issues/1063
3131+ ./relax-asin-precision.diff
2932 ];
30333134 # strictDeps raises the chance that xsimd will be able to be cross compiled
···11+From 7ef5ed98cc6666f64db2f155ded2077ce038e1e4 Mon Sep 17 00:00:00 2001
22+From: Reno Dakota <paparodeo@proton.me>
33+Date: Sat, 16 Nov 2024 05:57:40 +0000
44+Subject: [PATCH] [Clang][Driver] report unsupported option error regardless of
55+ argument order
66+77+This change updates clang to report unsupported option errors regardless
88+of the command line argument order.
99+1010+When clang with a source file and without `-c` it will both compile and
1111+link. When an unsupported option is also part of the command line clang
1212+should generated an error. However, if the source file name comes before
1313+an object file, eg: `-lc`, the error is ignored.
1414+1515+```
1616+$ clang --target=x86_64 -lc hello.c -mhtm
1717+clang: error: unsupported option '-mhtm' for target 'x86_64'
1818+$ echo $?
1919+1
2020+```
2121+2222+but if `-lc` comes after `hello.c` the error is dropped
2323+2424+```
2525+$ clang --target=x86_64 hello.c -mhtm -lc
2626+$ echo $?
2727+0
2828+```
2929+3030+after this change clang will report the error regardless of the command
3131+line argument order.
3232+---
3333+ clang/lib/Driver/Driver.cpp | 13 ++++++-------
3434+ clang/test/Driver/unsupported-option.c | 10 ++++++++++
3535+ 2 files changed, 16 insertions(+), 7 deletions(-)
3636+3737+diff --git a/lib/Driver/Driver.cpp b/clang/lib/Driver/Driver.cpp
3838+index 93e85f7dffe35a..8e784a7b130ac3 100644
3939+--- a/lib/Driver/Driver.cpp
4040++++ b/lib/Driver/Driver.cpp
4141+@@ -4064,17 +4064,18 @@ void Driver::handleArguments(Compilation &C, DerivedArgList &Args,
4242+ YcArg = YuArg = nullptr;
4343+ }
4444+4545+- unsigned LastPLSize = 0;
4646++ bool LinkOnly = phases::Link == FinalPhase && Inputs.size() > 0;
4747+ for (auto &I : Inputs) {
4848+ types::ID InputType = I.first;
4949+ const Arg *InputArg = I.second;
5050+5151+ auto PL = types::getCompilationPhases(InputType);
5252+- LastPLSize = PL.size();
5353++
5454++ phases::ID InitialPhase = PL[0];
5555++ LinkOnly = LinkOnly && phases::Link == InitialPhase && PL.size() == 1;
5656+5757+ // If the first step comes after the final phase we are doing as part of
5858+ // this compilation, warn the user about it.
5959+- phases::ID InitialPhase = PL[0];
6060+ if (InitialPhase > FinalPhase) {
6161+ if (InputArg->isClaimed())
6262+ continue;
6363+@@ -4129,10 +4130,8 @@ void Driver::handleArguments(Compilation &C, DerivedArgList &Args,
6464+ }
6565+ }
6666+6767+- // If we are linking, claim any options which are obviously only used for
6868+- // compilation.
6969+- // FIXME: Understand why the last Phase List length is used here.
7070+- if (FinalPhase == phases::Link && LastPLSize == 1) {
7171++ // claim any options which are obviously only used for compilation.
7272++ if (LinkOnly) {
7373+ Args.ClaimAllArgs(options::OPT_CompileOnly_Group);
7474+ Args.ClaimAllArgs(options::OPT_cl_compile_Group);
7575+ }
···8899stdenv.mkDerivation rec {
1010 pname = "gettext";
1111- version = "0.21.1";
1111+ version = "0.22.4";
12121313 src = fetchurl {
1414 url = "mirror://gnu/gettext/${pname}-${version}.tar.gz";
1515- sha256 = "sha256-6MNlDh2M7odcTzVWQjgsHfgwWL1aEe6FVcDPJ21kbUU=";
1515+ hash = "sha256-weC7KkQnqQJDkMZizVMtZkxLNrj/RE7V5UsRX9t6Guo=";
1616 };
1717 patches = [
1818 ./absolute-paths.diff
···4747 ];
48484949 postPatch = ''
5050- substituteAllInPlace gettext-runtime/src/gettext.sh.in
5151- substituteInPlace gettext-tools/projects/KDE/trigger --replace "/bin/pwd" pwd
5252- substituteInPlace gettext-tools/projects/GNOME/trigger --replace "/bin/pwd" pwd
5353- substituteInPlace gettext-tools/src/project-id --replace "/bin/pwd" pwd
5050+ # Older versions of gettext come with a copy of `extern-inline.m4` that is not compatible with clang 18.
5151+ # When a project uses gettext + autoreconfPhase, autoreconfPhase will invoke `autopoint -f`, which will
5252+ # replace whatever (probably compatible) version of `extern-inline.m4` with one that probalby won’t work
5353+ # because `autopoint` will copy the autoconf macros from the project’s required version of gettext.
5454+ # Fixing this requires replacing all the older copies of the problematic file with a new one.
5555+ #
5656+ # This is ugly, but it avoids requiring workarounds in every package using gettext and autoreconfPhase.
5757+ declare -a oldFiles=($(tar tf gettext-tools/misc/archive.dir.tar | grep '^gettext-0\.[19].*/extern-inline.m4'))
5858+ oldFilesDir=$(mktemp -d)
5959+ for oldFile in "''${oldFiles[@]}"; do
6060+ mkdir -p "$oldFilesDir/$(dirname "$oldFile")"
6161+ cp gettext-tools/gnulib-m4/extern-inline.m4 "$oldFilesDir/$oldFile"
6262+ done
6363+ tar uf gettext-tools/misc/archive.dir.tar -C "$oldFilesDir" "''${oldFiles[@]}"
6464+6565+ substituteAllInPlace gettext-runtime/src/gettext.sh.in
6666+ substituteInPlace gettext-tools/projects/KDE/trigger --replace "/bin/pwd" pwd
6767+ substituteInPlace gettext-tools/projects/GNOME/trigger --replace "/bin/pwd" pwd
6868+ substituteInPlace gettext-tools/src/project-id --replace "/bin/pwd" pwd
5469 '' + lib.optionalString stdenv.hostPlatform.isCygwin ''
5570 sed -i -e "s/\(cldr_plurals_LDADD = \)/\\1..\/gnulib-lib\/libxml_rpl.la /" gettext-tools/src/Makefile.in
5671 sed -i -e "s/\(libgettextsrc_la_LDFLAGS = \)/\\1..\/gnulib-lib\/libxml_rpl.la /" gettext-tools/src/Makefile.in
···44 pname = "qtlocation";
55 propagatedBuildInputs = [ qtbase qtmultimedia ];
66 outputs = [ "bin" "out" "dev" ];
77+ # Clang 18 treats a non-const, narrowing conversion in an initializer list as an error,
88+ # which results in a failure building a 3rd party dependency of qtlocation. Just suppress it.
99+ env = lib.optionalAttrs (stdenv.cc.isClang && (lib.versionAtLeast (lib.getVersion stdenv.cc) "18")) {
1010+ NIX_CFLAGS_COMPILE = "-Wno-c++11-narrowing-const-reference";
1111+ };
712 qmakeFlags = lib.optionals stdenv.hostPlatform.isDarwin [
813 # boost uses std::auto_ptr which has been disabled in clang with libcxx
914 # This flag re-enables this feature
···385385 configureFlags = (a.configureFlags or []) ++ [
386386 "--with-native-system-header-dir=/include"
387387 "--with-build-sysroot=${lib.getDev self.stdenv.cc.libc}"
388388+ # Don't assume that `gettext` was built with iconv support, since we don't have
389389+ # our own `glibc` yet.
390390+ "--disable-nls"
388391 ];
389392390393 # This is a separate phase because gcc assembles its phase scripts
···507510 overrides = self: super: rec {
508511 inherit (prevStage)
509512 ccWrapperStdenv
510510- binutils coreutils gnugrep gettext
513513+ binutils coreutils gnugrep
511514 perl patchelf linuxHeaders gnum4 bison libidn2 libunistring libxcrypt;
512515 # We build a special copy of libgmp which doesn't use libstdc++, because
513516 # xgcc++'s libstdc++ references the bootstrap-files (which is what
···382382 flutter316 = throw "flutter316 has been removed because it isn't updated anymore, and no packages in nixpkgs use it. If you still need it, use flutter.mkFlutter to get a custom version"; # Added 2024-10-05
383383 flutter322 = throw "flutter322 has been removed because it isn't updated anymore, and no packages in nixpkgs use it. If you still need it, use flutter.mkFlutter to get a custom version"; # Added 2024-10-05
384384 flutter323 = throw "flutter323 has been removed because it isn't updated anymore, and no packages in nixpkgs use it. If you still need it, use flutter.mkFlutter to get a custom version"; # Added 2024-10-05
385385+ fmt_8 = throw "fmt_8 has been removed as it is obsolete and was no longer used in the tree"; # Added 2024-11-12
385386 foldingathome = throw "'foldingathome' has been renamed to/replaced by 'fahclient'"; # Converted to throw 2024-10-17
386387 forgejo-actions-runner = forgejo-runner; # Added 2024-04-04
387388
+7-18
pkgs/top-level/all-packages.nix
···38953895 stdenv = llvmPackages_13.libcxxStdenv;
38963896 libcxx = llvmPackages_13.libcxx;
38973897 boost = boost178.override { inherit stdenv; };
38983898- fmt = fmt_8.override { inherit stdenv; };
38983898+ fmt = fmt_9.override { inherit stdenv; };
38993899 nanodbc_llvm = nanodbc.override { inherit stdenv; };
39003900 avro-cpp_llvm = avro-cpp.override { inherit stdenv boost; };
39013901 spdlog_llvm = spdlog.override { inherit stdenv fmt; };
···67436743 libllvm = llvmPackages.libllvm;
67446744 llvm-manpages = llvmPackages.llvm-manpages;
6745674567466746- # Please remove all this logic when bumping to LLVM 19 and make this
67476747- # a simple alias.
67486748- llvmPackages = let
67496749- # This returns the minimum supported version for the platform. The
67506750- # assumption is that or any later version is good.
67516751- choose = platform: if platform.isDarwin then 16 else 18;
67526752- # We take the "max of the mins". Why? Since those are lower bounds of the
67536753- # supported version set, this is like intersecting those sets and then
67546754- # taking the min bound of that.
67556755- minSupported = toString (lib.trivial.max (choose stdenv.hostPlatform) (choose
67566756- stdenv.targetPlatform));
67576757- in pkgs.${"llvmPackages_${minSupported}"};
67466746+ llvmPackages = llvmPackages_19;
6758674767596748 inherit (rec {
67606749 llvmPackagesSet = recurseIntoAttrs (callPackages ../development/compilers/llvm { });
···6923691269246913 rust_1_82 = callPackage ../development/compilers/rust/1_82.nix {
69256914 inherit (darwin.apple_sdk.frameworks) CoreFoundation Security SystemConfiguration;
69266926- llvm_18 = llvmPackages_18.libllvm;
69156915+ llvm_19 = llvmPackages_19.libllvm;
69276916 };
69286917 rust = rust_1_82;
69296918···91999188 fltk = fltk13;
92009189 fltk-minimal = fltk13-minimal;
9201919092029202- inherit (callPackages ../development/libraries/fmt { }) fmt_8 fmt_9 fmt_10 fmt_11;
91919191+ inherit (callPackages ../development/libraries/fmt { }) fmt_9 fmt_10 fmt_11;
9203919292049193 fmt = fmt_10;
92059194···1109211081 harfbuzz = harfbuzzFull;
1109311082 };
11094110831109511095- termbench-pro = callPackage ../development/libraries/termbench-pro { fmt = fmt_8; };
1108411084+ termbench-pro = callPackage ../development/libraries/termbench-pro { fmt = fmt_11; };
11096110851109711086 texpresso = callPackage ../tools/typesetting/tex/texpresso {
1109811087 texpresso-tectonic = callPackage ../tools/typesetting/tex/texpresso/tectonic.nix { };
···1601916008 };
16020160091602116010 torrenttools = callPackage ../tools/misc/torrenttools {
1602216022- fmt = fmt_8;
1601116011+ fmt = fmt_9;
1602316012 };
16024160131602516014 tony = libsForQt5.callPackage ../applications/audio/tony { };
···1840418393 kmonad = haskellPackages.kmonad.bin;
18405183941840618395 kompute = callPackage ../development/libraries/kompute {
1840718407- fmt = fmt_8;
1839618396+ fmt = fmt_10;
1840818397 };
18409183981841018399 # In general we only want keep the last three minor versions around that