From b3949f0765152974e103698757c19bb7c074c629 Mon Sep 17 00:00:00 2001 From: Dawid Dziurla Date: Wed, 3 Mar 2021 15:55:47 +0100 Subject: [PATCH] dispatch-build-bottle: support Linux --- .../Homebrew/dev-cmd/dispatch-build-bottle.rb | 61 +++++++++++-------- 1 file changed, 37 insertions(+), 24 deletions(-) diff --git a/Library/Homebrew/dev-cmd/dispatch-build-bottle.rb b/Library/Homebrew/dev-cmd/dispatch-build-bottle.rb index 7fd1a133ca..915e3d5106 100644 --- a/Library/Homebrew/dev-cmd/dispatch-build-bottle.rb +++ b/Library/Homebrew/dev-cmd/dispatch-build-bottle.rb @@ -25,7 +25,10 @@ module Homebrew description: "Dispatch specified workflow (default: `dispatch-build-bottle.yml`)." switch "--upload", description: "Upload built bottles to Bintray." + switch "--linux", + description: "Dispatch bottle for Linux (using GitHub runners)." + conflicts "--macos", "--linux" named_args :formula, min: 1 end end @@ -33,45 +36,55 @@ module Homebrew def dispatch_build_bottle args = dispatch_build_bottle_args.parse - # Fixup version for ARM/Apple Silicon - # TODO: fix label name to be 11-arm64 instead and remove this. - args.macos&.gsub!(/^11-arm$/, "11-arm64") - - macos = args.macos&.yield_self do |s| - MacOS::Version.from_symbol(s.to_sym) - rescue MacOSVersionError - MacOS::Version.new(s) - end - - raise UsageError, "Must specify --macos option" if macos.blank? - - # Fixup label for ARM/Apple Silicon - macos_label = if macos.arch == :arm64 - # TODO: fix label name to be 11-arm64 instead. - "#{macos}-arm" - else - macos.to_s - end - tap = Tap.fetch(args.tap || CoreTap.instance.name) user, repo = tap.full_name.split("/") - - workflow = args.workflow || "dispatch-build-bottle.yml" ref = "master" + workflow = args.workflow || "dispatch-build-bottle.yml" + + # Ensure we dispatch the bottle in homebrew/homebrew-core + # TODO: remove when core taps are merged + repo.gsub!("linux", "home") unless args.tap + + if (macos = args.macos) + # Fixup version for ARM/Apple Silicon + # TODO: fix label name to be 11-arm64 instead and remove this. + macos.gsub!(/^11-arm$/, "11-arm64") + + macos = macos.yield_self do |s| + MacOS::Version.from_symbol(s.to_sym) + rescue MacOSVersionError + MacOS::Version.new(s) + end + + # Fixup label for ARM/Apple Silicon + macos_label = if macos.arch == :arm64 + # TODO: fix label name to be 11-arm64 instead. + "#{macos}-arm" + else + macos.to_s + end + + dispatching_for = "macOS #{macos}" + elsif T.unsafe(args).linux? + workflow = args.workflow || "linux-#{workflow}" + dispatching_for = "Linux" + else + raise UsageError, "Must specify --macos or --linux option" + end args.named.to_resolved_formulae.each do |formula| # Required inputs inputs = { formula: formula.name, - macos: macos_label, } # Optional inputs # These cannot be passed as nil to GitHub API + inputs[:macos] = macos_label if args.macos inputs[:issue] = args.issue if args.issue inputs[:upload] = args.upload?.to_s if args.upload? - ohai "Dispatching #{tap} bottling request of formula \"#{formula.name}\" for macOS #{macos}" + ohai "Dispatching #{tap} bottling request of formula \"#{formula.name}\" for #{dispatching_for}" GitHub.workflow_dispatch_event(user, repo, workflow, ref, inputs) end end