X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=perl-policy.sgml;h=12cd82c136e46c7f88b38727f12e6687edf8c77b;hb=e369912eff1a2ff024668531cbd127ed48e61fcf;hp=58c33328fb8eec1aea378294862c3df1cc79cc5c;hpb=b6c36823403e5d8711fff388ba04c48d3073904a;p=debian%2Fdebian-policy.git
diff --git a/perl-policy.sgml b/perl-policy.sgml
index 58c3332..12cd82c 100644
--- a/perl-policy.sgml
+++ b/perl-policy.sgml
@@ -1,4 +1,8 @@
-
+
+ %versiondata;
+]>
@@ -14,11 +18,11 @@
The Debian Policy mailing list
debian-policy@lists.debian.org
- version 1.20
+ version &version;, &date;
This document describes the packaging of Perl within the Debian
- GNU/Linux distribution and the policy requirements for packaged
+ distribution and the policy requirements for packaged
Perl programs and modules.
@@ -40,7 +44,7 @@
A copy of the GNU General Public License is available as
- /usr/share/common-licenses/GPL in the Debian GNU/Linux
+ /usr/share/common-licenses/GPL in the Debian
distribution or on the World Wide Web at
.
@@ -92,7 +96,8 @@
perlapi-abiname for all released
package versions it is compatible with. The choice of
abiname is arbitrary, but if it differs from
- $Config{version}, it must be specified in
+ $Config{version}see the
+ Config module, it must be specified in
$Config{debian_abi}.
@@ -141,22 +146,42 @@
Modules installed by the local administrator for the
current version of Perl (see [).
-/usr/local/lib/perl/version
-/usr/local/share/perl/version
+$Config{sitearch} (currently /usr/local/lib/perl/version)
+$Config{sitelib} (currently /usr/local/share/perl/version)
Where version indicates the current Perl
- version ($Config{version}see the
- Config module).
+ version ($Config{version}).
+ ]
+ These locations, particularly $Config{sitearch},
+ may change if the binary interface between the
+ Perl interpreter and compiled modules has to be
+ changed in an incompatible way without a change in
+ version. While this will only be done as a
+ last resort, packages should use $Config{sitelib}
+ and $Config{sitearch}, not hardcode the current
+ locations.Build systems based on
+ ExtUtils::MakeMaker and Module::Build
+ do this automatically.
+
vendor
-
Packaged modules (see [).
-/usr/lib/perl5
-/usr/share/perl5
+$Config{vendorarch} (currently /usr/lib/perl5)
+$Config{vendorlib} (currently /usr/share/perl5)
+ These locations, particularly
+ $Config{vendorarch}, may change if
+ necessaryFor example, to include
+ the multiarch triplet. Packages
+ should use $Config{vendorlib} and
+ $Config{vendorarch}, not hardcode the current
+ locations.Build systems based on
+ ExtUtils::MakeMaker and Module::Build
+ do this automatically.
]
core
@@ -164,9 +189,19 @@
Modules included in the core Perl distribution.
-/usr/lib/perl/version
-/usr/share/perl/version
+$Config{archlib} (currently /usr/lib/perl/shortversion)
+$Config{privlib} (currently /usr/share/perl/shortversion)
+ Where shortversion indicates the current Perl major
+ version (for example 5.18).
+
+
+ These locations should be considered internal to the
+ perl source package. If necessary, packages should use
+ $Config{archlib} and $Config{privlib} instead of
+ hardcoding the current locations.Build systems based on
+ ExtUtils::MakeMaker and Module::Build
+ do this automatically.
site (old)
@@ -193,8 +228,8 @@
package.
- Manual pages distributed with Perl packages must be installed
- into the standard directories:
+ Manual pages distributed with packages built from the perl
+ source package must be installed into the standard directories:
Programs
-
@@ -213,6 +248,8 @@
+ The extensions used for manual pages distributed with module
+ packages are different. See [.
@@ -294,10 +331,17 @@ make install
Module Package Names
]
Perl module packages should be named for the primary module
- provided. The naming convention for module Foo::Bar
- is libfoo-bar-perl. Packages which include
- multiple modules may additionally include provides for those
- modules using the same convention.
+ provided. The naming convention is to lowercase the Perl module
+ name, prepend, lib, change all occurrences
+ of :: to -, and append -perl. For
+ example:
+
+Foo::Bar libfoo-bar-perl
+Foo::Bar::Baz libfoo-bar-baz-perl
+Foo::BarBaz libfoo-barbaz-perl
+
+ Packages which include multiple modules may additionally include
+ provides for the additional modules using the same convention.
@@ -316,7 +360,7 @@ $(MAKE) OPTIMIZE="-O2 -g -Wall"
and this one to install the results into the temporary tree:
-$(MAKE) install PREFIX=$(CURDIR)/debian/<tmp>/usr
+$(MAKE) install DESTDIR=$(CURDIR)/debian/<tmp>
Replace <tmp> with the appropriate directory
(nominally just tmp)
@@ -344,14 +388,15 @@ $(MAKE) install PREFIX=$(CURDIR)/debian/<tmp>/usr
- Binary Modules
+ Binary and Other Architecture Dependent Modules
Binary modules must specify a dependency on either
perl or perl-base with
a minimum version of the perl package
- used to build the module, and must additionally depend on
- the expansion of
- perlapi-$Config{debian_abi} using
+ used to build the module. Additionally, all binary modules
+ (regardless of their installation directory) and any other modules
+ installed into $Config{vendorarch} must depend on the
+ expansion of perlapi-$Config{debian_abi} using
the Config module. If $Config{debian_abi}
is empty or not set, $Config{version} must be used.
@@ -450,6 +495,26 @@ perl -MExtUtils::Embed -e ldopts
package must depend upon it explicitly.
+
+
+ Perl Package Upgrades
+
+ Starting from perl 5.12.3-2, a dpkg trigger
+ named perl-major-upgrade will be triggered by the
+ postinst of the perl package during major
+ upgrades. Some examples of things which constitute a major upgrade
+ are an upgrade which would change the value of versioned
+ directories in @INC, or one which changes abiname.
+ Any package may declare an interest in the trigger, especially
+ packages including long-running daemons which would stop working
+ until restart.
+
+
+ It is suggested that such packages include an appropriate section
+ in their postinst to handle the trigger by restarting relevant
+ daemons or notifying users of further action.
+
+