public inbox for cygwin-apps-cvs@sourceware.org
help / color / mirror / Atom feed
* [calm - Cygwin server-side packaging maintenance script] branch master, updated. 20200129-8-g0c1b671
@ 2020-02-19 15:45 jturney
0 siblings, 0 replies; only message in thread
From: jturney @ 2020-02-19 15:45 UTC (permalink / raw)
To: cygwin-apps-cvs
https://sourceware.org/git/gitweb.cgi?p=cygwin-apps/calm.git;h=0c1b671e3e3ca0c5b6b964cc8de3623764fb203a
commit 0c1b671e3e3ca0c5b6b964cc8de3623764fb203a
Author: Jon Turney <jon.turney@dronecode.org.uk>
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 <jon.turney@dronecode.org.uk>
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@sourceware.org, yselkowitz@sourceware.org'
# 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]))
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2020-02-19 15:45 UTC | newest]
Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-02-19 15:45 [calm - Cygwin server-side packaging maintenance script] branch master, updated. 20200129-8-g0c1b671 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).