This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Sync with libnet-1.13
[perl5.git] / README.cygwin
index 796197a..9888b18 100644 (file)
@@ -31,7 +31,7 @@ about this project can be found at:
 
 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
@@ -153,7 +153,12 @@ C<d_semctl_semun> is undefined because it fails a Configure test
 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
 
@@ -255,9 +260,11 @@ The following error occurs because of the Cygwin C<#define> of
 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
 
@@ -271,11 +278,18 @@ Simply run I<make> and wait:
 
 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
 
@@ -317,7 +331,7 @@ always readable and executable).  On WinNT with the I<ntea> C<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
   ------------------------------------
@@ -332,6 +346,35 @@ these options, these tests will fail:
   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
@@ -396,6 +439,22 @@ Win9x can not rename() an open file (although WinNT can).
 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,
+so Perl adds the C<.bak> automatically if you just use C<perl -i>.
+
+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.
+See: http://www.tishler.net/jason/software/rebase/
+and http://sources.redhat.com/ml/cygwin/2002-07/msg00276.html
+
 =back
 
 =head1 INSTALL PERL ON CYGWIN
@@ -418,7 +477,7 @@ found in the F<INSTALL> document.
 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
 
@@ -493,8 +552,6 @@ be kept as clean as possible.
 
 =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
@@ -512,4 +569,4 @@ Gerrit Haase <gh@familiehaase.de>.
 
 =head1 HISTORY
 
-Last updated: 2002-02-27
+Last updated: 2002-10-07