Welcome to mirror list, hosted at ThFree Co, Russian Federation.

cygwin.com/git/cygwin-apps/calm.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJon Turney <jon.turney@dronecode.org.uk>2016-09-14 21:22:51 +0300
committerJon Turney <jon.turney@dronecode.org.uk>2016-09-15 17:53:09 +0300
commit437f6ad4ddddd43a6c39ba6bd0e02ff2cf08cdaa (patch)
tree7719d5d459749e2301f2e9e137b228aa4f36c3f8
parent66fee615aab7089942299bbac9dd97fdcd1c2ddb (diff)
Report conflicting movelists as an error
We probably want to told when we are uploading a package which is immediately going to be automatically removed as stale. Uploading a package at the same time as a marking it for removal doesn't make any sense, so report that as an error. Update per-version testpackage to avoid this error.
-rwxr-xr-xcalm/calm.py29
-rw-r--r--calm/uploads.py10
-rw-r--r--test/testdata/homes/Blooey McFooey/x86/release/per-version/override.hint2
-rw-r--r--test/testdata/process_arch/htdocs.expected4
-rw-r--r--test/testdata/process_arch/rel_area.expected3
-rw-r--r--test/testdata/process_arch/setup.ini.expected6
-rw-r--r--test/testdata/process_arch/vault.expected1
7 files changed, 53 insertions, 2 deletions
diff --git a/calm/calm.py b/calm/calm.py
index 3e6952c..0d41602 100755
--- a/calm/calm.py
+++ b/calm/calm.py
@@ -193,6 +193,18 @@ def process(args):
# ... discard move list and merged_packages
continue
+ # check for conflicting movelists
+ conflicts = False
+ for arch in common_constants.ARCHES + ['noarch']:
+ conflicts = conflicts or report_movelist_conflicts(scan_result[arch].to_relarea, scan_result[arch].to_vault, "manually")
+ if args.stale:
+ conflicts = conflicts or report_movelist_conflicts(scan_result[arch].to_relarea, stale_to_vault[arch], "automatically")
+
+ # if an error occurred ...
+ if conflicts:
+ # ... discard move list and merged_packages
+ continue
+
# for each arch and noarch
for arch in common_constants.ARCHES + ['noarch']:
logging.debug("moving %s packages for maintainer %s" % (arch, name))
@@ -271,6 +283,23 @@ def remove_stale_packages(args, packages):
#
+# report movelist conflicts
+#
+
+def report_movelist_conflicts(a, b, reason):
+ conflicts = False
+
+ n = uploads.movelist_intersect(a, b)
+ if n:
+ for p in n:
+ for f in n[p]:
+ logging.error("%s/%s is both uploaded and %s vaulted" % (p, f, reason))
+ conflicts = True
+
+ return conflicts
+
+
+#
#
#
diff --git a/calm/uploads.py b/calm/uploads.py
index 8364ff0..9d44bfe 100644
--- a/calm/uploads.py
+++ b/calm/uploads.py
@@ -267,6 +267,16 @@ def move_to_vault(args, movelist):
move(args, movelist, args.rel_area, args.vault)
+# compute the intersection of a pair of movelists
+def movelist_intersect(a, b):
+ i = defaultdict(list)
+ for p in a.keys() & b.keys():
+ pi = set(a[p]) & set(b[p])
+ if pi:
+ i[p] = pi
+ return i
+
+
#
#
#
diff --git a/test/testdata/homes/Blooey McFooey/x86/release/per-version/override.hint b/test/testdata/homes/Blooey McFooey/x86/release/per-version/override.hint
new file mode 100644
index 0000000..aeb41e4
--- /dev/null
+++ b/test/testdata/homes/Blooey McFooey/x86/release/per-version/override.hint
@@ -0,0 +1,2 @@
+curr: 4.8-1
+test: 5.0-1
diff --git a/test/testdata/process_arch/htdocs.expected b/test/testdata/process_arch/htdocs.expected
index 109ce87..3dd3b28 100644
--- a/test/testdata/process_arch/htdocs.expected
+++ b/test/testdata/process_arch/htdocs.expected
@@ -24,7 +24,9 @@
'per-version-4.0-1',
'per-version-4.0-1-src',
'per-version-4.8-1',
- 'per-version-4.8-1-src'],
+ 'per-version-4.8-1-src',
+ 'per-version-5.0-1',
+ 'per-version-5.0-1-src'],
'x86/perl-Net-SMTP-SSL': ['.htaccess',
'perl-Net-SMTP-SSL-1.03-1',
'perl-Net-SMTP-SSL-1.03-1-src',
diff --git a/test/testdata/process_arch/rel_area.expected b/test/testdata/process_arch/rel_area.expected
index 32be5da..67d9b4c 100644
--- a/test/testdata/process_arch/rel_area.expected
+++ b/test/testdata/process_arch/rel_area.expected
@@ -60,6 +60,9 @@
'per-version-4.8-1-src.tar.xz',
'per-version-4.8-1.hint',
'per-version-4.8-1.tar.xz',
+ 'per-version-5.0-1-src.tar.xz',
+ 'per-version-5.0-1.hint',
+ 'per-version-5.0-1.tar.xz',
'sha512.sum'],
'x86/release/per-version-incomplete': ['override.hint',
'per-version-incomplete-36-1-src.tar.xz',
diff --git a/test/testdata/process_arch/setup.ini.expected b/test/testdata/process_arch/setup.ini.expected
index 8e52c42..de165ea 100644
--- a/test/testdata/process_arch/setup.ini.expected
+++ b/test/testdata/process_arch/setup.ini.expected
@@ -208,6 +208,12 @@
'e675b0ac4bc2c3e1c4971bc56d77b0cd53a9bdf5632873a235d7582e29dfd3e8a7bb04b28f6cdee3e6b3d14c25ed39392538e3f628a9bfda6c905646ebc3c225\n'
'source: x86/release/per-version/per-version-4.0-1-src.tar.xz 228 '
'e675b0ac4bc2c3e1c4971bc56d77b0cd53a9bdf5632873a235d7582e29dfd3e8a7bb04b28f6cdee3e6b3d14c25ed39392538e3f628a9bfda6c905646ebc3c225\n'
+ '[test]\n'
+ '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'
'\n'
'@ perl-Net-SMTP-SSL\n'
'sdesc: "Perl distribution Net-SMTP-SSL"\n'
diff --git a/test/testdata/process_arch/vault.expected b/test/testdata/process_arch/vault.expected
index 3f0abb5..cf4e9f0 100644
--- a/test/testdata/process_arch/vault.expected
+++ b/test/testdata/process_arch/vault.expected
@@ -1,7 +1,6 @@
{'.': [],
'x86': [],
'x86/release': [],
- 'x86/release/per-version': ['per-version-5.0-1-src.tar.xz', 'per-version-5.0-1.hint', 'per-version-5.0-1.tar.xz'],
'x86/release/staleversion': ['staleversion-240-1-src.tar.xz',
'staleversion-240-1.tar.xz',
'staleversion-242-0-src.tar.xz',