Mailing-List: contact cygwin-help AT cygwin DOT com; run by ezmlm List-Subscribe: List-Archive: List-Post: List-Help: , Sender: cygwin-owner AT cygwin DOT com Mail-Followup-To: cygwin AT cygwin DOT com Delivered-To: mailing list cygwin AT cygwin DOT com X-AuthUser: gerrit:koeln.convey.de Date: Sun, 3 Aug 2003 10:57:32 +0200 From: "Gerrit P. Haase" Reply-To: "Gerrit P. Haase" Organization: Esse keine toten Tiere X-Priority: 3 (Normal) Message-ID: <561375447098.20030803105732@familiehaase.de> To: cygwin AT cygwin DOT com CC: perl5-porters AT perl DOT org Subject: perl with cygwin 1.5, need help MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Hallo , I need some help to track this down. Some details to illustrate the problem with perl when building with cygwin-1.5.1. I can compile everything up to miniperl, then the basic test fails and also using any script which uses 'my' fails., so it is impossible to build the perl library and modules. I just realized that perl doesn't treat my $var in the right way. Writing: my $i = $^O; does the right thing, but when I use the $i later it is not the same $i which was used before (but it should be exactly this $i as long as I'm in the same scope). In the first example, 'my' is used, the value $^O is assigned correct (see the full -Dtls output below): "(test.pl:2) sassign => PVMG("cygwin"\0)" Later for the print main::i is referenced which is empty: "(test.pl:3) gvsv(main::i) => * PV("my $i should be 'cygwin', but it is: "\0) UNDEF " First case: $ cat test.pl my $i = $^O; print "my \$i should be 'cygwin', but it is: $i\n"; $ ./miniperl.exe -Dtls test.pl (test.pl:0) ENTER scope 2 at perly.c:1428 (test.pl:3) ENTER scope 3 at toke.c:1028 (test.pl:3) LEAVE scope 3 at toke.c:1128 (test.pl:3) ENTER scope 3 at opmini.c:6308 (test.pl:3) LEAVE scope 3 at opmini.c:6659 (test.pl:3) LEAVE scope 2 at perly.c:2526 (test.pl:0) LEAVE scope 1 at perl.c:1697 (test.pl:0) ENTER scope 1 at perl.c:1705 (test.pl:0) Setting up jumplevel 22fdb0, was a040694 EXECUTING... => (test.pl:0) enter (test.pl:0) ENTER scope 2 at pp_hot.c:1648 Entering block 0, type BLOCK => (test.pl:0) nextstate => (test.pl:2) gvsv(main::) => PVMG() (test.pl:2) padsv($i) => PVMG() UNDEF (test.pl:2) sassign => PVMG("cygwin"\0) (test.pl:2) nextstate => (test.pl:3) pushmark => * (test.pl:3) const(PV("my $i should be 'cygwin', but it is: "\0)) => * PV("my $i should be 'cygwin', but it is: "\0) (test.pl:3) gvsv(main::i) => * PV("my $i should be 'cygwin', but it is: "\0) UNDEF (test.pl:3) concat => * PV("my $i should be 'cygwin', but it is: "\0) (test.pl:3) const(PV("\12"\0)) => * PV("my $i should be 'cygwin', but it is: "\0) PV("\12"\0) (test.pl:3) concat => * PV("my $i should be 'cygwin', but it is: \12"\0) (test.pl:3) print my $i should be 'cygwin', but it is: => SV_YES (test.pl:3) leave (test.pl:0) POPBLOCK scope 2 at pp_hot.c:1760 Leaving block 0, type BLOCK (test.pl:0) LEAVE scope 2 at pp_hot.c:1797 (test.pl:0) Setting up jumplevel 22fda0, was a040694 (test.pl:0) LEAVE scope 1 at perl.c:453 The 2nd case is working, at (test.pl:3) the correct scalar is referenced: "(test.pl:3) gvsv(main::i) => * PV("my $i should be 'cygwin', but it is: "\0) PVMG("cygwin"\0) " $ cat test.pl $i = $^O; print "my \$i should be 'cygwin', but it is: $i\n"; $ ./miniperl.exe -Dtls test.pl (test.pl:0) ENTER scope 2 at perly.c:1428 (test.pl:3) ENTER scope 3 at toke.c:1028 (test.pl:3) LEAVE scope 3 at toke.c:1128 (test.pl:3) ENTER scope 3 at opmini.c:6308 (test.pl:3) LEAVE scope 3 at opmini.c:6659 (test.pl:3) LEAVE scope 2 at perly.c:2526 (test.pl:0) LEAVE scope 1 at perl.c:1697 (test.pl:0) ENTER scope 1 at perl.c:1705 (test.pl:0) Setting up jumplevel 22fdb0, was a040694 EXECUTING... => (test.pl:0) enter (test.pl:0) ENTER scope 2 at pp_hot.c:1648 Entering block 0, type BLOCK => (test.pl:0) nextstate => (test.pl:2) gvsv(main::) => PVMG() (test.pl:2) gvsv(main::i) => PVMG() UNDEF (test.pl:2) sassign => PVMG("cygwin"\0) (test.pl:2) nextstate => (test.pl:3) pushmark => * (test.pl:3) const(PV("my $i should be 'cygwin', but it is: "\0)) => * PV("my $i should be 'cygwin', but it is: "\0) (test.pl:3) gvsv(main::i) => * PV("my $i should be 'cygwin', but it is: "\0) PVMG("cygwin"\0) (test.pl:3) concat => * PV("my $i should be 'cygwin', but it is: cygwin"\0) (test.pl:3) const(PV("\12"\0)) => * PV("my $i should be 'cygwin', but it is: cygwin"\0) PV("\12"\0) (test.pl:3) concat => * PV("my $i should be 'cygwin', but it is: cygwin\12"\0) (test.pl:3) print my $i should be 'cygwin', but it is: cygwin => SV_YES (test.pl:3) leave (test.pl:0) POPBLOCK scope 2 at pp_hot.c:1760 Leaving block 0, type BLOCK (test.pl:0) LEAVE scope 2 at pp_hot.c:1797 (test.pl:0) Setting up jumplevel 22fda0, was a040694 (test.pl:0) LEAVE scope 1 at perl.c:453 Does someone have an idea what I can do else to track this down? Some information about Cygwin 1.5: The following functions/types have changed: Functions: acl aclcheck aclfrommode aclfrompbits aclfromtext aclsort acltomode acltopbits acltotext chown facl fchown fdopen fgetpos fopen freopen fseeko fsetpos fstat ftello ftruncate getegid geteuid getgid getgrent getgrgid getgrnam getgroups getpwuid getpwuid_r getuid initgroups lchown lseek lstat mknod mmap open seekdir setegid seteuid setgid setgroups setregid setreuid setuid stat telldir truncate Types: blkcnt_t dev_t gid_t ino_t off_t uid_t struct acl struct dirent struct group struct stat Probably also interesting is that using the new header with cygwin-1.3.22-x causes (mini)perl to show the same behaviour. Since there are only some macros defined in I thought evtually s.th. is missing in inttypes.h which perl (Configure) expects to be there? However, removing the header resolves the problem for cygwin-1.3.22 but NOT for cygwin-1.5. Sigh. Gerrit -- =^..^= -- 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/