-
Notifications
You must be signed in to change notification settings - Fork 49
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
Socket::getaddrinfo can now fail without returning error #221
Comments
Confirmed. Presumably related to #220 |
There's some weird shit going on there. This is not limited to Strawberry builds - I see the same in my own builds of 5.40.0 and the latest devel release (5.41.4). The " UPDATE:
When building the Socket module after perl has been built, the "probing" that is done adds those definitions to the For now, it looks to me that re-installing the Socket module is a correct workaround. |
Yes indeed, thanks for the investigation and the workaround.
Do you have an idea why the Socket module included with Strawberry Perl 5.38 was fine ? Perl core modules might have been (re)built in a second pass in previous Strawberry releases ? |
The Strawberry Perl build process has a step to update any of the dual-life modules (see below). These are under the However,
Perl-Dist-Strawberry/share/64bit-5.38.2.2.pp Lines 99 to 109 in 8ec8276
|
Actually, it turns out that the cpan upgrade step installs into |
Are these exceptions and this (to me) unexpected installation idea being fed back to main-Perl? My best-case scenario is that the SP build stuff gets incorporated into their CI so that any commits that cause a problem are visible instantly, somewhat like PDL has. |
The exceptions are modules that fail to install for some reason. Usually there are upstream reports (e.g. https://rt.cpan.org/Public/Bug/Display.html?id=149072). We do raise these when building new versions of SP. Failures also trigger reports on cpantesters, but obviously after an SP release. |
No push towards making more CI for main Perl so that this sort of thing becomes impossible? |
I lack the tuits for that but it would be a welcome contribution. FWIW, there is a Windows CI on the main Perl repo. It uses an older version of winlibs than we use for SP but it should flag many errors. That said, it won't identify issues with dual-life modules. That comes back to the smoke testers and BBC reports. |
What (approximately) would a contributor need to change about the current Windows CI (which I have looked over in the past) to make it be using the latest winlibs? I think I'm offering to PR that ;-) |
The main problem with Socket is that the source on CPAN differs from the source that is being included in the perl source. To complicate matters, the test suite for both variants reports no test failures - and it's the same test suite that gets run in both cases. I'm fairly sure this situation has existed since Socket-2.036, maybe even earlier.
|
Thanks Rob. @mohawk2 - if you mean CI for the main perl5 repo then it should be a case of changing the winlibs URL to a more recent version (full list at https://winlibs.com/). That won't fix issues with symlinks and the like given we set those as part of the Strawberry Perl config using code in this repo. Perl-Dist-Strawberry/share/64bit-5.40.0.1.pp Lines 90 to 109 in 8ec8276
Perl-Dist-Strawberry/lib/Perl/Dist/Strawberry/Step.pm Lines 297 to 304 in 8ec8276
It would be useful if those were tested at the Perl source. The code to change the settings is not overly complex so it could be added as an additional config on that repo. |
It looks like the issue arises, not because of any difference in the sources, but because of a difference in the 2 environments. |
I think it's time to open an issue in Perl. |
Turns out I just need to prepare the PR I mooted at the end of https://rt.cpan.org/Public/Bug/Display.html?id=141325. I think I became a little concerned about what happens if those config keys are defined, but the underlying system doesn't support one or more of them. Anyway - I'll just make the PR, and then it's up to the powers that be whether it gets merged. I'll post a link to it here (when it's done) later today. |
Affects only mingw-w64 builds of perl. Fixes: StrawberryPerl/Perl-Dist-Strawberry#221
Thanks a lot ! I'm still unsure I really understand why the Socket module included with Strawberry Perl 5.38.2 doesn't suffer from the problem though. |
Me, too. When you
|
Actually, Perl 5.38 comes with Socket 2.036. SP 5.38.2.2 was built after Socket 2.037 was released and so it was upgraded as part of the SP 5.38 build process. Perl 5.40 comes with Socket 2.038. This is the current version on CPAN and so it is not updated as part of the SP 5.40 build process. Assuming a new release of SP 5.40.0 is not needed I'll add a rebuild to the 5.40.1 build config when relevant. |
I think that if the vendor decides to upgrade a perl core module after perl has been built, it is more transparent if the upgrade is placed in perl/vendor/lib rather than overwriting the existing perl/lib version. |
FWIW, it's been this way for at least twelve years. I'd be in favour of the change, though. |
This code performs an invalid call to
Socket::getaddrinfo
(invalid value for socktype parameter):$err
is supposed to contain an error message in this case, as seen in the result with Strawberry Perl 5.38.2.2 64bit:But the result with Strawberry Perl 5.40.0.1 64bit is:
The text was updated successfully, but these errors were encountered: