bootstrap-perl - Bootstrap Perl inclusive CPAN from git
Install a threaded 64bit Perl using current "blead" from git with CPAN config into a path like /$HOME/.bootstrapperl/$HOSTNAME/perl-5.15-thread-64bit-v5.15.5-258-ge7d0a3f:
/$HOME/.bootstrapperl/$HOSTNAME/perl-5.15-thread-64bit-v5.15.5-258-ge7d0a3f
$ bootstrap-perl [ <OPTIONS> ]
$ bootstrap-perl --version blead # same as default
# note the different tag forms before and after Perl 5.10 $ bootstrap-perl --version perl-5.8.7 $ bootstrap-perl --version v5.14.1
$ bootstrap-perl --version remotes/origin/smoke-me/cpan $ bootstrap-perl --version remotes/origin/zefram/pad_api $ bootstrap-perl --version remotes/origin/maint-5.12 $ bootstrap-perl --version remotes/origin/maint-5.12^ $ bootstrap-perl --version remotes/origin/maint-5.12~3
$ bootstrap-perl --version c14f2f9db08de3f50fe2ff7438429153d6ceb9a5 $ bootstrap-perl --version c14f2f9db08de3f50fe2ff7438429153d6ceb9a5^
A leading . is replaced with HEAD's commitid in current subdir; you can still combine that like usual git revisions:
.
$ bootstrap-perl --version . $ bootstrap-perl --version .^ $ bootstrap-perl --version .~5
$ bootstrap-perl --giturl git://github.com/mirrors/perl.git $ bootstrap-perl -g git://github.com/mirrors/perl.git # same $ bootstrap-perl -g . # local dir
The giturl is always cloned from the specified giturl to a temporary working directory, so your local subdir stays untouched.
Install into other install directory than the unified naming schema (see below for more on this schema):
$ bootstrap-perl --prefix <PREFIX>
Use the unified naming schema but not under /$HOME/.bootstrapperl/$HOSTNAME:
/$HOME/.bootstrapperl/$HOSTNAME
$ bootstrap-perl --prefixbase /foo/bar
Provide the distro for which to install known build dependencies, like gcc, git, make, etc.:
$ bootstrap-perl --installdeps=debian
Currently there is only one: debian. Simply send me a patch for your preferred distro, it's easy.
debian
Use this many parallel jobs to build:
$ bootstrap-perl --jobs <n> $ bootstrap-perl -j <n>
Default is to use core count + 1.
Run the perl test suite:
$ bootstrap-perl --test $ bootstrap-perl -t
Default is not to run the tests.
You can specify whether you want to compile perl even when an executable perl already exists:
perl
$ bootstrap-perl --forcebuildperl $ bootstrap-perl --noforcebuildperl
Default is off.
You can specify whether to bootstrap a full CPAN environment with distroprefs and dependencies:
$ bootstrap-perl --cpan $ bootstrap-perl --nocpan
Default is on.
You can specify whether to (re-)write a CPAN config (CPAN/Config.pm, CPAN/MyConfig.pm) even when it already exists:
CPAN/Config.pm
CPAN/MyConfig.pm
$ bootstrap-perl --forcecpancfg $ bootstrap-perl --noforcecpancfg
Build a threaded Perl (-Dusethreads):
-Dusethreads
$ bootstrap-perl --usethreads
which is already the default. To build non-threaded Perl use:
$ bootstrap-perl --nousethreads
Build a 64bit enabled Perl (-Duse64bitall):
-Duse64bitall
$ bootstrap-perl --use64bit
which is already the default. To build Perl without 64bit use:
$ bootstrap-perl --nouse64bit
Perl can be built without taint support (-DNO_TAINT_SUPPORT).
-DNO_TAINT_SUPPORT
To build a Perl with taint support:
$ bootstrap-perl --taintsupport
which is already the default. To build Perl without taint support use:
$ bootstrap-perl --notaintsupport
By default the Perl version number is derived from git-describe and kept for later reference (e.g., for codespeed exe name). However, if you specify
$ bootstrap-perl --blead
then the version used in paths or codespeed executables is using "blead" in order to generate a make it belong to to a common development line besides the yearly segmented graphs.
It is only possible to use --blead with development versions in order to create consistent results from only the blead branch.
--blead
Note that --blead does not set a version but only modifies the formats of path prefix and how the version is reported to Perl::Formance; it is not the same as --version blead.
--version blead
Configure CPAN to use these mirrors:
$ bootstrap-perl --mirror file:///home/ss5/MINICPAN/ $ bootstrap-perl -m file:///home/ss5/MINICPAN/ -m ftp://ftp.rub.de/pub/CPAN/ $ bootstrap-perl -m file:///home/ss5/MINICPAN/,ftp://ftp.rub.de/pub/CPAN/
(Option can be repeated and allow comma separated lists.)
Install these modules from CPAN:
$ bootstrap-perl --module YAML::Syck $ bootstrap-perl --module YAML::Syck --forcemoduleinstall $ bootstrap-perl -M YAML::Syck -M Digest::SHA1 -M IO::Tty -M LWP $ bootstrap-perl -M YAML::Syck,Digest::SHA1 -M IO::Tty,LWP
Run these scripts relative to built <PREFIX>/bin/:
$ bootstrap-perl --run tapper-testsuite-benchmark-perlformance $ bootstrap-perl --run tapper-testsuite-benchmark-perlformance --runargs="--plugins=Fib,FibOO;-vvv" $ bootstrap-perl -r tapper-testsuite-benchmark-perlformance -r primes.pl
(Option --run can be repeated and allows comma separated lists.)
--run
(Option --runargs can be repeated and allows semicolon[sic] separated lists.)
--runargs
To do everything in one go needed for running Benchmark::Perl::Formance do:
$ bootstrap-perl --perlformance
This sets defaults equivalent to -M Task::PerlFormance -m http://perlformance.net/PINTO/perlformance/ --run benchmark-perlformance --runargs=--plugins=ALL.
-M Task::PerlFormance
-m http://perlformance.net/PINTO/perlformance/
--run benchmark-perlformance
--runargs=--plugins=ALL
You can override parts of that like this:
$ bootstrap-perl --perlformance --runargs="--plugins=Fib,FibOO"
to specify different set ob benchmarks.
To use current subdir as Perl's repo and run only those benchmarks with no extra dependencies
$ bootstrap-perl --perlformance-local $ bootstrap-perl --perlformance-local -c . $ bootstrap-perl --perlformance-local -c .^ $ bootstrap-perl --perlformance-local -c .~5
It uses a unified naming schema for it's installation PREFIX:
/$HOME/.bootstrapperl/$HOSTNAME/perl-5.<VERSION>-<(no)?thread>-<(no)?64bit>-<(no)?taint>-<git-describe>
which leads to paths like this:
/home/ss5/.bootstrapperl/zomtec/perl-5.10-thread-64bit-taint-v5.10.0 /home/ss5/.bootstrapperl/zomtec/perl-5.15-thread-64bit-taint-v5.15.5-258-ge7d0a3f
This naming schema consist of the major version, basic configuration and git-describe.
The script bootstrap-perl bootstraps Perl installations with complete CPAN environment, inclusive distroprefs, from git.
It was originally developed to be used by Benchmark::Perl::Formance and now lives on its own.
It should work for Perl versions from 5.8.6 to blead. Occasionally it cherry-picks a very few patches to fix some known build issues, like for 5.8.x.
Steffen Schwigon <ss5@renormalist.net>
This software is copyright (c) 2021 by Steffen Schwigon.
This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.
AUTO-GENERATED -- see https://metacpan.org/pod/bootstrap-perl
This is CPAN.pm's systemwide configuration file. This file provides defaults for users, and the values can be changed in a per-user configuration file. The user-config file is being looked for as ~/.cpan/CPAN/MyConfig.pm.
To install App::Bootstrap::Perl, copy and paste the appropriate command in to your terminal.
cpanm
cpanm App::Bootstrap::Perl
CPAN shell
perl -MCPAN -e shell install App::Bootstrap::Perl
For more information on module installation, please visit the detailed CPAN module installation guide.