summaryrefslogtreecommitdiff
path: root/cygwin32
diff options
context:
space:
mode:
Diffstat (limited to 'cygwin32')
-rw-r--r--cygwin32/Makefile.SHs21
-rw-r--r--cygwin32/build-instructions.READFIRST28
-rw-r--r--cygwin32/build-instructions.charles-wilson96
-rw-r--r--cygwin32/build-instructions.sebastien-barre9
-rw-r--r--cygwin32/build-instructions.steven-morlock100
-rw-r--r--cygwin32/build-instructions.steven-morlock223
6 files changed, 185 insertions, 92 deletions
diff --git a/cygwin32/Makefile.SHs b/cygwin32/Makefile.SHs
index a675d7433d..e4beabecba 100644
--- a/cygwin32/Makefile.SHs
+++ b/cygwin32/Makefile.SHs
@@ -29,6 +29,24 @@ $spitshell >>Makefile <<!GROK!THIS!
ld2: $& Makefile perlld ${src}/cygwin32/ld2.in
@echo "extracting ld2 (with variable substitutions)"
@$sed s,@buildpath@,$addtopath,g <${src}/cygwin32/ld2.in >ld2
+ @echo "installing ld2 into $installbin"
+# install is included in Cygwin distributions, and we make a note of th
+# requirement in the README.cygwin32 file. However, let's give them
+# a warning.
+ @if test -n "`type $1 2>&1 | sed -n -e '/'$1'$/p'`" ; then \
+ install -c -m 755 ld2 ${installbin}/ld2 ; \
+ else \
+ echo "*************************************************" ; \
+ echo "Oh, no! You didn't read the README.cygwin32" ; \
+ echo "file, which stated that \"install\" was required." ; \
+ echo "Make will probably fail in a few more steps." ; \
+ echo "When it does, copy \"ld2\" to a directory in" ; \
+ echo "your path, other than \".\"." ; \
+ echo "\"/usr/local/bin\" or something similar will do." ; \
+ echo "Then restart make." ; \
+ echo "*************************************************" ; \
+ fi
+
!GROK!THIS!
$spitshell >>Makefile <<!GROK!THIS!
@@ -74,7 +92,6 @@ linklibperl=-l`echo $libperl|sed -e s,^lib,,`
$spitshell >>Makefile <<!GROK!THIS!
LIBPERL = $libperl
LLIBPERL= $linklibperl
-LDLIBPTH= PATH=$addtopath:\${PATH}
CLDFLAGS= -L$addtopath $ldflags
CAT = $cat
AWK = $awk
@@ -87,7 +104,7 @@ cwobj = $(obj)
# override default rule (NB: make croaks!) to force dll usage
perlmain$(OBJ_EXT): perlmain.c
- $(CCCMD) $(PLDLFLAGS) -DUSEIMPORTLIB=\"$(LIBPERL)$(LIB_EXT)\" $*.c
+ $(CCCMD) $(PLDLFLAGS) -DUSEIMPORTLIB $*.c
# library used to make statically linked executables
# miniperl is linked against it to avoid libperl.dll locking
diff --git a/cygwin32/build-instructions.READFIRST b/cygwin32/build-instructions.READFIRST
index 4cdd1990d7..efbc76008b 100644
--- a/cygwin32/build-instructions.READFIRST
+++ b/cygwin32/build-instructions.READFIRST
@@ -1,3 +1,8 @@
+This document is obsolete. Refer to README.cygwin32. However, if you want
+to build a statically linked perl binary, then you applied the wrong patch.
+You want perl5.005_03-static-patch, which will build "Pre-release 1"
+according to the nomenclature in README.cygwin32.
+
The perl source distribution is available from
http://www.cpan.org/src/index.html
@@ -13,17 +18,21 @@ For the easiest build of perl under Cygwin, do the following:
(2) prepare the source
(a) unpack perl source distribution in /usr/local/src
- (b) copy perl5.005_03.patch into /usr/local/src/perl5.005_03/
+ (b) copy perl5.005_03-static-patch into /usr/local/src/perl5.005_03/
(c) cd /usr/local/src/perl5.005_03
(d) chmod -R +w *
- (e) patch -p1 < perl5.005_03.patch
+ (e) patch -p1 < perl5.005_03-static-patch
(3) get ready to build
- (a) cp cygwin32/* .
- (b) cp gcc2 /usr/local/bin
- (c) cp ld2 /usr/local/bin
- (d) cp hints/cygwin32.sh config.sh
- (e) sh Configure -d
+ (a) cp cygwin32/cw32imp.h .
+ (b) cp cygwin32/gcc2 .
+ (c) cp cygwin32/ld2 .
+ (d) cp cygwin32/perlgcc .
+ (e) cp cygwin32/perlld .
+ (f) cp gcc2 /usr/local/bin
+ (g) cp ld2 /usr/local/bin
+ (h) cp hints/cygwin32.sh config.sh
+ (i) sh Configure -d
(automatically does a make depend)
(4) build and install
@@ -31,7 +40,10 @@ For the easiest build of perl under Cygwin, do the following:
(c) make test
(d) make install
-To customize, look around in the patchfile or ignore the patch and follow the build-instructions.* directly. If you want to edit the paths in the patchfile to reflect your system, search for "/usr/" within the patchfile.
+To customize, look around in the patchfile or ignore the patch and
+follow the build-instructions.* directly. If you want to edit the paths
+in the patchfile to reflect your system, search for "/usr/" within the
+patchfile.
* MUST read.
diff --git a/cygwin32/build-instructions.charles-wilson b/cygwin32/build-instructions.charles-wilson
index e758d34d23..93c718f0ed 100644
--- a/cygwin32/build-instructions.charles-wilson
+++ b/cygwin32/build-instructions.charles-wilson
@@ -1,32 +1,66 @@
-DATE: 2 April 99
+This document is obsolete. Refer to README.cygwin32.
-Here are a few hints for building perl with cygwin:
-
-(1) There have been some problems compiling with the default compiler installed with cygwin-b20.1. Some of the patches in perl5.005_03.patch attempt to correct this, but it would probably be a good idea to upgrade your compiler to egcs-1.1.1 (or better) from Mumit Khan's website -- http://www.xraylith.wisc.edu/~khan/software/gnu-win32/
-
-(2) To avoid some failures when doing a "make test", use CYGWIN=ntea while testing. However, see the Cygwin FAQ concerning the use of ntea with FAT partitions. The tests that fail are those that deal with file ownership and access.
-
-(3) Perl should build without trouble under text mounts or binary mounts. However, some tests ("make test") may fail when using text mounts. The tests that fail are those that involve using tie() to attach a hashtable variable to a file.
-
-(4) As of 3/8/98, building and linking new modules into the perl executable rus into problems when using binary mounts. We're still tracking this one down.
+DATE: 13 May 99
-(5) There have been a few hints that some tests may also fail depending on whether you're building, testing, and/or installing as a normal user, or as a member of the Administrators group (NT only). However, we're not sure about this one yet.
-
-(6) When compiling static modules for perl, don't mix modules compiled under text mounts and modules compiled under binary mounts.
-
-(7) The sourcefiles in the tarball extract as "-r--r--r--" by default, so you need to "chmod -R +w *' in order to patch successfully.
-
-(8) To make life easier, you should download ftp://ftp.franken.de/pub/win32/develop/gnuwin32/cygwin/porters/Humblet_Pierre_A/install-cygwin-b20.sh, and use it as your install "executable." Just follow the instructions that are embedding as comments in the .sh file.
-
-(9) There were a number of failed operations when installing. These were
- (a) trying to create man pages whose names had ":" in them -- i.e. man/man3/Tie::Array.3
- (b) for some reason, the installer had difficulty copying the SRCDIR/pod/*.pod files to /usr/local/lib/perl5/perl5.00503/pod/ directory. I did it by hand. It's not really that important - the pod files are converted to man pages, and the man pages are installed successfully. So you don't really need to keep the pod's around.
+Here are a few hints for building perl with cygwin:
+(1) There have been some problems compiling with the default compiler
+installed with cygwin-b20.1. If you're reading this file, then you've
+already applied perl5.005_03-static-patch. Some of the patches in
+perl5.005_03-static-patch attempt to correct these problems, but it
+would probably be a good idea to upgrade your compiler to egcs-1.1.1
+(or better) from Mumit Khan's website --
+http://www.xraylith.wisc.edu/~khan/software/gnu-win32/
+
+(2) To avoid some failures when doing a "make test", use CYGWIN=ntea
+while testing. However, see the Cygwin FAQ concerning the use of ntea
+with FAT partitions. The tests that fail are those that deal with file
+ownership and access.
+
+(3) Perl should build without trouble under text mounts or binary
+mounts. However, some tests ("make test") may fail when using text
+mounts. The tests that fail are those that involve using tie() to
+attach a hashtable variable to a file.
+
+(4) There have been a few hints that some tests may also fail depending
+on whether you're building, testing, and/or installing as a normal
+user, or as a member of the Administrators group (NT only). However,
+we're not sure about this one yet.
+
+(5) When compiling static modules for perl, don't mix modules compiled
+under text mounts and modules compiled under binary mounts.
+
+(6) The sourcefiles in the tarball extract as "-r--r--r--" by default.
+This may or may not cause problems, depending on your setup. To be safe,
+I executed "chmod -R +w *".
+
+(7) To make life easier, you should download install-cygwin-b20.sh from
+ftp://ftp.franken.de/pub/win32/develop/gnuwin32/cygwin/
+ porters/Humblet_Pierre_A/
+and use it as your install "executable." Just follow the instructions
+that are embedded as comments in that shell script.
+
+(8) There were a number of failed operations when installing. These
+occurred in two cases: first, when trying to create man pages whose
+names had ":" in them -- i.e. man/man3/Tie::Array.3, and second,
+when copying the pod files from SRCDIR/pod/*.pod to
+/usr/local/lib/perl5/perl5.00503/pod/. I'm not sure why, but I just
+completed that operation by hand afterwards.
RESULTS:
****************************************************
-I built and tested as a normal user (not Administrator and not a member of the Administrators group). However, I had to switch to Administrator to install because the permissions on my /usr/local/bin were wrong.
+I built and tested as a normal user (not Administrator and not a member
+of the Administrators group). However, I had to
+'chown -R cwilson /usr/local/*' in order to avoid various NTisms.
+(Previously, my /usr/local tree was owned by the Administrators GROUP,
+and since I was building as a normal user, I couldn't install
+completely. Why didn't I just switch to the Administrator account to
+install? Well, that has its own share of problems: basically, the
+Administrator couldn't write to those directories either - they were
+owned by the Admin group, not the Admin user. And the permissions were
+-rw-r--r-- (or -r--r--r--), so group members weren't allowed write
+access. Blame MS.)
RESULTS: make test
------------------
@@ -42,18 +76,24 @@ most things were "foo/bar............ok" with the following exceptions:
base/rs.............ok, 4/14 subtests skipped
op/groups...........skipping test on this platform
op/magic............FAILED test 23
- Failed 1/35 tests, 97.14% okay (-4 skipped tests: 30 okay, 85.71%)
+ Failed 1/35 tests, 97.14% okay (-4 skipped tests: 30 okay,
+85.71%)
op/stat.............ls: /dev: No such file or directory
FAILED tests 4, 35
Failed 2/58 tests, 96.55% okay
op/taint............FAILED tests 1, 3, 31
- Failed 3/149 tests, 97.99% okay (-12 skipped tests: 134 okay, 89.93%)
- (Also got the following popup message four times - "The dynamic link
+ Failed 3/149 tests, 97.99% okay (-12 skipped tests: 134 okay,
+89.93%)
+ (Also got the following popup message four times - "The dynamic
+link
library cygwin1.dll could not be found in the specified path
F:\cygnus\cygwin-b20\usr\local\src\perl5.005_03\t;.;
E:\WINNT\System32;E:\WINNT\system;E:\WINNT;..")
lib/findbin.........FAILED test 1
Failed 1/1 tests, 0.00% okay
+lib/db-btree........skipping test on this platform
+lib/db-hash.........skipping test on this platform
+lib/db-recno........skipping test on this platform
lib/gdbm............skipping test on this platform
lib/ipc_sysv........skipping test on this platform
lib/ndbm............skipping test on this platform
@@ -62,10 +102,12 @@ lib/posix...........skipping test on this platform
lib/thread..........skipping test on this platform
Failed Test Status Wstat Total Fail Failed List of failed
--------------------------------------------------------------------------------
+------------------------------------------------------------------------
+-------
lib/findbin.t 1 1 100.00% 1
op/magic.t 35 1 2.86% 23
op/stat.t 58 2 3.45% 4, 35
op/taint.t 149 3 2.01% 1, 3, 31
10 tests skipped, plus 20 subtests skipped.
-Failed 4/190 test scripts, 97.89% okay. 7/6430 subtests failed, 99.89% okay.
+Failed 4/190 test scripts, 97.89% okay. 7/6430 subtests failed, 99.89%
+okay.
diff --git a/cygwin32/build-instructions.sebastien-barre b/cygwin32/build-instructions.sebastien-barre
index 3e29b35d66..70e0b154dc 100644
--- a/cygwin32/build-instructions.sebastien-barre
+++ b/cygwin32/build-instructions.sebastien-barre
@@ -1,4 +1,8 @@
-The included patch, perl5.005_02.patch, implements all of the suggestions below. Results in a static build, 93.85% successful test on NT.
+This document is obsolete. Refer to README.cygwin32.
+
+perl5.005_03-static-patch implements all of the
+suggestions below. Results in a static build, 93.85%
+successful test on NT.
**********************************
@@ -23,7 +27,8 @@ Basically,
*) Edit the hints/cygwin32.sh file to reflect your paths.
-Here are also a couple of settings I found useful when performing automatic
+Here are also a couple of settings I found useful when performing
+automatic
build (copy hints/cygwin32.sh to config.sh, and do sh Configure -d)
usedl='n'
diff --git a/cygwin32/build-instructions.steven-morlock b/cygwin32/build-instructions.steven-morlock
index 58d19936c3..70b7a55995 100644
--- a/cygwin32/build-instructions.steven-morlock
+++ b/cygwin32/build-instructions.steven-morlock
@@ -1,4 +1,9 @@
-From comp.lang.perl.misc. The included patch, perl5.005_02.patch, implements most of the suggestions below. My observations during the build process are commented within the body of Mr. Morlock's message, set off by ******CSW******
+This document is obsolete. Refer to README.cygwin32.
+
+From comp.lang.perl.misc. perl5.005_03-static-patch
+implements most of the suggestions below. My observations during the
+build process are commented within the body of Mr. Morlock's message,
+set off by ******CSW******
**************************************
@@ -12,7 +17,8 @@ Cygwin Win32 ports of the GNU development tools (Cygwin32) you might
get something out of my experience of building it.
An advantage of the versions Perl built with Cygwin32 is that Cygwin32
-has a POSIX compatible library including support for the fork() function.
+has a POSIX compatible library including support for the fork()
+function.
Steve
@@ -51,15 +57,16 @@ directory. <INST> will refer to the perl target/install directory.
* Pre-build checklist:
- - I found that building Perl on a unmounted partition/drive other than the
- root will fail. It appears that the double forward slash that Cygwin32
- uses to reference drives other than the root drive (typically C:) gets
- converted to a single forward slash at several points in the build process.
- I have not tried, but expect it would work, to mount the non-root drive.
- This problem held true for both the drive where the perl source were and
- the drive where the Cygwin32 binaries where located. In the build
- described in these notes the Perl source and Cygwin32 binaries were located
- on the root drive.
+ - I found that building Perl on a unmounted partition/drive other
+ than the root will fail. It appears that the double forward slash
+ that Cygwin32 uses to reference drives other than the root drive
+ (typically C:) gets converted to a single forward slash at several
+ points in the build process. I have not tried, but expect it would
+ work, to mount the non-root drive. This problem held true for both
+ the drive where the perl source were and the drive where the
+ Cygwin32 binaries where located. In the build described in these
+ notes the Perl source and Cygwin32 binaries were located on the
+ root drive.
- Following the instructions in <PERL>/README.cygwin32:
*******CSW********
@@ -82,13 +89,13 @@ the patch does this
i_stdarg='define'
i_varargs='undef'
- This change allows us to pick up the right version of va_start().
- Cygwin32 has both a signal and double parameter versions floating
- around in their header files.
+ This change allows us to pick up the right version of
+ va_start(). Cygwin32 has both a signal and double parameter
+ versions floating around in their header files.
- + Remove support for dynamic linking. I found that all DynaLoader'd
- extensions crashed during the running of the test suite. Add or edit
- 'usedl' entry to read:
+ + Remove support for dynamic linking. I found that all
+ DynaLoader'd extensions crashed during the running of the
+ test suite. Add or edit 'usedl' entry to read:
*******CSW********
the patch does this
******************
@@ -96,19 +103,20 @@ the patch does this
If there is enough push I will try to sort out the problems with
dynamic loading. I have made several unsuccessful attempts at
- modifying <PERL>/perlld to fix this problem. If you are interested,
- write me.
+ modifying <PERL>/perlld to fix this problem. If you are
+ interested, write me.
+ Change the path to the Cygwin32 directories. This includes the
- entries for 'usrinc', 'libpth', 'lddlflags', 'libc' and 'usrinc'.
+ entries for 'usrinc', 'libpth', 'lddlflags', 'libc' and
+ 'usrinc'.
*******CSW********
the patch does this ^
******************
- Edit makedepend.SH. The original version of makedepend.SH produces
- dependencies that include double backslashes. This can not be processed
- by Cygwin32's 'make'. Apply the following modification to makedepend.SH
- to correct these unfortunate filenames:
+ dependencies that include double backslashes. This can not be
+ processed by Cygwin32's 'make'. Apply the following modification
+ to makedepend.SH to correct these unfortunate filenames:
*******CSW********
and this, as well \/
******************
@@ -129,8 +137,9 @@ and this, as well \/
- Edit config_h.SH. The original version of config_h.SH has an bogus
#include that gets propagated into the dependency list in Makefile
- create from the makedepend script. The Apply the following modification
- to config_h.SH to work around this unfortunate filename:
+ create from the makedepend script. The Apply the following
+ modification to config_h.SH to work around this unfortunate
+ filename:
*******CSW********
the patch does this, too
******************
@@ -151,23 +160,24 @@ the patch does this, too
#endif
The real source of the problem appears that the 'make depend' in the
- 'x2p' directory has problems. The following messages are generated by
- that 'make depend':
+ 'x2p' directory has problems. The following messages are generated
+ by that 'make depend':
Finding dependencies for hash.o.
gcc2: Can't open gcc2
... [similar messages to above]
- You don't seem to have a proper C preprocessor. Using grep instead.
+ You don't seem to have a proper C preprocessor. Using grep
+ instead.
Updating GNUmakefile...
So the grep is pulling the bogus #include from the file. The patch
turns the #include'd message into a comment.
- - Run the Configure in the <PERL> directory as described in the document
- <PERL>/README.cygwin32
+ - Run the Configure in the <PERL> directory as described in the
+ document <PERL>/README.cygwin32
- I receive the message "THIS PACKAGE SEEMS INCOMPLETE.". This does not
- appear to be a problem.
+ I receive the message "THIS PACKAGE SEEMS INCOMPLETE.". This does
+ not appear to be a problem.
When presented with the list of handy defaults, select 'cygwin32'
@@ -181,11 +191,11 @@ the patch does this, too
*******CSW********
I didn't see this problem \/
******************
- - I experience problems when building two files 'pp_sys.o' & 'doio.o'. The
- build process will crash with a Windows dialog during the build of these two
- files. The way I get by the problem is to control-C the make and issue
- the build commands for the two files by hand. In the Perl directory issue
- the following commands:
+ - I experience problems when building two files 'pp_sys.o' &
+ 'doio.o'. The build process will crash with a Windows dialog
+ during the build of these two files. The way I get by the problem
+ is to control-C the make and issue the build commands for the two
+ files by hand. In the Perl directory issue the following commands:
`sh cflags libperl.a pp_sys.o` pp_sys.c
`sh cflags libperl.a doio.o` doio.c
@@ -198,9 +208,9 @@ I didn't see this problem \/
* Testing:
I found that the majority of the tests passed. There were no errors
- that I thought particularly scary. There were several unexpected results
- such as a couple 'A required .DLL file, CYGWIN1.DLL, was not found' dialogs
- and 'Perl perform an illegal operation' dialogs.
+ that I thought particularly scary. There were several unexpected
+ results such as a couple 'A required .DLL file, CYGWIN1.DLL, was not
+ found' dialogs and 'Perl perform an illegal operation' dialogs.
*******CSW********
saw the "missing dll" during one test
@@ -210,7 +220,8 @@ saw the "missing dll" during one test
- Renamed or delete the file <PERL>/t/lib/io_sock.t so it will not be
executed. This test hangs the system. I have made no attempts to
- fix the problem. From the <PERL> directory issue the following command:
+ fix the problem. From the <PERL> directory issue the following
+ command:
*******CSW********
I didn't do this, and saw no problems.
@@ -223,11 +234,12 @@ I didn't do this, and saw no problems.
* Installing:
- The install seems to work okay. There are problems when install the man
- pages, but we don't need any stinkin' man pages, right?
+ The install seems to work okay. There are problems when install the
+ man pages, but we don't need any stinkin' man pages, right?
*******CSW********
-the man pages that didn't install were those that had "::" in their filename.
+the man pages that didn't install were those that had "::" in their
+filename.
******************
- Issue the command 'make install' in the directory <PERL>.
diff --git a/cygwin32/build-instructions.steven-morlock2 b/cygwin32/build-instructions.steven-morlock2
index 0370b7053c..82ff387279 100644
--- a/cygwin32/build-instructions.steven-morlock2
+++ b/cygwin32/build-instructions.steven-morlock2
@@ -1,4 +1,8 @@
-This is an addendum to Steven Morlock's original post. The patch, perl5.005_02.patch, contains the USEMYBINMODE correction described below.
+This document is obsolete. Refer to README.cygwin32.
+
+This is an addendum to Steven Morlock's original post.
+perl5.005_03-static-patch, contains the USEMYBINMODE correction described
+below.
*****************************
Subject: Re: HOWTO: Builiding Perl under Win95/98 using Cygwin32
@@ -12,9 +16,9 @@ details. I'd like to correct that here.
There is a need to address the issue of end of lines being CR/NL or
NL on the Windows platform. Cygwin32 by default converts NL to CR/NL
during file I/O by non Cygwin32-savvy applications. This means that
-Perl, since it does not support 'binmode' for the Cygwin32 platform, will
-not be able to read & write untranslated/binary files. There are two
-methods of over coming this. The first is to mount the Cygwin32
+Perl, since it does not support 'binmode' for the Cygwin32 platform,
+will not be able to read & write untranslated/binary files. There are
+two methods of over coming this. The first is to mount the Cygwin32
partitions in binary mode. The second is to enable binmode support
in Perl. In the original post I had mounted the partition as binary
and neglected to include that fact in the post.
@@ -32,10 +36,10 @@ and neglected to include that fact in the post.
umount /
mount -b c:\\ /
- You must also get and install the gzip'd version of the Perl source code
- archive. The zip'd version of the archive has all NL converted to CR/NL
- pairs in all text files. So you should be downloading the files ending in
- '.gz', not '.zip'.
+ You must also get and install the gzip'd version of the Perl source
+ code archive. The zip'd version of the archive has all NL converted
+ to CR/NL pairs in all text files. So you should be downloading the
+ files ending in '.gz', not '.zip'.
* Patching Perl to add Cygwin32 binmode support:
@@ -60,7 +64,8 @@ and neglected to include that fact in the post.
+ */
+ #define USEMYBINMODE / **/
+ #define my_binmode(fp, iotype) \
-+ (PerlLIO_setmode(PerlIO_fileno(fp), O_BINARY) != -1 ? TRUE : NULL)
++ (PerlLIO_setmode(PerlIO_fileno(fp), O_BINARY) != -1 ?
+TRUE : NULL)
+ #endif
+
#include "regexp.h"