system calls and environment these programs expect. More information
about this project can be found at:
- http://sourceware.cygnus.com/cygwin/
+ http://sources.redhat.com/cygwin/
A recent net or commercial release of Cygwin is required.
-At the time this document was last updated, Cygwin 1.1.2 was current.
+At the time this document was last updated, Cygwin 1.1.4 was current.
B<NOTE:> At this point, minimal effort has been made to provide
compatibility with old (beta) Cygwin releases. The focus has been to
provide a high quality release and not worry about working around old
-Cygwin bugs. If you wish to use Perl with Cygwin B20.1 or earlier,
-consider using perl5.005_03, which is available in source and binary
-form at C<http://cygutils.netpedia.net/> or on the Cygwin CD. If there
-is significant demand, a patch kit can be developed to port back to
-earlier Cygwin versions.
+bugs. If you wish to use Perl with Cygwin B20.1 or earlier, consider
+using perl5.005_03, which is available in source and binary form at
+C<http://cygutils.netpedia.net/>. If there is significant demand,
+a patch kit can be developed to port back to earlier Cygwin versions.
=head2 Cygwin Configuration
Perl usage.
B<NOTE:> The binaries that are built will run on all Win32 versions.
-They do not depend on your host system (Win9x, WinNT) or your Cygwin
-configuration (I<ntea>, I<ntsec>, binary/text mounts). The only
-dependencies come from hard-coded pathnames like C</usr/local>. However,
-your host system and Cygwin configuration will affect Perl's runtime
-behavior (see L</"TEST">).
+They do not depend on your host system (Win9x/WinME, WinNT/Win2K)
+or your Cygwin configuration (I<ntea>, I<ntsec>, binary/text mounts).
+The only dependencies come from hard-coded pathnames like C</usr/local>.
+However, your host system and Cygwin configuration will affect Perl's
+runtime behavior (see L</"TEST">).
=over 4
On WinNT with either the I<ntea> or I<ntsec> C<CYGWIN> settings, directory
and file permissions may not be set correctly. Since the build process
-creates files and directories, to be safe you may want to run a `C<chmod
+creates directories and files, to be safe you may want to run a `C<chmod
-R +w *>' on the entire Perl source tree.
Also, it is a well known WinNT "feature" that files created by a login
=item * C<-lcrypt>
-The crypt libraries in GNU libc have been ported to Cygwin.
+The crypt package distributed with Cygwin is a Linux compatible 56-bit
+DES crypt port by Corinna Vinschen.
+
+Alternatively, the crypt libraries in GNU libc have been ported to Cygwin.
The DES based Ultra Fast Crypt port was done by Alexey Truhan:
ftp://ftp.franken.de/pub/win32/develop/gnuwin32/cygwin/porters/Okhapkin_Sergey/libcrypt.tgz
-There is also a Linux compatible 56 bit DES crypt port by Corinna
-Vinschen:
-
- ftp://ftp.franken.de/pub/win32/develop/gnuwin32/cygwin/porters/Vinschen_Corinna/V1.1.1/crypt-1.0.tar.gz
-
=item * C<-lgdbm> (C<use GDBM_File>)
GDBM is available for Cygwin. GDBM's ndbm/dbm compatibility feature
also makes C<NDBM_File> and C<ODBM_File> possible (although they add
little extra value).
+NOTE: The ndbm/dbm emulations only completely work on NTFS partitions.
+
=item * C<-ldb> (C<use DB_File>)
BerkeleyDB is available for Cygwin. Some details can be found in
F<ext/DB_File/DB_File.pm>.
+NOTE: The BerkeleyDB library only completely works on NTFS partitions.
+
=item * C<-lcygipc> (C<use IPC::SysV>)
A port of SysV IPC is available for Cygwin.
=over 4
-=item * Whoa There
-
-Cygwin does not yet implement chroot() functionality, but has a stub
-function that returns C<ENOSYS>. You will see a message when Configure
-detects that its guess conflicts with the hint file.
-
- *** WHOA THERE!!! ***
- The recommended value for $d_chroot on this machine was "undef"!
- Keep the recommended value? [y]
-
-You should keep the recommended value.
-
=item * I<dlsym()>
I<ld2> is needed to build dynamic libraries, but it does not exist
warning: overriding commands for target <file>
warning: ignoring old commands for target <file>
- Warning: no export definition file provided
- dllwrap will create one, but may not be what you want
+ dllwrap: no export definition file provided
+ dllwrap: creating one, but that may not be what you want
=head2 ld2
Test results vary depending on your host system and your Cygwin
configuration. If a test can pass in some Cygwin setup, it is always
attempted and explainable test failures are documented. It is possible
-that Perl will pass all the tests, but it is more likely that some tests
-will fail for one of these reasons.
+for Perl to pass all the tests, but it is more likely that some tests
+will fail for one of the reasons listed below.
=head2 File Permissions
FAT partitions do not support hard links (whereas NTFS does), in which
case Cygwin implements link() by copying the file. On remote (network)
drives Cygwin's stat() always sets C<st_nlink> to 1, so the link count
-for remote directories and files is not available. In both cases,
+for remote directories and files is not available. In either case,
these tests will fail:
Failed Test List of failed
A required .DLL file, CYGWIN1.DLL, was not found
WinNT
- perl.exe or sh.exe - Unable to Locate DLL
+ perl.exe - Unable to Locate DLL
The dynamic link library cygwin1.dll could not be found in the
specified path ...
Alternatively, you can copy F<cygwin1.dll> into the directory where the
tests run:
- cp `type -p cygwin1.dll` t
+ cp /bin/cygwin1.dll t
or one of the Windows system directories (although, this is B<not>
recommended).
: * ? " < > |
-File names are case insensitive, but case preserving. A pathname
-that contains a backslash is a Win32 pathname (and not subject to the
-translations applied to POSIX style pathnames).
+File names are case insensitive, but case preserving. A pathname that
+contains a backslash or drive letter is a Win32 pathname (and not subject
+to the translations applied to POSIX style pathnames).
=item * Text/Binary
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).
+
=back
=head1 INSTALL
When I<make> starts, it warns about overriding commands for F<perlmain.o>.
-`C<make clean>' does not remove library F<.def> and F<.exe.stackdump>
+`C<make clean>' does not remove library F<.def> or F<.exe.stackdump>
files.
The I<ld2> script contains references to the source directory. You should
change these to $installbin after `C<make install>'.
+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
+and security contexts are required.
+
=head1 AUTHORS
Charles Wilson <cwilson@ece.gatech.edu>,
=head1 HISTORY
-Last updated: 20 June 2000
+Last updated: 10 August 2000