1Alien::Base::ModuleBuilUds(e3r)Contributed Perl DocumentAaltiieonn::Base::ModuleBuild(3)
2
3
4
6 Alien::Base::ModuleBuild - A Module::Build subclass for building
7 Alien:: modules and their libraries
8
10 version 1.15
11
13 In your Build.PL:
14
15 use Alien::Base::ModuleBuild;
16
17 my $builder = Alien::Base::ModuleBuild->new(
18 module_name => 'Alien::MyLibrary',
19
20 configure_requires => {
21 'Alien::Base::ModuleBuild' => '0.005',
22 'Module::Build' => '0.28'
23 },
24 requires => {
25 'Alien::Base' => '0.005',
26 },
27
28 alien_name => 'mylibrary', # the pkg-config name if you want
29 # to use pkg-config to discover
30 # system version of the mylibrary
31
32 alien_repository => {
33 protocol => 'http',
34 host => 'myhost.org',
35 location => '/path/to/tarballs',
36 pattern => qr{^mylibrary-([0-9\.]+)\.tar\.gz$},
37 },
38
39 # this is the default:
40 alien_build_commands => [
41 "%c --prefix=%s", # %c is a platform independent version of ./configure
42 "make",
43 ],
44
45 # this is the default for install:
46 alien_install_commands => [
47 "make install",
48 ],
49
50 alien_isolate_dynamic => 1,
51 );
52
54 NOTE: Please consider for new development of Aliens that you use
55 Alien::Build and alienfile instead. Like this module they work with
56 Alien::Base. Unlike this module they are more easily customized and
57 handle a number of corner cases better. For a good place to start,
58 please see Alien::Build::Manual::AlienAuthor. Although the Alien-Base
59 / Alien-Build team will continue to maintain this module, (we will
60 continue to fix bugs where appropriate), we aren't adding any new
61 features to this module.
62
63 This is a subclass of Module::Build, that with Alien::Base allows for
64 easy creation of Alien distributions. This module is used during the
65 build step of your distribution. When properly configured it will
66
67 use pkg-config to find and use the system version of the library
68 download, build and install the library if the system does not provide
69 it
70
72 alien_check_installed_version
73 [version 0.001]
74
75 my $version = $abmb->alien_check_installed_version;
76
77 This function determines if the library is already installed as part of
78 the operating system, and returns the version as a string. If it can't
79 be detected then it should return empty list.
80
81 The default implementation relies on "pkg-config", but you will
82 probably want to override this with your own implementation if the
83 package you are building does not use "pkg-config".
84
85 alien_check_built_version
86 [version 0.006]
87
88 my $version = $amb->alien_check_built_version;
89
90 This function determines the version of the library after it has been
91 built from source. This function only gets called if the operating
92 system version can not be found and the package is successfully built.
93 The version is returned on success. If the version can't be detected
94 then it should return empty list. Note that failing to detect a
95 version is considered a failure and the corresponding "./Build" action
96 will fail!
97
98 Any string is valid as a version as far as Alien::Base is concerned.
99 The most useful value would be a number or dotted decimal that most
100 software developers recognize and that software tools can
101 differentiate. In some cases packages will not have a clear version
102 number, in which case the string "unknown" would be a reasonable
103 choice.
104
105 The default implementation relies on "pkg-config", and other
106 heuristics, but you will probably want to override this with your own
107 implementation if the package you are building does not use
108 "pkg-config".
109
110 When this method is called, the current working directory will be the
111 build root.
112
113 If you see an error message like this:
114
115 Library looks like it installed, but no version was determined
116
117 After the package is built from source code then you probably need to
118 provide an implementation for this method.
119
120 alien_extract_archive
121 [version 0.024]
122
123 my $dir = $amb->alien_extract_archive($filename);
124
125 This function unpacks the given archive and returns the directory
126 containing the unpacked files.
127
128 The default implementation relies on Archive::Extract that is able to
129 handle most common formats. In order to handle other formats or
130 archives requiring some special treatment you may want to override this
131 method.
132
133 alien_do_system
134 [version 0.024]
135
136 my %result = $amb->alien_do_system($cmd)
137
138 Similar to Module::Build::do_system, also sets the path and several
139 environment variables in accordance to the object configuration (i.e.
140 "alien_bin_requires") and performs the interpolation of the patterns
141 described in "COMMAND INTERPOLATION" in Alien::Base::ModuleBuild::API.
142
143 Returns a set of key value pairs including "stdout", "stderr",
144 "success" and "command".
145
146 alien_do_commands
147 $amb->alien_do_commands($phase);
148
149 Executes the commands for the given phase.
150
151 alien_interpolate
152 my $string = $amb->alien_interpolate($string);
153
154 Takes the input string and interpolates the results.
155
157 The documentation for "Module::Build" is broken up into sections:
158
159 General Usage (Module::Build)
160 This is the landing document for Alien::Base::ModuleBuild's parent
161 class. It describes basic usage and background information. Its
162 main purpose is to assist the user who wants to learn how to invoke
163 and control "Module::Build" scripts at the command line.
164
165 It also lists the extra documentation for its use. Users and
166 authors of Alien:: modules should familiarize themselves with these
167 documents. Module::Build::API is of particular importance to
168 authors.
169
170 Alien-Specific Usage (Alien::Base::ModuleBuild)
171 This is the document you are currently reading.
172
173 Authoring Reference (Alien::Base::Authoring)
174 This document describes the structure and organization of
175 "Alien::Base" based projects, beyond that contained in
176 "Module::Build::Authoring", and the relevant concepts needed by
177 authors who are writing Build.PL scripts for a distribution or
178 controlling "Alien::Base::ModuleBuild" processes programmatically.
179
180 Note that as it contains information both for the build and use
181 phases of Alien::Base projects, it is located in the upper
182 namespace.
183
184 API Reference (Alien::Base::ModuleBuild::API)
185 This is a reference to the "Alien::Base::ModuleBuild" API beyond
186 that contained in "Module::Build::API".
187
189 ALIEN_VERBOSE
190 Enables verbose output from M::B::do_system.
191
192 ALIEN_FORCE
193 Skips checking for an installed version and forces reinstalling the
194 Alien target.
195
196 ALIEN_INSTALL_TYPE
197 Set to 'share' or 'system' to override the install type. Set to
198 'default' or unset to restore the default.
199
200 ALIEN_ARCH
201 Set to a true value to install to an arch-specific directory.
202
203 ALIEN_${MODULENAME}_REPO_${PROTOCOL}_${KEY}
204 Overrides $KEY in the given module's repository configuration
205 matching $PROTOCOL. For example,
206 "ALIEN_OPENSSL_REPO_FTP_HOST=ftp.example.com".
207
209 Alien::Build
210 alienfile
211 Alien::Build::Manual::AlienAuthor
212 Alien
213
215 Thanks also to
216
217 Christian Walde (Mithaldu)
218 For productive conversations about component interoperability.
219
220 kmx For writing Alien::Tidyp from which I drew many of my initial
221 ideas.
222
223 David Mertens (run4flat)
224 For productive conversations about implementation.
225
226 Mark Nunberg (mordy, mnunberg)
227 For graciously teaching me about rpath and dynamic loading,
228
230 Original author: Joel A Berger <joel.a.berger@gmail.com>
231
232 Current maintainer: Graham Ollis <plicease@cpan.org>
233
234 Contributors:
235
236 David Mertens (run4flat)
237
238 Mark Nunberg (mordy, mnunberg)
239
240 Christian Walde (Mithaldu)
241
242 Brian Wightman (MidLifeXis)
243
244 Graham Ollis (plicease)
245
246 Zaki Mughal (zmughal)
247
248 mohawk2
249
250 Vikas N Kumar (vikasnkumar)
251
252 Flavio Poletti (polettix)
253
254 Salvador Fandin~o (salva)
255
256 Gianni Ceccarelli (dakkar)
257
258 Pavel Shaydo (zwon, trinitum)
259
260 Kang-min Liu (XXX, gugod)
261
262 Nicholas Shipp (nshp)
263
264 Petr Pisar (ppisar)
265
266 Alberto Simo~es (ambs)
267
269 This software is copyright (c) 2012-2020 by Joel A Berger.
270
271 This is free software; you can redistribute it and/or modify it under
272 the same terms as the Perl 5 programming language system itself.
273
274
275
276perl v5.32.1 2021-01-26 Alien::Base::ModuleBuild(3)