debian/patches/features/all/rt/genpatch.py: Use upstream tarball directly
This commit is contained in:
parent
07db14c867
commit
964980804a
|
@ -17,6 +17,7 @@ linux (4.6.1-1~exp1) UNRELEASED; urgency=medium
|
|||
* debian/patches/features/all/rt/genpatch.py: Use Python 3
|
||||
* debian/patches/features/all/rt/genpatch.py: Fix mapping of -rt version to
|
||||
upstream version
|
||||
* debian/patches/features/all/rt/genpatch.py: Use upstream tarball directly
|
||||
|
||||
-- Ben Hutchings <ben@decadent.org.uk> Sat, 04 Jun 2016 18:33:11 +0100
|
||||
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
#!/usr/bin/python3
|
||||
|
||||
import errno, os, os.path, re, shutil, subprocess, sys
|
||||
import errno, os, os.path, re, shutil, subprocess, sys, tempfile
|
||||
|
||||
def main(source_dir, version):
|
||||
def main(source, version=None):
|
||||
patch_dir = 'debian/patches'
|
||||
rt_patch_dir = 'features/all/rt'
|
||||
series_name = 'series-rt'
|
||||
|
@ -43,12 +43,12 @@ def main(source_dir, version):
|
|||
series_fh.write('\n')
|
||||
new_series.add(name)
|
||||
|
||||
if os.path.isdir(os.path.join(source_dir, '.git')):
|
||||
if os.path.isdir(os.path.join(source, '.git')):
|
||||
# Export rebased branch from stable-rt git as patch series
|
||||
up_ver = re.sub(r'-rt\d+$', '', version)
|
||||
args = ['git', 'format-patch', 'v%s..v%s-rebase' % (up_ver, version)]
|
||||
env = os.environ.copy()
|
||||
env['GIT_DIR'] = os.path.join(source_dir, '.git')
|
||||
env['GIT_DIR'] = os.path.join(source, '.git')
|
||||
child = subprocess.Popen(args,
|
||||
cwd=os.path.join(patch_dir, rt_patch_dir),
|
||||
env=env, stdout=subprocess.PIPE)
|
||||
|
@ -63,22 +63,36 @@ def main(source_dir, version):
|
|||
origin = 'https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=%s' % match.group(1)
|
||||
add_patch(name, source_patch, origin)
|
||||
else:
|
||||
# Get version and upstream version
|
||||
if version is None:
|
||||
match = re.search(r'(?:^|/)patches-(.+)\.tar\.[gx]z$', source)
|
||||
assert match, 'no version specified or found in filename'
|
||||
version = match.group(1)
|
||||
match = re.match(r'^(\d+\.\d+)(?:\.\d+|-rc\d+)?-rt\d+$', version)
|
||||
assert match, 'could not parse version string'
|
||||
up_ver = match.group(1)
|
||||
|
||||
# Copy patch series
|
||||
origin = 'https://www.kernel.org/pub/linux/kernel/projects/rt/%s/patches-%s.tar.xz' % (up_ver, version)
|
||||
with open(os.path.join(source_dir, 'series'), 'r') as \
|
||||
source_series_fh:
|
||||
for line in source_series_fh:
|
||||
name = line.strip()
|
||||
if name != '' and name[0] != '#':
|
||||
with open(os.path.join(source_dir, name)) as source_patch:
|
||||
add_patch(name, source_patch, origin)
|
||||
else:
|
||||
# Leave comments and empty lines unchanged
|
||||
series_fh.write(line)
|
||||
temp_dir = tempfile.mkdtemp(prefix='rt-genpatch', dir='debian')
|
||||
try:
|
||||
# Unpack tarball
|
||||
subprocess.check_call(['tar', '-C', temp_dir, '-xaf', source])
|
||||
source_dir = os.path.join(temp_dir, 'patches')
|
||||
assert os.path.isdir(source_dir), 'tarball does not contain patches directory'
|
||||
|
||||
# Copy patch series
|
||||
origin = 'https://www.kernel.org/pub/linux/kernel/projects/rt/%s/patches-%s.tar.xz' % (up_ver, version)
|
||||
with open(os.path.join(source_dir, 'series'), 'r') as \
|
||||
source_series_fh:
|
||||
for line in source_series_fh:
|
||||
name = line.strip()
|
||||
if name != '' and name[0] != '#':
|
||||
with open(os.path.join(source_dir, name)) as source_patch:
|
||||
add_patch(name, source_patch, origin)
|
||||
else:
|
||||
# Leave comments and empty lines unchanged
|
||||
series_fh.write(line)
|
||||
finally:
|
||||
shutil.rmtree(temp_dir)
|
||||
|
||||
for name in new_series:
|
||||
if name in old_series:
|
||||
|
@ -90,8 +104,9 @@ def main(source_dir, version):
|
|||
print('Obsoleted patch', os.path.join(patch_dir, name))
|
||||
|
||||
if __name__ == '__main__':
|
||||
if len(sys.argv) != 3:
|
||||
print('Usage: %s DIR RT-VERSION' % sys.argv[0], file=sys.stderr)
|
||||
print('DIR is either a git repo or quilt directory containing the given RT-VERSION.', file=sys.stderr)
|
||||
if not (1 <= len(sys.argv) <= 2):
|
||||
print('Usage: %s {TAR [RT-VERSION] | REPO RT-VERSION}' % sys.argv[0], file=sys.stderr)
|
||||
print('TAR is a tarball of patches.', file=sys.stderr)
|
||||
print('REPO is a git repo containing the given RT-VERSION.', file=sys.stderr)
|
||||
sys.exit(2)
|
||||
main(sys.argv[1], sys.argv[2])
|
||||
main(*sys.argv[1:])
|
||||
|
|
Loading…
Reference in New Issue