public inbox for cygwin-apps-cvs@sourceware.org
help / color / mirror / Atom feed
* [calm - Cygwin server-side packaging maintenance script] branch master, updated. 20180131-12-gabb1c0d
@ 2018-03-07 14:26 jturney
  0 siblings, 0 replies; only message in thread
From: jturney @ 2018-03-07 14:26 UTC (permalink / raw)
  To: cygwin-apps-cvs




https://sourceware.org/git/gitweb.cgi?p=cygwin-apps/calm.git;h=abb1c0d1b0e9c1e7d2e53bb32cf17848c232c523

commit abb1c0d1b0e9c1e7d2e53bb32cf17848c232c523
Author: Jon Turney <jon.turney@dronecode.org.uk>
Date:   Mon Mar 5 16:33:40 2018 +0000

    Make test_scan_uploads repeatable
    
    setup.hint files get renamed at upload since 828b91be, so use a copy of
    testdata/homes to make the test repeatable.

https://sourceware.org/git/gitweb.cgi?p=cygwin-apps/calm.git;h=37099fb8b4007e7d10a6eded2bb2e849500f9b3f

commit 37099fb8b4007e7d10a6eded2bb2e849500f9b3f
Author: Jon Turney <jon.turney@dronecode.org.uk>
Date:   Sun Mar 4 22:57:50 2018 +0000

    Warn if replace-versions: lists a version which is also offered for install

https://sourceware.org/git/gitweb.cgi?p=cygwin-apps/calm.git;h=0c45049b6635216921348e00d7e88d782fe6868c

commit 0c45049b6635216921348e00d7e88d782fe6868c
Author: Jon Turney <jon.turney@dronecode.org.uk>
Date:   Thu Mar 1 18:03:30 2018 +0000

    Improve reasons for not migrating reported by hint-migrate


Diff:
---
 calm/hint-migrate.py |   21 ++++++++++++++++++---
 calm/package.py      |   15 ++++++++++-----
 test/test_calm.py    |   10 ++++++++++
 3 files changed, 38 insertions(+), 8 deletions(-)

diff --git a/calm/hint-migrate.py b/calm/hint-migrate.py
index 4d8156e..858e68b 100644
--- a/calm/hint-migrate.py
+++ b/calm/hint-migrate.py
@@ -50,6 +50,7 @@ def hint_migrate(args):
             setup_hint_fn = os.path.join(dirpath, 'setup.hint')
 
             migrate = set()
+            vr = set()
             for f in files:
                 match = re.match(r'^(.*?)(-src|)\.tar\.(bz2|gz|lzma|xz)$', f)
 
@@ -58,6 +59,7 @@ def hint_migrate(args):
                     continue
 
                 pvr = match.group(1)
+                vr.add(pvr)
 
                 # pvr.hint already exists?
                 if os.path.exists(os.path.join(dirpath, pvr + '.hint')):
@@ -67,13 +69,26 @@ def hint_migrate(args):
 
             # nothing to migrate
             if not migrate:
+                # that's ok if all vr already have a pvr.hint, but if we didn't
+                # find any vr, something is wrong
+                if not vr:
+                    print("can't migrate %s as it has no versions" % (setup_hint_fn))
                 continue
 
-            # does the setup.hint parse as a pvr.hint
-            # (i.e. does it not contain version keys)
+            # does the setup.hint parse as a pvr.hint?
             hints = hint.hint_file_parse(setup_hint_fn, hint.pvr)
             if 'parse-errors' in hints:
-                print("can't migrate %s as it contains version keys" % (setup_hint_fn))
+                reason = "is invalid as a pvr.hint"
+
+                # specifically mention if it doesn't parse as a pvr.hint because
+                # it contains version keys
+                for e in hints['parse-errors']:
+                    if (e.startswith('unknown key prev') or
+                        e.startswith('unknown key curr') or
+                        e.startswith('test has non-empty value')):
+                        reason = "contains version keys"
+
+                print("can't migrate %s as it %s" % (setup_hint_fn, reason))
                 continue
 
             for pvr in migrate:
diff --git a/calm/package.py b/calm/package.py
index e54ed25..85d5368 100755
--- a/calm/package.py
+++ b/calm/package.py
@@ -647,15 +647,20 @@ def validate_packages(args, packages):
             packages[p].best_version = None
             error = True
 
-        # warn if replace-versions lists a version which is less than the
-        # current version (which is pointless as the current version will
-        # replace it anyhow)
         if 'replace-versions' in packages[p].override_hints:
-            if packages[p].best_version:
-                for rv in packages[p].override_hints['replace-versions'].split():
+            for rv in packages[p].override_hints['replace-versions'].split():
+                # warn if replace-versions lists a version which is less than
+                # the current version (which is pointless as the current version
+                # will replace it anyhow)
+                if packages[p].best_version:
                     if SetupVersion(rv) <= SetupVersion(packages[p].best_version):
                         logging.warning("package '%s' replace-versions: uselessly lists version '%s', which is <= current version" % (p, rv))
 
+                # warn if replace-versions lists a version which is also
+                # available to install (as this doesn't work as expected)
+                if rv in packages[p].version_hints:
+                    logging.warning("package '%s' replace-versions: lists version '%s', which is also available to install" % (p, rv))
+
         # If the install tarball is empty and there is no source tarball, we
         # should probably be marked obsolete
         if not packages[p].skip:
diff --git a/test/test_calm.py b/test/test_calm.py
index 35f0e24..f514b7d 100755
--- a/test/test_calm.py
+++ b/test/test_calm.py
@@ -290,11 +290,18 @@ class CalmTest(unittest.TestCase):
     def test_scan_uploads(self):
         self.maxDiff = None
 
+        test_root = tempfile.mktemp()
+        logging.info('test_root = %s', test_root)
+
         args = types.SimpleNamespace()
         setattr(args, 'arch', 'x86')
         setattr(args, 'rel_area', 'testdata/relarea')
         setattr(args, 'dryrun', False)
 
+        shutil.copytree('testdata/homes', os.path.join(test_root, 'testdata/homes'))
+        oldcwd = os.getcwd()
+        os.chdir(test_root)
+
         pkglist = ['after-ready', 'not-ready', 'testpackage', 'testpackage2']
 
         mlist = {}
@@ -311,6 +318,9 @@ class CalmTest(unittest.TestCase):
 
         scan_result = uploads.scan(m, pkglist + ['not-on-maintainer-list'], args.arch, args)
 
+        os.chdir(oldcwd)
+        shutil.rmtree(test_root)
+
         self.assertEqual(scan_result.error, False)
         compare_with_expected_file(self, 'testdata/uploads', dict(scan_result.to_relarea), 'move')
         self.assertCountEqual(scan_result.to_vault, {'x86/release/testpackage': ['x86/release/testpackage/testpackage-0.1-1.tar.bz2']})


^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2018-03-07 14:26 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-03-07 14:26 [calm - Cygwin server-side packaging maintenance script] branch master, updated. 20180131-12-gabb1c0d jturney

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).