[calm - Cygwin server-side packaging maintenance script] branch master, updated. 20200129-6-g7673c3a
jturney@sourceware.org
jturney@sourceware.org
Tue Feb 18 17:00:00 GMT 2020
https://sourceware.org/git/gitweb.cgi?p=cygwin-apps/calm.git;h=7673c3a8428c5af430f441fdd5c61e868c1bef43
commit 7673c3a8428c5af430f441fdd5c61e868c1bef43
Author: Jon Turney <jon.turney@dronecode.org.uk>
Date: Thu Jan 30 14:23:22 2020 +0000
Don't use a defaultdict for packages
https://sourceware.org/git/gitweb.cgi?p=cygwin-apps/calm.git;h=9d962715d99b9483f7f22ae77cd8476ceb8d988a
commit 9d962715d99b9483f7f22ae77cd8476ceb8d988a
Author: Jon Turney <jon.turney@dronecode.org.uk>
Date: Wed Jan 29 18:06:50 2020 +0000
Avoid repeated package dict lookups in write_setup_ini
Diff:
---
calm/package.py | 59 ++++++++++++++++++++++++++++++---------------------------
1 file changed, 31 insertions(+), 28 deletions(-)
diff --git a/calm/package.py b/calm/package.py
index a3bf328..26072f2 100755
--- a/calm/package.py
+++ b/calm/package.py
@@ -108,7 +108,7 @@ def read_packages(rel_area, arch):
# <arch>/ noarch/ and src/ directories are considered
for root in ['noarch', 'src', arch]:
- packages[root] = defaultdict(Package)
+ packages[root] = {}
releasedir = os.path.join(rel_area, root)
logging.debug('reading packages from %s' % releasedir)
@@ -404,6 +404,7 @@ def read_one_package(packages, p, relpath, dirpath, files, remove, kind):
hints[ovr] = hintobj
actual_tars[ovr] = tars[vr]
+ packages[pn] = Package()
packages[pn].version_hints = version_hints
packages[pn].override_hints = override_hints
packages[pn].tars = actual_tars
@@ -973,39 +974,41 @@ def write_setup_ini(args, packages, arch):
print("setup-version: %s" % args.setup_version, file=f)
# for each package
- for p in sorted(packages.keys(), key=sort_key):
+ for pn in sorted(packages, key=sort_key):
+ po = packages[pn]
+
# do nothing if 'skip'
- if packages[p].skip:
+ if po.skip:
continue
# write package data
- print("\n@ %s" % p, file=f)
+ print("\n@ %s" % pn, file=f)
- bv = packages[p].best_version
- print("sdesc: %s" % packages[p].version_hints[bv]['sdesc'], file=f)
+ bv = po.best_version
+ print("sdesc: %s" % po.version_hints[bv]['sdesc'], file=f)
- if 'ldesc' in packages[p].version_hints[bv]:
- print("ldesc: %s" % packages[p].version_hints[bv]['ldesc'], file=f)
+ if 'ldesc' in po.version_hints[bv]:
+ print("ldesc: %s" % po.version_hints[bv]['ldesc'], file=f)
# for historical reasons, category names must start with a capital
# letter
- category = ' '.join(map(upper_first_character, packages[p].version_hints[bv]['category'].split()))
+ category = ' '.join(map(upper_first_character, po.version_hints[bv]['category'].split()))
print("category: %s" % category, file=f)
# compute the union of requires for all versions
requires = set()
- for hints in packages[p].version_hints.values():
+ for hints in po.version_hints.values():
if 'requires' in hints:
requires = set.union(requires, hints['requires'].split())
# empty requires are suppressed as setup's parser can't handle that
if requires:
print("requires: %s" % ' '.join(sorted(requires)), file=f)
- if 'message' in packages[p].version_hints[bv]:
- print("message: %s" % packages[p].version_hints[bv]['message'], file=f)
+ if 'message' in po.version_hints[bv]:
+ print("message: %s" % po.version_hints[bv]['message'], file=f)
- if 'replace-versions' in packages[p].override_hints:
- print("replace-versions: %s" % packages[p].override_hints['replace-versions'], file=f)
+ if 'replace-versions' in po.override_hints:
+ print("replace-versions: %s" % po.override_hints['replace-versions'], file=f)
# make a list of version sections
#
@@ -1018,8 +1021,8 @@ def write_setup_ini(args, packages, arch):
# due to a historic bug in setup (fixed in 78e4c7d7), we keep the
# [curr] version first, to ensure that dependencies are used
# correctly.
- if 'curr' in packages[p].stability:
- version = packages[p].stability['curr']
+ if 'curr' in po.stability:
+ version = po.stability['curr']
vs.append((version, 'curr'))
# next put any other versions
@@ -1029,8 +1032,8 @@ def write_setup_ini(args, packages, arch):
# (to maintain historical behaviour, include versions which only
# exist as a source package)
#
- versions = set(packages[p].vermap.keys())
- sibling_src = p + '-src'
+ versions = set(po.vermap.keys())
+ sibling_src = pn + '-src'
if sibling_src in packages:
versions.update(packages[sibling_src].vermap.keys())
@@ -1039,8 +1042,8 @@ def write_setup_ini(args, packages, arch):
# already be done, and 'prev' and 'test' will be done later
skip = False
for level in ['curr', 'prev', 'test']:
- if level in packages[p].stability:
- if version == packages[p].stability[level]:
+ if level in po.stability:
+ if version == po.stability[level]:
skip = True
break
@@ -1048,7 +1051,7 @@ def write_setup_ini(args, packages, arch):
continue
# test versions receive the test label
- if 'test' in packages[p].version_hints.get(version, {}):
+ if 'test' in po.version_hints.get(version, {}):
level = "test"
else:
level = "prev"
@@ -1061,8 +1064,8 @@ def write_setup_ini(args, packages, arch):
# version in the final [test] section is the one selected when test
# packages are requested.
for level in ['prev', 'test']:
- if level in packages[p].stability:
- version = packages[p].stability[level]
+ if level in po.stability:
+ version = po.stability[level]
vs.append((version, level))
# write the section for each version
@@ -1073,11 +1076,11 @@ def write_setup_ini(args, packages, arch):
print("version: %s" % version, file=f)
is_empty = False
- if 'install' in packages[p].vermap.get(version, {}):
- tar_line(packages[p], 'install', version, f)
- is_empty = packages[p].tar(version, 'install').is_empty
+ if 'install' in po.vermap.get(version, {}):
+ tar_line(po, 'install', version, f)
+ is_empty = po.tar(version, 'install').is_empty
- hints = packages[p].version_hints.get(version, {})
+ hints = po.version_hints.get(version, {})
# follow external-source
if 'external-source' in hints:
@@ -1093,7 +1096,7 @@ def write_setup_ini(args, packages, arch):
tar_line(packages[s], 'source', version, f)
else:
if not (is_empty or packages[s].orig_name in past_mistakes.self_source):
- logging.warning("package '%s' version '%s' has no source in '%s'" % (p, version, packages[s].orig_name))
+ logging.warning("package '%s' version '%s' has no source in '%s'" % (pn, version, packages[s].orig_name))
# external-source should also be capable of pointing to a 'real'
# source package (if cygport could generate such a thing), in
More information about the Cygwin-apps-cvs
mailing list