plack / Plack

PSGI toolkit and server adapters
http://plackperl.org/
Other
486 stars 214 forks source link

Install failed on Windows10, Strawberry 64 bit Perl 5.26.0.1 #591

Closed eciruam closed 7 years ago

eciruam commented 7 years ago

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.

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

eciruam commented 7 years ago

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 .

Bjarzyna commented 7 years ago

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.

skaji commented 7 years ago

For "No such signal: SIGSYS at C:/Perl/perl/lib/Test2/API/Instance.pm line 312.", upgrade Test::Simple first.

itcharlie commented 7 years ago

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.

itcharlie commented 7 years ago

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 )

eserte commented 7 years ago

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

skaji commented 7 years ago

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.

haarg commented 7 years ago

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.

miyagawa commented 7 years ago

I'm happy to accept a patch to move the file location, and/or skip the test in Win32.

vikerian commented 7 years ago

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

mohawk2 commented 6 years ago

For posterity, this is fixed in EUMM: https://github.com/Perl-Toolchain-Gang/ExtUtils-MakeMaker/pull/318