strawberryperl / perl-dist-strawberry Goto Github PK
View Code? Open in Web Editor NEWTooling to build and package releases for Perl on Windows.
Home Page: https://strawberryperl.com
License: Other
Tooling to build and package releases for Perl on Windows.
Home Page: https://strawberryperl.com
License: Other
Hi,
it seems files from the share/perl-5.32 folder are missing in the CPAN release. This involves the error like the following on the console while building perl 5.32:
ERROR: non-existing file 'C:\Strawberry\perl\site\lib\auto\share\dist\Perl-Dist-Strawberry\perl-5.32\win32_FindExt.pm' at C:/Strawberry/perl/site/lib/Perl/Dist/Strawberry/Step.pm line 293.
ERROR: non-existing file 'C:\Strawberry\perl\site\lib\auto\share\dist\Perl-Dist-Strawberry\perl-5.32\win32_config_H.gc' at C:/Strawberry/perl/site/lib/Perl/Dist/Strawberry/Step.pm line 293.
ERROR: non-existing file 'C:\Strawberry\perl\site\lib\auto\share\dist\Perl-Dist-Strawberry\perl-5.32\win32_config.gc.tt' at C:/Strawberry/perl/site/lib/Perl/Dist/Strawberry/Step.pm line 293.
I am trying to use PDL
(https://metacpan.org/pod/PDL) and for plotting the ndarrays
, I need Graphics libraries. So I tried to install PDL::Graphics::PGPLOT
cpanm PDL::Graphics::PGPLOT
--> Working on PDL::Graphics::PGPLOT
Fetching http://www.cpan.org/authors/id/E/ET/ETJ/PDL-2.047.tar.gz ... OK
Configuring PDL-2.047 ... OK
Building and testing PDL-2.047 ... OK
Successfully installed PDL-2.047
1 distribution installed
and PDL::Graphics::PLplot
C:\strawberry-perl-5.32.1.1-64bit-PDL>cpanm PDL::Graphics::PLplot
--> Working on PDL::Graphics::PLplot
Fetching http://www.cpan.org/authors/id/D/DH/DHUNT/PDL-Graphics-PLplot-0.74.tar.gz ... OK
Configuring PDL-Graphics-PLplot-0.74 ... OK
Building and testing PDL-Graphics-PLplot-0.74 ... OK
Successfully installed PDL-Graphics-PLplot-0.74
1 distribution installed
Trying to use those libraries throw error:
pdl> use PDL::Grpahics::PGPLOT
Compile error: Can't locate PDL/Grpahics/PGPLOT.pm in @INC (you may need to install the PDL::Grpahics::PGPLOT module) (@INC contains: C:/strawberry-perl-5.32.1.1-64bit-PDL/perl/site/lib/MSWin32-x64-multi-thread C:/strawberry-perl-5.32.1.1-64bit-PDL/perl/site/lib C:/strawberry-perl-5.32.1.1-64bit-PDL/perl/vendor/lib C:/strawberry-perl-5.32.1.1-64bit-PDL/perl/lib) at (eval 414) line 7.
BEGIN failed--compilation aborted at (eval 414) line 7.
pdl> use PDL::Grpahics::PLplot
Compile error: Can't locate PDL/Grpahics/PLplot.pm in @INC (you may need to install the PDL::Grpahics::PLplot module) (@INC contains: C:/strawberry-perl-5.32.1.1-64bit-PDL/perl/site/lib/MSWin32-x64-multi-thread C:/strawberry-perl-5.32.1.1-64bit-PDL/perl/site/lib C:/strawberry-perl-5.32.1.1-64bit-PDL/perl/vendor/lib C:/strawberry-perl-5.32.1.1-64bit-PDL/perl/lib) at (eval 422) line 7.
BEGIN failed--compilation aborted at (eval 422) line 7.
To practice examples on http://pdl.perl.org/?page=FirstSteps I again tried installing PDL::Graphics::Simple
C:\strawberry-perl-5.32.1.1-64bit-PDL>cpanm PDL::Graphics::Simple
--> Working on PDL::Graphics::Simple
Fetching http://www.cpan.org/authors/id/Z/ZO/ZOWIE/PDL-Graphics-Simple-1.005.tar.gz ... OK
Configuring PDL-Graphics-Simple-1.005 ... OK
Building and testing PDL-Graphics-Simple-1.005 ... FAIL
! Installing PDL::Graphics::Simple failed. See C:\strawberry-perl-5.32.1.1-64bit-PDL\data\.cpanm\work\1621510604.10224\build.log for details. Retry with --force to force install it.
but it fails. Using --force
however installs but using it in program fails:
pdl> use PDL::Graphics::Simple
pdl> imag (sin(rvals(200,200)+1))
Trying gnuplot (PDL::Graphics::Gnuplot)...PDL::Graphics::SImple: Gnuplot exists but yours doesn't support either the x11 or wxt terminal
Trying pgplot (PDL::Graphics::PGPLOT::Window)...nope
Trying plplot (PDL::Graphics::PLplot)...nope
Trying prima (PDL::Graphics::Prima)...nope
Runtime error: Sorry, all known plotting engines failed. Install one and try again.
pdl>
Looking at the error Gnuplot exists but yours doesn't support either the x11 or wxt terminal
, I don't know what to do.
How to get over this error and use PDL
with strawberry perl?
Any help?
Hi
W11 programs (64bits) are best installed in C:\Program Files\
I cannot install Strawberry Perl there.
Time to fix this?
All the best
Marco
Win32::::IsWinNT() started checking its usage with version 0.53.
This causes problems with PPM shipped with Strawberry Perl 5.30.1.1. One example is one reported by this RT issue:
https://rt.cpan.org/Public/Bug/Display.html?id=130354
PPM.pm line 227, the line where the problem actually is, currently does this:
!&Win32::IsWinNT && exists $Win9x_denied{lc($package)}) {
Now it seems that because IsWinNT is called with ampersand, @_ is implicitly passed as arguments triggering the usage check added in Win32 0.53.
Changing line 227 in PPM.pm to this allows PPM to work as it did before:
!Win32::IsWinNT() && exists $Win9x_denied{lc($package)}) {
There's also another similar call in PPM.pm seems to be for updates/upgrades only because it's not triggering problems with ppm installs.
When attempting to access a 64-bit MS Outlook instance to send a mail message (or do anything else in Outlook), this error occurs:
No type library matching "Microsoft Outlook" found at .\testmail2.pl line 4.
Win32::OLE(0.1712): GetOleTypeLibObject() Not a Win32::OLE::TypeLib object at C:/Strawberry/perl/vendor/lib/Win32/OLE/Const.pm line 49.
When line 4 reads:
use Win32::OLE::Const 'Microsoft Outlook';
This is a known issue and, according to this github link jandubois/win32-ole#9 is resolved. The release with the issue resolved is at: https://metacpan.org/release/JDB/Win32-OLE-0.1713
There are multiple CPAN packages that use this. Including Mail::Outlook, which is how I wound up going down this rathole in the first place as that error message is also in a a Mail::Outlook issue
It's currently impossible to pass โ
as an argument to Perl on Windows. Similarly, it's currently impossible to perform files operations on arbitrarily-named files using builtins (e.g. open
, stat
, etc) This can be fixed for people with the May 2019 update of Windows.
First some background. Every Windows system call that deals with strings comes in two varieties: An "A"NSI version that uses the Active Code Page (aka ANSI Code Page), and a "W"ide version that uses UTF-16le.[1] Perl uses the A
version of all system calls. That includes the call to get the command line, and all the builtin functions such as open
and stat
.
The ACP is hard-coded. (Or maybe Windows asks for the system language during setup and bases it on that? I can't remember.) For example, it's 1252 on my system, and there's nothing I can do to change that. Notably, chcp
has no effect on the ACP.
At least, that was the case until recently. The May 2019 update to Windows added the ability to change the ACP on a per-application basis via its manifest.
I would like to suggest setting the ACP of Strawberry Perl to 65001 (UTF-8) via its manifest as described in the link above.
This change is mostly backwards compatible. Win32::GetACP()
and other means of obtaining the code page will continue to return the correct code. Where it was returned 1252, 1251, or whatever, it will now return 65001. Only code that assumed a system used a specific code page will break.
SetFileApisToOEM
can be used to change the encoding used by some A
system calls to the OEM CP.The winlibs gcc11 system we are currently using has a large number of extra files in it. We need to sort out which ones to retain.
A quick diff of the bin dir filenames between the strawberry perl 8.3 set and the winlibs gcc11 set is below. I filtered out all lines with clang or LLVM assuming we don't need them.
Many of the DLLs we have our own versions of via the extlibs builds (e.g. zlib1.dll) but others might be useful (ninja.exe?).
Others we need to get from elsewhere.
gmake is one example. We do already have it at https://strawberryperl.com/package/kmx/64_tools/ although that's a 2014 build. Maybe we can grab one from msys2?
--- strawberry.txt 2023-02-27 20:21:04.902942100 +1100
+++ winlibs.txt 2023-02-27 20:20:58.262130700 +1100
@@ -1,13 +1,43 @@
+FileCheck.exe
addr2line.exe
+analyze-build
ar.exe
as.exe
+bugpoint.exe
c++.exe
c++filt.exe
+count.exe
cpp.exe
+diagtool.exe
dlltool.exe
dllwrap.exe
-dwp.exe
+dos2unix.exe
+doxygen.exe
+dsymutil.exe
elfedit.exe
+find-all-symbols.exe
g++.exe
gcc-ar.exe
gcc-nm.exe
@@ -18,40 +48,362 @@
gcov.exe
gdb-add-index
gdb.exe
-gdborig.exe
gdbserver.exe
+gdc.exe
gendef.exe
genidl.exe
-genpeimg.exe
gfortran.exe
-gmake.exe
gprof.exe
+hmaptool
+iconv.exe
+intercept-build
+jwasm.exe
ld.bfd.exe
ld.exe
-ld.gold.exe
+ld.lld.exe
+ld64.lld.darwinnew.exe
+ld64.lld.darwinold.exe
+ld64.lld.exe
+libLTO.dll
+libRemarks.dll
libatomic-1.dll
+libdl.dll
+libexpat-1.dll
+libffi-8.dll
+libfindAllSymbols.dll
libgcc_s_seh-1.dll
+libgccjit-0.dll
+libgfortran-5.dll
+libgmp-10.dll
libgomp-1.dll
+libgomp-plugin-nvptx-1.dll
+libiconv-2.dll
+libintl-8.dll
+libisl-23.dll
+liblldCOFF.dll
+liblldCommon.dll
+liblldCore.dll
+liblldDriver.dll
+liblldELF.dll
+liblldMachO.dll
+liblldMachO2.dll
+liblldMinGW.dll
+liblldReaderWriter.dll
+liblldWasm.dll
+liblldYAML.dll
+liblldb.dll
+liblzma-5.dll
+libmpc-3.dll
+libmpfr-6.dll
+libncursesw6.dll
libquadmath-0.dll
+libsource-highlight-4.dll
libssp-0.dll
libstdc++-6.dll
libwinpthread-1.dll
+libxml2-2.dll
+libz3.dll
+libzstd.dll
+llc.exe
+lld-link.exe
+lld.exe
+lldb-argdumper.exe
+lldb-instr.exe
+lldb.exe
+lli-child-target.exe
+lli.exe
+lto-dump.exe
+lua54.dll
+mac2unix.exe
+mingw32-make.exe
+mman-win.dll
+modularize.exe
+nasm.exe
+ndisasm.exe
+ninja.exe
nm.exe
+not.exe
+obj2yaml.exe
objcopy.exe
objdump.exe
+opt.exe
+pexports.exe
+pp-trace.exe
ranlib.exe
readelf.exe
+sancov.exe
+sanstats.exe
+scan-build
+scan-build-py
+scan-build.bat
+scan-view
size.exe
+split-file.exe
strings.exe
strip.exe
-widl.exe
+unix2dos.exe
+unix2mac.exe
+verify-uselistorder.exe
+vsyasm.exe
+wasm-ld.exe
windmc.exe
windres.exe
x86_64-w64-mingw32-c++.exe
x86_64-w64-mingw32-g++.exe
-x86_64-w64-mingw32-gcc-8.3.0.exe
+x86_64-w64-mingw32-gcc-11.2.0.exe
x86_64-w64-mingw32-gcc-ar.exe
x86_64-w64-mingw32-gcc-nm.exe
x86_64-w64-mingw32-gcc-ranlib.exe
x86_64-w64-mingw32-gcc.exe
+x86_64-w64-mingw32-gdc.exe
x86_64-w64-mingw32-gfortran.exe
+xxhash.dll
+yaml-bench.exe
+yaml2obj.exe
+yasm.exe
+ytasm.exe
+zlib1.dll
The limits.h header in mingw32 sets PIPE_BUF to 512, which works fine in programs I have tried. Strawberry Perl should be using that value. It is currently left undefined as shown below:
perl -v
This is perl 5, version 32, subversion 1 (v5.32.1) built for MSWin32-x64-multi-thread
perl -MPOSIX=PIPE_BUF -e "print PIPE_BUF;"
Your vendor has not defined POSIX macro PIPE_BUF, used at -e line 1
As per Thilas/chocolatey-packages#13, it looks like the MSI setup of StrawberryPerl does not support upgrades of an existing install. Why is that? Could it be supported?
If not, what is the best course of action for the chocolatey package I'm maintaining? For instance, if I uninstall an existing install before installing the new version, is there any chance a user will loose something (i.e. packages, config, ...)? Any recommendation?
I scanned the recommended .msi installer distributed from the website with VirusTotal and CRDF detected some sort of malicious software.
File on the website: https://strawberryperl.com/download/5.32.0.1/strawberry-perl-5.32.0.1-64bit.msi
Virus total: https://www.virustotal.com/gui/url/e30fff6adc317ef3eb37867bd9fb4c9d1d2fbb8aa3dceddabe0a8f309dc56a49/details
Is this a false positive?
Hi
I got the follwing error when I tried to build PDL-2.020 on strawberry perl 5.30.1.1 64bit and 32bit.
.
.
Loaded ExtUtils::F77 version 1.24
ExtUtils::F77: Unable to guess and/or validate system/compiler configuration
ExtUtils::F77: Will try system=MinGW Compiler=GFortran
(ExtUtils Version 1.24)
Building PDL::Slatec. Turn off WITH_SLATEC if there are any problems
'gsl-config'์(๋) ๋ด๋ถ ๋๋ ์ธ๋ถ ๋ช
๋ น, ์คํํ ์ ์๋ ํ๋ก๊ทธ๋จ, ๋๋
๋ฐฐ์น ํ์ผ์ด ์๋๋๋ค.
no GSL link info (libgsl probably not available)
.
.
So gsl related pdl functions are not compiled.
And strawberry perl 5.30.1.1 32bit has another OpenGL related problem.
http://www.cpantesters.org/cpan/report/2790a328-6c85-1014-8029-63bbf30302b6
.
.
g++.exe OpenGLQ.def -o ..\..\..\blib\arch\auto\PDL\Graphics\OpenGLQ\OpenGLQ.xs.dll -mdll -s -L"C:\strawberry-perl-5.30-32bit\perl\lib\CORE" -L"C:\strawberry-perl-5.30-32bit\c\lib" "C:\strawberry-perl-5.30-32bit\perl\lib\CORE\libperl530.a" "C:\strawberry-perl-5.30-32bit\c\i686-w64-mingw32\lib\libm.a" "C:\strawberry-perl-5.30-32bit\c\i686-w64-mingw32\lib\libmoldname.a" "C:\strawberry-perl-5.30-32bit\c\i686-w64-mingw32\lib\libkernel32.a" "C:\strawberry-perl-5.30-32bit\c\i686-w64-mingw32\lib\libuser32.a" "C:\strawberry-perl-5.30-32bit\c\i686-w64-mingw32\lib\libgdi32.a" "C:\strawberry-perl-5.30-32bit\c\i686-w64-mingw32\lib\libwinspool.a" "C:\strawberry-perl-5.30-32bit\c\i686-w64-mingw32\lib\libcomdlg32.a" "C:\strawberry-perl-5.30-32bit\c\i686-w64-mingw32\lib\libadvapi32.a" "C:\strawberry-perl-5.30-32bit\c\i686-w64-mingw32\lib\libshell32.a" "C:\strawberry-perl-5.30-32bit\c\i686-w64-mingw32\lib\libole32.a" "C:\strawberry-perl-5.30-32bit\c\i686-w64-mingw32\lib\liboleaut32.a" "C:\strawberry-perl-5.30-32bit\c\i686-w64-mingw32\lib\libnetapi32.a" "C:\strawberry-perl-5.30-32bit\c\i686-w64-mingw32\lib\libuuid.a" "C:\strawberry-perl-5.30-32bit\c\i686-w64-mingw32\lib\libws2_32.a" "C:\strawberry-perl-5.30-32bit\c\i686-w64-mingw32\lib\libmpr.a" "C:\strawberry-perl-5.30-32bit\c\i686-w64-mingw32\lib\libwinmm.a" "C:\strawberry-perl-5.30-32bit\c\i686-w64-mingw32\lib\libversion.a" "C:\strawberry-perl-5.30-32bit\c\i686-w64-mingw32\lib\libodbc32.a" "C:\strawberry-perl-5.30-32bit\c\i686-w64-mingw32\lib\libodbccp32.a" "C:\strawberry-perl-5.30-32bit\c\i686-w64-mingw32\lib\libcomctl32.a" -Wl,--enable-auto-image-base
C:/strawberry-perl-5.30-32bit/c/bin/../lib/gcc/i686-w64-mingw32/8.3.0/../../../../i686-w64-mingw32/bin/ld.exe: cannot export boot_PDL__Graphics__OpenGLQ: symbol not defined
collect2.exe: error: ld returned 1 exit status
gmake[3]: *** [Makefile:466: ..\..\..\blib\arch\auto\PDL\Graphics\OpenGLQ\OpenGLQ.xs.dll] Error 1
.
.
There is a known bug only for the MSYS2 and MSWin32 in the GNU Readline Library 8.0 distributed with the Strawberry Perl.
https://lists.gnu.org/archive/html/bug-readline/2019-04/msg00000.html
The bug has already been fixed in version 8.1 (and the latest 8.2, of course).
Is there a plan to update and release the Strawberry Perl distribution in the near feature?
Background to the question:
I'm the author of Term::ReadLine::Gnu
module. Last week I received fail reports showing it was possible to build the XS module the Strawberry Perl, and it was working although it produced some errors.
Term-ReadLine-Gnu-1.44:
- MSWin32-x64-multi-thread / 5.32.1:
- MSWin32-x86-multi-thread-64int / 5.32.1:
It was great news for me.
Last weekend I downloaded and installed the Strawberry Perl. And I made some fixes for it and I am ready to release. But gmake test
still fails due to the bug above.
I would like to know the release plan of this project to write the release note of my moudle.
Dear all
Would you kindly consider adding libfribidi to the next Strawberry version? I'm hacking Prima GUI so that it can support advanced unicode stuff, right-to-left text input, and complex shaping, and fribidi plays a major role there.
Another, but less important addition, is the webp image format, that I included some time ago. Would you possibly consider shipping libwebp, libwebpdemux, and libwebpmux? It's not critical and more of a nice-to-have, but if you do that I'd be very grateful.
/dk
Dear sir.,
I can't access strawberryperl.com from IP 110.49.74.94. please resolve my problem.
Kanit
The mingw toolchain, compiler, pkg-config, etc.. is in the dist bin folder and so is in your global PATH if you have strawberry in your PATH.
This can cause issues with build tools such as cmake, which find this version of the mingw gcc, pkg-config, etc.; when the user may be wanting to use another toolchain in their PATH such as their own version of mingw or Visual Studio.
What I propose is that the mingw toolchain be stored in a different folder and only added to the PATH on the invocation of a module build toolchain: EU::MM, Module::Build, etc..
I don't honestly know the feasibility of this, what kind of hooks would need to go where.
The 5.36 builds are failing the inccode tests. inccode-tie.t is a wrapper around inccode.t after tie-ing @INC
so it fails at the same place.
It seems the do "foo"
and do "bar"
lines are segfaulting. The remaining tests pass when I comment out the do calls and the four tests.
https://github.com/Perl/perl5/blob/29f7cb00f2aea37e282f40583ffe125af868be23/t/op/inccode.t#L244-L262
Anyone have any ideas?
Any details on how to address/upgrade OpenSSL?
There is a recent vulnerability and security advisory with versions prior to 3.0.2
https://www.openssl.org/news/secadv/20220315.txt
OpenSSL Security Advisory [15 March 2022]
Infinite loop in BN_mod_sqrt() reachable when parsing certificates (CVE-2022-0778)
Raising a separate issue so as not to clutter #56
From #56 (comment)
These failures are appearing in the perl tests when running under GCC 10.
op/magic-27839.t ..................................................... ok
# Failed test 186 - ENV store downgrades utf8 in setenv at op/magic.t line 75
# got 'foo=eh zero ๏ฟฝ\n'
# expected /(?^:^(?:foo=)?eh\ zero\ \<A0>$)/
# Failed test 187 - ENV store downgrades utf8 key in setenv at op/magic.t line 75
# got 'eh zero ๏ฟฝ=widekey\r\neh zero ๏ฟฝ=widekey\n'
# expected /(?^:^(?:eh\ zero\ \<A0>=)?widekey$)/
op/magic.t ...........................................................
Failed 2/208 subtests
(less 13 skipped subtests: 193 okay)
op/method.t .......................................................... ok
The only other case I can find is from 2013 and it was unresolved: https://www.nntp.perl.org/group/perl.perl5.porters/2013/05/msg201832.html
Possibly it is an artefact of running under docker. Or it is related to the compiler (I have not checked with GCC 11). Maybe it is a codepage setting somewhere?
Suggested by @plicease - https://rt.cpan.org/Ticket/Display.html?id=130100
Hello,
I noticed this error also in the past and with different straberry portable editions, actually it shows up with latest version: Strawberry Perl 5.32.1.1 (2021-01-24)
The error happens only parsing some CSR or this is my memory about this. I cannot share these CSRs sadly, if really needed I can share some properties of them. let me know in case.
The error comes running a command like: openssl req -noout -modulus -in some.domain.csr
which gives:
Can't open Z:/extlib/_2020Q3__/ssl/openssl.cnf for reading, No such file or directory
19168:error:02001003:system library:fopen:No such process:crypto/bio/bss_file.c:69:fopen('Z:/extlib/_2020Q3__/ssl/openssl.cnf','r')
19168:error:2006D080:BIO routines:BIO_new_file:no such file:crypto/bio/bss_file.c:76:
I have not a Z:
drive in my system so I suspect it is a leftover of the port build.
As remediation I had a simple openssl.cnf
from a friend of mine: attached here I put it in the main directory of my Perls c:\straberry_all\openssl.cnf
and then I set the env var OPENSSL_CONF=c:\straberry_all\openssl.cnf
and the parsing of the same CSR worked as expected.
Thanks
I just installed Strawberry Perl on what I think is Windows 7 (the "OS version" string is blank, everywhere I should be able to pull up that information), 64-bit. I installed by downloading the 64-bit Windows .msi file, running the command prompt (cmd) "as Administrator," going to the folder where the .msi file landed, and typing its name at the prompt. This appeared to succeed, in that I can run a Perl script by typing its name at the command prompt; I have not yet tried double-clicking its icon in Windows Explorer. However, I quickly subsequently observed the following issues:
Using perl -d _scriptfilename_ to run a script under the Perl debugger works -- but first it puts up about thirty lines of error messages, starting with "Unable to get Terminal Size. The Win32 GetConsoleScreenBufferInfo call didn't work. The COLUMNS and LINES environment variables didn't work. at C:/Strawberry/perl/vendor/lib/Term/ReadLine/readline.pm line 410."
The command perldoc -f _functionname_ does not work, as such; I find that the Strawberry Perl binary directory (C:\Strawberry\Perl\bin) is not in the PATH variable -- this, in the same Command window from which I installed Strawberry Perl. (The command does work , when I fully specify the path: C:\Strawberry\Perl\bin\perldoc -f _scriptfilename_ .
As a longtime user of the other popular Perl package for Windows, I have gotten used to either Perl/Tk or Tkx being bundled, such that it is available immediately upon installation. I find that this is not so in this instance. Is this normal behavior?
Generally, it looks as though a number of "environmental" settings (the COLUMNS and LINES variables; addition of the bin directory to the PATH) have not taken place in this installation. Did I do something wrong? Did I neglect to execute a subsidiary setup script or something? Please advise.
Hi,
The Strawberry Perl home page (https://strawberryperl.com/) states that the "msi" version is the "Recommended version".
Do we really want to persist with that recommendation ?
Personally, it's the last version I would want to install ... and if it was actually the only available version then I probably wouldn't install it.
I have a large number of Strawberry Perl installations and they're all "portable" .... thankfully, not one "msi" to be found.
However, I'm not sure that I'm the typical Strawberry Perl user, so I'll leave it as a question for now - and happily close this Issue when I receive an unequivocal answer.
Cheers,
Rob
Within here it appears that there's an OpenSSL version distributed:
C:\Strawberry\c\bin\openssl.exe
OpenSSL> version
OpenSSL 1.1.1i 8 Dec 2020
According to https://www.openssl.org/news/vulnerabilities-1.1.1.html , this seems to be not the latest.
Is this something that could do to be updated, or have I got hold of the wrong end of the stick and the openssl.exe in "Strawberry\c\bin\openssl.exe" isn't coming from here?
I've been migrating a number of automated builds that have some Perl build steps to use the portable version of Strawberry Perl 5.32.1.1. Some of the Perl scripts used by these builds use Perl modules that depend on DLL files in the c/bin
subdirectory. For those:
c:\path\to\strawberry\perl\bin\perl script.pl arg1 arg2
will fail because the c/bin
subdirectory is not in the path. To compensate for that, I attempted to replace such usage with:
c:\path\to\strawberry\portableshell.bat script.pl arg1 arg2
Unfortunately, this logic doesn't properly return the exit status of the Perl script to the caller, depending on how the script is invoked.
From a cmd.exe
prompt, I see the following:
>portableshell.bat -e "exit 1"
>echo %ERRORLEVEL%
1
>cmd /c portableshell.bat -e "exit 1"
>echo %ERRORLEVEL%
0
>cmd /c call portableshell.bat -e "exit 1"
>echo %ERRORLEVEL%
1
Here, the ERRORLEVEL value of 0 for the second invocation (cmd /c portableshell.bat
) does not reflect the Perl exit status.
The builds that I'm modifying invoke the Perl scripts in question from a Makefile or from another Perl script, and not from cmd.exe. For those, the only approach that works is cmd /c call portableshell.bat
:
>type xxx.pl
#!/usr/bin/env perl
system(@ARGV, "-e", "exit 1");
print "Exit: ", $? >> 8, "\n";
>perl xxx.pl portableshell.bat
Exit: 0
>perl xxx.pl cmd /c portableshell.bat
Exit: 0
>perl xxx.pl cmd /c call portableshell.bat
Exit: 1
For migration use cases like mine, it's too easy to replace perl.exe
with portableshell.bat
rather than cmd /c call portableshell.bat
. This works fine, except when the Perl script invoked fails for whatever reason. So using the batch file feels dangerous in that it's too easy to miss error conditions.
I did come up with a patch to the script:
https://github.com/StrawberryPerl/Perl-Dist-Strawberry/blob/master/share/portable/portableshell.bat
in my copy of the portable distribution. If I replace
if not "%1" == "" "%~dp0perl\bin\perl.exe" %* & goto ENDLOCAL
echo ----------------------------------------------
echo Welcome to Strawberry Perl Portable Edition!
with code that uses exit /b
if "%1" == "" goto INTERACTIVE
"%~dp0perl\bin\perl.exe" %*
endlocal
exit /b %ERRORLEVEL%
:INTERACTIVE
echo ----------------------------------------------
echo Welcome to Strawberry Perl Portable Edition!
the script seems to behave reliably regardless of how I trigger the batch file. For example:
>portableshell.bat -e "exit 1"
>echo %ERRORLEVEL%
1
>cmd /c portableshell.bat -e "exit 1"
>echo %ERRORLEVEL%
1
>cmd /c call portableshell.bat -e "exit 1"
>echo %ERRORLEVEL%
1
>perl xxx.pl portableshell.bat
Exit: 1
>perl xxx.pl cmd /c portableshell.bat
Exit: 1
>perl xxx.pl cmd /c call portableshell.bat
Exit: 1
The portableshell.bat file works pretty well, but the batch file system is very archaic now.
It would be useful to have also provide a powershell version.
This should not be hard to do (I assume) so would be a good first issue for someone looking to contribute.
We first noticed this while investigating failures reported by Windows smoke testers in the latest developer release of Net-SSLeay, although we've since been able to reproduce the bug without Net-SSLeay or Perl at all:
https://www.cpantesters.org/cpan/report/11408f94-6c8c-1014-bd64-355a9ee28768
https://www.cpantesters.org/cpan/report/d35ef3c0-6c47-1014-8a31-59579ee28768
OpenSSL's ASN1_*
functions behave strangely with 64-bit editions of Windows and the GCC in 32-bit versions of Strawberry Perl >= 5.30.0.1. This MWE should output the current UTC time plus 1 hour:
#include <time.h>
#include <openssl/asn1.h>
int main(void)
{
ASN1_TIME *tm;
time_t t;
BIO *b;
t = time(NULL);
tm = ASN1_TIME_adj(NULL, t, 0, 60 * 60);
b = BIO_new_fp(stdout, BIO_NOCLOSE);
ASN1_TIME_print(b, tm);
ASN1_STRING_free(tm);
BIO_free(b);
return 0;
}
This outputs the expected result when compiled with the VS compiler, and when compiled with Strawberry Perl 5.28.2.1 x86's GCC. However, with Strawberry Perl 5.30.0.1 x86's GCC:
C:\openssl>date /t
Wed 04/01/2020
C:\openssl>time /t
04:47 PM
C:\openssl>.\asn1_time-5.30.exe
Mar 29 04:28:35 2030 GMT
As you can see, the date is off by almost 10 years.
I brought this up in #win32, and @xenu suggested that it could be down to the introduction of the -D__MINGW_USE_VC2005_COMPAT
flag when building OpenSSL, which causes MinGW to use a 64-bit time_t
.
Hello everyone. I am currently trying to build OpenSSL on Windows. Technically Im trying to build BoringSSL+OQS (open quantum safe).
Anyways, these projects contain a python script called generate_build_files.py, which, in-turn, calls out to Perl to write ASM files for different platforms.
When Perl goes to explicitly close the file descriptor at the end of the script, it fails and reports:
error closing STDOUT: Bad file descriptor at src\crypto\fipsmodule\aes\asm\aesp8-ppc.pl line 3807.
Line 3807 of aesp8-ppc.pl is:
close STDOUT or die "error closing STDOUT: $!";
Which is best practice in Perl, in order to catch errors from closing a FD, rather than having the shutdown of the process take care of it implicitly.
STDOUT is not being closed multiple times. The script is simply closing it once at the end of the routine. This seems like an issue with Perl on Windows, where Perl is not waiting for the descriptor to be fully flushed and closed.
I have tried multiple versions of Strawberry Perl in hopes that this is just a fluke; however, 5.32, 5.30, & 5.24 contain this issue as well. I did not continue testing other versions of Strawberry Perl because I found others reporting this same issue on earlier versions here:
https://www.nntp.perl.org/group/perl.perl5.porters/2016/05/msg236739.html
https://groups.google.com/a/chromium.org/g/boringssl-dev/c/X3DA59J1GM4
Any advice/help would be greatly appreciated <3. Thank you in advance.
Dear,
I recently installed StrawberryPerl, downloading the zip edition for version 5.32.1.1. After uncompressing the zip ball, running the relocation.pl.bat
script and the update_env.pl.bat
as user
I had Perl on my path and it is working well.
However, I am using the cmder console emulator:
https://cmder.app/
and update_env.pl.bat
did break some functionality:
ls --color
doesn't colour the file types and folders anymore.This happened on a Windows 10 machine. Launching a new version of cmder
did not make a difference.
Could you please have a look at this? I am a Linux man and I don't know about HKEYs and the Registry Editor seems black magic to me.
Thanks,
Albert
I'm not sure if this is the right place to report this, but here goes... I have some compiler warnings when installing Text::KnuthPlass, which compiles some XS code (C++). The full description is in PhilterPaper/Text-KnuthPlass#8. It's hard to tell where in my code it's going off the rails (possibly line 2 include of perl.h). In KnuthPlass.xs line 153 (function _init_nodelist, last line of CODE section) I tried changing
hv_stores((HV*)self, "activeNodes", ((IV)activelist));
to
hv_stores((SV*)self, "activeNodes", ((IV)activelist));
but no change to the warning message about mismatched prototypes. Needless to say, I'm not happy about making semi-random changes like this, without understanding what's going on. Anyway, I wanted to bounce this off of somebody else to see if the problem is in my code or somewhere in the C/C++ libraries supplied with Strawberry Perl. I'd appreciate it if someone with experience in this area could try an install of Text::KnuthPlass and see if they get the same error, and if they can tell where it is (and whether I need to fix my code, or someone needs to fix the library).
This happens in both Perl 5.26.1 and 5.32.1, built for Windows 10 64bit (MSWin32-x64-multi-thread). Please don't yell at me if this is bad XS code -- I inherited it from someone else who wrote it long ago :-). Thanks!
vcpkg
needs to make a perl available in order to build openssl
, so we're sending a fair bit of traffic over to your servers. This has resulted in some folks complaining about taking a very long time to download StrawberryPerl. For example microsoft/vcpkg#14280
Would it be possible to use GitHub releases as an additional mirror? Asking only because you're apparently already here on GitHub :)
Thanks for such a fantastic distribution!
I am submitting this as a single issue because all those problems are related.
C:\Program Files
or any other path with spaces in it. It's 2021, paths with spaces are the norm. Python, and pretty much anything else such as Git, and CMake to name just a few, can handle it, why not Perl?C:\Perl
). The word "Strawberry", even though it is part of the whole distribution name, by itself does not have a strong association with Perl language and at least to me implies that a company named "Strawberry" is making a directory where other applications released by them will also be installed.Perl
subdirectory will be created in selected directory. For example if you select C:\Tools
you would expect it to create a subdirectory Perl
in it. Instead it just spills its guts in C:\Tools
which brings us to the biggest problem.C:\Tools
even though it wasn't the one who put them there. Even free installer tools such as InnoSetup know to only remove files they added to the system.My proposal to fix this is as follows:
C:\Program Files\Perl
by default under x64 OS, (C:\Program Files (x86)\Perl
under x86 OS).Hi,
Source: Downloads\StrawberryPerl\strawberry-perl-5.32.1.1-64bit.msi
Unable to do:
use IO::Socket::SSL;
C:>grep -n "use Net::SSLeay" c:/Strawberry/perl/vendor/lib/IO/Socket/SSL.pm
19:use Net::SSLeay 1.46;
Error:
Can't load 'c:/Strawberry/perl/vendor/lib/auto/Net/SSLeay/SSLeay.xs.dll' for module Net::SSLeay: load_file:The specified module could not be found at c:/Strawberry/perl/lib/DynaLoader.pm line 193.
at c:/Strawberry/perl/vendor/lib/IO/Socket/SSL.pm line 19.
Compilation failed in require at c:/Strawberry/perl/vendor/lib/IO/Socket/SSL.pm line 19.
cpan> test IO::Socket::SSL
Running test for module 'IO::Socket::SSL'
Fetching with LWP:
http://www.cpan.org/authors/id/S/SU/SULLR/IO-Socket-SSL-2.074.tar.gz
Checksum for C:\STRAWB1\cpan\sources\authors\id\S\SU\SULLR\IO-Socket-SSL-2.074.tar.gz ok1\cpan\build for sizes
Scanning cache C:\STRAWB
............................................................................DONE
Configuring S/SU/SULLR/IO-Socket-SSL-2.074.tar.gz with Makefile.PL
Should I do external tests?
These test will detect if there are network problems and fail soft,
so please disable them only if you definitely don't want to have any
network traffic to external sites. [Y/n]
Checking if your kit is complete...
Looks good
Generating a gmake-style Makefile
Writing Makefile for IO::Socket::SSL
Writing MYMETA.yml and MYMETA.json
SULLR/IO-Socket-SSL-2.074.tar.gz
C:\Strawberry\perl\bin\perl.exe Makefile.PL -- OK
Running make for S/SU/SULLR/IO-Socket-SSL-2.074.tar.gz
cp lib/IO/Socket/SSL.pod blib\lib\IO\Socket\SSL.pod
cp lib/IO/Socket/SSL.pm blib\lib\IO\Socket\SSL.pm
cp lib/IO/Socket/SSL/PublicSuffix.pm blib\lib\IO\Socket\SSL\PublicSuffix.pm
cp lib/IO/Socket/SSL/Intercept.pm blib\lib\IO\Socket\SSL\Intercept.pm
cp lib/IO/Socket/SSL/Utils.pm blib\lib\IO\Socket\SSL\Utils.pm
SULLR/IO-Socket-SSL-2.074.tar.gz
C:\STRAWB~1\c\bin\gmake.exe -- OK
Running make test for SULLR/IO-Socket-SSL-2.074.tar.gz
"C:\Strawberry\perl\bin\perl.exe" "-MExtUtils::Command::MM" "-MTest::Harness" "-e" "undef Test::Harness::Switches; test_harness(0, 'blib\lib', 'blib\arch')" t/.t t/external/*.t
t/01loadmodule.t ..................
# Failed test 'loaded'
# at t/01loadmodule.t line 8.
t/01loadmodule.t .................. 1/3 Out of memory!
# Looks like your test exited with 1 just after 1.
t/01loadmodule.t .................. Dubious, test returned 1 (wstat 256, 0x100)
Failed 3/3 subtests
t/acceptSSL-timeout.t ............. Can't load 'C:/Strawberry/perl/vendor/lib/auto/Net/SSLeay/SSLeay.xs.dll' for module
[snip]
Failed during this command:
SULLR/IO-Socket-SSL-2.074.tar.gz : make_test NO
cpan> i IO::Socket::SSL
Module id = IO::Socket::SSL
CPAN_USERID SULLR (Steffen Ullrich [email protected])
CPAN_VERSION 2.074
CPAN_FILE S/SU/SULLR/IO-Socket-SSL-2.074.tar.gz
UPLOAD_DATE 2022-01-07
MANPAGE IO::Socket::SSL - SSL sockets with IO::Socket interface
INST_FILE C:\Strawberry\perl\vendor\lib\IO\Socket\SSL.pm
INST_VERSION 2.069
BUT WHY --- ??? Plenty of memory ??? :
D:>ls -l C:/Strawberry/perl/vendor/lib/auto/Net/SSLeay/SSLeay.xs.dll
-rwxr-xr-x 1 tdsmichl Domain Users 492544 Jan 24 2021 C:/Strawberry/perl/vendor/lib/auto/Net/SSLeay/SSLeay.xs.dll
Task Manager:
In use (Comoressed) Available Soeed: 3200 MHz
14.6 GB (454 MB) 16.6 GB Slots usedi 20f4
Form factor: SODIMM
committed Cached Hardware reserved: 815 MB
36.0/55.2 GB 16.6 GB
Paged pool Non-paged poo
2.0 GB 1.5 GB
I am trying to use PDL
library from the portableshell
that comes with https://strawberryperl.com/download/5.32.1.1/strawberry-perl-5.32.1.1-64bit-PDL.zip interactively.
But starting pdl2
in the shell throws so much verbose message, looks like related to
Term::Readline
:
Loading DB routines from perl5db.pl version 1.57
Editor support available.
Enter h or 'h h' for help, or 'perldoc perldebug' for more help.
main::(-e:1): 1
Unable to get Terminal Size. The Win32 GetConsoleScreenBufferInfo call didn't work. The COLUMNS and LINES environment variables didn't work. at C:/strawberry-perl-5.32.1.1-64bit-PDL/perl/vendor/lib/Term/ReadLine/readline.pm line 410.
at C:/strawberry-perl-5.32.1.1-64bit-PDL/perl/vendor/lib/Term/ReadKey.pm line 462.
Term::ReadKey::GetTerminalSize(GLOB(0x28512b0)) called at C:/strawberry-perl-5.32.1.1-64bit-PDL/perl/vendor/lib/Term/ReadLine/readline.pm line 410
readline::get_window_size called at C:/strawberry-perl-5.32.1.1-64bit-PDL/perl/vendor/lib/Term/ReadLine/readline.pm line 1114
readline::init called at C:/strawberry-perl-5.32.1.1-64bit-PDL/perl/vendor/lib/Term/ReadLine/readline.pm line 208
require Term/ReadLine/readline.pm called at C:/strawberry-perl-5.32.1.1-64bit-PDL/perl/vendor/lib/Term/ReadLine/Perl.pm line 63
eval {...} called at C:/strawberry-perl-5.32.1.1-64bit-PDL/perl/vendor/lib/Term/ReadLine/Perl.pm line 63
Term::ReadLine::Perl::new("Term::ReadLine", "perldb", GLOB(0x2b5b9c8), GLOB(0x28512b0)) called at C:/strawberry-perl-5.32.1.1-64bit-PDL/perl/lib/perl5db.pl line 6868
DB::setterm() called at C:/strawberry-perl-5.32.1.1-64bit-PDL/perl/lib/perl5db.pl line 1849
DB::_DB__read_next_cmd(undef) called at C:/strawberry-perl-5.32.1.1-64bit-PDL/perl/lib/perl5db.pl line 2789
DB::DB called at -e line 1
SetConsoleMode failed, LastError=|5| at C:/strawberry-perl-5.32.1.1-64bit-PDL/perl/vendor/lib/Term/ReadKey.pm line 346.
at C:/strawberry-perl-5.32.1.1-64bit-PDL/perl/vendor/lib/Term/ReadLine/readline.pm line 1581.
readline::readline(" DB<1> ") called at C:/strawberry-perl-5.32.1.1-64bit-PDL/perl/vendor/lib/Term/ReadLine/Perl.pm line 11
Term::ReadLine::Perl::readline(Term::ReadLine::Perl=ARRAY(0xd7fd08), " DB<1> ") called at C:/strawberry-perl-5.32.1.1-64bit-PDL/perl/lib/perl5db.pl line 7367
DB::readline(" DB<1> ") called at C:/strawberry-perl-5.32.1.1-64bit-PDL/perl/lib/perl5db.pl line 1858
DB::_DB__read_next_cmd(undef) called at C:/strawberry-perl-5.32.1.1-64bit-PDL/perl/lib/perl5db.pl line 2789
DB::DB called at -e line 1
DB<1>
This is my Windows system.
> systeminfo
Host Name: SUMANKHANAL
OS Name: Microsoft Windows 10 Pro
OS Version: 10.0.19042 N/A Build 19042
OS Manufacturer: Microsoft Corporation
OS Configuration: Standalone Workstation
OS Build Type: Multiprocessor Free
Registered Owner: N/A
Registered Organization: N/A
Product ID: 00331-20350-00000-AA867
Original Install Date: 10/19/2020, 3:36:49 PM
System Boot Time: 5/20/2021, 12:54:06 PM
System Manufacturer: Dell Inc.
System Model: Inspiron 5379
System Type: x64-based PC
Processor(s): 1 Processor(s) Installed.
[01]: Intel64 Family 6 Model 142 Stepping 10 GenuineIntel ~2001 Mhz
BIOS Version: Dell Inc. 1.12.0, 5/9/2019
Windows Directory: C:\WINDOWS
System Directory: C:\WINDOWS\system32
Boot Device: \Device\HarddiskVolume1
System Locale: en-us;English (United States)
Input Locale: en-us;English (United States)
Time Zone: (UTC+05:45) Kathmandu
Total Physical Memory: 8,026 MB
Available Physical Memory: 1,189 MB
Virtual Memory: Max Size: 14,682 MB
Virtual Memory: Available: 4,330 MB
Virtual Memory: In Use: 10,352 MB
Page File Location(s): C:\pagefile.sys
Domain: WORKGROUP
Logon Server: \\SUMANKHANAL
Hotfix(s): 9 Hotfix(s) Installed.
[01]: KB4601554
[02]: KB4562830
[03]: KB4577266
[04]: KB4580325
[05]: KB4586864
[06]: KB4593175
[07]: KB4598481
[08]: KB5003173
[09]: KB5003242
Network Card(s): 3 NIC(s) Installed.
[01]: TAP-Windows Adapter V9
Connection Name: Ethernet 2
Status: Media disconnected
[02]: Hyper-V Virtual Ethernet Adapter
Connection Name: vEthernet (Default Switch)
DHCP Enabled: No
IP address(es)
[01]: 172.18.0.1
[02]: fe80::3598:e844:d6de:8022
[03]: Qualcomm QCA61x4A 802.11ac Wireless Adapter
Connection Name: Wi-Fi
DHCP Enabled: Yes
DHCP Server: 192.168.1.254
IP address(es)
[01]: 192.168.1.83
[02]: fe80::b44c:6125:d241:7731
Hyper-V Requirements: A hypervisor has been detected. Features required for Hyper-V will not be displayed.
Hello,
We are getting flagged for using open source components containing a distribution of sqlite that has several documented vulnerabilities, such as https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2019-19646 and https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2019-8457
Can you publish a new package using an updated sqlite? Alternately, is there a way to get a package without it?
Also, the licenseUrl in the nuspec points to a basic web site, not to the actual license. Can you fix the nuspec to include the actual license?
thx
Running a test build of 5.36 I hit an error when it tried to build perl where it cannot find makefile.mk
.
* extracting 'C:\strawberry_build\download\perl-5.36.0.tar.gz'
##2023/01/25-15:56:41## BUILD FAILURE: read_file 'C:\strawberry_build\build\perl_core\perl-5.36.0\win32\makefile.mk' - o
pen: No such file or directory at ..\blib\lib/Perl/Dist/Strawberry/Step/InstallPerlCore.pm line 56.
started: zip_dir('C:\strawberry_build\debug', 'C:\strawberry_build\output\1677301001_debug_dir.zip', 1)
Looks like it was removed in the 5.33 dev cycle as it is in 5.32 but not 5.34.
In any case we need to find an alternate means of getting the version string at this line:
Please port Perl to Windows arm64 for native support.
Please see https://rt.cpan.org/Ticket/Display.html?id=132264
#!/usr/bin/perl -wT
use strict;
use Scalar::Util qw(tainted);
use Config;
my $perl_path = $Config{perlpath};
if ($^O ne 'VMS') {
$perl_path .= $Config{_exe}
unless $perl_path =~ m/$Config{_exe}$/i;
}
(! tainted($perl_path) )
? print "Path to perl executable $perl_path is clean\n"
: print "Path to perl executable $perl_path is tainted\n";
Please, remove #define HAS_BUILTIN_EXPECT from perl/lib/CORE/config.h for Windows platform.
There are no likely and unlikely builtin functions in VC runtime.
I have just installed:
https://strawberryperl.com/download/5.32.1.1/strawberry-perl-5.32.1.1-64bit.msi
on Microsoft Windows 11 (Pro).
I installed it in my user folder (not system-wide). At the end of the installation, the perl binary is not in the PATH.
Why did you not update the PATH env var?
I am trying to install Perl Language server in strawberry perl to get IDE support in VS Code.
When I try to install it with
cpanm Perl::LanguageServer
I get this failed message:
--> Working on Perl::LanguageServer
Fetching http://www.cpan.org/authors/id/G/GR/GRICHTER/Perl-LanguageServer-2.2.0.tar.gz ... OK
Configuring Perl-LanguageServer-v2.2.0 ... OK
==> Found dependencies: AnyEvent::AIO, IO::AIO
--> Working on AnyEvent::AIO
Fetching http://www.cpan.org/authors/id/M/ML/MLEHMANN/AnyEvent-AIO-1.1.tar.gz ... OK
Configuring AnyEvent-AIO-1.1 ... OK
==> Found dependencies: IO::AIO
--> Working on IO::AIO
Fetching http://www.cpan.org/authors/id/M/ML/MLEHMANN/IO-AIO-4.75.tar.gz ... OK
Configuring IO-AIO-4.75 ... OK
Building and testing IO-AIO-4.75 ... FAIL
! Installing IO::AIO failed. See C:\strawberry-perl-5.32.1.1-64bit-PDL\data\.cpanm\work\1622910817.18144\build.log for details. Retry with --force to force install it.
! Installing the dependencies failed: Module 'IO::AIO' is not installed
! Bailing out the installation for AnyEvent-AIO-1.1.
! Installing the dependencies failed: Module 'AnyEvent::AIO' is not installed, Module 'IO::AIO' is not installed
! Bailing out the installation for Perl-LanguageServer-v2.2.0.
Again I tried installing with --force
cpanm --force Perl::LanguageServer
but doesn't work either.
--> Working on Perl::LanguageServer
Fetching http://www.cpan.org/authors/id/G/GR/GRICHTER/Perl-LanguageServer-2.2.0.tar.gz ... OK
Configuring Perl-LanguageServer-v2.2.0 ... OK
==> Found dependencies: AnyEvent::AIO, IO::AIO
--> Working on AnyEvent::AIO
Fetching http://www.cpan.org/authors/id/M/ML/MLEHMANN/AnyEvent-AIO-1.1.tar.gz ... OK
Configuring AnyEvent-AIO-1.1 ... OK
==> Found dependencies: IO::AIO
--> Working on IO::AIO
Fetching http://www.cpan.org/authors/id/M/ML/MLEHMANN/IO-AIO-4.75.tar.gz ... OK
Configuring IO-AIO-4.75 ... OK
Building and testing IO-AIO-4.75 ... FAIL
! Installing IO::AIO failed. See C:\strawberry-perl-5.32.1.1-64bit-PDL\data\.cpanm\work\1622911059.17340\build.log for details. Retry with --force to force install it.
! Installing the dependencies failed: Module 'IO::AIO' is not installed
! Bailing out the installation for AnyEvent-AIO-1.1.
! Installing the dependencies failed: Module 'IO::AIO' is not installed, Module 'AnyEvent::AIO' is not installed
! Bailing out the installation for Perl-LanguageServer-v2.2.0.
Any solution to get around this so that I can use VS Code as Perl development environment.
When I run any command in backticks or system() and the exe file is not in the same directory as the script it will fail with error code 65280 and generates 2 empty 0 byte files in the same folder. (the program name entered in the system command and cmd.exe)
for example the following script will fail to run the command and will generate nasm and cmd.exe in the folder
#!/usr/bin/perl
my $nasmval = `nasm -v`;
print("Output is: $nasmval\n");
and using the system command instead outputs 65280.
I've been trying to compile a library through vcpkg that depends on OpenSSL and that uses Strawberry Perl. Until this can be solved I am unable to use any vcpkg library that requires OpenSSL.
Can 32bit Strawberry Perl be installed into Windows using Chocolatey?
This is a spin-off from #56 to reduce noise in that thread and to keep this discussion separate.
The 5.36 builds without any patching of the config files are completing with a small number of test errors (see #56).
However, the cpan builds are then failing because the config files don't define the vendor dir. All of the installed files are sent to the top level directory (e.g. we get C:\Path\Tiny.pm
). These cannot be located by other parts of the build system, resulting in a slew of failures.
The patches under the share/perl-5.32
dir include changes to these settings. As discussed in #56 we don't want to re-use the files. The diffs under share/perl-5.32/diffs_for_info_only
could be used but don't apply cleanly given the contents of the files have moved.
Rather than developing a whole new patch for 5.36, I think it is better to add a callback handler to the system so the files can be edited using perl code. This will be more future proof.
As an example, win32_config.gc
is all changes to keywords so it can be slurped into a hash, have its values updated, and then be dumped back out in the appropriate sorted order. win32_config_H.gc.diff
can be done line by line.
The 5.32 and earlier builds override several of the configuration files under the perl/win32 dir before building perl. The files live under the share dir, for example https://github.com/StrawberryPerl/Perl-Dist-Strawberry/tree/master/share/perl-5.32
Some of these are to change build args such as NDBM and GDBM (although see StrawberryPerl/build-extlibs#13 for current build status), others are changing the installation dirs, dll extensions etc.
However, others change pointer sizes and the like.
There have been changes in the perl core since the 5.32 files were generated, so how much do the strawberry perl versions of these files need to be updated?
Diffs comparing the perl 5.36 versions with the strawberry perl 5.32 versions, excluding whitespace, are attached.
Many of the differences are typo fixes and some are just file reordering (HAS_MSG in Config.gc), but there are cases where new arguments in perl are not in the strawberry perl versions (e.g. HASATTRIBUTE_ALWAYS_INLINE in Config.gc).
Some of the missing parameters might not matter as they will be left undefined by default anyway. Right?
Others maybe should be defined? If so which?
cpan Bit:Vector errors out at the following command:
t/30__overloaded.t .. ok
t/40___auxiliary.t .. ok
t/50_freeze_thaw.t .. ok
t/51_file_nstore.t .. can't create t/51_file_nstore.tmp: Permission denied at t/51_file_nstore.t line 73.
t/51_file_nstore.t .. Dubious, test returned 13 (wstat 3328, 0xd00)
Failed 6529/7083 subtests
t/51_file_nstore.t (Wstat: 3328 Tests: 554 Failed: 0)
Non-zero exit status: 13
Parse errors: Bad plan. You planned 7083 tests but ran 554.
Files=23, Tests=85050, 6 wallclock secs ( 3.61 usr + 0.09 sys = 3.70 CPU)
Result: FAIL
Failed 1/23 test programs. 0/85050 subtests failed.
gmake: *** [Makefile:1033: test_dynamic] Error 13
STBEY/Bit-Vector-7.4.tar.gz
C:\perlsb\c\bin\gmake.exe test -- NOT OK
//hint// to see the cpan-testers results for installing this module, try:
reports STBEY/Bit-Vector-7.4.tar.gz
Stopping: 'install' failed for 'Bit::Vector'.
Hello,
I would like to report a bug in Strawberry Perl: when a command containing &&
is executed with system()
on Windows, the command after the &&
is not executed.
The problem can be reproduced with the following code:
my $cmd="python --version && python -h";
print("Command => $cmd\n");
system($cmd);
When executing this code with Strawberry Perl, only the version of python is printed (from python --version
), but the usage is not printed (from python -h
):
Command => python --version && python -h
Python 3.9.2
Whereas I think both python --version
and python -h
should be printed:
Command => python --version && python -h
Python 3.9.2
usage: C:\python\python-3.9.2\python.exe [option] ... [-c cmd | -m mod | file | -] [arg] ...
Options and arguments (and corresponding environment variables):
[...]
The problem was seen on Windows 10 and Strawberry Perl 5.32.1.1 portable 64 bit:
perl --version
This is perl 5, version 32, subversion 1 (v5.32.1) built for MSWin32-x64-multi-thread
But this code works correctly (i.e. both python --version
and python -h
are printed) in the following conditions:
perl --version
This is perl 5, version 30, subversion 2 (v5.30.2) built for x86_64-msys-thread-multi
perl --version
This is perl 5, version 28, subversion 1 (v5.28.1) built for x86_64-linux-gnu-thread-multi
What is even stranger is that it works with some basic commands. For instance if the command run is echo first test && echo test
then both commands are correctly executed:
Command => echo first test && echo test
first test
test
Could you please confirm the bug on your side?
Thanks in advance.
Hi,
The title says it all.
I assume that the homepage (http://strawberryperl.com) is supposed to specify the latest release - in which case it requires updating.
Cheers,
Rob
I am preparing to upgrade to the latest release of Strawberry Perl (which shows as 5.32.1.1). I then noticed that Perl itself is at release 5.34.1. I tried to find the name of the POC for Strawberry Perl, but was unsuccessful. What is the contact info for the current manager of Strawberry Perl releases?
I am trying to find out if the upgrade to Strawberry Perl to release 5.34.1 is imminent. If it is, I am happy to wait before upgrading, so I do not have to upgrade twice. Any info you can provide will be most appreciated. Thanks.
Hi
Regarding strawberry perl....
I am submitting a "perl -I and the interpreter says it cannot find the module. The module is a perl ".pm"
source file that contains a package source code.
I do not know why the -I is returning an error.
I am sure it is something stupid on my part.
Thanks
Hi all! how can i fix "choco install strawberryperl" on mswin/appveyor:
https://ci.appveyor.com/project/shlomif/fc-solve/builds/40215398
choco install strawberryperl
Chocolatey v0.10.15
Installing the following packages:
strawberryperl
By installing you accept licenses for the packages.
Progress: Downloading StrawberryPerl 5.32.1.1... 100%
StrawberryPerl v5.32.1.1 [Approved]
strawberryperl package files install completed. Performing other installation steps.
Downloading strawberryperl 64 bit
from 'https://strawberryperl.com/download/5.32.1.1/strawberry-perl-5.32.1.1-64bit.msi'
Progress: 100% - Completed download of C:\Users\appveyor\AppData\Local\Temp\1\chocolatey\StrawberryPerl\5.32.1.1\strawberry-perl-5.32.1.1-64bit.msi (103.26 MB).
Download of strawberry-perl-5.32.1.1-64bit.msi (103.26 MB) completed.
Hashes match.
Installing strawberryperl...
WARNING: Generic MSI Error. This is a local environment error, not an issue with a package or the MSI itself - it could mean a pending reboot is necessary prior to install or something else (like the same version is already installed). Please see MSI log if available. If not, try again adding '--install-arguments="'/l*v c:\StrawberryPerl_msi_install.log'"'. Then search the MSI Log for "Return Value 3" and look above that for the error.
ERROR: Running ["C:\Windows\System32\msiexec.exe" /i "C:\Users\appveyor\AppData\Local\Temp\1\chocolatey\StrawberryPerl\5.32.1.1\strawberry-perl-5.32.1.1-64bit.msi" /qn /norestart ] was not successful. Exit code was '1603'. Exit code indicates the following: Generic MSI Error. This is a local environment error, not an issue with a package or the MSI itself - it could mean a pending reboot is necessary prior to install or something else (like the same version is already installed). Please see MSI log if available. If not, try again adding '--install-arguments="'/l*v c:\StrawberryPerl_msi_install.log'"'. Then search the MSI Log for "Return Value 3" and look above that for the error..
The install of strawberryperl was NOT successful.
Error while running 'C:\ProgramData\chocolatey\lib\StrawberryPerl\tools\chocolateyInstall.ps1'.
See log for details.
Chocolatey installed 0/1 packages. 1 packages failed.
See the log for details (C:\ProgramData\chocolatey\logs\chocolatey.log).
Failures
- strawberryperl (exited 1603) - Error while running 'C:\ProgramData\chocolatey\lib\StrawberryPerl\tools\chocola
appveyor.yml is in https://github.com/shlomif/fc-solve/blob/67c848508a3eaefc42605d2ff0828cf18c2085ea/.appveyor.yml
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.