This is the mail archive of the cygwin-apps-cvs mailing list for the cygwin-apps project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[calm - Cygwin server-side packaging maintenance script] branch master, updated. 20160705-58-g9f8aa81




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

commit 9f8aa81b7ddcdec5e923f8ef7aea8fdb1da43483
Author: Jon Turney <jon.turney@dronecode.org.uk>
Date:   Sat Apr 8 19:50:43 2017 +0100

    Mark empty packages which have no dependencies and aren't obsolete as source-only
    
    We've always thought this wasn't right, since installing these packages does
    nothing, and letting these appear in the package list just causes confusion,
    but didn't do this initially for upset compatibility.
    
    Fix tests which used empty install packages


Diff:
---
 TODO                                               |    1 -
 calm/package.py                                    |   27 ++++++++++++++-----
 test/test_calm.py                                  |    2 +-
 .../testdata/htdocs.expected/x86/arc/arc-4.32.7-10 |    2 +
 .../htdocs.expected/x86/arc/arc-4.32.7-10-src      |    2 +
 .../x86/testpackage/testpackage-0.1-1              |    2 +
 .../x86/testpackage/testpackage-0.1-1-src          |   13 +++++++++
 test/testdata/inifile/setup.ini.expected           |   14 ++++++----
 test/testdata/process_arch/setup.ini.expected      |    8 +++---
 test/testdata/process_arch/vault.expected          |    2 +-
 .../x86/release/arc/arc-4.32.7-10-src.tar.bz2      |  Bin 14 -> 782 bytes
 .../relarea/x86/release/arc/arc-4.32.7-10.tar.bz2  |  Bin 14 -> 782 bytes
 .../testpackage/testpackage-0.1-1-src.tar.bz2      |  Bin 0 -> 782 bytes
 .../release/testpackage/testpackage-0.1-1.tar.bz2  |  Bin 0 -> 782 bytes
 14 files changed, 53 insertions(+), 20 deletions(-)

diff --git a/TODO b/TODO
index 991af0d..aeb9cd4 100644
--- a/TODO
+++ b/TODO
@@ -1,5 +1,4 @@
 * more than 2 versions possible
-* automatically suppress 'empty source' packages with no deps from setup.ini ?
 * run more often, option to not do anything if no uploads (to avoid reading the release area if we don't need to), lockfile to avoid colliding runs
 * use irkerd to report when calm failed due to an error?
 * upload a hash at the same time as package, and pass that through to setup.ini
diff --git a/calm/package.py b/calm/package.py
index 8ee68bc..2891e0d 100755
--- a/calm/package.py
+++ b/calm/package.py
@@ -383,10 +383,12 @@ def validate_packages(args, packages):
 
     for p in sorted(packages.keys()):
         logging.log(5, "validating package '%s'" % (p))
+        has_requires = False
 
         for (v, hints) in packages[p].version_hints.items():
             if 'requires' in hints:
                 for r in hints['requires'].split():
+                    has_requires = True
 
                     # a package should not appear in it's own requires
                     if r == p:
@@ -416,6 +418,7 @@ def validate_packages(args, packages):
         packages[p].vermap = defaultdict(defaultdict)
         is_empty = {}
         has_install = False
+        has_nonempty_install = False
 
         for t in packages[p].tars:
             # categorize each tarfile as either 'source' or 'install'
@@ -425,6 +428,8 @@ def validate_packages(args, packages):
                 category = 'install'
                 has_install = True
                 is_empty[t] = packages[p].tars[t].is_empty
+                if not is_empty[t]:
+                    has_nonempty_install = True
 
             # extract just the version part from tar filename
             v = re.sub(r'^' + re.escape(p) + '-', '', t)
@@ -440,20 +445,28 @@ def validate_packages(args, packages):
             # store tarfile corresponding to this version and category
             packages[p].vermap[v][category] = t
 
+        obsolete = any(['_obsolete' in packages[p].version_hints[vr].get('category', '') for vr in packages[p].version_hints])
+
         # if the package has no install tarfiles (i.e. is source only), make
         # sure it is marked as 'skip' (which really means 'source-only' at the
         # moment)
         #
+        # if the package has no non-empty install tarfiles, and no dependencies
+        # installing it will do nothing (and making it appear in the package
+        # list is just confusing), so if it's not obsolete, mark it as 'skip'
+        #
         # (this needs to take place after uploads have been merged into the
         # package set, so that an upload containing just a replacement
         # setup.hint is not considered a source-only package)
         #
-        # XXX: the check should probably be for any non-empty install files, or
-        # (any install files or any dependencies), but that differs from what
-        # upset does
-        if not has_install and not packages[p].skip:
-            packages[p].skip = True
-            logging.info("package '%s' appears to be source-only as it has no install tarfiles, marking as 'skip'" % (p))
+        if not packages[p].skip:
+            if not has_install:
+                packages[p].skip = True
+                logging.info("package '%s' appears to be source-only as it has no install tarfiles, marking as 'skip'" % (p))
+
+            elif not has_nonempty_install and not has_requires and not obsolete:
+                packages[p].skip = True
+                logging.info("package '%s' appears to be source-only as it has no non-empty install tarfiles and no dependencies, marking as 'skip'" % (p))
 
         # verify the versions specified for stability level exist
         levels = ['test', 'curr', 'prev']
@@ -551,7 +564,7 @@ def validate_packages(args, packages):
         # If, for every stability level, the install tarball is empty and there
         # is no source tarball, we should probably be marked obsolete
         if not packages[p].skip:
-            if not any(['_obsolete' in packages[p].version_hints[vr]['category'] for vr in packages[p].version_hints]):
+            if not obsolete:
                 has_something = False
 
                 for l in ['test', 'curr', 'prev']:
diff --git a/test/test_calm.py b/test/test_calm.py
index b0e725d..7ca99b0 100755
--- a/test/test_calm.py
+++ b/test/test_calm.py
@@ -207,7 +207,7 @@ class CalmTest(unittest.TestCase):
         compare_with_expected_file(self, 'testdata/uploads', scan_result.to_relarea, 'move')
         self.assertCountEqual(scan_result.to_vault, {'x86/release/testpackage': ['x86/release/testpackage/testpackage-0.1-1.tar.bz2']})
         self.assertCountEqual(scan_result.remove_always, [f for (f, t) in ready_fns])
-        self.assertEqual(scan_result.remove_success, ['testdata/homes/Blooey McFooey/x86/release/testpackage/-testpackage-0.1-1.tar.bz2'])
+        self.assertEqual(scan_result.remove_success, ['testdata/homes/Blooey McFooey/x86/release/testpackage/-testpackage-0.1-1-src.tar.bz2', 'testdata/homes/Blooey McFooey/x86/release/testpackage/-testpackage-0.1-1.tar.bz2'])
         compare_with_expected_file(self, 'testdata/uploads', scan_result.packages, 'pkglist')
 
     def test_package_set(self):
diff --git a/test/testdata/homes/Blooey McFooey/x86/release/testpackage/-testpackage-0.1-1-src.tar.bz2 b/test/testdata/homes/Blooey McFooey/x86/release/testpackage/-testpackage-0.1-1-src.tar.bz2
new file mode 100644
index 0000000..e69de29
diff --git a/test/testdata/htdocs.expected/x86/arc/arc-4.32.7-10 b/test/testdata/htdocs.expected/x86/arc/arc-4.32.7-10
index d0f8d25..b9d474e 100644
--- a/test/testdata/htdocs.expected/x86/arc/arc-4.32.7-10
+++ b/test/testdata/htdocs.expected/x86/arc/arc-4.32.7-10
@@ -6,6 +6,8 @@
 <body>
 <h1>arc: The ARC archive utility</h1>
 <pre>
+    2016-11-24 22:47        1786 cc1BOI4Z
+    2016-11-24 18:14        1786 ccbdRcNC
 </pre>
 </body>
 </html>
diff --git a/test/testdata/htdocs.expected/x86/arc/arc-4.32.7-10-src b/test/testdata/htdocs.expected/x86/arc/arc-4.32.7-10-src
index f2e9727..ed4f8d3 100644
--- a/test/testdata/htdocs.expected/x86/arc/arc-4.32.7-10-src
+++ b/test/testdata/htdocs.expected/x86/arc/arc-4.32.7-10-src
@@ -6,6 +6,8 @@
 <body>
 <h1>arc: The ARC archive utility (source code)</h1>
 <pre>
+    2016-11-24 22:47        1786 cc1BOI4Z
+    2016-11-24 18:14        1786 ccbdRcNC
 </pre>
 </body>
 </html>
diff --git a/test/testdata/htdocs.expected/x86/testpackage/testpackage-0.1-1 b/test/testdata/htdocs.expected/x86/testpackage/testpackage-0.1-1
index eb5c029..430f56a 100644
--- a/test/testdata/htdocs.expected/x86/testpackage/testpackage-0.1-1
+++ b/test/testdata/htdocs.expected/x86/testpackage/testpackage-0.1-1
@@ -6,6 +6,8 @@
 <body>
 <h1>testpackage: A test package (stuff &amp; other stuff)</h1>
 <pre>
+    2016-11-24 22:47        1786 cc1BOI4Z
+    2016-11-24 18:14        1786 ccbdRcNC
 </pre>
 </body>
 </html>
diff --git a/test/testdata/htdocs.expected/x86/testpackage/testpackage-0.1-1-src b/test/testdata/htdocs.expected/x86/testpackage/testpackage-0.1-1-src
new file mode 100644
index 0000000..e661c57
--- /dev/null
+++ b/test/testdata/htdocs.expected/x86/testpackage/testpackage-0.1-1-src
@@ -0,0 +1,13 @@
+<!DOCTYPE html>
+<html>
+<head>
+<title>testpackage: A test package (stuff &amp; other stuff) (source code)</title>
+</head>
+<body>
+<h1>testpackage: A test package (stuff &amp; other stuff) (source code)</h1>
+<pre>
+    2016-11-24 22:47        1786 cc1BOI4Z
+    2016-11-24 18:14        1786 ccbdRcNC
+</pre>
+</body>
+</html>
diff --git a/test/testdata/inifile/setup.ini.expected b/test/testdata/inifile/setup.ini.expected
index 97ddfd0..9300c70 100644
--- a/test/testdata/inifile/setup.ini.expected
+++ b/test/testdata/inifile/setup.ini.expected
@@ -17,10 +17,10 @@
  'the best of packing, squeezing, or crunching is used."\n'
  'category: Archive\n'
  'version: 4.32.7-10\n'
- 'install: x86/release/arc/arc-4.32.7-10.tar.bz2 14 '
- '6de201dfed1d45412509c65deb34690dc2d09c6aafccfe491fd2f440f92842b9c755b61dc7bcdd4cc0c9f18cf46c2b3a1241e99c4c2a33fff5555e7b2f0b6348\n'
- 'source: x86/release/arc/arc-4.32.7-10-src.tar.bz2 14 '
- '6de201dfed1d45412509c65deb34690dc2d09c6aafccfe491fd2f440f92842b9c755b61dc7bcdd4cc0c9f18cf46c2b3a1241e99c4c2a33fff5555e7b2f0b6348\n'
+ 'install: x86/release/arc/arc-4.32.7-10.tar.bz2 782 '
+ '76e134c85d92f80689cc6f688ff0593f142a963a40ec0c2d9ddcf1dcbdc5ae924677e40b71ac2380f09ae174ba94cc6e1117cdf3282b2ae18a51b5392bafd8c3\n'
+ 'source: x86/release/arc/arc-4.32.7-10-src.tar.bz2 782 '
+ '76e134c85d92f80689cc6f688ff0593f142a963a40ec0c2d9ddcf1dcbdc5ae924677e40b71ac2380f09ae174ba94cc6e1117cdf3282b2ae18a51b5392bafd8c3\n'
  '\n'
  '@ base-cygwin\n'
  'sdesc: "Initial base installation helper script"\n'
@@ -271,5 +271,7 @@
  'ldesc: "A test package (stuff & other stuff)"\n'
  'category: Devel\n'
  'version: 0.1-1\n'
- 'install: x86/release/testpackage/testpackage-0.1-1.tar.bz2 0 '
- 'cf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e\n',)
+ 'install: x86/release/testpackage/testpackage-0.1-1.tar.bz2 782 '
+ '76e134c85d92f80689cc6f688ff0593f142a963a40ec0c2d9ddcf1dcbdc5ae924677e40b71ac2380f09ae174ba94cc6e1117cdf3282b2ae18a51b5392bafd8c3\n'
+ 'source: x86/release/testpackage/testpackage-0.1-1-src.tar.bz2 782 '
+ '76e134c85d92f80689cc6f688ff0593f142a963a40ec0c2d9ddcf1dcbdc5ae924677e40b71ac2380f09ae174ba94cc6e1117cdf3282b2ae18a51b5392bafd8c3\n',)
diff --git a/test/testdata/process_arch/setup.ini.expected b/test/testdata/process_arch/setup.ini.expected
index d959734..24bd945 100644
--- a/test/testdata/process_arch/setup.ini.expected
+++ b/test/testdata/process_arch/setup.ini.expected
@@ -17,10 +17,10 @@
  'the best of packing, squeezing, or crunching is used."\n'
  'category: Archive\n'
  'version: 4.32.7-10\n'
- 'install: x86/release/arc/arc-4.32.7-10.tar.bz2 14 '
- '6de201dfed1d45412509c65deb34690dc2d09c6aafccfe491fd2f440f92842b9c755b61dc7bcdd4cc0c9f18cf46c2b3a1241e99c4c2a33fff5555e7b2f0b6348\n'
- 'source: x86/release/arc/arc-4.32.7-10-src.tar.bz2 14 '
- '6de201dfed1d45412509c65deb34690dc2d09c6aafccfe491fd2f440f92842b9c755b61dc7bcdd4cc0c9f18cf46c2b3a1241e99c4c2a33fff5555e7b2f0b6348\n'
+ 'install: x86/release/arc/arc-4.32.7-10.tar.bz2 782 '
+ '76e134c85d92f80689cc6f688ff0593f142a963a40ec0c2d9ddcf1dcbdc5ae924677e40b71ac2380f09ae174ba94cc6e1117cdf3282b2ae18a51b5392bafd8c3\n'
+ 'source: x86/release/arc/arc-4.32.7-10-src.tar.bz2 782 '
+ '76e134c85d92f80689cc6f688ff0593f142a963a40ec0c2d9ddcf1dcbdc5ae924677e40b71ac2380f09ae174ba94cc6e1117cdf3282b2ae18a51b5392bafd8c3\n'
  '\n'
  '@ base-cygwin\n'
  'sdesc: "Initial base installation helper script"\n'
diff --git a/test/testdata/process_arch/vault.expected b/test/testdata/process_arch/vault.expected
index cf4e9f0..d3cb74a 100644
--- a/test/testdata/process_arch/vault.expected
+++ b/test/testdata/process_arch/vault.expected
@@ -7,4 +7,4 @@
                               'staleversion-242-0.tar.xz',
                               'staleversion-251-0-src.tar.xz',
                               'staleversion-251-0.tar.xz'],
- 'x86/release/testpackage': ['testpackage-0.1-1.tar.bz2']}
+ 'x86/release/testpackage': ['testpackage-0.1-1-src.tar.bz2', 'testpackage-0.1-1.tar.bz2']}
diff --git a/test/testdata/relarea/x86/release/arc/arc-4.32.7-10-src.tar.bz2 b/test/testdata/relarea/x86/release/arc/arc-4.32.7-10-src.tar.bz2
index b56f3b9..1021e0e 100644
Binary files a/test/testdata/relarea/x86/release/arc/arc-4.32.7-10-src.tar.bz2 and b/test/testdata/relarea/x86/release/arc/arc-4.32.7-10-src.tar.bz2 differ
diff --git a/test/testdata/relarea/x86/release/arc/arc-4.32.7-10.tar.bz2 b/test/testdata/relarea/x86/release/arc/arc-4.32.7-10.tar.bz2
index b56f3b9..1021e0e 100644
Binary files a/test/testdata/relarea/x86/release/arc/arc-4.32.7-10.tar.bz2 and b/test/testdata/relarea/x86/release/arc/arc-4.32.7-10.tar.bz2 differ
diff --git a/test/testdata/relarea/x86/release/testpackage/testpackage-0.1-1-src.tar.bz2 b/test/testdata/relarea/x86/release/testpackage/testpackage-0.1-1-src.tar.bz2
new file mode 100644
index 0000000..1021e0e
Binary files /dev/null and b/test/testdata/relarea/x86/release/testpackage/testpackage-0.1-1-src.tar.bz2 differ
diff --git a/test/testdata/relarea/x86/release/testpackage/testpackage-0.1-1.tar.bz2 b/test/testdata/relarea/x86/release/testpackage/testpackage-0.1-1.tar.bz2
index e69de29..1021e0e 100644
Binary files a/test/testdata/relarea/x86/release/testpackage/testpackage-0.1-1.tar.bz2 and b/test/testdata/relarea/x86/release/testpackage/testpackage-0.1-1.tar.bz2 differ


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]