diff --git a/lib/extensions.sh b/lib/extensions.sh
index fbf50942c3..3f18b74df9 100644
--- a/lib/extensions.sh
+++ b/lib/extensions.sh
@@ -326,7 +326,7 @@ enable_extension() {
stacktrace="${ENABLE_EXTENSION_TRACE_HINT}$(get_extension_hook_stracktrace "${BASH_SOURCE[*]}" "${BASH_LINENO[*]}")"
display_alert "Enabling extension" "${extension_name} :: added by ${stacktrace}" "debug"
else
- display_alert "Enabling extension" "${extension_name}" ""
+ [[ "${enable_extension_quiet:-no}" != "yes" ]] && display_alert "Enabling extension" "${extension_name}" ""
fi
# first a check, has the extension manager already initialized? then it is too late to enable_extension(). bail.
@@ -402,6 +402,36 @@ enable_extension() {
}
+# This looks up and enables _all_ existing extensions.
+# The reasoning is simple: during Dockerfile build, we wanna have all the hostdeps defined, even if we're not gonna use them.
+function enable_all_extensions_builtin_and_user() {
+ declare -a extension_list=()
+ declare -a ext_dirs=("${SRC}/extensions" "${SRC}/userpatches/extensions")
+ declare -a ignore_extensions=("sample-extension")
+
+ # Extensions are files of the format
/extension_name.sh or /extension_name/extension_name.sh
+ for ext_dir in "${ext_dirs[@]}"; do
+ if [[ -d "${ext_dir}" ]]; then
+ declare -a ext_list_dir=()
+ mapfile -t ext_list_dir < <(find "${ext_dir}" -maxdepth 2 -type f -name "*.sh")
+ extension_list+=("${ext_list_dir[@]}")
+ fi
+ done
+
+ # loop over the files found; remove the prefix
+ for extension_file in "${extension_list[@]}"; do
+ extension_file="${extension_file#${SRC}/}"
+ extension_file="${extension_file%.sh}"
+ extension_name="${extension_file##*/}"
+ # skip, if extension_name is in the ignore_extensions array
+ if [[ " ${ignore_extensions[*]} " == *" ${extension_name} "* ]]; then
+ continue
+ fi
+ # enable the extensions, quietly.
+ enable_extension_quiet="yes" enable_extension "${extension_name}"
+ done
+}
+
# Fancy placeholder for future ideas. allow any core function to be hooked. maybe with "voters" infrastructure?
function do_with_hooks() {
"$@"
diff --git a/lib/functions/host/docker.sh b/lib/functions/host/docker.sh
index aada2615e4..c675e47017 100755
--- a/lib/functions/host/docker.sh
+++ b/lib/functions/host/docker.sh
@@ -109,6 +109,7 @@ function docker_cli_prepare() {
#############################################################################################################
# Prepare some dependencies; these will be used on the Dockerfile
+ enable_all_extensions_builtin_and_user
initialize_extension_manager # initialize the extension manager.
declare -a -g host_dependencies=()
early_prepare_host_dependencies
@@ -209,6 +210,8 @@ function docker_cli_prepare() {
RUN echo "--> CACHE MISS IN DOCKERFILE: apt packages." && \
DEBIAN_FRONTEND=noninteractive apt-get -y update && \
DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends ${BASIC_DEPS[@]} ${host_dependencies[@]}
+ RUN sed -i 's/# en_US.UTF-8/en_US.UTF-8/' /etc/locale.gen
+ RUN locale-gen
WORKDIR ${DOCKER_ARMBIAN_TARGET_PATH}
ENV ARMBIAN_RUNNING_IN_CONTAINER=yes
ADD . ${DOCKER_ARMBIAN_TARGET_PATH}/