]> git.donarmstrong.com Git - debhelper.git/blobdiff - dh_installdebconf
r1917: * dh_installman: When --language is used, be smarter about stripping
[debhelper.git] / dh_installdebconf
index 0d83eea0be70e15734b8b0fbcab8b3fe0cf7ad36..c25a779589760a6d9a055ae8824785363acf91da 100755 (executable)
@@ -24,24 +24,27 @@ that works.
 
 Files named debian/package.config and debian/package.templates are
 installed into the DEBIAN directory in the package build directory.
 
 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.config.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 files may 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
 
 Note that if you use debconf, your package probably needs to depend on it
-(it will be added to ${misc:Depends by this program).
+(it will be added to ${misc:Depends} by this program).
 
 
-=head1 LOCALIZED TEMPLATE FILES
-
-Debconf also supports localized template files, and this program has some
-support to aid working with them. It is best to keep the translations in
-separate files, and merge them only at build time. See 
-L<debconf-mergetemplate(1)> and L<debconf-getlang(1)> for details.
+Note that for your config script to be called by dpkg, your postinst
+needs to source debconf's confmodule. dh_installdebconf does not
+install this statement into postinst automatically as it it too hard to
+do it right.
 
 
-This program will automatically call debconf-mergetemplate and merge 
-templates on the fly if it finds your template files are accompanied
-by translated files that have the same name as the template file, with a
-dot and a locale name prepended.
+=head1 LOCALIZED TEMPLATE FILES
 
 
-For example, if you have a German translation,
-debian/package.templates.de is merged with debian/package.templates.
+This program will look to see if you have a debian/po directory and if so
+will automatically call L<po2debconf(1)> to generate a merged templates
+file containing the translations. For this to work, your package should
+build-depend on po-debconf.
 
 =head1 OPTIONS
 
 
 =head1 OPTIONS
 
@@ -53,7 +56,7 @@ Do not modify postrm script.
 
 =item B<--> I<params>
 
 
 =item B<--> I<params>
 
-Pass the params to debconf-mergetemplate.
+Pass the params to po2debconf.
 
 =back
 
 
 =back
 
@@ -75,18 +78,20 @@ foreach my $package (@{$dh{DOPACKAGES}}) {
                doit("install","-o",0,"-g",0,"-d","$tmp/DEBIAN");
        }
 
                doit("install","-o",0,"-g",0,"-d","$tmp/DEBIAN");
        }
 
-       if ($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 '') {
        }
        
        if ($templates ne '') {
-               # Are there translated templates too?
-               my @trans=(glob("$templates.??"), glob("$templates.??_??"));
-               if (@trans) {
-                       complex_doit("debconf-mergetemplate --drop-old-templates @extraparams @trans $templates > $tmp/DEBIAN/templates");
-                       chmod 0644, "$tmp/DEBIAN/templates";
-                       chown 0, 0, "$tmp/DEBIAN/templates";
+               # Are there old-style translated templates?
+               if (glob("$templates.??"), glob("$templates.??_??")) {
+                       warning "Ignoring debian/templates.ll files. Switch to po-debconf!";
+               }
+
+               umask(0022); # since I do a redirect below
+               
+               if (-d "debian/po") {
+                       complex_doit("po2debconf @extraparams $templates > $tmp/DEBIAN/templates");
                }
                else {
                        doit("install", "-o", 0, "-g", 0, "-m", 644, "-p",
                }
                else {
                        doit("install", "-o", 0, "-g", 0, "-m", 644, "-p",
@@ -94,13 +99,14 @@ foreach my $package (@{$dh{DOPACKAGES}}) {
                }
        }
 
                }
        }
 
+       # I'm going with debconf 0.5 because it was the first
+       # "modern" one. udebs just need cdebconf.
+       my $debconfdep=is_udeb($package) ? "cdebconf-udeb" : "debconf (>= 0.5) | debconf-2.0";
        if ($config ne '' || $templates ne '') {
        if ($config ne '' || $templates ne '') {
-               # I'm going with debconf 0.5 because it was the first
-               # "modern" one.
-               addsubstvar($package, "misc:Depends", "debconf", ">= 0.5");
+               addsubstvar($package, "misc:Depends", $debconfdep);
        }
        else {
        }
        else {
-               addsubstvar($package, "misc:Depends", "debconf", ">= 0.5", 1); # remove
+               addsubstvar($package, "misc:Depends", $debconfdep, undef, 1); # remove
        }
        
        if (($config ne '' || $templates ne '') && ! $dh{NOSCRIPTS}) {
        }
        
        if (($config ne '' || $templates ne '') && ! $dh{NOSCRIPTS}) {
@@ -110,7 +116,7 @@ foreach my $package (@{$dh{DOPACKAGES}}) {
 
 =head1 SEE ALSO
 
 
 =head1 SEE ALSO
 
-L<debhelper(1)>
+L<debhelper(7)>
 
 This program is a part of debhelper.
 
 
 This program is a part of debhelper.