Blame view

buildroot/buildroot-2016.08.1/docs/manual/adding-packages-perl.txt 4.57 KB
6b13f685e   김민수   BSP 최초 추가
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
  // -*- mode:doc; -*-
  // vim: set syntax=asciidoc:
  
  === Infrastructure for Perl/CPAN packages
  
  [[perl-package-tutorial]]
  
  ==== +perl-package+ tutorial
  
  First, let's see how to write a +.mk+ file for a Perl/CPAN package,
  with an example :
  
  ------------------------
  01: ################################################################################
  02: #
  03: # perl-foo-bar
  04: #
  05: ################################################################################
  06:
  07: PERL_FOO_BAR_VERSION = 0.02
  08: PERL_FOO_BAR_SOURCE = Foo-Bar-$(PERL_FOO_BAR_VERSION).tar.gz
  09: PERL_FOO_BAR_SITE = $(BR2_CPAN_MIRROR)/authors/id/M/MO/MONGER
  10: PERL_FOO_BAR_DEPENDENCIES = perl-strictures
  11: PERL_FOO_BAR_LICENSE = Artistic or GPLv1+
  12: PERL_FOO_BAR_LICENSE_FILES = LICENSE
  13:
  14: $(eval $(perl-package))
  ------------------------
  
  On line 7, we declare the version of the package.
  
  On line 8 and 9, we declare the name of the tarball and the location
  of the tarball on a CPAN server. Buildroot will automatically download
  the tarball from this location.
  
  On line 10, we declare our dependencies, so that they are built
  before the build process of our package starts.
  
  On line 11 and 12, we give licensing details about the package (its
  license on line 11, and the file containing the license text on line
  12).
  
  Finally, on line 14, we invoke the +perl-package+ macro that
  generates all the Makefile rules that actually allow the package to be
  built.
  
  Most of these data can be retrieved from https://metacpan.org/.
  So, this file and the Config.in can be generated by running
  the script +supports/scripts/scancpan Foo-Bar+ in the Buildroot directory
  (or in the +BR2_EXTERNAL+ directory).
  This script creates a Config.in file and foo-bar.mk file for the
  requested package, and also recursively for all dependencies specified by
  CPAN. You should still manually edit the result. In particular, the
  following things should be checked.
  
  * If the perl module links with a shared library that is provided by
    another (non-perl) package, this dependency is not added automatically.
    It has to be added manually to +PERL_FOO_BAR_DEPENDENCIES+.
  * The +package/Config.in+ file has to be updated manually to include the
    generated Config.in files. As a hint, the +scancpan+ script prints out
    the required +source "..."+ statements, sorted alphabetically.
  
  [[perl-package-reference]]
  
  ==== +perl-package+ reference
  
  As a policy, packages that provide Perl/CPAN modules should all be
  named +perl-<something>+ in Buildroot.
  
  This infrastructure handles various Perl build systems :
  +ExtUtils-MakeMaker+, +Module-Build+ and +Module-Build-Tiny+.
  +Build.PL+ is always preferred when a package provides a +Makefile.PL+
  and a +Build.PL+.
  
  The main macro of the Perl/CPAN package infrastructure is
  +perl-package+. It is similar to the +generic-package+ macro. The ability to
  have target and host packages is also available, with the
  +host-perl-package+ macro.
  
  Just like the generic infrastructure, the Perl/CPAN infrastructure
  works by defining a number of variables before calling the
  +perl-package+ macro.
  
  First, all the package metadata information variables that exist in the
  generic infrastructure also exist in the Perl/CPAN infrastructure:
  +PERL_FOO_VERSION+, +PERL_FOO_SOURCE+,
  +PERL_FOO_PATCH+, +PERL_FOO_SITE+,
  +PERL_FOO_SUBDIR+, +PERL_FOO_DEPENDENCIES+,
  +PERL_FOO_INSTALL_TARGET+.
  
  Note that setting +PERL_FOO_INSTALL_STAGING+ to +YES+ has no effect
  unless a +PERL_FOO_INSTALL_STAGING_CMDS+ variable is defined. The perl
  infrastructure doesn't define these commands since Perl modules generally
  don't need to be installed to the +staging+ directory.
  
  A few additional variables, specific to the Perl/CPAN infrastructure,
  can also be defined. Many of them are only useful in very specific
  cases, typical packages will therefore only use a few of them.
  
  * +PERL_FOO_CONF_ENV+/+HOST_PERL_FOO_CONF_ENV+, to specify additional
    environment variables to pass to the +perl Makefile.PL+ or +perl Build.PL+.
    By default, empty.
  
  * +PERL_FOO_CONF_OPTS+/+HOST_PERL_FOO_CONF_OPTS+, to specify additional
    configure options to pass to the +perl Makefile.PL+ or +perl Build.PL+.
    By default, empty.
  
  * +PERL_FOO_BUILD_OPTS+/+HOST_PERL_FOO_BUILD_OPTS+, to specify additional
    options to pass to +make pure_all+ or +perl Build build+ in the build step.
    By default, empty.
  
  * +PERL_FOO_INSTALL_TARGET_OPTS+, to specify additional options to
    pass to +make pure_install+ or +perl Build install+ in the install step.
    By default, empty.
  
  * +HOST_PERL_FOO_INSTALL_OPTS+, to specify additional options to
    pass to +make pure_install+ or +perl Build install+ in the install step.
    By default, empty.