This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Promote v5.36 usage and feature bundles doc
[perl5.git] / README.cygwin
1 If you read this file _as_is_, just ignore the funny characters you
2 see. It is written in the POD format (see F<pod/perlpod.pod>) which is
3 specially designed to be readable as is.
4
5 =head1 NAME
6
7 perlcygwin - Perl for Cygwin
8
9 =head1 SYNOPSIS
10
11 This document will help you configure, make, test and install Perl
12 on Cygwin.  This document also describes features of Cygwin that will
13 affect how Perl behaves at runtime.
14
15 B<NOTE:> There are pre-built Perl packages available for Cygwin and a
16 version of Perl is provided in the normal Cygwin install.  If you do
17 not need to customize the configuration, consider using one of those
18 packages.
19
20
21 =head1 PREREQUISITES FOR COMPILING PERL ON CYGWIN
22
23 =head2 Cygwin = GNU+Cygnus+Windows (Don't leave UNIX without it)
24
25 The Cygwin tools are ports of the popular GNU development tools for Win32
26 platforms.  They run thanks to the Cygwin library which provides the UNIX
27 system calls and environment these programs expect.  More information
28 about this project can be found at:
29
30 L<https://www.cygwin.com/>
31
32 A recent net or commercial release of Cygwin is required.
33
34 At the time this document was last updated, Cygwin 3.0.7 was current.
35
36
37 =head2 Cygwin Configuration
38
39 While building Perl some changes may be necessary to your Cygwin setup so
40 that Perl builds cleanly.  These changes are B<not> required for normal
41 Perl usage.
42
43 B<NOTE:> The binaries that are built will run on all Win32 versions.
44 They do not depend on your host system or your
45 Cygwin configuration (binary/text mounts, cygserver).
46 The only dependencies come from hard-coded pathnames like F</usr/local>.
47 However, your host system and Cygwin configuration will affect Perl's
48 runtime behavior (see L</"TEST">).
49
50 =over 4
51
52 =item * C<PATH>
53
54 Set the C<PATH> environment variable so that Configure finds the Cygwin
55 versions of programs. Any not-needed Windows directories should be removed or
56 moved to the end of your C<PATH>.
57
58 =item * I<nroff>
59
60 If you do not have I<nroff> (which is part of the I<groff> package),
61 Configure will B<not> prompt you to install I<man> pages.
62
63 =back
64
65 =head1 CONFIGURE PERL ON CYGWIN
66
67 The default options gathered by Configure with the assistance of
68 F<hints/cygwin.sh> will build a Perl that supports dynamic loading
69 (which requires a shared F<cygperl5_16.dll>).
70
71 This will run Configure and keep a record:
72
73   ./Configure 2>&1 | tee log.configure
74
75 If you are willing to accept all the defaults run Configure with B<-de>.
76 However, several useful customizations are available.
77
78 =head2 Stripping Perl Binaries on Cygwin
79
80 It is possible to strip the EXEs and DLLs created by the build process.
81 The resulting binaries will be significantly smaller.  If you want the
82 binaries to be stripped, you can either add a B<-s> option when Configure
83 prompts you,
84
85   Any additional ld flags (NOT including libraries)? [none] -s
86   Any special flags to pass to g++ to create a dynamically loaded
87   library?
88   [none] -s
89   Any special flags to pass to gcc to use dynamic linking? [none] -s
90
91 or you can edit F<hints/cygwin.sh> and uncomment the relevant variables
92 near the end of the file.
93
94 =head2 Optional Libraries for Perl on Cygwin
95
96 Several Perl functions and modules depend on the existence of
97 some optional libraries.  Configure will find them if they are
98 installed in one of the directories listed as being used for library
99 searches.  Pre-built packages for most of these are available from
100 the Cygwin installer.
101
102 =over 4
103
104 =item * C<-lcrypt>
105
106 The crypt package distributed with Cygwin is a Linux compatible 56-bit
107 DES crypt port by Corinna Vinschen.
108
109 Alternatively, the crypt libraries in GNU libc have been ported to Cygwin.
110
111 As of libcrypt 1.3 (March 2016), you will need to install the
112 libcrypt-devel package for Configure to detect crypt().
113
114 =item * C<-lgdbm_compat> (C<use GDBM_File>)
115
116 GDBM is available for Cygwin.
117
118 NOTE: The GDBM library only works on NTFS partitions.
119
120 =item * C<-ldb> (C<use DB_File>)
121
122 BerkeleyDB is available for Cygwin.
123
124 NOTE: The BerkeleyDB library only completely works on NTFS partitions.
125
126 =item * C<cygserver> (C<use IPC::SysV>)
127
128 A port of SysV IPC is available for Cygwin.
129
130 NOTE: This has B<not> been extensively tested.  In particular,
131 C<d_semctl_semun> is undefined because it fails a Configure test.  It
132 also creates a compile time dependency because F<perl.h> includes
133 F<<sys/ipc.h>> and F<<sys/sem.h>> (which will be required in the
134 future when compiling CPAN modules). CURRENTLY NOT SUPPORTED!
135
136 =item * C<-lutil>
137
138 Included with the standard Cygwin netrelease is the inetutils package
139 which includes libutil.a.
140
141 =back
142
143 =head2 Configure-time Options for Perl on Cygwin
144
145 The F<INSTALL> document describes several Configure-time options.  Some of
146 these will work with Cygwin, others are not yet possible.  Also, some of
147 these are experimental.  You can either select an option when Configure
148 prompts you or you can define (undefine) symbols on the command line.
149
150 =over 4
151
152 =item * C<-Uusedl>
153
154 Undefining this symbol forces Perl to be compiled statically.
155
156 =item * C<-Dusemymalloc>
157
158 By default Perl does not use the C<malloc()> included with the Perl source,
159 because it was slower and not entirely thread-safe.  If you want to force
160 Perl to build with the old -Dusemymalloc define this.
161
162 =item * C<-Uuseperlio>
163
164 Undefining this symbol disables the PerlIO abstraction.  PerlIO is now the
165 default; it is not recommended to disable PerlIO.
166
167 =item * C<-Dusemultiplicity>
168
169 Multiplicity is required when embedding Perl in a C program and using
170 more than one interpreter instance.  This is only required when you build
171 a not-threaded perl with C<-Uuseithreads>.
172
173 =item * C<-Uuse64bitint>
174
175 By default Perl uses 64 bit integers.  If you want to use smaller 32 bit
176 integers, define this symbol.
177
178 =item * C<-Duselongdouble>
179
180 I<gcc> supports long doubles (12 bytes).  However, several additional
181 long double math functions are necessary to use them within Perl
182 (I<{atan2, cos, exp, floor, fmod, frexp, isnan, log, modf, pow, sin, sqrt}l,
183 strtold>).
184 These are B<not> yet available with newlib, the Cygwin libc.
185
186 =item * C<-Uuseithreads>
187
188 Define this symbol if you want not-threaded faster perl.
189
190 =item * C<-Duselargefiles>
191
192 Cygwin uses 64-bit integers for internal size and position calculations,
193 this will be correctly detected and defined by Configure.
194
195 =item * C<-Dmksymlinks>
196
197 Use this to build perl outside of the source tree.  Details can be
198 found in the F<INSTALL> document.  This is the recommended way to
199 build perl from sources.
200
201 =back
202
203 =head1 MAKE ON CYGWIN
204
205 Simply run I<make> and wait:
206
207   make 2>&1 | tee log.make
208
209 =head1 TEST ON CYGWIN
210
211 There are two steps to running the test suite:
212
213   make test 2>&1 | tee log.make-test
214
215   cd t; ./perl harness 2>&1 | tee ../log.harness
216
217 The same tests are run both times, but more information is provided when
218 running as C<./perl harness>.
219
220 Test results vary depending on your host system and your Cygwin
221 configuration.  If a test can pass in some Cygwin setup, it is always
222 attempted and explainable test failures are documented.  It is possible
223 for Perl to pass all the tests, but it is more likely that some tests
224 will fail for one of the reasons listed below.
225
226 =head2 File Permissions on Cygwin
227
228 UNIX file permissions are based on sets of mode bits for
229 {read,write,execute} for each {user,group,other}.  By default Cygwin
230 only tracks the Win32 read-only attribute represented as the UNIX file
231 user write bit (files are always readable, files are executable if they
232 have a F<.{com,bat,exe}> extension or begin with C<#!>, directories are
233 always readable and executable).  On WinNT with the I<ntea> C<CYGWIN>
234 setting, the additional mode bits are stored as extended file attributes.
235 On WinNT with the default I<ntsec> C<CYGWIN> setting, permissions use the
236 standard WinNT security descriptors and access control lists. Without one of
237 these options, these tests will fail (listing not updated yet):
238
239   Failed Test           List of failed
240   ------------------------------------
241   io/fs.t               5, 7, 9-10
242   lib/anydbm.t          2
243   lib/db-btree.t        20
244   lib/db-hash.t         16
245   lib/db-recno.t        18
246   lib/gdbm.t            2
247   lib/ndbm.t            2
248   lib/odbm.t            2
249   lib/sdbm.t            2
250   op/stat.t             9, 20 (.tmp not an executable extension)
251
252 =head2 NDBM_File and ODBM_File do not work on FAT filesystems
253
254 Do not use NDBM_File or ODBM_File on FAT filesystem.  They can be
255 built on a FAT filesystem, but many tests will fail:
256
257  ../ext/NDBM_File/ndbm.t       13  3328    71   59  83.10%  1-2 4 16-71
258  ../ext/ODBM_File/odbm.t      255 65280    ??   ??       %  ??
259  ../lib/AnyDBM_File.t           2   512    12    2  16.67%  1 4
260  ../lib/Memoize/t/errors.t      0   139    11    5  45.45%  7-11
261  ../lib/Memoize/t/tie_ndbm.t   13  3328     4    4 100.00%  1-4
262  run/fresh_perl.t                          97    1   1.03%  91
263
264 If you intend to run only on FAT (or if using AnyDBM_File on FAT),
265 run Configure with the -Ui_ndbm and -Ui_dbm options to prevent
266 NDBM_File and ODBM_File being built.
267
268 With NTFS (and no CYGWIN=nontsec), there should be no problems even if
269 perl was built on FAT.
270
271 =head2 C<fork()> failures in io_* tests
272
273 A C<fork()> failure may result in the following tests failing:
274
275   ext/IO/lib/IO/t/io_multihomed.t
276   ext/IO/lib/IO/t/io_sock.t
277   ext/IO/lib/IO/t/io_unix.t
278
279 See comment on fork in L</Miscellaneous> below.
280
281 =head1 Specific features of the Cygwin port
282
283 =head2 Script Portability on Cygwin
284
285 Cygwin does an outstanding job of providing UNIX-like semantics on top of
286 Win32 systems.  However, in addition to the items noted above, there are
287 some differences that you should know about.  This is a very brief guide
288 to portability, more information can be found in the Cygwin documentation.
289
290 =over 4
291
292 =item * Pathnames
293
294 Cygwin pathnames are separated by forward (F</>) slashes, Universal
295 Naming Codes (F<//UNC>) are also supported.  Since cygwin-1.7 non-POSIX
296 pathnames should not be used.  Names may contain all printable
297 characters.
298
299 File names are case insensitive, but case preserving.  A pathname that
300 contains a backslash or drive letter is a Win32 pathname, and not
301 subject to the translations applied to POSIX style pathnames, but
302 cygwin will warn you, so better convert them to POSIX.
303
304 For conversion we have C<Cygwin::win_to_posix_path()> and
305 C<Cygwin::posix_to_win_path()>.
306
307 Since cygwin-1.7 pathnames are UTF-8 encoded.
308
309 =item * Text/Binary
310
311 Since cygwin-1.7 textmounts are deprecated and strongly discouraged.
312
313 When a file is opened it is in either text or binary mode.  In text mode
314 a file is subject to CR/LF/Ctrl-Z translations.  With Cygwin, the default
315 mode for an C<open()> is determined by the mode of the mount that underlies
316 the file. See L</Cygwin::is_binmount>(). Perl provides a C<binmode()> function
317 to set binary mode on files that otherwise would be treated as text.
318 C<sysopen()> with the C<O_TEXT> flag sets text mode on files that otherwise
319 would be treated as binary:
320
321     sysopen(FOO, "bar", O_WRONLY|O_CREAT|O_TEXT)
322
323 C<lseek()>, C<tell()> and C<sysseek()> only work with files opened in binary
324 mode.
325
326 The text/binary issue is covered at length in the Cygwin documentation.
327
328 =item * PerlIO
329
330 PerlIO overrides the default Cygwin Text/Binary behaviour.  A file will
331 always be treated as binary, regardless of the mode of the mount it lives
332 on, just like it is in UNIX.  So CR/LF translation needs to be requested in
333 either the C<open()> call like this:
334
335   open(FH, ">:crlf", "out.txt");
336
337 which will do conversion from LF to CR/LF on the output, or in the
338 environment settings (add this to your .bashrc):
339
340   export PERLIO=crlf
341
342 which will pull in the crlf PerlIO layer which does LF -> CRLF conversion
343 on every output generated by perl.
344
345 =item * F<.exe>
346
347 The Cygwin C<stat()>, C<lstat()> and C<readlink()> functions make the F<.exe>
348 extension transparent by looking for F<foo.exe> when you ask for F<foo>
349 (unless a F<foo> also exists).  Cygwin does not require a F<.exe>
350 extension, but I<gcc> adds it automatically when building a program.
351 However, when accessing an executable as a normal file (e.g., I<cp>
352 in a makefile) the F<.exe> is not transparent.  The I<install> program
353 included with Cygwin automatically appends a F<.exe> when necessary.
354
355 =item * Cygwin vs. Windows process ids
356
357 Cygwin processes have their own pid, which is different from the
358 underlying windows pid.  Most posix compliant Proc functions expect
359 the cygwin pid, but several Win32::Process functions expect the
360 winpid. E.g. C<$$> is the cygwin pid of F</usr/bin/perl>, which is not
361 the winpid.  Use C<Cygwin::pid_to_winpid()> and C<Cygwin::winpid_to_pid()>
362 to translate between them.
363
364 =item * Cygwin vs. Windows errors
365
366 Under Cygwin, $^E is the same as $!.  When using L<Win32 API Functions|Win32>,
367 use C<Win32::GetLastError()> to get the last Windows error.
368
369 =item * rebase errors on fork or system
370
371 Using C<fork()> or C<system()> out to another perl after loading multiple dlls
372 may result on a DLL baseaddress conflict. The internal cygwin error
373 looks like like the following:
374
375  0 [main] perl 8916 child_info_fork::abort: data segment start:
376  parent (0xC1A000) != child(0xA6A000)
377
378 or:
379
380  183 [main] perl 3588 C:\cygwin\bin\perl.exe: *** fatal error -
381  unable to remap C:\cygwin\bin\cygsvn_subr-1-0.dll to same address
382  as parent(0x6FB30000) != 0x6FE60000 46 [main] perl 3488 fork: child
383  3588 - died waiting for dll loading, errno11
384
385 See L<https://cygwin.com/faq/faq.html#faq.using.fixing-fork-failures>
386 It helps if not too many DLLs are loaded in memory so the available address space is larger,
387 e.g. stopping the MS Internet Explorer might help.
388
389 +Use the rebase utilities to resolve the conflicting dll addresses.
390 The rebase package is included in the Cygwin setup. Use F<setup.exe>
391 from L<https://cygwin.com/install.html> to install it.
392
393 1. kill all perl processes and run
394    C<</bin/find <dir> -xdev -name \*.dll | /bin/rebase -OT ->> or
395
396 2. kill all cygwin processes and services, and run setup.exe.
397
398 =item * Miscellaneous
399
400 File locking using the C<F_GETLK> command to C<fcntl()> is a stub that
401 returns C<ENOSYS>.
402
403 The Cygwin C<chroot()> implementation has holes (it can not restrict file
404 access by native Win32 programs).
405
406 Inplace editing C<perl -i> of files doesn't work without doing a backup
407 of the file being edited C<perl -i.bak> because of windowish restrictions,
408 therefore Perl adds the suffix C<.bak> automatically if you use C<perl -i>
409 without specifying a backup extension.
410
411 =back
412
413 =head2 Prebuilt methods:
414
415 =over 4
416
417 =item C<Cwd::cwd>
418
419 Returns the current working directory.
420
421 =item C<Cygwin::pid_to_winpid>
422
423 Translates a cygwin pid to the corresponding Windows pid (which may or
424 may not be the same).
425
426 =item C<Cygwin::winpid_to_pid>
427
428 Translates a Windows pid to the corresponding cygwin pid (if any).
429
430 =item C<Cygwin::win_to_posix_path>
431
432 Translates a Windows path to the corresponding cygwin path respecting
433 the current mount points. With a second non-null argument returns an
434 absolute path. Double-byte characters will not be translated.
435
436 =item C<Cygwin::posix_to_win_path>
437
438 Translates a cygwin path to the corresponding cygwin path respecting
439 the current mount points. With a second non-null argument returns an
440 absolute path. Double-byte characters will not be translated.
441
442 =item C<Cygwin::mount_table()>
443
444 Returns an array of [mnt_dir, mnt_fsname, mnt_type, mnt_opts].
445
446   perl -e 'for $i (Cygwin::mount_table) {print join(" ",@$i),"\n";}'
447   /bin c:\cygwin\bin system binmode,cygexec
448   /usr/bin c:\cygwin\bin system binmode
449   /usr/lib c:\cygwin\lib system binmode
450   / c:\cygwin system binmode
451   /cygdrive/c c: system binmode,noumount
452   /cygdrive/d d: system binmode,noumount
453   /cygdrive/e e: system binmode,noumount
454
455 =item C<Cygwin::mount_flags>
456
457 Returns the mount type and flags for a specified mount point.
458 A comma-separated string of mntent->mnt_type (always
459 "system" or "user"), then the mntent->mnt_opts, where
460 the first is always "binmode" or "textmode".
461
462   system|user,binmode|textmode,exec,cygexec,cygdrive,mixed,
463   notexec,managed,nosuid,devfs,proc,noumount
464
465 If the argument is "/cygdrive", then just the volume mount settings,
466 and the cygdrive mount prefix are returned.
467
468 User mounts override system mounts.
469
470   $ perl -e 'print Cygwin::mount_flags "/usr/bin"'
471   system,binmode,cygexec
472   $ perl -e 'print Cygwin::mount_flags "/cygdrive"'
473   binmode,cygdrive,/cygdrive
474
475 =item C<Cygwin::is_binmount>
476
477 Returns true if the given cygwin path is binary mounted, false if the
478 path is mounted in textmode.
479
480 =item C<Cygwin::sync_winenv>
481
482 Cygwin does not initialize all original Win32 environment variables.
483 See the bottom of this page L<https://cygwin.com/cygwin-ug-net/setup-env.html>
484 for "Restricted Win32 environment".
485
486 Certain Win32 programs called from cygwin programs might need some environment
487 variable, such as e.g. ADODB needs %COMMONPROGRAMFILES%.
488 Call Cygwin::sync_winenv() to copy all Win32 environment variables to your
489 process and note that cygwin will warn on every encounter of non-POSIX paths.
490
491 =back
492
493 =head1 INSTALL PERL ON CYGWIN
494
495 This will install Perl, including I<man> pages.
496
497   make install 2>&1 | tee log.make-install
498
499 NOTE: If C<STDERR> is redirected C<make install> will B<not> prompt
500 you to install I<perl> into F</usr/bin>.
501
502 You may need to be I<Administrator> to run C<make install>.  If you
503 are not, you must have write access to the directories in question.
504
505 Information on installing the Perl documentation in HTML format can be
506 found in the F<INSTALL> document.
507
508 =head1 MANIFEST ON CYGWIN
509
510 These are the files in the Perl release that contain references to Cygwin.
511 These very brief notes attempt to explain the reason for all conditional
512 code.  Hopefully, keeping this up to date will allow the Cygwin port to
513 be kept as clean as possible.
514
515 =over 4
516
517 =item Documentation
518
519  INSTALL README.cygwin README.win32 MANIFEST
520  pod/perl.pod pod/perlport.pod pod/perlfaq3.pod
521  pod/perldelta.pod pod/perl5004delta.pod pod/perl56delta.pod
522  pod/perl561delta.pod pod/perl570delta.pod pod/perl572delta.pod
523  pod/perl573delta.pod pod/perl58delta.pod pod/perl581delta.pod
524  pod/perl590delta.pod pod/perlhist.pod pod/perlmodlib.pod
525  pod/perltoc.pod Porting/Glossary pod/perlgit.pod
526  Porting/updateAUTHORS.pl
527  dist/Cwd/Changes ext/Compress-Raw-Zlib/Changes
528  dist/Time-HiRes/Changes
529  ext/Compress-Raw-Zlib/README ext/Compress-Zlib/Changes
530  ext/DB_File/Changes ext/Encode/Changes ext/Sys-Syslog/Changes
531  ext/Win32API-File/Changes
532  lib/ExtUtils/CBuilder/Changes lib/ExtUtils/Changes
533  lib/ExtUtils/NOTES lib/ExtUtils/PATCHING lib/ExtUtils/README
534  lib/Net/Ping/Changes lib/Test/Harness/Changes
535  lib/Term/ANSIColor/ChangeLog lib/Term/ANSIColor/README
536
537 =item Build, Configure, Make, Install
538
539  cygwin/Makefile.SHs
540  ext/IPC/SysV/hints/cygwin.pl
541  ext/NDBM_File/hints/cygwin.pl
542  ext/ODBM_File/hints/cygwin.pl
543  hints/cygwin.sh
544  Configure             - help finding hints from uname,
545                          shared libperl required for dynamic loading
546  Makefile.SH Cross/Makefile-cross-SH
547                        - linklibperl
548  Porting/patchls       - cygwin in port list
549  installman            - man pages with :: translated to .
550  installperl           - install dll, install to 'pods'
551  makedepend.SH         - uwinfix
552  regen_lib.pl          - file permissions
553
554  plan9/mkfile
555  vms/descrip_mms.template
556  win32/Makefile
557
558 =item Tests
559
560  t/io/fs.t             - no file mode checks if not ntsec
561                          skip rename() check when not
562                          check_case:relaxed
563  t/io/tell.t           - binmode
564  t/lib/cygwin.t        - builtin cygwin function tests
565  t/op/groups.t         - basegroup has ID = 0
566  t/op/magic.t          - $^X/symlink WORKAROUND, s/.exe//
567  t/op/stat.t           - no /dev, skip Win32 ftCreationTime quirk
568                          (cache manager sometimes preserves ctime of
569                          file previously created and deleted), no -u
570                          (setuid)
571  t/op/taint.t          - can't use empty path under Cygwin Perl
572  t/op/time.t           - no tzset()
573
574 =item Compiled Perl Source
575
576  EXTERN.h              - __declspec(dllimport)
577  XSUB.h                - __declspec(dllexport)
578  cygwin/cygwin.c       - os_extras (getcwd, spawn, and several
579                          Cygwin:: functions)
580  perl.c                - os_extras, -i.bak
581  perl.h                - binmode
582  doio.c                - win9x can not rename a file when it is open
583  pp_sys.c              - do not define h_errno, init
584                          _pwent_struct.pw_comment
585  util.c                - use setenv
586  util.h                - PERL_FILE_IS_ABSOLUTE macro
587  pp.c                  - Comment about Posix vs IEEE math under
588                          Cygwin
589  perlio.c              - CR/LF mode
590  perliol.c             - Comment about EXTCONST under Cygwin
591
592 =item Compiled Module Source
593
594  ext/Compress-Raw-Zlib/Makefile.PL
595                        - Can't install via CPAN shell under Cygwin
596  ext/Compress-Raw-Zlib/zlib-src/zutil.h
597                        - Cygwin is Unix-like and has vsnprintf
598  ext/Errno/Errno_pm.PL - Special handling for Win32 Perl under
599                          Cygwin
600  ext/POSIX/POSIX.xs    - tzname defined externally
601  ext/SDBM_File/sdbm/pair.c
602                        - EXTCONST needs to be redefined from
603                          EXTERN.h
604  ext/SDBM_File/sdbm/sdbm.c
605                        - binary open
606  ext/Sys/Syslog/Syslog.xs
607                        - Cygwin has syslog.h
608  ext/Sys/Syslog/win32/compile.pl
609                        - Convert paths to Windows paths
610  ext/Time-HiRes/HiRes.xs
611                        - Various timers not available
612  ext/Time-HiRes/Makefile.PL
613                        - Find w32api/windows.h
614  ext/Win32/Makefile.PL - Use various libraries under Cygwin
615  ext/Win32/Win32.xs    - Child dir and child env under Cygwin
616  ext/Win32API-File/File.xs
617                        - _open_osfhandle not implemented under
618                          Cygwin
619  ext/Win32CORE/Win32CORE.c
620                        - __declspec(dllexport)
621
622 =item Perl Modules/Scripts
623
624  ext/B/t/OptreeCheck.pm - Comment about stderr/stdout order under
625                           Cygwin
626  ext/Digest-SHA/bin/shasum
627                        - Use binary mode under Cygwin
628  ext/Sys/Syslog/win32/Win32.pm
629                        - Convert paths to Windows paths
630  ext/Time-HiRes/HiRes.pm
631                        - Comment about various timers not available
632  ext/Win32API-File/File.pm
633                        - _open_osfhandle not implemented under
634                          Cygwin
635  ext/Win32CORE/Win32CORE.pm
636                        - History of Win32CORE under Cygwin
637  lib/Cwd.pm            - hook to internal Cwd::cwd
638  lib/ExtUtils/CBuilder/Platform/cygwin.pm
639                        - use gcc for ld, and link to libperl.dll.a
640  lib/ExtUtils/CBuilder.pm
641                        - Cygwin is Unix-like
642  lib/ExtUtils/Install.pm - Install and rename issues under Cygwin
643  lib/ExtUtils/MM.pm    - OS classifications
644  lib/ExtUtils/MM_Any.pm - Example for Cygwin
645  lib/ExtUtils/MakeMaker.pm
646                        - require MM_Cygwin.pm
647  lib/ExtUtils/MM_Cygwin.pm
648                        - canonpath, cflags, manifypods, perl_archive
649  lib/File/Fetch.pm     - Comment about quotes using a Cygwin example
650  lib/File/Find.pm      - on remote drives stat() always sets
651                          st_nlink to 1
652  lib/File/Spec/Cygwin.pm - case_tolerant
653  lib/File/Spec/Unix.pm - preserve //unc
654  lib/File/Spec/Win32.pm - References a message on cygwin.com
655  lib/File/Spec.pm      - Pulls in lib/File/Spec/Cygwin.pm
656  lib/File/Temp.pm      - no directory sticky bit
657  lib/Module/CoreList.pm - List of all module files and versions
658  lib/Net/Domain.pm     - No domainname command under Cygwin
659  lib/Net/Netrc.pm      - Bypass using stat() under Cygwin
660  lib/Net/Ping.pm       - ECONREFUSED is EAGAIN under Cygwin
661  lib/Pod/Find.pm       - Set 'pods' dir
662  lib/Pod/Perldoc/ToMan.pm - '-c' switch for pod2man
663  lib/Pod/Perldoc.pm    - Use 'less' pager, and use .exe extension
664  lib/Term/ANSIColor.pm - Cygwin terminal info
665  lib/perl5db.pl        - use stdin not /dev/tty
666  utils/perlbug.PL      - Add CYGWIN environment variable to report
667
668 =item Perl Module Tests
669
670  dist/Cwd/t/cwd.t
671  ext/Compress-Zlib/t/14gzopen.t
672  ext/DB_File/t/db-btree.t
673  ext/DB_File/t/db-hash.t
674  ext/DB_File/t/db-recno.t
675  ext/DynaLoader/t/DynaLoader.t
676  ext/File-Glob/t/basic.t
677  ext/GDBM_File/t/gdbm.t
678  ext/POSIX/t/sysconf.t
679  ext/POSIX/t/time.t
680  ext/SDBM_File/t/sdbm.t
681  ext/Sys/Syslog/t/syslog.t
682  ext/Time-HiRes/t/HiRes.t
683  ext/Win32/t/Unicode.t
684  ext/Win32API-File/t/file.t
685  ext/Win32CORE/t/win32core.t
686  lib/AnyDBM_File.t
687  lib/Archive/Extract/t/01_Archive-Extract.t
688  lib/Archive/Tar/t/02_methods.t
689  lib/ExtUtils/t/Embed.t
690  lib/ExtUtils/t/eu_command.t
691  lib/ExtUtils/t/MM_Cygwin.t
692  lib/ExtUtils/t/MM_Unix.t
693  lib/File/Compare.t
694  lib/File/Copy.t
695  lib/File/Find/t/find.t
696  lib/File/Path.t
697  lib/File/Spec/t/crossplatform.t
698  lib/File/Spec/t/Spec.t
699  lib/Net/hostent.t
700  lib/Net/Ping/t/110_icmp_inst.t
701  lib/Net/Ping/t/500_ping_icmp.t
702  lib/Net/t/netrc.t
703  lib/Pod/Simple/t/perlcyg.pod
704  lib/Pod/Simple/t/perlcygo.txt
705  lib/Pod/Simple/t/perlfaq.pod
706  lib/Pod/Simple/t/perlfaqo.txt
707  lib/User/grent.t
708  lib/User/pwent.t
709
710 =back
711
712 =head1 BUGS ON CYGWIN
713
714 Support for swapping real and effective user and group IDs is incomplete.
715 On WinNT Cygwin provides C<setuid()>, C<seteuid()>, C<setgid()> and C<setegid()>.
716 However, additional Cygwin calls for manipulating WinNT access tokens
717 and security contexts are required.
718
719 =head1 AUTHORS
720
721 Charles Wilson <cwilson@ece.gatech.edu>,
722 Eric Fifer <egf7@columbia.edu>,
723 alexander smishlajev <als@turnhere.com>,
724 Steven Morlock <newspost@morlock.net>,
725 Sebastien Barre <Sebastien.Barre@utc.fr>,
726 Teun Burgers <burgers@ecn.nl>,
727 Gerrit P. Haase <gp@familiehaase.de>,
728 Reini Urban <rurban@cpan.org>,
729 Jan Dubois <jand@activestate.com>,
730 Jerry D. Hedden <jdhedden@cpan.org>.
731
732 =head1 HISTORY
733
734 Last updated: 2019-11-14