]> git.donarmstrong.com Git - debhelper.git/blobdiff - dh_fixperms
Fix typo in French translation, about debian/package.README.Debian files.
[debhelper.git] / dh_fixperms
index 5d982ad331cd880544bffcc2f0d862c6c86267c3..d9c726ca5fa3c079f64bdd4a12c95cd90954410a 100755 (executable)
@@ -11,7 +11,7 @@ use Debian::Debhelper::Dh_Lib;
 
 =head1 SYNOPSIS
 
-  dh_fixperms [debhelper options] [-Xitem]
+B<dh_fixperms> [S<I<debhelper options>>] [B<-X>I<item>]
 
 =head1 DESCRIPTION
 
@@ -21,10 +21,12 @@ 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. Finally,
-it removes the setuid and setgid bits from all files in the package.
+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, headers, perl modules, or
+desktop files that have it set. It makes all files in bin/ directories,
+/usr/games/ and etc/init.d executable (since v4). Finally, it removes the
+setuid and setgid bits from all files in the package.
 
 =head1 OPTIONS
 
@@ -52,31 +54,62 @@ foreach my $package (@{$dh{DOPACKAGES}}) {
 
        # General permissions fixing.
        complex_doit("find $tmp $find_options -print0",
-               "2>/dev/null | xargs -0r chown --no-dereference 0.0");
+               "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 $tmp/usr/doc -type f $find_options ! -regex '.*/examples/.*' -print0",
-               "2>/dev/null | xargs -0r chmod 644");
-       complex_doit("find $tmp/usr/share/doc $tmp/usr/doc -type d $find_options -print0",
-               "2>/dev/null | xargs -0r chmod 755");
+       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)
+       # (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 header files ..
+       complex_doit("find $tmp/usr/include -type f $find_options -print0",
+               "2>/dev/null | xargs -0r chmod 644");
+       
+       # ..and desktop files ..
+       complex_doit("find $tmp/usr/share/applications -type f $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 and up
+       if (! compat(3)) {
+               # Programs in the bin and init.d dirs should be executable..
+               for my $dir (qw{usr/bin bin usr/sbin sbin usr/games etc/init.d}) {
+                       if (-d "$tmp/$dir") {
+                               complex_doit("find $tmp/$dir -type f $find_options -print0 2>/dev/null",
+                                       "| xargs -0r chmod a+x");
+                       }
+               }
+       }
+       
+       # ADA ali files should be mode 444 to avoid recompilation
+       if (-d "$tmp/usr/lib/ada") {
+               complex_doit("find $tmp/usr/lib/ada -type f",
+                       "-name '*.ali' $find_options -print0",
+                       "2>/dev/null | xargs -0r chmod uga-w");
+       }
 }
 
 =head1 SEE ALSO
 
-L<debhelper(1)>
+L<debhelper(7)>
 
 This program is a part of debhelper.