[debhelper-devel] [debhelper] 02/04: dh_fixperms: Run in parallel

Niels Thykier nthykier at moszumanska.debian.org
Sun Jun 4 19:15:13 UTC 2017


This is an automated email from the git hooks/post-receive script.

nthykier pushed a commit to branch parallel_dh_tools
in repository debhelper.

commit af336f8170b9f59a88094d9819c15e5a84204a1d
Author: Niels Thykier <niels at thykier.net>
Date:   Sun Jun 4 18:59:12 2017 +0000

    dh_fixperms: Run in parallel
---
 dh_fixperms | 90 +++++++++++++++++++++++++++++++------------------------------
 1 file changed, 46 insertions(+), 44 deletions(-)

diff --git a/dh_fixperms b/dh_fixperms
index 16c99eb..910b26e 100755
--- a/dh_fixperms
+++ b/dh_fixperms
@@ -91,54 +91,56 @@ sub find_and_reset_perm {
 		"2>/dev/null | xargs -0r chmod ${mode}");
 }
 
-foreach my $package (@{$dh{DOPACKAGES}}) {
-	my $tmp=tmpdir($package);
-
-	# General permissions fixing.
-	complex_doit("find $tmp ${find_exclude_options} -print0",
-		"2>/dev/null | xargs -0r chown --no-dereference 0:0");
-	find_and_reset_perm($tmp, 'go=rX,u+rw,a-s', '! -type l');
-	
-	# Fix up permissions in usr/share/doc, setting everything to not
-	# executable by default, but leave examples directories alone.
-	find_and_reset_perm("${tmp}/usr/share/doc", '0644', '-type f', "! -regex '$tmp/usr/share/doc/[^/]*/examples/.*'");
-	find_and_reset_perm("${tmp}/usr/share/doc", '0755', '-type d');
-
-	# Manpages, include file, desktop files, etc., shouldn't be executable
-	find_and_reset_perm([
-				"${tmp}/usr/share/man",
-				"${tmp}/usr/include",
-				"${tmp}/usr/share/applications",
-				"${tmp}/usr/share/lintian/overrides",
-			], '0644', '-type f');
-
-	# nor should perl modules.
-	find_and_reset_perm(["${tmp}/${vendorarch}", "${tmp}/${vendorlib}"],
-			'a-X', "-type f -perm -5 -name '*.pm'");
-
-	find_and_reset_perm($tmp, '0644', '-type f ' . patterns2find_expr(@mode_0644_patterns)) if @mode_0644_patterns;
-	find_and_reset_perm($tmp, '0755', '-type f ' . patterns2find_expr(@mode_0755_patterns)) if @mode_0755_patterns;
+on_each_pkg_in_parallel {
+	foreach my $package (@_) {
+		my $tmp=tmpdir($package);
+
+		# General permissions fixing.
+		complex_doit("find $tmp ${find_exclude_options} -print0",
+					 "2>/dev/null | xargs -0r chown --no-dereference 0:0");
+		find_and_reset_perm($tmp, 'go=rX,u+rw,a-s', '! -type l');
 	
-	# Programs in the bin and init.d dirs should be executable..
-	find_and_reset_perm([map { "${tmp}/$_"} @executable_files_dirs], 'a+x', '-type f');
+		# Fix up permissions in usr/share/doc, setting everything to not
+		# executable by default, but leave examples directories alone.
+		find_and_reset_perm("${tmp}/usr/share/doc", '0644', '-type f', "! -regex '$tmp/usr/share/doc/[^/]*/examples/.*'");
+		find_and_reset_perm("${tmp}/usr/share/doc", '0755', '-type d');
+
+		# Manpages, include file, desktop files, etc., shouldn't be executable
+		find_and_reset_perm([
+					"${tmp}/usr/share/man",
+					"${tmp}/usr/include",
+					"${tmp}/usr/share/applications",
+					"${tmp}/usr/share/lintian/overrides",
+				], '0644', '-type f');
+
+		# nor should perl modules.
+		find_and_reset_perm(["${tmp}/${vendorarch}", "${tmp}/${vendorlib}"],
+							'a-X', "-type f -perm -5 -name '*.pm'");
+
+		find_and_reset_perm($tmp, '0644', '-type f ' . patterns2find_expr(@mode_0644_patterns)) if @mode_0644_patterns;
+		find_and_reset_perm($tmp, '0755', '-type f ' . patterns2find_expr(@mode_0755_patterns)) if @mode_0755_patterns;
+
+		# Programs in the bin and init.d dirs should be executable..
+		find_and_reset_perm([map { "${tmp}/$_"} @executable_files_dirs], 'a+x', '-type f');
 	
-	# ADA ali files should be mode 444 to avoid recompilation
-	find_and_reset_perm("${tmp}/usr/lib", 'uga-w', "-type f -name '*.ali'");
-
-	if ( -d "$tmp/usr/share/bug/$package") {
-		complex_doit("find $tmp/usr/share/bug/$package -type f",
-			"! -name 'script' ${find_exclude_options} -print0",
-			"2>/dev/null | xargs -0r chmod 644");
-		if ( -f "$tmp/usr/share/bug/$package/script" ) {
-			reset_perm_and_owner('0755', "$tmp/usr/share/bug/$package/script");
+		# ADA ali files should be mode 444 to avoid recompilation
+		find_and_reset_perm("${tmp}/usr/lib", 'uga-w', "-type f -name '*.ali'");
+
+		if ( -d "$tmp/usr/share/bug/$package") {
+			complex_doit("find $tmp/usr/share/bug/$package -type f",
+						 "! -name 'script' ${find_exclude_options} -print0",
+						 "2>/dev/null | xargs -0r chmod 644");
+			if ( -f "$tmp/usr/share/bug/$package/script" ) {
+				reset_perm_and_owner('0755', "$tmp/usr/share/bug/$package/script");
+			}
+		} elsif ( -f "$tmp/usr/share/bug/$package" ) {
+			reset_perm_and_owner('0755', "$tmp/usr/share/bug/$package");
 		}
-	} elsif ( -f "$tmp/usr/share/bug/$package" ) {
-		reset_perm_and_owner('0755', "$tmp/usr/share/bug/$package");
-	}
 
-	# Files in $tmp/etc/sudoers.d/ must be mode 0440.
-	find_and_reset_perm("${tmp}/etc/sudoers.d", '0440', "-type f ! -perm 440");
-}
+		# Files in $tmp/etc/sudoers.d/ must be mode 0440.
+		find_and_reset_perm("${tmp}/etc/sudoers.d", '0440', "-type f ! -perm 440");
+	}
+};
 
 =head1 SEE ALSO
 

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/debhelper/debhelper.git




More information about the debhelper-devel mailing list