mirror of
https://github.com/chromebrew/chromebrew.git
synced 2026-01-10 07:57:59 -05:00
* docker rebuilds & updates for x86_64 and armv7l * remove go dep * add working i686 go_md2man binary * add all possible i686 builds * add binary, update packages.yaml * suggested changes * suggested changes * add proper containerd binaries * update and rebuild containers_common * add catatonit * add podman * add distrobox * add conmon * fix deps * rebuild podman * rebuild lvm2, adjust podman build parameters * add binaries * fixup containers_common * revamp containers_common again * add policy.json symlink to containers_common * adjust podman * rebuild libbpf * update defaults in containers_common * fix tz * Add logic for creating local container policy file * move local container policy file logic to containers_common * adjust logic * adjust logic * update logic * adjust logic * adjust logic * adjust logic * adjust logic * update podman paths * rebuild podman * podman rebuild * rebuilds * fix hashes * cni rebuild * add runc dep to podman * lint * remove docker, podman, and distrobox * remove removed packages from packages.yaml
210 lines
10 KiB
Ruby
210 lines
10 KiB
Ruby
# Adapted from Arch Linux containers-common PKGBUILD at:
|
|
# https://github.com/archlinux/svntogit-community/raw/packages/containers-common/trunk/PKGBUILD
|
|
|
|
require 'package'
|
|
|
|
class Containers_common < Package
|
|
description 'Configuration files and manpages for containers'
|
|
homepage 'https://github.com/containers'
|
|
version '0.49.3'
|
|
license 'Apache'
|
|
compatibility 'all'
|
|
source_url 'https://github.com/containers/common.git'
|
|
git_hashtag "v#{version}"
|
|
|
|
binary_url({
|
|
aarch64: 'https://gitlab.com/api/v4/projects/26210301/packages/generic/containers_common/0.49.3_armv7l/containers_common-0.49.3-chromeos-armv7l.tar.zst',
|
|
armv7l: 'https://gitlab.com/api/v4/projects/26210301/packages/generic/containers_common/0.49.3_armv7l/containers_common-0.49.3-chromeos-armv7l.tar.zst',
|
|
i686: 'https://gitlab.com/api/v4/projects/26210301/packages/generic/containers_common/0.49.3_i686/containers_common-0.49.3-chromeos-i686.tar.zst',
|
|
x86_64: 'https://gitlab.com/api/v4/projects/26210301/packages/generic/containers_common/0.49.3_x86_64/containers_common-0.49.3-chromeos-x86_64.tar.zst'
|
|
})
|
|
binary_sha256({
|
|
aarch64: '3f31ccb561a6df7db406e88ee8b6d664e5479e56e38ac59c0c7c8064cc669500',
|
|
armv7l: '3f31ccb561a6df7db406e88ee8b6d664e5479e56e38ac59c0c7c8064cc669500',
|
|
i686: 'dd67820ba974d91fbd148ea3720feb1fbece604128487e0605adfb3e728b1488',
|
|
x86_64: '0d195eaadbcdd4e3149b0ed1777809d9f51d6f6a77a7da59f28aa3ed1a198f0a'
|
|
})
|
|
|
|
depends_on 'catatonit'
|
|
|
|
depends_on 'netavark'
|
|
depends_on 'go_md2man' => :build
|
|
|
|
no_fhs
|
|
|
|
def self.build
|
|
@image_version = 'v5.23.1'
|
|
@podman_version = 'v4.3.1'
|
|
@shortnames_version = 'v2022.02.08'
|
|
@skopeo_version = 'v1.9.3'
|
|
@storage_version = 'v1.43.1'
|
|
Dir.chdir 'docs' do
|
|
system 'for _man_page in *.md
|
|
do
|
|
go-md2man -in $_man_page -out ${_man_page//.md}
|
|
done'
|
|
end
|
|
FileUtils.mkdir_p 'git'
|
|
Dir.chdir 'git' do
|
|
system "git clone --depth 1 --branch #{@image_version} https://github.com/containers/image.git"
|
|
Dir.chdir 'image/docs' do
|
|
FileUtils.mkdir_p 'man5'
|
|
FileUtils.mv Dir.glob('*.5.md'), 'man5/'
|
|
system 'for _man_page in *.md
|
|
do
|
|
go-md2man -in $_man_page -out ${_man_page//.md}.1
|
|
done'
|
|
system 'for _man_page in man5/*.md
|
|
do
|
|
go-md2man -in $_man_page -out ${_man_page//.md}
|
|
done'
|
|
end
|
|
system "git clone --depth 1 --branch #{@podman_version} https://github.com/containers/podman.git"
|
|
system "git clone --depth 1 --branch #{@shortnames_version} https://github.com/containers/shortnames.git"
|
|
system "git clone --depth 1 --branch #{@skopeo_version} https://github.com/containers/skopeo.git"
|
|
system "git clone --depth 1 --branch #{@storage_version} https://github.com/containers/storage.git"
|
|
Dir.chdir 'storage' do
|
|
FileUtils.mkdir_p 'tests/tools/build/'
|
|
FileUtils.ln_s "#{CREW_PREFIX}/bin/go-md2man", 'tests/tools/build/'
|
|
system 'make -C docs'
|
|
end
|
|
end
|
|
end
|
|
|
|
def self.install
|
|
FileUtils.mkdir_p %W[
|
|
#{CREW_DEST_PREFIX}/etc/containers/networks
|
|
#{CREW_DEST_PREFIX}/etc/containers/oci/hooks.d/
|
|
#{CREW_DEST_PREFIX}/etc/containers/registries.conf.d/
|
|
#{CREW_DEST_PREFIX}/etc/containers/registries.d/
|
|
#{CREW_DEST_PREFIX}/share/containers/oci/hooks.d/
|
|
#{CREW_DEST_PREFIX}/var/lib/containers/
|
|
#{CREW_DEST_PREFIX}/.config/containers/
|
|
#{CREW_DEST_MAN_PREFIX}/man1/
|
|
#{CREW_DEST_MAN_PREFIX}/man5/
|
|
]
|
|
@mounts_conf = <<~'MOUNTS_CONF_EOF'
|
|
# Configuration file for default mounts in containers (see man 5
|
|
# containers-mounts.conf for further information)
|
|
MOUNTS_CONF_EOF
|
|
File.write("#{CREW_DEST_PREFIX}/etc/containers/mounts.conf", @mounts_conf, perm: 0o644)
|
|
Dir.chdir "#{CREW_DEST_PREFIX}/.config/containers/" do
|
|
FileUtils.ln_s "#{CREW_PREFIX}/etc/containers/mounts.conf", 'mounts.conf'
|
|
end
|
|
system "sed -i 's,#init_path = \"/usr/libexec/podman/catatonit\",init_path = \"#{CREW_PREFIX}/bin/catatonit\",' pkg/config/containers.conf"
|
|
system "sed -i 's,#seccomp_profile = \"/usr/share/containers/seccomp.json\",seccomp_profile = \"#{CREW_PREFIX}/etc/containers/seccomp.json\",' pkg/config/containers.conf"
|
|
system "sed -i 's,#volume_path = \"/var/lib/containers/storage/volumes\",volume_path = \"#{CREW_PREFIX}/var/lib/containers/storage/volumes\",' pkg/config/containers.conf"
|
|
system "sed -i 's,#init = false,init = true,' pkg/config/containers.conf"
|
|
system "sed -i 's,#tz = \"\",tz = \"local\",' pkg/config/containers.conf"
|
|
FileUtils.install 'pkg/config/containers.conf', "#{CREW_DEST_PREFIX}/etc/containers/", mode: 0o644
|
|
FileUtils.install 'pkg/config/containers.conf', "#{CREW_DEST_PREFIX}/share/containers/", mode: 0o644
|
|
Dir.chdir "#{CREW_DEST_PREFIX}/.config/containers/" do
|
|
FileUtils.ln_s "#{CREW_PREFIX}/etc/containers/containers.conf", 'containers.conf'
|
|
end
|
|
FileUtils.install 'pkg/seccomp/seccomp.json', "#{CREW_DEST_PREFIX}/etc/containers/", mode: 0o644
|
|
FileUtils.install 'pkg/seccomp/seccomp.json', "#{CREW_DEST_PREFIX}/share/containers/", mode: 0o644
|
|
Dir.chdir "#{CREW_DEST_PREFIX}/.config/containers/" do
|
|
FileUtils.ln_s "#{CREW_PREFIX}/etc/containers/seccomp.json", 'seccomp.json'
|
|
end
|
|
FileUtils.install Dir['docs/*.5'], "#{CREW_DEST_MAN_PREFIX}/man5/", mode: 0o644
|
|
|
|
Dir.chdir 'git' do
|
|
Dir.chdir 'image' do
|
|
@registry_add = <<~'REGISTRY_ADD_EOF'
|
|
# Note that changing the order here may break tests.
|
|
unqualified-search-registries = ['docker.io', 'quay.io', 'registry.fedoraproject.org']
|
|
|
|
[[registry]]
|
|
# In Nov. 2020, Docker rate-limits image pulling. To avoid hitting these
|
|
# limits while testing, always use the google mirror for qualified and
|
|
# unqualified `docker.io` images.
|
|
# Ref: https://cloud.google.com/container-registry/docs/pulling-cached-images
|
|
prefix="docker.io"
|
|
location="mirror.gcr.io"
|
|
|
|
# 2020-10-27 a number of images are not present in gcr.io, and podman
|
|
# barfs spectacularly when trying to fetch them. We've hand-copied
|
|
# those to quay, using skopeo copy --all ...
|
|
[[registry]]
|
|
prefix="docker.io/library"
|
|
location="quay.io/libpod"
|
|
REGISTRY_ADD_EOF
|
|
File.write('registries.conf', @registry_add, mode: 'a+')
|
|
FileUtils.install 'registries.conf', "#{CREW_DEST_PREFIX}/etc/containers/", mode: 0o644
|
|
Dir.chdir "#{CREW_DEST_PREFIX}/.config/containers/" do
|
|
FileUtils.ln_s "#{CREW_PREFIX}/etc/containers/registries.conf", 'registries.conf'
|
|
end
|
|
FileUtils.install Dir['docs/*.1'], "#{CREW_DEST_MAN_PREFIX}/man1/", mode: 0o644
|
|
FileUtils.install Dir['docs/man5/*.5'], "#{CREW_DEST_MAN_PREFIX}/man5/", mode: 0o644
|
|
end
|
|
Dir.chdir 'podman' do
|
|
FileUtils.install Dir['*.5'], "#{CREW_DEST_MAN_PREFIX}/man5/", mode: 0o644
|
|
end
|
|
|
|
Dir.chdir 'shortnames' do
|
|
FileUtils.install 'shortnames.conf', "#{CREW_DEST_PREFIX}/etc/containers/registries.conf.d/00-shortnames.conf",
|
|
mode: 0o644
|
|
end
|
|
Dir.chdir 'skopeo' do
|
|
FileUtils.install 'default-policy.json', "#{CREW_DEST_PREFIX}/etc/containers/policy.json", mode: 0o644
|
|
Dir.chdir "#{CREW_DEST_PREFIX}/.config/containers/" do
|
|
FileUtils.ln_s "#{CREW_PREFIX}/etc/containers/policy.json", 'policy.json'
|
|
end
|
|
FileUtils.install 'default.yaml', "#{CREW_DEST_PREFIX}/etc/containers/registries.d/", mode: 0o644
|
|
end
|
|
Dir.chdir 'storage' do
|
|
system "sed -i 's,/run/containers/storage,#{CREW_PREFIX}/var/run/containers/storage,g' storage.conf"
|
|
system "sed -i 's,/var/lib/containers/storage,#{CREW_PREFIX}/var/lib/containers/storage,g' storage.conf"
|
|
system "sed -i 's,\\$HOME/.local/share/containers/storage,#{CREW_PREFIX}/var/lib/containers/storage,g' storage.conf"
|
|
system "sed -i 's,# rootless_storage_path,rootless_storage_path,g' storage.conf"
|
|
FileUtils.install 'storage.conf', "#{CREW_DEST_PREFIX}/etc/containers/", mode: 0o644
|
|
FileUtils.install 'storage.conf', "#{CREW_DEST_PREFIX}/share/containers/", mode: 0o644
|
|
Dir.chdir "#{CREW_DEST_PREFIX}/.config/containers/" do
|
|
FileUtils.ln_s "#{CREW_PREFIX}/etc/containers/storage.conf", 'storage.conf'
|
|
end
|
|
FileUtils.install Dir['docs/*.1'], "#{CREW_DEST_MAN_PREFIX}/man1/", mode: 0o644
|
|
FileUtils.install Dir['docs/*.5'], "#{CREW_DEST_MAN_PREFIX}/man5/", mode: 0o644
|
|
end
|
|
end
|
|
end
|
|
|
|
def self.postinstall
|
|
# Podman will not work unless a user policy.json file at
|
|
# #{HOME}/.config/containers/policy.json is populated.
|
|
@user_container_policy = File.file?("#{HOME}/.config/containers/policy.json")
|
|
@create_user_container_policy = true unless @user_container_policy
|
|
@create_user_container_ask = true if @user_container_policy
|
|
if @create_user_container_ask
|
|
return if FileUtils.compare_file("#{CREW_PREFIX}/etc/containers/policy.json",
|
|
"#{HOME}/.config/containers/policy.json")
|
|
|
|
print "\nWould you like to overwrite the user container policy file with the package default? [y/N] "
|
|
case $stdin.gets.chomp.downcase
|
|
when 'y', 'yes'
|
|
@create_user_container_policy = true
|
|
else
|
|
@create_user_container_policy = false
|
|
puts 'User container policy file left unchanged.'.lightgreen
|
|
end
|
|
end
|
|
return unless @create_user_container_policy
|
|
|
|
FileUtils.cp "#{CREW_PREFIX}/etc/containers/policy.json", "#{HOME}/.config/containers/policy.json"
|
|
puts "Default container policy written to: #{HOME}/.config/containers/policy.json".lightgreen
|
|
end
|
|
|
|
def self.remove
|
|
return if CREW_IN_CONTAINER
|
|
|
|
@config_file = "#{HOME}/.config/containers/policy.json"
|
|
print "\nWould you like to remove the user container policy file #{@config_file} ? [y/N] "
|
|
case $stdin.gets.chomp.downcase
|
|
when 'y', 'yes'
|
|
FileUtils.rm_rf @config_file
|
|
puts "#{@config_file} removed.".lightred
|
|
else
|
|
puts "#{@config_file} saved.".lightgreen
|
|
end
|
|
end
|
|
end
|