Clone of https://github.com/NixOS/nixpkgs.git (to stress-test knotserver)

dwarf-fortress: fix update script

Merging was not taking into account certain attributes that were not yet
computed.

+24 -8
+24 -8
pkgs/games/dwarf-fortress/update.rb
··· 60 self.members.each do |member| 61 if @@expensive && @@expensive.include?(member) 62 # Already computed 63 - hash[member] = self[member] 64 - elsif self[member] && self[member].is_a?(Mergeable) 65 # Merge it 66 - hash[member] = self[member].merge(other[member]) 67 - elsif self[member] && self[member].is_a?(Hash) 68 - hash[member] = Hash[other[member].map { 69 - [_1, self[member][_1] && self[member][_1].is_a?(Mergeable) ? self[member][_1].merge(_2) : _2] 70 }] 71 else 72 # Compute it 73 - hash[member] = other[member] 74 end 75 end 76 self.class.new(**hash) ··· 80 def expensive *attrs 81 @@expensive ||= Set.new 82 attrs.each {@@expensive << _1} 83 self 84 end 85 end ··· 417 self.versions[df_version.version] = DFWithHackVersion.new(df: df_version, hack: latest_dfhack_version) 418 end 419 end 420 end 421 422 # Converts a hash to a DFWithHackVersions. ··· 488 latest = self.class.latest 489 self.version = latest.version 490 self.max_df_version = latest.max_df_version 491 - self.git = nil 492 self 493 end 494
··· 60 self.members.each do |member| 61 if @@expensive && @@expensive.include?(member) 62 # Already computed 63 + hash[member] = other[member] || self.send(member) 64 + elsif self.send(member) && self.send(member).is_a?(Mergeable) 65 # Merge it 66 + hash[member] = self.send(member).merge(other.send(member)) 67 + elsif self.send(member) && self.send(member).is_a?(Hash) 68 + hash[member] = Hash[other.send(member).map { 69 + [_1, self.send(member)[_1] && self.send(member)[_1].is_a?(Mergeable) ? self.send(member)[_1].merge(_2) : _2] 70 }] 71 else 72 # Compute it 73 + hash[member] = other.send(member) 74 end 75 end 76 self.class.new(**hash) ··· 80 def expensive *attrs 81 @@expensive ||= Set.new 82 attrs.each {@@expensive << _1} 83 + self 84 + end 85 + 86 + # Materializes this object. 87 + def materialize! 88 + self.members.each do |name| 89 + member = self.send(name) 90 + if member.respond_to?(:materialize!) 91 + member.materialize! 92 + end 93 + self[name] = member 94 + end 95 self 96 end 97 end ··· 429 self.versions[df_version.version] = DFWithHackVersion.new(df: df_version, hack: latest_dfhack_version) 430 end 431 end 432 + 433 + self.materialize! 434 + self 435 end 436 437 # Converts a hash to a DFWithHackVersions. ··· 503 latest = self.class.latest 504 self.version = latest.version 505 self.max_df_version = latest.max_df_version 506 + self.git = latest.git 507 + self.materialize! 508 self 509 end 510