From: "Luis R. Rodriguez" <mcgrof@do-not-panic.com>
To: backports@vger.kernel.org
Cc: linux-kernel@vger.kernel.org, yann.morin.1998@free.fr,
mmarek@suse.cz, sassmann@kpanic.de,
"Luis R. Rodriguez" <mcgrof@suse.com>
Subject: [PATCH v3 09/21] backports: fold outdir as a backport identity target
Date: Tue, 11 Nov 2014 00:15:00 -0800 [thread overview]
Message-ID: <1415693712-23743-10-git-send-email-mcgrof@do-not-panic.com> (raw)
In-Reply-To: <1415693712-23743-1-git-send-email-mcgrof@do-not-panic.com>
From: "Luis R. Rodriguez" <mcgrof@suse.com>
The output directory is always the same as the project directory
for packaging backports but for integration these will differ,
to make introduction of integration easier to follow use the
outdir as both project directory and target directory and fold
the existing args.outdir under the backport identity object as
both "project_dir" and "target_dir".
This commit has no functional changes.
Signed-off-by: Luis R. Rodriguez <mcgrof@suse.com>
---
gentree.py | 140 ++++++++++++++++++++++++++++++++++---------------------------
1 file changed, 78 insertions(+), 62 deletions(-)
diff --git a/gentree.py b/gentree.py
index dd7af84..04e8f5e 100755
--- a/gentree.py
+++ b/gentree.py
@@ -30,7 +30,9 @@ class Bp_Identity(object):
are added, how we actually use the others for regular printing will
need to be considered.
"""
- def __init__(self, integrate=False, kconfig_prefix='CPTCFG_', project_prefix=''):
+ def __init__(self, integrate=False, kconfig_prefix='CPTCFG_',
+ project_prefix='', project_dir='',
+ target_dir='', target_dir_name=''):
self.integrate = integrate
self.kconfig_prefix = kconfig_prefix
self.kconfig_prefix_resafe = re.escape(kconfig_prefix)
@@ -38,6 +40,9 @@ class Bp_Identity(object):
self.project_prefix_resafe = re.escape(project_prefix)
self.full_prefix = kconfig_prefix + project_prefix
self.full_prefix_resafe = re.escape(self.full_prefix)
+ self.project_dir = project_dir
+ self.target_dir = target_dir
+ self.target_dir_name = target_dir_name
def read_copy_list(copyfile):
"""
@@ -217,11 +222,11 @@ def automatic_backport_mangle_c_file(name):
return name.replace('/', '-')
-def add_automatic_backports(args, bpid):
+def add_automatic_backports(args):
disable_list = []
export = re.compile(r'^EXPORT_SYMBOL(_GPL)?\((?P<sym>[^\)]*)\)')
- bpi = kconfig.get_backport_info(os.path.join(args.outdir, 'compat', 'Kconfig'))
- configtree = kconfig.ConfigTree(os.path.join(args.outdir, 'Kconfig'))
+ bpi = kconfig.get_backport_info(os.path.join(args.bpid.target_dir, 'compat', 'Kconfig'))
+ configtree = kconfig.ConfigTree(os.path.join(args.bpid.target_dir, 'Kconfig'))
all_selects = configtree.all_selects()
for sym, vals in bpi.items():
if sym.startswith('BACKPORT_BUILD_'):
@@ -238,41 +243,41 @@ def add_automatic_backports(args, bpid):
files.append((os.path.join('include', f),
os.path.join('include', os.path.dirname(f), 'backport-' + os.path.basename(f))))
if args.git_revision:
- copy_git_files(args.kerneldir, files, args.git_revision, args.outdir)
+ copy_git_files(args.kerneldir, files, args.git_revision, args.bpid.target_dir)
else:
- copy_files(args.kerneldir, files, args.outdir)
+ copy_files(args.kerneldir, files, args.bpid.target_dir)
# now add the Makefile line
- mf = open(os.path.join(args.outdir, 'compat', 'Makefile'), 'a+')
+ mf = open(os.path.join(args.bpid.target_dir, 'compat', 'Makefile'), 'a+')
o_files = [automatic_backport_mangle_c_file(f)[:-1] + 'o' for f in c_files]
if symtype == 'tristate':
if not module_name:
raise Exception('backporting a module requires a #module-name')
for of in o_files:
mf.write('%s-objs += %s\n' % (module_name, of))
- mf.write('obj-$(%s%s) += %s.o\n' % (bpid.full_prefix, sym, module_name))
+ mf.write('obj-$(%s%s) += %s.o\n' % (args.bpid.full_prefix, sym, module_name))
elif symtype == 'bool':
- mf.write('compat-$(%s%s) += %s\n' % (bpid.full_prefix, sym, ' '.join(o_files)))
+ mf.write('compat-$(%s%s) += %s\n' % (args.bpid.full_prefix, sym, ' '.join(o_files)))
# finally create the include file
syms = []
for f in c_files:
- for l in open(os.path.join(args.outdir, 'compat',
+ for l in open(os.path.join(args.bpid.target_dir, 'compat',
automatic_backport_mangle_c_file(f)), 'r'):
m = export.match(l)
if m:
syms.append(m.group('sym'))
for f in h_files:
- outf = open(os.path.join(args.outdir, 'include', f), 'w')
+ outf = open(os.path.join(args.bpid.target_dir, 'include', f), 'w')
outf.write('/* Automatically created during backport process */\n')
- outf.write('#ifndef %s%s\n' % (bpid.full_prefix, sym))
+ outf.write('#ifndef %s%s\n' % (args.bpid.full_prefix, sym))
outf.write('#include_next <%s>\n' % f)
outf.write('#else\n');
for s in syms:
outf.write('#undef %s\n' % s)
outf.write('#define %s LINUX_BACKPORT(%s)\n' % (s, s))
outf.write('#include <%s>\n' % (os.path.dirname(f) + '/backport-' + os.path.basename(f), ))
- outf.write('#endif /* %s%s */\n' % (bpid.full_prefix, sym))
+ outf.write('#endif /* %s%s */\n' % (args.bpid.full_prefix, sym))
return disable_list
def git_debug_init(args):
@@ -283,8 +288,8 @@ def git_debug_init(args):
"""
if not args.gitdebug:
return
- git.init(tree=args.outdir)
- git.commit_all("Copied backport", tree=args.outdir)
+ git.init(tree=args.bpid.project_dir)
+ git.commit_all("Copied backport", tree=args.bpid.project_dir)
def git_debug_snapshot(args, name):
@@ -293,7 +298,7 @@ def git_debug_snapshot(args, name):
"""
if not args.gitdebug:
return
- git.commit_all(name, tree=args.outdir)
+ git.commit_all(name, tree=args.bpid.project_dir)
def get_rel_spec_stable(rel):
"""
@@ -426,12 +431,12 @@ def upload_release(args, rel_prep, logwrite=lambda x:None):
if (rel_prep['stable']):
korg_path += "/stable"
- parent = os.path.dirname(args.outdir)
- release = os.path.basename(args.outdir)
+ parent = os.path.dirname(args.bpid.project_dir)
+ release = os.path.basename(args.bpid.project_dir)
tar_name = parent + '/' + release + ".tar"
gzip_name = tar_name + ".gz"
- create_tar_and_gz(tar_name, args.outdir)
+ create_tar_and_gz(tar_name, args.bpid.project_dir)
logwrite(gpg.sign(tar_name, extra_args=['--armor', '--detach-sign']))
@@ -656,13 +661,42 @@ def _main():
'of changes done by Coccinelle.')
args = parser.parse_args()
+ # When building a package we use CPTCFG as we can rely on the
+ # fact that kconfig treats CONFIG_ as an environment variable
+ # requring less changes on code. For kernel integration we use
+ # the longer CONFIG_BACKPORT given that we'll be sticking to
+ # the kernel symbol namespace, to address that we do a final
+ # search / replace. Technically its possible to rely on the
+ # same prefix for packaging as with kernel integration but
+ # there are already some users of the CPTCFG prefix.
+ bpid = None
+ integrate = False
+ if integrate:
+ bpid = Bp_Identity(integrate = integrate,
+ kconfig_prefix = 'CONFIG_',
+ project_prefix = 'BACKPORT_',
+ project_dir = args.outdir,
+ target_dir = os.path.join(args.outdir, 'backports/'),
+ target_dir_name = 'backports/',
+ )
+ else:
+ bpid = Bp_Identity(integrate = integrate,
+ kconfig_prefix = 'CPTCFG_',
+ project_prefix = '',
+ project_dir = args.outdir,
+ target_dir = args.outdir,
+ target_dir_name = '',
+ )
+
def logwrite(msg):
sys.stdout.write(msg)
sys.stdout.write('\n')
sys.stdout.flush()
- return process(args.kerneldir, args.outdir, args.copy_list,
- git_revision=args.git_revision, clean=args.clean,
+ return process(args.kerneldir, args.copy_list,
+ git_revision=args.git_revision,
+ bpid=bpid,
+ clean=args.clean,
refresh=args.refresh, base_name=args.base_name,
gitdebug=args.gitdebug, verbose=args.verbose,
extra_driver=args.extra_driver,
@@ -672,7 +706,8 @@ def _main():
profile_cocci=args.profile_cocci,
logwrite=logwrite)
-def process(kerneldir, outdir, copy_list_file, git_revision=None,
+def process(kerneldir, copy_list_file, git_revision=None,
+ bpid=None,
clean=False, refresh=False, base_name="Linux", gitdebug=False,
verbose=False, extra_driver=[], kup=False,
kup_test=False,
@@ -681,16 +716,16 @@ def process(kerneldir, outdir, copy_list_file, git_revision=None,
logwrite=lambda x:None,
git_tracked_version=False):
class Args(object):
- def __init__(self, kerneldir, outdir, copy_list_file,
- git_revision, clean, refresh, base_name,
+ def __init__(self, kerneldir, copy_list_file,
+ git_revision, bpid, clean, refresh, base_name,
gitdebug, verbose, extra_driver, kup,
kup_test,
test_cocci,
profile_cocci):
self.kerneldir = kerneldir
- self.outdir = outdir
self.copy_list = copy_list_file
self.git_revision = git_revision
+ self.bpid = bpid
self.clean = clean
self.refresh = refresh
self.base_name = base_name
@@ -712,30 +747,11 @@ def process(kerneldir, outdir, copy_list_file, git_revision=None,
else:
logwrite('Validated tree: %s' % tree)
- args = Args(kerneldir, outdir, copy_list_file,
- git_revision, clean, refresh, base_name,
+ args = Args(kerneldir, copy_list_file,
+ git_revision, bpid, clean, refresh, base_name,
gitdebug, verbose, extra_driver, kup, kup_test,
test_cocci, profile_cocci)
rel_prep = None
- integrate = False
-
- # When building a package we use CPTCFG as we can rely on the
- # fact that kconfig treats CONFIG_ as an environment variable
- # requring less changes on code. For kernel integration we use
- # the longer CONFIG_BACKPORT given that we'll be sticking to
- # the kernel symbol namespace, to address that we do a final
- # search / replace. Technically its possible to rely on the
- # same prefix for packaging as with kernel integration but
- # there are already some users of the CPTCFG prefix.
- bpid = None
- if integrate:
- bpid = Bp_Identity(integrate = integrate,
- kconfig_prefix = 'CONFIG_',
- project_prefix = 'BACKPORT_')
- else:
- bpid = Bp_Identity(integrate = integrate,
- kconfig_prefix = 'CPTCFG_',
- project_prefix = '')
# start processing ...
if (args.kup or args.kup_test):
@@ -743,7 +759,7 @@ def process(kerneldir, outdir, copy_list_file, git_revision=None,
git_paranoia(kerneldir, logwrite)
rel_describe = git.describe(rev=None, tree=source_dir, extra_args=['--dirty'])
- release = os.path.basename(args.outdir)
+ release = os.path.basename(bpid.target_dir)
version = release.replace("backports-", "")
rel_prep = get_rel_prep(version)
@@ -768,7 +784,7 @@ def process(kerneldir, outdir, copy_list_file, git_revision=None,
deplist = read_dependencies(os.path.join(source_dir, 'dependencies'))
# validate output directory
- check_output_dir(args.outdir, args.clean)
+ check_output_dir(bpid.target_dir, args.clean)
# do the copy
backport_files = [(x, x) for x in [
@@ -782,33 +798,33 @@ def process(kerneldir, outdir, copy_list_file, git_revision=None,
else:
logwrite('Get original source files from git ...')
- copy_files(os.path.join(source_dir, 'backport'), backport_files, args.outdir)
+ copy_files(os.path.join(source_dir, 'backport'), backport_files, bpid.target_dir)
git_debug_init(args)
if not args.git_revision:
- copy_files(args.kerneldir, copy_list, args.outdir)
+ copy_files(args.kerneldir, copy_list, bpid.target_dir)
else:
- copy_git_files(args.kerneldir, copy_list, args.git_revision, args.outdir)
+ copy_git_files(args.kerneldir, copy_list, args.git_revision, bpid.target_dir)
# FIXME: should we add a git version of this (e.g. --git-extra-driver)?
for src, copy_list in args.extra_driver:
if (args.kup or args.kup_test):
git_paranoia(src)
- copy_files(src, read_copy_list(open(copy_list, 'r')), args.outdir)
+ copy_files(src, read_copy_list(open(copy_list, 'r')), bpid.target_dir)
git_debug_snapshot(args, 'Add driver sources')
- disable_list = add_automatic_backports(args, bpid)
+ disable_list = add_automatic_backports(args)
if disable_list:
- bpcfg = kconfig.ConfigTree(os.path.join(args.outdir, 'compat', 'Kconfig'))
+ bpcfg = kconfig.ConfigTree(os.path.join(bpid.target_dir, 'compat', 'Kconfig'))
bpcfg.disable_symbols(disable_list)
git_debug_snapshot(args, 'Add automatic backports')
- apply_patches(args, "backport", source_dir, 'patches', args.outdir, logwrite)
+ apply_patches(args, "backport", source_dir, 'patches', bpid.target_dir, logwrite)
# some post-processing is required
- configtree = kconfig.ConfigTree(os.path.join(args.outdir, 'Kconfig'))
+ configtree = kconfig.ConfigTree(os.path.join(bpid.target_dir, 'Kconfig'))
orig_symbols = configtree.symbols()
logwrite('Modify Kconfig tree ...')
@@ -831,7 +847,7 @@ def process(kerneldir, outdir, copy_list_file, git_revision=None,
kernel_version = git.describe(rev=args.git_revision or 'HEAD',
tree=args.kerneldir,
extra_args=['--long'])
- f = open(os.path.join(args.outdir, 'versions'), 'w')
+ f = open(os.path.join(bpid.target_dir, 'versions'), 'w')
f.write('BACKPORTS_VERSION="%s"\n' % backports_version)
f.write('BACKPORTED_KERNEL_VERSION="%s"\n' % kernel_version)
f.write('BACKPORTED_KERNEL_NAME="%s"\n' % args.base_name)
@@ -844,7 +860,7 @@ def process(kerneldir, outdir, copy_list_file, git_revision=None,
# write local symbol list -- needed during packaging build
if not bpid.integrate:
- f = open(os.path.join(args.outdir, '.local-symbols'), 'w')
+ f = open(os.path.join(bpid.project_dir, '.local-symbols'), 'w')
for sym in symbols:
f.write('%s=\n' % sym)
f.close()
@@ -852,7 +868,7 @@ def process(kerneldir, outdir, copy_list_file, git_revision=None,
# add defconfigs that we want
defconfigs_dir = os.path.join(source_dir, 'backport', 'defconfigs')
- os.mkdir(os.path.join(args.outdir, 'defconfigs'))
+ os.mkdir(os.path.join(bpid.target_dir, 'defconfigs'))
for dfbase in os.listdir(defconfigs_dir):
copy_defconfig = True
dfsrc = os.path.join(defconfigs_dir, dfbase)
@@ -868,7 +884,7 @@ def process(kerneldir, outdir, copy_list_file, git_revision=None,
copy_defconfig = False
break
if copy_defconfig:
- shutil.copy(dfsrc, os.path.join(args.outdir, 'defconfigs', dfbase))
+ shutil.copy(dfsrc, os.path.join(bpid.target_dir, 'defconfigs', dfbase))
git_debug_snapshot(args, "add (useful) defconfig files")
@@ -880,7 +896,7 @@ def process(kerneldir, outdir, copy_list_file, git_revision=None,
for some_symbols in [orig_symbols[i:i + 50] for i in range(0, len(orig_symbols), 50)]:
r = 'CONFIG_((' + '|'.join([s + '(_MODULE)?' for s in some_symbols]) + ')([^A-Za-z0-9_]|$))'
regexes.append(re.compile(r, re.MULTILINE))
- for root, dirs, files in os.walk(args.outdir):
+ for root, dirs, files in os.walk(bpid.target_dir):
# don't go into .git dir (possible debug thing)
if '.git' in dirs:
dirs.remove('.git')
@@ -899,7 +915,7 @@ def process(kerneldir, outdir, copy_list_file, git_revision=None,
git_debug_snapshot(args, "rename config symbol / srctree usage")
# disable unbuildable Kconfig symbols and stuff Makefiles that doesn't exist
- maketree = make.MakeTree(os.path.join(args.outdir, 'Makefile.kernel'))
+ maketree = make.MakeTree(os.path.join(bpid.target_dir, 'Makefile.kernel'))
disable_kconfig = []
disable_makefile = []
for sym in maketree.get_impossible_symbols():
--
2.1.1
next prev parent reply other threads:[~2014-11-11 8:16 UTC|newest]
Thread overview: 32+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-11-11 8:14 [PATCH v3 00/21] backports: add kernel integration support Luis R. Rodriguez
2014-11-11 8:14 ` [PATCH v3 01/21] backports: move legacy and SmPL patch application into helper Luis R. Rodriguez
2016-07-04 9:33 ` Johannes Berg
2016-07-07 0:10 ` Luis R. Rodriguez
2016-07-07 4:14 ` Johannes Berg
2014-11-11 8:14 ` [PATCH v3 02/21] backports: ifdef around module_init() module_exit() for modules Luis R. Rodriguez
2014-11-11 8:14 ` [PATCH v3 03/21] backports: move packaging kconfig hacks to its own file Luis R. Rodriguez
2014-11-11 8:14 ` [PATCH v3 04/21] backports: grant parsers access to kconfig config and menuconfig Luis R. Rodriguez
2014-11-11 8:14 ` [PATCH v3 05/21] backports: keep track of original backported source symbols early on Luis R. Rodriguez
2014-11-11 8:14 ` [PATCH v3 06/21] backports: allow for different backport prefix and simple integration support Luis R. Rodriguez
2014-11-11 8:14 ` [PATCH v3 07/21] backports: add prefix for integration on dependencies Luis R. Rodriguez
2014-11-11 8:14 ` [PATCH v3 08/21] backports: replace BACKPORT_PWD with BACKPORT_DIR Luis R. Rodriguez
2014-11-11 8:15 ` Luis R. Rodriguez [this message]
2014-11-11 8:15 ` [PATCH v3 10/21] backports: avoid git tree reinitialization Luis R. Rodriguez
2014-11-14 20:47 ` Johannes Berg
2014-11-14 20:51 ` Luis R. Rodriguez
2014-11-11 8:15 ` [PATCH v3 11/21] backports: modify kconfig parser to use bpid and target_dir Luis R. Rodriguez
2014-11-11 8:15 ` [PATCH v3 12/21] backports: make kconfig src_line backport / ConfigTree specific Luis R. Rodriguez
2014-11-11 8:15 ` [PATCH v3 13/21] backports: use BACKPORT_DIR prefix on kconfig sources Luis R. Rodriguez
2014-11-11 8:15 ` [PATCH v3 14/21] backports: update dependencies map file Luis R. Rodriguez
2014-11-11 8:15 ` [PATCH v3 15/21] backports: split Kconfig into Kconfig.package and Kconfig.sources Luis R. Rodriguez
2014-11-11 8:15 ` [PATCH v3 16/21] backports: move version file generation to run earlier Luis R. Rodriguez
2014-11-11 8:15 ` [PATCH v3 17/21] backports: define C code backport version info using CPTCFG_ Luis R. Rodriguez
2014-11-11 8:15 ` [PATCH v3 18/21] backports: add backport version parsing for kernel integration Luis R. Rodriguez
2014-11-11 8:15 ` [PATCH v3 19/21] backports: prefix c-file / h-file auto backport with BPAUTO Luis R. Rodriguez
2014-11-11 8:15 ` [PATCH v3 20/21] backports: remove extra BACKPORT_ prefix from kernel versioning Luis R. Rodriguez
2014-11-11 8:15 ` [PATCH v3 21/21] backports: add full kernel integration support Luis R. Rodriguez
2014-11-14 20:50 ` [PATCH v3 00/21] backports: add " Johannes Berg
2014-11-14 20:52 ` Luis R. Rodriguez
2014-11-14 20:54 ` Johannes Berg
2014-11-14 21:10 ` Luis R. Rodriguez
2014-11-15 1:20 ` Luis R. Rodriguez
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1415693712-23743-10-git-send-email-mcgrof@do-not-panic.com \
--to=mcgrof@do-not-panic.com \
--cc=backports@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mcgrof@suse.com \
--cc=mmarek@suse.cz \
--cc=sassmann@kpanic.de \
--cc=yann.morin.1998@free.fr \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).