From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 58882 invoked by alias); 3 Nov 2016 12:47:10 -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 58792 invoked by uid 9795); 3 Nov 2016 12:47:09 -0000 Date: Thu, 03 Nov 2016 12:47:00 -0000 Message-ID: <20161103124709.58755.qmail@sourceware.org> From: jturney@sourceware.org To: cygwin-apps-cvs@sourceware.org Subject: [calm - Cygwin server-side packaging maintenance script] branch master, updated. 20160705-30-g062aa6f X-Git-Refname: refs/heads/master X-Git-Reftype: branch X-Git-Oldrev: 374804a7084f5ca1cab3f24f79d195055bff2243 X-Git-Newrev: 062aa6f6fa6f3e4859c940243b5c15b4db16c989 X-SW-Source: 2016-q4/txt/msg00001.txt.bz2 https://sourceware.org/git/gitweb.cgi?p=cygwin-apps/calm.git;h=062aa6f6fa6f3e4859c940243b5c15b4db16c989 commit 062aa6f6fa6f3e4859c940243b5c15b4db16c989 Author: Jon Turney Date: Wed Nov 2 14:06:47 2016 +0000 Fix merging of stability level hints Absent stability level hints are now explicitly noted, so they can be handled more correctly when merging a package. https://sourceware.org/git/gitweb.cgi?p=cygwin-apps/calm.git;h=b961780b6c3d5b28ca97a3581050c993ed57bf46 commit b961780b6c3d5b28ca97a3581050c993ed57bf46 Author: Jon Turney Date: Wed Sep 14 19:35:03 2016 +0100 Fix reporting of changed legacy hints Keep a copy of legacy hints so we can report if they change https://sourceware.org/git/gitweb.cgi?p=cygwin-apps/calm.git;h=b88b8977d0b7c0a038a868b1ace88fc4a7cdbd66 commit b88b8977d0b7c0a038a868b1ace88fc4a7cdbd66 Author: Jon Turney Date: Wed Nov 2 13:19:11 2016 +0000 Fix keep-count: implementation Diff: --- calm/package.py | 33 +++++++++++++++++++++++++++---- test/testdata/uploads/pkglist.expected | 6 ++-- 2 files changed, 31 insertions(+), 8 deletions(-) diff --git a/calm/package.py b/calm/package.py index 087e554..7861d2d 100755 --- a/calm/package.py +++ b/calm/package.py @@ -193,6 +193,13 @@ def read_package(packages, basedir, dirpath, files, strict=False): if level in hints: override_hints[level] = hints[level] + # explicitly note any absent stability level hints + for level in ['test', 'curr', 'prev']: + if level not in override_hints: + override_hints[level] = None + + # after we have migrated them to override hints, remove stability + # level hints from legacy hints for level in ['test', 'curr', 'prev']: if level in hints: del hints[level] @@ -295,6 +302,7 @@ def read_package(packages, basedir, dirpath, files, strict=False): packages[p].version_hints = version_hints packages[p].override_hints = override_hints + packages[p].legacy_hints = hints packages[p].tars = tars packages[p].hint_files = hint_files packages[p].path = relpath @@ -432,8 +440,12 @@ def validate_packages(args, packages): levels = ['test', 'curr', 'prev'] for l in levels: if l in packages[p].override_hints: - # check that version exists + # check that if a version was specified, it exists v = packages[p].override_hints[l] + + if v is None: + continue + if v not in packages[p].vermap: logging.error("package '%s' stability '%s' selects non-existent version '%s'" % (p, l, v)) error = True @@ -456,7 +468,7 @@ def validate_packages(args, packages): l = levels[0] # if current stability level has an override - if l in packages[p].override_hints: + if (l in packages[p].override_hints) and (packages[p].override_hints[l] is not None): # if we haven't reached that version yet if v != packages[p].override_hints[l]: break @@ -485,7 +497,8 @@ def validate_packages(args, packages): # stability level was overriden to a lower version for l in levels: if l in packages[p].override_hints: - packages[p].stability[l] = packages[p].override_hints[l] + if packages[p].override_hints[l] is not None: + packages[p].stability[l] = packages[p].override_hints[l] # the package must have some versions if not packages[p].stability: @@ -779,7 +792,17 @@ def merge(a, *l): pprint.pformat(a[p].version_hints[vr]).splitlines(), pprint.pformat(b[p].version_hints[vr]).splitlines())) - logging.warning("package '%s' hints changed\n%s" % (p, diff)) + logging.warning("package '%s' version '%s' hints changed\n%s" % (p, vr, diff)) + + # XXX: we should really do something complex here, like + # assign the legacy hints from b to all vr in a which didn't + # have a pvr.hint. Instead, just report if it's going to + # change and let things get sorted out later on... + if a[p].legacy_hints != b[p].legacy_hints: + diff = '\n'.join(difflib.ndiff( + pprint.pformat(a[p].legacy_hints).splitlines(), + pprint.pformat(b[p].legacy_hints).splitlines())) + logging.warning("package '%s' hints changed\n%s" % (p, diff)) # overrides from b take precedence c[p].override_hints.update(b[p].override_hints) @@ -878,7 +901,7 @@ def stale_packages(packages): # mark as fresh the highest n versions, where n is given by the # keep-count: override hint, (defaulting to DEFAULT_KEEP_COUNT) - keep_count = po.override_hints.get('keep-count', common_constants.DEFAULT_KEEP_COUNT) + keep_count = int(po.override_hints.get('keep-count', common_constants.DEFAULT_KEEP_COUNT)) for v in sorted(po.vermap.keys(), key=lambda v: SetupVersion(v), reverse=True)[0:keep_count]: mark_package_fresh(packages, pn, v) diff --git a/test/testdata/uploads/pkglist.expected b/test/testdata/uploads/pkglist.expected index f36b2a4..0e4c587 100644 --- a/test/testdata/uploads/pkglist.expected +++ b/test/testdata/uploads/pkglist.expected @@ -6,11 +6,11 @@ 'Like it’s you’re Markup Language™ Nokogiri’s tool―that ' 'Bézier."', 'category': 'Devel', - 'requires': 'cygwin'}}, {}, False), + 'requires': 'cygwin'}}, {'curr': None, 'prev': None, 'test': None}, False), 'testpackage-subpackage': Package('x86/release/testpackage/testpackage-subpackage', {'testpackage-subpackage-1.0-1.tar.bz2': Tar('aff488008bee3486e25b539fe6ccd1397bd3c5c0ba2ee2cf34af279554baa195af7493ee51d6f8510735c9a2ea54436d776a71e768165716762aec286abbbf83', 195, False)}, {'1.0-1': {'sdesc': '"A test subpackage"', 'ldesc': '"A test subpackage"', 'category': 'Devel', - 'external-source': 'testpackage'}}, {}, False), + 'external-source': 'testpackage'}}, {'curr': None, 'prev': None, 'test': None}, False), 'testpackage2-subpackage': Package('x86/release/testpackage2/testpackage2-subpackage', {'testpackage2-subpackage-1.0-1.tar.bz2': Tar('6de201dfed1d45412509c65deb34690dc2d09c6aafccfe491fd2f440f92842b9c755b61dc7bcdd4cc0c9f18cf46c2b3a1241e99c4c2a33fff5555e7b2f0b6348', 14, True)}, {'1.0-1': {'sdesc': '"A test subpackage 2"', 'ldesc': '"A test subpackage 2"', - 'category': 'Devel'}}, {}, False)} + 'category': 'Devel'}}, {'curr': None, 'prev': None, 'test': None}, False)}