summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Debian/Debhelper/Dh_Lib.pm35
-rw-r--r--debian/changelog10
-rwxr-xr-xdh_installdeb32
-rwxr-xr-xdh_installdebconf11
4 files changed, 55 insertions, 33 deletions
diff --git a/Debian/Debhelper/Dh_Lib.pm b/Debian/Debhelper/Dh_Lib.pm
index f013dee1..5ae611c6 100644
--- a/Debian/Debhelper/Dh_Lib.pm
+++ b/Debian/Debhelper/Dh_Lib.pm
@@ -14,7 +14,7 @@ use vars qw(@ISA @EXPORT %dh);
&pkgfile &pkgext &pkgfilename &isnative &autoscript &filearray
&filedoublearray &getpackages &basename &dirname &xargs %dh
&compat &addsubstvar &delsubstvar &excludefile &package_arch
- &is_udeb &udeb_filename);
+ &is_udeb &udeb_filename &debhelper_script_subst);
my $max_compat=4;
@@ -612,18 +612,21 @@ sub getpackages {
return @list;
}
+# Returns the arch a package will build for.
sub package_arch {
my $package=shift;
return $package_arches{$package} eq 'all' ? "all" : buildarch();
}
+# Return true if a given package is really a udeb.
sub is_udeb {
my $package=shift;
return $package_types{$package} eq 'udeb';
}
+# Generates the filename that is used for a udeb package.
sub udeb_filename {
my $package=shift;
@@ -634,4 +637,34 @@ sub udeb_filename {
return "${package}_${version}_$filearch.udeb";
}
+# Handles #DEBHELPER# substitution in a script; also can generate a new
+# script from scratch if none exists but there is a .debhelper file for it.
+sub debhelper_script_subst {
+ my $package=shift;
+ my $script=shift;
+
+ my $tmp=tmpdir($package);
+ my $ext=pkgext($package);
+ my $file=pkgfile($package,$script);
+
+ if ($file ne '') {
+ if (-f "debian/$ext$script.debhelper") {
+ # Add this into the script, where it has #DEBHELPER#
+ complex_doit("perl -pe 's~#DEBHELPER#~qx{cat debian/$ext$script.debhelper}~eg' < $file > $tmp/DEBIAN/$script");
+ }
+ else {
+ # Just get rid of any #DEBHELPER# in the script.
+ complex_doit("sed s/#DEBHELPER#// < $file > $tmp/DEBIAN/$script");
+ }
+ doit("chown","0:0","$tmp/DEBIAN/$script");
+ doit("chmod",755,"$tmp/DEBIAN/$script");
+ }
+ elsif ( -f "debian/$ext$script.debhelper" ) {
+ complex_doit("printf '#!/bin/sh\nset -e\n' > $tmp/DEBIAN/$script");
+ complex_doit("cat debian/$ext$script.debhelper >> $tmp/DEBIAN/$script");
+ doit("chown","0:0","$tmp/DEBIAN/$script");
+ doit("chmod",755,"$tmp/DEBIAN/$script");
+ }
+}
+
1
diff --git a/debian/changelog b/debian/changelog
index f42c8256..3fc9669e 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,13 @@
+debhelper (4.2.32) unstable; urgency=low
+
+ * Patch from Fabio Tranchitella to add support for #DEBHELPER# substitutions
+ in config files, although nothing in debhelper itself uses such
+ substitutions, third-party addons may. Closes: #301657
+ * Factor out a debhelper_script_subst from dh_installdeb and
+ dh_installdebconf.
+
+ -- Joey Hess <joeyh@debian.org> Sun, 27 Mar 2005 11:29:01 -0500
+
debhelper (4.2.31) unstable; urgency=low
* Updated dh_installmime Spanish translation.
diff --git a/dh_installdeb b/dh_installdeb
index 9832d102..519afb0c 100755
--- a/dh_installdeb
+++ b/dh_installdeb
@@ -46,7 +46,6 @@ init();
foreach my $package (@{$dh{DOPACKAGES}}) {
my $tmp=tmpdir($package);
- my $ext=pkgext($package);
if (! -d "$tmp/DEBIAN") {
doit("install","-o",0,"-g",0,"-d","$tmp/DEBIAN");
@@ -62,34 +61,9 @@ foreach my $package (@{$dh{DOPACKAGES}}) {
next;
}
- # Install debian install scripts.
- # If any .debhelper files exist, add them into the scripts.
- foreach my $file (qw{postinst preinst prerm postrm}) {
- my $f=pkgfile($package,$file);
- if ($f) {
- if (-f "debian/$ext$file.debhelper") {
- # Add this into the script, where it has
- # #DEBHELPER#
- complex_doit("perl -pe 's~#DEBHELPER#~qx{cat debian/$ext$file.debhelper}~eg' < $f > $tmp/DEBIAN/$file");
- }
- else {
- # Just get rid of any #DEBHELPER# in the
- # script.
- complex_doit("sed s/#DEBHELPER#// < $f > $tmp/DEBIAN/$file");
- }
- doit("chown","0:0","$tmp/DEBIAN/$file");
- doit("chmod",755,"$tmp/DEBIAN/$file");
- }
- else {
- # Auto-generate script header and add .debhelper
- # content to it.
- if (-f "debian/$ext$file.debhelper") {
- complex_doit("printf '#!/bin/sh\nset -e\n' > $tmp/DEBIAN/$file");
- complex_doit("cat debian/$ext$file.debhelper >> $tmp/DEBIAN/$file");
- doit("chown","0:0","$tmp/DEBIAN/$file");
- doit("chmod",755,"$tmp/DEBIAN/$file");
- }
- }
+ # Install debian scripts.
+ foreach my $script (qw{postinst preinst prerm postrm}) {
+ debhelper_script_subst($package, $script);
}
# Install non-executable files
diff --git a/dh_installdebconf b/dh_installdebconf
index ebf6a131..85772144 100755
--- a/dh_installdebconf
+++ b/dh_installdebconf
@@ -24,6 +24,12 @@ that works.
Files named debian/package.config and debian/package.templates are
installed into the DEBIAN directory in the package build directory.
+If a file named debian/package.script.debhelper exists, the contents
+of that file are merged into the config script as follows: If the script
+exists, then anywhere in it that "#DEBHELPER#" appears, the text of the
+.debhelper file is inserted. If the script does not exist, then a script
+is generated from the .debhelper file. The .debhelper filesmay be created
+by other debhelper programs, and are shell script fragments.
Note that if you use debconf, your package probably needs to depend on it
(it will be added to ${misc:Depends} by this program).
@@ -83,9 +89,8 @@ foreach my $package (@{$dh{DOPACKAGES}}) {
doit("install","-o",0,"-g",0,"-d","$tmp/DEBIAN");
}
- if (! is_udeb($package) && $config ne '') {
- doit("install", "-o", 0, "-g", 0, "-m", 755, "-p",
- $config, "$tmp/DEBIAN/config");
+ if (! is_udeb($package)) {
+ debhelper_script_subst($package, "config");
}
if ($templates ne '') {