delorie.com/archives/browse.cgi   search  
Mail Archives: cygwin/2007/12/07/17:41:45

X-Recipient: archive-cygwin AT delorie DOT com
X-Spam-Check-By: sourceware.org
Message-ID: <183c528b0712071441k4f27cea9lebf6234f592f2eb0@mail.gmail.com>
Date: Fri, 7 Dec 2007 17:41:05 -0500
From: "Brian Mathis" <brian DOT mathis AT gmail DOT com>
To: cygwin AT cygwin DOT com
Subject: Re: Wish Setup would accept my Perl
In-Reply-To: <loom.20071207T213211-833@post.gmane.org>
MIME-Version: 1.0
References: <loom DOT 20071105T183528-568 AT post DOT gmane DOT org> <loom DOT 20071206T171108-921 AT post DOT gmane DOT org> <alpine DOT DEB DOT 0 DOT 82 DOT 0712061353080 DOT 18424 AT pilot DOT trilug DOT org> <loom DOT 20071206T192047-253 AT post DOT gmane DOT org> <loom DOT 20071207T213211-833 AT post DOT gmane DOT org>
X-IsSubscribed: yes
Mailing-List: contact cygwin-help AT cygwin DOT com; run by ezmlm
List-Id: <cygwin.cygwin.com>
List-Unsubscribe: <mailto:cygwin-unsubscribe-archive-cygwin=delorie DOT com AT cygwin DOT com>
List-Subscribe: <mailto:cygwin-subscribe AT cygwin DOT com>
List-Archive: <http://sourceware.org/ml/cygwin/>
List-Post: <mailto:cygwin AT cygwin DOT com>
List-Help: <mailto:cygwin-help AT cygwin DOT com>, <http://sourceware.org/ml/#faqs>
Sender: cygwin-owner AT cygwin DOT com
Mail-Followup-To: cygwin AT cygwin DOT com
Delivered-To: mailing list cygwin AT cygwin DOT com

On Dec 7, 2007 4:53 PM, Michael Kairys <kairys AT comcast DOT net> wrote:
> Well, I gave it a try, and I can see that ain't gonna happen :)
>
> I reran setup and let it install perl and whatever else it wanted to (so I now
> have ruby and phython as well); then I began running scripts under both perls.
> I quickly realized AS perl exec's cmd.exe whilst Cygwin perl exec's sh, so
> much of my system and backquote constructs broke. I also noticed that ENV
> {PATH} and ENV{HOME} return Windows or Unix syntax paths, depending. The
> Cygwin perl builtins like chdir and chmod were quite happy with Windows paths,
> as I would expect.
>
> As an aside, there seems to be something broken in my installation re. Tk (or
> perhaps I'm missing something). If I run a script containing (only) "use Tk" I
> get: Can't load '/usr/lib/perl5/vendor_perl/5.8/cygwin/auto/Tk/Tk.dll' for
> module Tk: No such file or directory
> at /usr/lib/perl5/5.8/cygwin/DynaLoader.pm line 230.
>
> ... however /usr/lib/perl5/vendor_perl/5.8/cygwin/auto/Tk/Tk.dll is in fact
> there.
>
> So given that I "should" keep Cygwin perl around (meaning that someday I'm
> likely to regret it if I don't :) and that I'm going to keep AS perl as well,
> I need to find the best way for them to coexist. I think the suggestion made
> elsewhere in this thread (sorry, I forget who made it) that I forego "perl -S"
> in favor of shebang is good; I find that #!/local/perl/bin/perl finds my AS
> perl (which is in D:\Local\Perl, and D:\Local is mounted on /local). ASsuming
> Cygwin correctly shebangs any scripts it needs to use, I can remove AS perl
> from my Cygwin path (as set in .bashrc) but leave it in my Windows path (as
> set via the Control Panel) and as I understand it to date, everything should
> work. If I don't in fact understand it (not unlikely :) please advise.
>
> But given my "programmer's OCD" I will probably keep poking at why my AS
> scripts don't run on Cygwin perl, so any advice about setting it up, why Tk
> doesn't work, etc. would be appreciated (as are all your comments).


Using the shebang (#!) line will only be useful for scripts run in
cygwin.  Windows will need an association of the .pl extension to the
AS Perl binary in order to run.  The shebang line will do nothing for
scripts run by double-clicking on them or those run from the DOS
command line.

I think the biggest problem you're having is conceptual.  It's easy to
view a bash prompt as just a better DOS prompt that gives you unix
commands in addition to windows command line commands.  THAT is what
is creating the problem here, because cygwin is NOT just a cooler DOS
prompt.  It presents the environment to a running program very
differently.  It just so happens that most Windows/DOS commands are
too stupid to notice the difference.

Operating under that thought process, it's very easy to create a
mishmash of commands that rely on each other, crossing the boundaries
back and forth between cygwin and windows.  Since perl exists in
both... well, you already can see the problems that can cause.

The solution is to start breaking the habit of using a bash prompt for
windows commands.  Open a DOS command window and use that (as much as
it hurts).  Any perl run from that command window will use AS perl.
Even "better", don't run AS perl scripts from a prompt at all,
double-click on them and start them like any other windows app.  Do
not try to use AS perl from a bash prompt.  Anything run from a bash
prompt should use cygwin perl.

You should not have AS perl in your cygwin path -- cygwin should not
know about it at all.  I also think this is a bad idea:
"#!/local/perl/bin/perl finds my AS perl (which is in D:\Local\Perl,
and D:\Local is mounted on /local)"

As a Programmer, listen to this System Administrator (this one time, I
know it's hard ;-)), this isn't a software issue, it's a management /
usage pattern problem.

--
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple
Problem reports:       http://cygwin.com/problems.html
Documentation:         http://cygwin.com/docs.html
FAQ:                   http://cygwin.com/faq/

- Raw text -


  webmaster     delorie software   privacy  
  Copyright © 2019   by DJ Delorie     Updated Jul 2019