summaryrefslogtreecommitdiff
path: root/dh_installmenu
blob: 327fac0fc31cd23b98edc615c0a3ef17536ed154 (plain)
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
#!/usr/bin/perl -w

=head1 NAME

dh_installmenu - install debian menu files into package build directories

=cut

use strict;
use Debian::Debhelper::Dh_Lib;

=head1 SYNOPSIS

B<dh_installmenu> [S<B<debhelper options>>] [B<-n>]

=head1 DESCRIPTION

dh_installmenu is a debhelper program that is responsible for installing
files used by the debian menu package into package build directories.

It also automatically generates the postinst and postrm commands needed to
interface with the debian menu package. These commands are inserted into
the maintainer scripts by dh_installdeb. See L<dh_installdeb(1)> for an
explanation of how this works.

If a file named debian/package.menu exists, then it is installed into
usr/share/menu/package in the package build directory. This is a debian menu
file. See L<menufile(5)> for its format.

If a file named debian/package.menu-method exits, then it is installed into
etc/menu-methods/package in the package build directory. This is a debian
menu method file.

=head1 OPTIONS

=over 4

=item B<-n>, B<--noscripts>

Do not modify postinst/postrm scripts.

=back

=cut

init();

foreach my $package (@{$dh{DOPACKAGES}}) {
	my $tmp=tmpdir($package);
	my $menu=pkgfile($package,"menu");
	my $menu_method=pkgfile($package,"menu-method");
	
	if ($menu ne '') {
		if (! -d "$tmp/usr/share/menu") {
			doit("install","-d","$tmp/usr/share/menu");
		}
		doit("install","-p","-m644",$menu,"$tmp/usr/share/menu/$package");
		
		# Add the scripts if a menu-method file doesn't exist.
		# The scripts for menu-method handle everything these do, too.
		if ($menu_method eq "" && ! $dh{NOSCRIPTS}) {
			autoscript($package,"postinst","postinst-menu");
			autoscript($package,"postrm","postrm-menu")
		}
	}

	if ($menu_method ne '') {
		if (!-d "$tmp/etc/menu-methods") {
			doit("install","-d","$tmp/etc/menu-methods");
		}
		doit("install","-p","-m644",$menu_method,"$tmp/etc/menu-methods/$package");

		if (! $dh{NOSCRIPTS}) {
			autoscript($package,"postinst","postinst-menu-method","s/#PACKAGE#/$package/");
			autoscript($package,"postrm","postrm-menu-method","s/#PACKAGE#/$package/");
		}
	}
}

=head1 SEE ALSO

L<debhelper(7)>
L<update-menus(1)>
L<menufile(5)>

This program is a part of debhelper.

=head1 AUTHOR

Joey Hess <joeyh@debian.org>

=cut