summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rwxr-xr-xbuild.sh2
-rw-r--r--etc/build.usage7
-rw-r--r--groups/231.native_packages_etc.group2
-rw-r--r--subr/build_init.subr11
-rw-r--r--subr/ex_pkg_dispatch.subr17
5 files changed, 23 insertions, 16 deletions
diff --git a/build.sh b/build.sh
index 493f801b..3786bc05 100755
--- a/build.sh
+++ b/build.sh
@@ -4,7 +4,7 @@
buildp_dispatch() {
local _msg="${1}" _group_name="${2}" _pkg_name="${3}" \
- _build_group_meta="" _build_group_lc="" _build_groups_lc="" _last_pkg="" _pkg_restart="" PKGS_FOUND;
+ _build_group_meta="" _build_group_lc="" _build_groups_lc="" _pkg_restart="" PKGS_FOUND;
case "${_msg}" in
# Top-level
start_build) shift; build_init "${@}";
diff --git a/etc/build.usage b/etc/build.usage
index 354fc939..7401608b 100644
--- a/etc/build.usage
+++ b/etc/build.usage
@@ -1,5 +1,5 @@
usage: ./build.sh [-a nt32|nt64] [-b debug|release] [-C dir[,..]] [-D kind[,..]]
- [-F ipv4|ipv6|offline] [-h] [-P [jobs]] [-r [*]ALL|LAST|name[,..][:step,..]]
+ [-F ipv4|ipv6|offline] [-h] [-P [jobs]] [-r [*[*]]ALL|LAST|name[,..][:step,..]]
[-R] [-v[v[v[v]]]] [--as-needed] [--debug-minipix] [<group>[ ..]]
-a nt32|nt64 Selects 32-bit or 64-bit architecture; defaults to nt64.
-b debug|release Selects debug or release build; defaults to debug.
@@ -20,11 +20,12 @@ usage: ./build.sh [-a nt32|nt64] [-b debug|release] [-C dir[,..]] [-D kind[,..]]
processors on the host system.
If -R is not specified and at least one (1) package fails to build,
all remaining package builds will be forcibly aborted for convenience.
- -r [*]ALL[:step,..]|LAST|name[,..][:step,..]
+ -r [*[*]]ALL[:step,..]|LAST|name[,..][:step,..]
Restart all packages/the specified comma-separated package(s)
completely or at optionally specified comma-separated step(s)
or restart the last failed package and resume build.
- Prepend w/ `*' to automatically include dependencies.
+ Prepend w/ `*' to automatically include dependencies and `**' to
+ forcibly rebuild all dependencies.
Currently defined steps are:
fetch_wget, fetch_git, fetch_extract,
diff --git a/groups/231.native_packages_etc.group b/groups/231.native_packages_etc.group
index ec04c03c..93039d2d 100644
--- a/groups/231.native_packages_etc.group
+++ b/groups/231.native_packages_etc.group
@@ -175,7 +175,7 @@ fi;
: ${PKG_ICECAST_VERSION:=2.4.99.2-283};
: ${PKG_ICECAST_URL:=https://people.xiph.org/~epirat/Icecast/icecast-${PKG_ICECAST_VERSION}.tar.gz};
: ${PKG_ICECAST_CONFIGURE_ARGS_EXTRA:="--without-speex"};
-: ${PKG_IMAGEMAGICK_DEPENDS:="curl xz"};
+: ${PKG_IMAGEMAGICK_DEPENDS:="curl xz zstd"};
: ${PKG_IMAGEMAGICK_SHA256SUM:=67859f9cba97f2c06b5e416898216e49216be00c7cba3dd89896e49331aef96d};
: ${PKG_IMAGEMAGICK_VERSION:=7.0.9-12};
: ${PKG_IMAGEMAGICK_URL:=https://imagemagick.org/download/releases/ImageMagick-${PKG_IMAGEMAGICK_VERSION}.tar.xz};
diff --git a/subr/build_init.subr b/subr/build_init.subr
index 53327ace..c204c9b6 100644
--- a/subr/build_init.subr
+++ b/subr/build_init.subr
@@ -11,15 +11,18 @@ buildp_ast() {
};
buildp_init_args() {
- _status="";
+ local _last_pkg=""; _status="";
if [ "${ARG_AS_NEEDED:-0}" -eq 1 ]\
&& [ -e "${PREFIX}/build.gitref" ]\
&& [ "$(git rev-parse HEAD)" = "$(cat "${PREFIX}/build.gitref")" ]; then
_status="Git repository has not changed since last build and --as-needed was specified.";
fi;
- if [ -n "${ARG_RESTART}" ]\
- && [ "${ARG_RESTART#\*}" != "${ARG_RESTART}" ]; then
- ARG_RESTART="${ARG_RESTART#\*}"; ARG_RESTART_RECURSIVE=1;
+ if [ -n "${ARG_RESTART}" ]; then
+ if [ "${ARG_RESTART#\*\*}" != "${ARG_RESTART}" ]; then
+ ARG_RESTART="${ARG_RESTART#\*\*}"; ARG_RESTART_RECURSIVE=2;
+ elif [ "${ARG_RESTART#\*}" != "${ARG_RESTART}" ]; then
+ ARG_RESTART="${ARG_RESTART#\*}"; ARG_RESTART_RECURSIVE=1;
+ fi;
fi;
case "${ARG_RESTART}" in
ALL) ARG_RESTART_AT=ALL; ;;
diff --git a/subr/ex_pkg_dispatch.subr b/subr/ex_pkg_dispatch.subr
index 7ea95875..13b2a6d8 100644
--- a/subr/ex_pkg_dispatch.subr
+++ b/subr/ex_pkg_dispatch.subr
@@ -29,8 +29,8 @@ exp_pkg_dispatch_group() {
&& _pkg_depends="$(exp_pkg_expand_packages $(ex_rtl_get_var_unsafe "PKG_$(ex_rtl_toupper "${_pkg_name}")_DEPENDS"))"\
&& exp_pkg_check_depends "${_group_name}" "${_pkg_depends}" "${_pkg_name}" \
&& exp_pkg_dispatch_package "${_dispatch_fn}" "${_group_name}" \
- "${_pkg_name}" "${_restart_at}" "${_stderrout_path}" \
- "${_pipe_path}"; then
+ "${_pkg_name}" "${_restart}" "${_restart_at}" \
+ "${_stderrout_path}" "${_pipe_path}"; then
_pkgs_found_new="${_pkgs_found_new:+${_pkgs_found_new} }${_pkg_name}";
break;
fi;
@@ -39,8 +39,8 @@ exp_pkg_dispatch_group() {
};
exp_pkg_dispatch_package() {
- local _dispatch_fn="${1}" _group_name="${2}" _pkg_name="${3}" _restart_at="${4}" \
- _stderrout_path="${5}" _pipe_path="${6}" _pkg_name_uc="" _rc=0;
+ local _dispatch_fn="${1}" _group_name="${2}" _pkg_name="${3}" _restart="${4}" _restart_at="${5}" \
+ _stderrout_path="${6}" _pipe_path="${7}" _pkg_name_uc="" _rc=0;
_pkg_name_uc="$(ex_rtl_toupper "${_pkg_name}")";
if [ -n "$(ex_rtl_get_var_unsafe PKG_${_pkg_name_uc}_DISABLED)" ]; then
_pkgs_complete="${_pkgs_complete:+${_pkgs_complete} }${_pkg_name}";
@@ -48,7 +48,8 @@ exp_pkg_dispatch_package() {
: $((_pkgs_count+=1)); _rc=1;
"${_dispatch_fn}" disabled_pkg "${_group_name}" "${_pkg_name}" "${_pkgs_count}" "${_pkgs_count_max}";
elif ex_pkg_state_test "${_pkg_name}" finish\
- && [ -z "${_restart_at}" ]; then
+ && [ -z "$(ex_rtl_lsearch "${_restart}" "${_pkg_name}")" ]\
+ && [ "${ARG_RESTART_RECURSIVE}" -ne 2 ]; then
_pkgs_complete="${_pkgs_complete:+${_pkgs_complete} }${_pkg_name}";
_pkg_names="$(ex_rtl_lfilter "${_pkg_names}" "${_pkg_name}")";
: $((_pkgs_count+=1)); _rc=1;
@@ -59,7 +60,7 @@ exp_pkg_dispatch_package() {
"${_dispatch_fn}" start_pkg "${_group_name}" "${_pkg_name}" "${_pkgs_count}" "${_pkgs_count_max}";
(set -o errexit -o noglob; BUILD_IS_PARENT=0;
ex_pkg_env "${_group_name}" "${_pkg_name}" "${_restart_at}";
- ex_pkg_exec "${_group_name}" "${_pkg_name}" "${_restart_at}" \
+ ex_pkg_exec "${_group_name}" "${_pkg_name}" "${_restart_at}" \
"${_dispatch_fn}";) 1>"${_stderrout_path}" 2>&1 3>"${_pipe_path}" &
: $((_njobs+=1));
fi;
@@ -89,8 +90,10 @@ exp_pkg_get_packages() {
_pkg_names="$(ex_rtl_lsearch "${_pkg_names}" "${_restart}")";
fi;
if ! [ -n "${_restart}" ]\
- || [ "${ARG_RESTART_RECURSIVE:-0}" -eq 1 ]; then
+ || [ "${ARG_RESTART_RECURSIVE:-0}" -ge 1 ]; then
+ ex_rtl_log_msg vnfo "Resolving \`${_group_name}' dependencies...";
_pkg_names="$(ex_rtl_uniq $(exp_pkg_expand_packages ${_pkg_names}))";
+ ex_rtl_log_msg vnfo "Resolved \`${_group_name}' dependencies.";
fi;
};