• Home
  • History
  • Annotate
Name Date Size #Lines LOC

..03-May-2022-

corpus/H28-Oct-2021-10,2789,933

example/H28-Oct-2021-737561

inc/H28-Oct-2021-12499

lib/H28-Oct-2021-25,91910,681

maint/H28-Oct-2021-289223

t/H28-Oct-2021-16,23312,334

xt/H28-Oct-2021-361290

ChangesH A D28-Oct-202138.9 KiB1,052809

Changes.Alien-BaseH A D28-Oct-202117.3 KiB493377

Changes.Alien-Base-WrapperH A D28-Oct-2021673 2417

Changes.Alien-Build-Decode-MojoH A D28-Oct-2021351 1610

Changes.Test-AlienH A D28-Oct-20211.6 KiB5842

INSTALLH A D28-Oct-20212.3 KiB7648

LICENSEH A D28-Oct-202117.9 KiB380292

MANIFESTH A D28-Oct-202113.4 KiB365364

META.jsonH A D28-Oct-20218.6 KiB204202

META.ymlH A D28-Oct-20212.3 KiB8584

Makefile.PLH A D28-Oct-202113.1 KiB211193

READMEH A D28-Oct-202128.5 KiB982628

SUPPORTH A D28-Oct-2021894 2315

author.ymlH A D28-Oct-20212.6 KiB175172

dist.iniH A D28-Oct-20217.8 KiB292259

perlcriticrcH A D28-Oct-20212 KiB6057

README

1NAME
2
3    Alien::Build - Build external dependencies for use in CPAN
4
5VERSION
6
7    version 2.45
8
9SYNOPSIS
10
11     my $build = Alien::Build->load('./alienfile');
12     $build->load_requires('configure');
13     $build->set_prefix('/usr/local');
14     $build->set_stage('/foo/mystage');  # needs to be absolute
15     $build->load_requires($build->install_type);
16     $build->download;
17     $build->build;
18     # files are now in /foo/mystage, it is your job (or
19     # ExtUtils::MakeMaker, Module::Build, etc) to copy
20     # those files into /usr/local
21
22DESCRIPTION
23
24    This module provides tools for building external (non-CPAN)
25    dependencies for CPAN. It is mainly designed to be used at install time
26    of a CPAN client, and work closely with Alien::Base which is used at
27    runtime.
28
29    This is the detailed documentation for the Alien::Build class. If you
30    are starting out you probably want to do so from one of these
31    documents:
32
33    Alien::Build::Manual::Alien
34
35      A broad overview of Alien-Build and its ecosystem.
36
37    Alien::Build::Manual::AlienUser
38
39      For users of an Alien::libfoo that is implemented using Alien::Base.
40      (The developer of Alien::libfoo should provide the documentation
41      necessary, but if not, this is the place to start).
42
43    Alien::Build::Manual::AlienAuthor
44
45      If you are writing your own Alien based on Alien::Build and
46      Alien::Base.
47
48    Alien::Build::Manual::FAQ
49
50      If you have a common question that has already been answered, like
51      "How do I use alienfile with some build system".
52
53    Alien::Build::Manual::PluginAuthor
54
55      This is for the brave souls who want to write plugins that will work
56      with Alien::Build + alienfile.
57
58    Note that you will not usually create a Alien::Build instance directly,
59    but rather be using a thin installer layer, such as Alien::Build::MM
60    (for use with ExtUtils::MakeMaker) or Alien::Build::MB (for use with
61    Module::Build). One of the goals of this project is to remain installer
62    agnostic.
63
64CONSTRUCTORS
65
66 new
67
68     my $build = Alien::Build->new;
69
70    This creates a new empty instance of Alien::Build. Normally you will
71    want to use load below to create an instance of Alien::Build from an
72    alienfile recipe.
73
74 load
75
76     my $build = Alien::Build->load($alienfile);
77
78    This creates an Alien::Build instance with the given alienfile recipe.
79
80 resume
81
82     my $build = Alien::Build->resume($alienfile, $root);
83
84    Load a checkpointed Alien::Build instance. You will need the original
85    alienfile and the build root (usually _alien), and a build that had
86    been properly checkpointed using the checkpoint method below.
87
88PROPERTIES
89
90    There are three main properties for Alien::Build. There are a number of
91    properties documented here with a specific usage. Note that these
92    properties may need to be serialized into something primitive like JSON
93    that does not support: regular expressions, code references of blessed
94    objects.
95
96    If you are writing a plugin (Alien::Build::Plugin) you should use a
97    prefix like "plugin_name" (where name is the name of your plugin) so
98    that it does not interfere with other plugin or future versions of
99    Alien::Build. For example, if you were writing
100    Alien::Build::Plugin::Fetch::NewProtocol, please use the prefix
101    plugin_fetch_newprotocol:
102
103     sub init
104     {
105       my($self, $meta) = @_;
106
107       $meta->prop( plugin_fetch_newprotocol_foo => 'some value' );
108
109       $meta->register_hook(
110         some_hook => sub {
111           my($build) = @_;
112           $build->install_prop->{plugin_fetch_newprotocol_bar} = 'some other value';
113           $build->runtime_prop->{plugin_fetch_newprotocol_baz} = 'and another value';
114         }
115       );
116     }
117
118    If you are writing a alienfile recipe please use the prefix my_:
119
120     use alienfile;
121
122     meta_prop->{my_foo} = 'some value';
123
124     probe sub {
125       my($build) = @_;
126       $build->install_prop->{my_bar} = 'some other value';
127       $build->install_prop->{my_baz} = 'and another value';
128     };
129
130    Any property may be used from a command:
131
132     probe [ 'some command %{.meta.plugin_fetch_newprotocol_foo}' ];
133     probe [ 'some command %{.install.plugin_fetch_newprotocol_bar}' ];
134     probe [ 'some command %{.runtime.plugin_fetch_newprotocol_baz}' ];
135     probe [ 'some command %{.meta.my_foo}' ];
136     probe [ 'some command %{.install.my_bar}' ];
137     probe [ 'some command %{.runtime.my_baz}' ];
138
139 meta_prop
140
141     my $href = $build->meta_prop;
142     my $href = Alien::Build->meta_prop;
143
144    Meta properties have to do with the recipe itself, and not any
145    particular instance that probes or builds that recipe. Meta properties
146    can be changed from within an alienfile using the meta_prop directive,
147    or from a plugin from its init method (though should NOT be modified
148    from any hooks registered within that init method). This is not
149    strictly enforced, but if you do not follow this rule your recipe will
150    likely be broken.
151
152    arch
153
154      This is a hint to an installer like Alien::Build::MM or
155      Alien::Build::MB, that the library or tool contains architecture
156      dependent files and so should be stored in an architecture dependent
157      location. If not specified by your alienfile then it will be set to
158      true.
159
160    destdir
161
162      Use the DESTDIR environment variable to stage your install before
163      copying the files into blib. This is the preferred method of
164      installing libraries because it improves reliability. This technique
165      is supported by autoconf and others.
166
167    destdir_filter
168
169      Regular expression for the files that should be copied from the
170      DESTDIR into the stage directory. If not defined, then all files will
171      be copied.
172
173    destdir_ffi_filter
174
175      Same as destdir_filter except applies to build_ffi instead of build.
176
177    env
178
179      Environment variables to override during the build stage.
180
181    env_interpolate
182
183      Environment variable values will be interpolated with helpers.
184      Example:
185
186       meta->prop->{env_interpolate} = 1;
187       meta->prop->{env}->{PERL} = '%{perl}';
188
189    local_source
190
191      Set to true if source code package is available locally. (that is not
192      fetched over the internet). This is computed by default based on the
193      start_url property. Can be set by an alienfile or plugin.
194
195    platform
196
197      Hash reference. Contains information about the platform beyond just
198      $^O.
199
200      compiler_type
201
202	Refers to the type of flags that the compiler accepts. May be
203	expanded in the future, but for now, will be one of:
204
205	microsoft
206
207	  On Windows when using Microsoft Visual C++
208
209	unix
210
211	  Virtually everything else, including gcc on windows.
212
213	The main difference is that with Visual C++ -LIBPATH should be used
214	instead of -L, and static libraries should have the .LIB suffix
215	instead of .a.
216
217      system_type
218
219	$^O is frequently good enough to make platform specific logic in
220	your alienfile, this handles the case when $^O can cover platforms
221	that provide multiple environments that Perl might run under. The
222	main example is windows, but others may be added in the future.
223
224	unix
225
226	vms
227
228	windows-activestate
229
230	windows-microsoft
231
232	windows-mingw
233
234	windows-strawberry
235
236	windows-unknown
237
238	Note that cygwin and msys are considered unix even though they run
239	on windows!
240
241    out_of_source
242
243      Build in a different directory from the where the source code is
244      stored. In autoconf this is referred to as a "VPATH" build. Everyone
245      else calls this an "out-of-source" build. When this property is true,
246      instead of extracting to the source build root, the downloaded source
247      will be extracted to an source extraction directory and the source
248      build root will be empty. You can use the extract install property to
249      get the location of the extracted source.
250
251    network
252
253      True if a network fetch is available. This should NOT be set by an
254      alienfile or plugin. This is computed based on the
255      ALIEN_INSTALL_NETWORK environment variables.
256
257    start_url
258
259      The default or start URL used by fetch plugins.
260
261 install_prop
262
263     my $href = $build->install_prop;
264
265    Install properties are used during the install phase (either under
266    share or system install). They are remembered for the entire install
267    phase, but not kept around during the runtime phase. Thus they cannot
268    be accessed from your Alien::Base based module.
269
270    autoconf_prefix
271
272      The prefix as understood by autoconf. This is only different on
273      Windows Where MSYS is used and paths like C:/foo are represented as
274      /C/foo which are understood by the MSYS tools, but not by Perl. You
275      should only use this if you are using Alien::Build::Plugin::Autoconf
276      in your alienfile.
277
278    download
279
280      The location of the downloaded archive (tar.gz, or similar) or
281      directory.
282
283    env
284
285      Environment variables to override during the build stage.
286
287    extract
288
289      The location of the last source extraction. For a "out-of-source"
290      build (see the out_of_source meta property above), this will only be
291      set once. For other types of builds, the source code may be extracted
292      multiple times, and thus this property may change.
293
294    old
295
296      Hash containing information on a previously installed Alien of the
297      same name, if available. This may be useful in cases where you want
298      to reuse the previous install if it is still sufficient.
299
300      prefix
301
302	The prefix for the previous install. Versions prior to 1.42
303	unfortunately had this in typo form of preifx.
304
305      runtime
306
307	The runtime properties from the previous install.
308
309    patch
310
311      Directory with patches.
312
313    prefix
314
315      The install time prefix. Under a destdir install this is the same as
316      the runtime or final install location. Under a non-destdir install
317      this is the stage directory (usually the appropriate share directory
318      under blib).
319
320    root
321
322      The build root directory. This will be an absolute path. It is the
323      absolute form of ./_alien by default.
324
325    stage
326
327      The stage directory where files will be copied. This is usually the
328      root of the blib share directory.
329
330    system_probe_class
331
332      After the probe step this property may contain the plugin class that
333      performed the system probe. It shouldn't be filled in directly by the
334      plugin (instead if should use the hook property probe_class, see
335      below). This is optional, and not all probe plugins will provide this
336      information.
337
338    system_probe_instance_id
339
340      After the probe step this property may contain the plugin instance id
341      that performed the system probe. It shouldn't be filled in directly
342      by the plugin (instead if should use the hook property
343      probe_instance_id, see below). This is optional, and not all probe
344      plugins will provide this information.
345
346 plugin_instance_prop
347
348     my $href = $build->plugin_instance_prop($plugin);
349
350    This returns the private plugin instance properties for a given plugin.
351    This method should usually only be called internally by plugins
352    themselves to keep track of internal state. Because the content can be
353    used arbitrarily by the owning plugin because it is private to the
354    plugin, and thus is not part of the Alien::Build spec.
355
356 runtime_prop
357
358     my $href = $build->runtime_prop;
359
360    Runtime properties are used during the install and runtime phases
361    (either under share or system install). This should include anything
362    that you will need to know to use the library or tool during runtime,
363    and shouldn't include anything that is no longer relevant once the
364    install process is complete.
365
366    alien_build_version
367
368      The version of Alien::Build used to install the library or tool.
369
370    alt
371
372      Alternate configurations. If the alienized package has multiple
373      libraries this could be used to store the different compiler or
374      linker flags for each library.
375
376    cflags
377
378      The compiler flags
379
380    cflags_static
381
382      The static compiler flags
383
384    command
385
386      The command name for tools where the name my differ from platform to
387      platform. For example, the GNU version of make is usually make in
388      Linux and gmake on FreeBSD.
389
390    ffi_name
391
392      The name DLL or shared object "name" to use when searching for
393      dynamic libraries at runtime. This is passed into FFI::CheckLib, so
394      if your library is something like libarchive.so or archive.dll you
395      would set this to archive. This may be a string or an array of
396      strings.
397
398    ffi_checklib
399
400      This property contains two sub properties:
401
402      share
403
404         $build->runtime_prop->{ffi_checklib}->{share} = [ ... ];
405
406	Array of additional FFI::CheckLib flags to pass in to find_lib for
407	a share install.
408
409      system
410
411	Array of additional FFI::CheckLib flags to pass in to find_lib for
412	a system install.
413
414	Among other things, useful for specifying the try_linker_script
415	flag:
416
417         $build->runtime_prop->{ffi_checklib}->{system} = [ try_linker_script => 1 ];
418
419    install_type
420
421      The install type. Is one of:
422
423      system
424
425	For when the library or tool is provided by the operating system,
426	can be detected by Alien::Build, and is considered satisfactory by
427	the alienfile recipe.
428
429      share
430
431	For when a system install is not possible, the library source will
432	be downloaded from the internet or retrieved in another appropriate
433	fashion and built.
434
435    libs
436
437      The library flags
438
439    libs_static
440
441      The static library flags
442
443    perl_module_version
444
445      The version of the Perl module used to install the alien (if
446      available). For example if Alien::curl is installing libcurl this
447      would be the version of Alien::curl used during the install step.
448
449    prefix
450
451      The final install root. This is usually they share directory.
452
453    version
454
455      The version of the library or tool
456
457 hook_prop
458
459     my $href = $build->hook_prop;
460
461    Hook properties are for the currently running (if any) hook. They are
462    used only during the execution of each hook and are discarded after. If
463    no hook is currently running then hook_prop will return undef.
464
465    name
466
467      The name of the currently running hook.
468
469    version (probe)
470
471      Probe and PkgConfig plugins may set this property indicating the
472      version of the alienized package. Not all plugins and configurations
473      may be able to provide this.
474
475    probe_class (probe)
476
477      Probe and PkgConfig plugins may set this property indicating the
478      plugin class that made the probe. If the probe results in a system
479      install this will be propagated to system_probe_class for later use.
480
481    probe_instance_id (probe)
482
483      Probe and PkgConfig plugins may set this property indicating the
484      plugin instance id that made the probe. If the probe results in a
485      system install this will be propagated to system_probe_instance_id
486      for later use.
487
488METHODS
489
490 checkpoint
491
492     $build->checkpoint;
493
494    Save any install or runtime properties so that they can be reloaded on
495    a subsequent run in a separate process. This is useful if your build
496    needs to be done in multiple stages from a Makefile, such as with
497    ExtUtils::MakeMaker. Once checkpointed you can use the resume
498    constructor (documented above) to resume the probe/build/install]
499    process.
500
501 root
502
503     my $dir = $build->root;
504
505    This is just a shortcut for:
506
507     my $root = $build->install_prop->{root};
508
509    Except that it will be created if it does not already exist.
510
511 install_type
512
513     my $type = $build->install_type;
514
515    This will return the install type. (See the like named install property
516    above for details). This method will call probe if it has not already
517    been called.
518
519 set_prefix
520
521     $build->set_prefix($prefix);
522
523    Set the final (unstaged) prefix. This is normally only called by
524    Alien::Build::MM and similar modules. It is not intended for use from
525    plugins or from an alienfile.
526
527 set_stage
528
529     $build->set_stage($dir);
530
531    Sets the stage directory. This is normally only called by
532    Alien::Build::MM and similar modules. It is not intended for use from
533    plugins or from an alienfile.
534
535 requires
536
537     my $hash = $build->requires($phase);
538
539    Returns a hash reference of the modules required for the given phase.
540    Phases include:
541
542    configure
543
544      These modules must already be available when the alienfile is read.
545
546    any
547
548      These modules are used during either a system or share install.
549
550    share
551
552      These modules are used during the build phase of a share install.
553
554    system
555
556      These modules are used during the build phase of a system install.
557
558 load_requires
559
560     $build->load_requires($phase);
561
562    This loads the appropriate modules for the given phase (see requires
563    above for a description of the phases).
564
565 probe
566
567     my $install_type = $build->probe;
568
569    Attempts to determine if the operating system has the library or tool
570    already installed. If so, then the string system will be returned and a
571    system install will be performed. If not, then the string share will be
572    installed and the tool or library will be downloaded and built from
573    source.
574
575    If the environment variable ALIEN_INSTALL_TYPE is set, then that will
576    force a specific type of install. If the detection logic cannot
577    accommodate the install type requested then it will fail with an
578    exception.
579
580 download
581
582     $build->download;
583
584    Download the source, usually as a tarball, usually from the internet.
585
586    Under a system install this does not do anything.
587
588 fetch
589
590     my $res = $build->fetch;
591     my $res = $build->fetch($url, %options);
592
593    Fetch a resource using the fetch hook. Returns the same hash structure
594    described below in the hook documentation.
595
596    [version 2.39]
597
598    As of Alien::Build 2.39, these options are supported:
599
600    http_headers
601
602       my $res = $build->fetch($url, http_headers => [ $key1 => $value1, $key2 => $value 2, ... ]);
603
604      Set the HTTP request headers on all outgoing HTTP requests. Note that
605      not all protocols or fetch plugins support setting request headers,
606      but the ones that do not should issue a warning if you try to set
607      request headers and they are not supported.
608
609 decode
610
611     my $decoded_res = $build->decode($res);
612
613    Decode the HTML or file listing returned by fetch. Returns the same
614    hash structure described below in the hook documentation.
615
616 prefer
617
618     my $sorted_res = $build->prefer($res);
619
620    Filter and sort candidates. The preferred candidate will be returned
621    first in the list. The worst candidate will be returned last. Returns
622    the same hash structure described below in the hook documentation.
623
624 extract
625
626     my $dir = $build->extract;
627     my $dir = $build->extract($archive);
628
629    Extracts the given archive into a fresh directory. This is normally
630    called internally to Alien::Build, and for normal usage is not needed
631    from a plugin or alienfile.
632
633 build
634
635     $build->build;
636
637    Run the build step. It is expected that probe and download have already
638    been performed. What it actually does depends on the type of install:
639
640    share
641
642      The source is extracted, and built as determined by the alienfile
643      recipe. If there is a gather_share that will be executed last.
644
645    system
646
647      The gather_system hook will be executed.
648
649 test
650
651     $build->test;
652
653    Run the test phase
654
655 clean_install
656
657     $build->clean_install
658
659    Clean files from the final install location. The default implementation
660    removes all files recursively except for the _alien directory. This is
661    helpful when you have an old install with files that may break the new
662    build.
663
664    For a non-share install this doesn't do anything.
665
666 system
667
668     $build->system($command);
669     $build->system($command, @args);
670
671    Interpolates the command and arguments and run the results using the
672    Perl system command.
673
674 log
675
676     $build->log($message);
677
678    Send a message to the log. By default this prints to STDOUT.
679
680 meta
681
682     my $meta = Alien::Build->meta;
683     my $meta = $build->meta;
684
685    Returns the meta object for your Alien::Build class or instance. The
686    meta object is a way to manipulate the recipe, and so any changes to
687    the meta object should be made before the probe, download or build
688    steps.
689
690META METHODS
691
692 prop
693
694     my $href = $build->meta->prop;
695
696    Meta properties. This is the same as calling meta_prop on the class or
697    Alien::Build instance.
698
699 add_requires
700
701     Alien::Build->meta->add_requires($phase, $module => $version, ...);
702
703    Add the requirement to the given phase. Phase should be one of:
704
705    configure
706
707    any
708
709    share
710
711    system
712
713 interpolator
714
715     my $interpolator = $build->meta->interpolator;
716     my $interpolator = Alien::Build->interpolator;
717
718    Returns the Alien::Build::Interpolate instance for the Alien::Build
719    class.
720
721 has_hook
722
723     my $bool = $build->meta->has_hook($name);
724     my $bool = Alien::Build->has_hook($name);
725
726    Returns if there is a usable hook registered with the given name.
727
728 register_hook
729
730     $build->meta->register_hook($name, $instructions);
731     Alien::Build->meta->register_hook($name, $instructions);
732
733    Register a hook with the given name. $instruction should be either a
734    code reference, or a command sequence, which is an array reference.
735
736 default_hook
737
738     $build->meta->default_hook($name, $instructions);
739     Alien::Build->meta->default_hook($name, $instructions);
740
741    Register a default hook, which will be used if the alienfile does not
742    register its own hook with that name.
743
744 around_hook
745
746     $build->meta->around_hook($hook, $code);
747     Alien::Build->meta->around_hook($name, $code);
748
749    Wrap the given hook with a code reference. This is similar to a Moose
750    method modifier, except that it wraps around the given hook instead of
751    a method. For example, this will add a probe system requirement:
752
753     $build->meta->around_hook(
754       probe => sub {
755         my $orig = shift;
756         my $build = shift;
757         my $type = $orig->($build, @_);
758         return $type unless $type eq 'system';
759         # also require a configuration file
760         if(-f '/etc/foo.conf')
761         {
762           return 'system';
763         }
764         else
765         {
766           return 'share';
767         }
768       },
769     );
770
771 apply_plugin
772
773     Alien::Build->meta->apply_plugin($name);
774     Alien::Build->meta->apply_plugin($name, @args);
775
776    Apply the given plugin with the given arguments.
777
778ENVIRONMENT
779
780    Alien::Build responds to these environment variables:
781
782    ALIEN_INSTALL_NETWORK
783
784      If set to true (the default), then network fetch will be allowed. If
785      set to false, then network fetch will not be allowed.
786
787      What constitutes a local vs. network fetch is determined based on the
788      start_url and local_source meta properties. An alienfile or plugin
789      could override this detection (possibly inappropriately), so this
790      variable is not a substitute for properly auditing of Perl modules
791      for environments that require that.
792
793    ALIEN_INSTALL_TYPE
794
795      If set to share or system, it will override the system detection
796      logic. If set to default, it will use the default setting for the
797      alienfile. The behavior of other values is undefined.
798
799      Although the recommended way for a consumer to use an Alien::Base
800      based Alien is to declare it as a static configure and build-time
801      dependency, some consumers may prefer to fallback on using an Alien
802      only when the consumer itself cannot detect the necessary package. In
803      some cases the consumer may want the user to opt-in to using an Alien
804      before requiring it.
805
806      To keep the interface consistent among Aliens, the consumer of the
807      fallback opt-in Alien may fallback on the Alien if the environment
808      variable ALIEN_INSTALL_TYPE is set to any value. The rationale is
809      that by setting this environment variable the user is aware that
810      Alien modules may be installed and have indicated consent. The actual
811      implementation of this, by its nature would have to be in the
812      consuming CPAN module.
813
814    ALIEN_BUILD_LOG
815
816      The default log class used. See Alien::Build::Log and
817      Alien::Build::Log::Default.
818
819    ALIEN_BUILD_RC
820
821      Perl source file which can override some global defaults for
822      Alien::Build, by, for example, setting preload and postload plugins.
823
824    ALIEN_BUILD_PKG_CONFIG
825
826      Override the logic in Alien::Build::Plugin::PkgConfig::Negotiate
827      which chooses the best pkg-config plugin.
828
829    ALIEN_BUILD_PRELOAD
830
831      semicolon separated list of plugins to automatically load before
832      parsing your alienfile.
833
834    ALIEN_BUILD_POSTLOAD
835
836      semicolon separated list of plugins to automatically load after
837      parsing your alienfile.
838
839    DESTDIR
840
841      This environment variable will be manipulated during a destdir
842      install.
843
844    PKG_CONFIG
845
846      This environment variable can be used to override the program name
847      for pkg-config when using the command line plugin:
848      Alien::Build::Plugin::PkgConfig::CommandLine.
849
850    ftp_proxy, all_proxy
851
852      If these environment variables are set, it may influence the Download
853      negotiation plugin Alien::Build::Plugin::Downaload::Negotiate. Other
854      proxy variables may be used by some Fetch plugins, if they support
855      it.
856
857SUPPORT
858
859    The intent of the Alien-Build team is to support as best as possible
860    all Perls from 5.8.4 to the latest production version. So long as they
861    are also supported by the Perl toolchain.
862
863    Please feel encouraged to report issues that you encounter to the
864    project GitHub Issue tracker:
865
866    https://github.com/PerlAlien/Alien-Build/issues
867
868    Better if you can fix the issue yourself, please feel encouraged to
869    open pull-request on the project GitHub:
870
871    https://github.com/PerlAlien/Alien-Build/pulls
872
873    If you are confounded and have questions, join us on the #native
874    channel on irc.perl.org. The Alien-Build developers frequent this
875    channel and can probably help point you in the right direction. If you
876    don't have an IRC client handy, you can use this web interface:
877
878    https://chat.mibbit.com/?channel=%23native&server=irc.perl.org
879
880SEE ALSO
881
882    Alien::Build::Manual::AlienAuthor, Alien::Build::Manual::AlienUser,
883    Alien::Build::Manual::Contributing, Alien::Build::Manual::FAQ,
884    Alien::Build::Manual::PluginAuthor
885
886    alienfile, Alien::Build::MM, Alien::Build::Plugin, Alien::Base, Alien
887
888THANKS
889
890    Alien::Base was originally written by Joel Berger, the rest of this
891    project would not have been possible without him getting the project
892    started. Thanks to his support I have been able to augment the original
893    Alien::Base system with a reliable set of tools (Alien::Build,
894    alienfile, Test::Alien), which make up this toolset.
895
896    The original Alien::Base is still copyright (c) 2012-2020 Joel Berger.
897    It has the same license as the rest of the Alien::Build and related
898    tools distributed as Alien-Build. Joel Berger thanked a number of
899    people who helped in in the development of Alien::Base, in the
900    documentation for that module.
901
902    I would also like to acknowledge the other members of the PerlAlien
903    github organization, Zakariyya Mughal (sivoais, ZMUGHAL) and mohawk
904    (ETJ). Also important in the early development of Alien::Build were the
905    early adopters Chase Whitener (genio, CAPOEIRAB, author of
906    Alien::libuv), William N. Braswell, Jr (willthechill, WBRASWELL, author
907    of Alien::JPCRE2 and Alien::PCRE2) and Ahmad Fatoum (a3f, ATHREEF,
908    author of Alien::libudev and Alien::LibUSB).
909
910    The Alien ecosystem owes a debt to Dan Book, who goes by Grinnz on IRC,
911    for answering question about how to use Alien::Build and friends.
912
913AUTHOR
914
915    Author: Graham Ollis <plicease@cpan.org>
916
917    Contributors:
918
919    Diab Jerius (DJERIUS)
920
921    Roy Storey (KIWIROY)
922
923    Ilya Pavlov
924
925    David Mertens (run4flat)
926
927    Mark Nunberg (mordy, mnunberg)
928
929    Christian Walde (Mithaldu)
930
931    Brian Wightman (MidLifeXis)
932
933    Zaki Mughal (zmughal)
934
935    mohawk (mohawk2, ETJ)
936
937    Vikas N Kumar (vikasnkumar)
938
939    Flavio Poletti (polettix)
940
941    Salvador Fandiño (salva)
942
943    Gianni Ceccarelli (dakkar)
944
945    Pavel Shaydo (zwon, trinitum)
946
947    Kang-min Liu (劉康民, gugod)
948
949    Nicholas Shipp (nshp)
950
951    Juan Julián Merelo Guervós (JJ)
952
953    Joel Berger (JBERGER)
954
955    Petr Písař (ppisar)
956
957    Lance Wicks (LANCEW)
958
959    Ahmad Fatoum (a3f, ATHREEF)
960
961    José Joaquín Atria (JJATRIA)
962
963    Duke Leto (LETO)
964
965    Shoichi Kaji (SKAJI)
966
967    Shawn Laffan (SLAFFAN)
968
969    Paul Evans (leonerd, PEVANS)
970
971    Håkon Hægland (hakonhagland, HAKONH)
972
973    nick nauwelaerts (INPHOBIA)
974
975COPYRIGHT AND LICENSE
976
977    This software is copyright (c) 2011-2020 by Graham Ollis.
978
979    This is free software; you can redistribute it and/or modify it under
980    the same terms as the Perl 5 programming language system itself.
981
982