diff options
author | Jon Turney <jon.turney@dronecode.org.uk> | 2016-09-14 00:07:09 +0300 |
---|---|---|
committer | Jon Turney <jon.turney@dronecode.org.uk> | 2016-09-14 15:04:28 +0300 |
commit | db2d7aa3af433748b4c4e8fd922e5151dff72211 (patch) | |
tree | f05e15076b8045dcf151c62a25ef259cecd05df8 | |
parent | 9967dd937702f63df47a99cbf5624277e6c6297a (diff) |
Correctly handle upload which doesn't alter an existing override.hint
If there is an existing override.hint, it should be retained rather than be
discarded when there is an upload
-rwxr-xr-x | calm/package.py | 8 | ||||
-rw-r--r-- | test/testdata/process_arch/setup.ini.expected | 12 |
2 files changed, 12 insertions, 8 deletions
diff --git a/calm/package.py b/calm/package.py index e198c9e..27d6457 100755 --- a/calm/package.py +++ b/calm/package.py @@ -734,6 +734,10 @@ def upper_first_character(s): # - we combine the list of tarfiles, duplicates are not permitted # - we use the hints from b, and warn if they are different to the hints for a # +# (XXX: this implementation possibly assumes that a package is at most in a and +# one of b, which is currently true, but it could be written with more +# generality) +# def merge(a, *l): # start with a copy of a c = copy.deepcopy(a) @@ -770,8 +774,8 @@ def merge(a, *l): logging.warning("package '%s' hints changed\n%s" % (p, diff)) - # take overrides from b - c[p].override_hints = b[p].override_hints + # overrides from b take precedence + c[p].override_hints.update(b[p].override_hints) # skip if both a and b are skip c[p].skip = a[p].skip and b[p].skip diff --git a/test/testdata/process_arch/setup.ini.expected b/test/testdata/process_arch/setup.ini.expected index 27bc529..7de15aa 100644 --- a/test/testdata/process_arch/setup.ini.expected +++ b/test/testdata/process_arch/setup.ini.expected @@ -197,17 +197,17 @@ 'ldesc: "Per-version hint test package"\n' 'category: Base\n' 'requires: base-cygwin cygwin\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' - '[prev]\n' 'version: 4.8-1\n' 'install: x86/release/per-version/per-version-4.8-1.tar.xz 228 ' 'e675b0ac4bc2c3e1c4971bc56d77b0cd53a9bdf5632873a235d7582e29dfd3e8a7bb04b28f6cdee3e6b3d14c25ed39392538e3f628a9bfda6c905646ebc3c225\n' 'source: x86/release/per-version/per-version-4.8-1-src.tar.xz 228 ' 'e675b0ac4bc2c3e1c4971bc56d77b0cd53a9bdf5632873a235d7582e29dfd3e8a7bb04b28f6cdee3e6b3d14c25ed39392538e3f628a9bfda6c905646ebc3c225\n' + '[prev]\n' + 'version: 4.0-1\n' + 'install: x86/release/per-version/per-version-4.0-1.tar.xz 228 ' + 'e675b0ac4bc2c3e1c4971bc56d77b0cd53a9bdf5632873a235d7582e29dfd3e8a7bb04b28f6cdee3e6b3d14c25ed39392538e3f628a9bfda6c905646ebc3c225\n' + 'source: x86/release/per-version/per-version-4.0-1-src.tar.xz 228 ' + 'e675b0ac4bc2c3e1c4971bc56d77b0cd53a9bdf5632873a235d7582e29dfd3e8a7bb04b28f6cdee3e6b3d14c25ed39392538e3f628a9bfda6c905646ebc3c225\n' '\n' '@ perl-Net-SMTP-SSL\n' 'sdesc: "Perl distribution Net-SMTP-SSL"\n' |