NAME
bootstrap-perl - Bootstrap Perl inclusive CPAN from git
SYNOPSIS
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
:
$ bootstrap-perl [ <OPTIONS> ]
Specify git revisions
latest "blead"
$ bootstrap-perl --version blead # same as default
tag
# note the different tag forms before and after Perl 5.10
$ bootstrap-perl --version perl-5.8.7
$ bootstrap-perl --version v5.14.1
branch name
$ 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
by commit id
$ bootstrap-perl --version c14f2f9db08de3f50fe2ff7438429153d6ceb9a5
$ bootstrap-perl --version c14f2f9db08de3f50fe2ff7438429153d6ceb9a5^
current HEAD in local git repo
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
Installation options
specify giturl
$ 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 directory
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
:
$ bootstrap-perl --prefixbase /foo/bar
install build dependencies
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.
parallel build
Use this many parallel jobs to build:
$ bootstrap-perl --jobs <n>
$ bootstrap-perl -j <n>
Default is to use core count + 1.
test
Run the perl test suite:
$ bootstrap-perl --test
$ bootstrap-perl -t
Default is not to run the tests.
(re-)build Perl
You can specify whether you want to compile perl even when an executable perl
already exists:
$ bootstrap-perl --forcebuildperl
$ bootstrap-perl --noforcebuildperl
Default is off.
bootstrap CPAN
You can specify whether to bootstrap a full CPAN environment with distroprefs and dependencies:
$ bootstrap-perl --cpan
$ bootstrap-perl --nocpan
Default is on.
(re-)configure CPAN
You can specify whether to (re-)write a CPAN config (CPAN/Config.pm
, CPAN/MyConfig.pm
) even when it already exists:
$ bootstrap-perl --forcecpancfg
$ bootstrap-perl --noforcecpancfg
Default is on.
use threads
Build a threaded Perl (-Dusethreads
):
$ bootstrap-perl --usethreads
which is already the default. To build non-threaded Perl use:
$ bootstrap-perl --nousethreads
use 64bit
Build a 64bit enabled Perl (-Duse64bitall
):
$ bootstrap-perl --use64bit
which is already the default. To build Perl without 64bit use:
$ bootstrap-perl --nouse64bit
taint support
Perl can be built without taint support (-DNO_TAINT_SUPPORT
, -DSILENT_NO_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
To make the notaintsupport silent, combine it with --silentnotaint:
$ bootstrap-perl --notaintsupport --silentnotaint
(sic, both are needed).
version numbers vs. blead
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.
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
.
configure CPAN and modules
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
(Option can be repeated and allow comma separated lists.)
run scripts
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.)
(Option --runargs
can be repeated and allows semicolon[sic] separated lists.)
run Perl::Formance benchmarks
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
.
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
Unified installation prefix schema
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.
ABOUT
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.
AUTHOR
Steffen Schwigon <ss5@renormalist.net>
COPYRIGHT AND LICENSE
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.
ABOUT
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.