[tpm] PAR::Packer and cygwin

Stuart Watt stuart at morungos.com
Mon Jun 10 06:29:25 PDT 2013

Hi Fulko, comments in context below. 

On 2013-06-07, at 11:42 AM, Fulko Hew wrote:

> After a lot of fighting... I've made some progress on my battle
> of using PAR to package my app on various OSs.

Well done! 

> [I've gotten something built on Solaris and now I just have to find out
> how to make a proper pkgadd package out of it.]
> But my question of the day is really the MS Windows / Cygwin environment.
> I hope you (or anyone else) can help…

A few notes below. 

> When I run my Cygwin/PAR application under a DOS shell
> (with PATH also pointing to c:\cygwin\bin)  it now actually
> starts my app, but it immediately dies with:
> Can't locate File/Temp.pm in @INC ...
> Is it because of slash versus backslash?

As a rule, all the versions of Windows that matter understand forward slashes anyway. So the syntax is just fine. On Windows, I used / for everything. The only issue is that when you get a pathname back from Perl, it might contain \ characters, so I used a *lot* of s{\\}{/}g in my file access logic when I wanted stuff to be portable.  

> Is it because @INC contains entries like /usr/lib/perl5…

Very possible. I think cygwin does some funny path hacking, and maps stuff like /usr/... to some other place on the file system. As a rule, cygwin binaries need to be run under cygwin to overcome this. So you can probably par stuff up, but they will still only run on a cygwin runtime, not a straight Windows command line. 

> Is it because the @INC entries are rooted at '/' and Windows
>   doesn't understand that and Cygwin modules aren't kicking in?

Which is part of the issue above. So yes, even if you build a par, it'll only run under a cygwin runtime. What you might be able to do is use something like the NSIS installer to package up a cygwin runtime and the par file. That's a lot of work, and from what I recall there were some license oddities in cygwin which made that problematic. 

However, I did find this (at: http://www.ghettocode.net/perl/PARPackerHowTo)

So you (a) this might be fun, and (b) the second build of Perl might be an issue. 

> 2. Don't use this on a system with Cygwin.
>     - If you can get this working, you're god damn awesome.
>       Cygwin takes the liberty of installing a second build
>       of Perl in $PATH and completely fucks up your lib path.
>       Uninstalling Cygwin is not really an adventure in
>       awesome. Just don't do it.

> Any clues?
> Fulko
> PS:  For those not privy to my earlier background discussions:
> - I can't use Strawberry Perl because some of the modules I need
>   don't work under it, only works under Cygwin Perl.
> - I'm trying to make a single executable for distribution
>   (that's what PAR is for)
> - It needs to be invokable from DOS (srvany) and not from within
>   CYGWIN's terminal window

I will personally and publicly call you "god damn awesome" if you manage this. 
Stuart Watt
stuart at morungos.com / 

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.pm.org/pipermail/toronto-pm/attachments/20130610/2d3b359b/attachment.html>

More information about the toronto-pm mailing list