A recent net or commercial release of Cygwin is required.
-At the time this document was last updated, Cygwin 1.3.9 was current.
+At the time this document was last updated, Cygwin 1.3.12 was current.
=head2 Cygwin Configuration
and on Win9x the I<shm*()> functions seem to hang. It also creates
a compile time dependency because F<perl.h> includes F<<sys/ipc.h>>
and F<<sys/sem.h>> (which will be required in the future when compiling
-CPAN modules).
+CPAN modules). NO LONGER SUPPORTED!
+
+=item * C<-lutil>
+
+Included with the standard Cygwin netrelease is the inetutils package
+which includes libutil.a.
=back
=item * C<-Dusethreads>
-POSIX threads are B<not> yet implemented in Cygwin completely.
+POSIX threads are implemented in Cygwin, define this symbol if you want
+a threaded perl. If there is trouble, check that your Cygwin installation
+is up to date.
=item * C<-Duselargefiles>
C<_LONG_DOUBLE>:
Guessing which symbols your C compiler and preprocessor define...
- try.c:<line#>: parse error
+ try.c:<line#>: missing binary operator
-This failure does not seem to cause any problems.
+This failure does not seem to cause any problems. With older gcc
+versions, "parse error" is reported instead of "missing binary
+operator".
=back
Warnings like these are normal:
- warning: overriding commands for target <file>
- warning: ignoring old commands for target <file>
-
- dllwrap: no export definition file provided
- dllwrap: creating one, but that may not be what you want
+ perl.c: In function `S_parse_body':
+ perl.c:1468: warning: implicit declaration of function `init_os_extras'
+ ...
+ pp_sys.c:289: warning: `S_emulate_eaccess' defined but not used
+ ...
+ perlio.c: In function `perlsio_binmode':
+ perlio.c:98: warning: implicit declaration of function `setmode'
+ perlio.c:98: warning: passing arg 1 of `Perl_PerlIO_fileno' from incompatible pointer type
+ ...
+ make: [extra.pods] Error 1 (ignored)
+ ...
+ make: [extras.make] Error 1 (ignored)
=head2 ld2 on Cygwin
setting, the additional mode bits are stored as extended file attributes.
On WinNT with the I<ntsec> C<CYGWIN> setting, permissions use the standard
WinNT security descriptors and access control lists. Without one of
-these options, these tests will fail:
+these options, these tests will fail (listing not updated yet):
Failed Test List of failed
------------------------------------
lib/sdbm.t 2
op/stat.t 9, 20 (.tmp not an executable extension)
+=head2 NDBM_File and ODBM_File do not work on FAT filesystems
+
+Do not use NDBM_File or ODBM_File on FAT filesystem. They can be
+built on a FAT filesystem, but many tests will fail:
+
+ ../ext/NDBM_File/ndbm.t 13 3328 71 59 83.10% 1-2 4 16-71
+ ../ext/ODBM_File/odbm.t 255 65280 ?? ?? % ??
+ ../lib/AnyDBM_File.t 2 512 12 2 16.67% 1 4
+ ../lib/Memoize/t/errors.t 0 139 11 5 45.45% 7-11
+ ../lib/Memoize/t/tie_ndbm.t 13 3328 4 4 100.00% 1-4
+ run/fresh_perl.t 97 1 1.03% 91
+
+If you intend to run only on FAT (or if using AnyDBM_File on FAT),
+run Configure with the -Ui_ndbm and -Ui_dbm options to prevent
+NDBM_File and ODBM_File being built.
+
+With NTFS (and CYGWIN=ntsec), there should be no problems even if
+perl was built on FAT.
+
+=head2 fork() failures in io_* tests
+
+A fork() failure may result in the following tests failing:
+
+ ext/IO/lib/IO/t/io_multihomed.t
+ ext/IO/lib/IO/t/io_sock.t
+ ext/IO/lib/IO/t/io_unix.t
+
+See comment on fork in L<Miscellaneous> below.
+
=head2 Script Portability on Cygwin
Cygwin does an outstanding job of providing UNIX-like semantics on top of
The Cygwin chroot() implementation has holes (it can not restrict file
access by native Win32 programs).
+Inplace editing C<perl -i> of files doesn't work without doing a backup
+of the file being edited C<perl -i.bak> because of windowish restrictions,
+therefore Perl adds the C<.bak> automatically if you use C<perl -i>
+without specifying a backup extension.
+
+Using fork() after loading multiple dlls may fail with an internal cygwin
+error like the following:
+
+ C:\CYGWIN\BIN\PERL.EXE: *** couldn't allocate memory 0x10000(4128768) for 'C:\CYGWIN\LIB\PERL5\5.6.1\CYGWIN-MULTI\AUTO\SOCKET\SOCKET.DLL' alignment, Win32 error 8
+
+ 200 [main] perl 377147 sync_with_child: child -395691(0xB8) died before initialization with status code 0x1
+ 1370 [main] perl 377147 sync_with_child: *** child state child loading dlls
+
+Use the rebase utility to resolve the conflicting dll addresses. The
+rebase package is included in the Cygwin netrelease. Use setup.exe from
+F<http://www.cygwin.com/setup.exe> to install it.
+
=back
=head1 INSTALL PERL ON CYGWIN
These are the files in the Perl release that contain references to Cygwin.
These very brief notes attempt to explain the reason for all conditional
code. Hopefully, keeping this up to date will allow the Cygwin port to
-be kept as clean as possible.
+be kept as clean as possible (listing not updated yet).
=over 4
=head1 BUGS ON CYGWIN
-When I<make> starts, it warns about overriding commands for F<perlmain.o>.
-
Support for swapping real and effective user and group IDs is incomplete.
On WinNT Cygwin provides setuid(), seteuid(), setgid() and setegid().
However, additional Cygwin calls for manipulating WinNT access tokens
Steven Morlock <newspost@morlock.net>,
Sebastien Barre <Sebastien.Barre@utc.fr>,
Teun Burgers <burgers@ecn.nl>,
-Gerrit Haase <gh@familiehaase.de>.
+Gerrit P. Haase <gp@familiehaase.de>.
=head1 HISTORY
-Last updated: 2002-02-27
+Last updated: 2003-03-20