[WIP] Initial work on pre-pulling containers at buildtime.
This commit is contained in:
parent
a3dac255fc
commit
61351a7150
|
@ -102,6 +102,7 @@ endmenu
|
||||||
source "$BR2_EXTERNAL_OPENVOICEOS_PATH/package/openfec/Config.in"
|
source "$BR2_EXTERNAL_OPENVOICEOS_PATH/package/openfec/Config.in"
|
||||||
source "$BR2_EXTERNAL_OPENVOICEOS_PATH/package/openfst/Config.in"
|
source "$BR2_EXTERNAL_OPENVOICEOS_PATH/package/openfst/Config.in"
|
||||||
source "$BR2_EXTERNAL_OPENVOICEOS_PATH/package/ovos-bus-server/Config.in"
|
source "$BR2_EXTERNAL_OPENVOICEOS_PATH/package/ovos-bus-server/Config.in"
|
||||||
|
source "$BR2_EXTERNAL_OPENVOICEOS_PATH/package/ovos-containers/Config.in"
|
||||||
source "$BR2_EXTERNAL_OPENVOICEOS_PATH/package/ovos-dashboard/Config.in"
|
source "$BR2_EXTERNAL_OPENVOICEOS_PATH/package/ovos-dashboard/Config.in"
|
||||||
source "$BR2_EXTERNAL_OPENVOICEOS_PATH/package/ovos-shell/Config.in"
|
source "$BR2_EXTERNAL_OPENVOICEOS_PATH/package/ovos-shell/Config.in"
|
||||||
source "$BR2_EXTERNAL_OPENVOICEOS_PATH/package/ovos-splash/Config.in"
|
source "$BR2_EXTERNAL_OPENVOICEOS_PATH/package/ovos-splash/Config.in"
|
||||||
|
|
|
@ -141,9 +141,9 @@ BR2_PACKAGE_PYTHON_PODMAN_COMPOSE=y
|
||||||
BR2_PACKAGE_LILV=y
|
BR2_PACKAGE_LILV=y
|
||||||
BR2_PACKAGE_OPUS=y
|
BR2_PACKAGE_OPUS=y
|
||||||
BR2_PACKAGE_PORTAUDIO=y
|
BR2_PACKAGE_PORTAUDIO=y
|
||||||
BR2_PACKAGE_SPEEXDSP=y
|
|
||||||
BR2_PACKAGE_SBC=y
|
BR2_PACKAGE_SBC=y
|
||||||
BR2_PACKAGE_SBC_TOOLS=y
|
BR2_PACKAGE_SBC_TOOLS=y
|
||||||
|
BR2_PACKAGE_SPEEXDSP=y
|
||||||
BR2_PACKAGE_WEBRTC_AUDIO_PROCESSING=y
|
BR2_PACKAGE_WEBRTC_AUDIO_PROCESSING=y
|
||||||
BR2_PACKAGE_LIBARCHIVE=y
|
BR2_PACKAGE_LIBARCHIVE=y
|
||||||
BR2_PACKAGE_LIBDEFLATE=y
|
BR2_PACKAGE_LIBDEFLATE=y
|
||||||
|
@ -172,7 +172,6 @@ BR2_PACKAGE_LIBV4L_UTILS=y
|
||||||
BR2_PACKAGE_JSON_GLIB=y
|
BR2_PACKAGE_JSON_GLIB=y
|
||||||
BR2_PACKAGE_LIBCAMERA=y
|
BR2_PACKAGE_LIBCAMERA=y
|
||||||
BR2_PACKAGE_LIBCAMERA_V4L2=y
|
BR2_PACKAGE_LIBCAMERA_V4L2=y
|
||||||
BR2_PACKAGE_LIBCAMERA_PIPELINE_IPU3=y
|
|
||||||
BR2_PACKAGE_LIBCAMERA_PIPELINE_SIMPLE=y
|
BR2_PACKAGE_LIBCAMERA_PIPELINE_SIMPLE=y
|
||||||
BR2_PACKAGE_LIBCAMERA_PIPELINE_UVCVIDEO=y
|
BR2_PACKAGE_LIBCAMERA_PIPELINE_UVCVIDEO=y
|
||||||
BR2_PACKAGE_LIBCAMERA_PIPELINE_VIMC=y
|
BR2_PACKAGE_LIBCAMERA_PIPELINE_VIMC=y
|
||||||
|
|
|
@ -0,0 +1,21 @@
|
||||||
|
menuconfig BR2_PACKAGE_OVOS_CONTAINERS
|
||||||
|
bool "Pre-install OVOS containers"
|
||||||
|
help
|
||||||
|
This is the system layer that prepares and
|
||||||
|
pre-install the required OVOS containers.
|
||||||
|
|
||||||
|
https://github.com/OpenVoiceOS/ovos-docker
|
||||||
|
|
||||||
|
if BR2_PACKAGE_OVOS_CONTAINERS
|
||||||
|
|
||||||
|
config BR2_PACKAGE_OVOS_CONTAINERS_ARCH
|
||||||
|
string "Container Arch"
|
||||||
|
help
|
||||||
|
Architecture for which we should be pull.
|
||||||
|
|
||||||
|
config BR2_PACKAGE_OVOS_CONTAINERS_IMAGES
|
||||||
|
string "Images"
|
||||||
|
help
|
||||||
|
Space separated list of images to pull.
|
||||||
|
|
||||||
|
endif
|
|
@ -0,0 +1,33 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
# Original script from Home Assistant
|
||||||
|
|
||||||
|
set -e
|
||||||
|
set -u
|
||||||
|
set -o pipefail
|
||||||
|
|
||||||
|
arch=$1
|
||||||
|
image=$2
|
||||||
|
dl_dir=$3
|
||||||
|
dst_dir=$4
|
||||||
|
|
||||||
|
image_name="docker.io/smartgic/${image}"
|
||||||
|
full_image_name="${image_name}:alpha"
|
||||||
|
image_digest=$(skopeo inspect --retry-times=5 "docker://${full_image_name}" | jq -r '.Digest')
|
||||||
|
|
||||||
|
image_file_name="${full_image_name//[:\/]/_}@${image_digest//[:\/]/_}"
|
||||||
|
image_file_path="${dl_dir}/${image_file_name}.tar"
|
||||||
|
dst_image_file_path="${dst_dir}/${image_file_name}.tar"
|
||||||
|
|
||||||
|
(
|
||||||
|
# Use file locking to avoid race condition
|
||||||
|
flock --verbose 3
|
||||||
|
if [ ! -f "${image_file_path}" ]
|
||||||
|
then
|
||||||
|
echo "Fetching image: ${full_image_name} (digest ${image_digest})"
|
||||||
|
skopeo copy "docker://${image_name}@${image_digest}" "docker-archive:${image_file_path}:${full_image_name}"
|
||||||
|
else
|
||||||
|
echo "Skipping download of existing image: ${full_image_name} (digest ${image_digest})"
|
||||||
|
fi
|
||||||
|
|
||||||
|
cp "${image_file_path}" "${dst_image_file_path}"
|
||||||
|
) 3>"${image_file_path}.lock"
|
|
@ -0,0 +1,24 @@
|
||||||
|
################################################################################
|
||||||
|
#
|
||||||
|
# OVOS Container images
|
||||||
|
#
|
||||||
|
################################################################################
|
||||||
|
|
||||||
|
OVOS_CONTAINERS_VERSION = 1.0.0
|
||||||
|
OVOS_CONTAINERS_LICENSE = Apache License 2.0
|
||||||
|
OVOS_CONTAINERS_LICENSE_FILES = $(BR2_EXTERNAL_OPENVOICEOS_PATH)/../LICENSE
|
||||||
|
OVOS_CONTAINERS_SITE = $(BR2_EXTERNAL_OPENVOICEOS_PATH)/package/ovos-containers
|
||||||
|
OVOS_CONTAINERS_SITE_METHOD = local
|
||||||
|
|
||||||
|
OVOS_CONTAINERS_IMAGES = $(call qstrip,$(BR2_PACKAGE_OVOS_CONTAINERS))
|
||||||
|
|
||||||
|
define OVOS_CONTAINERS_BUILD_CMDS
|
||||||
|
$(Q)mkdir -p $(@D)/images
|
||||||
|
$(Q)mkdir -p $(OVOS_CONTAINERS_DL_DIR)
|
||||||
|
$(foreach image,$(OVOS_CONTAINERS_IMAGES),\
|
||||||
|
$(BR2_EXTERNAL_OPENVOICEOS_PATH)/package/ovos-containers/fetch-container-image.sh \
|
||||||
|
$(BR2_PACKAGE_OVOS_CONTAINERS_ARCH) $(image) "$(OVOS_CONTAINERS_DL_DIR)" "$(@D)/images"
|
||||||
|
)
|
||||||
|
endef
|
||||||
|
|
||||||
|
$(eval $(generic-package))
|
Loading…
Reference in New Issue