X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=dh_installwm;h=31ce63c604733069bff7c9767182613a504b5295;hb=982e8935d2259eacf196e2b8d3364d0286e953ca;hp=b3b9059e48d9c49e53c46591151b36a64c1b3ae2;hpb=c104d85de0a15fdccb056ceee32351dd91822237;p=debhelper.git diff --git a/dh_installwm b/dh_installwm index b3b9059..31ce63c 100755 --- a/dh_installwm +++ b/dh_installwm @@ -1,22 +1,104 @@ #!/usr/bin/perl -w -# -# Add to postinst and postrm to register a window manager. -BEGIN { push @INC, "debian", "/usr/share/debhelper" } -use Dh_Lib; +=head1 NAME + +dh_installwm - register a window manager + +=cut + +use strict; +use Debian::Debhelper::Dh_Lib; + +=head1 SYNOPSIS + +B [S>] [B<-n>] [B<--priority=>I] [S>] + +=head1 DESCRIPTION + +dh_installwm is a debhelper program that is responsible for +generating the postinst and postrm commands that register a window manager +with L + +Any window manager programs specified as parameters will be registered in +the first package dh_installwm is told to act on. By default, this is the +first binary package in debian/control, but if you use -p, -i, or -a flags, +it will be the first package specified by those flags. + +Files named debian/package.wm can list other window manager programs to +register. + +=head1 OPTIONS + +=over 4 + +=item B<--priority=>I + +Set the priority of the window manager. Default is 20, which is too low for +most window managers; see the Debian Policy document for instructions on +calculating the correct value. + +=item B<-n>, B<--noscripts> + +Do not modify postinst/postrm scripts. Turns this command into a no-op. + +=item I + +The commands used to run the window manager or window managers you want to +register. + +=head1 NOTES + +Note that this command is not idempotent. "dh_clean -k" should be called +between invocations of this command. Otherwise, it may cause multiple +instances of the same text to be added to maintainer scripts. + +=back + +=cut + init(); -$wm=shift; +if (! defined $dh{PRIORITY}) { + $dh{PRIORITY}=20; +} -if ($wm eq '') { - error("No window manager filename was specified."); +if (@ARGV) { + # This is here for backwards compatibility. If the filename doesn't + # include a path, assume it's in /usr/X11R6/bin. + if ($ARGV[0] !~ m:/:) { + $ARGV[0]="/usr/X11R6/bin/$ARGV[0]"; + } } -foreach $PACKAGE (@{$dh{DOPACKAGES}}) { -# $TMP=tmpdir($PACKAGE); +foreach my $package (@{$dh{DOPACKAGES}}) { +# my $tmp=tmpdir($package); + my $file=pkgfile($package,"wm"); + + my @wm; + if ($file) { + @wm=filearray($file, '.'); + } + + if (($package eq $dh{FIRSTPACKAGE} || $dh{PARAMS_ALL}) && @ARGV) { + push @wm, @ARGV; + } if (! $dh{NOSCRIPTS}) { - autoscript($PACKAGE,"postinst","postinst-wm","s:#WM#:$wm:"); - autoscript($PACKAGE,"postrm","postrm-wm","s:#WM#:$wm:"); + foreach (@wm) { + autoscript($package,"postinst","postinst-wm","s:#WM#:$_:;s/#PRIORITY#/$dh{PRIORITY}/",); + autoscript($package,"prerm","prerm-wm","s:#WM#:$_:"); + } } } + +=head1 SEE ALSO + +L + +This program is a part of debhelper. + +=head1 AUTHOR + +Joey Hess + +=cut