From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 76583 invoked by alias); 18 Feb 2020 17:00:04 -0000 Mailing-List: contact cygwin-apps-cvs-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Post: List-Help: , Sender: cygwin-apps-cvs-owner@sourceware.org Received: (qmail 76515 invoked by uid 9795); 18 Feb 2020 17:00:03 -0000 Date: Tue, 18 Feb 2020 17:00:00 -0000 Message-ID: <20200218170003.76504.qmail@sourceware.org> From: jturney@sourceware.org To: cygwin-apps-cvs@sourceware.org Subject: [calm - Cygwin server-side packaging maintenance script] branch master, updated. 20200129-6-g7673c3a X-Git-Refname: refs/heads/master X-Git-Reftype: branch X-Git-Oldrev: ddffbe4272a7f3f2314f26b4f192e8993fa9a053 X-Git-Newrev: 7673c3a8428c5af430f441fdd5c61e868c1bef43 X-SW-Source: 2020-q1/txt/msg00016.txt https://sourceware.org/git/gitweb.cgi?p=cygwin-apps/calm.git;h=7673c3a8428c5af430f441fdd5c61e868c1bef43 commit 7673c3a8428c5af430f441fdd5c61e868c1bef43 Author: Jon Turney 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 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): # / 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