platform stuff

This commit is contained in:
2025-08-06 11:52:28 -05:00
parent 9a9b94e8a9
commit 2915493f4d

View File

@@ -26,6 +26,19 @@ docker_image_archive_name() {
echo "${image_tag//:/-}.tar.zst" echo "${image_tag//:/-}.tar.zst"
} }
echo_platform() {
local platKernel platCpu
platKernel="$(uname)"
platKernel="${platKernel,,}"
if [[ "${HOSTTYPE}" == 'x86_64' ]]; then
platCpu='amd64'
else
platCpu='arm64'
fi
echo "${platKernel}/${platCpu}"
}
validate_selected_image() { validate_selected_image() {
local selectedImage="${1:-}" local selectedImage="${1:-}"
for distro in "${VALID_DOCKER_IMAGES[@]}"; do for distro in "${VALID_DOCKER_IMAGES[@]}"; do
@@ -57,6 +70,7 @@ docker_build_image() {
distroPkgMgr="${DOCKER_DIR}/${distro}-pkg_mgr" distroPkgMgr="${DOCKER_DIR}/${distro}-pkg_mgr"
# get package manager info # get package manager info
docker run --rm \ docker run --rm \
--platform "$(echo_platform)" \
-v "${REPO_DIR}":/workdir \ -v "${REPO_DIR}":/workdir \
-w /workdir \ -w /workdir \
"${dockerDistro}" \ "${dockerDistro}" \
@@ -85,6 +99,7 @@ docker_build_image() {
echo_info "building ${image_tag}" echo_info "building ${image_tag}"
docker build \ docker build \
--platform "$(echo_platform)" \
-t "${image_tag}" \ -t "${image_tag}" \
-f "${dockerfile}" \ -f "${dockerfile}" \
. || return 1 . || return 1
@@ -96,7 +111,9 @@ docker_build_image() {
-u "${DOCKER_REGISTRY_USER}" \ -u "${DOCKER_REGISTRY_USER}" \
-p "${DOCKER_REGISTRY_PASS}" \ -p "${DOCKER_REGISTRY_PASS}" \
"${DOCKER_REGISTRY}" "${DOCKER_REGISTRY}"
docker push "${DOCKER_REGISTRY}/${image_tag}" docker push \
--platform "$(echo_platform)" \
"${DOCKER_REGISTRY}/${image_tag}"
fi fi
docker system prune -f docker system prune -f
@@ -141,21 +158,26 @@ FB_FUNC_COMPLETION['docker_run_image']="${VALID_DOCKER_IMAGES[*]}"
docker_run_image() { docker_run_image() {
validate_selected_image "$@" || return 1 validate_selected_image "$@" || return 1
check_docker || return 1 check_docker || return 1
# if a docker registry is defined, pull from it
if [[ "${DOCKER_REGISTRY}" != '' ]]; then
docker login \
-u "${DOCKER_REGISTRY_USER}" \
-p "${DOCKER_REGISTRY_PASS}" \
"${DOCKER_REGISTRY}"
docker pull "${DOCKER_REGISTRY}/${image_tag}"
docker tag "${DOCKER_REGISTRY}/${image_tag}" "${image_tag}"
fi
for distro in "${DISTROS[@]}"; do for distro in "${DISTROS[@]}"; do
image_tag="$(set_distro_image_tag "${distro}")" image_tag="$(set_distro_image_tag "${distro}")"
# if a docker registry is defined, pull from it
if [[ "${DOCKER_REGISTRY}" != '' ]]; then
docker login \
-u "${DOCKER_REGISTRY_USER}" \
-p "${DOCKER_REGISTRY_PASS}" \
"${DOCKER_REGISTRY}"
docker pull \
--platform "$(echo_platform)" \
"${DOCKER_REGISTRY}/${image_tag}"
docker tag "${DOCKER_REGISTRY}/${image_tag}" "${image_tag}"
fi
echo_info "running ffmpeg build for ${image_tag}" echo_info "running ffmpeg build for ${image_tag}"
docker run --rm \ docker run --rm \
--platform "$(echo_platform)" \
-v "${REPO_DIR}":/workdir \ -v "${REPO_DIR}":/workdir \
-w /workdir \ -w /workdir \
-e DEBUG="${DEBUG}" \ -e DEBUG="${DEBUG}" \