[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/openfst/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-shell/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_OPUS=y
|
||||
BR2_PACKAGE_PORTAUDIO=y
|
||||
BR2_PACKAGE_SPEEXDSP=y
|
||||
BR2_PACKAGE_SBC=y
|
||||
BR2_PACKAGE_SBC_TOOLS=y
|
||||
BR2_PACKAGE_SPEEXDSP=y
|
||||
BR2_PACKAGE_WEBRTC_AUDIO_PROCESSING=y
|
||||
BR2_PACKAGE_LIBARCHIVE=y
|
||||
BR2_PACKAGE_LIBDEFLATE=y
|
||||
|
@ -172,7 +172,6 @@ BR2_PACKAGE_LIBV4L_UTILS=y
|
|||
BR2_PACKAGE_JSON_GLIB=y
|
||||
BR2_PACKAGE_LIBCAMERA=y
|
||||
BR2_PACKAGE_LIBCAMERA_V4L2=y
|
||||
BR2_PACKAGE_LIBCAMERA_PIPELINE_IPU3=y
|
||||
BR2_PACKAGE_LIBCAMERA_PIPELINE_SIMPLE=y
|
||||
BR2_PACKAGE_LIBCAMERA_PIPELINE_UVCVIDEO=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