From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by sourceware.org (Postfix, from userid 2201) id 761D3385802D; Sat, 29 May 2021 15:07:19 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 761D3385802D To: cygwin-apps-cvs@sourceware.org Subject: [calm - Cygwin server-side packaging maintenance script] branch master, updated. 20210408-22-g88ddf1e X-Git-Refname: refs/heads/master X-Git-Reftype: branch X-Git-Oldrev: a5cf1fbb3bc0b4bf5ce602f03eb2c0c4b8a94774 X-Git-Newrev: 88ddf1ea8212fcffb8a9b12f7645b16ea446f97c Message-Id: <20210529150719.761D3385802D@sourceware.org> Date: Sat, 29 May 2021 15:07:19 +0000 (GMT) From: Jon TURNEY X-BeenThere: cygwin-apps-cvs@cygwin.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Cygwin-apps git logs List-Unsubscribe: , List-Archive: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 29 May 2021 15:07:19 -0000 https://sourceware.org/git/gitweb.cgi?p=cygwin-apps/calm.git;h=88ddf1ea8212fcffb8a9b12f7645b16ea446f97c commit 88ddf1ea8212fcffb8a9b12f7645b16ea446f97c Author: Jon Turney 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 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 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"',