From 14a4787885515d9a098d2c11a7981cc18e59b929 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Fri, 2 Mar 2012 14:56:25 -0400 Subject: [PATCH] Fix bug in mtime resetting code, which caused delta files to be created that failed to regenerate the original tarball. Closes: #661902 Need to set mtime in a separate pass, after symlink replacement with regular file is complete. --- debian/changelog | 7 +++++++ pristine-tar | 6 ++++++ 2 files changed, 13 insertions(+) diff --git a/debian/changelog b/debian/changelog index 09e05f7..3d199f6 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,10 @@ +pristine-tar (1.21) UNRELEASED; urgency=low + + * Fix bug in mtime resetting code, which caused delta files to be created + that failed to regenerate the original tarball. Closes: #661902 + + -- Joey Hess Fri, 02 Mar 2012 14:55:07 -0400 + pristine-tar (1.20) unstable; urgency=low * pristine-xz: Try --extreme too. While my corpus has no such xz files, diff --git a/pristine-tar b/pristine-tar index e3c2a11..ea3af7a 100755 --- a/pristine-tar +++ b/pristine-tar @@ -300,7 +300,11 @@ sub recreatetarball { chmod(0755, "$tempdir/workdir/$file") || die "chmod: $!"; } + } + # Set file times only after modifying of the directory content is + # done. + foreach my $file (@manifest) { if (-e "$tempdir/workdir/$file") { utime(0, 0, "$tempdir/workdir/$file") || die "utime: $file: $!"; } @@ -324,6 +328,8 @@ sub recreatetarball { chmod(0755, $_) || die "chmod: $!"; } + }, "$tempdir/workdir"); + find(sub { utime(0, 0, $_) || die "utime: $_: $!"; }, "$tempdir/workdir"); } -- 2.7.4