X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=INSTALL;h=c5545b7826d90b65b338eeb59323ac0ed28223d2;hb=6a93df2e699ee31021f3373dcafbb41d67f7f951;hp=e868b0dcc76480b3044488f6298f567dd2cc843b;hpb=cc65bb4961e551c0b5a3921471c9232b097b937e;p=p5sagit%2Fp5-mst-13.2.git diff --git a/INSTALL b/INSTALL index e868b0d..c5545b7 100644 --- a/INSTALL +++ b/INSTALL @@ -712,6 +712,14 @@ If you decide to use ithreads, the 'threads' module allows their use, and the 'Thread' module offers an interface to both 5005threads and ithreads (whichever has been configured). +When building threaded for certain library calls like the getgr*() and +the getpw*() there is a dynamically sized result buffer: the buffer +starts small but Perl will keep growing the buffer until the result fits. +To get a fixed upper limit you will have to recompile Perl with +PERL_REENTRANT_MAXSIZE defined to be the number of bytes you want. +One way to do this is to run Configure with +C<-Accflags=-DPERL_REENTRANT_MAXSIZE=65536> + =head2 Large file support. Since Perl 5.6.0, Perl has supported large files (files larger than @@ -929,9 +937,10 @@ libperl.so.8 rather with the installed libperl.so.8? The answer is that you might not be able to. The installation directory is encoded in the perl binary with the LD_RUN_PATH environment variable (or equivalent ld command-line option). On Solaris, you can override that -with LD_LIBRARY_PATH; on Linux you can't. On Digital Unix, you can -override LD_LIBRARY_PATH by setting the _RLD_ROOT environment variable -to point to the perl build directory. +with LD_LIBRARY_PATH; on Linux, you can only override at runtime via +LD_PRELOAD, specifying the exact filename you wish to be used; and on +Digital Unix, you can override LD_LIBRARY_PATH by setting the +_RLD_ROOT environment variable to point to the perl build directory. The only reliable answer is that you should specify a different directory for the architecture-dependent library for your -DDEBUGGING @@ -981,6 +990,16 @@ from the linker for malloc et al. In such cases, the system probably does not allow its malloc functions to be fully replaced with custom versions. +=item -DPERL_DEBUGGING_MSTATS + +This flag enables debugging mstats, which is required to use the +Devel::Peek::mstat() function. You cannot enable this unless you are +using Perl's malloc, so a typical Configure command would be + + sh Configure -DPERL_DEBUGGING_MSTATS -Dusemymalloc='y' + +to enable this option. + =back =head2 Building a debugging perl @@ -1040,8 +1059,20 @@ Even if you do not have dynamic loading, you must still build the DynaLoader extension; you should just build the stub dl_none.xs version. (Configure will suggest this as the default.) -In summary, here are the Configure command-line variables you can set -to turn off various extensions. All others are included by default. +To disable certain extensions so that they are not built, use +the -Dnoextensions=... and -Donlyextensions=... options. They both +accept a space-separated list of extensions. The extensions listed +in C are removed from the list of extensions to build, +while the C is rather more severe and builds only +the listed extensions. The latter should be used with extreme caution +since certain extensions are used by many other extensions and modules: +such modules include Fcntl and IO. The order of processing these +options is first C (if present), then C (if present). + +Another, older way to turn off various extensions (which is still good +to know if you have to work with older Perl) exists. Here are the +Configure command-line variables you can set to turn off various +extensions. All others are included by default. DB_File i_db DynaLoader (Must always be included as a static extension) @@ -1550,10 +1581,22 @@ referring to __inet_* symbols, check to see whether BIND 8.1 is installed. It installs a /usr/local/include/arpa/inet.h that refers to these symbols. Versions of BIND later than 8.1 do not install inet.h in that location and avoid the errors. You should probably update to a -newer version of BIND. If you can't, you can either link with the -updated resolver library provided with BIND 8.1 or rename -/usr/local/bin/arpa/inet.h during the Perl build and test process to -avoid the problem. +newer version of BIND (and remove the files the old one left behind). +If you can't, you can either link with the updated resolver library provided +with BIND 8.1 or rename /usr/local/bin/arpa/inet.h during the Perl build and +test process to avoid the problem. + +=item *_r() prototype NOT found + +On a related note, if you see a bunch of complaints like the above about +reentrant functions - specifically networking-related ones - being present +but without prototypes available, check to see if BIND 8.1 (or possibly +other BIND 8 versions) is (or has been) installed. They install +header files such as netdb.h into places such as /usr/local/include (or into +another directory as specified at build/install time), at least optionally. +Remove them or put them in someplace that isn't in the C preprocessor's +header file include search path (determined by -I options plus defaults, +normally /usr/include). =item #error "No DATAMODEL_NATIVE specified" @@ -1641,12 +1684,12 @@ bval settings. Upgrade your DB library or OS. =item Bad arg length for semctl, is XX, should be ZZZ -If you get this error message from the lib/ipc_sysv test, your System +If you get this error message from the ext/IPC/SysV/t/sem test, your System V IPC may be broken. The XX typically is 20, and that is what ZZZ also should be. Consider upgrading your OS, or reconfiguring your OS to include the System V semaphores. -=item lib/ipc_sysv........semget: No space left on device +=item ext/IPC/SysV/t/sem........semget: No space left on device Either your account or the whole system has run out of semaphores. Or both. Either list the semaphores with "ipcs" and remove the unneeded @@ -1692,7 +1735,7 @@ NCR Tower 32 (OS 2.01.01) may need -W2,-Sl,2000 and #undef MKDIR. UTS may need one or more of -K or -g, and undef LSTAT. -FreeBSD can fail the lib/ipc_sysv.t test if SysV IPC has not been +FreeBSD can fail the ext/IPC/SysV/t/sem.t test if SysV IPC has not been configured in the kernel. Perl tries to detect this, though, and you will get a message telling what to do. @@ -1702,6 +1745,13 @@ tests whether utime() can change timestamps. The Y2K patch seems to break utime() so that over NFS the timestamps do not get changed (on local filesystems utime() still works). +Building Perl on a system that has also BIND (headers and libraries) +installed may run into troubles because BIND installs its own netdb.h +and socket.h, which may not agree with the operating system's ideas of +the same files. Similarly, including -lbind may conflict with libc's +view of the world. You may have to tweak -Dlocincpth and -Dloclibpth +to avoid the BIND. + =back =head2 Cross-compilation @@ -1722,14 +1772,17 @@ line invocation (detailed shortly) is required to access the functionality. NOTE: Perl is routinely built using cross-compilation - in the EPOC environment but the solutions from there - can't directly be used elsewhere. - -The one environment where cross-compilation has successfully been used -as of this writing is the Compaq iPAQ running ARM Linux. The build -host was Intel Linux, the networking setup was PPP + SSH. The exact -setup details are beyond the scope of this document, see -http://www.handhelds.org/ for more information. + in the EPOC environment, in the WinCE, and in the OpenZaurus + project, but all those use something slightly different setup + than what described here. For the WinCE setup, read the + wince/README.compile. For the OpenZaurus setup, read the + Cross/README. + +The one environment where this cross-compilation setup has +successfully been used as of this writing is the Compaq iPAQ running +ARM Linux. The build host was Intel Linux, the networking setup was +PPP + SSH. The exact setup details are beyond the scope of this +document, see http://www.handhelds.org/ for more information. To run Configure in cross-compilation mode the basic switch is C<-Dusecrosscompile>.