msys2 / MINGW-packages

Package scripts for MinGW-w64 targets to build under MSYS2.
https://packages.msys2.org
BSD 3-Clause "New" or "Revised" License
2.28k stars 1.22k forks source link

[RFC] Recommend/Default to UCRT64 instead of MINGW64 #13371

Closed lazka closed 2 years ago

lazka commented 2 years ago

This mainly means:

What needs to be done first:

There are 11 packages not built for ucrt64 right now: https://packages.msys2.org/repos

MehdiChinoune commented 2 years ago

For the packages not available on UCRT64, if they are unbuildable with both MINGW64 and UCRT64 just drop them especially if they are too old or abandoned.

jeremyd2019 commented 2 years ago

There are 11 packages not built for ucrt64 right now: https://packages.msys2.org/repos

  • Figure out which packages
Python script to generate ```python #!/usr/bin/env python import re import pacdb pfxre = re.compile(r'^mingw-w64(?:-clang|-ucrt)?-(?:x86_64|i686|aarch64)-') mingw64 = pacdb.mingw_db_by_name('mingw64') ucrt64 = pacdb.mingw_db_by_name('ucrt64') mingw64names = {pfxre.sub('mingw-w64-', pkg.name) for pkg in mingw64} ucrt64names = {pfxre.sub('mingw-w64-', pkg.name) for pkg in ucrt64} updates = mingw64names - ucrt64names print(updates) ```
Biswa96 commented 2 years ago

One liner

grep -r mingw_arch --include PKGBUILD | grep mingw64 | grep -v ucrt64 
stahta01 commented 2 years ago

I am trying to build mingw-w64-arm-none-eabi-gcc, mingw-w64-arm-none-eabi-newlib, and mingw-w64-arm-none-eabi-binutils for UCRT64.

Tim S.

MehdiChinoune commented 2 years ago

~dnscrypt-proxy: source is not available anymore, don't know why. They recommend to build dnscrypt-wrapper https://www.dnscrypt.org/#dnscrypt-server, but I don't know if it could be considered as replacement or not!~ globjects: Couldn't be built in all envs, maybe we should try git! creduce: same as globjects

stahta01 commented 2 years ago

I am also trying to add UCRT64 support to 'mingw-w64-riscv64-unknown-elf-gcc' and 'mingw-w64-riscv64-unknown-elf-newlib'.

Edit: After I get mingw-w64-arm-none-eabi-newlib to build I will start work on mingw-w64-riscv64-unknown-elf-newlib.

Tim S.

wszqkzqk commented 2 years ago

Will there be ucrt32 to take the place of mingw32?

revelator commented 2 years ago

globjects has not been able to build for years im afraid, glbinding one of the dependencies made some changes that broke it and it was newer updated so might as well remove it.

stahta01 commented 2 years ago

The newlib PRs are #13404 and #13403 the GCC packages take so long that the build times out. Once the changes to mingw-w64-arm-none-eabi-newlib and mingw-w64-riscv64-unknown-elf-newlib are in the repo I hope the GCC changes will run without timeout on the CI server.

Edit: I have decide to work on mingw-w64-riscv64-unknown-elf toolchain before the Arm toolchain. It is building faster.

Edit2: I gave up on the packages because someone else was doing an PR before I got done.

Tim S.

lazka commented 2 years ago

Will there be ucrt32 to take the place of mingw32?

There are no plans for a ucrt32 atm

kmilos commented 2 years ago

How about defaulting MINGW_ARCH=ucrt64 in makepkg-mingw as well?

lazka commented 2 years ago

How about defaulting MINGW_ARCH=ucrt64 in makepkg-mingw as well?

hm, good point. I'm worried that this will break things though. There is already a warning printed that calling it in a way that makes it use the default is deprecated. https://github.com/msys2/MSYS2-packages/blob/390cd56562eca024dcf2164d9444e5aa7cf7c6a8/pacman/makepkg-mingw#L94

lazka commented 2 years ago

I think we can leave the two remaining packages as is for now (mingw-w64-julia, mingw-w64-usbview-git), they don't even build under MINGW32/64 right now.

The next steps would be to create a new installer and merge https://github.com/msys2/msys2.github.io/pull/227 and https://github.com/msys2/msys2.github.io/pull/228 (feedback on those PRs welcome)

The only known issue left is #13608, but we can look at that later.

lazka commented 2 years ago

All done now. If any related issues come up, please let us know, or create new issues.