debian/bin/genorig.py: Make orig tarballs reproducible
This commit is contained in:
parent
277d4945c7
commit
87937205f7
|
@ -8,6 +8,7 @@ import os.path
|
|||
import re
|
||||
import shutil
|
||||
import subprocess
|
||||
import time
|
||||
|
||||
from debian_linux.debian import Changelog, VersionLinux
|
||||
|
||||
|
@ -79,8 +80,19 @@ class Main(object):
|
|||
self.upstream_extract(self.input_files[0])
|
||||
if len(self.input_files) > 1:
|
||||
self.upstream_patch(self.input_files[1])
|
||||
|
||||
# generate() will change file mtimes. Capture the
|
||||
# original release time so we can apply it to the final
|
||||
# tarball. Note this doesn't work in case we apply an
|
||||
# upstream patch, as that doesn't carry a release time.
|
||||
orig_date = time.strftime(
|
||||
"%a, %d %b %Y %H:%M:%S +0000",
|
||||
time.gmtime(
|
||||
os.stat(os.path.join(self.dir, 'temp/Makefile'))
|
||||
.st_mtime))
|
||||
|
||||
self.generate()
|
||||
self.tar()
|
||||
self.tar(orig_date)
|
||||
finally:
|
||||
shutil.rmtree(self.dir)
|
||||
|
||||
|
@ -170,7 +182,7 @@ class Main(object):
|
|||
os.makedirs(d)
|
||||
shutil.copyfile(temp_j, orig_j)
|
||||
|
||||
def tar(self):
|
||||
def tar(self, orig_date):
|
||||
out = os.path.join("../orig", self.orig_tar)
|
||||
try:
|
||||
os.mkdir("../orig")
|
||||
|
@ -182,9 +194,12 @@ class Main(object):
|
|||
except OSError:
|
||||
pass
|
||||
self.log("Generate tarball %s\n" % out)
|
||||
cmdline = ['tar -caf', out, '-C', self.dir, self.orig]
|
||||
cmdline = '''(cd '%s' && find '%s' -print0) |
|
||||
LC_ALL=C sort -z |
|
||||
tar -C '%s' --no-recursion --null -T - --mtime '%s' -caf '%s'
|
||||
''' % (self.dir, self.orig, self.dir, orig_date, out)
|
||||
try:
|
||||
if os.spawnv(os.P_WAIT, '/bin/sh', ['sh', '-c', ' '.join(cmdline)]):
|
||||
if os.spawnv(os.P_WAIT, '/bin/sh', ['sh', '-c', cmdline]):
|
||||
raise RuntimeError("Can't patch source")
|
||||
os.chmod(out, 0o644)
|
||||
except:
|
||||
|
|
|
@ -5,6 +5,7 @@ linux-tools (4.2-1) UNRELEASED; urgency=medium
|
|||
[ Ben Hutchings ]
|
||||
* debian/bin,debian/control,debian/lib/python,debian/rules: Use Python 3
|
||||
- debian/lib/python: Sync with linux package
|
||||
* debian/bin/genorig.py: Make orig tarballs reproducible
|
||||
|
||||
-- Ben Hutchings <ben@decadent.org.uk> Fri, 25 Sep 2015 18:42:20 +0100
|
||||
|
||||
|
|
Loading…
Reference in New Issue