lib/mixlib/install/backend/bintray.rb in mixlib-install-1.0.1 vs lib/mixlib/install/backend/bintray.rb in mixlib-install-1.0.2
- old
+ new
@@ -124,10 +124,46 @@
results.reject! do |r|
r["name"].end_with?(".asc") || r["name"].end_with?(".pkg")
end
# Convert results to build records
- results.map { |a| create_artifact(a) }
+ results.map! { |a| create_artifact(a) }
+
+ windows_artifact_fixup!(results)
+ end
+
+ # On windows, if we do not have a native 64-bit package available
+ # in the discovered artifacts, we will make 32-bit artifacts available
+ # for 64-bit architecture.
+ def windows_artifact_fixup!(artifacts)
+ new_artifacts = [ ]
+ native_artifacts = [ ]
+
+ artifacts.each do |r|
+ next if r.platform != "windows"
+
+ # Store all native 64-bit artifacts and clone 32-bit artifacts to
+ # be used as 64-bit.
+ case r.architecture
+ when "i386"
+ new_artifacts << r.clone_with(architecture: "x86_64")
+ when "x86_64"
+ native_artifacts << r.clone
+ else
+ puts "Unknown architecture '#{r.architecture}' for windows."
+ end
+ end
+
+ # Now discard the cloned artifacts if we find an equivalent native
+ # artifact
+ native_artifacts.each do |r|
+ new_artifacts.delete_if do |x|
+ x.platform_version == r.platform_version
+ end
+ end
+
+ # add the remaining cloned artifacts to the original set
+ artifacts += new_artifacts
end
#
# Creates an instance of ArtifactInfo
#