[calm - Cygwin server-side packaging maintenance script] branch master, updated. 20200129-8-g0c1b671

jturney-9JcytcrH/[email protected]
Newsgroups gmane.os.cygwin.cvs.apps
Message-ID <[email protected]>


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

commit 0c1b671e3e3ca0c5b6b964cc8de3623764fb203a
Author: Jon Turney <[email protected]>
Date:   Tue Feb 18 22:38:58 2020 +0000

    Extend orphan maintainer list
    
    Extend orphan maintainer list to include everyone who:
    
    * has a sourceware shell account
    * that account is a member of the cygwin group
    * is currently a package maintainer
    
    Restructure gitolite.conf so the "push to all repos" list is
    synchronized with that

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

commit 18d6ca071a42115f47130a34823b2edb38cbe35d
Author: Jon Turney <[email protected]>
Date:   Tue Feb 18 21:41:12 2020 +0000

    Remove an old fixup tool


Diff:
---
 calm/common_constants.py       |  12 +++-
 calm/fix-missing-cygwin-dep.py | 140 -----------------------------------------
 calm/mkgitoliteconf.py         |  13 ++++
 3 files changed, 24 insertions(+), 141 deletions(-)

diff --git a/calm/common_constants.py b/calm/common_constants.py
index 9db93b2..5d884c4 100644
--- a/calm/common_constants.py
+++ b/calm/common_constants.py
@@ -42,7 +42,17 @@ EMAILS = ','.join(list(map(lambda m: m + '@sourceware.org', ['corinna', 'yselkow
 ALWAYS_BCC = 'jturney-9JcytcrH/[email protected], yselkowitz-9JcytcrH/[email protected]'
 
 # these maintainers can upload orphaned packages as well
-ORPHANMAINT = "Yaakov Selkowitz"
+#
+# (these people have sourceware shell access and cygwin group membership, so
+# they can do whatever they like directly, anyhow)
+ORPHANMAINT = '/'.join([
+    'Corinna Vinschen',
+    'Eric Blake',
+    'Jon Turney',
+    'Ken Brown',
+    'Marco Atzeri',
+    'Yaakov Selkowitz',
+])
 
 # architectures we support
 ARCHES = ['x86', 'x86_64']
diff --git a/calm/fix-missing-cygwin-dep.py b/calm/fix-missing-cygwin-dep.py
deleted file mode 100755
index 6ca3625..0000000
--- a/calm/fix-missing-cygwin-dep.py
+++ /dev/null
@@ -1,140 +0,0 @@
-#!/usr/bin/env python3
-#
-# Copyright (c) 2016 Jon Turney
-#
-# Permission is hereby granted, free of charge, to any person obtaining a copy
-# of this software and associated documentation files (the "Software"), to deal
-# in the Software without restriction, including without limitation the rights
-# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-# copies of the Software, and to permit persons to whom the Software is
-# furnished to do so, subject to the following conditions:
-#
-# The above copyright notice and this permission notice shall be included in
-# all copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-# THE SOFTWARE.
-#
-
-#
-# Historically, cygwin was omitted from requires: and then upset added it back
-# using the autodep mechanism
-#
-# Now we want to remove that complexity and treat it like a normal dependency,
-# so this script fixes up setup.hints, adding cygwin to requires: where it
-# should be
-#
-
-import argparse
-import logging
-import os
-import re
-import sys
-import tarfile
-
-import common_constants
-import package
-
-
-#
-#
-#
-def main(args):
-    # build package list
-    packages = package.read_packages(args.rel_area, args.arch)
-
-    for pn, po in packages.items():
-        # package is source-only
-        if 'skip' in po.hints:
-            logging.info("%s is source-only" % (pn))
-            continue
-
-        # package requires: contains 'cygwin' already
-        #
-        # really this should use a whitespace boundary, not word boundary to
-        # avoid matching cygwin-debug etc., but we just happen to know that only
-        # debuginfo packages depend on cygwin-debuginfo which can safely be
-        # skipped as they will never depend on cygwin
-        requires = po.hints.get('requires', '')
-        if re.search(r'\bcygwin\b', requires):
-            logging.info("%s already has cygwin in requires" % (pn))
-            continue
-
-        # install tarfiles are all empty (usually because package is obsolete)
-        if all([t.is_empty for t in po.tars.values()]):
-            logging.info("%s has empty install tarfiles" % (pn))
-            continue
-
-        # search each install tarfile for executable files
-        #
-        # (any .exe or .dll file might have a dependency on cygwin1.dll, so for
-        # simplicity we will assume that it does)
-        amend = False
-        for t in po.tars:
-            logging.info("%s tarfile %s" % (pn, t))
-
-            if re.search(r'-src\.tar', t):
-                continue
-
-            if po.tars[t].is_empty:
-                continue
-
-            with tarfile.open(os.path.join(args.rel_area, args.arch, po.path, t)) as a:
-                if any(map(lambda f: re.search(r'^(bin|sbin|usr/bin|usr/lib|usr/libexec|usr/sbin)/.*\.(exe|dll|so|cmxs)$', f), a.getnames())):
-                    logging.info("%s: matched in %s" % (pn, t))
-                    amend = True
-                    break
-
-        if not amend:
-            continue
-
-        # adjust requires:, adding 'cygwin' to the end
-        logging.warning("Adding 'cygwin' to requires: in setup.hint for package '%s'" % (pn))
-        if len(requires) > 0:
-            requires = requires + ' '
-        po.hints['requires'] = requires + 'cygwin'
-
-        # write the modified setup.hint file
-        if 'parse-warnings' in po.hints:
-            del po.hints['parse-warnings']
-        if 'parse-errors' in po.hints:
-            del po.hints['parse-errors']
-
-        ofn = os.path.join(args.rel_area, args.arch, po.path, 'setup.hint')
-        fn = os.path.join(args.rel_area, args.arch, po.path, 'setup.hint.modified')
-        with open(fn, 'w') as f:
-            for k, v in po.hints.items():
-                print("%s: %s" % (k, v), file=f)
-
-        # show any 'unexpected' changes in the setup.hint
-        os.system("diff -u -I 'requires:' --ignore-blank-lines --ignore-space-change %s %s" % (ofn, fn))
-
-        # replace the setup.hint file
-        # (written this way so it doesn't spoil a hardlinked backup of the releasearea)
-        os.rename(fn, ofn)
-
-
-#
-#
-#
-
-if __name__ == "__main__":
-    relarea_default = common_constants.FTP
-
-    parser = argparse.ArgumentParser(description='requires fixer')
-    parser.add_argument('--arch', action='store', required=True, choices=common_constants.ARCHES)
-    parser.add_argument('-v', '--verbose', action='count', dest='verbose', help='verbose output', default=0)
-    parser.add_argument('--releasearea', action='store', metavar='DIR', help="release directory (default: " + relarea_default + ")", default=relarea_default, dest='rel_area')
-    (args) = parser.parse_args()
-
-    if args.verbose:
-        logging.getLogger().setLevel(logging.INFO)
-
-    logging.basicConfig(format=os.path.basename(sys.argv[0]) + ': %(message)s')
-
-    main(args)
diff --git a/calm/mkgitoliteconf.py b/calm/mkgitoliteconf.py
index 761979d..65a08dc 100755
--- a/calm/mkgitoliteconf.py
+++ b/calm/mkgitoliteconf.py
@@ -68,6 +68,19 @@ def do_main(args):
     # header
     print("# automatically generated by mkgitoliteconf")
 
+    # global configuration
+    print('')
+    print('@leads = %s' % ' '.join(map(transform_username, common_constants.ORPHANMAINT.split('/'))))
+    print('')
+    print('repo @all')
+    print('    C  = @leads')
+    print('    RW = @leads')
+    print('    R  = @all')
+    print('    R  = gitweb daemon')
+    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('')
+
     # for each package
     for p in sorted(pkgs):
         users = ' '.join(map(transform_username, pkgs[p]))
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.