Alien-Build
view release on metacpan or search on metacpan
destdir_filter
Regular expression for the files that should be copied from the
DESTDIR into the stage directory. If not defined, then all files will
be copied.
destdir_ffi_filter
Same as destdir_filter except applies to build_ffi instead of build.
digest
This properties contains the cryptographic digests (if any) that
should be used when verifying any fetched and downloaded files. It is
a hash reference where the key is the filename and the value is an
array reference containing a pair of values, the first being the
algorithm ('SHA256' is recommended) and the second is the actual
digest. The special filename * may be specified to indicate that any
downloaded file should match that digest. If there are both real
filenames and the * placeholder, the real filenames will be used for
filenames that match and any other files will use the placeholder.
Example:
$build->meta_prop->{digest} = {
'foo-1.00.tar.gz' => [ SHA256 => '9feac593aa49a44eb837de52513a57736457f1ea70078346c60f0bfc5f24f2c1' ],
'foo-1.01.tar.gz' => [ SHA256 => '6bbde6a7f10ae5924cf74afc26ff5b7bc4b4f9dfd85c6b534c51bd254697b9e7' ],
'*' => [ SHA256 => '33a20aae3df6ecfbe812b48082926d55391be4a57d858d35753ab1334b9fddb3' ],
};
Cryptographic signatures will only be checked if the check_digest
meta property is set and if the Digest negotiator plugin is loaded.
(The Digest negotiator can be used directly, but is also loaded
automatically if you use the digest directive is used by the
alienfile).
env
Environment variables to override during the build stage.
env_interpolate
Environment variable values will be interpolated with helpers.
Example:
meta->prop->{env_interpolate} = 1;
meta->prop->{env}->{PERL} = '%{perl}';
local_source
Set to true if source code package is available locally. (that is not
fetched over the internet). This is computed by default based on the
start_url property. Can be set by an alienfile or plugin.
platform
Hash reference. Contains information about the platform beyond just
$^O.
platform.compiler_type
Refers to the type of flags that the compiler accepts. May be
expanded in the future, but for now, will be one of:
microsoft
On Windows when using Microsoft Visual C++
unix
Virtually everything else, including gcc on windows.
The main difference is that with Visual C++ -LIBPATH should be used
instead of -L, and static libraries should have the .LIB suffix
instead of .a.
platform.system_type
$^O is frequently good enough to make platform specific logic in
your alienfile, this handles the case when $^O can cover platforms
that provide multiple environments that Perl might run under. The
main example is windows, but others may be added in the future.
unix
vms
windows-activestate
windows-microsoft
windows-mingw
windows-strawberry
windows-unknown
Note that cygwin and msys are considered unix even though they run
on windows!
platform.cpu.count
Contains a non-negative integer of available (possibly virtual)
CPUs on the system. This can be used by build plugins to build in
parallel. The environment variable ALIEN_CPU_COUNT can be set to
override the CPU count.
platform.cpu.arch.name
Contains a normalized name for the architecture of the current
Perl. This can be used by fetch plugins to determine which binary
packages to download. The value may be one of the following, but
this list will be expanded as needed.
armel
32-bit ARM soft-float
armhf
32-bit ARM hard-float
The install time prefix. Under a destdir install this is the same as
the runtime or final install location. Under a non-destdir install
this is the stage directory (usually the appropriate share directory
under blib).
root
The build root directory. This will be an absolute path. It is the
absolute form of ./_alien by default.
stage
The stage directory where files will be copied. This is usually the
root of the blib share directory.
system_probe_class
After the probe step this property may contain the plugin class that
performed the system probe. It shouldn't be filled in directly by the
plugin (instead if should use the hook property probe_class, see
below). This is optional, and not all probe plugins will provide this
information.
system_probe_instance_id
After the probe step this property may contain the plugin instance id
that performed the system probe. It shouldn't be filled in directly
by the plugin (instead if should use the hook property
probe_instance_id, see below). This is optional, and not all probe
plugins will provide this information.
plugin_instance_prop
my $href = $build->plugin_instance_prop($plugin);
This returns the private plugin instance properties for a given plugin.
This method should usually only be called internally by plugins
themselves to keep track of internal state. Because the content can be
used arbitrarily by the owning plugin because it is private to the
plugin, and thus is not part of the Alien::Build spec.
runtime_prop
my $href = $build->runtime_prop;
Runtime properties are used during the install and runtime phases
(either under share or system install). This should include anything
that you will need to know to use the library or tool during runtime,
and shouldn't include anything that is no longer relevant once the
install process is complete.
alien_build_version
The version of Alien::Build used to install the library or tool.
alt
Alternate configurations. If the alienized package has multiple
libraries this could be used to store the different compiler or
linker flags for each library. Typically this will be set by a plugin
in the gather stage (for either share or system installs).
cflags
The compiler flags. This is typically set by a plugin in the gather
stage (for either share or system installs).
cflags_static
The static compiler flags. This is typically set by a plugin in the
gather stage (for either share or system installs).
command
The command name for tools where the name my differ from platform to
platform. For example, the GNU version of make is usually make in
Linux and gmake on FreeBSD. This is typically set by a plugin in the
gather stage (for either share or system installs).
ffi_name
The name DLL or shared object "name" to use when searching for
dynamic libraries at runtime. This is passed into FFI::CheckLib, so
if your library is something like libarchive.so or archive.dll you
would set this to archive. This may be a string or an array of
strings. This is typically set by a plugin in the gather stage (for
either share or system installs).
ffi_checklib
This property contains two sub properties:
ffi_checklib.share
$build->runtime_prop->{ffi_checklib}->{share} = [ ... ];
Array of additional FFI::CheckLib flags to pass in to find_lib for
a share install.
ffi_checklib.system
Array of additional FFI::CheckLib flags to pass in to find_lib for
a system install.
Among other things, useful for specifying the try_linker_script
flag:
$build->runtime_prop->{ffi_checklib}->{system} = [ try_linker_script => 1 ];
This is typically set by a plugin in the gather stage (for either
share or system installs).
inline_auto_include
[version 2.53]
This property is an array reference of C code that will be passed
into Inline::C to make sure that appropriate headers are
automatically included. See "auto_include" in Inline::C for details.
install_type
The install type. This is set by AB core after the probe hook is
executed. Is one of:
system
For when the library or tool is provided by the operating system,
can be detected by Alien::Build, and is considered satisfactory by
the alienfile recipe.
share
For when a system install is not possible, the library source will
be downloaded from the internet or retrieved in another appropriate
fashion and built.
libs
The library flags. This is typically set by a plugin in the gather
stage (for either share or system installs).
libs_static
The static library flags. This is typically set by a plugin in the
gather stage (for either share or system installs).
perl_module_version
The version of the Perl module used to install the alien (if
available). For example if Alien::curl is installing libcurl this
would be the version of Alien::curl used during the install step.
prefix
The final install root. This is usually they share directory.
version
The version of the library or tool. This is typically set by a plugin
in the gather stage (for either share or system installs).
hook_prop
my $href = $build->hook_prop;
Hook properties are for the currently running (if any) hook. They are
used only during the execution of each hook and are discarded after. If
no hook is currently running then hook_prop will return undef.
name
The name of the currently running hook.
version (probe)
Probe and PkgConfig plugins may set this property indicating the
version of the alienized package. Not all plugins and configurations
may be able to provide this.
probe_class (probe)
Probe and PkgConfig plugins may set this property indicating the
plugin class that made the probe. If the probe results in a system
install this will be propagated to system_probe_class for later use.
probe_instance_id (probe)
Probe and PkgConfig plugins may set this property indicating the
plugin instance id that made the probe. If the probe results in a
system install this will be propagated to system_probe_instance_id
for later use.
METHODS
checkpoint
$build->checkpoint;
Save any install or runtime properties so that they can be reloaded on
a subsequent run in a separate process. This is useful if your build
needs to be done in multiple stages from a Makefile, such as with
ExtUtils::MakeMaker. Once checkpointed you can use the resume
constructor (documented above) to resume the probe/build/install]
process.
( run in 1.000 second using v1.01-cache-2.11-cpan-d7f47b0818f )