github_packages: fix versioned bottle names.

`@` cannot be used in Docker image names. Use `/` instead (which we
already use in image names so has some precedent).

Make `mktemp` use `AT` (consistent with `Formula` subclasses), too.
This commit is contained in:
Mike McQuaid 2021-04-06 19:13:30 +01:00
parent b122288f59
commit fd251c9109
No known key found for this signature in database
GPG Key ID: 48A898132FD8EE70
3 changed files with 12 additions and 5 deletions

View File

@ -101,6 +101,10 @@ class GitHubPackages
"#{prefix}#{org}/#{repo_without_prefix(repo)}"
end
def self.image_formula_name(formula_name)
formula_name.tr("@", "/")
end
private
IMAGE_CONFIG_SCHEMA_URI = "https://opencontainers.org/schema/image/config"
@ -312,7 +316,8 @@ class GitHubPackages
write_index_json(index_json_sha256, index_json_size, root,
"org.opencontainers.image.ref.name" => version_rebuild)
image_tag = "#{GitHubPackages.root_url(org, repo, DOCKER_PREFIX)}/#{formula_name}:#{version_rebuild}"
image_formula_name = GitHubPackages.image_formula_name(formula_name)
image_tag = "#{GitHubPackages.root_url(org, repo, DOCKER_PREFIX)}/#{image_formula_name}:#{version_rebuild}"
puts
args = ["copy", "--all", "oci:#{root}", image_tag.to_s]
@ -321,7 +326,7 @@ class GitHubPackages
else
args << "--dest-creds=#{user}:#{token}"
system_command!(skopeo, verbose: true, print_stdout: true, args: args)
package_name = "#{GitHubPackages.repo_without_prefix(repo)}/#{formula_name}"
package_name = "#{GitHubPackages.repo_without_prefix(repo)}/#{image_formula_name}"
ohai "Uploaded to https://github.com/orgs/Homebrew/packages/container/package/#{package_name}"
end
end

View File

@ -40,7 +40,7 @@ class Mktemp
end
def run
@tmpdir = Pathname.new(Dir.mktmpdir("#{@prefix.tr "@", "-"}-", HOMEBREW_TEMP))
@tmpdir = Pathname.new(Dir.mktmpdir("#{@prefix.tr "@", "AT"}-", HOMEBREW_TEMP))
# Make sure files inside the temporary directory have the same group as the
# brew instance.

View File

@ -308,7 +308,8 @@ class Bottle
# TODO: this will need adjusted when if we use GitHub Packages by default
path, resolved_basename = if spec.root_url.match?(GitHubPackages::URL_REGEX)
["#{@name}/blobs/sha256:#{checksum}", filename]
image_name = GitHubPackages.image_formula_name(@name)
["#{image_name}/blobs/sha256:#{checksum}", filename]
else
filename
end
@ -401,7 +402,8 @@ class Bottle
version_rebuild = GitHubPackages.version_rebuild(@resource.version, rebuild)
resource.version(version_rebuild)
resource.url("#{@spec.root_url}/#{name}/manifests/#{version_rebuild}", {
image_name = GitHubPackages.image_formula_name(@name)
resource.url("#{@spec.root_url}/#{image_name}/manifests/#{version_rebuild}", {
using: CurlGitHubPackagesDownloadStrategy,
headers: ["Accept: application/vnd.oci.image.index.v1+json"],
})