public inbox for cygwin-apps-cvs@sourceware.org
help / color / mirror / Atom feed
* [calm - Cygwin server-side packaging maintenance script] branch master, updated. 20210408-22-g88ddf1e
@ 2021-05-29 15:07 Jon TURNEY
  0 siblings, 0 replies; only message in thread
From: Jon TURNEY @ 2021-05-29 15:07 UTC (permalink / raw)
  To: cygwin-apps-cvs




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

commit 88ddf1ea8212fcffb8a9b12f7645b16ea446f97c
Author: Jon Turney <jon.turney@dronecode.org.uk>
Date:   Sat May 29 14:35:11 2021 +0100

    Make 'homepage:' mandatory in new -src.hint uploads
    
    Also update test data appropriately

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

commit aea57c2823ad55b2c34b6d0cf8d8548f7965e679
Author: Jon Turney <jon.turney@dronecode.org.uk>
Date:   Tue May 25 22:47:01 2021 +0100

    Add highlander rule to generated gitolite configuration

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

commit a19693172eaa93311b0a8aada3667d8fa8d4d2d7
Author: Jon Turney <jon.turney@dronecode.org.uk>
Date:   Tue May 25 13:08:35 2021 +0100

    Only log about no-for-output once
    
    We want this to be shown for an upload introducing a new package like
    this, but not every time for existing packages.
    
    Future work: move this so it runs as part of post-upload package
    checking, not on every run.


Diff:
---
 calm/hint.py                                          |   8 ++++++--
 calm/mkgitoliteconf.py                                |   2 ++
 calm/package.py                                       |  17 ++++++++++-------
 .../perl-Net-SMTP-SSL-1.03-2-src.tar.xz               | Bin 2752 -> 2792 bytes
 .../release/per-version/per-version-5.0-1-src.tar.xz  | Bin 228 -> 296 bytes
 .../testpackage-zstd/testpackage-zstd-1.0-1-src.hint  |   1 +
 test/testdata/process_arch/homedir.expected           |   4 ++--
 test/testdata/process_arch/packages.json.expected     |   1 +
 test/testdata/process_arch/setup.ini.expected         |   8 ++++----
 test/testdata/uploads/pkglist.expected                |   1 +
 10 files changed, 27 insertions(+), 15 deletions(-)

diff --git a/calm/hint.py b/calm/hint.py
index 6cabea4..9deb2f0 100755
--- a/calm/hint.py
+++ b/calm/hint.py
@@ -192,7 +192,7 @@ def split_trim_sort_join(hint, splitchar, joinchar=None):
 
 
 # parse the file |fn| as a .hint file of kind |kind|
-def hint_file_parse(fn, kind):
+def hint_file_parse(fn, kind, strict=False):
     hints = OrderedDict()
     errors = []
     warnings = []
@@ -289,9 +289,13 @@ def hint_file_parse(fn, kind):
                 errors.append("hint only contains skip: key, please update to cygport >= 0.22.0")
 
             # for the pvr kind, 'category' and 'sdesc' must be present
-            # XXX: genini also requires 'requires' but that seems wrong
+            # (genini also requires 'requires' but that seems wrong)
+            # for the spvr kind, 'homepage' must be present for new packages
             if (kind == pvr) or (kind == spvr):
                 mandatory = ['category', 'sdesc']
+                if (kind == spvr) and strict:
+                    mandatory.append('homepage')
+
                 for k in mandatory:
                     if k not in hints:
                         errors.append("required key '%s' missing" % (k))
diff --git a/calm/mkgitoliteconf.py b/calm/mkgitoliteconf.py
index 4082be6..38c042d 100755
--- a/calm/mkgitoliteconf.py
+++ b/calm/mkgitoliteconf.py
@@ -82,6 +82,8 @@ def do_main(args):
     print('    config uploadpack.allowReachableSHA1InWant = true')
     print('    - VREF/MAX_NEWBIN_SIZE/1024 = @all')
     print('# this rejects binary files over the size limit, text files of any size are still permiited')
+    print('    - VREF/HIGHLANDER/cygport = @all')
+    print('# this checks for trees which contain more than one .cygport file')
     print('')
 
     # for each package
diff --git a/calm/package.py b/calm/package.py
index 75dfc4c..d253afb 100755
--- a/calm/package.py
+++ b/calm/package.py
@@ -136,8 +136,8 @@ def sha512_file(fn, block_size=256 * 128):
 
 
 # helper function to read hints
-def read_hints(p, fn, kind):
-    hints = hint.hint_file_parse(fn, kind)
+def read_hints(p, fn, kind, strict=False):
+    hints = hint.hint_file_parse(fn, kind, strict)
 
     if 'parse-errors' in hints:
         for l in hints['parse-errors']:
@@ -247,7 +247,7 @@ def read_package_dir(packages, basedir, dirpath, files, remove=None, upload=Fals
     for kind in Kind:
         # only create a package if there's archives for it to contain
         if fl[kind]:
-            result = read_one_package(packages, p, relpath, dirpath, fl[kind] + fl['all'], remove, kind) or result
+            result = read_one_package(packages, p, relpath, dirpath, fl[kind] + fl['all'], remove, kind, upload) or result
 
     # warn about unexpected files, including tarfiles which don't match the
     # package name
@@ -261,7 +261,7 @@ def read_package_dir(packages, basedir, dirpath, files, remove=None, upload=Fals
 #
 # read a single package
 #
-def read_one_package(packages, p, relpath, dirpath, files, remove, kind):
+def read_one_package(packages, p, relpath, dirpath, files, remove, kind, strict):
     warnings = False
 
     if not re.match(r'^[\w\-._+]*$', p):
@@ -390,7 +390,7 @@ def read_one_package(packages, p, relpath, dirpath, files, remove, kind):
         hint_fn = '%s-%s%s.hint' % (p, vr, '-src' if kind == Kind.source else '')
         if hint_fn in files:
             # is there a PVR.hint file?
-            pvr_hint = read_hints(p, os.path.join(dirpath, hint_fn), hint.pvr if kind == Kind.binary else hint.spvr)
+            pvr_hint = read_hints(p, os.path.join(dirpath, hint_fn), hint.pvr if kind == Kind.binary else hint.spvr, strict)
             if not pvr_hint:
                 logging.error("error parsing %s" % (os.path.join(dirpath, hint_fn)))
                 return True
@@ -594,8 +594,11 @@ def validate_packages(args, packages):
         # 'not_for_output'
         if packages[p].kind == Kind.binary:
             if not has_nonempty_install and not has_requires and not obsolete:
-                packages[p].not_for_output = True
-                logging.info("package '%s' has no non-empty install tarfiles and no dependencies, marking as 'not_for_output'" % (p))
+                if not packages[p].not_for_output:
+                    packages[p].not_for_output = True
+                    logging.info("package '%s' has no non-empty install tarfiles and no dependencies, marking as 'not for output'" % (p))
+            else:
+                packages[p].not_for_output = False
 
         levels = ['test', 'curr', 'prev']
 
diff --git a/test/testdata/homes/Blooey McFooey/noarch/release/perl-Net-SMTP-SSL/perl-Net-SMTP-SSL-1.03-2-src.tar.xz b/test/testdata/homes/Blooey McFooey/noarch/release/perl-Net-SMTP-SSL/perl-Net-SMTP-SSL-1.03-2-src.tar.xz
index 9e7f93d..fb7a692 100644
Binary files a/test/testdata/homes/Blooey McFooey/noarch/release/perl-Net-SMTP-SSL/perl-Net-SMTP-SSL-1.03-2-src.tar.xz and b/test/testdata/homes/Blooey McFooey/noarch/release/perl-Net-SMTP-SSL/perl-Net-SMTP-SSL-1.03-2-src.tar.xz differ
diff --git a/test/testdata/homes/Blooey McFooey/x86/release/per-version/per-version-5.0-1-src.tar.xz b/test/testdata/homes/Blooey McFooey/x86/release/per-version/per-version-5.0-1-src.tar.xz
index 0e6f1e8..7bb8552 100644
Binary files a/test/testdata/homes/Blooey McFooey/x86/release/per-version/per-version-5.0-1-src.tar.xz and b/test/testdata/homes/Blooey McFooey/x86/release/per-version/per-version-5.0-1-src.tar.xz differ
diff --git a/test/testdata/homes/Blooey McFooey/x86/release/testpackage-zstd/testpackage-zstd-1.0-1-src.hint b/test/testdata/homes/Blooey McFooey/x86/release/testpackage-zstd/testpackage-zstd-1.0-1-src.hint
index 386cdb9..6b9d514 100644
--- a/test/testdata/homes/Blooey McFooey/x86/release/testpackage-zstd/testpackage-zstd-1.0-1-src.hint	
+++ b/test/testdata/homes/Blooey McFooey/x86/release/testpackage-zstd/testpackage-zstd-1.0-1-src.hint	
@@ -2,5 +2,6 @@ category: Base
 build-depends: cygport 
 sdesc: "test package (zstd compressed)"
 ldesc: "test package (zstd compressed)"
+homepage: http://zstd.testpkg.invalid
 skip:
 
diff --git a/test/testdata/process_arch/homedir.expected b/test/testdata/process_arch/homedir.expected
index 7c07d4f..5804575 100644
--- a/test/testdata/process_arch/homedir.expected
+++ b/test/testdata/process_arch/homedir.expected
@@ -2,7 +2,7 @@
  'Blooey McFooey': ['!reminder-timestamp'],
  'Blooey McFooey/noarch': [],
  'Blooey McFooey/noarch/release': [],
- 'Blooey McFooey/noarch/release/perl-Net-SMTP-SSL': [],
+ 'Blooey McFooey/noarch/release/perl-Net-SMTP-SSL': ['perl-Net-SMTP-SSL-1.03-2-src.hint.bak'],
  'Blooey McFooey/x86': [],
  'Blooey McFooey/x86/release': [],
  'Blooey McFooey/x86/release/after-ready': ['after-ready-1.0-1.tar.bz2', 'setup.hint'],
@@ -10,7 +10,7 @@
  'Blooey McFooey/x86/release/not-on-maintainer-list': ['not-on-maintainer-list-1.0-1.tar.bz2', 'setup.hint'],
  'Blooey McFooey/x86/release/not-on-package-list': ['not-on-package-list-1.0-1.tar.bz2', 'setup.hint'],
  'Blooey McFooey/x86/release/not-ready': ['-not-ready-0.9-1.tar.bz2', 'not-ready-1.0-1.tar.bz2', 'setup.hint'],
- 'Blooey McFooey/x86/release/per-version': [],
+ 'Blooey McFooey/x86/release/per-version': ['per-version-5.0-1-src.hint.bak'],
  'Blooey McFooey/x86/release/per-version-replacement-hint-only': [],
  'Blooey McFooey/x86/release/testpackage': ['testpackage-1.0-1-src.hint.bak'],
  'Blooey McFooey/x86/release/testpackage-zstd': ['testpackage-zstd-1.0-1-src.hint',
diff --git a/test/testdata/process_arch/packages.json.expected b/test/testdata/process_arch/packages.json.expected
index 05e4168..512fcf2 100644
--- a/test/testdata/process_arch/packages.json.expected
+++ b/test/testdata/process_arch/packages.json.expected
@@ -266,6 +266,7 @@
  '                "x86",\n'
  '                "x86_64"\n'
  '            ],\n'
+ '            "homepage": "https://metacpan.org/release/RJBS/Net-SMTP-SSL-1.04",\n'
  '            "maintainers": [\n'
  '                "Blooey McFooey",\n'
  '                "Yaakov Selkowitz"\n'
diff --git a/test/testdata/process_arch/setup.ini.expected b/test/testdata/process_arch/setup.ini.expected
index 6705bfb..d97f1a3 100644
--- a/test/testdata/process_arch/setup.ini.expected
+++ b/test/testdata/process_arch/setup.ini.expected
@@ -252,8 +252,8 @@
  'version: 5.0-1\n'
  'install: x86/release/per-version/per-version-5.0-1.tar.xz 228 '
  'e675b0ac4bc2c3e1c4971bc56d77b0cd53a9bdf5632873a235d7582e29dfd3e8a7bb04b28f6cdee3e6b3d14c25ed39392538e3f628a9bfda6c905646ebc3c225\n'
- 'source: x86/release/per-version/per-version-5.0-1-src.tar.xz 228 '
- 'e675b0ac4bc2c3e1c4971bc56d77b0cd53a9bdf5632873a235d7582e29dfd3e8a7bb04b28f6cdee3e6b3d14c25ed39392538e3f628a9bfda6c905646ebc3c225\n'
+ 'source: x86/release/per-version/per-version-5.0-1-src.tar.xz 296 '
+ '3937b5bedff65c8eaee1705661ca2d1402c5af417b258f0d87adcc377b815024a559b591651adc00d069454582183512c234ce915276bdf7c276efd6a9bdf354\n'
  'depends2: base-cygwin\n'
  '\n'
  '@ per-version-replacement-hint-only\n'
@@ -276,8 +276,8 @@
  'version: 1.03-2\n'
  'install: noarch/release/perl-Net-SMTP-SSL/perl-Net-SMTP-SSL-1.03-2.tar.xz 3180 '
  'aac6428f56fed431da1430242a327f36f1ec1ca6106366acb6752dd87f1b9adb87767709be9279b2f9435d16cee003f119a5ed4519c7365c8411404555618e66\n'
- 'source: noarch/release/perl-Net-SMTP-SSL/perl-Net-SMTP-SSL-1.03-2-src.tar.xz 2752 '
- '4de528554acb0b63f2a964bc8a0421118f96ce05cb4c9d111983aaea1a4a93025b31627fd66875fa09c2dfaecc11a89f2a294bdd3c77055bfaa93a27fdfc1f07\n'
+ 'source: noarch/release/perl-Net-SMTP-SSL/perl-Net-SMTP-SSL-1.03-2-src.tar.xz 2792 '
+ '2c6e4f22eecef8f5e664898745d7957da0399cd6e9f1b900c0bdf39bed8404ed90aca60cc4c8ee69a38d28e302c39bcdbb440c8c972bb46a90300f33a031e800\n'
  '[prev]\n'
  'version: 1.02-1\n'
  'install: noarch/release/perl-Net-SMTP-SSL/perl-Net-SMTP-SSL-1.02-1.tar.xz 3180 '
diff --git a/test/testdata/uploads/pkglist.expected b/test/testdata/uploads/pkglist.expected
index fb3d59d..8312127 100644
--- a/test/testdata/uploads/pkglist.expected
+++ b/test/testdata/uploads/pkglist.expected
@@ -28,6 +28,7 @@
            'build-depends': 'cygport',
            'sdesc': '"test package (zstd compressed)"',
            'ldesc': '"test package (zstd compressed)"',
+           'homepage': 'http://zstd.testpkg.invalid',
            'skip': ''}}, {}, False),
  'testpackage2-subpackage': Package('testpackage2/testpackage2-subpackage', {'1.0-1': Tar('testpackage2-subpackage-1.0-1.tar.bz2', 'x86/release/testpackage2/testpackage2-subpackage', 'c4bf8e28d71b532e2b741e2931906dec0f0a70d4d051c0503476f864a5228f43765ae3342aafcebfd5a1738073537726b2bfbbd89c6da939a5f46d95aca3feaf', 46, True)}, {'1.0-1': {'sdesc': '"A test subpackage 2"',
            'ldesc': '"A test subpackage 2"',



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

only message in thread, other threads:[~2021-05-29 15:07 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-05-29 15:07 [calm - Cygwin server-side packaging maintenance script] branch master, updated. 20210408-22-g88ddf1e Jon TURNEY

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