diff options
Diffstat (limited to 'subr')
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 \ |