|
Lucio Andrés Illanes Albornoz (arab, vxp) |
570129 |
#
|
|
Lucio Andrés Illanes Albornoz |
e1d469 |
# set +o errexit -o noglob -o nounset is assumed.
|
|
Lucio Andrés Illanes Albornoz (arab, vxp) |
570129 |
#
|
|
Lucio Andrés Illanes Albornoz (arab, vxp) |
570129 |
|
|
Lucio Andrés Illanes Albornoz |
2b85d0 |
#
|
|
Lucio Andrés Illanes Albornoz |
2b85d0 |
# exp_pkg_env_defaults() - set package variable defaults for single named package
|
|
Lucio Andrés Illanes Albornoz |
c6d6e0 |
# @_build_steps_default: list of default build steps
|
|
Lucio Andrés Illanes Albornoz |
c6d6e0 |
# @_pkg_name: single package name
|
|
Lucio Andrés Illanes Albornoz |
c6d6e0 |
# @_workdir: pathname to build-specific temporary directory
|
|
Lucio Andrés Illanes Albornoz |
2b85d0 |
#
|
|
Lucio Andrés Illanes Albornoz |
ccd354 |
# Return: zero (0) on success, non-zero (>0) on failure
|
|
Lucio Andrés Illanes Albornoz |
2b85d0 |
#
|
|
Lucio Andrés Illanes Albornoz |
2b85d0 |
exp_pkg_env_defaults() {
|
|
Lucio Andrés Illanes Albornoz |
c6d6e0 |
local _build_steps_default="${1}" _pkg_name="${2}" _workdir="${3}";
|
|
Lucio Andrés Illanes Albornoz (arab, vxp) |
ec19f0 |
: ${PKG_NAME:="${_pkg_name}"};
|
|
Lucio Andrés Illanes Albornoz (arab, vxp) |
ec19f0 |
: ${MIDIPIX_BUILD_PWD:="$(pwd)"};
|
|
Lucio Andrés Illanes Albornoz |
c6d6e0 |
: ${PKG_BASE_DIR:="${_workdir}/${_pkg_name}-${PKG_BUILD_TYPE}-${PKG_TARGET}"};
|
|
Lucio Andrés Illanes Albornoz |
e1d469 |
if [ -n "${PKG_BUILD_STEPS_DISABLE:-}" ]; then
|
|
Lucio Andrés Illanes Albornoz |
e1d469 |
: ${PKG_BUILD_STEPS:="$(rtl_lfilter "${_build_steps_default}" "${PKG_BUILD_STEPS_DISABLE:-}")"};
|
|
Lucio Andrés Illanes Albornoz |
e1d469 |
else
|
|
Lucio Andrés Illanes Albornoz |
e1d469 |
: ${PKG_BUILD_STEPS:="${_build_steps_default}"};
|
|
Lucio Andrés Illanes Albornoz |
e1d469 |
fi;
|
|
Lucio Andrés Illanes Albornoz |
e1d469 |
if [ -n "${PKG_URL:-}" ]; then
|
|
Lucio Andrés Illanes Albornoz |
e1d469 |
: ${PKG_FNAME:="${PKG_URL##*/}"};
|
|
Lucio Andrés Illanes Albornoz |
e1d469 |
fi;
|
|
Lucio Andrés Illanes Albornoz |
e1d469 |
if [ -z "${PKG_SUBDIR:-}" ]; then
|
|
Lucio Andrés Illanes Albornoz |
2c5ce2 |
if [ -n "${PKG_URLS_GIT:-}" ]\
|
|
Lucio Andrés Illanes Albornoz |
2c5ce2 |
&& [ -n "${PKG_FNAME:-}" ]; then
|
|
Lucio Andrés Illanes Albornoz |
2c5ce2 |
rtl_log_msg fatalexit "Error: \${PKG_SUBDIR} must be specified given both \${PKG_FNAME} and \${PKG_URLS_GIT}.";
|
|
Lucio Andrés Illanes Albornoz |
2c5ce2 |
elif [ -n "${PKG_URLS_GIT:-}" ]; then
|
|
Lucio Andrés Illanes Albornoz (arab, vxp) |
ec19f0 |
PKG_SUBDIR="${PKG_URLS_GIT%%=*}";
|
|
Lucio Andrés Illanes Albornoz |
e1d469 |
else case "${PKG_FNAME:-}" in
|
|
Lucio Andrés Illanes Albornoz (arab, vxp) |
ec19f0 |
*.t*) PKG_SUBDIR="${PKG_FNAME%%.t*}"; ;;
|
|
Lucio Andrés Illanes Albornoz (arab, vxp) |
ec19f0 |
*) PKG_SUBDIR="${_pkg_name}"; ;;
|
|
Lucio Andrés Illanes Albornoz (arab, vxp) |
ec19f0 |
esac; fi;
|
|
Lucio Andrés Illanes Albornoz (arab, vxp) |
ec19f0 |
fi;
|
|
Lucio Andrés Illanes Albornoz |
e1d469 |
if [ -z "${PKG_BUILD_DIR:-}" ]; then
|
|
Lucio Andrés Illanes Albornoz (arab, vxp) |
ec19f0 |
case "${PKG_IN_TREE:-0}" in
|
|
Lucio Andrés Illanes Albornoz (arab, vxp) |
ec19f0 |
0) PKG_BUILD_DIR="obj"; ;;
|
|
Lucio Andrés Illanes Albornoz (arab, vxp) |
fce0a9 |
1) PKG_BUILD_DIR="${PKG_SUBDIR}"; ;;
|
|
Lucio Andrés Illanes Albornoz (arab, vxp) |
d18b1a |
esac;
|
|
Lucio Andrés Illanes Albornoz (arab, vxp) |
c27bea |
fi;
|
|
Lucio Andrés Illanes Albornoz (arab, vxp) |
ec19f0 |
PKG_BUILD_DIR="${PKG_BASE_DIR}/${PKG_BUILD_DIR}";
|
|
Lucio Andrés Illanes Albornoz (arab, vxp) |
ec19f0 |
PKG_CONFIGURE="${PKG_BASE_DIR}/${PKG_CONFIGURE:-${PKG_SUBDIR}/configure}";
|
|
Lucio Andrés Illanes Albornoz (arab, vxp) |
ec19f0 |
PKG_DESTDIR="${PKG_BASE_DIR}/${PKG_DESTDIR:-destdir}";
|
|
Lucio Andrés Illanes Albornoz |
8a4e16 |
PKG_DESTDIR_HOST="${PKG_BASE_DIR}/${PKG_DESTDIR_HOST:-destdir_host}";
|
|
Lucio Andrés Illanes Albornoz |
2b85d0 |
};
|
|
Lucio Andrés Illanes Albornoz |
2b85d0 |
|
|
Lucio Andrés Illanes Albornoz |
2b85d0 |
#
|
|
Lucio Andrés Illanes Albornoz |
2b85d0 |
# exp_pkg_env_set() - set package variables for single named package
|
|
Lucio Andrés Illanes Albornoz |
c6d6e0 |
# @_build_vars_default: list of default build variables
|
|
Lucio Andrés Illanes Albornoz |
2b85d0 |
# @_group_name: build group name
|
|
Lucio Andrés Illanes Albornoz |
60fba6 |
# @_nounset: don't clear package variable namespace
|
|
Lucio Andrés Illanes Albornoz |
2b85d0 |
# @_pkg_name: single package name
|
|
Lucio Andrés Illanes Albornoz |
2b85d0 |
#
|
|
Lucio Andrés Illanes Albornoz |
2b85d0 |
# Sets package variables from either defaults, defaults specific to build type,
|
|
Lucio Andrés Illanes Albornoz |
2b85d0 |
# build group, package to inherit from if any, or package for a single named
|
|
Lucio Andrés Illanes Albornoz |
2b85d0 |
# package, exports variables optionally named in ${PKG_ENV_VARS_EXTRA}, and
|
|
Lucio Andrés Illanes Albornoz |
2b85d0 |
# clears the package variable namespace.
|
|
Lucio Andrés Illanes Albornoz |
2b85d0 |
#
|
|
Lucio Andrés Illanes Albornoz |
2b85d0 |
# Return: zero (0) on success, non-zero (>0) on failure
|
|
Lucio Andrés Illanes Albornoz |
2b85d0 |
#
|
|
Lucio Andrés Illanes Albornoz |
2b85d0 |
exp_pkg_env_set() {
|
|
Lucio Andrés Illanes Albornoz |
ada809 |
local _build_vars_default="${1}" _group_name="${2}" _nounset="${3}"\
|
|
Lucio Andrés Illanes Albornoz |
b6a9a1 |
_pkg_name="${4}" _var_prefixes="" _vars_set="" _vname="" IFS IFS0;
|
|
Lucio Andrés Illanes Albornoz |
c6d6e0 |
rtl_set_vars _vars_set BUILD_TYPE "DEFAULT ${_group_name} PKG_${_pkg_name}";
|
|
Lucio Andrés Illanes Albornoz |
c6d6e0 |
rtl_set_vars _vars_set INHERIT_FROM "PKG_${_pkg_name}";
|
|
Lucio Andrés Illanes Albornoz |
c6d6e0 |
_var_prefixes="$(rtl_toupper "DEFAULT DEFAULT_${PKG_BUILD_TYPE} ${_group_name}")";
|
|
Lucio Andrés Illanes Albornoz |
c6d6e0 |
for _vname in $(rtl_lfilter "${_build_vars_default}" BUILD_TYPE); do
|
|
Lucio Andrés Illanes Albornoz |
e1d469 |
if [ -n "${PKG_INHERIT_FROM:-}" ]; then
|
|
Lucio Andrés Illanes Albornoz |
ada809 |
rtl_set_vars _vars_set "${_vname}" \
|
|
Lucio Andrés Illanes Albornoz |
ada809 |
"$(rtl_lconcat "${_var_prefixes}" \
|
|
Lucio Andrés Illanes Albornoz |
a6970c |
"$(rtl_toupper "PKG_${PKG_INHERIT_FROM} PKG_${PKG_INHERIT_FROM}_${BUILD_KIND} PKG_${_pkg_name} PKG_${_pkg_name}_${BUILD_KIND}")")";
|
|
Lucio Andrés Illanes Albornoz |
2b85d0 |
else
|
|
Lucio Andrés Illanes Albornoz |
ada809 |
rtl_set_vars _vars_set "${_vname}" \
|
|
Lucio Andrés Illanes Albornoz |
ada809 |
"$(rtl_lconcat "${_var_prefixes}" \
|
|
Lucio Andrés Illanes Albornoz |
a6970c |
"$(rtl_toupper "PKG_${_pkg_name} PKG_${_pkg_name}_${BUILD_KIND}")")";
|
|
Lucio Andrés Illanes Albornoz |
2b85d0 |
fi;
|
|
Lucio Andrés Illanes Albornoz |
2b85d0 |
done;
|
|
Lucio Andrés Illanes Albornoz |
e58399 |
IFS0="${IFS:- }"; IFS=":"; for _vname in ${PKG_ENV_VARS_EXTRA:-}; do
|
|
Lucio Andrés Illanes Albornoz (arab, vxp) |
ec19f0 |
export "${_vname}";
|
|
Lucio Andrés Illanes Albornoz |
b6a9a1 |
done; IFS="${IFS0}";
|
|
Lucio Andrés Illanes Albornoz |
60fba6 |
if [ "${_nounset:-0}" -eq 0 ]; then
|
|
Lucio Andrés Illanes Albornoz |
ada809 |
rtl_unset_vars $(rtl_lfilter \
|
|
Lucio Andrés Illanes Albornoz |
ada809 |
"$(set | sed -ne '/^PKG_[^=]*=/s/=.*$//p' | paste -s -d " ")" \
|
|
Lucio Andrés Illanes Albornoz |
60fba6 |
"${_vars_set}");
|
|
Lucio Andrés Illanes Albornoz |
60fba6 |
fi;
|
|
Lucio Andrés Illanes Albornoz |
2b85d0 |
};
|
|
Lucio Andrés Illanes Albornoz |
2b85d0 |
|
|
Lucio Andrés Illanes Albornoz |
168e55 |
ex_pkg_env_sofort() {
|
|
Lucio Andrés Illanes Albornoz |
168e55 |
local _pkg_base_dir="${1}" _pkg_sofort_force="${2}" _pkg_subdir="${3}" \
|
|
Lucio Andrés Illanes Albornoz |
168e55 |
_vname="" _vname_new="" _vval="" _vval_old="";
|
|
Lucio Andrés Illanes Albornoz |
168e55 |
|
|
Lucio Andrés Illanes Albornoz |
bfef88 |
if [ -d "${_pkg_base_dir}/${_pkg_subdir}/sofort" ] \
|
|
Lucio Andrés Illanes Albornoz |
168e55 |
|| [ "${_pkg_sofort_force:-0}" -eq 1 ]; then
|
|
Lucio Andrés Illanes Albornoz |
168e55 |
for _vname in \
|
|
Lucio Andrés Illanes Albornoz |
168e55 |
PKG_SOFORT_NATIVE_CC \
|
|
Lucio Andrés Illanes Albornoz |
168e55 |
PKG_SOFORT_NATIVE_CFLAGS \
|
|
Lucio Andrés Illanes Albornoz |
168e55 |
PKG_SOFORT_NATIVE_CXX \
|
|
Lucio Andrés Illanes Albornoz |
168e55 |
PKG_SOFORT_NATIVE_CXXFLAGS \
|
|
Lucio Andrés Illanes Albornoz |
168e55 |
PKG_SOFORT_NATIVE_LD \
|
|
Lucio Andrés Illanes Albornoz |
168e55 |
PKG_SOFORT_NATIVE_LDFLAGS; do
|
|
Lucio Andrés Illanes Albornoz |
168e55 |
_vname_new="PKG_${_vname#PKG_SOFORT_}";
|
|
Lucio Andrés Illanes Albornoz |
168e55 |
rtl_set_var_unsafe "${_vname_new}" "";
|
|
Lucio Andrés Illanes Albornoz |
168e55 |
done;
|
|
Lucio Andrés Illanes Albornoz |
168e55 |
for _vname in \
|
|
Lucio Andrés Illanes Albornoz |
168e55 |
PKG_SOFORT_NATIVE_CC \
|
|
Lucio Andrés Illanes Albornoz |
168e55 |
PKG_SOFORT_NATIVE_CFLAGS \
|
|
Lucio Andrés Illanes Albornoz |
168e55 |
PKG_SOFORT_NATIVE_CFLAGS_EXTRA \
|
|
Lucio Andrés Illanes Albornoz |
168e55 |
PKG_SOFORT_NATIVE_CXX \
|
|
Lucio Andrés Illanes Albornoz |
168e55 |
PKG_SOFORT_NATIVE_CXXFLAGS \
|
|
Lucio Andrés Illanes Albornoz |
168e55 |
PKG_SOFORT_NATIVE_CXXFLAGS_EXTRA \
|
|
Lucio Andrés Illanes Albornoz |
168e55 |
PKG_SOFORT_NATIVE_LD \
|
|
Lucio Andrés Illanes Albornoz |
168e55 |
PKG_SOFORT_NATIVE_LDFLAGS \
|
|
Lucio Andrés Illanes Albornoz |
168e55 |
PKG_SOFORT_NATIVE_LDFLAGS_EXTRA; do
|
|
Lucio Andrés Illanes Albornoz |
168e55 |
if _vval="$(rtl_get_var_unsafe "${_vname}")" \
|
|
Lucio Andrés Illanes Albornoz |
168e55 |
&& [ -n "${_vval}" ]; then
|
|
Lucio Andrés Illanes Albornoz |
168e55 |
_vname_new="${_vname#PKG_SOFORT_}";
|
|
Lucio Andrés Illanes Albornoz |
168e55 |
case "${_vname}" in
|
|
Lucio Andrés Illanes Albornoz |
168e55 |
*_EXTRA)
|
|
Lucio Andrés Illanes Albornoz |
168e55 |
_vval_old="$(rtl_get_var_unsafe "${_vname_new%_EXTRA}")";
|
|
Lucio Andrés Illanes Albornoz |
168e55 |
rtl_set_var_unsafe "${_vname_new%_EXTRA}" "${_vval_old:+${_vval_old} }${_vval}"; ;;
|
|
Lucio Andrés Illanes Albornoz |
168e55 |
*)
|
|
Lucio Andrés Illanes Albornoz |
168e55 |
rtl_set_var_unsafe "${_vname_new}" "${_vval}"; ;;
|
|
Lucio Andrés Illanes Albornoz |
168e55 |
esac;
|
|
Lucio Andrés Illanes Albornoz |
168e55 |
export "${_vname_new}";
|
|
Lucio Andrés Illanes Albornoz |
168e55 |
fi;
|
|
Lucio Andrés Illanes Albornoz |
168e55 |
done;
|
|
Lucio Andrés Illanes Albornoz |
168e55 |
fi; return 0;
|
|
Lucio Andrés Illanes Albornoz |
168e55 |
};
|
|
Lucio Andrés Illanes Albornoz |
168e55 |
|
|
Lucio Andrés Illanes Albornoz |
2b85d0 |
#
|
|
Lucio Andrés Illanes Albornoz |
2b85d0 |
# ex_pkg_env() - set package variables for single named package
|
|
Lucio Andrés Illanes Albornoz |
c6d6e0 |
# @_build_steps_default: list of default build steps
|
|
Lucio Andrés Illanes Albornoz |
c6d6e0 |
# @_build_vars_default: list of default build variables
|
|
Lucio Andrés Illanes Albornoz |
c6d6e0 |
# @_group_name: build group name
|
|
Lucio Andrés Illanes Albornoz |
60fba6 |
# @_nounset: don't clear package variable namespace
|
|
Lucio Andrés Illanes Albornoz |
c6d6e0 |
# @_pkg_name: single package name
|
|
Lucio Andrés Illanes Albornoz |
370e98 |
# @_restart_at: optional comma-separated list of build steps at which to rebuild or ALL or LAST
|
|
Lucio Andrés Illanes Albornoz |
c6d6e0 |
# @_workdir: pathname to build-specific temporary directory
|
|
Lucio Andrés Illanes Albornoz |
2b85d0 |
#
|
|
Lucio Andrés Illanes Albornoz |
ccd354 |
# Return: zero (0) on success, non-zero (>0) on failure
|
|
Lucio Andrés Illanes Albornoz |
2b85d0 |
#
|
|
Lucio Andrés Illanes Albornoz |
2b85d0 |
ex_pkg_env() {
|
|
Lucio Andrés Illanes Albornoz |
c6d6e0 |
local _build_steps_default="${1}" _build_vars_default="${2}" _group_name="${3}" \
|
|
Lucio Andrés Illanes Albornoz |
60fba6 |
_nounset="${4}" _pkg_name="${5}" _restart_at="${6}" _workdir="${7}" _vname="";
|
|
Lucio Andrés Illanes Albornoz |
ccd354 |
rtl_fileop source_opt "vars/${_pkg_name}.vars" "${_group_name}/${_pkg_name}.${_group_name}";
|
|
Lucio Andrés Illanes Albornoz |
60fba6 |
if ! exp_pkg_env_set "${_build_vars_default}" "${_group_name}" "${_nounset}" "${_pkg_name}"\
|
|
Lucio Andrés Illanes Albornoz |
168e55 |
|| ! exp_pkg_env_defaults "${_build_steps_default}" "${_pkg_name}" "${_workdir}"\
|
|
Lucio Andrés Illanes Albornoz |
168e55 |
|| ! ex_pkg_env_sofort "${PKG_BASE_DIR:-}" "${PKG_SOFORT_FORCE:-0}" "${PKG_SUBDIR:-}"; then
|
|
Lucio Andrés Illanes Albornoz |
bf9edf |
return 1;
|
|
Lucio Andrés Illanes Albornoz |
2b85d0 |
fi;
|
|
Lucio Andrés Illanes Albornoz |
2b85d0 |
};
|
|
Lucio Andrés Illanes Albornoz |
2b85d0 |
|
|
Lucio Andrés Illanes Albornoz |
2b85d0 |
#
|
|
Lucio Andrés Illanes Albornoz |
2b85d0 |
# ex_pkg_state_set() - update build step status for single named package
|
|
Lucio Andrés Illanes Albornoz |
2b85d0 |
# @_pkg_name: single package name
|
|
Lucio Andrés Illanes Albornoz |
370e98 |
# @_build_step: build step set status of
|
|
Lucio Andrés Illanes Albornoz |
370e98 |
# [@${@}]: optional list of build steps to invalidate status of
|
|
Lucio Andrés Illanes Albornoz |
2b85d0 |
#
|
|
Lucio Andrés Illanes Albornoz |
2b85d0 |
# Return: zero (0) on success, non-zero (>0) on failure
|
|
Lucio Andrés Illanes Albornoz |
2b85d0 |
#
|
|
Lucio Andrés Illanes Albornoz |
2b85d0 |
ex_pkg_state_set() {
|
|
Lucio Andrés Illanes Albornoz |
c6d6e0 |
rtl_state_set "${_workdir}" "${@}";
|
|
Lucio Andrés Illanes Albornoz (arab, vxp) |
570129 |
};
|
|
Lucio Andrés Illanes Albornoz (arab, vxp) |
570129 |
|
|
Lucio Andrés Illanes Albornoz |
2b85d0 |
#
|
|
Lucio Andrés Illanes Albornoz |
2b85d0 |
# ex_pkg_state_test() - test build step status of single named package
|
|
Lucio Andrés Illanes Albornoz |
2b85d0 |
# @_pkg_name: single package name
|
|
Lucio Andrés Illanes Albornoz |
2b85d0 |
# @_build_step: build step to test status of
|
|
Lucio Andrés Illanes Albornoz |
370e98 |
# @_restart_at: optional comma-separated list of build steps at which to rebuild or ALL or LAST
|
|
Lucio Andrés Illanes Albornoz |
2b85d0 |
#
|
|
Lucio Andrés Illanes Albornoz |
2b85d0 |
# Return: zero (0) on success, non-zero (>0) on failure
|
|
Lucio Andrés Illanes Albornoz |
2b85d0 |
#
|
|
Lucio Andrés Illanes Albornoz |
2b85d0 |
ex_pkg_state_test() {
|
|
Lucio Andrés Illanes Albornoz |
c6d6e0 |
rtl_state_test "${_workdir}" "${@}";
|
|
Lucio Andrés Illanes Albornoz |
2b85d0 |
};
|
|
Lucio Andrés Illanes Albornoz (arab, vxp) |
ec19f0 |
|
|
Lucio Andrés Illanes Albornoz (arab, vxp) |
570129 |
# vim:filetype=sh
|