|
Lucio Andrés Illanes Albornoz |
8a27f9 |
#!/bin/sh
|
|
Lucio Andrés Illanes Albornoz |
60fba6 |
# Copyright (c) 2020 Lucio Andrés Illanes Albornoz <lucio@lucioillanes.de>
|
|
Lucio Andrés Illanes Albornoz |
8a27f9 |
#
|
|
Lucio Andrés Illanes Albornoz |
8a27f9 |
|
|
Lucio Andrés Illanes Albornoz |
60fba6 |
pkgtoolp_info() {
|
|
Lucio Andrés Illanes Albornoz |
1dd6a3 |
local _pkg_name="${1}" _group_name="" _pkg_name_uc="$(rtl_toupper "${1}")" _fname="" _pkg_names=""\
|
|
Lucio Andrés Illanes Albornoz |
1dd6a3 |
_rc=0 EX_PKG_BUILD_GROUPS="" EX_PKG_DISABLED="" EX_PKG_FINISHED="" EX_PKG_NAMES=""; _status="";
|
|
Lucio Andrés Illanes Albornoz |
b6a9a1 |
if ! ex_pkg_load_groups; then
|
|
Lucio Andrés Illanes Albornoz |
b6a9a1 |
_rc=1; _status="Error: failed to load build groups.";
|
|
Lucio Andrés Illanes Albornoz |
b6a9a1 |
elif ! _group_name="$(ex_pkg_find_package "${EX_PKG_BUILD_GROUPS}" "${_pkg_name}")"; then
|
|
Lucio Andrés Illanes Albornoz |
b6a9a1 |
_rc=1; _status="Error: unknown package \`${_pkg_name}'.";
|
|
Lucio Andrés Illanes Albornoz |
60fba6 |
elif ! _pkg_names="$(ex_pkg_get_packages "${_group_name}")"; then
|
|
Lucio Andrés Illanes Albornoz |
b6a9a1 |
_rc=1; _status="Error: failed to expand package list of build group \`${_group_name}'.";
|
|
Lucio Andrés Illanes Albornoz |
b6a9a1 |
elif ! ex_pkg_env "${DEFAULT_BUILD_STEPS}" "${DEFAULT_BUILD_VARS}"\
|
|
Lucio Andrés Illanes Albornoz |
b6a9a1 |
"${_group_name}" 1 "${_pkg_name}" "" "${BUILD_WORKDIR}"; then
|
|
Lucio Andrés Illanes Albornoz |
b6a9a1 |
_rc=1; _status="Error: failed to set package environment for \`${_pkg_name}'.";
|
|
Lucio Andrés Illanes Albornoz |
1dd6a3 |
else _pkg_version="$(rtl_get_var_unsafe -u "PKG_"${_pkg_name}"_VERSION")";
|
|
Lucio Andrés Illanes Albornoz |
1dd6a3 |
rtl_log_env_vars "package" $(rtl_get_vars_fast "^PKG_${_pkg_name_uc}");
|
|
Lucio Andrés Illanes Albornoz |
3e2acf |
rtl_log_msg info "Build group: %s" "${_group_name}";
|
|
Lucio Andrés Illanes Albornoz |
e1d469 |
if [ -z "${PKG_DEPENDS:-}" ]; then
|
|
Lucio Andrés Illanes Albornoz |
b6a9a1 |
rtl_log_msg info "Package \`%s' has no dependencies." "${_pkg_name}";
|
|
Lucio Andrés Illanes Albornoz |
b6a9a1 |
else rtl_log_msg info "Direct dependencies of \`%s': %s" "${_pkg_name}" "${PKG_DEPENDS}";
|
|
Lucio Andrés Illanes Albornoz |
b6a9a1 |
if ! ex_pkg_unfold_depends 1 1 "${_group_name}" "${_pkg_names}" "${_pkg_name}" 0; then
|
|
Lucio Andrés Illanes Albornoz |
b6a9a1 |
rtl_log_msg warning "Warning: failed to unfold dependency-expanded package name list for \`%s'." "${_pkg_name}";
|
|
Lucio Andrés Illanes Albornoz |
b6a9a1 |
else EX_PKG_NAMES="$(rtl_lfilter "${EX_PKG_NAMES}" "${_pkg_name}")";
|
|
Lucio Andrés Illanes Albornoz |
60fba6 |
if [ -n "${EX_PKG_NAMES}" ]; then
|
|
Lucio Andrés Illanes Albornoz |
b6a9a1 |
rtl_log_msg info "Full dependencies of \`%s': %s"\
|
|
Lucio Andrés Illanes Albornoz |
b6a9a1 |
"${_pkg_name}" "$(rtl_lsort "${EX_PKG_NAMES}")";
|
|
Lucio Andrés Illanes Albornoz |
60fba6 |
fi;
|
|
Lucio Andrés Illanes Albornoz |
60fba6 |
if [ -n "${EX_PKG_DISABLED}" ]; then
|
|
Lucio Andrés Illanes Albornoz |
b6a9a1 |
rtl_log_msg info "Full dependencies of \`%s' (disabled packages:) %s"\
|
|
Lucio Andrés Illanes Albornoz |
b6a9a1 |
"${_pkg_name}" "$(rtl_lsort "${EX_PKG_DISABLED}")";
|
|
Lucio Andrés Illanes Albornoz |
60fba6 |
fi;
|
|
Lucio Andrés Illanes Albornoz |
60fba6 |
fi;
|
|
Lucio Andrés Illanes Albornoz |
60fba6 |
fi;
|
|
Lucio Andrés Illanes Albornoz |
1dd6a3 |
set +o noglob;
|
|
Lucio Andrés Illanes Albornoz |
1dd6a3 |
for _fname in \
|
|
Lucio Andrés Illanes Albornoz |
1dd6a3 |
"vars/${_pkg_name}.vars" \
|
|
Lucio Andrés Illanes Albornoz |
1dd6a3 |
"patches/${_pkg_name}/"*.patch \
|
|
Lucio Andrés Illanes Albornoz |
1dd6a3 |
"patches/${_pkg_name}${_pkg_version:+-${_pkg_version}}.local.patch" \
|
|
Lucio Andrés Illanes Albornoz |
1dd6a3 |
"patches/${_pkg_name}${_pkg_version:+-${_pkg_version}}.local@${BUILD_HNAME}.patch" \
|
|
Lucio Andrés Illanes Albornoz |
1dd6a3 |
"patches/${_pkg_name}${_pkg_version:+-${_pkg_version}}_pre.local.patch" \
|
|
Lucio Andrés Illanes Albornoz |
1dd6a3 |
"patches/${_pkg_name}${_pkg_version:+-${_pkg_version}}_pre.local@${BUILD_HNAME}.patch" \
|
|
Lucio Andrés Illanes Albornoz |
1dd6a3 |
"${BUILD_WORKDIR}/chainport/patches/${_pkg_name%%_*}/${_pkg_name%%_*}-${_pkg_version}.midipix.patch"; do
|
|
Lucio Andrés Illanes Albornoz |
1dd6a3 |
if [ -e "${_fname}" ]; then
|
|
Lucio Andrés Illanes Albornoz |
1dd6a3 |
sha256sum "${_fname}";
|
|
Lucio Andrés Illanes Albornoz |
1dd6a3 |
fi;
|
|
Lucio Andrés Illanes Albornoz |
1dd6a3 |
done;
|
|
Lucio Andrés Illanes Albornoz |
1dd6a3 |
set -o noglob;
|
|
Lucio Andrés Illanes Albornoz |
b6a9a1 |
fi; return "${_rc}";
|
|
Lucio Andrés Illanes Albornoz |
60fba6 |
};
|
|
Lucio Andrés Illanes Albornoz |
60fba6 |
|
|
Lucio Andrés Illanes Albornoz |
b63b9b |
pkgtoolp_mirror() {
|
|
Lucio Andrés Illanes Albornoz |
368962 |
local _mirror_dnames="${1}" _group_name="" _mirror_dname="" _mirror_dname_git=""\
|
|
Lucio Andrés Illanes Albornoz |
368962 |
_pkg_name="" _pkg_parent="" _rc=0;
|
|
Lucio Andrés Illanes Albornoz |
368962 |
|
|
Lucio Andrés Illanes Albornoz |
368962 |
rtl_lassign "_mirror_dname _mirror_dname_git" "," "${_mirror_dnames}"; umask 022;
|
|
Lucio Andrés Illanes Albornoz |
b63b9b |
if ! ex_pkg_load_groups; then
|
|
Lucio Andrés Illanes Albornoz |
b63b9b |
_rc=1; _status="Error: failed to load build groups.";
|
|
Lucio Andrés Illanes Albornoz |
368962 |
elif ! rtl_fileop mkdir "${_mirror_dname}"; then
|
|
Lucio Andrés Illanes Albornoz |
368962 |
_rc=1; _status="Error: failed to create \`${_mirror_dname}'.";
|
|
Lucio Andrés Illanes Albornoz |
368962 |
elif ! rtl_fileop mkdir "${_mirror_dname_git}"; then
|
|
Lucio Andrés Illanes Albornoz |
368962 |
_rc=1; _status="Error: failed to create \`${_mirror_dname_git}'.";
|
|
Lucio Andrés Illanes Albornoz |
b63b9b |
else for _group_name in ${EX_PKG_BUILD_GROUPS}; do
|
|
Lucio Andrés Illanes Albornoz |
b63b9b |
for _pkg_name in $(ex_pkg_get_packages "${_group_name}"); do
|
|
Lucio Andrés Illanes Albornoz |
b63b9b |
_pkg_parent="$(rtl_get_var_unsafe -u "PKG_${_pkg_name}_INHERIT_FROM")";
|
|
Lucio Andrés Illanes Albornoz |
368962 |
if ! pkgtoolp_mirror_fetch \
|
|
Lucio Andrés Illanes Albornoz |
368962 |
"${_mirror_dname}" "${_mirror_dname_git}" "${_pkg_name}"\
|
|
Lucio Andrés Illanes Albornoz |
368962 |
"${_pkg_parent:-${_pkg_name}}"; then
|
|
Lucio Andrés Illanes Albornoz |
368962 |
_rc=1; _status="Warning: failed to mirror one or more packages.";
|
|
Lucio Andrés Illanes Albornoz |
368962 |
fi;
|
|
Lucio Andrés Illanes Albornoz |
b63b9b |
done;
|
|
Lucio Andrés Illanes Albornoz |
b63b9b |
done;
|
|
Lucio Andrés Illanes Albornoz |
b63b9b |
fi; return "${_rc}";
|
|
Lucio Andrés Illanes Albornoz |
b63b9b |
};
|
|
Lucio Andrés Illanes Albornoz |
b63b9b |
|
|
Lucio Andrés Illanes Albornoz |
b63b9b |
pkgtoolp_mirror_fetch() {
|
|
Lucio Andrés Illanes Albornoz |
368962 |
local _mirror_dname="${1}" _mirror_dname_git="${2}" _pkg_name="${3}" _pkg_name_real="${4}"\
|
|
Lucio Andrés Illanes Albornoz |
368962 |
_pkg_disabled=0 _pkg_sha256sum="" _pkg_url="" _rc=0;
|
|
Lucio Andrés Illanes Albornoz |
368962 |
|
|
Lucio Andrés Illanes Albornoz |
a50e83 |
if _pkg_disabled="$(rtl_get_var_unsafe -u "PKG_${_pkg_name_real}_DISABLED")"\
|
|
Lucio Andrés Illanes Albornoz |
a50e83 |
&& [ "${_pkg_disabled:-0}" -eq 1 ]; then
|
|
Lucio Andrés Illanes Albornoz |
a50e83 |
rtl_log_msg info "Package \`%s' (parent package: \`%s') disabled, skipping." "${_pkg_name}" "${_pkg_name_real}";
|
|
Lucio Andrés Illanes Albornoz |
368962 |
else if _pkg_url="$(rtl_get_var_unsafe -u "PKG_${_pkg_name_real}_URL")"\
|
|
Lucio Andrés Illanes Albornoz |
a50e83 |
&& _pkg_sha256sum="$(rtl_get_var_unsafe -u "PKG_${_pkg_name_real}_SHA256SUM")"; then
|
|
Lucio Andrés Illanes Albornoz |
a50e83 |
if [ "${_pkg_name}" != "${_pkg_name_real}" ]; then
|
|
Lucio Andrés Illanes Albornoz |
a50e83 |
rtl_log_msg info "Mirroring package \`%s' (parent package: \`%s'), archive URL(s): \`%s'..." "${_pkg_name}" "${_pkg_name_real}" "${_pkg_url}";
|
|
Lucio Andrés Illanes Albornoz |
368962 |
if ! rtl_fileop ln_symbolic "${_pkg_name_real}" "${_mirror_dname}/${_pkg_name}"; then
|
|
Lucio Andrés Illanes Albornoz |
368962 |
_rc=1; rtl_log_msg warning "Failed to create symbolic link \`%s' for package \`%s' w/ parent package \`%s'."\
|
|
Lucio Andrés Illanes Albornoz |
368962 |
"${_mirror_dname}/${_pkg_name}" "${_pkg_name}" "${_pkg_name_real}";
|
|
Lucio Andrés Illanes Albornoz |
368962 |
fi;
|
|
Lucio Andrés Illanes Albornoz |
a50e83 |
else
|
|
Lucio Andrés Illanes Albornoz |
a50e83 |
rtl_log_msg info "Mirroring package \`%s', archive URL(s): \`%s'..." "${_pkg_name}" "${_pkg_url}";
|
|
Lucio Andrés Illanes Albornoz |
368962 |
if ! rtl_fileop mkdir "${_mirror_dname}/${_pkg_name}"\
|
|
Lucio Andrés Illanes Albornoz |
368962 |
|| ! rtl_fetch_url_wget "${_pkg_url}" "${_pkg_sha256sum}" "${_mirror_dname}/${_pkg_name}" "${_pkg_url##*/}" "${_pkg_name_real}" ""; then
|
|
Lucio Andrés Illanes Albornoz |
368962 |
_rc=1; rtl_log_msg warning "Failed to mirror package \`%s', skipping." "${_pkg_name}";
|
|
Lucio Andrés Illanes Albornoz |
368962 |
fi;
|
|
Lucio Andrés Illanes Albornoz |
a50e83 |
fi;
|
|
Lucio Andrés Illanes Albornoz |
a50e83 |
elif _pkg_url="$(rtl_get_var_unsafe -u "PKG_${_pkg_name_real}_URLS_GIT")"; then
|
|
Lucio Andrés Illanes Albornoz |
23caa1 |
if [ "$(rtl_get_var_unsafe -u "PKG_${_pkg_name_real}_MIRRORS_GIT")" = "skip" ]; then
|
|
Lucio Andrés Illanes Albornoz |
23caa1 |
_rc=0; rtl_log_msg warning "Package \`%s' specifies to skip Git URL(s) mirroring, skipping." "${_pkg_name}";
|
|
Lucio Andrés Illanes Albornoz |
23caa1 |
elif [ "${_pkg_name}" != "${_pkg_name_real}" ]; then
|
|
Lucio Andrés Illanes Albornoz |
a50e83 |
rtl_log_msg info "Mirroring package \`%s' (parent package: \`%s'), Git URL(s): \`%s'..." "${_pkg_name}" "${_pkg_name_real}" "${_pkg_url}";
|
|
Lucio Andrés Illanes Albornoz |
368962 |
if ! rtl_fileop ln_symbolic "${_pkg_name_real}" "${_mirror_dname_git}/${_pkg_name}"; then
|
|
Lucio Andrés Illanes Albornoz |
368962 |
_rc=1; rtl_log_msg warning "Failed to create symbolic link \`%s' for package \`%s' w/ parent package \`%s'."\
|
|
Lucio Andrés Illanes Albornoz |
368962 |
"${_mirror_dname_git}/${_pkg_name}" "${_pkg_name}" "${_pkg_name_real}";
|
|
Lucio Andrés Illanes Albornoz |
368962 |
fi;
|
|
Lucio Andrés Illanes Albornoz |
a50e83 |
else
|
|
Lucio Andrés Illanes Albornoz |
a50e83 |
rtl_log_msg info "Mirroring package \`%s', Git URL(s): \`%s'..." "${_pkg_name}" "${_pkg_url}";
|
|
Lucio Andrés Illanes Albornoz |
368962 |
if ! rtl_fileop mkdir "${_mirror_dname_git}/${_pkg_name}"\
|
|
Lucio Andrés Illanes Albornoz |
368962 |
|| ! rtl_fetch_mirror_urls_git "${DEFAULT_GIT_ARGS}" "${_mirror_dname_git}/${_pkg_name}" ${_pkg_url}; then
|
|
Lucio Andrés Illanes Albornoz |
368962 |
_rc=1; rtl_log_msg warning "Failed to mirror package \`%s', skipping." "${_pkg_name}";
|
|
Lucio Andrés Illanes Albornoz |
368962 |
fi;
|
|
Lucio Andrés Illanes Albornoz |
a50e83 |
fi;
|
|
Lucio Andrés Illanes Albornoz |
b63b9b |
else
|
|
Lucio Andrés Illanes Albornoz |
002501 |
_rc=0; rtl_log_msg warning "Package \`%s' has neither archive nor Git URL(s), skipping." "${_pkg_name}";
|
|
Lucio Andrés Illanes Albornoz |
b63b9b |
fi;
|
|
Lucio Andrés Illanes Albornoz |
368962 |
fi; return "${_rc}";
|
|
Lucio Andrés Illanes Albornoz |
b63b9b |
};
|
|
Lucio Andrés Illanes Albornoz |
b63b9b |
|
|
Lucio Andrés Illanes Albornoz |
8a27f9 |
pkgtoolp_restart_at() {
|
|
Lucio Andrés Illanes Albornoz |
b6a9a1 |
local _pkg_name="${1}" _rc=0; _status="";
|
|
Lucio Andrés Illanes Albornoz |
b6a9a1 |
if ! ex_pkg_load_dump "${_pkg_name}" "${BUILD_WORKDIR}"; then
|
|
Lucio Andrés Illanes Albornoz |
b6a9a1 |
_rc=1; _status="${_status}";
|
|
Lucio Andrés Illanes Albornoz |
b6a9a1 |
else case "${ARG_RESTART_AT}" in
|
|
Lucio Andrés Illanes Albornoz |
b6a9a1 |
ALL) if ! "${MIDIPIX_BUILD_PWD}/build.sh" -P -r "${_pkg_name}" -v; then
|
|
Lucio Andrés Illanes Albornoz |
b6a9a1 |
_rc=1; _status="Error: failed to run command line ${MIDIPIX_BUILD_PWD}/build.sh -P -r ${_pkg_name} -v";
|
|
Lucio Andrés Illanes Albornoz |
b6a9a1 |
fi; ;;
|
|
Lucio Andrés Illanes Albornoz |
b6a9a1 |
*) if ! "${MIDIPIX_BUILD_PWD}/build.sh" -P -r "${_pkg_name}:${ARG_RESTART_AT}" -v; then
|
|
Lucio Andrés Illanes Albornoz |
b6a9a1 |
_rc=1; _status="Error: failed to run command line ${MIDIPIX_BUILD_PWD}/build.sh -P -r ${_pkg_name}:${ARG_RESTART_AT} -v";
|
|
Lucio Andrés Illanes Albornoz |
b6a9a1 |
fi; ;;
|
|
Lucio Andrés Illanes Albornoz |
b6a9a1 |
esac;
|
|
Lucio Andrés Illanes Albornoz |
b6a9a1 |
fi; return "${_rc}";
|
|
Lucio Andrés Illanes Albornoz |
8a27f9 |
};
|
|
Lucio Andrés Illanes Albornoz |
8a27f9 |
|
|
Lucio Andrés Illanes Albornoz |
60fba6 |
pkgtoolp_rdepends() {
|
|
Lucio Andrés Illanes Albornoz |
57b30d |
local _pkg_name="${1}" _group_name="" _pkg_depends="" _pkg_name_rdepend="" _pkg_names=""\
|
|
Lucio Andrés Illanes Albornoz |
57b30d |
_pkg_rdepends="" _rc=0 EX_PKG_BUILD_GROUPS="" EX_PKG_DISABLED="" EX_PKG_RDEPENDS_DIRECT=""; _status="";
|
|
Lucio Andrés Illanes Albornoz |
b6a9a1 |
if ! ex_pkg_load_groups; then
|
|
Lucio Andrés Illanes Albornoz |
b6a9a1 |
_rc=1; _status="Error: failed to load build groups.";
|
|
Lucio Andrés Illanes Albornoz |
b6a9a1 |
elif ! _group_name="$(ex_pkg_find_package "${EX_PKG_BUILD_GROUPS}" "${_pkg_name}")"; then
|
|
Lucio Andrés Illanes Albornoz |
b6a9a1 |
_rc=1; _status="Error: unknown package \`${_pkg_name}'.";
|
|
Lucio Andrés Illanes Albornoz |
60fba6 |
elif ! _pkg_names="$(ex_pkg_get_packages "${_group_name}")"; then
|
|
Lucio Andrés Illanes Albornoz |
b6a9a1 |
_rc=1; _status="Error: failed to expand package list of build group \`${_group_name}'.";
|
|
Lucio Andrés Illanes Albornoz |
57b30d |
elif ! ex_pkg_unfold_rdepends_direct "${_group_name}" "${_pkg_names}" "${_pkg_name}"; then
|
|
Lucio Andrés Illanes Albornoz |
b6a9a1 |
_rc=1; _status="Error: failed to unfold reverse dependency-expanded package name list for \`${_pkg_name}'.";
|
|
Lucio Andrés Illanes Albornoz |
57b30d |
elif [ -z "${EX_PKG_DISABLED}" ] && [ -z "${EX_PKG_RDEPENDS_DIRECT}" ]; then
|
|
Lucio Andrés Illanes Albornoz |
b6a9a1 |
rtl_log_msg info "Package \`%s' has no reverse dependencies." "${_pkg_name}";
|
|
Lucio Andrés Illanes Albornoz |
57b30d |
else for _pkg_name_rdepend in $(rtl_lsort "${EX_PKG_RDEPENDS_DIRECT}"); do
|
|
Lucio Andrés Illanes Albornoz |
57b30d |
_pkg_rdepends="$(rtl_lconcat "${_pkg_rdepends}" "${_pkg_name_rdepend}")";
|
|
Lucio Andrés Illanes Albornoz |
57b30d |
if _pkg_depends="$(rtl_lunfold_depends 'PKG_${_name}_DEPENDS' $(rtl_get_var_unsafe -u "PKG_"${_pkg_name}"_DEPENDS"))"\
|
|
Lucio Andrés Illanes Albornoz |
57b30d |
&& [ -n "${_pkg_depends}" ]; then
|
|
Lucio Andrés Illanes Albornoz |
57b30d |
_pkg_rdepends="$(rtl_lconcat "${_pkg_rdepends}" "?[33m${_pkg_depends}?[93m")";
|
|
Lucio Andrés Illanes Albornoz |
57b30d |
fi;
|
|
Lucio Andrés Illanes Albornoz |
57b30d |
done;
|
|
Lucio Andrés Illanes Albornoz |
57b30d |
if [ -n "${_pkg_rdepends}" ]; then
|
|
Lucio Andrés Illanes Albornoz |
57b30d |
rtl_log_msg info "Reverse dependencies of \`%s': %s" "${_pkg_name}" "${_pkg_rdepends}";
|
|
Lucio Andrés Illanes Albornoz |
60fba6 |
fi;
|
|
Lucio Andrés Illanes Albornoz |
60fba6 |
if [ -n "${EX_PKG_DISABLED}" ]; then
|
|
Lucio Andrés Illanes Albornoz |
b6a9a1 |
rtl_log_msg info "Reverse dependencies of \`%s' (disabled packages:) %s"\
|
|
Lucio Andrés Illanes Albornoz |
b6a9a1 |
"${_pkg_name}" "$(rtl_lsort "${EX_PKG_DISABLED}")";
|
|
Lucio Andrés Illanes Albornoz |
60fba6 |
fi;
|
|
Lucio Andrés Illanes Albornoz |
b6a9a1 |
fi; return "${_rc}";
|
|
Lucio Andrés Illanes Albornoz |
60fba6 |
};
|
|
Lucio Andrés Illanes Albornoz |
60fba6 |
|
|
Lucio Andrés Illanes Albornoz |
8a27f9 |
pkgtoolp_shell() {
|
|
Lucio Andrés Illanes Albornoz |
b6a9a1 |
local _pkg_name="${1}" _rc=0; _status="";
|
|
Lucio Andrés Illanes Albornoz |
b6a9a1 |
if ! ex_pkg_load_dump "${_pkg_name}" "${BUILD_WORKDIR}"; then
|
|
Lucio Andrés Illanes Albornoz |
b6a9a1 |
_rc=1; _status="${_status}";
|
|
Lucio Andrés Illanes Albornoz |
b6a9a1 |
else rtl_log_env_vars "package" $(rtl_get_vars_fast "^PKG_");
|
|
Lucio Andrés Illanes Albornoz |
b6a9a1 |
rtl_log_msg info "Launching shell \`%s' within package environment and \`%s'." "${SHELL}" "${PKG_BUILD_DIR}";
|
|
Lucio Andrés Illanes Albornoz |
b6a9a1 |
rtl_log_msg info "Run \$R to rebuild \`%s'." "${_pkg_name}";
|
|
Lucio Andrés Illanes Albornoz |
b6a9a1 |
rtl_log_msg info "Run \$RS <step> to restart the specified build step of \`%s'" "${_pkg_name}";
|
|
Lucio Andrés Illanes Albornoz |
b6a9a1 |
rtl_log_msg info "Run \$D to automatically regenerate the patch for \`%s'." "${_pkg_name}";
|
|
Lucio Andrés Illanes Albornoz |
cd416f |
export ARCH BUILD_KIND \
|
|
Lucio Andrés Illanes Albornoz |
b6a9a1 |
BUILD_DLCACHEDIR BUILD_WORKDIR \
|
|
Lucio Andrés Illanes Albornoz |
b6a9a1 |
MAKE="make LIBTOOL=${PKG_LIBTOOL:-slibtool}" \
|
|
Lucio Andrés Illanes Albornoz |
b6a9a1 |
MIDIPIX_BUILD_PWD \
|
|
Lucio Andrés Illanes Albornoz |
b6a9a1 |
PKG_NAME \
|
|
Lucio Andrés Illanes Albornoz |
b6a9a1 |
PREFIX PREFIX_CROSS PREFIX_MINGW32 PREFIX_MINIPIX \
|
|
Lucio Andrés Illanes Albornoz |
b6a9a1 |
PREFIX_NATIVE PREFIX_ROOT PREFIX_RPM;
|
|
Lucio Andrés Illanes Albornoz |
b6a9a1 |
D="${MIDIPIX_BUILD_PWD}/${0##*/} --update-diff" \
|
|
Lucio Andrés Illanes Albornoz |
b6a9a1 |
R="${MIDIPIX_BUILD_PWD}/${0##*/} --restart-at ALL" \
|
|
Lucio Andrés Illanes Albornoz |
b6a9a1 |
RS="${MIDIPIX_BUILD_PWD}/${0##*/} --restart-at " \
|
|
Lucio Andrés Illanes Albornoz |
b6a9a1 |
"${SHELL}";
|
|
Lucio Andrés Illanes Albornoz |
b6a9a1 |
fi; return "${_rc}";
|
|
Lucio Andrés Illanes Albornoz |
8a27f9 |
};
|
|
Lucio Andrés Illanes Albornoz |
8a27f9 |
|
|
Lucio Andrés Illanes Albornoz |
60fba6 |
pkgtoolp_tarball() {
|
|
Lucio Andrés Illanes Albornoz |
b6a9a1 |
local _pkg_name="${1}" _date="" _group_name="" _hname="" _pkg_name_full=""\
|
|
Lucio Andrés Illanes Albornoz |
b6a9a1 |
_pkg_version="" _rc=0 _tarball_fname="" EX_PKG_BUILD_GROUPS=""; _status="";
|
|
Lucio Andrés Illanes Albornoz |
b6a9a1 |
if ! ex_pkg_load_groups; then
|
|
Lucio Andrés Illanes Albornoz |
b6a9a1 |
_rc=1; _status="Error: failed to load build groups.";
|
|
Lucio Andrés Illanes Albornoz |
b6a9a1 |
elif ! _group_name="$(ex_pkg_find_package "${EX_PKG_BUILD_GROUPS}" "${_pkg_name}")"; then
|
|
Lucio Andrés Illanes Albornoz |
b6a9a1 |
_rc=1; _status="Error: unknown package \`${_pkg_name}'.";
|
|
Lucio Andrés Illanes Albornoz |
60fba6 |
elif ! ex_pkg_env "${DEFAULT_BUILD_STEPS}" "${DEFAULT_BUILD_VARS}" \
|
|
Lucio Andrés Illanes Albornoz |
b6a9a1 |
"${_group_name}" 0 "${_pkg_name}" "" "${BUILD_WORKDIR}"; then
|
|
Lucio Andrés Illanes Albornoz |
b6a9a1 |
_rc=1; _status="Error: failed to set package environment for \`${_pkg_name}'.";
|
|
Lucio Andrés Illanes Albornoz |
60fba6 |
elif ! _date="$(date +%Y%m%d_%H%M%S)"; then
|
|
Lucio Andrés Illanes Albornoz |
b6a9a1 |
_rc=1; _status="Error: failed to call date(1).";
|
|
Lucio Andrés Illanes Albornoz |
60fba6 |
elif ! _hname="$(hostname -f)"; then
|
|
Lucio Andrés Illanes Albornoz |
b6a9a1 |
_rc=1; _status="Error: failed to call hostname(1).";
|
|
Lucio Andrés Illanes Albornoz |
60fba6 |
else if [ -n "${PKG_VERSION}" ]; then
|
|
Lucio Andrés Illanes Albornoz |
b6a9a1 |
_pkg_name_full="${_pkg_name}-${PKG_VERSION}";
|
|
Lucio Andrés Illanes Albornoz |
60fba6 |
else
|
|
Lucio Andrés Illanes Albornoz |
b6a9a1 |
_pkg_name_full="${_pkg_name}";
|
|
Lucio Andrés Illanes Albornoz |
60fba6 |
fi;
|
|
Lucio Andrés Illanes Albornoz |
60fba6 |
_tarball_fname="${_pkg_name_full}@${_hname}-${_date}.tbz2";
|
|
Lucio Andrés Illanes Albornoz |
b6a9a1 |
rtl_log_msg info "Creating compressed tarball of \`%s' and \`%s_stderrout.log'..."\
|
|
Lucio Andrés Illanes Albornoz |
b6a9a1 |
"${PKG_BASE_DIR}" "${_pkg_name}";
|
|
Lucio Andrés Illanes Albornoz |
60fba6 |
if ! tar -C "${BUILD_WORKDIR}" -cpf - \
|
|
Lucio Andrés Illanes Albornoz |
60fba6 |
"${PKG_BASE_DIR#${BUILD_WORKDIR%/}/}" \
|
|
Lucio Andrés Illanes Albornoz |
b6a9a1 |
"${_pkg_name}_stderrout.log" |\
|
|
Lucio Andrés Illanes Albornoz |
60fba6 |
bzip2 -c -9 - > "${_tarball_fname}"; then
|
|
Lucio Andrés Illanes Albornoz |
b6a9a1 |
_rc=1; _status="Error: failed to create compressed tarball of \`${PKG_BASE_DIR}' and \`${_pkg_name}_stderrout.log'.";
|
|
Lucio Andrés Illanes Albornoz |
60fba6 |
else
|
|
Lucio Andrés Illanes Albornoz |
b6a9a1 |
rtl_log_msg info "Created compressed tarball of \`%s' and \`%s_stderrout.log'."\
|
|
Lucio Andrés Illanes Albornoz |
b6a9a1 |
"${PKG_BASE_DIR}" "${_pkg_name}";
|
|
Lucio Andrés Illanes Albornoz |
60fba6 |
fi;
|
|
Lucio Andrés Illanes Albornoz |
b6a9a1 |
fi; return "${_rc}";
|
|
Lucio Andrés Illanes Albornoz |
60fba6 |
};
|
|
Lucio Andrés Illanes Albornoz |
60fba6 |
|
|
Lucio Andrés Illanes Albornoz |
8a27f9 |
pkgtoolp_update_diff() {
|
|
Lucio Andrés Illanes Albornoz |
b6a9a1 |
local _pkg_name="${1}" _diff_fname_dst="" _diff_fname_src="" _fname=""\
|
|
Lucio Andrés Illanes Albornoz |
b6a9a1 |
_fname_base="" _rc=0; _status="";
|
|
Lucio Andrés Illanes Albornoz |
b6a9a1 |
if ! ex_pkg_load_dump "${_pkg_name}" "${BUILD_WORKDIR}"; then
|
|
Lucio Andrés Illanes Albornoz |
b6a9a1 |
_rc=1; _status="${_status}";
|
|
Lucio Andrés Illanes Albornoz |
b6a9a1 |
else if [ -n "${PKG_VERSION}" ]; then
|
|
Lucio Andrés Illanes Albornoz |
b6a9a1 |
_diff_fname_dst="${_pkg_name}-${PKG_VERSION}.local.patch";
|
|
Lucio Andrés Illanes Albornoz |
b6a9a1 |
else
|
|
Lucio Andrés Illanes Albornoz |
b6a9a1 |
_diff_fname_dst="${_pkg_name}.local.patch";
|
|
Lucio Andrés Illanes Albornoz |
8a27f9 |
fi;
|
|
Lucio Andrés Illanes Albornoz |
b6a9a1 |
if ! _diff_fname_src="$(mktemp)"; then
|
|
Lucio Andrés Illanes Albornoz |
b6a9a1 |
_rc=1; _status="Error: failed to create temporary target diff(1) file.";
|
|
Lucio Andrés Illanes Albornoz |
b6a9a1 |
else trap "rm -f \"${_diff_fname_src}\" >/dev/null 2>&1" EXIT HUP INT TERM USR1 USR2;
|
|
Lucio Andrés Illanes Albornoz |
b6a9a1 |
(cd "${PKG_BASE_DIR}" && printf "" > "${_diff_fname_src}";
|
|
Lucio Andrés Illanes Albornoz |
b6a9a1 |
for _fname in $(find "${PKG_SUBDIR}" -iname \*.orig); do
|
|
Lucio Andrés Illanes Albornoz |
b6a9a1 |
_fname_base="${_fname##*/}"; _fname_base="${_fname_base%.orig}";
|
|
Lucio Andrés Illanes Albornoz |
b6a9a1 |
case "${_fname_base}" in
|
|
Lucio Andrés Illanes Albornoz |
b6a9a1 |
config.sub)
|
|
Lucio Andrés Illanes Albornoz |
b6a9a1 |
continue; ;;
|
|
Lucio Andrés Illanes Albornoz |
b6a9a1 |
*) diff -u "${_fname}" "${_fname%.orig}" >> "${_diff_fname_src}"; ;;
|
|
Lucio Andrés Illanes Albornoz |
b6a9a1 |
esac;
|
|
Lucio Andrés Illanes Albornoz |
b6a9a1 |
done);
|
|
Lucio Andrés Illanes Albornoz |
b6a9a1 |
if [ "${?}" -ne 0 ]; then
|
|
Lucio Andrés Illanes Albornoz |
b6a9a1 |
_rc=1; _status="Error: failed to create diff(1).";
|
|
Lucio Andrés Illanes Albornoz |
b6a9a1 |
elif ! rtl_fileop mv "${_diff_fname_src}" "${MIDIPIX_BUILD_PWD}/patches/${_diff_fname_dst}"; then
|
|
Lucio Andrés Illanes Albornoz |
b6a9a1 |
_rc=1; _status="Error: failed to rename diff(1) to \`${MIDIPIX_BUILD_PWD}/patches/${_diff_fname_dst}'.";
|
|
Lucio Andrés Illanes Albornoz |
b6a9a1 |
else trap - EXIT HUP INT TERM USR1 USR2;
|
|
Lucio Andrés Illanes Albornoz |
b6a9a1 |
rtl_log_msg info "Updated \`%s/patches/%s'."\
|
|
Lucio Andrés Illanes Albornoz |
b6a9a1 |
"${MIDIPIX_BUILD_PWD}" "${_diff_fname_dst}";
|
|
Lucio Andrés Illanes Albornoz |
b6a9a1 |
fi;
|
|
Lucio Andrés Illanes Albornoz |
b6a9a1 |
fi;
|
|
Lucio Andrés Illanes Albornoz |
b6a9a1 |
fi; return "${_rc}";
|
|
Lucio Andrés Illanes Albornoz |
8a27f9 |
};
|
|
Lucio Andrés Illanes Albornoz |
8a27f9 |
|
|
Lucio Andrés Illanes Albornoz |
8a27f9 |
pkgtool() {
|
|
Lucio Andrés Illanes Albornoz |
cd416f |
local _rc=0 _status="" BUILD_GROUPS="" ARCH BUILD_KIND BUILD_WORKDIR PKGTOOL_PKGNAME PREFIX;
|
|
Lucio Andrés Illanes Albornoz |
b6a9a1 |
if ! . "${0%/*}/subr/pkgtool_init.subr"; then
|
|
Lucio Andrés Illanes Albornoz |
b6a9a1 |
_rc=1; printf "Error: failed to source \`${0%/*}/subr/pkgtool_init.subr'." >&2;
|
|
Lucio Andrés Illanes Albornoz |
b6a9a1 |
elif ! pkgtool_init "${@}"; then
|
|
Lucio Andrés Illanes Albornoz |
b6a9a1 |
_rc=1; _status="${_status}";
|
|
Lucio Andrés Illanes Albornoz |
b6a9a1 |
else case "1" in
|
|
Lucio Andrés Illanes Albornoz |
b6a9a1 |
"${ARG_INFO:-0}") pkgtoolp_info "${PKGTOOL_PKG_NAME}"; ;;
|
|
Lucio Andrés Illanes Albornoz |
b63b9b |
"${ARG_MIRROR:-0}") pkgtoolp_mirror "${ARG_MIRROR_DNAME}"; ;;
|
|
Lucio Andrés Illanes Albornoz |
b6a9a1 |
"${ARG_RDEPENDS:-0}") pkgtoolp_rdepends "${PKGTOOL_PKG_NAME}"; ;;
|
|
Lucio Andrés Illanes Albornoz |
b6a9a1 |
"${ARG_RESTART_AT:+1}") pkgtoolp_restart_at "${PKGTOOL_PKG_NAME}"; ;;
|
|
Lucio Andrés Illanes Albornoz |
b6a9a1 |
"${ARG_SHELL:-0}") pkgtoolp_shell "${PKGTOOL_PKG_NAME}"; ;;
|
|
Lucio Andrés Illanes Albornoz |
b6a9a1 |
"${ARG_TARBALL:-0}") pkgtoolp_tarball "${PKGTOOL_PKG_NAME}"; ;;
|
|
Lucio Andrés Illanes Albornoz |
b6a9a1 |
"${ARG_UPDATE_DIFF:-0}") pkgtoolp_update_diff "${PKGTOOL_PKG_NAME}"; ;;
|
|
Lucio Andrés Illanes Albornoz |
b6a9a1 |
esac; _rc="${?}";
|
|
Lucio Andrés Illanes Albornoz |
b6a9a1 |
fi;
|
|
Lucio Andrés Illanes Albornoz |
b6a9a1 |
if [ "${_rc}" -ne 0 ]; then
|
|
Lucio Andrés Illanes Albornoz |
b6a9a1 |
rtl_log_msg fatalexit "${_status}";
|
|
Lucio Andrés Illanes Albornoz |
b6a9a1 |
elif [ -n "${_status}" ]; then
|
|
Lucio Andrés Illanes Albornoz |
b6a9a1 |
rtl_log_msg info "${_status}";
|
|
Lucio Andrés Illanes Albornoz |
8a27f9 |
fi;
|
|
Lucio Andrés Illanes Albornoz |
8a27f9 |
};
|
|
Lucio Andrés Illanes Albornoz |
8a27f9 |
|
|
Lucio Andrés Illanes Albornoz |
e1d469 |
set +o errexit -o noglob -o nounset; pkgtool "${@}";
|
|
Lucio Andrés Illanes Albornoz |
8a27f9 |
|
|
Lucio Andrés Illanes Albornoz |
8a27f9 |
# vim:filetype=sh textwidth=0
|