public inbox for cygwin-apps-cvs@sourceware.org
help / color / mirror / Atom feed
From: jturney@sourceware.org
To: cygwin-apps-cvs@sourceware.org
Subject: [calm - Cygwin server-side packaging maintenance script] branch master, updated. 20200129-6-g7673c3a
Date: Tue, 18 Feb 2020 17:00:00 -0000	[thread overview]
Message-ID: <20200218170003.76504.qmail@sourceware.org> (raw)




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


                 reply	other threads:[~2020-02-18 17:00 UTC|newest]

Thread overview: [no followups] expand[flat|nested]  mbox.gz  Atom feed

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=20200218170003.76504.qmail@sourceware.org \
    --to=jturney@sourceware.org \
    --cc=cygwin-apps-cvs@sourceware.org \
    /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 read-only IMAP folder(s) and NNTP newsgroup(s).