From b9b0d63d3181336c23cb644a78a80bdc2778c8dd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emil=20Gardstr=C3=B6m?= Date: Thu, 9 Nov 2023 14:42:44 +0100 Subject: [PATCH] improve and expose the install script --- .changes/1368.json | 11 +++++++++++ docker/Dockerfile.x86_64-unknown-freebsd | 2 ++ docker/freebsd-common.sh | 3 --- docker/freebsd-install | 23 +++++++++++++++++++++++ docker/freebsd-install.sh | 12 ++++++------ 5 files changed, 42 insertions(+), 9 deletions(-) create mode 100644 .changes/1368.json create mode 100755 docker/freebsd-install diff --git a/.changes/1368.json b/.changes/1368.json new file mode 100644 index 000000000..71279a7bd --- /dev/null +++ b/.changes/1368.json @@ -0,0 +1,11 @@ +[ + { + "type": "fixed", + "description": "use proper location for freebsd installs", + "issues": [1367] + }, + { + "type": "added", + "description": "expose `/freebsd-install` to install freebsd packages" + } +] diff --git a/docker/Dockerfile.x86_64-unknown-freebsd b/docker/Dockerfile.x86_64-unknown-freebsd index 626195363..6d151bbd2 100644 --- a/docker/Dockerfile.x86_64-unknown-freebsd +++ b/docker/Dockerfile.x86_64-unknown-freebsd @@ -21,6 +21,8 @@ COPY freebsd-install.sh / COPY freebsd-extras.sh / RUN /freebsd-extras.sh +COPY freebsd-install / + ENV CROSS_TOOLCHAIN_PREFIX=x86_64-unknown-freebsd12- ENV CROSS_SYSROOT=/usr/local/x86_64-unknown-freebsd12 diff --git a/docker/freebsd-common.sh b/docker/freebsd-common.sh index 6a2c05338..2f956ed66 100755 --- a/docker/freebsd-common.sh +++ b/docker/freebsd-common.sh @@ -1,8 +1,5 @@ #!/usr/bin/env bash -set -x -set -euo pipefail - # shellcheck disable=SC1091 . freebsd-arch.sh diff --git a/docker/freebsd-install b/docker/freebsd-install new file mode 100755 index 000000000..0c199a665 --- /dev/null +++ b/docker/freebsd-install @@ -0,0 +1,23 @@ +#!/usr/bin/env bash + +set -e + +if [ -n "${CROSS_DEBUG}" ]; then + set -x +fi + +# shellcheck disable=SC1091 +. freebsd-common.sh +# shellcheck disable=SC1091 +. freebsd-install.sh + +case "${FREEBSD_ARCH}" in + arm64) # extras mirrors are under https://pkg.freebsd.org/ + FREEBSD_ARCH=aarch64 # https://pkg.freebsd.org/FreeBSD:13:aarch64/ + ;; +esac + +url="" +url=$(fetch_best_freebsd_mirror) +FREEBSD_MIRROR="${url}" setup_freebsd_packagesite +FREEBSD_MIRROR="${url}" install_freebsd_package "${@}" diff --git a/docker/freebsd-install.sh b/docker/freebsd-install.sh index 7cf97ab40..fe2ebd8a1 100755 --- a/docker/freebsd-install.sh +++ b/docker/freebsd-install.sh @@ -1,8 +1,5 @@ #!/usr/bin/env bash -set -x -set -euo pipefail - # shellcheck disable=SC1091 . freebsd-common.sh @@ -120,8 +117,10 @@ setup_freebsd_packagesite() { fi pkg_source=$(freebsd_package_source "${url}") + printf "Setting up packagesite from %s\n" ${pkg_source} >&2 mkdir -p "${FREEBSD_PACKAGEDIR}" curl --retry 3 -sSfL "${pkg_source}/packagesite.txz" -O + printf "Unpacking packagesite\n" >&2 tar -C "${FREEBSD_PACKAGEDIR}" -xJf packagesite.txz rm packagesite.txz @@ -143,9 +142,10 @@ install_freebsd_package() { pkg_source=$(freebsd_package_source "${url}") td="$(mktemp -d)" - pushd "${td}" + pushd "${td}" > /dev/null for name in "${@}"; do + printf "Installing package %s\n" ${name} >&2 path=$(jq -c '. | select ( .name == "'"${name}"'" ) | .repopath' "${FREEBSD_PACKAGESITE}") if [[ -z "${path}" ]]; then echo "Unable to find package ${name}" >&2 @@ -156,7 +156,7 @@ install_freebsd_package() { mkdir "${td}"/package curl --retry 3 -sSfL "${pkg_source}/${path}" -O - tar -C "${td}/package" -xJf "${pkg}" + [ -n "${CROSS_DEBUG-}" ] && tar -C "${td}/package" -xJf "${pkg}" || tar -C "${td}/package" -xJf "${pkg}" 2>/dev/null cp -r "${td}/package"/* "${destdir}"/ rm "${td:?}/${pkg}" @@ -164,6 +164,6 @@ install_freebsd_package() { done # clean up - popd + popd > /dev/null rm -rf "${td:?}" }