Closed eciruam closed 7 years ago
Just want to confirm that this is specific to 5.26. I've just installed Plack on Windows 10 with 5.24 with no issue.
Yes I can confirm that Plack failed to install on Windows 10 with Strawberry Perl 5.26.0.1
I have gone back to Strawberry Perl 5.24 and it works perfectly.
On Thu, Jun 15, 2017 at 12:42 AM, Komodo Dragon notifications@github.com wrote:
Just want to confirm that this is specific to 5.26. I've just installed Plack on Windows 10 with 5.24 with no issue.
— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub https://github.com/plack/Plack/issues/591#issuecomment-308489639, or mute the thread https://github.com/notifications/unsubscribe-auth/Ab30B7Rg-xpbHhdniPRAwmeFJfewqRoYks5sEA2GgaJpZM4NxE1P .
I just want to point out that I had the same problem installing on Strawberry perl 5.26, windows 7. However I also couldn't install on 5.24 64bit due to tests failing with message: "No such signal: SIGSYS at C:/Perl/perl/lib/Test2/API/Instance.pm line 312.". Later I tried installing on 32bit Strawberry and everything went smoothly.
For "No such signal: SIGSYS at C:/Perl/perl/lib/Test2/API/Instance.pm line 312.", upgrade Test::Simple first.
Looking at the Makefile.PL ( https://github.com/plack/Plack/blob/master/Makefile.PL#L12 )
The #foo file that the error is returning is from the share directory that exists inside the Plack Distribution meaning that there may be a problem with File::ShareDir::Install module and how it handles directories or file paths in Windows .
I have also encountered this error which is why I am posting in this issue thread.
Actually its doesn't seem to die when running the Makefile.PL . The error message occurs when running the Makefile with gmake install
There is an entry in Makefile that needs to be looked into further: config:: $(NOECHO) $(ABSPERLRUN) -MExtUtils::Install -e "pm_to_blib({@ARGV}, '$(INST_LIB)')" -- \ share\baybridge.jpg $(INST_LIB)\auto\share\dist\$(DISTNAME)\baybridge.jpg \ share\face.jpg $(INST_LIB)\auto\share\dist\$(DISTNAME)\face.jpg \ share#foo $(INST_LIB)\auto\share\dist\$(DISTNAME)#foo
Maybe we should rename the #foo file to just foo ? ( Since it looks like its escaping the '#' character in the filename )
Probably all UNKNOWN reports seen at http://matrix.cpantesters.org/?dist=Plack%201.0044;os=mswin32;reports=1#sl=6,1 are caused by this problem. My guess: it used to work with dmake, and fails with gmake (which is the standard make starting with StrawberryPerl 5.26.x).
From v5.26, strawberry perl has been shipped with gmake (not dmake),
and it seems that there is a bug where gmake does not select cmd.exe as a shell,
even though ExtUtils::MakeMaker set SHELL = C:\Windows\System32\cmd.exe
.
https://github.com/Perl-Toolchain-Gang/ExtUtils-MakeMaker/blob/dcefb438ff2741e792ba8a52292abfac3e50cc54/lib/ExtUtils/MM_Win32.pm#L223-L233
If SHELL is not cmd.exe, then perl ... share\#foo
will be interpreted as perl ... share#foo
;
the path separator \
is gone!
I found a workaround; I could install Plack with the following command on strawberry perl 5.26.
cpanm --build-args SHELL=cmd.exe --install-args SHELL=cmd.exe Plack
@miyagawa Currently we cannot install Plack into strawberry perl 5.26
because gmake
and gmake install
fail (NOT gmake test
).
As mentioned above, it may be a bug in gmake rather than toolchains.
I think it is worth adding a workaround to Plack, such as creating #foo
only in t/directory.t.
The file could just be moved. The other files in share/
are used by Plack::Test::Suite, which is why they need to be installed. The #foo
file is only used in Plack's own tests, not anything that gets installed. There is no need for it to be in share.
I'm happy to accept a patch to move the file location, and/or skip the test in Win32.
strawberry perl 5.26.1 has the same problem.
working workaround was mentioned up by skaji.
i just need to add force to it.
cpanm --force --build-args SHELL=cmd.exe --install-args SHELL=cmd.exe Plack
For posterity, this is fixed in EUMM: https://github.com/Perl-Toolchain-Gang/ExtUtils-MakeMaker/pull/318
C:\Users\Maurice>cpanm --v --force Plack cpanm (App::cpanminus) 1.7043 on perl 5.026000 built for MSWin32-x64-multi-thread Work directory is C:\Users\Maurice/.cpanm/work/1496740166.11592 You have make C:\Strawberry\c\bin\gmake.exe You have LWP 6.26 Falling back to Archive::Tar 2.26 Searching Plack () on cpanmetadb ... --> Working on Plack Fetching http://www.cpan.org/authors/id/M/MI/MIYAGAWA/Plack-1.0044.tar.gz ... OK Unpacking Plack-1.0044.tar.gz Entering Plack-1.0044 Checking configure dependencies from META.json Checking if you have ExtUtils::MakeMaker 6.58 ... Yes (7.28) Checking if you have File::ShareDir::Install 0.06 ... Yes (0.11) Running Makefile.PL Configuring Plack-1.0044 ... Checking if your kit is complete... Looks good Generating a gmake-style Makefile Writing Makefile for Plack Writing MYMETA.yml and MYMETA.json OK Checking dependencies from MYMETA.json ... Checking if you have URI 1.59 ... Yes (1.71) Checking if you have parent 0 ... Yes (0.236) Checking if you have Hash::MultiValue 0.05 ... Yes (0.16) Checking if you have Pod::Usage 1.36 ... Yes (1.69) Checking if you have HTTP::Headers::Fast 0.18 ... Yes (0.21) Checking if you have Stream::Buffered 0.02 ... Yes (0.03) Checking if you have File::ShareDir 1.00 ... Yes (1.102) Checking if you have Cookie::Baker 0.07 ... Yes (0.07) Checking if you have Filesys::Notify::Simple 0 ... Yes (0.12) Checking if you have HTTP::Tiny 0.034 ... Yes (0.070) Checking if you have Test::More 0.88 ... Yes (1.302085) Checking if you have Try::Tiny 0 ... Yes (0.28) Checking if you have Apache::LogFormat::Compiler 0.33 ... Yes (0.35) Checking if you have Devel::StackTrace 1.23 ... Yes (2.02) Checking if you have WWW::Form::UrlEncoded 0.23 ... Yes (0.24) Checking if you have HTTP::Message 5.814 ... Yes (6.11) Checking if you have HTTP::Entity::Parser 0.17 ... Yes (0.19) Checking if you have Test::Requires 0 ... Yes (0.10) Checking if you have ExtUtils::MakeMaker 0 ... Yes (7.28) Checking if you have Devel::StackTrace::AsHTML 0.11 ... Yes (0.15) Checking if you have Test::TCP 2.15 ... Yes (2.19) Building and testing Plack-1.0044 ... cp share\baybridge.jpg blib\lib\auto\share\dist\Plack\baybridge.jpg !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ERROR: Cannot copy 'share#foo' to 'blib\lib\auto\share\dist\Plack#foo': No such file or directory !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! at -e line 1. gmake: *** [Makefile:1123: config] Error 255 FAIL ! Installing Plack failed. See C:\Users\Maurice.cpanm\work\1496740166.11592\build.log for details. Retry with --force to force install it.