summaryrefslogtreecommitdiffhomepage
path: root/subr
diff options
context:
space:
mode:
Diffstat (limited to 'subr')
-rw-r--r--subr/build.subr62
-rw-r--r--subr/mode_check_updates.subr102
-rw-r--r--subr/pkg_build.subr30
-rw-r--r--subr/pkg_build_clean.subr (renamed from subr/pkg_clean.subr)2
-rw-r--r--subr/pkg_configure_autotools.subr (renamed from subr/pkg_autoconf.subr)25
-rw-r--r--subr/pkg_configure_patch.subr (renamed from subr/pkg_patch.subr)18
-rw-r--r--subr/pkg_configure_patch_pre.subr (renamed from subr/pkg_patch_pre.subr)10
-rw-r--r--subr/pkg_disabled.subr14
-rw-r--r--subr/pkg_fetch.subr82
-rw-r--r--subr/pkg_fetch_extract.subr (renamed from subr/pkg_extract.subr)2
-rw-r--r--subr/pkg_fetch_git.subr49
-rw-r--r--subr/pkg_fetch_subdirs.subr (renamed from subr/pkg_build_dir.subr)6
-rw-r--r--subr/pkg_fetch_wget.subr42
-rw-r--r--subr/pkg_install.subr117
-rw-r--r--subr/pkg_install_files.subr54
-rw-r--r--subr/pkg_install_libs.subr49
-rw-r--r--subr/pkg_install_make.subr20
-rw-r--r--subr/pkg_install_pkgconfig.subr16
-rw-r--r--subr/pkg_install_pre.subr18
-rw-r--r--subr/pkg_install_purge_la.subr12
-rw-r--r--subr/pkg_install_strip.subr31
-rw-r--r--subr/pkg_install_subdirs.subr17
-rw-r--r--subr/pkg_setup_env.subr33
-rw-r--r--subr/pkg_setup_vars.subr31
-rw-r--r--subr/pkg_strip.subr37
-rw-r--r--subr/pkg_work_dir.subr12
-rw-r--r--subr/post_build_files.subr15
-rw-r--r--subr/post_copy_etc.subr11
-rw-r--r--subr/post_sha256sums.subr22
-rw-r--r--subr/post_tarballs.subr95
-rw-r--r--subr/pre_build_files.subr20
-rw-r--r--subr/pre_check.subr (renamed from subr/pre_prereqs.subr)2
-rw-r--r--subr/pre_subdirs.subr4
33 files changed, 404 insertions, 656 deletions
diff --git a/subr/build.subr b/subr/build.subr
index d6e72898..b7341632 100644
--- a/subr/build.subr
+++ b/subr/build.subr
@@ -47,46 +47,28 @@ build_fileop() {
fi;
};
-install_files() {
- local _verbose _prefix _ln_target _ln_fname _mkdir_fname \
- _file_fname_src _file_fname_dst;
- if [ "${1}" = "-v" ]; then
- _verbose=1; shift;
- fi; _prefix="${1}"; shift;
- while [ ${#} -gt 0 ]; do
- case "${1}" in
- @*=*)
- _ln_target="${1%=*}";
- _ln_target="${_ln_target#@}";
- _ln_fname="${1#*=}";
- if [ "${_ln_fname#/}" = "${_ln_fname}" ]; then
- _ln_fname="${_prefix:+${_prefix}/}${_ln_fname}";
- fi;
- if [ -e "${_ln_fname}" ]; then
- if [ ${_verbose:-0} -eq 1 ]; then
- echo build_fileop rm "${_ln_fname}";
- fi;
- build_fileop rm "${_ln_fname}";
- fi;
- build_fileop ln_symbolic "${_ln_target}" "${_ln_fname}";
- ;;
- /=*)
- _mkdir_fname="${1#/=}";
- if [ "${_mkdir_fname#/}" = "${_mkdir_fname}" ]; then
- _mkdir_fname="${_prefix:+${_prefix}/}${_mkdir_fname}";
- fi;
- build_fileop mkdir "${_mkdir_fname}";
- ;;
- *)
- _file_fname_src="${1%=*}";
- _file_fname_dst="${1#*=}";
- if [ "${_file_fname_dst#/}" = "${_file_fname_dst}" ]; then
- _file_fname_dst="${_prefix:+${_prefix}/}${_file_fname_dst}";
- fi;
- build_fileop cp "${_file_fname_src}" "${_file_fname_dst}";
- ;;
- esac; shift;
- done;
+build_files_fini() {
+ : $((BUILD_TIMES_SECS=$(command date +%s)-${BUILD_TIMES_SECS}));
+ : $((BUILD_TIMES_HOURS=${BUILD_TIMES_SECS}/3600));
+ : $((BUILD_TIMES_MINUTES=(${BUILD_TIMES_SECS}%3600)/60));
+ : $((BUILD_TIMES_SECS=(${BUILD_TIMES_SECS}%3600)%60));
+ if [ -f "${BUILD_STATUS_IN_PROGRESS_FNAME}" ]; then
+ build_fileop rm ${BUILD_STATUS_IN_PROGRESS_FNAME};
+ fi;
+};
+build_files_init() {
+ if [ -e ${BUILD_STATUS_IN_PROGRESS_FNAME} ]; then
+ log_msg failexit "Error: another build targeting this architecture and build type is currently in progress.";
+ else
+ touch ${BUILD_STATUS_IN_PROGRESS_FNAME};
+ fi;
+ if [ -e ${BUILD_LOG_FNAME} ]; then
+ mv -- ${BUILD_LOG_FNAME} ${BUILD_LOG_LAST_FNAME};
+ fi;
+ BUILD_DATE_START="$(date %Y-%m-%d-%H-%M-%S)";
+ BUILD_NFINI=${BUILD_NSKIP:=${BUILD_NFAIL:=${BUILD_NBUILT:=0}}};
+ BUILD_TIMES_SECS=$(command date +%s);
+ BUILD_PKGS_FAILED="";
};
is_build_script_done() {
diff --git a/subr/mode_check_updates.subr b/subr/mode_check_updates.subr
deleted file mode 100644
index 9699d360..00000000
--- a/subr/mode_check_updates.subr
+++ /dev/null
@@ -1,102 +0,0 @@
-#
-# set -o errexit -o noglob are assumed.
-#
-
-modep_cpu_get_fnames() {
- if test_cmd pkg_${cu_name}_check_updates; then
- pkg_${cu_name}_check_updates get_fnames;
- fi;
- if [ -z "${cu_fnames}" ]; then
- if [ "${cu_url#*://github.com/*}" != "${cu_url}" ]; then
- _cpugf_uname="${cu_url#*/github.com/}";
- _cpugf_uname="${_cpugf_uname%%/*}";
- _cpugf_pname="${cu_url#*/github.com/${_cpugf_uname}/}";
- _cpugf_pname="${_cpugf_pname%%/*}";
- cu_url_index="https://github.com/${_cpugf_uname%%/*}/${_cpugf_pname%%/*}/releases/";
- unset _cpu_uname _cpu_pname;
- cu_fnames="$(wget ${DEFAULT_WGET_ARGS} -qO- ${cu_url_index} |\
- sed -n '/<span class="\(tag-name\|css-truncate-target\)">/s/^.*<span class="\(tag-name\|css-truncate-target\)">\([a-zA-Z]\+-\|v\|\)\(.\+\)<\/span>.*$/\3/p')";
- cu_fname_base="${cu_name}";
- cu_fname_ext="${cu_fname#v${cu_version}.}";
- else
- cu_url_index="${cu_url%/*}/";
- cu_fnames="$(wget ${DEFAULT_WGET_ARGS} -qO- "${cu_url_index}" |\
- sed -n '/[hH][rR][eE][fF]="[^"]\+"/s/^.*[hH][rR][eE][fF]="\([^"]\+\)".*$/\1/p')";
- fi;
- fi;
- : ${cu_fname:="${cu_url##*/}"};
- : ${cu_fname_base:="${cu_fname%%-*}"};
- : ${cu_fname_ext:="${cu_fname#${cu_fname_base}-${cu_version}.}"};
-};
-
-modep_check_cpu_get_version() {
- unset cu_fname_version;
- if test_cmd pkg_${cu_name}_check_updates; then
- pkg_${cu_name}_check_updates get_version;
- fi;
- if [ -z "${cu_fname_version}" ]; then
- if [ "${cu_url#*://github.com/*}" != "${cu_url}" ]; then
- if [ "${cu_fname#${cu_fname_base}-}" = "${cu_fname}" ]\
- && [ "${cu_fname%.${cu_fname_ext}}" = "${cu_fname}" ]; then
- cu_fname_version="${cu_fname}";
- fi;
- elif [ "${cu_fname#${cu_fname_base}-}" != "${cu_fname}" ]\
- && [ "${cu_fname%.${cu_fname_ext}}" != "${cu_fname}" ]; then
- cu_fname_version="${cu_fname#${cu_fname_base}-}";
- cu_fname_version="${cu_fname_version%.${cu_fname_ext}}";
- fi;
- fi;
-};
-
-mode_check_pkg_updates() {
- cu_name="${1}"; cu_NAME="${2}";
- cu_version="$(get_var_unsafe PKG_${cu_NAME}_VERSION)";
- cu_url="$(get_var_unsafe PKG_${cu_NAME}_URL)";
- cu_url_type="$(get_var_unsafe PKG_${cu_NAME}_URL_TYPE)";
- . vars/check_updates.vars;
- if lmatch "${CHECK_UPDATES_SKIP}" " " "${cu_name}"; then
- log_msg vnfo "Skipping \`${cu_name}' (set in \${CHECK_UPDATES_SKIP}.)";
- return 0;
- elif [ "${cu_url_type}" = "git" ]; then
- log_msg vnfo "Skipping \`${cu_name}' (URL_TYPE is Git.)";
- return 0;
- elif [ -z "${cu_version}" -o -z "${cu_url}" ]; then
- log_msg fail "Zero-length \${cu_version} and/or \${cu_url} for \`${cu_name}' (ignored.)";
- return 0;
- else
- log_msg vnfo "Checking ${cu_name} v${cu_version} for updates.";
- modep_cpu_get_fnames; _cpu_versions="";
- fi;
- for cu_fname in ${cu_fnames}; do
- cu_fname="${cu_fname##*/}"; modep_check_cpu_get_version;
- if [ -z "${cu_fname_version}" ]; then
- continue;
- elif ! echo "${cu_fname_version}" | grep -Eq '^[-_.0-9a-zA-Z]+$' \
- || echo "${cu_fname_version}" | grep -Eq '^[_.a-zA-Z]+'; then
- log_msg varn "Skipping \`${cu_fname_version}' (invalid version.)";
- else
- _cpu_versions="${_cpu_versions:+${_cpu_versions} }${cu_fname_version}";
- fi;
- done;
- if [ -z "${_cpu_versions}" ]; then
- log_msg warn "No versions available for \`${cu_name}' (Filename URL: ${cu_url}, index URL: ${cu_url_index}).";
- else
- _cpu_versions="$(echo "${_cpu_versions}" |\
- sed 's/ /\n/g' | sort -rV | uniq |\
- head -n${CHECK_UPDATES_SHOW_NEW:-6} |\
- paste -d" " -s)";
- if test_cmd pkg_${cu_name}_check_updates; then
- pkg_${cu_name}_check_updates version_fixup;
- fi;
- if [ "${_cpu_versions%% *}" != "${cu_version}" ]; then
- log_msg info "New release(s) available for ${cu_name} v${cu_version}: ${_cpu_versions}.";
- else
- log_msg vnfo "${cu_name} v${cu_version} is up to date.";
- fi;
- fi;
- unset cu_fname cu_fname_base cu_fname_ext cu_fnames cu_fname_version \
- cu_name cu_url cu_url_fname cu_url_fname_base cu_url_fname_ext \
- cu_url_index cu_url_type cu_version _cpu_versions;
-};
-
-# vim:filetype=sh
diff --git a/subr/pkg_build.subr b/subr/pkg_build.subr
index 4cb29d29..70801628 100644
--- a/subr/pkg_build.subr
+++ b/subr/pkg_build.subr
@@ -7,23 +7,19 @@ pkg_build() {
if [ ! -x "${PKG_CONFIGURE}" ]; then
_no_autoconf=1;
fi;
- if [ -n "${PKG_BUILD_CMDLINE}" ]; then
- ${PKG_BUILD_CMDLINE};
- else
- # N.B. We only specify CC= here if the current package does not use GNU
- # autoconf as it often abuses it by appending -std={gnu99,...} to it
- # instead of amending CFLAGS.
- run_cmd_unsplit make \
- ${PKG_MAKEFLAGS_BUILD} \
- ${PKG_MAKEFLAGS_BUILD_EXTRA} \
- AR=${AR} ${_no_autoconf:+CC=${CC}} RANLIB=${RANLIB} \
- "${PKG_CFLAGS_BUILD:+CFLAGS=${PKG_CFLAGS_BUILD}}" \
- "${CFLAGS_FOR_BUILD:+CFLAGS_FOR_BUILD=${CFLAGS_FOR_BUILD}}" \
- "${PKG_CFLAGS_BUILD_EXTRA:+CFLAGS+=${PKG_CFLAGS_BUILD_EXTRA}}" \
- "${PKG_LDFLAGS_BUILD:+LDFLAGS=${PKG_LDFLAGS_BUILD}}" \
- "${PKG_LDFLAGS_BUILD_EXTRA:+LDFLAGS+=${PKG_LDFLAGS_BUILD_EXTRA}}"\
- "LIBTOOL=${PKG_SLIBTOOL:-slibtool}";
- fi;
+ # N.B. We only specify CC= here if the current package does not use GNU
+ # autoconf as it often abuses it by appending -std={gnu99,...} to it
+ # instead of amending CFLAGS.
+ run_cmd_unsplit make \
+ ${PKG_MAKEFLAGS_BUILD} \
+ ${PKG_MAKEFLAGS_BUILD_EXTRA} \
+ AR=${AR} ${_no_autoconf:+CC=${CC}} RANLIB=${RANLIB} \
+ "${PKG_CFLAGS_BUILD:+CFLAGS=${PKG_CFLAGS_BUILD}}" \
+ "${CFLAGS_FOR_BUILD:+CFLAGS_FOR_BUILD=${CFLAGS_FOR_BUILD}}" \
+ "${PKG_CFLAGS_BUILD_EXTRA:+CFLAGS+=${PKG_CFLAGS_BUILD_EXTRA}}" \
+ "${PKG_LDFLAGS_BUILD:+LDFLAGS=${PKG_LDFLAGS_BUILD}}" \
+ "${PKG_LDFLAGS_BUILD_EXTRA:+LDFLAGS+=${PKG_LDFLAGS_BUILD_EXTRA}}"\
+ "LIBTOOL=${PKG_SLIBTOOL:-slibtool}";
};
# vim:filetype=sh
diff --git a/subr/pkg_clean.subr b/subr/pkg_build_clean.subr
index 4cfaa15a..8b2e909d 100644
--- a/subr/pkg_clean.subr
+++ b/subr/pkg_build_clean.subr
@@ -2,7 +2,7 @@
# set -o errexit -o noglob are assumed.
#
-pkg_clean() {
+pkg_build_clean() {
make clean;
};
diff --git a/subr/pkg_autoconf.subr b/subr/pkg_configure_autotools.subr
index 8a0ea124..dbad6a30 100644
--- a/subr/pkg_autoconf.subr
+++ b/subr/pkg_configure_autotools.subr
@@ -2,32 +2,32 @@
# set -o errexit -o noglob are assumed.
#
-pkg_autoconf() {
- local __;
+pkg_configure_autotools() {
+ local _script_fname _subdir_tgt;
if [ -e "${PKG_BASE_DIR}/${PKG_SUBDIR}/configure" -o \
-e "${PKG_BASE_DIR}/${PKG_SUBDIR}/configure.ac" -o \
-e "${PKG_BASE_DIR}/${PKG_SUBDIR}/configure.in" -o \
-e "${PKG_BASE_DIR}/${PKG_SUBDIR}/config.guess" ]; then
if [ -e "${PKG_BASE_DIR}/${PKG_SUBDIR}/configure.ac" ]\
&& [ ! -e "${PKG_BASE_DIR}/${PKG_SUBDIR}/configure" ]; then
- for __ in bootstrap bootstrap.sh autogen.sh ""; do
- if [ -z "${__}" ]; then
+ for _script_fname in bootstrap bootstrap.sh autogen.sh ""; do
+ if [ -z "${_script_fname}" ]; then
(build_fileop cd "${PKG_BASE_DIR}/${PKG_SUBDIR}" && autoconf)\
|| exit 1 && break;
- elif [ -e "${PKG_BASE_DIR}/${PKG_SUBDIR}/${__}" ]; then
- for ___ in "${PKG_BASE_DIR}/${PKG_SUBDIR}/build-aux" "${PKG_BASE_DIR}/${PKG_SUBDIR}"; do
- if [ -e "${___}" ]; then
+ elif [ -e "${PKG_BASE_DIR}/${PKG_SUBDIR}/${_script_fname}" ]; then
+ for _subdir_tgt in "${PKG_BASE_DIR}/${PKG_SUBDIR}/build-aux" "${PKG_BASE_DIR}/${PKG_SUBDIR}"; do
+ if [ -e "${_subdir_tgt}" ]; then
echo install -m 0700 \
"${MIDIPIX_BUILD_PWD}/etc/config.sub" \
- "${___}/config.sub";
+ "${_subdir_tgt}/config.sub";
install -m 0700 \
"${MIDIPIX_BUILD_PWD}/etc/config.sub" \
- "${___}/config.sub";
+ "${_subdir_tgt}/config.sub";
break;
fi;
done;
- (build_fileop cd "${PKG_BASE_DIR}/${PKG_SUBDIR}" && "${SHELL}" "${__}")\
- || exit 1 && break;
+ (build_fileop cd "${PKG_BASE_DIR}/${PKG_SUBDIR}" && \
+ "${SHELL}" "${_script_fname}") || exit 1 && break;
fi;
done;
fi;
@@ -38,9 +38,6 @@ pkg_autoconf() {
-exec install -m 0700 "${MIDIPIX_BUILD_PWD}/etc/config.sub" {} \;;
if [ "${PKG_BUILD_TYPE}" != host ]; then
build_fileop cp "${MIDIPIX_BUILD_PWD}/etc/config.cache" "${PKG_BUILD_DIR}/";
- if [ -n "${PKG_CONFIG_CACHE_EXTRA}" ]; then
- build_fileop cp "${MIDIPIX_BUILD_PWD}/etc/config.cache" "${PKG_BASE_DIR}/${PKG_CONFIG_CACHE_EXTRA}/";
- fi;
fi;
fi;
};
diff --git a/subr/pkg_patch.subr b/subr/pkg_configure_patch.subr
index fadd1ed8..f40d73d7 100644
--- a/subr/pkg_patch.subr
+++ b/subr/pkg_configure_patch.subr
@@ -2,21 +2,21 @@
# set -o errexit -o noglob are assumed.
#
-pkg_patch() {
+pkg_configure_patch() {
local _patch_fname _patches_done;
set +o noglob;
for _patch_fname in \
${WORKDIR}/chainport-native-${PKG_TARGET}/chainport/${PKG_NAME}.midipix.patch \
${WORKDIR}/chainport-native-${PKG_TARGET}/chainport/${PKG_SUBDIR}.midipix.patch \
${WORKDIR}/chainport-native-${PKG_TARGET}/chainport/${PKG_SUBDIR%-*}.midipix.patch \
- ${MIDIPIX_BUILD_PWD}/patches/${PKG_NAME}/*.patch \
- ${MIDIPIX_BUILD_PWD}/patches/${PKG_SUBDIR}/*.patch \
- ${MIDIPIX_BUILD_PWD}/patches/${PKG_SUBDIR%-*}/*.patch \
- ${MIDIPIX_BUILD_PWD}/patches/${PKG_NAME}.local.patch \
- ${MIDIPIX_BUILD_PWD}/patches/${PKG_SUBDIR}.local.patch \
- ${MIDIPIX_BUILD_PWD}/patches/${PKG_SUBDIR%-*}.local.patch \
- ${MIDIPIX_BUILD_PWD}/patches/${PKG_NAME}.local@${BUILD_HNAME}.patch \
- ${MIDIPIX_BUILD_PWD}/patches/${PKG_SUBDIR}.local@${BUILD_HNAME}.patch \
+ ${MIDIPIX_BUILD_PWD}/patches/${PKG_NAME}/*.patch \
+ ${MIDIPIX_BUILD_PWD}/patches/${PKG_SUBDIR}/*.patch \
+ ${MIDIPIX_BUILD_PWD}/patches/${PKG_SUBDIR%-*}/*.patch \
+ ${MIDIPIX_BUILD_PWD}/patches/${PKG_NAME}.local.patch \
+ ${MIDIPIX_BUILD_PWD}/patches/${PKG_SUBDIR}.local.patch \
+ ${MIDIPIX_BUILD_PWD}/patches/${PKG_SUBDIR%-*}.local.patch \
+ ${MIDIPIX_BUILD_PWD}/patches/${PKG_NAME}.local@${BUILD_HNAME}.patch \
+ ${MIDIPIX_BUILD_PWD}/patches/${PKG_SUBDIR}.local@${BUILD_HNAME}.patch \
${MIDIPIX_BUILD_PWD}/patches/${PKG_SUBDIR%-*}.local@${BUILD_HNAME}.patch; do
if ! lmatch "${_patches_done}" " " "${_patch_fname}"\
&& [ -r "${_patch_fname}" ]; then
diff --git a/subr/pkg_patch_pre.subr b/subr/pkg_configure_patch_pre.subr
index f6ab9f05..d228bd83 100644
--- a/subr/pkg_patch_pre.subr
+++ b/subr/pkg_configure_patch_pre.subr
@@ -2,15 +2,15 @@
# set -o errexit -o noglob are assumed.
#
-pkg_patch_pre() {
- local __;
- for __ in \
+pkg_configure_patch_pre() {
+ local _patch_path;
+ for _patch_path in \
${MIDIPIX_BUILD_PWD}/../${PKG_SUBDIR}_pre.local.patch \
${MIDIPIX_BUILD_PWD}/../${PKG_SUBDIR}_pre.local@${BUILD_HNAME}.patch \
${MIDIPIX_BUILD_PWD}/patches/${PKG_SUBDIR}_pre.local.patch \
${MIDIPIX_BUILD_PWD}/patches/${PKG_SUBDIR}_pre.local@${BUILD_HNAME}.patch; do
- if [ -r "${__}" ]; then
- patch -b -d "${PKG_BASE_DIR}/${PKG_SUBDIR}" -p1 < "${__}";
+ if [ -r "${_patch_path}" ]; then
+ patch -b -d "${PKG_BASE_DIR}/${PKG_SUBDIR}" -p1 < "${_patch_path}";
fi;
done;
};
diff --git a/subr/pkg_disabled.subr b/subr/pkg_disabled.subr
deleted file mode 100644
index f9580c64..00000000
--- a/subr/pkg_disabled.subr
+++ /dev/null
@@ -1,14 +0,0 @@
-#
-# set -o errexit -o noglob are assumed.
-#
-
-pkg_disabled() {
- local _pkg_name_uc;
- _pkg_name_uc="$(toupper "${PKG_NAME}")";
- if [ "$(get_var_unsafe PKG_${_pkg_name_uc}_DISABLED)" = "1" ]; then
- log_msg vnfo "Skipping disabled package \`${PKG_NAME}.'";
- exit 0;
- fi;
-};
-
-# vim:filetype=sh
diff --git a/subr/pkg_fetch.subr b/subr/pkg_fetch.subr
deleted file mode 100644
index 7c71c344..00000000
--- a/subr/pkg_fetch.subr
+++ /dev/null
@@ -1,82 +0,0 @@
-#
-# set -o errexit -o noglob are assumed.
-#
-
-# N.B. URLs ($1) may contain `?' or '&' characters.
-pkgp_fetch() {
- local _url="${1}" _sha256sum_src="${2}";
- if [ -z "${3}" ]; then
- _url_dst="${DLCACHEDIR}/$(basename "${_url}")";
- else
- _url_dst="${DLCACHEDIR}/${3}";
- fi;
- if [ "${ARG_OFFLINE:-0}" -eq 1 ]\
- || [ -e "${_url_dst}.fetched" ]; then
- return 0;
- else
- wget ${DEFAULT_WGET_ARGS} -c -O "${_url_dst}" "${_url}";
- fi;
- if [ -n "${_sha256sum_src}" ]; then
- set -- $(openssl dgst -sha256 "${_url_dst}"); shift $((${#}-1));
- if [ "${_sha256sum_dst:=${1}}" != "${_sha256sum_src}" ]; then
- if [ "${ARG_IGNORE_SHA256SUMS:-0}" -eq 0 ]; then
- log_msg failexit "Error: hash mismatch for URL \`${_url}' (is: ${_sha256sum_dst}, should be: ${_sha256sum_src}.)";
- else
- log_msg warn "Warning: hash mismatch for URL \`${_url}' (is: ${_sha256sum_dst}, should be: ${_sha256sum_src}.)";
- fi;
- fi;
- fi;
- touch "${_url_dst}.fetched";
-};
-
-pkgp_fetch_git() {
- local _tgtdir="${1}" _subdir="${2}" _url="${3}" _branch="${4}";
- if [ "${ARG_OFFLINE:-0}" -eq 0 ]; then
- if [ -e "${DLCACHEDIR}/${_subdir}" ]; then
- (build_fileop cd "${DLCACHEDIR}/${_subdir}" &&\
- git pull origin "${_branch:-main}");
- else
- git clone "${_url}" "${DLCACHEDIR}/${_subdir}";
- if [ -n "${_branch}" -a \
- \( -z "${_branch#main}" \) -a \
- \( -z "${_branch#master}" \) ]; then
- (build_fileop cd "${DLCACHEDIR}/${_subdir}" &&\
- git checkout -b "${_branch}");
- fi;
- fi;
- fi;
- build_fileop rm "${_tgtdir}/${_subdir}";
- build_fileop cp "${DLCACHEDIR}/${_subdir}" "${_tgtdir}";
-};
-
-pkgp_fetch_urls_git() {
- local _tgtdir="${2}" _url_spec _subdir _url _git_branch;
- for _url_spec in ${1}; do
- _subdir="${_url_spec%=*}";
- _url="${_url_spec#*=}";
- _url="${_url%@*}";
- if [ "${_url_spec#*@}" != "${_url_spec}" ]; then
- _git_branch=${_url_spec#*@};
- fi;
- pkgp_fetch_git "${_tgtdir}" "${_subdir}" "${_url}" "${_git_branch}";
- done;
-};
-
-pkg_fetch() {
- if [ -n "${1}" ]; then
- if [ "${1}" = "-git" ]; then
- shift; pkgp_fetch_urls_git "${1}" "${PKG_BASE_DIR}";
- else
- pkgp_fetch "${1}" "${2}";
- fi;
- else
- if [ -n "${PKG_URL}" ]; then
- pkgp_fetch "${PKG_URL}" "${PKG_SHA256SUM}" "${PKG_FNAME}";
- fi;
- if [ -n "${PKG_URLS_GIT}" ]; then
- pkgp_fetch_urls_git "${PKG_URLS_GIT}" "${PKG_BASE_DIR}";
- fi;
- fi;
-};
-
-# vim:filetype=sh
diff --git a/subr/pkg_extract.subr b/subr/pkg_fetch_extract.subr
index 909dc730..71155b44 100644
--- a/subr/pkg_extract.subr
+++ b/subr/pkg_fetch_extract.subr
@@ -2,7 +2,7 @@
# set -o errexit -o noglob are assumed.
#
-pkg_extract() {
+pkg_fetch_extract() {
if [ -n "${PKG_URL}" ]\
&& [ "${PKG_URL_TYPE:-wget}" = wget ]; then
build_fileop rm "${PKG_BASE_DIR}/${PKG_SUBDIR}";
diff --git a/subr/pkg_fetch_git.subr b/subr/pkg_fetch_git.subr
new file mode 100644
index 00000000..0ff61ae2
--- /dev/null
+++ b/subr/pkg_fetch_git.subr
@@ -0,0 +1,49 @@
+#
+# set -o errexit -o noglob are assumed.
+#
+
+pkgp_fetch_git() {
+ local _tgtdir="${1}" _subdir="${2}" _url="${3}" _branch="${4}";
+ if [ "${ARG_OFFLINE:-0}" -eq 0 ]; then
+ if [ -e "${DLCACHEDIR}/${_subdir}" ]; then
+ (build_fileop cd "${DLCACHEDIR}/${_subdir}" &&\
+ git pull origin "${_branch:-main}");
+ else
+ git clone "${_url}" "${DLCACHEDIR}/${_subdir}";
+ if [ -n "${_branch}" -a \
+ \( -z "${_branch#main}" \) -a \
+ \( -z "${_branch#master}" \) ]; then
+ (build_fileop cd "${DLCACHEDIR}/${_subdir}" &&\
+ git checkout -b "${_branch}");
+ fi;
+ fi;
+ fi;
+ build_fileop rm "${_tgtdir}/${_subdir}";
+ build_fileop cp "${DLCACHEDIR}/${_subdir}" "${_tgtdir}";
+};
+
+pkgp_fetch_urls_git() {
+ local _tgtdir _url_spec _subdir _url _git_branch;
+ _tgtdir="${1}"; shift;
+ for _url_spec in "${@}"; do
+ _subdir="${_url_spec%=*}";
+ _url="${_url_spec#*=}";
+ _url="${_url%@*}";
+ if [ "${_url_spec#*@}" != "${_url_spec}" ]; then
+ _git_branch=${_url_spec#*@};
+ fi;
+ pkgp_fetch_git "${_tgtdir}" "${_subdir}" "${_url}" "${_git_branch}";
+ done;
+};
+
+pkg_fetch_git() {
+ if [ ${#} -gt 0 ]; then
+ pkgp_fetch_urls_git "${PKG_BASE_DIR}" "${@}";
+ else
+ if [ -n "${PKG_URLS_GIT}" ]; then
+ pkgp_fetch_urls_git "${PKG_BASE_DIR}" ${PKG_URLS_GIT};
+ fi;
+ fi;
+};
+
+# vim:filetype=sh
diff --git a/subr/pkg_build_dir.subr b/subr/pkg_fetch_subdirs.subr
index 2143e057..680871e2 100644
--- a/subr/pkg_build_dir.subr
+++ b/subr/pkg_fetch_subdirs.subr
@@ -2,7 +2,7 @@
# set -o errexit -o noglob are assumed.
#
-pkg_build_dir() {
+pkg_fetch_subdirs() {
if [ -z "${PKG_BUILD_DIR}" ]; then
if [ -e "${PKG_BASE_DIR}/${PKG_SUBDIR}/configure" ]\
|| [ -e "${PKG_BASE_DIR}/${PKG_SUBDIR}/configure.ac" ]\
@@ -14,6 +14,10 @@ pkg_build_dir() {
else
PKG_BUILD_DIR="${PKG_BASE_DIR}/${PKG_BUILD_DIR}";
fi;
+ if [ ! -d "${PKG_BUILD_DIR}" ]; then
+ build_fileop mkdir "${PKG_BUILD_DIR}";
+ fi;
+ build_fileop cd "${PKG_BUILD_DIR}";
};
# vim:filetype=sh
diff --git a/subr/pkg_fetch_wget.subr b/subr/pkg_fetch_wget.subr
new file mode 100644
index 00000000..5dd0cc55
--- /dev/null
+++ b/subr/pkg_fetch_wget.subr
@@ -0,0 +1,42 @@
+#
+# set -o errexit -o noglob are assumed.
+#
+
+# N.B. URLs ($1) may contain `?' or '&' characters.
+pkgp_fetch_wget() {
+ local _url="${1}" _sha256sum_src="${2}";
+ if [ -z "${3}" ]; then
+ _url_dst="${DLCACHEDIR}/$(basename "${_url}")";
+ else
+ _url_dst="${DLCACHEDIR}/${3}";
+ fi;
+ if [ "${ARG_OFFLINE:-0}" -eq 1 ]\
+ || [ -e "${_url_dst}.fetched" ]; then
+ return 0;
+ else
+ wget ${DEFAULT_WGET_ARGS} -c -O "${_url_dst}" "${_url}";
+ fi;
+ if [ -n "${_sha256sum_src}" ]; then
+ set -- $(openssl dgst -sha256 "${_url_dst}"); shift $((${#}-1));
+ if [ "${_sha256sum_dst:=${1}}" != "${_sha256sum_src}" ]; then
+ if [ "${ARG_IGNORE_SHA256SUMS:-0}" -eq 0 ]; then
+ log_msg failexit "Error: hash mismatch for URL \`${_url}' (is: ${_sha256sum_dst}, should be: ${_sha256sum_src}.)";
+ else
+ log_msg warn "Warning: hash mismatch for URL \`${_url}' (is: ${_sha256sum_dst}, should be: ${_sha256sum_src}.)";
+ fi;
+ fi;
+ fi;
+ touch "${_url_dst}.fetched";
+};
+
+pkg_fetch_wget() {
+ if [ -n "${1}" ]; then
+ pkgp_fetch_wget "${1}" "${2}";
+ else
+ if [ -n "${PKG_URL}" ]; then
+ pkgp_fetch_wget "${PKG_URL}" "${PKG_SHA256SUM}" "${PKG_FNAME}";
+ fi;
+ fi;
+};
+
+# vim:filetype=sh
diff --git a/subr/pkg_install.subr b/subr/pkg_install.subr
index b4ccbded..6635e4f2 100644
--- a/subr/pkg_install.subr
+++ b/subr/pkg_install.subr
@@ -2,120 +2,13 @@
# set -o errexit -o noglob are assumed.
#
-pkgp_install_clean_lib() {
- local __;
- if [ -d ${PKG_PREFIX}/lib ]; then
- for __ in $(find ${PKG_PREFIX}/lib -type f -name \*.la); do
- build_fileop rm ${__};
- done;
- fi;
-};
-
-pkgp_install_lib_link() {
- local _so_path="${1}" _so_dir="${2}" _lib_name="${3}" \
- _lib_link_tgt _lib_link_path;
- _lib_link_tgt="$(find "${_so_dir}" \
- -name "${_lib_name%%.*}.*.lib.a" |\
- sort | tail -1)";
- if [ -n "${_lib_link_tgt}" ]; then
- _lib_link_path="${_so_path%.so*}.lib.a";
- build_fileop rm "${_lib_link_path}";
- build_fileop ln_symbolic "${_lib_link_tgt}" \
- "${_lib_link_path}";
- fi;
-};
-
-pkgp_install_libs() {
- local _so_src_path _so_dst_path _so_dst_dir \
- _lib_src_path _lib_name _lib_dst_path;
- if [ "${PKG_BUILD_TYPE}" != "host" ] \
- && test_cmd perk \
- && test_cmd ${PKG_TARGET}-mdso; then
- for _so_src_path in \
- $(find \( -name "*.so" \
- -or -name "*.so.[0-9]*" \
- -or -name "*.so.[0-9]*.[0-9]*" \
- -or -name "*.so.[0-9]*.[0-9]*.[0-9]*" \) -print);
- do _so_src_path="${_so_src_path#./}";
- if [ "$(readlink -f "${_so_src_path}")" = "/dev/null" ]; then
- continue;
- else case "${_so_src_path}" in
- *.so) _lib_src_path="${_so_src_path%%.so}.lib.a"; ;;
- *.so.*) _lib_src_path="${_so_src_path%%.so.*}.${_so_src_path##*.so.}.lib.a"; ;;
- esac;
- _lib_name="$(basename "${_lib_src_path}")";
- _so_dst_path="$(find "${PKG_PREFIX}/lib" \
- -name "$(basename "${_so_src_path}")" \
- -size "$(stat -c %s "${_so_src_path}")c")";
- _so_dst_dir="${_so_dst_path%/*}";
- fi;
- if [ -z "${_so_dst_path}" ]; then
- continue;
- elif [ ! -L "${_lib_src_path}" ]; then
- _lib_dst_path="${_so_dst_dir}/${_lib_name}";
- perk -e "${_so_src_path}" |\
- "${PKG_TARGET}-mdso" \
- -i "${_lib_src_path}" \
- -n "${_so_src_path}" -;
- build_fileop rm "${_lib_dst_path}";
- build_fileop cp "${_lib_src_path}" "${_lib_dst_path}";
- fi;
- pkgp_install_lib_link "${_so_dst_path}" "${_so_dst_dir}" "${_lib_name}";
- done;
- fi;
-};
-
-pkgp_install_pkgconfig() {
- local __;
- for __ in $(find "${PKG_BUILD_DIR}" -name \*.pc); do
- if grep -Eq '^libdir=[^$]+$' "${__}"; then
- sed -i -e '/^libdir=[^$]\+$/s/^libdir=\(.\+\)$/libdir=${exec_prefix}\1/' \
- -e '/^exec_prefix=$/s/^.*$/exec_prefix=${prefix}/' \
- "${__}";
- fi;
- done;
-};
-
pkg_install() {
- pkgp_install_pkgconfig;
- if [ ${PKG_NO_MAKE_INSTALL:-0} -eq 0 ]; then
- build_fileop mkdir ../destdir;
- build_fileop mkdir ../destdir/bin;
- build_fileop mkdir ../destdir/lib;
- build_fileop mkdir ../destdir/sbin;
- build_fileop mkdir ../destdir/share/man/man1;
- build_fileop mkdir ../destdir/share/man;
- build_fileop rm ../destdir/usr;
- build_fileop ln_symbolic . ../destdir/usr;
- build_fileop rm ../destdir/man;
- build_fileop ln_symbolic share/man ../destdir/man;
- run_cmd_unsplit make \
- ${PKG_MAKEFLAGS_INSTALL} \
- ${PKG_MAKEFLAGS_INSTALL_EXTRA} \
- AR=${AR} CC=${CC} RANLIB=${RANLIB} \
- "${PKG_CFLAGS_INSTALL:+CFLAGS=${PKG_CFLAGS_INSTALL}}" \
- "${PKG_CFLAGS_INSTALL_EXTRA:+CFLAGS+=${PKG_CFLAGS_INSTALL_EXTRA}}" \
- "${PKG_LDFLAGS_INSTALL:+LDFLAGS=${PKG_LDFLAGS_INSTALL}}" \
- "${PKG_LDFLAGS_INSTALL_EXTRA:+LDFLAGS+=${PKG_LDFLAGS_INSTALL_EXTRA}}" \
- "${PKG_RANLIB_INSTALL:+RANLIB=${PKG_RANLIB_INSTALL}}" \
- "LIBTOOL=${PKG_SLIBTOOL:-slibtool}" \
- "${PKG_MAKE_INSTALL_VNAME:-DESTDIR}=${PWD}/../destdir/" \
- ${PKG_INSTALL_TARGET:=install};
- build_fileop mkdir "${PKG_PREFIX}";
- tar -C ../destdir -cpf - . | tar -C "${PKG_PREFIX}" -xpf -;
- if [ -n "${PKG_PREFIX_EXTRA}" ]; then
- build_fileop mkdir "${PKG_PREFIX_EXTRA}";
- tar -C ../destdir -cpf - . | tar -C "${PKG_PREFIX_EXTRA}" -xpf -;
- fi;
- fi;
- pkgp_install_clean_lib;
- if [ -n "${PKG_INSTALL_FILES}" ]; then
- (install_files -v ${PKG_PREFIX} ${PKG_INSTALL_FILES});
- fi;
- if [ "${PKG_NO_INSTALL_LIBS:-0}" -eq 0 ]; then
- pkgp_install_libs;
+ build_fileop mkdir "${PKG_PREFIX}";
+ tar -C ../destdir -cpf - . | tar -C "${PKG_PREFIX}" -xpf -;
+ if [ -n "${PKG_PREFIX_EXTRA}" ]; then
+ build_fileop mkdir "${PKG_PREFIX_EXTRA}";
+ tar -C ../destdir -cpf - . | tar -C "${PKG_PREFIX_EXTRA}" -xpf -;
fi;
- pkgp_install_pkgconfig;
};
# vim:filetype=sh
diff --git a/subr/pkg_install_files.subr b/subr/pkg_install_files.subr
new file mode 100644
index 00000000..23f3cbdb
--- /dev/null
+++ b/subr/pkg_install_files.subr
@@ -0,0 +1,54 @@
+#
+# set -o errexit -o noglob are assumed.
+#
+
+pkgp_install_files() {
+ local _verbose _prefix _ln_target _ln_fname _mkdir_fname \
+ _file_fname_src _file_fname_dst;
+ if [ "${1}" = "-v" ]; then
+ _verbose=1; shift;
+ fi; _prefix="${1}"; shift;
+ while [ ${#} -gt 0 ]; do
+ case "${1}" in
+ @*=*)
+ _ln_target="${1%=*}";
+ _ln_target="${_ln_target#@}";
+ _ln_fname="${1#*=}";
+ if [ "${_ln_fname#/}" = "${_ln_fname}" ]; then
+ _ln_fname="${_prefix:+${_prefix}/}${_ln_fname}";
+ fi;
+ if [ -e "${_ln_fname}" ]; then
+ build_fileop rm "${_ln_fname}";
+ fi;
+ build_fileop ln_symbolic "${_ln_target}" "${_ln_fname}";
+ ;;
+ /=*)
+ _mkdir_fname="${1#/=}";
+ if [ "${_mkdir_fname#/}" = "${_mkdir_fname}" ]; then
+ _mkdir_fname="${_prefix:+${_prefix}/}${_mkdir_fname}";
+ fi;
+ build_fileop mkdir "${_mkdir_fname}";
+ ;;
+ *)
+ _file_fname_src="${1%=*}";
+ _file_fname_dst="${1#*=}";
+ if [ "${_file_fname_dst#/}" = "${_file_fname_dst}" ]; then
+ _file_fname_dst="${_prefix:+${_prefix}/}${_file_fname_dst}";
+ fi;
+ build_fileop cp "${_file_fname_src}" "${_file_fname_dst}";
+ ;;
+ esac; shift;
+ done;
+};
+
+pkg_install_files() {
+ if [ ${#} -ge 2 ]; then
+ pkgp_install_files -v "${@}";
+ else
+ if [ -n "${PKG_INSTALL_FILES}" ]; then
+ pkgp_install_files -v "${PWD}/../destdir" ${PKG_INSTALL_FILES};
+ fi;
+ fi;
+};
+
+# vim:filetype=sh
diff --git a/subr/pkg_install_libs.subr b/subr/pkg_install_libs.subr
new file mode 100644
index 00000000..29ec8915
--- /dev/null
+++ b/subr/pkg_install_libs.subr
@@ -0,0 +1,49 @@
+#
+# set -o errexit -o noglob are assumed.
+#
+
+pkgp_install_lib_link() {
+ local _so_path="${1}" _so_dir="${2}" _lib_name="${3}" \
+ _lib_link_tgt _lib_link_path;
+ _lib_link_tgt="$(find "${_so_dir}" \
+ -name "${_lib_name%%.*}.*.lib.a" |\
+ sort | tail -1)";
+ if [ -n "${_lib_link_tgt}" ]; then
+ _lib_link_path="${_so_path%.so*}.lib.a";
+ build_fileop rm "${_lib_link_path}";
+ build_fileop ln_symbolic "${_lib_link_tgt}" \
+ "${_lib_link_path}";
+ fi;
+};
+
+pkg_install_libs() {
+ local _so_src_path _so_dst_dir _lib_src_path _lib_name _lib_dst_path;
+ if [ "${PKG_BUILD_TYPE}" != "host" ]; then
+ for _so_src_path in \
+ $(find "${PWD}/../destdir" \
+ \( -name "*.so" \
+ -or -name "*.so.[0-9]*" \
+ -or -name "*.so.[0-9]*.[0-9]*" \
+ -or -name "*.so.[0-9]*.[0-9]*.[0-9]*" \) -print);
+ do if [ "$(readlink -f "${_so_src_path}")" = "/dev/null" ]; then
+ continue;
+ else case "${_so_src_path}" in
+ *.so) _lib_src_path="${_so_src_path%%.so}.lib.a"; ;;
+ *.so.*) _lib_src_path="${_so_src_path%%.so.*}.${_so_src_path##*.so.}.lib.a"; ;;
+ esac;
+ _lib_name="$(basename "${_lib_src_path}")";
+ _so_dst_dir="${_so_src_path%/*}";
+ fi;
+ if [ ! -L "${_lib_src_path}" ]; then
+ _lib_dst_path="${_so_dst_dir}/${_lib_name}";
+ perk -e "${_so_src_path}" |\
+ "${PKG_TARGET}-mdso" \
+ -i "${_lib_dst_path}" \
+ -n "${_so_src_path}" -;
+ fi;
+ pkgp_install_lib_link "${_so_src_path}" "${_so_dst_dir}" "${_lib_name}";
+ done;
+ fi;
+};
+
+# vim:filetype=sh
diff --git a/subr/pkg_install_make.subr b/subr/pkg_install_make.subr
new file mode 100644
index 00000000..3cdf837e
--- /dev/null
+++ b/subr/pkg_install_make.subr
@@ -0,0 +1,20 @@
+#
+# set -o errexit -o noglob are assumed.
+#
+
+pkg_install_make() {
+ run_cmd_unsplit make \
+ ${PKG_MAKEFLAGS_INSTALL} \
+ ${PKG_MAKEFLAGS_INSTALL_EXTRA} \
+ AR=${AR} CC=${CC} RANLIB=${RANLIB} \
+ "${PKG_CFLAGS_INSTALL:+CFLAGS=${PKG_CFLAGS_INSTALL}}" \
+ "${PKG_CFLAGS_INSTALL_EXTRA:+CFLAGS+=${PKG_CFLAGS_INSTALL_EXTRA}}" \
+ "${PKG_LDFLAGS_INSTALL:+LDFLAGS=${PKG_LDFLAGS_INSTALL}}" \
+ "${PKG_LDFLAGS_INSTALL_EXTRA:+LDFLAGS+=${PKG_LDFLAGS_INSTALL_EXTRA}}" \
+ "${PKG_RANLIB_INSTALL:+RANLIB=${PKG_RANLIB_INSTALL}}" \
+ "LIBTOOL=${PKG_SLIBTOOL:-slibtool}" \
+ "${PKG_MAKE_INSTALL_VNAME:-DESTDIR}=${PWD}/../destdir/" \
+ ${PKG_INSTALL_TARGET:=install};
+};
+
+# vim:filetype=sh
diff --git a/subr/pkg_install_pkgconfig.subr b/subr/pkg_install_pkgconfig.subr
new file mode 100644
index 00000000..b46069a3
--- /dev/null
+++ b/subr/pkg_install_pkgconfig.subr
@@ -0,0 +1,16 @@
+#
+# set -o errexit -o noglob are assumed.
+#
+
+pkg_install_pkgconfig() {
+ local __;
+ for __ in $(find "${PWD}/../destdir" -name \*.pc); do
+ if grep -Eq '^libdir=[^$]+$' "${__}"; then
+ sed -i -e '/^libdir=[^$]\+$/s/^libdir=\(.\+\)$/libdir=${exec_prefix}\1/' \
+ -e '/^exec_prefix=$/s/^.*$/exec_prefix=${prefix}/' \
+ "${__}";
+ fi;
+ done;
+};
+
+# vim:filetype=sh
diff --git a/subr/pkg_install_pre.subr b/subr/pkg_install_pre.subr
deleted file mode 100644
index 7ab8a9e2..00000000
--- a/subr/pkg_install_pre.subr
+++ /dev/null
@@ -1,18 +0,0 @@
-#
-# set -o errexit -o noglob are assumed.
-#
-
-pkg_install_pre() {
- if [ "${PKG_NAME%flavour_minipix}" != "${PKG_NAME}" ] \
- && [ ${ARG_DEBUG_MINIPIX:-0} -eq 0 ] \
- && [ -e "${PREFIX_MINIPIX}" ]; then
- find "${PREFIX_MINIPIX}" -perm /a=x \
- \( -type f -or -type l \) > "${WORKDIR}/.stat_minipix.old";
- elif [ "${BUILD}" = release ] \
- && [ -e "${PREFIX_NATIVE}/bin" ]; then
- find "${PREFIX_NATIVE}/bin" -perm /a=x \
- \( -type f -or -type l \) > "${WORKDIR}/.stat_native.old";
- fi;
-};
-
-# vim:filetype=sh
diff --git a/subr/pkg_install_purge_la.subr b/subr/pkg_install_purge_la.subr
new file mode 100644
index 00000000..9eb160fb
--- /dev/null
+++ b/subr/pkg_install_purge_la.subr
@@ -0,0 +1,12 @@
+#
+# set -o errexit -o noglob are assumed.
+#
+
+pkg_install_purge_la() {
+ local __;
+ for __ in $(find "${PWD}/../destdir/lib" -type f -name \*.la); do
+ build_fileop rm ${__};
+ done;
+};
+
+# vim:filetype=sh
diff --git a/subr/pkg_install_strip.subr b/subr/pkg_install_strip.subr
new file mode 100644
index 00000000..0a64b5a1
--- /dev/null
+++ b/subr/pkg_install_strip.subr
@@ -0,0 +1,31 @@
+#
+# set -o errexit -o noglob are assumed.
+#
+
+pkgp_strip_tree() {
+ local _tree_root="${1}" _bin_path;
+ if [ ! -e "${_tree_root}" ]; then
+ return;
+ fi;
+ for _bin_path in $(find "${_tree_root}" -perm /a=x \
+ \( -type f -or -type l \)); do
+ set +o errexit;
+ if objdump -sj .debug_info "${_bin_path}" >/dev/null 2>&1; then
+ log_msg info "Stripping ${_bin_path}...";
+ log_msg vnfo "${TARGET}-strip ${_bin_path}";
+ ${TARGET}-strip ${_bin_path};
+ fi;
+ set -o errexit;
+ done;
+};
+
+pkg_strip() {
+ if [ "${PKG_NAME%flavour_minipix}" != "${PKG_NAME}" ] \
+ && [ ${ARG_DEBUG_MINIPIX:-0} -eq 0 ]; then
+ pkgp_strip_tree "${PWD}/../destdir";
+ elif [ "${BUILD}" = release ]; then
+ pkgp_strip_tree "${PWD}/../destdir/bin";
+ fi;
+};
+
+# vim:filetype=sh
diff --git a/subr/pkg_install_subdirs.subr b/subr/pkg_install_subdirs.subr
new file mode 100644
index 00000000..c63eda70
--- /dev/null
+++ b/subr/pkg_install_subdirs.subr
@@ -0,0 +1,17 @@
+#
+# set -o errexit -o noglob are assumed.
+#
+
+pkg_install_subdirs() {
+ pkg_install_files "${PWD}/.." \
+ /=destdir \
+ /=destdir/bin \
+ /=destdir/lib \
+ /=destdir/sbin \
+ /=destdir/share/man/man1 \
+ /=destdir/share/man \
+ @.=destdir/usr \
+ @share/man=destdir/man;
+};
+
+# vim:filetype=sh
diff --git a/subr/pkg_setup_env.subr b/subr/pkg_setup_env.subr
index 8bf076b2..c8058e86 100644
--- a/subr/pkg_setup_env.subr
+++ b/subr/pkg_setup_env.subr
@@ -5,40 +5,49 @@
pkg_setup_env() {
if [ -z "${PKG_URL}" ]\
&& [ -z "${PKG_URLS_GIT}" ]\
- && [ -z "${PKG_VERSION}" ]; then
+ && [ -z "${PKG_VERSION}" ]\
+ && ! test_cmd "${PKG_NAME}_all"; then
log_msg failexit "Error: package \`${PKG_NAME}' missing in build.vars.";
+ elif [ "${PKG_DISABLED:-0}" -eq 1 ]; then
+ log_msg vnfo "Skipping disabled package \`${PKG_NAME}.'";
+ exit 0;
else
[ -z "${MIDIPIX_BUILD_PWD}" ] && MIDIPIX_BUILD_PWD="$(pwd)";
[ -n "${PKG_ENV_VARS_EXTRA}" ] && set_env_vars_with_sep : "${PKG_ENV_VARS_EXTRA}";
[ -z "${PKG_FNAME}" ] && PKG_FNAME="${PKG_URL##*/}";
[ -z "${PKG_TARGET}" ] && PKG_TARGET="${TARGET}";
[ -z "${PKG_BASE_DIR}" ] && PKG_BASE_DIR="${WORKDIR}/${PKG_NAME}-${PKG_BUILD_TYPE:-native}-${PKG_TARGET}";
- build_fileop mkdir "${PKG_BASE_DIR}";
- build_fileop cd "${PKG_BASE_DIR}";
case "${PKG_BUILD_TYPE}" in
host) export AR="ar";
export CC="gcc";
export CXX="g++";
- export RANLIB="ranlib"; ;;
+ export RANLIB="ranlib";
+ export MAKE="make LIBTOOL=${PKG_SLIBTOOL:-slibtool}";
+ export LIBTOOL="${PKG_SLIBTOOL:-slibtool}"; ;;
*) export AR="${PKG_TARGET}-ar";
export CC="${PKG_TARGET}-gcc";
export CXX="${PKG_TARGET}-g++";
- export RANLIB="${PKG_TARGET}-ranlib"; ;;
+ export RANLIB="${PKG_TARGET}-ranlib";
+ export MAKE="make LIBTOOL=${PKG_SLIBTOOL:-slibtool}";
+ export LIBTOOL="${PKG_SLIBTOOL:-slibtool}"; ;;
esac;
case "${PKG_SUBDIR}" in
?*) ;;
*) case "${PKG_URLS_GIT}" in
?*) PKG_SUBDIR="${PKG_URLS_GIT%%=*}"; ;;
- *) PKG_SUBDIR="${PKG_FNAME%%.t*}"; ;;
+ *) case "${PKG_FNAME}" in
+ *.t*) PKG_SUBDIR="${PKG_FNAME%%.t*}"; ;;
+ *) PKG_SUBDIR="${PKG_NAME}"; ;;
+ esac; ;;
esac; ;;
esac;
- export LIBTOOL="${PKG_SLIBTOOL:-slibtool}";
- export MAKE="make LIBTOOL=${PKG_SLIBTOOL:-slibtool}";
- if [ -n "${PKG_ENV_VARS}" ]; then
- PKG_ENV_VARS="$(echo "${PKG_ENV_VARS}" | tr " " "\n" | sort | tr "\n" " ")";
- log_env_vars "build" ${PKG_ENV_VARS};
- fi;
fi;
+ if [ -n "${PKG_ENV_VARS}" ]; then
+ PKG_ENV_VARS="$(echo "${PKG_ENV_VARS}" | tr " " "\n" | sort | tr "\n" " ")";
+ log_env_vars "build" ${PKG_ENV_VARS};
+ fi;
+ build_fileop mkdir "${PKG_BASE_DIR}";
+ build_fileop cd "${PKG_BASE_DIR}";
};
# vim:filetype=sh
diff --git a/subr/pkg_setup_vars.subr b/subr/pkg_setup_vars.subr
index 07b91fcb..fc9f8537 100644
--- a/subr/pkg_setup_vars.subr
+++ b/subr/pkg_setup_vars.subr
@@ -3,18 +3,19 @@
#
pkgp_setup_pkg_vars() {
- local _pkg_name="${1}" _pkg_name_uc _build_uc _vname __;
+ local _pkg_name="${1}" _pkg_name_uc _build_uc _vname_dst _vname_src;
_pkg_name_uc="$(toupper "${_pkg_name}")";
_build_uc="$(toupper "${BUILD}")";
- for _vname in PREFIX ${PKG_BUILD_VARS}; do
- for __ in "DEFAULT_${_vname}" \
- "${BUILD_TARGET}_${_vname}" \
- "PKG_${_pkg_name_uc}_${_vname}" \
- "PKG_${_pkg_name_uc}_${_vname}_${_build_uc}"; do
- if [ -n "$(get_var_unsafe "${__}")" ]; then
- set_var_unsafe "PKG_${_vname}" "$(get_var_unsafe ${__})";
- if ! lmatch "${PKG_ENV_VARS}" " " "${__}"; then
- PKG_ENV_VARS="${PKG_ENV_VARS:+${PKG_ENV_VARS} }${__}";
+ for _vname_dst in PREFIX ${PKG_BUILD_VARS}; do
+ for _vname_src in \
+ "DEFAULT_${_vname_dst}" \
+ "${BUILD_TARGET}_${_vname_dst}" \
+ "PKG_${_pkg_name_uc}_${_vname_dst}" \
+ "PKG_${_pkg_name_uc}_${_vname_dst}_${_build_uc}"; do
+ if [ -n "$(get_var_unsafe "${_vname_src}")" ]; then
+ set_var_unsafe "PKG_${_vname_dst}" "$(get_var_unsafe ${_vname_src})";
+ if ! lmatch "${PKG_ENV_VARS}" " " "${_vname_src}"; then
+ PKG_ENV_VARS="${PKG_ENV_VARS:+${PKG_ENV_VARS} }${_vname_src}";
fi;
fi;
done;
@@ -22,10 +23,12 @@ pkgp_setup_pkg_vars() {
};
pkg_setup_vars() {
- local __;
- for __ in vars/${PKG_NAME}.vars; do
- [ \( -e "${__}" \) -o \( -L "${__}" \) ]\
- && { . "${__}"; };
+ local _vars_path;
+ for _vars_path in vars/${PKG_NAME}.vars; do
+ if [ -e "${_vars_path}" ]\
+ || [ -L "${_vars_path}" ]; then
+ . "${_vars_path}";
+ fi;
done;
if [ -n "${PKG_NAME_PARENT}" ]; then
pkgp_setup_pkg_vars "${PKG_NAME_PARENT}";
diff --git a/subr/pkg_strip.subr b/subr/pkg_strip.subr
deleted file mode 100644
index 9f6ce31f..00000000
--- a/subr/pkg_strip.subr
+++ /dev/null
@@ -1,37 +0,0 @@
-#
-# set -o errexit -o noglob are assumed.
-#
-
-pkgp_strip_tree() {
- local _tree_old="${1}" _tree_root="${2}";
- local _tree_new="${_tree_old%.*}.new" _tree_diff="${_tree_old%.*}.diff";
- if [ ! -e "${_tree_old}" ] \
- || [ ! -e "${_tree_root}" ]; then
- return;
- fi;
- find "${_tree_root}" -perm /a=x \( -type f -or -type l \) > "${_tree_new}";
- set +o errexit;
- for _pname in $(diff -u "${_tree_old}" "${_tree_new}" |\
- sed -n '3,${/^+/s/^+//p}'); do
- if objdump -sj .debug_info "${_pname}" >/dev/null 2>&1; then
- log_msg info "Stripping ${_pname}...";
- log_msg vnfo "${TARGET}-strip ${_pname}";
- ${TARGET}-strip ${_pname};
- fi;
- done;
- build_fileop rm "${_tree_old}" "${_tree_new}" "${_tree_diff}";
- set -o errexit;
-};
-
-pkg_strip() {
- if [ "${PKG_NAME%flavour_minipix}" != "${PKG_NAME}" ] \
- && [ ${ARG_DEBUG_MINIPIX:-0} -eq 0 ]; then
- pkgp_strip_tree "${WORKDIR}/.stat_minipix.old" \
- "${PREFIX_MINIPIX}";
- elif [ "${BUILD}" = release ]; then
- pkgp_strip_tree "${WORKDIR}/.stat_native.old" \
- "${PREFIX_NATIVE}/bin";
- fi;
-};
-
-# vim:filetype=sh
diff --git a/subr/pkg_work_dir.subr b/subr/pkg_work_dir.subr
deleted file mode 100644
index 5d18278c..00000000
--- a/subr/pkg_work_dir.subr
+++ /dev/null
@@ -1,12 +0,0 @@
-#
-# set -o errexit -o noglob are assumed.
-#
-
-pkg_work_dir() {
- if [ ! -d "${PKG_BUILD_DIR}" ]; then
- build_fileop mkdir "${PKG_BUILD_DIR}";
- fi;
- build_fileop cd "${PKG_BUILD_DIR}";
-};
-
-# vim:filetype=sh
diff --git a/subr/post_build_files.subr b/subr/post_build_files.subr
deleted file mode 100644
index 6c74a7c9..00000000
--- a/subr/post_build_files.subr
+++ /dev/null
@@ -1,15 +0,0 @@
-#
-# set -o errexit -o noglob are assumed.
-#
-
-post_build_files() {
- : $((BUILD_TIMES_SECS=$(command date +%s)-${BUILD_TIMES_SECS}));
- : $((BUILD_TIMES_HOURS=${BUILD_TIMES_SECS}/3600));
- : $((BUILD_TIMES_MINUTES=(${BUILD_TIMES_SECS}%3600)/60));
- : $((BUILD_TIMES_SECS=(${BUILD_TIMES_SECS}%3600)%60));
- if [ -f "${BUILD_STATUS_IN_PROGRESS_FNAME}" ]; then
- build_fileop rm ${BUILD_STATUS_IN_PROGRESS_FNAME};
- fi;
-};
-
-# vim:filetype=sh
diff --git a/subr/post_copy_etc.subr b/subr/post_copy_etc.subr
deleted file mode 100644
index 9681e14a..00000000
--- a/subr/post_copy_etc.subr
+++ /dev/null
@@ -1,11 +0,0 @@
-#
-# set -o errexit -o noglob are assumed.
-#
-
-post_copy_etc() {
- tar -C etc -cpf - midipix.sh README midipix_shortcut.vbs |\
- tar -C ${PREFIX} -xpf -;
- chmod +x ${PREFIX}/midipix.sh;
-};
-
-# vim:filetype=sh
diff --git a/subr/post_sha256sums.subr b/subr/post_sha256sums.subr
deleted file mode 100644
index 41b131d9..00000000
--- a/subr/post_sha256sums.subr
+++ /dev/null
@@ -1,22 +0,0 @@
-#
-# set -o errexit -o noglob are assumed.
-#
-
-post_sha256sums() {
- local __;
- if [ "${BUILD_SCRIPT_RC:-0}" -eq 0 ]\
- && [ "${ARG_TARBALL:-0}" -eq 1 ]; then
- log_msg info "Compiling SHA256 sums...";
- if [ -e "${PREFIX}/SHA256SUMS" ]; then
- build_fileop mv "${PREFIX}/SHA256SUMS" "${PREFIX}/SHA256SUMS.last";
- fi;
- (cd "${PREFIX}";
- for __ in $(find "${PREFIX_NATIVE#${PREFIX}/}" -type f -perm /a=x \
- \( -path "${PREFIX_NATIVE#${PREFIX}/}/bin/*" -or \
- -path "${PREFIX_NATIVE#${PREFIX}/}/lib/*" \)); do
- sha256sum "${__}";
- done > "${PREFIX}/SHA256SUMS");
- fi;
-};
-
-# vim:filetype=sh
diff --git a/subr/post_tarballs.subr b/subr/post_tarballs.subr
deleted file mode 100644
index 2082366b..00000000
--- a/subr/post_tarballs.subr
+++ /dev/null
@@ -1,95 +0,0 @@
-#
-# set -o errexit -o noglob are assumed.
-#
-
-postp_tarball_dist() {
- TARBALL_FNAME="${TARBALL_FNAME_PREFIX}${BUILD_USER}@${BUILD_HNAME}-${BUILD_DATE_START}.tar.${TARBALL_SUFFIX}";
- tar -cpf - $(find . -maxdepth 2 -mindepth 1 -type d \
- -not -path ./${PREFIX_BASENAME} \
- -not -path ./${PREFIX_BASENAME}.bak \
- -not -path ./${PREFIX_BASENAME}.bak/\* \
- -not -path ./tmp -not -path ./tmp/\*) \
- midipix_shortcut.vbs midipix.sh README SHA256SUMS |\
- "${TARBALL_COMPRESS_CMD}" ${TARBALL_COMPRESS_ARGS} -c > "${TARBALL_FNAME}";
- log_msg info "Finished building binary distribution tarball.";
- if [ -x "$(which gpg 2>/dev/null)" -a -n "${TARBALL_SIGN_GPG_KEY}" ] && \
- gpg --list-keys "${TARBALL_SIGN_GPG_KEY}" >/dev/null 2>&1; then
- gpg --armor --passphrase-file /dev/null \
- --local-user "${TARBALL_SIGN_GPG_KEY}" --sign "${TARBALL_FNAME}";
- log_msg info "Signed binary distribution tarball.";
- fi;
-};
-
-postp_tarball_toolchain() {
- TARBALL_CROSS_FNAME="${TARBALL_CROSS_FNAME_PREFIX}${BUILD_USER}@${BUILD_HNAME}-${BUILD_DATE_START}.tar.${TARBALL_SUFFIX}";
- tar -cpf - bin include lib lib64 libexec share "${TARGET}" |\
- "${TARBALL_COMPRESS_CMD}" ${TARBALL_COMPRESS_ARGS} -c > "${TARBALL_CROSS_FNAME}";
- log_msg info "Finished building toolchain tarball.";
- if [ -x "$(which gpg 2>/dev/null)" -a -n "${TARBALL_SIGN_GPG_KEY}" ] && \
- gpg --list-keys "${TARBALL_SIGN_GPG_KEY}" >/dev/null 2>&1; then
- gpg --armor --passphrase-file /dev/null \
- --local-user "${TARBALL_SIGN_GPG_KEY}" --sign "${TARBALL_CROSS_FNAME}";
- log_msg info "Signed toolchain tarball.";
- fi;
-};
-
-postp_tarball_minipix() {
- TARBALL_MINIPIX_FNAME="${TARBALL_MINIPIX_FNAME_PREFIX}${BUILD_USER}@${BUILD_HNAME}-${BUILD_DATE_START}.tar.${TARBALL_SUFFIX}";
- tar -cpf - minipix \
- midipix_shortcut.vbs midipix.sh README |\
- "${TARBALL_COMPRESS_CMD}" ${TARBALL_COMPRESS_ARGS} -c > "${TARBALL_MINIPIX_FNAME}";
- log_msg info "Finished building binary Minipix distribution tarball.";
- if [ -x "$(which gpg 2>/dev/null)" -a -n "${TARBALL_SIGN_GPG_KEY}" ] && \
- gpg --list-keys "${TARBALL_SIGN_GPG_KEY}" >/dev/null 2>&1; then
- gpg --armor --passphrase-file /dev/null \
- --local-user "${TARBALL_SIGN_GPG_KEY}" --sign "${TARBALL_MINIPIX_FNAME}";
- log_msg info "Signed binary Minipix distribution tarball.";
- fi;
-};
-
-postp_tarball_src() {
- TARBALL_SRC_FNAME="${TARBALL_SRC_FNAME_PREFIX}${BUILD_USER}@${BUILD_HNAME}-${BUILD_DATE_START}.tar.${TARBALL_SUFFIX}";
- log_msg info "Building source tarball...";
- tar -cpf - $(find tmp -mindepth 2 -maxdepth 2 \
- -not -path tmp/.\* \
- -not -path tmp/ntctty/.git \
- -not -path tmp/psxscl/.git \
- -not -path tmp/ptycon/.git) |\
- "${TARBALL_COMPRESS_CMD}" ${TARBALL_COMPRESS_ARGS} -c > "${TARBALL_SRC_FNAME}";
- log_msg info "Finished building source tarball.";
- if [ -x "$(which gpg 2>/dev/null)" -a -n "${TARBALL_SIGN_GPG_KEY}" ] && \
- gpg --list-keys "${TARBALL_SIGN_GPG_KEY}" >/dev/null 2>&1; then
- gpg --armor --passphrase-file /dev/null \
- --local-user "${TARBALL_SIGN_GPG_KEY}" --sign "${TARBALL_SRC_FNAME}";
- log_msg info "Signed source tarball.";
- fi;
-};
-
-post_tarballs() {
- if [ "${BUILD_SCRIPT_RC:-0}" -eq 0 ]\
- && [ "${ARG_TARBALL:-0}" -eq 1 ]; then
- log_msg info "Building distribution tarballs...";
- case "${TARBALL_SUFFIX}" in
- bz2) if [ -n "$(which pbzip2 2>/dev/null)" ]; then
- TARBALL_COMPRESS_CMD="pbzip2";
- else
- TARBALL_COMPRESS_CMD="bzip2";
- fi; ;;
- gz) if [ -n "$(which pigz 2>/dev/null)" ]; then
- TARBALL_COMPRESS_CMD="pigz";
- else
- TARBALL_COMPRESS_CMD="gzip";
- fi; ;;
- xz) TARBALL_COMPRESS_CMD="xz";
- TARBALL_COMPRESS_ARGS="-T0"; ;;
- *) log_msg failexit "Unknown tarball suffix \`.${TARBALL_SUFFIX}'.";
- esac;
- build_fileop cd "${PREFIX}"; PREFIX_BASENAME="${PREFIX_NATIVE##*/}";
- postp_tarball_dist; postp_tarball_toolchain; postp_tarball_minipix;
- if [ "${BUILD}" = "debug" ]; then
- postp_tarball_src;
- fi;
- fi;
-};
-
-# vim:filetype=sh
diff --git a/subr/pre_build_files.subr b/subr/pre_build_files.subr
deleted file mode 100644
index 3fbcf0cb..00000000
--- a/subr/pre_build_files.subr
+++ /dev/null
@@ -1,20 +0,0 @@
-#
-# set -o errexit -o noglob are assumed.
-#
-
-pre_build_files() {
- if [ -e ${BUILD_STATUS_IN_PROGRESS_FNAME} ]; then
- log_msg failexit "Error: another build targeting this architecture and build type is currently in progress.";
- else
- touch ${BUILD_STATUS_IN_PROGRESS_FNAME};
- fi;
- if [ -e ${BUILD_LOG_FNAME} ]; then
- mv -- ${BUILD_LOG_FNAME} ${BUILD_LOG_LAST_FNAME};
- fi;
- BUILD_DATE_START="$(date %Y-%m-%d-%H-%M-%S)";
- BUILD_NFINI=${BUILD_NSKIP:=${BUILD_NFAIL:=${BUILD_NBUILT:=0}}};
- BUILD_TIMES_SECS=$(command date +%s);
- BUILD_PKGS_FAILED="";
-};
-
-# vim:filetype=sh
diff --git a/subr/pre_prereqs.subr b/subr/pre_check.subr
index f048365e..28e229e9 100644
--- a/subr/pre_prereqs.subr
+++ b/subr/pre_check.subr
@@ -2,7 +2,7 @@
# set -o errexit -o noglob are assumed.
#
-pre_prereqs() {
+pre_check() {
local __ _exit;
for __ in ${CHECK_PATH_VARS}; do
if [ -z "${___:=$(get_var_unsafe "${__}")}" ]; then
diff --git a/subr/pre_subdirs.subr b/subr/pre_subdirs.subr
index 6d857d8a..4f724204 100644
--- a/subr/pre_subdirs.subr
+++ b/subr/pre_subdirs.subr
@@ -12,17 +12,19 @@ pre_subdirs() {
fi;
done;
fi;
- install_files "" \
+ pkg_install_files "" \
/=${DLCACHEDIR} \
/=${WORKDIR} \
/=${PREFIX} \
/=${PREFIX}/bin \
+ /=${PREFIX}/share/man \
/=${PREFIX}/${TARGET}/bin \
/=${PREFIX}/${TARGET}/lib \
/=${PREFIX}/x86_64-w64-mingw32 \
/=${PREFIX_CROSS} \
/=${PREFIX_MINIPIX}/bin \
/=${PREFIX_NATIVE} \
+ /=${PREFIX_NATIVE}/share/man \
/=${PREFIX_NATIVE}/${TARGET}/lib \
@.=${PREFIX}/usr \
@.=${PREFIX}/x86_64-w64-mingw32/mingw \