Giter Site home page Giter Site logo

strawberryperl / perl-dist-strawberry Goto Github PK

View Code? Open in Web Editor NEW
261.0 37.0 48.0 3.69 MB

Tooling to build and package releases for Perl on Windows.

Home Page: https://strawberryperl.com

License: Other

Perl 82.28% C++ 3.25% C 8.63% Makefile 5.44% Batchfile 0.41%
cpan perl windows

perl-dist-strawberry's People

Contributors

adamkennedy avatar chorny avatar g-bougard avatar genio avatar hginzel avatar kmx avatar manwar avatar nvpbrown avatar rwp0 avatar shawnlaffan avatar szabgab avatar wchristian avatar xdg avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

perl-dist-strawberry's Issues

Missing files in 4.021 CPAN release

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.

Graphics module not installing or acting weird

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?

PPM up to 11.11_03 is incompatible with Win32 0.53

Win32::::IsWinNT() started checking its usage with version 0.53.

https://github.com/perl-libwin32/win32/blob/7746dcd8d9f290ce9ebe5b0609ac0b4b8e10b2d8/Win32.xs#L1312-L1319

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.

Please pull latest Win32::OLE::Const package into Strawberry Perl...

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

Set SP's Active Code Page to UTF-8

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.


  1. SetFileApisToOEM can be used to change the encoding used by some A system calls to the OEM CP.

we need a winlibs subset

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

POSIX::PIPE_BUF is not properly defined

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

Support for upgrade

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?

strawberry perl 5.30.1.1 doesn't have .../c/bin/gsl-config.bat

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
.
.

a fixed bug in the GNU Readline Library 8.0

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:

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.

libfribidi and libwebp

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

[feature request] don't pollute PATH with mingw toolchain

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.

Failed test 186 - ENV store downgrades utf8 in setenv at op/magic.t line 75 (also test 187)

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?

missing file openssl.cnf needed by openssl.exe

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

Installation incomplete (?) on Windows 7 (?)

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:

  1. 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."

  2. 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_ .

  3. 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.

Do we want to keep recommending the "msi" installation ahead of all other options ?

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

Is the OpenSSL version distributed with Strawberry Perl (via Chocolatey) up to date?

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?

portableshell.bat doesn't properly return error codes when used as a perl.exe wrapper

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

Add a powershell version of portableshell.bat

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.

Wrong time_t size in Strawberry GCC leads to OpenSSL failures

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.

Explicitly closing STDOUT at end of script on Windows fails always

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.

update_env.pl.bat broke cmder

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:

  • Colours do not work well anymore: ls --color doesn't colour the file types and folders anymore.
  • Editing files on VIM is impossible, everything is messed up.

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

Bug in library?

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!

[feature request] Use Github Releases as an unofficial mirror

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!

[BUG] Windows Installer issues

I am submitting this as a single issue because all those problems are related.

  1. Installer does not allow installing to 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?
  2. Installer does not follow standard logic of installing into a directory named after a program it is installing (i.e. 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.
  3. Because of 2, choosing the install directory is confusing, and you can easily make a mistake thinking that 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.
  4. When uninstalling, the installer deletes all other files it finds in the root of 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.
  5. Even on the fastest of systems (i7-9800X, Samsung 970 Pro M.2 SSD, 64 GB RAM) installation and uninstallation is attrociously slow with the current installer. I have seen no other MSI packages behaving in this way.

My proposal to fix this is as follows:

  • Install to C:\Program Files\Perl by default under x64 OS, (C:\Program Files (x86)\Perl under x86 OS).
  • Either fix existing installer to not remove files it doesn't own and to work faster, or switch to using another faster installer which is capable of not deleting user files.

IO::Socket::SSL un-use-able

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 ok
Scanning cache C:\STRAWB
1\cpan\build for sizes
............................................................................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

Too much verbosity while starting pdl2

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>
  • Is it innocuous?
  • How to get it go away? What do I need to configure in my part?

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.

Please update nuget.org with a StrawberryPerl that has a new sqlite and includes the license

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

makefile.mk is no longer used to build perl

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:

my ($version) = grep { /INST_VER/ } read_file(catfile($unpack_to, $perlsrc, qw/win32 makefile.mk/));

Installing Perl Language Server on Strawberry fails

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.

Strawberry Perl not working with System Path when running system()

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.

config files - use a callback to change the values

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.

update config patch files for 5.34 and 5.36?

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?

config.gc.patch
config_H.gc.patch
FindExt.pm.patch

Bit::Vector errors on install

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

Test Summary Report

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'.

Commands separated with && are not run when called with system() on Windows

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:

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):

Current output

Command => python --version && python -h
Python 3.9.2

Whereas I think both python --version and python -h should be printed:

Expected output

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 5.32.1.1 version details

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:

  • in Git Bash on Windows 10 with perl 5.30.2:
perl 5.30.2 version details

perl --version
This is perl 5, version 30, subversion 2 (v5.30.2) built for x86_64-msys-thread-multi

  • Debian with perl 5.28.1:
perl 5.28.1 version details

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.

Strawberry Perl POC and Status of 5.34.1

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.

perl include does not find file

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

"choco install strawberryperl" fails on mswin/appveyor

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

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.