summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--source-builder/sb/sources.py18
1 files changed, 11 insertions, 7 deletions
diff --git a/source-builder/sb/sources.py b/source-builder/sb/sources.py
index fb6d819..967becc 100644
--- a/source-builder/sb/sources.py
+++ b/source-builder/sb/sources.py
@@ -97,13 +97,17 @@ def hash(args, macros, error):
return
_map = 'hashes'
_file = macros.expand(args[1])
- if _file in macros.map_keys(_map):
- error('hash already set: %s' % (args[1]))
- return
- macros.create_map(_map)
- macros.set_write_map(_map)
- macros.define(_file, '%s %s' % (args[0], args[2]))
- macros.unset_write_map()
+ new_value = '%s %s' % (args[0], args[2])
+ existing_value = get_hash(_file, macros)
+ if existing_value is not None:
+ if existing_value != new_value:
+ error('conflicting hash definitions for: %s' % (args[1]))
+ return
+ else:
+ macros.create_map(_map)
+ macros.set_write_map(_map)
+ macros.define(_file, new_value)
+ macros.unset_write_map()
return None
def get(label, name, macros, error):