aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMike McQuaid2016-09-03 17:30:26 +0100
committerMike McQuaid2016-09-03 17:30:26 +0100
commit5e9bb877d54fc1803a866f49997f3e819c3ca650 (patch)
tree48f63de4f3cce8472a78ce352fd6d6d6a9cb3326
parent327f5ca1778dfeb002802bb13540c96aee20f40c (diff)
downloadbrew-5e9bb877d54fc1803a866f49997f3e819c3ca650.tar.bz2
bottle: fix --keep-old JSON generation.
Ensure that the JSON file contains all the bottle checksums when using `--keep-old`. This avoids having to use the formula DSL when merging and relies on existing integrity checks. This change does nothing differently if `--keep-old` is not passed.
-rw-r--r--Library/Homebrew/cmd/bottle.rb21
1 files changed, 18 insertions, 3 deletions
diff --git a/Library/Homebrew/cmd/bottle.rb b/Library/Homebrew/cmd/bottle.rb
index 138e482e0..888e8c778 100644
--- a/Library/Homebrew/cmd/bottle.rb
+++ b/Library/Homebrew/cmd/bottle.rb
@@ -279,10 +279,9 @@ module Homebrew
end
bottle.rebuild rebuild
sha256 = bottle_path.sha256
- bottle.sha256 sha256 => Utils::Bottles.tag
- old_spec = f.bottle_specification
- if ARGV.include?("--keep-old") && !old_spec.checksums.empty?
+ if ARGV.include?("--keep-old") && !f.bottle_specification.checksums.empty?
+ old_spec = f.bottle_specification
bad_fields = [:root_url, :prefix, :cellar, :rebuild].select do |field|
old_spec.send(field) != bottle.send(field)
end
@@ -291,8 +290,11 @@ module Homebrew
bottle_path.unlink if bottle_path.exist?
odie "--keep-old is passed but there are changes in: #{bad_fields.join ", "}"
end
+ bottle = old_spec
end
+ bottle.sha256 sha256 => Utils::Bottles.tag
+
output = bottle_output bottle
puts "./#{filename}"
@@ -323,6 +325,19 @@ module Homebrew
},
},
}
+ if ARGV.include?("--keep-old")
+ bottle.checksums.each do |hash_type, checksums|
+ checksums.each do |checksum_hash|
+ checksum_hash.each do |checksum, tag|
+ tag_hash = {}
+ tag_hash["filename"] ||= Bottle::Filename.create(f, tag, rebuild).to_s
+ tag_hash[hash_type.to_s] ||= checksum.hexdigest
+ json[f.full_name]["bottle"]["tags"][tag.to_s] ||= tag_hash
+ end
+ end
+ end
+ end
+
File.open("#{filename.prefix}.bottle.json", "w") do |file|
file.write Utils::JSON.dump json
end