Convert remaining OEM packages to sysexts and rework how they are built

common-oem-files was a giant hack. oem-release can now be easily be
generated from metadata embedded in the sysext image itself. grub.cfg is
often just a couple of lines, so there's no point in having all this
complex logic around generating it, especially when that logic has some
exceptions anyway. It's far easier to just explicitly store each variant
under build_library/oem. The list of OEMs is now generated by looking
for coreos-base/oem-*/*.ebuild.
This commit is contained in:
James Le Cuirot 2026-02-19 18:28:40 +00:00
parent 0d8e0d6b1e
commit 649e88437b
No known key found for this signature in database
GPG Key ID: 1226415D00DD3137
93 changed files with 301 additions and 746 deletions

View File

@ -0,0 +1,3 @@
# Flatcar GRUB settings
set oem_id="akamai"

View File

@ -1,4 +1,6 @@
# Flatcar GRUB settings for AMI
# Flatcar GRUB settings
set oem_id="ec2"
# Blacklist the Xen framebuffer module so it doesn't get loaded at boot
# Disable `ens3` style names, so eth0 is used for both ixgbevf or xen.

View File

@ -1,3 +1,6 @@
# Flatcar GRUB settings
set oem_id="azure"
set linux_append="flatcar.autologin"
# Azure only has a serial console.

View File

@ -0,0 +1,3 @@
# Flatcar GRUB settings
set oem_id="digitalocean"

View File

@ -1,3 +1,7 @@
# Flatcar GRUB settings
set oem_id="gce"
# GCE only has a serial console.
set linux_console="console=ttyS0,115200n8"
serial com0 --speed=115200 --word=8 --parity=no

View File

@ -0,0 +1,3 @@
# Flatcar GRUB settings
set oem_id="hetzner"

View File

@ -0,0 +1,3 @@
# Flatcar GRUB settings
set oem_id="kubevirt"

View File

@ -0,0 +1,3 @@
# Flatcar GRUB settings
set oem_id="nutanix"

View File

@ -0,0 +1,4 @@
# Flatcar GRUB settings
set oem_id="openstack"
set linux_append="flatcar.autologin"

View File

@ -0,0 +1,4 @@
# Flatcar GRUB settings
set oem_id="proxmoxve"
set linux_append="flatcar.autologin"

View File

@ -0,0 +1,4 @@
# Flatcar GRUB settings
set oem_id="qemu"
set linux_append="flatcar.autologin"

View File

@ -1 +1,4 @@
# Flatcar GRUB settings
set oem_id="scaleway"
set linux_console="console=ttyS0,115200n8 earlycon=ttyS0,115200"

View File

@ -0,0 +1,3 @@
# Flatcar GRUB settings
set oem_id="openstack"

View File

@ -0,0 +1,4 @@
# Flatcar GRUB settings
set oem_id="vmware"
set linux_append="flatcar.autologin"

View File

@ -20,42 +20,35 @@ get_oem_overlay_root() {
printf '%s' "${overlay_root}"
}
_get_oem_ids() {
local arch list_var_name
arch=${1}; shift
list_var_name=${1}; shift
local overlay_root
overlay_root=$(get_oem_overlay_root)
local -a ebuilds=("${overlay_root}/coreos-base/common-oem-files/common-oem-files-"*'.ebuild')
if [[ ${#ebuilds[@]} -eq 0 ]] || [[ ! -e ${ebuilds[0]} ]]; then
echo "No coreos-base/common-oem-files ebuilds?!" >&2
exit 1
fi
# This defines local COMMON_OEMIDS, AMD64_ONLY_OEMIDS,
# ARM64_ONLY_OEMIDS and OEMIDS variable. We don't use the last
# one. Also defines global-by-default EAPI, which we make local
# here to avoid making it global.
local EAPI
source "${ebuilds[0]}" flatcar-local-variables
local -n arch_oemids_ref="${arch^^}_ONLY_OEMIDS"
local all_oemids=(
"${COMMON_OEMIDS[@]}"
"${arch_oemids_ref[@]}"
)
mapfile -t "${list_var_name}" < <(printf '%s\n' "${all_oemids[@]}" | sort)
}
# Gets a list of OEMs that are using sysexts.
#
# 1 - arch
# 2 - name of an array variable to store the result in
get_oem_id_list() {
_get_oem_ids "$@"
local arch=${1}; shift
local -n list_var_ref=${1}; shift
local overlay_root dir ebuild regex
overlay_root=$(get_oem_overlay_root)
for dir in "${overlay_root}"/coreos-base/oem-*; do
for ebuild in "${dir}"/*.ebuild; do
if [[ ! -e ${ebuild} ]]; then
echo "No coreos-base/oem-* ebuilds?!" >&2
exit 1
fi
# Check the KEYWORDS by sourcing the ebuild. We can't rely on Portage
# because this needs to work outside the SDK. OEM ebuilds are relatively
# boring, so this should be sufficient. This doesn't check whether the
# KEYWORDS are stable, but that shouldn't matter.
regex="\b${arch}\b"
if ( set +eu; . "${ebuild}" &>/dev/null; [[ ${KEYWORDS} =~ ${regex} ]] ); then
list_var_ref+=( "${dir##*/oem-}" )
break
fi
done
done
}
# Gets a list of OEM sysext descriptors.
@ -65,19 +58,14 @@ get_oem_id_list() {
#
# Format: "name|metapackage|useflags"
get_oem_sysext_matrix() {
local arch list_var_name
arch=${1}; shift
list_var_name=${1}; shift
local arch=${1}; shift
declare -n list_var_ref=${1}; shift
local -a oem_ids
_get_oem_ids "${arch}" oem_ids
get_oem_id_list "${arch}" oem_ids
local -a matrix=()
local oem_id
for oem_id in "${oem_ids[@]}"; do
matrix+=("oem-${oem_id}|coreos-base/oem-${oem_id}|")
list_var_ref+=( "oem-${oem_id}|coreos-base/oem-${oem_id}|" )
done
local -n matrix_ref="${list_var_name}"
matrix_ref=("${matrix[@]}")
}

View File

@ -39,28 +39,6 @@ VALID_IMG_TYPES=(
nutanix
)
#list of oem package names, minus the oem- prefix
VALID_OEM_PACKAGES=(
akamai
azure
cloudsigma
cloudstack
digitalocean
exoscale
gce
hetzner
hyperv
kubevirt
openstack
proxmoxve
qemu
scaleway
stackit
vagrant
virtualbox
vmware
)
# Set at runtime to one of the above types
VM_IMG_TYPE=DEFAULT
@ -82,18 +60,9 @@ VM_GENERATED_FILES=()
# If set to 0 then a partition skeleton won't be laid out on VM_TMP_IMG
IMG_DEFAULT_PARTITIONED_IMG=1
# If set install the given package name to the OEM partition
IMG_DEFAULT_OEM_PACKAGE=
# Forced OEM package name overriding what may be in the format
IMG_FORCE_OEM_PACKAGE=
# If set install the given package name to the OEM sysext image
IMG_DEFAULT_OEM_SYSEXT=
# Forced OEM package name overriding what may be in the format
IMG_FORCE_OEM_SYSEXT=
# Hook to do any final tweaks or grab data while fs is mounted.
IMG_DEFAULT_FS_HOOK=
@ -123,8 +92,7 @@ IMG_DEFAULT_CPUS=2
IMG_qemu_uefi_DISK_FORMAT=qcow2
IMG_qemu_uefi_DISK_LAYOUT=vm
IMG_qemu_uefi_CONF_FORMAT=qemu_uefi
IMG_qemu_uefi_OEM_PACKAGE=common-oem-files
IMG_qemu_uefi_OEM_SYSEXT=oem-qemu
IMG_qemu_uefi_OEM_SYSEXT=qemu
## xen
IMG_xen_CONF_FORMAT=xl
@ -133,42 +101,37 @@ IMG_xen_CONF_FORMAT=xl
IMG_virtualbox_DISK_FORMAT=vmdk_ide
IMG_virtualbox_DISK_LAYOUT=vm
IMG_virtualbox_CONF_FORMAT=ovf_virtualbox
IMG_virtualbox_OEM_PACKAGE=oem-virtualbox
IMG_virtualbox_OEM_SYSEXT=virtualbox
## vagrant
IMG_vagrant_FS_HOOK=box
IMG_vagrant_BUNDLE_FORMAT=box
IMG_vagrant_DISK_FORMAT=vmdk_ide
IMG_vagrant_DISK_LAYOUT=vagrant
IMG_vagrant_CONF_FORMAT=vagrant
IMG_vagrant_OEM_PACKAGE=oem-vagrant
IMG_vagrant_OEM_SYSEXT=vagrant
## vagrant_parallels
IMG_vagrant_parallels_FS_HOOK=box
IMG_vagrant_parallels_BUNDLE_FORMAT=box
IMG_vagrant_parallels_DISK_FORMAT=hdd
IMG_vagrant_parallels_DISK_LAYOUT=vagrant
IMG_vagrant_parallels_CONF_FORMAT=vagrant_parallels
IMG_vagrant_parallels_OEM_PACKAGE=oem-vagrant
IMG_vagrant_parallels_OEM_SYSEXT=vagrant
## vmware
IMG_vmware_DISK_FORMAT=vmdk_scsi
IMG_vmware_DISK_LAYOUT=vm
IMG_vmware_CONF_FORMAT=vmx
IMG_vmware_OEM_PACKAGE=common-oem-files
IMG_vmware_OEM_SYSEXT=oem-vmware
IMG_vmware_OEM_SYSEXT=vmware
## vmware_ova
IMG_vmware_ova_BUNDLE_FORMAT=ova
IMG_vmware_ova_DISK_FORMAT=vmdk_stream
IMG_vmware_ova_DISK_LAYOUT=vm
IMG_vmware_ova_CONF_FORMAT=ovf_vmware
IMG_vmware_ova_BUNDLE_FORMAT=ova
IMG_vmware_ova_OEM_PACKAGE=common-oem-files
IMG_vmware_ova_OEM_SYSEXT=oem-vmware
IMG_vmware_ova_OEM_SYSEXT=vmware
## vmware_raw
IMG_vmware_raw_OEM_PACKAGE=common-oem-files
IMG_vmware_raw_OEM_SYSEXT=oem-vmware
IMG_vmware_raw_OEM_SYSEXT=vmware
## parallels
IMG_parallels_BUNDLE_FORMAT=pvm_tgz
@ -178,23 +141,19 @@ IMG_parallels_CONF_FORMAT=pvs
## ami
IMG_ami_vmdk_DISK_FORMAT=vmdk_stream
IMG_ami_vmdk_OEM_PACKAGE=common-oem-files
IMG_ami_vmdk_SYSEXT=oem-ami
IMG_ami_vmdk_DISK_LAYOUT=vm
IMG_ami_OEM_PACKAGE=common-oem-files
IMG_ami_OEM_SYSEXT=oem-ami
IMG_ami_vmdk_OEM_SYSEXT=ami
IMG_ami_DISK_LAYOUT=vm
IMG_ami_OEM_SYSEXT=ami
## openstack
IMG_openstack_DISK_FORMAT=qcow2
IMG_openstack_DISK_LAYOUT=vm
IMG_openstack_OEM_PACKAGE=common-oem-files
IMG_openstack_OEM_SYSEXT=oem-openstack
IMG_openstack_OEM_SYSEXT=openstack
## openstack but without a resized root partition for more flexibility
IMG_openstack_mini_DISK_FORMAT=qcow2
IMG_openstack_mini_OEM_PACKAGE=common-oem-files
IMG_openstack_mini_OEM_SYSEXT=oem-openstack
IMG_openstack_mini_OEM_SYSEXT=openstack
## pxe, which is an cpio image
IMG_pxe_DISK_FORMAT=cpio
@ -211,83 +170,71 @@ IMG_iso_MEM=2048
## gce, image tarball
IMG_gce_DISK_LAYOUT=vm
IMG_gce_CONF_FORMAT=gce
IMG_gce_OEM_PACKAGE=common-oem-files
IMG_gce_OEM_SYSEXT=oem-gce
IMG_gce_OEM_SYSEXT=gce
## cloudstack
IMG_cloudstack_OEM_PACKAGE=oem-cloudstack
IMG_cloudstack_OEM_SYSEXT=cloudstack
IMG_cloudstack_vhd_DISK_FORMAT=vhd
IMG_cloudstack_vhd_OEM_PACKAGE=oem-cloudstack
IMG_cloudstack_vhd_OEM_SYSEXT=cloudstack
## digitalocean
IMG_digitalocean_OEM_PACKAGE=common-oem-files
IMG_digitalocean_OEM_SYSEXT=oem-digitalocean
IMG_digitalocean_OEM_SYSEXT=digitalocean
## exoscale
IMG_exoscale_DISK_FORMAT=qcow2
IMG_exoscale_OEM_PACKAGE=oem-exoscale
IMG_exoscale_OEM_SYSEXT=exoscale
## azure
IMG_azure_DISK_FORMAT=vhd_fixed
IMG_azure_DISK_LAYOUT=azure
IMG_azure_OEM_PACKAGE=common-oem-files
IMG_azure_OEM_SYSEXT=oem-azure
IMG_azure_OEM_SYSEXT=azure
## hetzner
IMG_hetzner_DISK_LAYOUT=vm
IMG_hetzner_OEM_PACKAGE=common-oem-files
IMG_hetzner_OEM_SYSEXT=oem-hetzner
IMG_hetzner_OEM_SYSEXT=hetzner
## hyper-v
IMG_hyperv_DISK_FORMAT=vhd
IMG_hyperv_OEM_PACKAGE=common-oem-files
IMG_hyperv_OEM_SYSEXT=oem-hyperv
IMG_hyperv_OEM_SYSEXT=hyperv
## hyper-v vhdx
IMG_hyperv_vhdx_DISK_FORMAT=vhdx
IMG_hyperv_vhdx_OEM_PACKAGE=common-oem-files
IMG_hyperv_vhdx_OEM_SYSEXT=oem-hyperv
IMG_hyperv_vhdx_OEM_SYSEXT=hyperv
## cloudsigma
IMG_cloudsigma_DISK_FORMAT=qcow2
IMG_cloudsigma_OEM_PACKAGE=oem-cloudsigma
IMG_cloudsigma_OEM_SYSEXT=cloudsigma
## scaleway
IMG_scaleway_DISK_FORMAT=qcow2
IMG_scaleway_DISK_LAYOUT=vm
IMG_scaleway_OEM_PACKAGE=common-oem-files
IMG_scaleway_OEM_SYSEXT=oem-scaleway
IMG_scaleway_OEM_SYSEXT=scaleway
IMG_scaleway_DISK_EXTENSION=qcow2
## stackit
IMG_stackit_DISK_FORMAT=qcow2
IMG_stackit_DISK_LAYOUT=vm
IMG_stackit_OEM_PACKAGE=common-oem-files
IMG_stackit_OEM_SYSEXT=oem-stackit
IMG_stackit_OEM_SYSEXT=stackit
## kubevirt
IMG_kubevirt_DISK_FORMAT=qcow2
IMG_kubevirt_DISK_LAYOUT=vm
IMG_kubevirt_OEM_PACKAGE=common-oem-files
IMG_kubevirt_OEM_SYSEXT=oem-kubevirt
IMG_kubevirt_OEM_SYSEXT=kubevirt
IMG_kubevirt_DISK_EXTENSION=qcow2
## akamai (Linode)
IMG_akamai_DISK_LAYOUT=vm
IMG_akamai_OEM_PACKAGE=common-oem-files
IMG_akamai_OEM_SYSEXT=oem-akamai
IMG_akamai_OEM_SYSEXT=akamai
# proxmoxve
IMG_proxmoxve_DISK_FORMAT=qcow2
IMG_proxmoxve_DISK_LAYOUT=vm
IMG_proxmoxve_OEM_PACKAGE=common-oem-files
IMG_proxmoxve_OEM_SYSEXT=oem-proxmoxve
IMG_proxmoxve_OEM_SYSEXT=proxmoxve
## nutanix
IMG_nutanix_DISK_FORMAT=qcow2
IMG_nutanix_DISK_LAYOUT=vm
IMG_nutanix_OEM_PACKAGE=common-oem-files
IMG_nutanix_OEM_SYSEXT=oem-nutanix
IMG_nutanix_OEM_SYSEXT=nutanix
###########################################################
@ -320,18 +267,6 @@ set_vm_type() {
return 1
}
# Validate and set the oem package, colon delimited USE optional
set_vm_oem_pkg() {
local oem_pkg="${1}" valid_pkg
for valid_pkg in "${VALID_OEM_PACKAGES[@]}"; do
if [[ "${oem_pkg}" == "${valid_pkg}" ]]; then
IMG_FORCE_OEM_PACKAGE="oem-${oem_pkg}"
return 0
fi
done
return 1
}
# Validate and set source vm image path
set_vm_paths() {
local src_dir="${1}"; shift
@ -365,8 +300,7 @@ _get_vm_opt() {
local opt="$1"
local type_opt="IMG_${VM_IMG_TYPE}_${opt}"
local default_opt="IMG_DEFAULT_${opt}"
local force_opt="IMG_FORCE_${opt}"
echo "${!force_opt:-${!type_opt:-${!default_opt}}}"
echo "${!type_opt:-${!default_opt}}"
}
# Translate source image names to output names.
@ -455,42 +389,6 @@ setup_disk_image() {
fi
}
# If the current type defines a oem package install it to the given fs image.
install_oem_package() {
local oem_pkg=$(_get_vm_opt OEM_PACKAGE)
local oem_use=$(_get_vm_opt OEM_USE)
# The "${VM_IMG_TYPE}-oem-image-rootfs" directory name is
# important - it is used to determine the package target in
# coreos/base/profile.bashrc
local oem_tmp="${VM_TMP_DIR}/${VM_IMG_TYPE}-oem-image-rootfs"
if [[ -z "${oem_pkg}" ]]; then
return 0
fi
# Split into two steps because we want to always install $oem_pkg from
# the ebuild (build_packages doesn't handle it) *but* we never want to
# build anything else from source here. emerge doesn't have a way to
# enforce this in a single command.
info "Building ${oem_pkg}"
USE="${oem_use}" emerge-${BOARD} \
--nodeps --buildpkgonly --usepkg n \
--verbose "${oem_pkg}"
local getbinpkg
if [[ ${FLAGS_getbinpkg} -eq ${FLAGS_TRUE} ]]; then
getbinpkg=--getbinpkg
fi
info "Installing ${oem_pkg} to OEM partition"
USE="${oem_use}" emerge-${BOARD} \
--root="${oem_tmp}" --sysroot="${oem_tmp}" \
--usepkgonly ${getbinpkg} \
--verbose --jobs=2 "${oem_pkg}"
sudo rsync -a "${oem_tmp}/oem/" "${VM_TMP_ROOT}/oem/"
sudo rm -rf "${oem_tmp}"
}
# Install the prebuilt OEM sysext file into the OEM partition.
# The sysext should have been built by 'build_image oem_sysext'.
install_oem_sysext() {
@ -500,7 +398,7 @@ install_oem_sysext() {
return 0
fi
local prebuilt_sysext_filename="${oem_sysext}.raw"
local prebuilt_sysext_filename="oem-${oem_sysext}.raw"
local prebuilt_sysext_path="${FLAGS_from}/${prebuilt_sysext_filename}"
local version="${FLATCAR_VERSION}"
@ -509,34 +407,27 @@ install_oem_sysext() {
fi
local installed_sysext_oem_dir='/oem/sysext'
local installed_sysext_file_prefix="${oem_sysext}-${version}"
local installed_sysext_file_prefix="oem-${oem_sysext}-${version}"
local installed_sysext_filename="${installed_sysext_file_prefix}.raw"
local installed_sysext_abspath="${installed_sysext_oem_dir}/${installed_sysext_filename}"
info "Installing ${oem_sysext} sysext from prebuilt image"
info "Installing oem-${oem_sysext} sysext from prebuilt image"
sudo install -Dpm 0644 \
"${prebuilt_sysext_path}" \
"${VM_TMP_ROOT}${installed_sysext_abspath}" ||
die "Could not install ${oem_sysext} sysext"
die "Could not install oem-${oem_sysext} sysext"
# Mark the installed sysext as active.
sudo touch "${VM_TMP_ROOT}${installed_sysext_oem_dir}/active-${oem_sysext}"
}
sudo touch "${VM_TMP_ROOT}${installed_sysext_oem_dir}/active-oem-${oem_sysext}"
# Any other tweaks required?
run_fs_hook() {
local fs_hook=$(_get_vm_opt FS_HOOK)
if [[ -n "${fs_hook}" ]]; then
info "Running ${fs_hook} fs hook"
_run_${fs_hook}_fs_hook "$@"
fi
}
# Extract metadata from the sysext and write it to oem-release. Chop off the
# oem- prefix from SYSEXT_ID because that's how it has traditionally looked.
sudo systemd-dissect --json=short "${prebuilt_sysext_path}" | jq -r '.sysextRelease | .[]' |
sed -n -r -e "s/^SYSEXT_ID=oem-/SYSEXT_ID=/" -e "s/^SYSEXT_//p" |
sudo install -m0644 /dev/stdin "${VM_TMP_ROOT}/oem/oem-release"
_run_box_fs_hook() {
# Copy basic Vagrant configs from OEM
mkdir -p "${VM_TMP_DIR}/box"
cp -R "${VM_TMP_ROOT}/oem/box/." "${VM_TMP_DIR}/box"
sudo rm -fr "${VM_TMP_ROOT}/oem/box"
# Copy the OEM-specific grub.cfg.
sudo install -m0644 "${BUILD_LIBRARY_DIR}/oem/${oem_sysext}/grub.cfg" "${VM_TMP_ROOT}/oem/grub.cfg"
}
# Write the vm disk image to the target directory in the proper format
@ -980,11 +871,17 @@ EOF
VM_GENERATED_FILES+=( "$ovf" "${VM_README}" )
}
_copy_vagrant_files() {
local oem_sysext=$(_get_vm_opt OEM_SYSEXT)
cp -r "${BUILD_LIBRARY_DIR}/oem/${oem_sysext}/build/box" "${VM_TMP_DIR}/"
}
_write_vagrant_conf() {
local vm_mem="${1:-$(_get_vm_opt MEM)}"
local ovf="${VM_TMP_DIR}/box/box.ovf"
local mac="${VM_TMP_DIR}/box/base_mac.rb"
_copy_vagrant_files
"${BUILD_LIBRARY_DIR}/virtualbox_ovf.sh" \
--vm_name "$VM_NAME" \
--disk_vmdk "${VM_DST_IMG}" \
@ -997,6 +894,7 @@ _write_vagrant_parallels_conf() {
local vm_mem="${1:-$(_get_vm_opt MEM)}"
local pvs=$(_dst_path ".pvs")
_copy_vagrant_files
"${BUILD_LIBRARY_DIR}/parallels_pvs.sh" \
--vm_name "$VM_NAME" \
--disk_image "$VM_DST_IMG" \

View File

@ -0,0 +1 @@
- All the legacy OEMs (CloudSigma, CloudStack, Exoscale, Vagrant, VirtualBox) have been converted to sysexts. The transition should be seamless, but the Flatcar team was only able to test VirtualBox with and without Vagrant, so please report any issues.

View File

@ -38,8 +38,6 @@ DEFINE_integer mem "${DEFAULT_MEM}" \
"Memory size for the vm config in MBs."
DEFINE_string to "" \
"Destination folder for VM output file(s)"
DEFINE_string oem_pkg "" \
"OEM package to install"
DEFINE_boolean getbinpkg "${FLAGS_FALSE}" \
"Download binary packages from remote repository."
DEFINE_string getbinpkgver "" \
@ -67,10 +65,6 @@ if ! set_vm_type "${FLAGS_format}"; then
die_notrace "Invalid format: ${FLAGS_format}"
fi
if [ ! -z "${FLAGS_oem_pkg}" ] && ! set_vm_oem_pkg "${FLAGS_oem_pkg}"; then
die_notrace "Invalid oem : ${FLAGS_oem_pkg}"
fi
if [ -z "${FLAGS_board}" ] ; then
die_notrace "--board is required."
fi
@ -117,10 +111,8 @@ fix_mtab
# Setup new (raw) image, possibly resizing filesystems
setup_disk_image "${FLAGS_disk_layout}"
# Optionally install any OEM packages
install_oem_package
# Optionally install any OEM sysexts
install_oem_sysext
run_fs_hook
# Changes done, glue it together
write_vm_disk

View File

@ -1,158 +0,0 @@
# Copyright (c) 2023 The Flatcar Maintainers.
# Distributed under the terms of the GNU General Public License v2
EAPI=8
# The hack below is there in order to avoid excessive duplication of
# OEM IDs around the place. This ebuild serves as a Gentoo ebuild and
# as a bash file to be sourced in order to get arch-specific
# information about possible OEM IDs. The latter role is assumed when
# the ebuild is sourced with first argument being
# 'flatcar-local-variables'. Due to the requirements imposed by the
# section 7.3.1 in Package Manager Specification (that says that EAPI
# assignment must be the first non-comment, non-blank line in the
# file), shell scripts wanting to source this ebuild for geting OEM
# IDs, may need to declare EAPI as local, if it finds it suitable. The
# role of sourced script is used by our image-changes job. All this
# fluff needs to happen before we define or invoke any other
# Gentoo-specific variables or functions like "DEPEND" or "inherit"
# that may mess up sourcing.
#
# This can't be done with a separate shell file in FILESDIR, because
# portage moves the ebuild into some temporary directory where
# FILESDIR, although defined, does not even exist at first - it shows
# up during the invocation of any src_ functions. Probably a security
# measure or something.
if [[ ${1:-} = 'flatcar-local-variables' ]]; then
local -a COMMON_OEMIDS ARM64_ONLY_OEMIDS AMD64_ONLY_OEMIDS OEMIDS
fi
COMMON_OEMIDS=(
akamai
ami
azure
hetzner
openstack
proxmoxve
qemu
scaleway
stackit
kubevirt
)
ARM64_ONLY_OEMIDS=(
)
AMD64_ONLY_OEMIDS=(
digitalocean
gce
hyperv
vmware
nutanix
)
OEMIDS=(
"${COMMON_OEMIDS[@]}"
"${ARM64_ONLY_OEMIDS[@]}"
"${AMD64_ONLY_OEMIDS[@]}"
)
if [[ ${1:-} = 'flatcar-local-variables' ]]; then
return 0
else
unset COMMON_OEMIDS ARM64_ONLY_OEMIDS AMD64_ONLY_OEMIDS
fi
DESCRIPTION='Common OEM files'
HOMEPAGE='https://www.flatcar.org/'
LICENSE='Apache-2.0'
SLOT='0'
KEYWORDS='amd64 arm64'
IUSE="${OEMIDS[*]}"
REQUIRED_USE="^^ ( ${OEMIDS[*]} )"
# No source directory.
S="${WORKDIR}"
DEPEND=""
RDEPEND="${DEPEND}"
BDEPEND="
app-portage/gentoolkit
"
src_compile() {
local oemid package ebuild version name homepage lines oemid_cmdline
for oemid in "${OEMIDS[@]}"; do
if use "${oemid}"; then break; fi
done
package="coreos-base/oem-${oemid}"
ebuild=$(equery which "${package}")
version=${ebuild##*"oem-${oemid}-"}
version=${version%%'.ebuild'}
if [[ -z "${version}" ]]; then
die "Could not deduce a version from ebuild ${ebuild##*/} (${ebuild})"
fi
name=$(source <(grep -F 'SYSEXT_NAME=' "${ebuild}"); echo "${SYSEXT_NAME}")
if [[ -z "${name}" ]]; then
die "Missing SYSEXT_NAME variable in ${ebuild##*/}"
fi
# We need to prefix the HOMEPAGE variable with SYSEXT_, because
# portage marks HOMEPAGE as readonly and this gets propagated to
# subshells, so sourcing a snippet with HOMEPAGE=foo won't
# overwrite the readonly variable.
homepage=$(source <(grep -F 'HOMEPAGE=' "${ebuild}" | sed -e 's/^/SYSEXT_/'); echo "${SYSEXT_HOMEPAGE}")
lines=(
"ID=${oemid}"
"VERSION_ID=${version}"
"NAME=\"${name}\""
)
if [[ -n "${homepage}" ]]; then
lines+=( "HOME_URL=\"${homepage}\"" )
fi
lines+=(
'BUG_REPORT_URL="https://issues.flatcar.org"'
)
{
printf '%s\n' "${lines[@]}"
if [[ -e "${FILESDIR}/${oemid}/oem-release.frag" ]]; then
cat "${FILESDIR}/${oemid}/oem-release.frag"
fi
} >"${T}/oem-release"
oemid_cmdline="${oemid}"
# In this specific case, the OEM ID from the oem-release file ('ami')
# is different from the OEM ID kernel command line parameter ('ec2')
# because some services like Afterburn or Ignition expects 'ec2|aws' value.
if [[ "${oemid}" == "ami" ]]; then
oemid_cmdline="ec2"
fi
# STACKIT is running on top of OpenStack, so the `oem_cmdline` has to be `openstack` for Ignition/Afterburn integration but the `oemid` has to stay `stackit` to load the correct `oem-stackit` sysext image.
if [[ "${oemid}" == "stackit" ]]; then
oemid_cmdline="openstack"
fi
lines=(
'# Flatcar GRUB settings'
''
"set oem_id=\"${oemid_cmdline}\""
)
{
printf '%s\n' "${lines[@]}"
if [[ -e "${FILESDIR}/${oemid}/grub.cfg.frag" ]]; then
cat "${FILESDIR}/${oemid}/grub.cfg.frag"
fi
} >"${T}/grub.cfg"
}
src_install() {
insinto "/oem"
doins "${T}/grub.cfg"
doins "${T}/oem-release"
}

View File

@ -1 +0,0 @@
set linux_append="flatcar.autologin"

View File

@ -1 +0,0 @@
set linux_append="flatcar.autologin"

View File

@ -1 +0,0 @@
set linux_append="flatcar.autologin"

View File

@ -1 +0,0 @@
set linux_append="flatcar.autologin"

View File

@ -1,4 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd">
<pkgmetadata>
</pkgmetadata>

View File

@ -1,4 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
<pkgmetadata>
</pkgmetadata>

View File

@ -5,11 +5,9 @@ EAPI=8
DESCRIPTION="OEM suite for Akamai (previously Linode)"
HOMEPAGE="https://www.linode.com"
SRC_URI=""
LICENSE="GPL-2"
LICENSE="metapackage"
SLOT="0"
KEYWORDS="amd64 arm64"
IUSE=""
SYSEXT_NAME="Akamai"

View File

@ -1,4 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
<pkgmetadata>
</pkgmetadata>

View File

@ -7,23 +7,19 @@ inherit systemd
DESCRIPTION="OEM suite for Amazon Machine Images"
HOMEPAGE="http://aws.amazon.com/ec2/"
SRC_URI=""
S="${WORKDIR}"
LICENSE="Apache-2.0"
SLOT="0"
KEYWORDS="amd64 arm64"
IUSE=""
RDEPEND="
~app-emulation/amazon-ssm-agent-${PV}
coreos-base/flatcar-eks
~app-emulation/amazon-ssm-agent-${PV}
coreos-base/flatcar-eks
"
# for coreos-base/common-oem-files
SYSEXT_NAME="Amazon EC2"
S="${WORKDIR}"
src_install() {
systemd_dounit "${FILESDIR}/setup-oem.service"

View File

@ -1,4 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
<pkgmetadata>
</pkgmetadata>

View File

@ -7,12 +7,11 @@ inherit systemd tmpfiles
DESCRIPTION="OEM suite for Azure"
HOMEPAGE="https://azure.microsoft.com/"
SRC_URI=""
S="${WORKDIR}"
LICENSE="Apache-2.0"
SLOT="0"
KEYWORDS="amd64 arm64"
IUSE=""
RDEPEND="
~app-emulation/wa-linux-agent-${PV}
@ -22,10 +21,8 @@ RDEPEND="
sys-fs/inotify-tools
"
# for coreos-base/common-oem-files
SYSEXT_NAME="Microsoft Azure"
S="${WORKDIR}"
src_install() {
systemd_enable_service multi-user.target chronyd.service

View File

@ -1,4 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
<pkgmetadata>
</pkgmetadata>

View File

@ -1,27 +0,0 @@
# Copyright (c) 2015 CoreOS, Inc.. All rights reserved.
# Distributed under the terms of the GNU General Public License v2
EAPI=7
DESCRIPTION="OEM suite for CloudSigma images"
HOMEPAGE=""
SRC_URI=""
LICENSE="Apache-2.0"
SLOT="0"
KEYWORDS="amd64 x86"
# no source directory
S="${WORKDIR}"
src_prepare() {
default
sed -e "s\\@@OEM_VERSION_ID@@\\${PVR}\\g" \
"${FILESDIR}/cloud-config.yml" > "${T}/cloud-config.yml" || die
}
src_install() {
insinto "/oem"
doins "${T}/cloud-config.yml"
doins "${FILESDIR}/grub.cfg"
}

View File

@ -0,0 +1,19 @@
# Copyright (c) 2015 CoreOS, Inc.. All rights reserved.
# Distributed under the terms of the GNU General Public License v2
EAPI=8
DESCRIPTION="OEM suite for CloudSigma"
HOMEPAGE="https://www.cloudsigma.com/"
S="${WORKDIR}"
LICENSE="Apache-2.0"
SLOT="0"
KEYWORDS="amd64"
SYSEXT_NAME="CloudSigma"
src_install() {
insinto /usr/share/flatcar
sed "s:@@OEM_VERSION_ID@@:${PVR}:g" "${FILESDIR}/cloud-config.yml" | newins - cloud-config.yml
}

View File

@ -12,7 +12,7 @@ coreos:
[Service]
Type=oneshot
StandardOutput=journal+console
ExecStart=/oem/bin/cloudstack-ssh-key
ExecStart=/usr/bin/cloudstack-ssh-key
- name: cloudstack-cloudinit.service
command: restart
runtime: yes
@ -25,10 +25,10 @@ coreos:
[Service]
Type=oneshot
EnvironmentFile=/etc/environment
ExecStart=/oem/bin/cloudstack-coreos-cloudinit
ExecStart=/usr/bin/cloudstack-coreos-cloudinit
oem:
id: cloudstack
name: CloudStack
version-id: @@OEM_VERSION_ID@@
home-url: http://cloudstack.apache.org/
home-url: https://cloudstack.apache.org/
bug-report-url: https://github.com/coreos/coreos-overlay

View File

@ -1,6 +1,6 @@
#!/bin/bash
. /oem/bin/cloudstack-dhcp
. /usr/bin/cloudstack-dhcp
DHCP_SERVER=$(get_dhcp_ip)
USERDATA_URL="http://${DHCP_SERVER}/latest/user-data"

View File

@ -1,6 +1,6 @@
#!/bin/bash
. /oem/bin/cloudstack-dhcp
. /usr/bin/cloudstack-dhcp
DHCP_SERVER=$(get_dhcp_ip)
KEY_URL="http://${DHCP_SERVER}/latest/meta-data/public-keys"

View File

@ -18,7 +18,7 @@ sed -i -e '/^COREOS_PUBLIC_IPV4=/d' \
-e '/^COREOS_PRIVATE_IPV4=/d' \
"${ENV}"
. /oem/bin/cloudstack-dhcp
. /usr/bin/cloudstack-dhcp
DHCP_SERVER=$(get_dhcp_ip)
METADATA_URL="http://${DHCP_SERVER}/latest/meta-data/"

View File

@ -1,4 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
<pkgmetadata>
</pkgmetadata>

View File

@ -1,38 +0,0 @@
#
# Copyright (c) 2011 The Chromium OS Authors. All rights reserved.
# Copyright (c) 2014 CoreOS, Inc.. All rights reserved.
# Distributed under the terms of the GNU General Public License v2
# $Header:$
#
EAPI=7
DESCRIPTION="OEM suite for CloudStack images"
HOMEPAGE=""
SRC_URI=""
LICENSE="Apache-2.0"
SLOT="0"
KEYWORDS="amd64 x86"
IUSE=""
# no source directory
S="${WORKDIR}"
src_prepare() {
default
sed -e "s\\@@OEM_VERSION_ID@@\\${PVR}\\g" \
"${FILESDIR}/cloud-config.yml" > "${T}/cloud-config.yml" || die
}
src_install() {
into "/oem"
dobin "${FILESDIR}/cloudstack-dhcp"
dobin "${FILESDIR}/cloudstack-ssh-key"
dobin "${FILESDIR}/cloudstack-coreos-cloudinit"
dobin "${FILESDIR}/flatcar-setup-environment"
insinto "/oem"
doins "${T}/cloud-config.yml"
doins "${FILESDIR}/grub.cfg"
}

View File

@ -0,0 +1,22 @@
# Copyright (c) 2011 The Chromium OS Authors. All rights reserved.
# Copyright (c) 2014 CoreOS, Inc.. All rights reserved.
# Distributed under the terms of the GNU General Public License v2
EAPI=8
DESCRIPTION="OEM suite for CloudStack"
HOMEPAGE="https://cloudstack.apache.org/"
S="${WORKDIR}"
LICENSE="Apache-2.0"
SLOT="0"
KEYWORDS="amd64"
SYSEXT_NAME="CloudStack"
src_install() {
insinto /usr/share/flatcar
sed "s:@@OEM_VERSION_ID@@:${PVR}:g" "${FILESDIR}/cloud-config.yml" | newins - cloud-config.yml
dobin "${FILESDIR}"/{cloudstack-{coreos-cloudinit,dhcp,ssh-key},flatcar-setup-environment}
}

View File

@ -1,4 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
<pkgmetadata>
</pkgmetadata>

View File

@ -3,13 +3,11 @@
EAPI=8
DESCRIPTION="DigitalOcean suite for DigitalOcean"
DESCRIPTION="OEM suite for DigitalOcean"
HOMEPAGE="https://www.digitalocean.com/"
SRC_URI=""
LICENSE="GPL-2"
LICENSE="metapackage"
SLOT="0"
KEYWORDS="amd64 arm64"
IUSE=""
KEYWORDS="amd64"
SYSEXT_NAME="DigitalOcean"

View File

@ -12,7 +12,7 @@ coreos:
[Service]
Type=oneshot
StandardOutput=journal+console
ExecStart=/oem/bin/exoscale-ssh-key
ExecStart=/usr/bin/exoscale-ssh-key
- name: exoscale-cloudinit.service
command: restart
runtime: yes
@ -25,10 +25,10 @@ coreos:
[Service]
Type=oneshot
EnvironmentFile=/etc/environment
ExecStart=/oem/bin/exoscale-coreos-cloudinit
ExecStart=/usr/bin/exoscale-coreos-cloudinit
oem:
id: exoscale
name: exoscale
version-id: @@OEM_VERSION_ID@@
home-url: http://www.exoscale.ch
home-url: https://www.exoscale.com/
bug-report-url: https://github.com/coreos/coreos-overlay

View File

@ -1,6 +1,6 @@
#!/bin/bash
. /oem/bin/exoscale-dhcp
. /usr/bin/exoscale-dhcp
DHCP_SERVER=$(get_dhcp_ip)
USERDATA_URL="http://${DHCP_SERVER}/latest/user-data"

View File

@ -1,6 +1,6 @@
#!/bin/bash
. /oem/bin/exoscale-dhcp
. /usr/bin/exoscale-dhcp
DHCP_SERVER=$(get_dhcp_ip)
KEY_URL="http://${DHCP_SERVER}/latest/public-keys"

View File

@ -18,7 +18,7 @@ sed -i -e '/^COREOS_PUBLIC_IPV4=/d' \
-e '/^COREOS_PRIVATE_IPV4=/d' \
"${ENV}"
. /oem/bin/exoscale-dhcp
. /usr/bin/exoscale-dhcp
DHCP_SERVER=$(get_dhcp_ip)
METADATA_URL="http://${DHCP_SERVER}/latest/"

View File

@ -1,4 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
<pkgmetadata>
</pkgmetadata>

View File

@ -1,38 +0,0 @@
#
# Copyright (c) 2011 The Chromium OS Authors. All rights reserved.
# Copyright (c) 2014 CoreOS, Inc.. All rights reserved.
# Distributed under the terms of the GNU General Public License v2
# $Header:$
#
EAPI=7
DESCRIPTION="OEM suite for Exoscale images"
HOMEPAGE=""
SRC_URI=""
LICENSE="Apache-2.0"
SLOT="0"
KEYWORDS="amd64 x86"
IUSE=""
# no source directory
S="${WORKDIR}"
src_prepare() {
default
sed -e "s\\@@OEM_VERSION_ID@@\\${PVR}\\g" \
"${FILESDIR}/cloud-config.yml" > "${T}/cloud-config.yml" || die
}
src_install() {
into "/oem"
dobin "${FILESDIR}/exoscale-dhcp"
dobin "${FILESDIR}/exoscale-ssh-key"
dobin "${FILESDIR}/exoscale-coreos-cloudinit"
dobin "${FILESDIR}/flatcar-setup-environment"
insinto "/oem"
doins "${T}/cloud-config.yml"
doins "${FILESDIR}/grub.cfg"
}

View File

@ -0,0 +1,22 @@
# Copyright (c) 2011 The Chromium OS Authors. All rights reserved.
# Copyright (c) 2014 CoreOS, Inc.. All rights reserved.
# Distributed under the terms of the GNU General Public License v2
EAPI=8
DESCRIPTION="OEM suite for Exoscale"
HOMEPAGE="https://www.exoscale.com/"
S="${WORKDIR}"
LICENSE="Apache-2.0"
SLOT="0"
KEYWORDS="amd64"
SYSEXT_NAME="Exoscale"
src_install() {
insinto /usr/share/flatcar
sed "s:@@OEM_VERSION_ID@@:${PVR}:g" "${FILESDIR}/cloud-config.yml" | newins - cloud-config.yml
dobin "${FILESDIR}"/{exoscale-{coreos-cloudinit,dhcp,ssh-key},flatcar-setup-environment}
}

View File

@ -1,4 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
<pkgmetadata>
</pkgmetadata>

View File

@ -1,42 +0,0 @@
# Copyright (c) 2013 CoreOS, Inc.. All rights reserved.
# Distributed under the terms of the GNU General Public License v2
# Copyright (c) 2020 Kinvolk GmbH. All rights reserved.
# Distributed under the terms of the GNU General Public License v2
EAPI=8
inherit systemd
DESCRIPTION="OEM suite for Google Compute Engine images"
HOMEPAGE="https://cloud.google.com/products/compute-engine/"
SRC_URI=""
LICENSE="Apache-2.0"
SLOT="0"
KEYWORDS="amd64"
IUSE=""
# no source directory
S="${WORKDIR}"
RDEPEND="
app-emulation/google-compute-engine
"
SYSEXT_NAME="Google Compute Engine"
src_install() {
systemd_dounit "${FILESDIR}/units/oem-gce.service"
systemd_dounit "${FILESDIR}/units/oem-gce-enable-oslogin.service"
systemd_dounit "${FILESDIR}/units/setup-oem.service"
systemd_install_dropin "multi-user.target" "${FILESDIR}/units/10-oem-gce.conf"
systemd_enable_service "multi-user.target" "ntpd.service"
dobin "${FILESDIR}/bin/enable-oslogin"
dobin "${FILESDIR}/bin/init.sh"
# These files will be symlinked to /etc via 'setup-oem.service'
insinto /usr/share/gce/
doins "${FILESDIR}/files/hosts"
doins "${FILESDIR}/files/google-cloud-sdk.sh"
}

View File

@ -0,0 +1,34 @@
# Copyright (c) 2013 CoreOS, Inc.. All rights reserved.
# Distributed under the terms of the GNU General Public License v2
# Copyright (c) 2020 Kinvolk GmbH. All rights reserved.
# Distributed under the terms of the GNU General Public License v2
EAPI=8
inherit systemd
DESCRIPTION="OEM suite for Google Compute Engine"
HOMEPAGE="https://cloud.google.com/products/compute-engine/"
S="${WORKDIR}"
LICENSE="Apache-2.0"
SLOT="0"
KEYWORDS="amd64"
RDEPEND="
~app-emulation/google-compute-engine-${PV}
"
SYSEXT_NAME="Google Compute Engine"
src_install() {
systemd_dounit "${FILESDIR}"/units/{oem-gce,oem-gce-enable-oslogin,setup-oem}.service
systemd_install_dropin multi-user.target "${FILESDIR}"/units/10-oem-gce.conf
systemd_enable_service multi-user.target ntpd.service
dobin "${FILESDIR}"/bin/{enable-oslogin,init.sh}
# These files will be symlinked to /etc via 'setup-oem.service'
insinto /usr/share/gce
doins "${FILESDIR}"/files/{google-cloud-sdk.sh,hosts}
}

View File

@ -1,4 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
<pkgmetadata>
</pkgmetadata>

View File

@ -5,11 +5,9 @@ EAPI=8
DESCRIPTION="OEM suite for Hetzner"
HOMEPAGE="https://hetzner.com"
SRC_URI=""
LICENSE="GPL-2"
LICENSE="metapackage"
SLOT="0"
KEYWORDS="amd64 arm64"
IUSE=""
SYSEXT_NAME="Hetzner"

View File

@ -1,4 +0,0 @@
ID=hyperv
VERSION_ID=@@OEM_VERSION_ID@@
NAME="Microsoft Hyper-V"
BUG_REPORT_URL="https://issues.flatcar.org"

View File

@ -1,4 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
<pkgmetadata>
</pkgmetadata>

View File

@ -3,20 +3,13 @@
EAPI=8
DESCRIPTION="OEM suite for Hyper-V"
HOMEPAGE=""
SRC_URI=""
DESCRIPTION="OEM suite for Microsoft Hyper-V"
HOMEPAGE="https://learn.microsoft.com/windows-server/virtualization/hyper-v/"
LICENSE="Apache-2.0"
LICENSE="metapackage"
SLOT="0"
KEYWORDS="amd64"
IUSE=""
RDEPEND="
app-emulation/hv-daemons
"
RDEPEND="app-emulation/hv-daemons"
SYSEXT_NAME="Microsoft Hyper-V"
# no source directory
S="${WORKDIR}"

View File

@ -1,4 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
<pkgmetadata>
</pkgmetadata>

View File

@ -5,11 +5,9 @@ EAPI=8
DESCRIPTION="OEM suite for KubeVirt"
HOMEPAGE="https://kubevirt.io/"
SRC_URI=""
LICENSE="GPL-2"
LICENSE="metapackage"
SLOT="0"
KEYWORDS="amd64 arm64"
IUSE=""
SYSEXT_NAME="KubeVirt"

View File

@ -1,4 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
<pkgmetadata>
</pkgmetadata>

View File

@ -5,11 +5,9 @@ EAPI=8
DESCRIPTION="OEM suite for Nutanix"
HOMEPAGE="https://www.nutanix.com/"
SRC_URI=""
LICENSE="GPL-2"
LICENSE="metapackage"
SLOT="0"
KEYWORDS="amd64"
IUSE=""
SYSEXT_NAME="Nutanix"

View File

@ -1,4 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
<pkgmetadata>
</pkgmetadata>

View File

@ -3,13 +3,11 @@
EAPI=8
DESCRIPTION="OpenStack suite for OpenStack"
DESCRIPTION="OEM suite for OpenStack"
HOMEPAGE="https://www.openstack.org/"
SRC_URI=""
LICENSE="GPL-2"
LICENSE="metapackage"
SLOT="0"
KEYWORDS="amd64 arm64"
IUSE=""
SYSEXT_NAME="Openstack"
SYSEXT_NAME="OpenStack"

View File

@ -1,4 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
<pkgmetadata>
</pkgmetadata>

View File

@ -5,11 +5,9 @@ EAPI=8
DESCRIPTION="OEM suite for Proxmox VE"
HOMEPAGE="https://www.proxmox.com/en/proxmox-virtual-environment/"
SRC_URI=""
LICENSE="GPL-2"
LICENSE="metapackage"
SLOT="0"
KEYWORDS="amd64 arm64"
IUSE=""
SYSEXT_NAME="Proxmox VE"

View File

@ -1,4 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
<pkgmetadata>
</pkgmetadata>

View File

@ -5,11 +5,9 @@ EAPI=8
DESCRIPTION="OEM suite for QEMU"
HOMEPAGE="https://www.qemu.org/"
SRC_URI=""
LICENSE="GPL-2"
LICENSE="metapackage"
SLOT="0"
KEYWORDS="amd64 arm64"
IUSE=""
SYSEXT_NAME="QEMU"

View File

@ -1,4 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
<pkgmetadata>
</pkgmetadata>

View File

@ -5,11 +5,9 @@ EAPI=8
DESCRIPTION="OEM suite for Scaleway"
HOMEPAGE="https://www.scaleway.com"
SRC_URI=""
LICENSE="GPL-2"
LICENSE="metapackage"
SLOT="0"
KEYWORDS="amd64 arm64"
IUSE=""
SYSEXT_NAME="Scaleway"

View File

@ -1,4 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
<pkgmetadata>
</pkgmetadata>

View File

@ -6,19 +6,14 @@ EAPI=8
inherit systemd tmpfiles
DESCRIPTION="OEM suite for STACKIT"
HOMEPAGE="https://stackit.cloud"
SRC_URI=""
HOMEPAGE="https://stackit.com/"
S="${WORKDIR}"
LICENSE="GPL-2"
SLOT="0"
KEYWORDS="amd64 arm64"
IUSE=""
RDEPEND="
net-misc/chrony
"
S="${WORKDIR}"
RDEPEND="net-misc/chrony"
SYSEXT_NAME="STACKIT"

View File

@ -19,7 +19,7 @@ coreos:
id: vagrant
name: Vagrant
version-id: @@OEM_VERSION_ID@@
home-url: http://www.vagrantup.com/
home-url: https://developer.hashicorp.com/vagrant
bug-report-url: https://github.com/coreos/coreos-overlay
ssh_authorized_keys:

View File

@ -1,4 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
<pkgmetadata>
</pkgmetadata>

View File

@ -1,32 +0,0 @@
# Copyright 2013 The CoreOS Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=7
DESCRIPTION="OEM suite for vagrant images"
HOMEPAGE=""
SRC_URI=""
LICENSE="Apache-2.0"
SLOT="0"
KEYWORDS="amd64"
IUSE=""
# no source directory
S="${WORKDIR}"
src_prepare() {
default
sed -e "s\\@@OEM_VERSION_ID@@\\${PVR}\\g" \
"${FILESDIR}/cloud-config.yml" > "${T}/cloud-config.yml" || die
}
src_install() {
insinto "/oem"
doins "${T}/cloud-config.yml"
doins -r "${FILESDIR}/box"
doins "${FILESDIR}/grub.cfg"
into "/oem"
dobin "${FILESDIR}/flatcar-setup-environment"
}

View File

@ -0,0 +1,21 @@
# Copyright 2013 The CoreOS Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
DESCRIPTION="OEM suite for Vagrant"
HOMEPAGE="https://developer.hashicorp.com/vagrant"
S="${WORKDIR}"
LICENSE="Apache-2.0"
SLOT="0"
KEYWORDS="amd64"
SYSEXT_NAME="Vagrant"
src_install() {
insinto /usr/share/flatcar
sed "s:@@OEM_VERSION_ID@@:${PVR}:g" "${FILESDIR}/cloud-config.yml" | newins - cloud-config.yml
dobin "${FILESDIR}"/flatcar-setup-environment
}

View File

@ -1,4 +0,0 @@
ID=virtualbox
VERSION_ID=@@OEM_VERSION_ID@@
NAME="Oracle VirtualBox"
BUG_REPORT_URL="https://issues.flatcar.org"

View File

@ -1,4 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
<pkgmetadata>
</pkgmetadata>

View File

@ -1,28 +0,0 @@
# Copyright (c) 2013 CoreOS, Inc.. All rights reserved.
# Distributed under the terms of the GNU General Public License v2
EAPI=7
DESCRIPTION="OEM suite for VirtualBox"
HOMEPAGE=""
SRC_URI=""
LICENSE="Apache-2.0"
SLOT="0"
KEYWORDS="amd64"
IUSE=""
# no source directory
S="${WORKDIR}"
src_prepare() {
default
sed -e "s\\@@OEM_VERSION_ID@@\\${PVR}\\g" \
"${FILESDIR}/oem-release" > "${T}/oem-release" || die
}
src_install() {
insinto "/oem"
doins "${FILESDIR}/grub.cfg"
doins "${T}/oem-release"
}

View File

@ -0,0 +1,13 @@
# Copyright (c) 2013 CoreOS, Inc.. All rights reserved.
# Distributed under the terms of the GNU General Public License v2
EAPI=8
DESCRIPTION="OEM suite for Oracle VirtualBox"
HOMEPAGE="https://www.virtualbox.org/"
LICENSE="metapackage"
SLOT="0"
KEYWORDS="amd64"
SYSEXT_NAME="Oracle VirtualBox"

View File

@ -1,4 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
<pkgmetadata>
</pkgmetadata>

View File

@ -7,21 +7,16 @@ inherit systemd
DESCRIPTION="OEM suite for VMware"
HOMEPAGE="https://www.vmware.com/"
SRC_URI=""
S="${WORKDIR}"
LICENSE="Apache-2.0"
SLOT="0"
KEYWORDS="amd64 arm64"
IUSE=""
KEYWORDS="amd64"
RDEPEND="
~app-emulation/open-vm-tools-${PV}
"
# no source directory
S="${WORKDIR}"
# for coreos-base/common-oem-files
SYSEXT_NAME="VMware"
src_install() {

View File

@ -12,7 +12,6 @@ CROS_ADDONS_TREE="/mnt/host/source/src/third_party/coreos-overlay/coreos"
# - generic-board (board sysroot)
# - generic-prod (production image)
# - generic-dev (developer container image)
# - generic-oem-${name} (image for OEM ${name}, like azure, qemu_uefi)
# - generic-sysext-base-${name} (sysext image ${name} built-in into
# production image, usually docker or containerd)
# - generic-sysext-extra-${name} (extra sysext image ${name}, like
@ -43,11 +42,6 @@ flatcar_target_ref() {
name=${name%-extra-sysext-rootfs}
type_ref="generic-sysext-extra-${name}"
;;
*/*-oem-image-rootfs)
name=${ROOT##*/}
name=${name%-oem-image-rootfs}
type_ref="generic-oem-${name}"
;;
*/*-oem-sysext-rootfs)
name=${ROOT##*/}
name=${name%-oem-sysext-rootfs}

View File

@ -0,0 +1,6 @@
This is a metapackage that (itself) installs no files, therefore no
license is needed.
This does not in any way imply under which licenses the packages in it
are distributed. Check the metapackage's dependencies for their actual
license terms.