Commit Graph

122 Commits

Author SHA1 Message Date
John Ericson
f43cc75868
Clean up cross bootstrapping, take 2 (#321525) 2024-09-06 14:56:54 -04:00
John Ericson
5f134ec6cf Clean up cross bootstrapping
For a long time, we've had `crossLibcStdenv`, `*Cross` libc attributes,
and `*bsdCross` pre-libc package sets. This was always bad because
having "cross" things is "not declarative": the naming doesn't reflect
what packages *need* but rather how we *provide* something. This is
ugly, and creates needless friction between cross and native building.

Now, almost all of these `*Cross` attributes are gone: just these are
kept:

- Glibc's and Musl's are kept, because those packages are widely used
  and I didn't want to risk changing the native builds of those at this
  time.

- generic `libcCross`, `theadsCross`, and friends, because these relate
  to the convolulted GCC bootstrap which still needs to be redone.

The BSD and obscure Linux or freestnanding libcs have conversely all
been made to use a new `stdenvNoLibc`, which is like the old
`crossLibcStdenv` except:

1. It usable for native and cross alike

2. It named according to what it *is* ("a standard environment without
   libc but with a C compiler"), rather than some non-compositional
   jargon ("the stdenv used for building libc when cross compiling",
   yuck).

I should have done this change long ago, but I was stymied because of
"infinite recursions". The problem was that in too many cases we are
overriding `stdenv` to *remove* things we don't need, and this risks
cyles since those more minimal stdenvs are used to build things in the
more maximal stdenvs.

The solution is to pass `stage.nix` `stdenvNoCC`, so we can override to
*build up* rather than *tear down*. For now, the full `stdenv` is also
passed, so I don't need to change the native bootstraps, but I can see
this changing as we make things more uniform and clean those up.

(adapted from commit 51f1ecaa59)
(adapted from commit 1743662e55)
2024-09-06 10:26:56 -04:00
Felix Buehler
92d44ea36f cygwin-setup: remove 'with lib;' 2024-08-16 16:09:03 +02:00
Jörg Thalheim
5356420466 treewide: remove unused with statements from maintainer lists
$ find -type f -name '*.nix' -print0 | xargs -P "$(nproc)" -0 sed -i \
  -e 's!with lib.maintainers; \[ *\];![ ];!' \
  -e 's!with maintainers; \[ *\];![ ];!'
2024-07-29 10:06:20 +08:00
Anderson Torres
539575ab2b treewide: remove yana from meta.maintainers [orphans] 2024-07-22 16:22:39 -03:00
Martin Weinelt
2096642430
Merge remote-tracking branch 'origin/staging-next' into staging
Conflicts:
- pkgs/os-specific/windows/mingw-w64/default.nix
2024-06-23 19:09:00 +02:00
John Ericson
9abf384c54 windows.mingw_w64*: Fetch common attrs from the headers package
This is the most upstream one, and so to avoid infinite recursion we
should get the things from it. This isn't needed per-se now, but will be
after the next commit.

(cherry picked from commit 4bd76beac0)
2024-06-21 11:47:27 -04:00
Vladimír Čunát
879821772c
Revert #320852: Clean up cross bootstrapping
It rebuilt stdenv on *-darwin; we can't do that in nixpkgs master.
This reverts commit 2f20501c5f, reversing
changes made to fd469c24af.
2024-06-21 07:48:24 +02:00
Rick van Schijndel
43ce0f9ee0
Merge pull request #318256 from risicle/ris-stack-clash-protection
cc-wrapper: add stack clash protection hardening flag
2024-06-19 19:54:30 +02:00
John Ericson
51f1ecaa59 Clean up cross bootstrapping
For a long time, we've had `crossLibcStdenv`, `*Cross` libc attributes,
and `*bsdCross` pre-libc package sets. This was always bad because
having "cross" things is "not declarative": the naming doesn't reflect
what packages *need* but rather how we *provide* something. This is
ugly, and creates needless friction between cross and native building.

Now, almost all of these `*Cross` attributes are gone: just these are
kept:

- Glibc's and Musl's are kept, because those packages are widely used
  and I didn't want to risk changing the native builds of those at this
  time.

- generic `libcCross`, `theadsCross`, and friends, because these relate
  to the convolulted GCC bootstrap which still needs to be redone.

The BSD and obscure Linux or freestnanding libcs have conversely all
been made to use a new `stdenvNoLibc`, which is like the old
`crossLibcStdenv` except:

1. It usable for native and cross alike

2. It named according to what it *is* ("a standard environment without
   libc but with a C compiler"), rather than some non-compositional
   jargon ("the stdenv used for building libc when cross compiling",
   yuck).

I should have done this change long ago, but I was stymied because of
"infinite recursions". The problem was that in too many cases we are
overriding `stdenv` to *remove* things we don't need, and this risks
cyles since those more minimal stdenvs are used to build things in the
more maximal stdenvs.

The solution is to pass `stage.nix` `stdenvNoCC`, so we can override to
*build up* rather than *tear down*. For now, the full `stdenv` is also
passed, so I don't need to change the native bootstraps, but I can see
this changing as we make things more uniform and clean those up.

Finally, the BSDs also had to be cleaned up, since they have a few
pre-libc dependencies, demanding a systematic approach. I realized what
rhelmot did in 61202561d9 (specify what
packages just need `stdenvNoLibc`) is definitely the right approach for
this, and adjusted NetBSD and OpenBSD to likewise use it.
2024-06-18 17:04:16 -04:00
John Ericson
4bd76beac0 windows.mingw_w64*: Fetch common attrs from the headers package
This is the most upstream one, and so to avoid infinite recursion we
should get the things from it. This isn't needed per-se now, but will be
after the next commit.
2024-06-18 15:52:16 -04:00
Alexis Hildebrandt
755b915a15 treewide: Remove indefinite article from meta.description
nix run nixpkgs#silver-searcher -- -G '\.nix$' -0l 'description.*"[Aa]n?' pkgs \
  | xargs -0 nix run nixpkgs#gnused -- -i '' -Ee 's/(description.*")[Aa]n? (.)/\1\U\2/'
2024-06-09 23:07:45 +02:00
Robert Scott
d7ee5936f4 mingw-w64: disable stackclashprotection hardening flag 2024-06-07 20:23:47 +01:00
Weijia Wang
58b98e9a25 windows.mcfgthreads_pre_gcc_13: drop 2024-04-28 04:43:28 +02:00
a-n-n-a-l-e-e
425588f207
Merge pull request #283551 from a-n-n-a-l-e-e/llvmPackages_8-drop
treewide: drop LLVM8
2024-01-29 22:25:38 -08:00
John Ericson
b5a8242f93
Merge pull request #279039 from wegank/mingw-w64-bump
windows.mingw_w64: 10.0.0 -> 11.0.1
2024-01-29 08:15:02 -05:00
annalee
5650490844
windows.crossThreadsStdenv: llvmPackages_8 -> llvmPackages
removing references to llvmPackages_8 in preparation to drop it from the
tree
2024-01-25 12:23:35 +00:00
Weijia Wang
8fcbe295cc windows.mingw_w64: 10.0.0 -> 11.0.1 2024-01-12 22:11:17 +01:00
Weijia Wang
6e76f39f41 windows.mcfgthreads: unstable-2023-06-06 -> 1.6.1, refactor 2024-01-12 22:10:44 +01:00
Weijia Wang
0c9d7dad11 windows.wxMSW: drop 2024-01-06 01:09:13 +01:00
Aaron Jheng
d38485921a
treewide: vendorSha256 -> vendorHash (#256514) 2023-09-21 19:11:11 +02:00
Moritz Angermann
1e0561d78a nixpkgs/systems: Add ucrt64 as MinGW libc
The Minimalist Gnu for Windows distribution comes with support for
the traditional msvcrt libc, as well as ucrt64 libc. The latter
being the newer universal compiler runtime. We follow the msys2
environment naming convention[1]:

| name       | toolchain | arch    | libc   | libc++    |
|------------|-----------|---------|--------|-----------|
| mingw32    | gcc       | i686    | msvcrt | libstdc++ |
| mingw64    | gcc       | x86_64  | msvcrt | libstdc++ |
| ucrt64     | gcc       | x86_64  | ucrt   | libstdc++ |
| clang32    | llvm      | i686    | ucrt   | libc++    |
| clang64    | llvm      | x86_64  | ucrt   | libc++    |
| clangarm64 | llvm      | aarch64 | ucrt   | libc++    |

For now nixpkgs only supports the first three with this commit.

--
[1]: https://www.msys2.org/docs/environments/
2023-09-08 10:56:08 +00:00
Vladimír Čunát
b4cc333048
Merge branch 'master' into staging-next 2023-09-04 20:19:44 +02:00
ajs124
44c3cb965f windows.jom: remove
depends on qt4
versions > 1.1 support qt5, but our qt5 packages do not
and most likely will never support windows
2023-09-04 13:54:51 +02:00
marius david
097d59184b windows.dlfcn: init at 1.3.1 2023-08-28 21:31:57 +03:00
Adam Joseph
2affd455a4 gccCrossStageStatic: enable dynamic libraries, rename to gccWithoutTargetLibc
This commit allows `gccCrossStageStatic` to build dynamically-linked
libraries.  Since is no longer restricted to building static
libraries its name is no longer appropriate, and this commit also
renames it to the more-accurate `gccWithoutTargetLibc`.

By default, you can't build a gcc that knows how to create dynamic
libraries unless you have already built the targetPlatform libc.

Because of this, our gcc cross-compiler is built in two stages:

  1. Build a cross-compiler (gccCrossStageStatic) that can build
     only static libraries.

  2. Use gccCrossStageStatic to compile the targetPlatform libc.

  3. Use the targetPlatform libc to build a fully-capable cross
     compiler.

You might notice that this pattern looks very similar to what we do
with `xgcc` in the stdenv bootstrap.  Indeed it is!  I would like to
work towards getting the existing stdenv bootstrap to handle cross
compilers as well.  However we don't want to cripple `stdenv.xgcc`
by taking away its ability to build dynamic libraries.

It turns out that the only thing gcc needs the targetPlatform libc
for is to emit a DT_NEEDED for `-lc` into `libgcc.so`.  That's it!
And since we don't use `gccCrossStageStatic` to build anything other
than libc, it's safe to omit the `DT_NEEDED` because that `libgcc`
will never be loaded by anything other than `libc`.  So `libc` will
already be in the process's address space.

Other people have noticed this; crosstool-ng has been using this
approach for a very long time:

  36ad0b17a7/scripts/build/cc/gcc.sh (L638-L640)
2023-07-01 13:12:40 -07:00
Sergei Trofimovich
c6132dcf23 pkgsCross.mingwW64.windows.mcfgthreads: add gcc13 compatible version
Upstream `gcc-13` merged `mcfgthreads` support with a caveat: it's
headers interface is not compatible with the patch `nixpkgs` was
carrying in `gcc-12` and before.

To keep both new (`gcc13`) and old (`_pre_gcc13`) version I held back
previous `windows.mcfgthreads` attribute as
`windows.mcfgthreads_pre_gcc_13`. It is used for `gcc` before 13.

The change fixes the build of `pkgsCross.mingwW64.stdenv` itself and
example program:

    $ nix build --impure --expr 'with import ./. {}; pkgsCross.mingwW64.re2c.override { stdenv = pkgsCross.mingwW64.gcc11Stdenv; }'
2023-06-08 07:43:56 +01:00
Felix Buehler
cdb39a86e0 treewide: use optionalString 2023-02-13 21:52:34 +01:00
Sergei Trofimovich
3bef3f8c4d pkgsCross.mingwW64.windows.mingw_w64: backport parallel build fixes
Without the change build frequently fails on `gnumake-4.4` as:

    x86_64-w64-mingw32-dlltool: cannot delete libmsvcr120d_defs02133.o: No such file or directory
    x86_64-w64-mingw32-dlltool: cannot delete libmsvcr120d_defs02134.o: No such file or directory

Pull upstream patches that fix temporary file collisions and add
missing dll dependencies.
2022-12-01 08:31:11 +00:00
Christian Kögler
dd8a3687b3
Merge pull request #173253 from RasmusRendal/mingw10
mingw-w64: 9.0.0 -> 10.0.0
2022-08-19 09:07:36 +02:00
Sergei Trofimovich
d82ce04557 windows.mingw_w64: enable stripping
With 0507725 "setup-hooks/strip.sh: run RANLIB on static
archives after stripping" it should now be safe to run strip
on wider range of .a files.

mingw-w64 is a good example where a reference was preserved
to gcc from intermediate stage. Enabling stripping by default
decreases `pkgsCross.mingw32` closure for 20%:

Before:

    $ nix path-info -rsSh $(nix-build -A pkgsCross.mingw32.stdenv)
    ...
    /nix/store/qzhkidff0wxhqf2gi97ng6qismzvpnbp-stdenv-linux 43.6K    1.0G

After:

    $ nix path-info -rsSh $(nix-build -A pkgsCross.mingw32.stdenv)
    ...
    /nix/store/fj4dv1n3sa3jgcb1j3nwn6njsf943n48-stdenv-linux 43.6K  792.4M
2022-07-28 21:55:15 +01:00
github-actions[bot]
39ddfff2f2
Merge staging-next into staging 2022-05-18 18:01:51 +00:00
github-actions[bot]
925219f62b
Merge master into staging-next 2022-05-18 18:01:13 +00:00
Shea Levy
121a26897f
npiperelay: init at 0.1.0 2022-05-18 08:15:04 -04:00
Janne Heß
c911240e9c
Revert "Add mingwW64-llvm cross-system." 2022-05-18 13:50:23 +02:00
Rasmus Rendal
6932bbea63
mingw-w64: 9.0.0 -> 10.0.0 2022-05-16 12:36:21 +02:00
Shea Levy
504d38ae7b
cross: Allow Windows toolchains to use ucrt as libc. 2022-05-06 10:54:52 -04:00
Shea Levy
4447d4071b
mingw-w64: 9.0.0 -> 10.0.0 2022-05-06 10:54:51 -04:00
Yana Timoshenko
719567e91f maintainers: update personal details 2021-12-31 21:48:55 +03:00
Sandro
96c17beaf5
Merge pull request #145205 from Stunkymonkey/treewide-pname-version-1 2021-11-13 19:32:52 +01:00
Felix Buehler
9480444dae treewide: rename name to pname&version 2021-11-09 22:24:57 +01:00
Raymond Gauthier
6ea34850ff
mingw_w64_pthreads: enable 'static' lib output
This make this 'mingw_w64_pthreads' package suitable for
use when cross compiling rust code from linux to windows.
2021-10-12 09:48:46 -04:00
Ben Siraphob
2f94991628 treewide: fix redirected URLs
Using the script in maintainers/scripts/update-redirected-urls.sh
2021-08-01 00:01:50 +07:00
Philipp
c60a0b0447
mingw-64: 6.0.0 -> 9.0.0 2021-07-20 22:34:50 +02:00
John Ericson
18c38f8aee treewide: All the linker to be chosen independently
This will begin the process of breaking up the `useLLVM` monolith. That
is good in general, but I hope will be good for NetBSD and Darwin in
particular.

Co-authored-by: sterni <sternenseemann@systemli.org>
2021-05-14 21:29:51 +00:00
Taeer Bar-Yam
c5e5ea90e1 libgnurx: output libgnurx.a when static 2021-04-28 10:15:37 -04:00
Sandro Jäckel
3453b89f4b
lzma: deprecate alias 2021-04-04 19:49:52 +02:00
John Ericson
bc1f7c5d7f mcfgthreads: 9570e5ca -> 10y2x3x6
The latest version non longer has `-Werror` (at our request; thanks!) so
we no longer need to patch it out.
2021-03-12 15:54:05 +00:00
sternenseemann
81e5833fd1 mcfgthreads: fix syntax
PR #115603 / 8ad96b7786 introduced a
syntax error by introducing an '' inside an indented string and thus a
syntax error. Was merged despite the failing ofborg check.
2021-03-11 23:59:14 +01:00
Michael Roitzsch
8ad96b7786 mcfgthreads: enable cross-compiling on Darwin
using -Werror is problematic in general, remove for all platforms
fixes #97214
2021-03-09 21:23:19 +01:00