-
Notifications
You must be signed in to change notification settings - Fork 3.1k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[windows-2022] Please remove C:\Strawberry\c\bin
from PATH
#5459
Comments
@galeksandrp nice meme! I'm afraid we can't easily remove strawberry perl from the path due to historical reasons. Many users will be broken if we do this — for example, this was the issue when we occasionally messed up the path #123 |
@miketimofeev Actually, I don't request removing
from
I'm afraid I'm not so tight with
|
@galeksandrp Hi! We can’t remove strawberry toolchain from search paths. While Perl is mostly arch-independent in terms of modules, there are also so-called PerlXS modules which (ab)use C/CXX code extensions, plus, strawberry’s toolchain is incompatible with mingw one (and vice versa). Given that we have nothing to do here I am going to close the issue, but feel free to reach us out again. |
@miketimofeev Can you please reconsider removing Strawberry Perls MinGW distribution from the runners PATH, even if that breaks PerlXS modules? Having an entire MinGW distribution in the PATH causes all sorts of problems depending on DLL search path order and files being searched for. I have seen problems due to Strawberry Perl pop up consistently, from linkers picking up incompatible libraries, but also hard-to-debug application crashes because executables loaded some incompatible DLL from the Strawberry Perl path. Even CMake is configuring Strawberry Perls libraries when compiling for MSVC: avrdudes/avrdude#1196 Other applications (such as Git for Windows) know how to hide their MinGW distribution properly. They do this for a reason. |
This seems fairly broken as a concept. What's the purpose of Strawberry Perl in Github Actions? To provide a full-fledged mingw userland and a perl to go with it (that by the way causes build systems to misdetect the compiler and see Strawberry GCC instead of MSVC!!!) or to provide people with a perl interpreter for the use of running perl scripts? Which use case is more common? People needing a perl interpreter, or people building PerlXS modules in Github Actions? Why are you optimizing for the latter case, while breaking the former case? Why, if I use Github Actions to build some C and Python code, and I never knowingly use Perl and didn't ask for it to be installed, do I get my C and Python code attempting to build against Strawberry Perl's private mingw userland? Seriously? What the heck? Quite frankly it is embarrassing to be told "why yes, our CI images are broken by default, and it is the responsibility of people who have never heard of the perl programming language in the first place to go remove Perl from their build environment in order to stop accidentally building their software against Perl". What kind of footgun is this anyway? (Yeah, yeah, I have heard of Perl before, I'm not the most confused of the users I'm talking about. But. It's things like this that make me wish I didn't know what Perl is.) The inclusion of a broken toolchain just... sprinkled... all over the default PATH has been a bug for years, and messed people up for years. It would be great if that were to be solved instead of handwaved away.
I'm sorry to hear that messing with the path sometimes caused issues for Perl users wanting a specific Perl. But I really don't think that's my problem as a non-Perl user, who doesn't want perl at all. I don't care if unused things are in the Actions runner But it's really unfair to have broken stuff in the PATH that actively breaks CI or causes it to produce truly bizarre results. And it's really unfair to tell lots of people "in order to have minimally functional CI, you need to go delete some preinstalled stuff which you weren't using". I would like Github Actions to provide some solution that doesn't break non-Perl users by default. Breaking the build should be something you opt into. Breaking the majority of users because "we cannot regress for the minority of PerlXS users" is not a good excuse. This would be true even if we don't count the fact that PerlXS users possess the domain specific knowledge to configure PerlXS to work, while non-Perl users don't usually possess the domain specific knowledge to deconfigure PerlXS. |
CMake on Windows is now identifying `C:/Strawberry/c/lib/libglut.a` as the FreeGLUT library, but MSVC can't link to it because it's a GCC static library. This Strawberry thing apparently is a full install of MinGW as part of some Perl installation: actions/runner-images#5459 In the CI test workflow we download a pre-compiled GLFW library and link to it. CMake also finds that FreeGLUT library, and so DIPviewer is linked to both. This should be fine if the FreeGLUT library were compatible with MSVC. In the deploy workflow we download FreeGLUT sources, compile them, and link against the result. This should still work. But I don't know why the two workflows do different things, we should unify them.
* Ignore `C:/Strawberry/perl` PATH in Windows-2022 image. Turns out it contains a broken pkg-config. * Remove PkgConfigHelper. * Restore "*.sf3" soundfonts loading.
If you try to run That version of Workaround: - name: Set up PATH on Windows
# Needed to use GNU patch instead of Strawberry Perl patch
if: runner.os == 'Windows'
run: echo "C:\Program Files\Git\usr\bin" >> $env:GITHUB_PATH |
I've been having a hell of a time getting Qt configured on my Windows machine, with a whole bunch of assorted errors during the configuration process. I finally tracked the problem down to this exact issue: the StrawberryPerl MinGW toolchain lurking in PATH was interfering with the MinGW toolchain shipped with Qt. This was an extremely frustrating couple of days, and only now after finally nuking StrawberryPerl's C directory from my toolchain Qt is building just fine. Now that ActiveStatePerl has gone pay-to-play, StrawberryPerl is the only convenient FOSS Perl interpreter left for Windows. I only need Perl for system requirements for other software. I definitely don't need anything specifically for PerlXS development, and I suspect a lot of other people are in the same boat. At bare minimum, there should be an installer configuration option that asks the user whether or not to slap StrawberryPerl's MinGW into PATH, because for a lot of users that will not be what they want. |
…d of hardcode After GitHub bumped its Windows Actions runner image, our LSP CI is failing, because Chololatey doesn't have g++ anymore. While the runner image is an absolute disaster (refusal to remove Strawberry Perl being one, see actions/runner-images#5459), we still need to use it, and thus still need to come up with a more robust way of uninstalling g++/clang++. This commit removes hardcoded g++ locations, instead it uses `Get-Command` in powershell to locate `g++` and delete all of them.
github's mingw is incompatible to old strawberry's 5.32 mingw. See e.g. actions/runner-images#5459
github's mingw is incompatible to old strawberry's 5.32 mingw. See e.g. actions/runner-images#5459
Description
Some programming languages maintainers
love
, justlove
to redistributeGCC
toolchain. Some sons of devils* even add it toPATH
, borking some innocent dev pipeline.Don't be bad, cleanup the
PATH
.Virtual environments affected
Image version and build link
20220426.1
Is it regression?
No response
Expected behavior
I expect do not have not
mingw-w64
GCC
toolchain inPATH
becauseGCC
toolchain just like wife - it's hard to find one compatible and easy to broke.Actual behavior
Strawberry
abusing myChocolatey
PATH
.*Repro steps
choco uninstall -y mingw
get-command gcc
The text was updated successfully, but these errors were encountered: