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 60 self.members.each do |member| 61 61 if @@expensive && @@expensive.include?(member) 62 62 # Already computed 63 - hash[member] = self[member] 64 - elsif self[member] && self[member].is_a?(Mergeable) 63 + hash[member] = other[member] || self.send(member) 64 + elsif self.send(member) && self.send(member).is_a?(Mergeable) 65 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] 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 70 }] 71 71 else 72 72 # Compute it 73 - hash[member] = other[member] 73 + hash[member] = other.send(member) 74 74 end 75 75 end 76 76 self.class.new(**hash) ··· 80 80 def expensive *attrs 81 81 @@expensive ||= Set.new 82 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 83 95 self 84 96 end 85 97 end ··· 417 429 self.versions[df_version.version] = DFWithHackVersion.new(df: df_version, hack: latest_dfhack_version) 418 430 end 419 431 end 432 + 433 + self.materialize! 434 + self 420 435 end 421 436 422 437 # Converts a hash to a DFWithHackVersions. ··· 488 503 latest = self.class.latest 489 504 self.version = latest.version 490 505 self.max_df_version = latest.max_df_version 491 - self.git = nil 506 + self.git = latest.git 507 + self.materialize! 492 508 self 493 509 end 494 510