diff options
Diffstat (limited to 'dh_fixperms')
-rwxr-xr-x | dh_fixperms | 105 |
1 files changed, 0 insertions, 105 deletions
diff --git a/dh_fixperms b/dh_fixperms deleted file mode 100755 index 1a35c78d..00000000 --- a/dh_fixperms +++ /dev/null @@ -1,105 +0,0 @@ -#!/usr/bin/perl -w - -=head1 NAME - -dh_fixperms - fix permissions of files in package build directories - -=cut - -use strict; -use Debian::Debhelper::Dh_Lib; - -=head1 SYNOPSIS - -B<dh_fixperms> [S<I<debhelper options>>] [B<-X>I<item>] - -=head1 DESCRIPTION - -dh_fixperms is a debhelper program that is responsible for setting the -permissions of files and directories in package build directories to a -sane state -- a state that complies with Debian policy. - -dh_fixperms makes all files in usr/share/doc in the package build directory -(excluding files in the examples/ directory) be mode 644. It also changes -the permissions of all man pages to mode 644. It makes all files be owned by -root, and it removes group and other write permission from all files. -It removes execute permissions from any libraries that have it set. It makes -all files in bin/ directories and etc/init.d executable (v4 only). Finally, -it removes the setuid and setgid bits from all files in the package. - -=head1 OPTIONS - -=over 4 - -=item B<-X>I<item>, B<--exclude> I<item> - -Exclude files that contain "item" anywhere in their filename from having -their permissions changed. You may use this option multiple times to build -up a list of things to exclude. - -=back - -=cut - -init(); - -foreach my $package (@{$dh{DOPACKAGES}}) { - my $tmp=tmpdir($package); - - my $find_options=''; - if (defined($dh{EXCLUDE_FIND}) && $dh{EXCLUDE_FIND} ne '') { - $find_options="! \\( $dh{EXCLUDE_FIND} \\)"; - } - - # General permissions fixing. - complex_doit("find $tmp $find_options -print0", - "2>/dev/null | xargs -0r chown --no-dereference 0.0"); - complex_doit("find $tmp ! -type l $find_options -print0", - "2>/dev/null | xargs -0r chmod go=rX,u+rw,a-s"); - - # Fix up premissions in usr/share/doc, setting everything to not - # executable by default, but leave examples directories alone. - complex_doit("find $tmp/usr/share/doc -type f $find_options ! -regex '$tmp/usr/share/doc/[^/]*/examples/.*' -print0 2>/dev/null", - "| xargs -0r chmod 644"); - complex_doit("find $tmp/usr/share/doc -type d $find_options -print0 2>/dev/null", - "| xargs -0r chmod 755"); - - # Executable man pages are a bad thing.. - complex_doit("find $tmp/usr/share/man $tmp/usr/man/ $tmp/usr/X11*/man/ -type f", - "$find_options -print0 2>/dev/null | xargs -0r chmod 644"); - - # ..and so are executable shared and static libraries - # (and .la files from libtool) .. - complex_doit("find $tmp -perm -5 -type f", - "\\( -name '*.so*' -or -name '*.la' -or -name '*.a' \\) $find_options -print0", - "2>/dev/null | xargs -0r chmod 644"); - - # .. and perl modules. - complex_doit("find $tmp/usr/lib/perl5 $tmp/usr/share/perl5 -type f", - "-perm -5 -name '*.pm' $find_options -print0", - "2>/dev/null | xargs -0r chmod a-X"); - - # v4 only - if (! compat(3)) { - # Programs in the bin and init.d dirs should be executable.. - for my $dir (qw{usr/bin bin usr/sbin sbin etc/init.d}) { - if (-d "$tmp/$dir") { - complex_doit("find $tmp/$dir -type f $find_options -print0 2>/dev/null", - "| xargs -0r chmod +x"); - } - } - } - -} - -=head1 SEE ALSO - -L<debhelper(7)> - -This program is a part of debhelper. - -=head1 AUTHOR - -Joey Hess <joeyh@debian.org> - -=cut |