From 38f9a78c29f9bf3218e777ed9658a1d81473bcd6 Mon Sep 17 00:00:00 2001 From: Mike McQuaid <mike@mikemcquaid.com> Date: Tue, 17 Feb 2015 18:57:19 +0000 Subject: [PATCH] Add initial Bintray upload support. --- Library/Homebrew/cmd/pull.rb | 4 ++++ Library/Homebrew/cmd/test-bot.rb | 29 +++++++++++++++++++++++++++++ Library/Homebrew/software_spec.rb | 6 +++++- 3 files changed, 38 insertions(+), 1 deletion(-) diff --git a/Library/Homebrew/cmd/pull.rb b/Library/Homebrew/cmd/pull.rb index cf0b745437..ac43bdad64 100644 --- a/Library/Homebrew/cmd/pull.rb +++ b/Library/Homebrew/cmd/pull.rb @@ -152,6 +152,10 @@ module Homebrew safe_system "git", "checkout", branch safe_system "git", "merge", "--ff-only", "--no-edit", bottle_branch safe_system "git", "branch", "-D", bottle_branch + + # TODO: publish on bintray + # safe_system "curl", "-u#{user}:#{key}", "-X", "POST", + # "https://api.bintray.com/content/homebrew/#{repo}/#{formula}/#{version}" end ohai 'Patch changed:' diff --git a/Library/Homebrew/cmd/test-bot.rb b/Library/Homebrew/cmd/test-bot.rb index 2617aee87a..732b445818 100644 --- a/Library/Homebrew/cmd/test-bot.rb +++ b/Library/Homebrew/cmd/test-bot.rb @@ -666,6 +666,10 @@ module Homebrew id = ENV['UPSTREAM_BUILD_ID'] raise "Missing Jenkins variables!" unless jenkins and job and id + user = ENV["BINTRAY_USER"] + key = ENV["BINTRAY_KEY"] + raise "Missing Bintray variables!" unless user && key + ARGV << '--verbose' bottles = Dir["#{jenkins}/jobs/#{job}/configurations/axis-version/*/builds/#{id}/archive/*.bottle*.*"] @@ -706,6 +710,7 @@ module Homebrew tag = pr ? "pr-#{pr}" : "testing-#{number}" safe_system "git", "push", "--force", remote, "master:master", ":refs/tags/#{tag}" + # SourceForge upload (will be removed soon) path = "/home/frs/project/m/ma/machomebrew/Bottles/" if tap tap_user, tap_repo = tap.split "/" @@ -717,6 +722,30 @@ module Homebrew rsync_args += Dir["*.bottle*.tar.gz"] + [url] safe_system "rsync", *rsync_args + + # Bintray upload (will take over soon) + repo = if tap + tap.sub("/", "-") + "-bottles" + else + "bottles" + end + + Dir.glob("*.bottle*.tar.gz") do |filename| + # Skip taps for now until we're using Bintray for Homebrew/homebrew + next if tap + version = BottleVersion.parse(filename).to_s + formula = bottle_filename_formula_name filename + + package_url = "https://api.bintray.com/packages/homebrew/#{repo}/#{formula}" + unless system "curl", "--silent", "--fail", "--output", "/dev/null", package_url + safe_system "curl", "-H", "Content-Type: application/json", + "-d", "{'name':'#{formula}','licenses':['MIT']}", package_url + end + + safe_system "curl", "-u#{user}:#{key}", "-T", filename, + "#{package_url}/#{version}/#{filename}" + end + safe_system "git", "tag", "--force", tag safe_system "git", "push", "--force", remote, "refs/tags/#{tag}" return diff --git a/Library/Homebrew/software_spec.rb b/Library/Homebrew/software_spec.rb index a1fba5661a..f0e0c34932 100644 --- a/Library/Homebrew/software_spec.rb +++ b/Library/Homebrew/software_spec.rb @@ -251,7 +251,11 @@ end class BottleSpecification DEFAULT_PREFIX = "/usr/local".freeze DEFAULT_CELLAR = "/usr/local/Cellar".freeze - DEFAULT_ROOT_URL = "https://downloads.sf.net/project/machomebrew/Bottles".freeze + if ENV["HOMEBREW_BINTRAY_TESTING"] + DEFAULT_ROOT_URL = "https://bintray.com/artifact/download/homebrew/bottles".freeze + else + DEFAULT_ROOT_URL = "https://downloads.sf.net/project/machomebrew/Bottles".freeze + end attr_rw :root_url, :prefix, :cellar, :revision attr_reader :checksum, :collector -- GitLab