ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/App-Staticperl/staticperl.pod
(Generate patch)

Comparing App-Staticperl/staticperl.pod (file contents):
Revision 1.9 by root, Tue Dec 7 09:08:06 2010 UTC vs.
Revision 1.12 by root, Tue Dec 7 13:23:07 2010 UTC

184command by specifying all the directories with modules in them that you 184command by specifying all the directories with modules in them that you
185want to have built. 185want to have built.
186 186
187=item F<staticperl clean> 187=item F<staticperl clean>
188 188
189Runs F<make distclean> in the perl source directory (and potentially 189Deletes the perl source directory (and potentially cleans up other
190cleans up other intermediate files). This can be used to clean up 190intermediate files). This can be used to clean up files only needed for
191intermediate files without removing the installed perl interpreter. 191building perl, without removing the installed perl interpreter, or to
192force a re-build from scratch.
193
194At the moment, it doesn't delete downloaded tarballs.
192 195
193=item F<staticperl distclean> 196=item F<staticperl distclean>
194 197
195This wipes your complete F<~/.staticperl> directory. Be careful with this, 198This wipes your complete F<~/.staticperl> directory. Be careful with this,
196it nukes your perl download, perl sources, perl distribution and any 199it nukes your perl download, perl sources, perl distribution and any
383 # specification file 386 # specification file
384 add file1 myfiles/file1 387 add file1 myfiles/file1
385 add file2 myfiles/file2 388 add file2 myfiles/file2
386 add file3 myfiles/file3 389 add file3 myfiles/file3
387 390
391=item --binadd "file" | --add "file alias"
392
393Just like C<--add>, except that it treats the file as binary and adds it
394without any processing.
395
396You should probably add a C</> prefix to avoid clashing with embedded
397perl files (whose paths do not start with C</>), and/or use a special
398directory, such as C</res/name>.
399
400You can later get a copy of these files by calling C<staticperl::find
401"alias">.
402
388=item --static 403=item --static
389 404
390When C<--perl> is also given, link statically instead of dynamically. The 405When C<--perl> is also given, link statically instead of dynamically. The
391default is to link the new perl interpreter fully dynamic (that means all 406default is to link the new perl interpreter fully dynamic (that means all
392perl modules are linked statically, but all external libraries are still 407perl modules are linked statically, but all external libraries are still
429=item C<EMAIL> 444=item C<EMAIL>
430 445
431The e-mail address of the person who built this binary. Has no good 446The e-mail address of the person who built this binary. Has no good
432default, so should be specified by you. 447default, so should be specified by you.
433 448
449=item C<CPAN>
450
451The URL of the CPAN mirror to use (e.g. L<http://mirror.netcologne.de/cpan/>).
452
453=item C<EXTRA_MODULES>
454
455Additional modules installed during F<staticperl install>. Here you can
456set which modules you want have to installed from CPAN.
457
458Example: I really really need EV, AnyEvent, Coro and AnyEvent::AIO.
459
460 EXTRA_MODULES="EV AnyEvent Coro AnyEvent::AIO"
461
462Note that you can also use a C<postinstall> hook to achieve this, and
463more.
464
434=back 465=back
435 466
436=head4 Variables you might I<want> to override 467=head4 Variables you might I<want> to override
437 468
438=over 4 469=over 4
439 470
471=item C<STATICPERL>
472
473The directory where staticperl stores all its files
474(default: F<~/.staticperl>).
475
476=item C<PERL_MM_USE_DEFAULT>, C<EV_EXTRA_DEFS>, ...
477
478Usually set to C<1> to make modules "less inquisitive" during their
479installation, you can set any environment variable you want - some modules
480(such as L<Coro> or L<EV>) use environment variables for further tweaking.
481
440=item C<PERLVER> 482=item C<PERL_VERSION>
441 483
442The perl version to install - default is currently C<5.12.2>, but C<5.8.9> 484The perl version to install - default is currently C<5.12.2>, but C<5.8.9>
443is also a good choice (5.8.9 is much smaller than 5.12.2, while 5.10.1 is 485is also a good choice (5.8.9 is much smaller than 5.12.2, while 5.10.1 is
444about as big as 5.12.2). 486about as big as 5.12.2).
445 487
446=item C<CPAN>
447
448The URL of the CPAN mirror to use (e.g. L<http://mirror.netcologne.de/cpan/>).
449
450=item C<EXTRA_MODULES>
451
452Additional modules installed during F<staticperl install>. Here you can
453set which modules you want have to installed from CPAN.
454
455Example: I really really need EV, AnyEvent, Coro and IO::AIO.
456
457 EXTRA_MODULES="EV AnyEvent Coro IO::AIO"
458
459Note that you can also use a C<postinstall> hook to achieve this, and
460more.
461
462=item C<PERL_MM_USE_DEFAULT>, C<EV_EXTRA_DEFS>, ...
463
464Usually set to C<1> to make modules "less inquisitive" during their
465installation, you can set any environment variable you want - some modules
466(such as L<Coro> or L<EV>) use environment variables for further tweaking.
467
468=item C<STATICPERL>
469
470The directory where staticperl stores all its files
471(default: F<~/.staticperl>).
472
473=item C<PREFIX> 488=item C<PERL_PREFIX>
474 489
475The prefix where perl gets installed (default: F<$STATICPERL/perl>), 490The prefix where perl gets installed (default: F<$STATICPERL/perl>),
476i.e. where the F<bin> and F<lib> subdirectories will end up. 491i.e. where the F<bin> and F<lib> subdirectories will end up.
492
493=item C<PERL_CONFIGURE>
494
495Additional Configure options - these are simply passed to the perl
496Configure script. For example, if you wanted to enable dynamic loading,
497you could pass C<-Dusedl>. To enable ithreads (Why would you want that
498insanity? Don't! Use L<forks> instead!) you would pass C<-Duseithreads>
499and so on.
500
501More commonly, you would either activate 64 bit integer support
502(C<-Duse64bitint>), or disable large files support (-Uuselargefiles), to
503reduce filesize further.
477 504
478=item C<PERL_CPPFLAGS>, C<PERL_OPTIMIZE>, C<PERL_LDFLAGS>, C<PERL_LIBS> 505=item C<PERL_CPPFLAGS>, C<PERL_OPTIMIZE>, C<PERL_LDFLAGS>, C<PERL_LIBS>
479 506
480These flags are passed to perl's F<Configure> script, and are generally 507These flags are passed to perl's F<Configure> script, and are generally
481optimised for small size (at the cost of performance). Since they also 508optimised for small size (at the cost of performance). Since they also
518 instcpan Anyevent::AIO AnyEvent::HTTPD 545 instcpan Anyevent::AIO AnyEvent::HTTPD
519 } 546 }
520 547
521=over 4 548=over 4
522 549
550=item preconfigure
551
552Called just before running F<./Configur> in the perl source
553directory. Current working directory is the perl source directory.
554
555This can be used to set any C<PERL_xxx> variables, which might be costly
556to compute.
557
523=item postconfigure 558=item postconfigure
524 559
525Called after configuring, but before building perl. Current working 560Called after configuring, but before building perl. Current working
526directory is the perl source directory. 561directory is the perl source directory.
527 562
528Could be used to tailor/patch config.sh (followed by F<./Configure -S>) or 563Could be used to tailor/patch config.sh (followed by F<sh Configure -S>)
529do any other modifications. 564or do any other modifications.
530 565
531=item postbuild 566=item postbuild
532 567
533Called after building, but before installing perl. Current working 568Called after building, but before installing perl. Current working
534directory is the perl source directory. 569directory is the perl source directory.
654 689
655=back 690=back
656 691
657=head1 FULLY STATIC BINARIES - BUILDROOT 692=head1 FULLY STATIC BINARIES - BUILDROOT
658 693
659To make truly static (linux-) libraries, you might want to have a look at 694To make truly static (Linux-) libraries, you might want to have a look at
660buildroot (L<http://buildroot.uclibc.org/>). 695buildroot (L<http://buildroot.uclibc.org/>).
661 696
662Buildroot is primarily meant to set up a cross-compile environment (which 697Buildroot is primarily meant to set up a cross-compile environment (which
663is not so useful as perl doesn't quite like cross compiles), but it can also compile 698is not so useful as perl doesn't quite like cross compiles), but it can also compile
664a chroot environment where you can use F<staticperl>. 699a chroot environment where you can use F<staticperl>.
678uClibc newer than 0.9.31 (at the time of this writing, I used the 20101201 713uClibc newer than 0.9.31 (at the time of this writing, I used the 20101201
679snapshot) and enable NPTL, otherwise Coro needs to be configured with the 714snapshot) and enable NPTL, otherwise Coro needs to be configured with the
680ultra-slow pthreads backend to work around linuxthreads bugs (it also uses 715ultra-slow pthreads backend to work around linuxthreads bugs (it also uses
681twice the address space needed for stacks). 716twice the address space needed for stacks).
682 717
718If you use C<linuxthreads.old>, then you should also be aware that
719uClibc shares C<errno> between all threads when statically linking. See
720L<http://lists.uclibc.org/pipermail/uclibc/2010-June/044157.html> for a
721workaround (And L<https://bugs.uclibc.org/2089> for discussion).
722
683C<ccache> support is also recommended, especially if you want to 723C<ccache> support is also recommended, especially if you want
684play around with buildroot options. Enabling the C<miniperl> package 724to play around with buildroot options. Enabling the C<miniperl>
685will probably enable all options required for a successful perl 725package will probably enable all options required for a successful
686build. F<staticperl> itself additionally needs either C<wget> or C<curl>. 726perl build. F<staticperl> itself additionally needs either C<wget>
727(recommended, for CPAN) or C<curl>.
687 728
688As for shells, busybox should provide all that is needed, but the default 729As for shells, busybox should provide all that is needed, but the default
689busybox configuration doesn't include F<comm> which is needed by perl - 730busybox configuration doesn't include F<comm> which is needed by perl -
690either make a custom busybox config, or compile coreutils. 731either make a custom busybox config, or compile coreutils.
691 732

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines