From c27beab66023847435fb88cd5cc75916dca37057 Mon Sep 17 00:00:00 2001 From: Lucio Andrés Illanes Albornoz (arab, vxp) Date: Nov 21 2017 00:51:43 +0000 Subject: Refactors build steps along the sequence {setup,fetch,configure,build,install}. subr/mode_check_updates.subr: seperated into check_updates.sh. subr/post_{copy_etc,sha256sums,tarballs}.subr: absorbed into `dist' target. --- diff --git a/build.sh b/build.sh index 1ebd2ee..c04b691 100755 --- a/build.sh +++ b/build.sh @@ -12,7 +12,6 @@ case ${1} in -4) ARG_IPV4_ONLY=1; ;; -6) ARG_IPV6_ONLY=1; ;; -c) ARG_CLEAN=1; ;; --C) ARG_CHECK_UPDATES=1; ;; -N) ARG_OFFLINE=1; ;; -i) ARG_IGNORE_SHA256SUMS=1; ;; -R) ARG_RELAXED=1; ;; @@ -39,18 +38,14 @@ case ${1} in exec cat etc/build.usage; fi; ;; esac; shift; done; -pre_setup_env; pre_prereqs; pre_subdirs; pre_build_files; +pre_setup_env; pre_check; pre_subdirs; build_files_init; # # # {( -if [ "${ARG_CHECK_UPDATES:-0}" -eq 0 ]; then - log_msg info "Build started by ${BUILD_USER:=${USER}}@${BUILD_HNAME:=$(hostname)} at ${BUILD_DATE_START}."; - log_env_vars "build (global)" ${LOG_ENV_VARS}; -else - log_msg info "Version check run started by ${BUILD_USER:=${USER}}@${BUILD_HNAME:=$(hostname)} at ${BUILD_DATE_START}."; -fi; +log_msg info "Build started by ${BUILD_USER:=${USER}}@${BUILD_HNAME:=$(hostname)} at ${BUILD_DATE_START}."; +log_env_vars "build (global)" ${LOG_ENV_VARS}; for BUILD_TARGET_LC in $(subst_tgts invariants ${BUILD_TARGETS_META:-world}); do BUILD_TARGET="$(toupper "${BUILD_TARGET_LC}")"; BUILD_PACKAGES="$(get_var_unsafe ${BUILD_TARGET}_PACKAGES)"; @@ -65,10 +60,6 @@ for BUILD_TARGET_LC in $(subst_tgts invariants ${BUILD_TARGETS_META:-world}); do unset PKG_NAME_PARENT; if [ "${PKG_NAME#*_flavour_*}" != "${PKG_NAME}" ]; then PKG_NAME_PARENT="${PKG_NAME%_flavour_*}"; - elif [ "${ARG_CHECK_UPDATES:-0}" -eq 1 ]\ - && [ "${BUILD_PACKAGE#*.*}" = "${BUILD_PACKAGE}" ]; then - (mode_check_pkg_updates "${PKG_NAME}" "${BUILD_PACKAGE}"); - continue; else unset BUILD_SCRIPT_RC; fi; @@ -81,10 +72,8 @@ for BUILD_TARGET_LC in $(subst_tgts invariants ${BUILD_TARGETS_META:-world}); do while [ ${#} -gt 0 ]; do _pkg_step_cmds=""; _pkg_step_cmd_args=""; case "${1#*:}" in - abstract) _pkg_step_cmds="pkg_${PKG_NAME}_${1%:*}"; - _pkg_step_cmd_args="${ARG_RESTART_AT:-ALL}"; ;; - always) _pkg_step_cmds="pkg_${1%:*}"; ;; - main) if [ "${BUILD_TARGET}" = "INVARIANTS" ]; then + dynamic) + if [ "${BUILD_TARGET}" = "INVARIANTS" ]; then _pkg_step_cmds="pkg_${PKG_NAME}_${1%:*} pkg_${1%:*}"; elif [ -n "${BUILD_PACKAGES_RESTART}" ]; then if [ -z "${ARG_RESTART_AT}" ]\ @@ -94,10 +83,20 @@ for BUILD_TARGET_LC in $(subst_tgts invariants ${BUILD_TARGETS_META:-world}); do elif ! is_build_script_done "${PKG_NAME}" "${1%:*}"; then _pkg_step_cmds="pkg_${PKG_NAME}_${1%:*} pkg_${1%:*}"; fi; ;; - optional) + invariant) + _pkg_step_cmds="pkg_${1%:*}"; ;; + variant) if lmatch "${ARG_RESTART_AT}" "," "${1%:*}"; then _pkg_step_cmds="pkg_${PKG_NAME}_${1%:*} pkg_${1%:*}"; fi; ;; + virtual) + _pkg_step_cmds="pkg_${PKG_NAME}_${1%:*}"; + _pkg_step_cmd_args="${ARG_RESTART_AT:-ALL}"; ;; + all) + if test_cmd "pkg_${PKG_NAME}_${1%:*}"; then + "pkg_${PKG_NAME}_${1%:*}" "${ARG_RESTART_AT:-ALL}"; + break; + fi; ;; *) continue; ;; esac; for __ in ${_pkg_step_cmds}; do @@ -134,10 +133,7 @@ for BUILD_TARGET_LC in $(subst_tgts invariants ${BUILD_TARGETS_META:-world}); do break; fi; done; -if [ "${BUILD_SCRIPT_RC:-0}" -eq 0 ]; then - post_copy_etc; post_sha256sums; post_tarballs; -fi; -post_build_files; +build_files_fini; log_msg info "${BUILD_NFINI} finished, ${BUILD_NSKIP} skipped, and ${BUILD_NFAIL} failed builds in ${BUILD_NBUILT} build script(s)."; log_msg info "Build time: ${BUILD_TIMES_HOURS} hour(s), ${BUILD_TIMES_MINUTES} minute(s), and ${BUILD_TIMES_SECS} second(s)."; if [ ${ARG_RELAXED:-0} -eq 1 ]\ diff --git a/check_updates.sh b/check_updates.sh new file mode 100755 index 0000000..9699d36 --- /dev/null +++ b/check_updates.sh @@ -0,0 +1,102 @@ +# +# 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 '//s/^.*\([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/etc/build.usage b/etc/build.usage index ff07df9..9f2747f 100644 --- a/etc/build.usage +++ b/etc/build.usage @@ -1,4 +1,4 @@ -usage: ./build.sh [-x] [-4|6] [-a nt32|nt64] [-b debug|release] [-c] [-C] [-h] +usage: ./build.sh [-x] [-4|6] [-a nt32|nt64] [-b debug|release] [-c] [-h] [-i] [-N] [-r package[,...][:step]] [-R] [-t[.gz|.bz2|.xz] [-v] [[ ...]] -x Set the xtrace sh(1)ell option for debugging purposes. @@ -6,7 +6,6 @@ usage: ./build.sh [-x] [-4|6] [-a nt32|nt64] [-b debug|release] [-c] [-C] [-h] -a nt32|nt64 Selects 32-bit or 64-bit architecture; defaults to nt64. -b debug|release Selects debug or release build; defaults to debug. -c Clean ${PREFIX} before processing build scripts. - -C Check package(s) for updates upstream. -h Show this screen. -i Ignore SHA256 hash mismatches when downloading files. -N Offline mode: no {wget,git-{clone,pull}}(1) calls. @@ -24,8 +23,8 @@ usage: ./build.sh [-x] [-4|6] [-a nt32|nt64] [-b debug|release] [-c] [-C] [-h] --debug-minipix Don't strip(1) minipix binaries to facilitate debugging minipix. [ ...] One of: host_toolchain, native_toolchain, runtime, host_packages, - lib_packages, dev_packages, leaf_packages, minipix, devroot, - dev, or world. + lib_packages, dev_packages, leaf_packages, minipix, dist, + devroot, dev, or world. ${HOME}/midipix_build.vars, ../midipix_build.vars, and build.vars are sourced if they exist. diff --git a/patches/mksh.local.patch b/patches/mksh.local.patch new file mode 100644 index 0000000..a179347 --- /dev/null +++ b/patches/mksh.local.patch @@ -0,0 +1,5 @@ +--- mksh/Makefile.orig 1970-01-01 00:00:00.000000000 +0000 ++++ mksh/Makefile 2017-11-21 00:35:22.280000000 +0000 +@@ -0,0 +1,2 @@ ++all:: ++ sh Build.sh diff --git a/subr/build.subr b/subr/build.subr index d6e7289..b734163 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 9699d36..0000000 --- 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 '//s/^.*\([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_autoconf.subr b/subr/pkg_autoconf.subr deleted file mode 100644 index 8a0ea12..0000000 --- a/subr/pkg_autoconf.subr +++ /dev/null @@ -1,48 +0,0 @@ -# -# set -o errexit -o noglob are assumed. -# - -pkg_autoconf() { - local __; - 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 - (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 - echo install -m 0700 \ - "${MIDIPIX_BUILD_PWD}/etc/config.sub" \ - "${___}/config.sub"; - install -m 0700 \ - "${MIDIPIX_BUILD_PWD}/etc/config.sub" \ - "${___}/config.sub"; - break; - fi; - done; - (build_fileop cd "${PKG_BASE_DIR}/${PKG_SUBDIR}" && "${SHELL}" "${__}")\ - || exit 1 && break; - fi; - done; - fi; - find "${PKG_BASE_DIR}/${PKG_SUBDIR}" -name config.sub \ - -exec echo mv -- {} {}.orig \; \ - -exec mv -- {} {}.orig \; \ - -exec echo install -m 0700 "${MIDIPIX_BUILD_PWD}/etc/config.sub" {} \; \ - -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; -}; - -# vim:filetype=sh diff --git a/subr/pkg_build.subr b/subr/pkg_build.subr index 4cb29d2..7080162 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_build_clean.subr b/subr/pkg_build_clean.subr new file mode 100644 index 0000000..8b2e909 --- /dev/null +++ b/subr/pkg_build_clean.subr @@ -0,0 +1,9 @@ +# +# set -o errexit -o noglob are assumed. +# + +pkg_build_clean() { + make clean; +}; + +# vim:filetype=sh diff --git a/subr/pkg_build_dir.subr b/subr/pkg_build_dir.subr deleted file mode 100644 index 2143e05..0000000 --- a/subr/pkg_build_dir.subr +++ /dev/null @@ -1,19 +0,0 @@ -# -# set -o errexit -o noglob are assumed. -# - -pkg_build_dir() { - if [ -z "${PKG_BUILD_DIR}" ]; then - if [ -e "${PKG_BASE_DIR}/${PKG_SUBDIR}/configure" ]\ - || [ -e "${PKG_BASE_DIR}/${PKG_SUBDIR}/configure.ac" ]\ - || [ -e "${PKG_BASE_DIR}/${PKG_SUBDIR}/configure.in" ]; then - PKG_BUILD_DIR="${PKG_BASE_DIR}/obj"; - else - PKG_BUILD_DIR="${PKG_BASE_DIR}/${PKG_SUBDIR}"; - fi; - else - PKG_BUILD_DIR="${PKG_BASE_DIR}/${PKG_BUILD_DIR}"; - fi; -}; - -# vim:filetype=sh diff --git a/subr/pkg_clean.subr b/subr/pkg_clean.subr deleted file mode 100644 index 4cfaa15..0000000 --- a/subr/pkg_clean.subr +++ /dev/null @@ -1,9 +0,0 @@ -# -# set -o errexit -o noglob are assumed. -# - -pkg_clean() { - make clean; -}; - -# vim:filetype=sh diff --git a/subr/pkg_configure_autotools.subr b/subr/pkg_configure_autotools.subr new file mode 100644 index 0000000..dbad6a3 --- /dev/null +++ b/subr/pkg_configure_autotools.subr @@ -0,0 +1,45 @@ +# +# set -o errexit -o noglob are assumed. +# + +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 _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}/${_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" \ + "${_subdir_tgt}/config.sub"; + install -m 0700 \ + "${MIDIPIX_BUILD_PWD}/etc/config.sub" \ + "${_subdir_tgt}/config.sub"; + break; + fi; + done; + (build_fileop cd "${PKG_BASE_DIR}/${PKG_SUBDIR}" && \ + "${SHELL}" "${_script_fname}") || exit 1 && break; + fi; + done; + fi; + find "${PKG_BASE_DIR}/${PKG_SUBDIR}" -name config.sub \ + -exec echo mv -- {} {}.orig \; \ + -exec mv -- {} {}.orig \; \ + -exec echo install -m 0700 "${MIDIPIX_BUILD_PWD}/etc/config.sub" {} \; \ + -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}/"; + fi; + fi; +}; + +# vim:filetype=sh diff --git a/subr/pkg_configure_patch.subr b/subr/pkg_configure_patch.subr new file mode 100644 index 0000000..f40d73d --- /dev/null +++ b/subr/pkg_configure_patch.subr @@ -0,0 +1,30 @@ +# +# set -o errexit -o noglob are assumed. +# + +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_SUBDIR%-*}.local@${BUILD_HNAME}.patch; do + if ! lmatch "${_patches_done}" " " "${_patch_fname}"\ + && [ -r "${_patch_fname}" ]; then + patch -b -d "${PKG_BASE_DIR}/${PKG_SUBDIR}" -p1 < "${_patch_fname}"; + _patches_done="${_patches_done:+${_patches_done} }${_patch_fname}"; + fi; + done; + set -o noglob; +}; + +# vim:filetype=sh diff --git a/subr/pkg_configure_patch_pre.subr b/subr/pkg_configure_patch_pre.subr new file mode 100644 index 0000000..d228bd8 --- /dev/null +++ b/subr/pkg_configure_patch_pre.subr @@ -0,0 +1,18 @@ +# +# set -o errexit -o noglob are assumed. +# + +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 "${_patch_path}" ]; then + patch -b -d "${PKG_BASE_DIR}/${PKG_SUBDIR}" -p1 < "${_patch_path}"; + fi; + done; +}; + +# vim:filetype=sh diff --git a/subr/pkg_disabled.subr b/subr/pkg_disabled.subr deleted file mode 100644 index f9580c6..0000000 --- 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_extract.subr b/subr/pkg_extract.subr deleted file mode 100644 index 909dc73..0000000 --- a/subr/pkg_extract.subr +++ /dev/null @@ -1,27 +0,0 @@ -# -# set -o errexit -o noglob are assumed. -# - -pkg_extract() { - if [ -n "${PKG_URL}" ]\ - && [ "${PKG_URL_TYPE:-wget}" = wget ]; then - build_fileop rm "${PKG_BASE_DIR}/${PKG_SUBDIR}"; - if [ "${PKG_FNAME##*.tar.}" = "bz2" ]; then - bunzip2 -d < "${DLCACHEDIR}/${PKG_FNAME}" | tar -C "${PKG_BASE_DIR}" -xf -; - elif [ "${PKG_FNAME##*.tar.}" = "gz" ]; then - gunzip -d < "${DLCACHEDIR}/${PKG_FNAME}" | tar -C "${PKG_BASE_DIR}" -xf -; - elif [ "${PKG_FNAME##*.tar.}" = "xz" ]; then - xz -d < "${DLCACHEDIR}/${PKG_FNAME}" | tar -C "${PKG_BASE_DIR}" -xf -; - elif [ "${PKG_FNAME##*.t}" = "bz2" ]; then - bunzip2 -d < "${DLCACHEDIR}/${PKG_FNAME}" | tar -C "${PKG_BASE_DIR}" -xf -; - elif [ "${PKG_FNAME##*.t}" = "gz" ]; then - gunzip -d < "${DLCACHEDIR}/${PKG_FNAME}" | tar -C "${PKG_BASE_DIR}" -xf -; - elif [ "${PKG_FNAME##*.t}" = "xz" ]; then - xz -d < "${DLCACHEDIR}/${PKG_FNAME}" | tar -C "${PKG_BASE_DIR}" -xf -; - else - tar -C "${PKG_BASE_DIR}" -xf "${DLCACHEDIR}/${PKG_FNAME}"; - fi; - fi; -}; - -# vim:filetype=sh diff --git a/subr/pkg_fetch.subr b/subr/pkg_fetch.subr deleted file mode 100644 index 7c71c34..0000000 --- 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_fetch_extract.subr b/subr/pkg_fetch_extract.subr new file mode 100644 index 0000000..71155b4 --- /dev/null +++ b/subr/pkg_fetch_extract.subr @@ -0,0 +1,27 @@ +# +# set -o errexit -o noglob are assumed. +# + +pkg_fetch_extract() { + if [ -n "${PKG_URL}" ]\ + && [ "${PKG_URL_TYPE:-wget}" = wget ]; then + build_fileop rm "${PKG_BASE_DIR}/${PKG_SUBDIR}"; + if [ "${PKG_FNAME##*.tar.}" = "bz2" ]; then + bunzip2 -d < "${DLCACHEDIR}/${PKG_FNAME}" | tar -C "${PKG_BASE_DIR}" -xf -; + elif [ "${PKG_FNAME##*.tar.}" = "gz" ]; then + gunzip -d < "${DLCACHEDIR}/${PKG_FNAME}" | tar -C "${PKG_BASE_DIR}" -xf -; + elif [ "${PKG_FNAME##*.tar.}" = "xz" ]; then + xz -d < "${DLCACHEDIR}/${PKG_FNAME}" | tar -C "${PKG_BASE_DIR}" -xf -; + elif [ "${PKG_FNAME##*.t}" = "bz2" ]; then + bunzip2 -d < "${DLCACHEDIR}/${PKG_FNAME}" | tar -C "${PKG_BASE_DIR}" -xf -; + elif [ "${PKG_FNAME##*.t}" = "gz" ]; then + gunzip -d < "${DLCACHEDIR}/${PKG_FNAME}" | tar -C "${PKG_BASE_DIR}" -xf -; + elif [ "${PKG_FNAME##*.t}" = "xz" ]; then + xz -d < "${DLCACHEDIR}/${PKG_FNAME}" | tar -C "${PKG_BASE_DIR}" -xf -; + else + tar -C "${PKG_BASE_DIR}" -xf "${DLCACHEDIR}/${PKG_FNAME}"; + fi; + fi; +}; + +# vim:filetype=sh diff --git a/subr/pkg_fetch_git.subr b/subr/pkg_fetch_git.subr new file mode 100644 index 0000000..0ff61ae --- /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_fetch_subdirs.subr b/subr/pkg_fetch_subdirs.subr new file mode 100644 index 0000000..680871e --- /dev/null +++ b/subr/pkg_fetch_subdirs.subr @@ -0,0 +1,23 @@ +# +# set -o errexit -o noglob are assumed. +# + +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" ]\ + || [ -e "${PKG_BASE_DIR}/${PKG_SUBDIR}/configure.in" ]; then + PKG_BUILD_DIR="${PKG_BASE_DIR}/obj"; + else + PKG_BUILD_DIR="${PKG_BASE_DIR}/${PKG_SUBDIR}"; + fi; + 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 0000000..5dd0cc5 --- /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 b4ccbde..6635e4f 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 0000000..23f3cbd --- /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 0000000..29ec891 --- /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 0000000..3cdf837 --- /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 0000000..b46069a --- /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 7ab8a9e..0000000 --- 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 0000000..9eb160f --- /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 0000000..0a64b5a --- /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 0000000..c63eda7 --- /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_patch.subr b/subr/pkg_patch.subr deleted file mode 100644 index fadd1ed..0000000 --- a/subr/pkg_patch.subr +++ /dev/null @@ -1,30 +0,0 @@ -# -# set -o errexit -o noglob are assumed. -# - -pkg_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_SUBDIR%-*}.local@${BUILD_HNAME}.patch; do - if ! lmatch "${_patches_done}" " " "${_patch_fname}"\ - && [ -r "${_patch_fname}" ]; then - patch -b -d "${PKG_BASE_DIR}/${PKG_SUBDIR}" -p1 < "${_patch_fname}"; - _patches_done="${_patches_done:+${_patches_done} }${_patch_fname}"; - fi; - done; - set -o noglob; -}; - -# vim:filetype=sh diff --git a/subr/pkg_patch_pre.subr b/subr/pkg_patch_pre.subr deleted file mode 100644 index f6ab9f0..0000000 --- a/subr/pkg_patch_pre.subr +++ /dev/null @@ -1,18 +0,0 @@ -# -# set -o errexit -o noglob are assumed. -# - -pkg_patch_pre() { - local __; - for __ 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 < "${__}"; - fi; - done; -}; - -# vim:filetype=sh diff --git a/subr/pkg_setup_env.subr b/subr/pkg_setup_env.subr index 8bf076b..c8058e8 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 07b91fc..fc9f853 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 9f6ce31..0000000 --- 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 5d18278..0000000 --- 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 6c74a7c..0000000 --- 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 9681e14..0000000 --- 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 41b131d..0000000 --- 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 2082366..0000000 --- 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 3fbcf0c..0000000 --- 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_check.subr b/subr/pre_check.subr new file mode 100644 index 0000000..28e229e --- /dev/null +++ b/subr/pre_check.subr @@ -0,0 +1,38 @@ +# +# set -o errexit -o noglob are assumed. +# + +pre_check() { + local __ _exit; + for __ in ${CHECK_PATH_VARS}; do + if [ -z "${___:=$(get_var_unsafe "${__}")}" ]; then + log_msg failexit "Error: variable \`${__}' is empty or unset."; + elif [ "${___#* *}" != "${___}" ]; then + log_msg failexit "Error: variable \`${__}' contains one or more whitespace characters."; + fi; + done; + for __ in ${CHECK_PREREQ_CMDS} $(eval echo ${CHECK_PREREQ_FILES_DYNAMIC}) ${CHECK_PREREQ_FILES}; do + if [ "${__#/}" != "${__}" ]; then + if [ ! -e "${__}" ]; then + log_msg fail "Error: missing prerequisite file \`${__}'."; + _exit=1; + fi; + else + if ! test_cmd "${__}"; then + log_msg fail "Error: missing prerequisite command \`${__}'."; + _exit=1; + fi; + fi; + done; + for __ in ${CHECK_PREREQ_PERL_MODULES}; do + if ! perl -M"${__}" -e "" 2>/dev/null; then + log_msg fail "Error: missing prerequisite Perl module \`${__}'."; + _exit=1; + fi; + done; + if [ ${_exit:-0} = 1 ]; then + exit 1; + fi; +}; + +# vim:filetype=sh diff --git a/subr/pre_prereqs.subr b/subr/pre_prereqs.subr deleted file mode 100644 index f048365..0000000 --- a/subr/pre_prereqs.subr +++ /dev/null @@ -1,38 +0,0 @@ -# -# set -o errexit -o noglob are assumed. -# - -pre_prereqs() { - local __ _exit; - for __ in ${CHECK_PATH_VARS}; do - if [ -z "${___:=$(get_var_unsafe "${__}")}" ]; then - log_msg failexit "Error: variable \`${__}' is empty or unset."; - elif [ "${___#* *}" != "${___}" ]; then - log_msg failexit "Error: variable \`${__}' contains one or more whitespace characters."; - fi; - done; - for __ in ${CHECK_PREREQ_CMDS} $(eval echo ${CHECK_PREREQ_FILES_DYNAMIC}) ${CHECK_PREREQ_FILES}; do - if [ "${__#/}" != "${__}" ]; then - if [ ! -e "${__}" ]; then - log_msg fail "Error: missing prerequisite file \`${__}'."; - _exit=1; - fi; - else - if ! test_cmd "${__}"; then - log_msg fail "Error: missing prerequisite command \`${__}'."; - _exit=1; - fi; - fi; - done; - for __ in ${CHECK_PREREQ_PERL_MODULES}; do - if ! perl -M"${__}" -e "" 2>/dev/null; then - log_msg fail "Error: missing prerequisite Perl module \`${__}'."; - _exit=1; - fi; - done; - if [ ${_exit:-0} = 1 ]; then - exit 1; - fi; -}; - -# vim:filetype=sh diff --git a/subr/pre_subdirs.subr b/subr/pre_subdirs.subr index 6d857d8..4f72420 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 \ diff --git a/vars/apr.vars b/vars/apr.vars index a36daa4..de30273 100644 --- a/vars/apr.vars +++ b/vars/apr.vars @@ -2,12 +2,12 @@ # set -o errexit -o noglob are assumed. # -pkg_apr_install_post() { +pkg_apr_install_make_post() { sed -e 's,echo "\$APR_BUILD_DIR/libtool",echo '"${PREFIX}"'/bin/slibtool,' \ -e 's,echo "\${installbuilddir}/libtool",echo '"${PREFIX}"'/bin/slibtool,' \ -e 's,flags="\$flags -I\$includedir \$EXTRA_INCLUDES",flags="-I'"${PKG_PREFIX}"'/include/apr-1",' \ - "${PKG_PREFIX}/bin/apr-1-config" > "${PREFIX}/bin/${PKG_TARGET}-apr-1-config"; - chmod +x "${PREFIX}/bin/${PKG_TARGET}-apr-1-config"; + "${PWD}/../destdir/bin/apr-1-config" > "${PWD}/../destdir/bin/${PKG_TARGET}-apr-1-config"; + chmod +x "${PWD}/../destdir/bin/${PKG_TARGET}-apr-1-config"; }; # vim:filetype=sh diff --git a/vars/build.vars b/vars/build.vars index 936ef72..19e817b 100644 --- a/vars/build.vars +++ b/vars/build.vars @@ -3,7 +3,7 @@ # INVARIANTS_PACKAGES="chainport"; : ${PKG_CHAINPORT_URLS_GIT:="chainport=${DEFAULT_GITROOT}/ports/chainport"}; -: ${PKG_CHAINPORT_BUILD_STEPS_DISABLE:="build:main configure:main install:main"}; +: ${PKG_CHAINPORT_BUILD_STEPS_DISABLE:="configure:dynamic build:dynamic install_make:dynamic install:dynamic"}; # # Build target host_toolchain @@ -24,7 +24,7 @@ HOST_TOOLCHAIN_PREFIX="${PREFIX_CROSS}"; : ${PKG_PERK_HOST_PREFIX:=${PREFIX}}; : ${PKG_MDSO_HOST_URLS_GIT:="mdso=${DEFAULT_GITROOT}/mdso"}; : ${PKG_MDSO_HOST_CONFIGURE_ARGS:="--prefix=/usr"}; -: ${PKG_MDSO_HOST_INSTALL_FILES:="@mdso=bin/${TARGET}-mdso bin/mdso=${TARGET}/bin/mdso"}; +: ${PKG_MDSO_HOST_INSTALL_FILES:="@mdso=bin/${TARGET}-mdso /=${TARGET}/bin bin/mdso=${TARGET}/bin/mdso"}; : ${PKG_MDSO_HOST_PREFIX:=${PREFIX}}; : ${PKG_BINUTILS_HOST_SHA256SUM:=250d3b2925c6b211fb16173b0b25bc091c58829fbcad3eb849645e0af52cf7fa}; : ${PKG_BINUTILS_HOST_VERSION:=2.24.51}; @@ -47,7 +47,7 @@ HOST_TOOLCHAIN_PREFIX="${PREFIX_CROSS}"; : ${PKG_GCC_STAGE1_BASE_DIR:=${WORKDIR}}; : ${PKG_PSXSTUB_URLS_GIT:="psxstub=${DEFAULT_GITROOT}/psxstub"}; : ${PKG_PSXSTUB_BUILD_DIR:=psxstub}; -: ${PKG_PSXSTUB_BUILD_STEPS_DISABLE:=build:main}; +: ${PKG_PSXSTUB_BUILD_STEPS_DISABLE:=build:dynamic}; : ${PKG_MUSL_NO_COMPLEX_VERSION:=1.1.12}; : ${PKG_MUSL_NO_COMPLEX_BASE_DIR:=${WORKDIR}}; : ${PKG_GCC_RUNTIME_VERSION:=4.6.4}; @@ -58,10 +58,9 @@ HOST_TOOLCHAIN_PREFIX="${PREFIX_CROSS}"; : ${PKG_GCC_LIBSTDCPP_V3_BASE_DIR:=${WORKDIR}}; : ${PKG_GCC_FULL_VERSION:=4.6.4}; : ${PKG_GCC_FULL_BASE_DIR:=${WORKDIR}}; -: ${PKG_INSTALL_STRIP_HOST_BUILD_STEPS_DISABLE:="fetch:main extract:main build:main"}; : ${PKG_INSTALL_STRIP_HOST_URL:=none}; : ${PKG_PSXTYPES_HOST_URLS_GIT:=psxtypes=${DEFAULT_GITROOT}/psxtypes}; -: ${PKG_PSXTYPES_HOST_BUILD_STEPS_DISABLE:=build:main}; +: ${PKG_PSXTYPES_HOST_BUILD_STEPS_DISABLE:=build:dynamic}; : ${PKG_LDSO_HOST_URLS_GIT:=pemagine=${DEFAULT_GITROOT}/pemagine}; : ${PKG_LDSO_HOST_BUILD_TYPE:=cross}; : ${PKG_LDSO_HOST_CFLAGS_CONFIGURE_EXTRA:="-O0 -DPE_LDSO -I${PREFIX_CROSS}/include"}; @@ -133,7 +132,7 @@ NATIVE_TOOLCHAIN_PREFIX="${PREFIX_NATIVE}"; : ${PKG_GCC_STAGE1_NATIVE_X86_64_W64_MINGW32_BASE_DIR:=${WORKDIR}}; : ${PKG_MDSO_URLS_GIT:="mdso=${DEFAULT_GITROOT}/mdso"}; : ${PKG_MDSO_CONFIGURE_ARGS:="--prefix=/usr --target=${TARGET}"}; -: ${PKG_MDSO_INSTALL_FILES:="@mdso=bin/${TARGET}-mdso @../../bin/mdso=${TARGET}/bin/mdso"}; +: ${PKG_MDSO_INSTALL_FILES:="@mdso=bin/${TARGET}-mdso /=${TARGET}/bin @../../bin/mdso=${TARGET}/bin/mdso"}; # # Build target runtime @@ -154,7 +153,7 @@ RUNTIME_PREFIX="${PREFIX_NATIVE}"; : ${PKG_LDSO_URLS_GIT:=pemagine=${DEFAULT_GITROOT}/pemagine}; : ${PKG_LDSO_CFLAGS_CONFIGURE_EXTRA:="-O0 -DPE_LDSO"}; : ${PKG_LDSO_CONFIGURE_ARGS_EXTRA:=--disable-shared}; -: ${PKG_LDSO_INSTALL_FILES:="@../../lib/libldso.a=${TARGET}/lib/libldso.a"}; +: ${PKG_LDSO_INSTALL_FILES:="/=${TARGET}/lib @../../lib/libldso.a=${TARGET}/lib/libldso.a"}; : ${PKG_LDSO_MAKEFLAGS_BUILD_EXTRA:=STATIC_LIB_NAME=libldso.a}; : ${PKG_LDSO_MAKEFLAGS_INSTALL_EXTRA:=STATIC_LIB_NAME=libldso.a}; : ${PKG_NTCON_URLS_GIT:=ntcon=${DEFAULT_GITROOT}/ntcon}; @@ -165,10 +164,9 @@ RUNTIME_PREFIX="${PREFIX_NATIVE}"; : ${PKG_PSXSCL_CFLAGS_CONFIGURE_EXTRA:=-O0}; : ${PKG_PSXSCL_INSTALL_TARGET_EXTRA:=install-lib}; : ${PKG_PSXSCL_STRACE_URLS_GIT:=psxscl=${DEFAULT_GITROOT_HEAD}/psxscl}; +: ${PKG_PSXSCL_STRACE_BUILD_STEPS_DISABLE:=install_make:dynamic}; : ${PKG_PSXSCL_STRACE_CFLAGS_CONFIGURE_EXTRA:="-DPSX_INTERNAL_STRACE -O0"}; : ${PKG_PSXSCL_STRACE_INSTALL_FILES:="/=lib/psxscl_strace lib/libpsxscl.so=lib/psxscl_strace/"}; -: ${PKG_PSXSCL_STRACE_NO_INSTALL_LIBS:=1}; -: ${PKG_PSXSCL_STRACE_NO_MAKE_INSTALL:=1}; : ${PKG_NTCTTY_URLS_GIT:=ntctty=${DEFAULT_GITROOT_HEAD}/ntctty}; : ${PKG_NTCTTY_CFLAGS_CONFIGURE_EXTRA:=-O0}; : ${PKG_PTYCON_URLS_GIT:=ptycon=${DEFAULT_GITROOT_HEAD}/ptycon}; @@ -194,6 +192,7 @@ HOST_PACKAGES_PREFIX="${PREFIX}"; : ${PKG_CMAKE_HOST_VERSION:=3.6.3}; : ${PKG_CMAKE_HOST_URL:=https://cmake.org/files/v${PKG_CMAKE_HOST_VERSION%.*}/cmake-${PKG_CMAKE_HOST_VERSION}.tar.gz}; : ${PKG_CMAKE_HOST_CONFIGURE_ARGS:="--parallel=${DEFAULT_BUILD_CPUS} --prefix=${PREFIX}"}; +: ${PKG_CMAKE_HOST_DISABLED:=1}; : ${PKG_LLVM_HOST_SHA256SUM:=6e82ce4adb54ff3afc18053d6981b6aed1406751b8742582ed50f04b5ab475f9}; : ${PKG_LLVM_HOST_VERSION:=3.8.1}; : ${PKG_LLVM_HOST_URL:=http://releases.llvm.org/${PKG_LLVM_HOST_VERSION}/llvm-${PKG_LLVM_HOST_VERSION}.src.tar.xz}; @@ -211,7 +210,7 @@ HOST_PACKAGES_PREFIX="${PREFIX}"; : ${PKG_GLIB_HOST_SHA256SUM:=fe22998ff0394ec31e6e5511c379b74011bee61a4421bca7fcab223dfbe0fc6a}; : ${PKG_GLIB_HOST_VERSION:=2.54.0}; : ${PKG_GLIB_HOST_URL:=http://ftp.gnome.org/pub/GNOME/sources/glib/${PKG_GLIB_HOST_VERSION%.[0-9]}/glib-${PKG_GLIB_HOST_VERSION}.tar.xz}; -: ${PKG_GLIB_HOST_BUILD_STEPS_DISABLE:=patch:main}; +: ${PKG_GLIB_HOST_BUILD_STEPS_DISABLE:=configure_patch:dynamic}; : ${PKG_GLIB_HOST_CONFIGURE_ARGS_EXTRA:="--disable-dtrace --disable-libelf --disable-libmount"}; : ${PKG_GLIB_HOST_ENV_VARS_EXTRA:=LIBFFI_CFLAGS=-I${PREFIX}/lib/libffi-${PKG_LIBFFI_HOST_VERSION}/include:LIBFFI_LIBS=-L${PREFIX}/lib64 -lffi}; : ${PKG_GLIB_HOST_MAKEFLAGS_BUILD_EXTRA:=-j1}; @@ -224,7 +223,7 @@ HOST_PACKAGES_PREFIX="${PREFIX}"; : ${PKG_RUBY_HOST_SHA256SUM:=ba5ba60e5f1aa21b4ef8e9bf35b9ddb57286cb546aac4b5a28c71f459467e507}; : ${PKG_RUBY_HOST_VERSION:=2.3.0}; : ${PKG_RUBY_HOST_URL:=https://cache.ruby-lang.org/pub/ruby/${PKG_RUBY_HOST_VERSION%.*}/ruby-${PKG_RUBY_HOST_VERSION}.tar.gz}; -: ${PKG_RUBY_HOST_BUILD_STEPS_DISABLE:=patch:main}; +: ${PKG_RUBY_HOST_BUILD_STEPS_DISABLE:=configure_patch:dynamic}; : ${PKG_RUBY_HOST_CFLAGS_CONFIGURE:="-g0 -O1"}; : ${PKG_RUBY_HOST_CONFIGURE_ARGS_EXTRA:="--disable-install-rdoc --with-out-ext=fiddle"}; @@ -270,11 +269,11 @@ LIB_PACKAGES_PREFIX="${PREFIX_NATIVE}"; : ${PKG_BZIP2_SHA256SUM:=a2848f34fcd5d6cf47def00461fcb528a0484d8edef8208d6d2e2909dc61d9cd}; : ${PKG_BZIP2_VERSION:=1.0.6}; : ${PKG_BZIP2_URL:=http://www.bzip.org/1.0.6/bzip2-${PKG_BZIP2_VERSION}.tar.gz}; +: ${PKG_BZIP2_BUILD_STEPS_DISABLE:=build_clean:variant}; : ${PKG_BZIP2_CFLAGS_BUILD_EXTRA:=${LIB_PACKAGES_CFLAGS_CONFIGURE}}; : ${PKG_BZIP2_INSTALL_FILES:="@bzdiff=bin/bzcmp @bzgrep=bin/bzegrep @bzgrep=bin/bzfgrep @bzmore=bin/bzless libbz2.so.1.0=lib/ libbz2.so.1.0.6=lib/"}; : ${PKG_BZIP2_MAKEFLAGS_BUILD_EXTRA:=-f Makefile-libbz2_so}; : ${PKG_BZIP2_MAKE_INSTALL_VNAME:=PREFIX}; -: ${PKG_BZIP2_NO_CLEAN:=1}; : ${PKG_CURL_SHA256SUM:=7f8240048907e5030f67be0a6129bc4b333783b9cca1391026d700835a788dde}; : ${PKG_CURL_VERSION:=7.51.0}; : ${PKG_CURL_URL:=https://curl.haxx.se/download/curl-${PKG_CURL_VERSION}.tar.bz2}; @@ -414,6 +413,7 @@ LIB_PACKAGES_PREFIX="${PREFIX_NATIVE}"; : ${PKG_CMAKE_URL:=https://cmake.org/files/v${PKG_CMAKE_VERSION%.*}/cmake-${PKG_CMAKE_VERSION}.tar.gz}; : ${PKG_CMAKE_CFLAGS_CONFIGURE_EXTRA:="-g0 -O2"}; : ${PKG_CMAKE_CONFIGURE_ARGS:="--parallel=${DEFAULT_BUILD_CPUS} --prefix="}; +: ${PKG_CMAKE_DISABLED:=1}; : ${PKG_INPUTPROTO_SHA256SUM:=893a6af55733262058a27b38eeb1edc733669f01d404e8581b167f03c03ef31d}; : ${PKG_INPUTPROTO_VERSION:=2.3.2}; @@ -595,12 +595,12 @@ LEAF_PACKAGES_PREFIX="${PREFIX_NATIVE}"; : ${PKG_CHICKEN_SHA256SUM:=e3dc2b8f95b6a3cd59c85b5bb6bdb2bd9cefc45b5d536a20cad74e3c63f4ad89}; : ${PKG_CHICKEN_VERSION:=4.11.0}; : ${PKG_CHICKEN_URL:=https://code.call-cc.org/releases/4.11.0/chicken-${PKG_CHICKEN_VERSION}.tar.gz}; +: ${PKG_CHICKEN_BUILD_STEPS_DISABLE:=build_clean:variant}; : ${PKG_CHICKEN_MAKEFLAGS_BUILD:="PLATFORM=midipix-${ARCH} PREFIX=${PREFIX_NATIVE} TARGET_PREFIX=${PREFIX_NATIVE} C_COMPILER=${TARGET}-gcc HOSTSYSTEM=${TARGET}"}; : ${PKG_CHICKEN_MAKEFLAGS_BUILD_EXTRA_DEBUG:=DEBUGBUILD=1}; : ${PKG_CHICKEN_MAKEFLAGS_BUILD_EXTRA_RELEASE:=DEBUGBUILD=0}; : ${PKG_CHICKEN_MAKE_INSTALL_VNAME:=TARGET_PREFIX}; : ${PKG_CHICKEN_MAKEFLAGS_INSTALL:="PLATFORM=midipix-${ARCH} PREFIX=${PREFIX_NATIVE} C_COMPILER=${TARGET}-gcc HOSTSYSTEM=${TARGET} CROSS_CHICKEN=1"}; -: ${PKG_CHICKEN_NO_CLEAN:=1}; : ${PKG_COREUTILS_SHA256SUM:=1117b1a16039ddd84d51a9923948307cfa28c2cea03d1a2438742253df0a0c65}; : ${PKG_COREUTILS_VERSION:=8.28}; : ${PKG_COREUTILS_URL:=https://ftp.gnu.org/gnu/coreutils/coreutils-${PKG_COREUTILS_VERSION}.tar.xz}; @@ -638,8 +638,8 @@ LEAF_PACKAGES_PREFIX="${PREFIX_NATIVE}"; : ${PKG_FIGLET_SHA256SUM:=bf88c40fd0f077dab2712f54f8d39ac952e4e9f2e1882f1195be9e5e4257417d}; : ${PKG_FIGLET_VERSION:=2.2.5}; : ${PKG_FIGLET_URL:=ftp://ftp.figlet.org/pub/figlet/program/unix/figlet-${PKG_FIGLET_VERSION}.tar.gz}; +: ${PKG_FIGLET_BUILD_STEPS_DISABLE:=build_clean:variant}; : ${PKG_FIGLET_MAKEFLAGS_BUILD:=CC=${TARGET}-gcc LD=${TARGET}-gcc}; -: ${PKG_FIGLET_NO_CLEAN:=1}; : ${PKG_FILE_SHA256SUM:=8639dc4d1b21e232285cd483604afc4a6ee810710e00e579dbe9591681722b50}; : ${PKG_FILE_VERSION:=5.32}; : ${PKG_FILE_URL:=ftp://ftp.astron.com/pub/file/file-${PKG_FILE_VERSION}.tar.gz}; @@ -686,11 +686,11 @@ LEAF_PACKAGES_PREFIX="${PREFIX_NATIVE}"; : ${PKG_JOHN_SHA256SUM:=952cf68369fb5b27f2d112ce7ca1eb16b975c85cbce8c658abb8bc5a20e1b266}; : ${PKG_JOHN_VERSION:=1.8.0}; : ${PKG_JOHN_URL:=http://www.openwall.com/john/j/john-${PKG_JOHN_VERSION}.tar.xz}; +: ${PKG_JOHN_BUILD_STEPS_DISABLE:=install_make:dynamic}; : ${PKG_JOHN_DISABLED:=$(if [ "${ARCH}" = "nt32" ]; then echo 1; fi)}; : ${PKG_JOHN_INSTALL_FILES:="run/john=bin/ run/mailer=bin/ run/makechr=bin/ run/relbench=bin/ run/unafs=bin/ run/unique=bin/ run/unshadow=bin/ /=share/john run/ascii.chr=share/john/ run/digits.chr=share/john/ run/john.conf=share/john/ run/lm_ascii.chr=share/john/ run/password.lst=share/john/"}; : ${PKG_JOHN_MAKEFLAGS_BUILD_EXTRA_DEBUG:="-C src midipix-x86-64"}; : ${PKG_JOHN_MAKEFLAGS_BUILD_EXTRA_RELEASE:="-C src midipix-x86-64 LDFLAGS_DEBUG=-s"}; -: ${PKG_JOHN_NO_MAKE_INSTALL:=1}; : ${PKG_JOHN_SUBDIR:=john-${PKG_JOHN_VERSION}}; : ${PKG_LDNS_SHA256SUM:=c19f5b1b4fb374cfe34f4845ea11b1e0551ddc67803bd6ddd5d2a20f0997a6cc}; : ${PKG_LDNS_VERSION:=1.7.0}; @@ -737,10 +737,9 @@ LEAF_PACKAGES_PREFIX="${PREFIX_NATIVE}"; : ${PKG_MKSH_SHA256SUM:=8bce3837c386684aa7780f085f1a4dbd5e3e26fb5c528ee0d41ae29af7f39013}; : ${PKG_MKSH_VERSION:=R54}; : ${PKG_MKSH_URL:=http://pub.allbsd.org/MirOS/dist/mir/mksh/mksh-${PKG_MKSH_VERSION}.tgz}; -: ${PKG_MKSH_BUILD_CMDLINE:="sh Build.sh"}; +: ${PKG_MKSH_BUILD_STEPS_DISABLE:=install_make:dynamic}; : ${PKG_MKSH_ENV_VARS_EXTRA:="CC=${TARGET}-gcc:CFLAGS=${PACKAGES_CFLAGS_CONFIGURE:+${PACKAGES_CFLAGS_CONFIGURE} }-DMKSH_NOPROSPECTOFWORK"}; : ${PKG_MKSH_INSTALL_FILES:="mksh=bin/ /=share/doc/mksh/examples dot.mkshrc=share/doc/mksh/examples/ mksh.1=share/man/man1/"}; -: ${PKG_MKSH_NO_MAKE_INSTALL:=1}; : ${PKG_MKSH_SUBDIR:=mksh}; : ${PKG_MTR_SHA256SUM:=f2979db9e2f41aa8e6574e7771767c9afe111d9213814eb47f5e1e71876e4382}; : ${PKG_MTR_VERSION:=0.92}; @@ -774,8 +773,8 @@ LEAF_PACKAGES_PREFIX="${PREFIX_NATIVE}"; : ${PKG_OPENSSH_CONFIGURE_ARGS_EXTRA_DEBUG:=--disable-strip}; : ${PKG_OPENSSH_INSTALL_TARGET:=install-nokeys}; : ${PKG_P7ZIP_URLS_GIT:="p7zip-midipix.git=https://github.com/lalbornoz/p7zip-midipix.git@master"}; +: ${PKG_P7ZIP_BUILD_STEPS_DISABLE:=install_make:dynamic}; : ${PKG_P7ZIP_INSTALL_FILES:="bin/7za=bin/"}; -: ${PKG_P7ZIP_NO_MAKE_INSTALL:=1}; : ${PKG_PACMAN_SHA256SUM:=84599e2ee2158134fd704f1cd681ea46e021165bed4df5f002aa1748caef9e7b}; : ${PKG_PACMAN_VERSION:=5.0.1}; : ${PKG_PACMAN_URL:=https://projects.archlinux.org/pacman.git/snapshot/pacman-${PKG_PACMAN_VERSION}.tar.gz}; @@ -840,10 +839,10 @@ LEAF_PACKAGES_PREFIX="${PREFIX_NATIVE}"; : ${PKG_ST_SHA256SUM:=f7870d906ccc988926eef2cc98950a99cc78725b685e934c422c03c1234e6000}; : ${PKG_ST_VERSION:=0.7}; : ${PKG_ST_URL:=https://dl.suckless.org/st/st-${PKG_ST_VERSION}.tar.gz}; +: ${PKG_ST_BUILD_STEPS_DISABLE:=install_make:dynamic}; : ${PKG_ST_CFLAGS_BUILD_EXTRA:=${LEAF_PACKAGES_CFLAGS_CONFIGURE} -I${PREFIX_NATIVE}/include/freetype2}; : ${PKG_ST_INSTALL_FILES:=st=bin/ st.1=share/man/man1/ st.info=bin/}; : ${PKG_ST_LDFLAGS_BUILD_EXTRA:=-L${PREFIX_NATIVE}/lib -lX11 -lXft -lfreetype -lfontconfig}; -: ${PKG_ST_NO_MAKE_INSTALL:=1}; : ${PKG_TAR_SHA256SUM:=cae466e6e58c7292355e7080248f244db3a4cf755f33f4fa25ca7f9a7ed09af0}; : ${PKG_TAR_VERSION:=1.29}; : ${PKG_TAR_URL:=https://ftp.gnu.org/gnu/tar/tar-${PKG_TAR_VERSION}.tar.gz}; @@ -877,7 +876,6 @@ LEAF_PACKAGES_PREFIX="${PREFIX_NATIVE}"; : ${PKG_VIM_VERSION:=7.4.1952}; : ${PKG_VIM_URL:=https://github.com/vim/vim/archive/v${PKG_VIM_VERSION}.tar.gz}; : ${PKG_VIM_BUILD_DIR:=vim-${PKG_VIM_VERSION}}; -: ${PKG_VIM_CONFIG_CACHE_EXTRA:=${PKG_VIM_BUILD_DIR}/src/auto}; : ${PKG_VIM_CONFIGURE_ARGS_EXTRA:=--with-tlib=ncursesw}; : ${PKG_VIM_ENV_VARS_EXTRA:=PKG_CONFIG=${PREFIX}/bin/${TARGET}-pkg-config}; : ${PKG_VIM_INSTALL_FILES:=@vim=bin/vi}; @@ -930,10 +928,10 @@ MINIPIX_PREFIX="${PREFIX_MINIPIX}"; : ${PKG_PTYCON_FLAVOUR_MINIPIX_CONFIGURE_ARGS:="--prefix= --strict --host=${TARGET}"}; : ${PKG_PTYCON_FLAVOUR_MINIPIX_ENV_VARS_EXTRA:="CFLAGS_PATH=-I${PREFIX_NATIVE}/include:LDFLAGS_PATH=-L${PREFIX_NATIVE}/lib"}; : ${PKG_PTYCON_FLAVOUR_MINIPIX_INSTALL_TARGET:=install-static-app}; +: ${PKG_BZIP2_FLAVOUR_MINIPIX_BUILD_STEPS_DISABLE:="${PKG_BZIP2_BUILD_STEPS_DISABLE:+${PKG_BZIP2_BUILD_STEPS_DISABLE} }install_make:dynamic"}; : ${PKG_BZIP2_FLAVOUR_MINIPIX_INSTALL_FILES:="bzip2=bin/ @bzip2=bin/bunzip2 @bzip2=bin/bzcat @bzip2=bin/bzip2recover @bzip2=bin/bzgrep @bzip2=bin/bzmore @bzip2=bin/bzdiff"}; : ${PKG_BZIP2_FLAVOUR_MINIPIX_LDFLAGS_BUILD_EXTRA:="-static"}; : ${PKG_BZIP2_FLAVOUR_MINIPIX_MAKEFLAGS_BUILD_EXTRA:="-f Makefile"}; -: ${PKG_BZIP2_FLAVOUR_MINIPIX_NO_MAKE_INSTALL:=1}; : ${PKG_BZIP2_FLAVOUR_MINIPIX_PREFIX:=${PREFIX_MINIPIX}}; : ${PKG_GZIP_FLAVOUR_MINIPIX_LDFLAGS_BUILD_EXTRA:="-static"}; : ${PKG_GZIP_FLAVOUR_MINIPIX_LDFLAGS_INSTALL_EXTRA:="-static"}; @@ -943,7 +941,7 @@ MINIPIX_PREFIX="${PREFIX_MINIPIX}"; : ${PKG_XZ_FLAVOUR_MINIPIX_PREFIX:=${PREFIX_MINIPIX}}; : ${PKG_BASH_CONFIGURE_ARGS_EXTRA:="--without-bash-malloc --with-curses"}; : ${PKG_BASH_FLAVOUR_MINIPIX_CONFIGURE_ARGS_EXTRA:="--enable-static-link --without-bash-malloc --with-curses"}; -: ${PKG_BASH_FLAVOUR_MINIPIX_NO_MAKE_INSTALL:=1}; +: ${PKG_BASH_FLAVOUR_MINIPIX_BUILD_STEPS_DISABLE:=install_make:dynamic}; : ${PKG_BASH_FLAVOUR_MINIPIX_INSTALL_FILES:="bash=bin/ bashbug=bin/"}; : ${PKG_COREUTILS_FLAVOUR_MINIPIX_LDFLAGS_BUILD_EXTRA:="-static"}; : ${PKG_COREUTILS_FLAVOUR_MINIPIX_MAKEFLAGS_BUILD_EXTRA:="SHARED=0"}; @@ -954,11 +952,16 @@ MINIPIX_PREFIX="${PREFIX_MINIPIX}"; : ${PKG_TAR_FLAVOUR_MINIPIX_MAKEFLAGS_INSTALL:="-C src install-binPROGRAMS"}; # +# Build target dist +# +DIST_PACKAGES="dist_etc dist_digest dist_tarballs"; + +# # Build meta-targets # DEVROOT_TARGET="host_toolchain native_toolchain runtime"; DEV_TARGET="${DEVROOT_TARGET} dev_packages"; -WORLD_TARGET="${DEVROOT_TARGET} host_packages lib_packages leaf_packages minipix"; +WORLD_TARGET="${DEVROOT_TARGET} host_packages lib_packages leaf_packages minipix dist"; ALL_TARGETS="${WORLD_TARGET} devroot dev world"; # vim:filetype=sh textwidth=0 diff --git a/vars/cmake.vars b/vars/cmake.vars index 40f3d85..4b302e3 100644 --- a/vars/cmake.vars +++ b/vars/cmake.vars @@ -38,14 +38,14 @@ pkg_cmake_configure() { "../cmake-${PKG_VERSION}"; }; -pkg_cmake_install_pre() { +pkg_cmake_install_make_pre() { if [ ! -e cmake_install.cmake.orig ]; then sed -i.orig '/^\s*set(CMAKE_INSTALL_PREFIX ".*")$/s/".*"/""/' \ cmake_install.cmake; fi; }; -pkg_cmake_host_install_pre() { +pkg_cmake_host_install_make_pre() { pkg_cmake_install_pre; }; diff --git a/vars/dist_digest.subr b/vars/dist_digest.subr new file mode 100644 index 0000000..1b98fb6 --- /dev/null +++ b/vars/dist_digest.subr @@ -0,0 +1,21 @@ +# +# set -o errexit -o noglob are assumed. +# + +dist_digest_all() { + local __; + if [ "${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/vars/dist_etc.subr b/vars/dist_etc.subr new file mode 100644 index 0000000..e7e0a92 --- /dev/null +++ b/vars/dist_etc.subr @@ -0,0 +1,11 @@ +# +# set -o errexit -o noglob are assumed. +# + +dist_etc_all() { + 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/vars/dist_tarballs.subr b/vars/dist_tarballs.subr new file mode 100644 index 0000000..7cf075a --- /dev/null +++ b/vars/dist_tarballs.subr @@ -0,0 +1,94 @@ +# +# 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; +}; + +dist_tarballs_all() { + if [ "${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/vars/env.vars b/vars/env.vars index cf6ac9d..818f87f 100644 --- a/vars/env.vars +++ b/vars/env.vars @@ -16,22 +16,23 @@ : ${PREFIX_CROSS:=${PREFIX}/${TARGET}}; : ${DLCACHEDIR:=${PREFIX_ROOT}/dlcache}; : ${WORKDIR:=${PREFIX}/tmp}; -: ${BUILD_STEPS:="disabled:always setup_vars:always setup_env:always - all:abstract fetch:main extract:main clone:main - patch_pre:main build_dir:always work_dir:always - autoconf:main patch:main configure:main clean:optional build:main - install_pre:main install:main strip:main finish:always"}; -: ${PKG_BUILD_VARS:="BASE_DIR BUILD_CMDLINE BUILD_DIR BUILD_STEPS_DISABLE - BUILD_TYPE CFLAGS_BUILD_EXTRA CFLAGS_CONFIGURE CFLAGS_CONFIGURE_EXTRA - CFLAGS_INSTALL_EXTRA CONFIG_CACHE_EXTRA CONFIGURE CONFIGURE_ARGS +: ${BUILD_STEPS:="setup_vars:invariant setup_env:invariant all:all + fetch_wget:dynamic fetch_git:dynamic fetch_extract:dynamic fetch_subdirs:invariant fetch:virtual + configure_patch_pre:dynamic configure_autotools:dynamic configure_patch:dynamic configure:dynamic + build_clean:variant build:dynamic + install_subdirs:dynamic install_make:dynamic install_files:dynamic install_libs:dynamic + install_pkgconfig:dynamic install_purge_la:dynamic install_strip:dynamic install:dynamic + finish:invariant"}; +: ${PKG_BUILD_VARS:="BASE_DIR BUILD_DIR BUILD_STEPS_DISABLE BUILD_TYPE + CFLAGS_BUILD_EXTRA CFLAGS_CONFIGURE CFLAGS_CONFIGURE_EXTRA + CFLAGS_INSTALL_EXTRA CONFIGURE CONFIGURE_ARGS CONFIGURE_ARGS_EXTRA CXXFLAGS_CONFIGURE_EXTRA DISABLED ENV_VARS_EXTRA INSTALL_FILES INSTALL_TARGET INSTALL_TARGET_EXTRA LDFLAGS_BUILD_EXTRA LDFLAGS_CONFIGURE LDFLAGS_CONFIGURE_EXTRA LDFLAGS_INSTALL_EXTRA MAKE_INSTALL_VNAME MAKEFLAGS_BUILD MAKEFLAGS_BUILD_EXTRA MAKEFLAGS_INSTALL MAKEFLAGS_INSTALL_EXTRA - NO_CLEAN NO_INSTALL_LIBS NO_MAKE_INSTALL PREFIX_EXTRA SHA256SUM - SLIBTOOL SUBDIR TARGET URL URL_TYPE URLS_GIT VERSION"}; -: ${CLEAR_ENV_VARS_EXCEPT:="ARG_VERBOSE GITROOT_HEAD HOME PATH SHELL TERM TARBALL_SIGN_GPG_KEY USER"}; + PREFIX_EXTRA SHA256SUM SLIBTOOL SUBDIR TARGET URL URL_TYPE URLS_GIT VERSION"}; +: ${CLEAR_ENV_VARS_EXCEPT:="ARG_VERBOSE DEFAULT_GITROOT_HEAD HOME PATH SHELL TERM TARBALL_SIGN_GPG_KEY USER"}; : ${CLEAR_PREFIX_DIRS:="bin i686-nt32-midipix include lib lib64 libexec minipix native share tmp x86_64-nt64-midipix"}; # Default flags diff --git a/vars/gcc.vars b/vars/gcc.vars index bcb092e..1290264 100644 --- a/vars/gcc.vars +++ b/vars/gcc.vars @@ -97,7 +97,7 @@ pkg_gcc_stage1_all() { esac; # GCC, stage1. if ! is_build_script_done "${PKG_NAME}" fetch "${_restart_at}"; then - pkg_fetch -git "cbb-gcc-${PKG_GCC_VERSION}=${GITROOT}/cbb/cbb-gcc-${PKG_GCC_VERSION}"; + pkg_fetch_git "cbb-gcc-${PKG_GCC_VERSION}=${DEFAULT_GITROOT}/cbb/cbb-gcc-${PKG_GCC_VERSION}"; set_build_script_done "${PKG_NAME}" fetch -patch; fi; if ! is_build_script_done "${PKG_NAME}" patch "${_restart_at}"; then diff --git a/vars/install_strip_host.vars b/vars/install_strip_host.vars index f8d6ca8..081226b 100644 --- a/vars/install_strip_host.vars +++ b/vars/install_strip_host.vars @@ -2,7 +2,7 @@ # set -o errexit -o noglob are assumed. # -pkg_install_strip_host_install() { +pkg_install_strip_host_all() { if [ -e "${PREFIX}/bin/${TARGET}-install-strip" ]; then build_fileop rm "${PREFIX}/bin/${TARGET}-install-strip"; fi; diff --git a/vars/libfirm.vars b/vars/libfirm.vars index 59ed78f..7b3556d 100644 --- a/vars/libfirm.vars +++ b/vars/libfirm.vars @@ -12,12 +12,12 @@ pkg_cparser_configure_pre() { export LDFLAGS_PATH="-L../../sysroot/lib"; }; -pkg_libfirm_install() { +pkg_libfirm_install_make() { make ${MAKEFLAGS} DESTDIR=../../sysroot install; make ${MAKEFLAGS} DESTDIR="${PREFIX_NATIVE}" install; }; -pkg_cparser_install() { +pkg_cparser_install_make() { make ${MAKEFLAGS} DESTDIR=../../sysroot install; make ${MAKEFLAGS} DESTDIR="${PREFIX_NATIVE}" install; }; diff --git a/vars/libxml2.vars b/vars/libxml2.vars index f0bd0f0..1952c2d 100644 --- a/vars/libxml2.vars +++ b/vars/libxml2.vars @@ -2,7 +2,7 @@ # set -o errexit -o noglob are assumed. # -pkg_libxml2_install_post() { +pkg_libxml2_install_make_post() { if [ -e "${PREFIX}/bin/${TARGET}-xml2-config" ]; then build_fileop rm "${PREFIX}/bin/${TARGET}-xml2-config"; fi; diff --git a/vars/musl.vars b/vars/musl.vars index ce0110c..c9d2188 100644 --- a/vars/musl.vars +++ b/vars/musl.vars @@ -23,16 +23,16 @@ pkg_musl_no_complex_all() { local _install _restart_at="${1}"; PKG_MUSL_VERSION="${PKG_MUSL_NO_COMPLEX_VERSION}"; # Git clone what we need. - pkg_fetch -git "lazy=${GITROOT}/lazy"; + pkg_fetch_git "lazy=${DEFAULT_GITROOT}/lazy"; export lz_arch="${ARCH}" lz_cflags_debug="-O2" lz_target="${TARGET}"; # Musl: build (no-complex) _install=install_no_complex; set_build_dir "musl-${PKG_MUSL_VERSION}" cross; if ! is_build_script_done "${PKG_NAME}" fetch "${_restart_at}"; then - pkg_fetch "http://www.musl-libc.org/releases/musl-${PKG_MUSL_VERSION}.tar.gz" \ + pkg_fetch_wget "http://www.musl-libc.org/releases/musl-${PKG_MUSL_VERSION}.tar.gz" \ "${PKG_MUSL_NO_COMPLEX_SHA256SUM}"; build_fileop rm "${PKG_BASE_DIR}/mmglue"; - pkg_fetch -git "mmglue=${GITROOT}/mmglue"; + pkg_fetch_git "mmglue=${DEFAULT_GITROOT}/mmglue"; set_build_script_done "${PKG_NAME}" fetch -extract; fi; if ! is_build_script_done "${PKG_NAME}" extract "${_restart_at}"; then @@ -60,7 +60,7 @@ pkg_musl_native_all() { local _install _restart_at="${1}"; PKG_MUSL_VERSION="${PKG_MUSL_NATIVE_VERSION}"; # Git clone what we need. - pkg_fetch -git "lazy=${GITROOT}/lazy"; + pkg_fetch_git "lazy=${DEFAULT_GITROOT}/lazy"; export lz_arch="${ARCH}" lz_cflags_debug="-O2" lz_target="${TARGET}"; # Musl: build (full) _install=install; @@ -83,7 +83,7 @@ pkg_musl_full_all() { local _install _restart_at="${1}"; PKG_MUSL_VERSION="${PKG_MUSL_FULL_VERSION}"; # Git clone what we need. - pkg_fetch -git "lazy=${GITROOT}/lazy"; + pkg_fetch_git "lazy=${DEFAULT_GITROOT}/lazy"; export lz_arch="${ARCH}" lz_cflags_debug="-O2" lz_target="${TARGET}"; # Musl: build (full) _install=install; diff --git a/vars/perl.vars b/vars/perl.vars index edfd111..a011deb 100644 --- a/vars/perl.vars +++ b/vars/perl.vars @@ -2,7 +2,7 @@ # set -o errexit -o noglob are assumed. # -pkg_perl_extract_post() { +pkg_perl_fetch_extract_post() { local _fname_src _fname_dst _cflag; (build_fileop cd "${WORKDIR}"; for _fname_src in $(find perl-cross -type f \ diff --git a/vars/pkgconf_host.vars b/vars/pkgconf_host.vars index 8f77adf..bde06b1 100644 --- a/vars/pkgconf_host.vars +++ b/vars/pkgconf_host.vars @@ -2,7 +2,7 @@ # set -o errexit -o noglob are assumed. # -pkg_pkgconf_host_install_post() { +pkg_pkgconf_host_install_make_post() { if [ -e "${PREFIX}/bin/${TARGET}-pkg-config" ]; then build_fileop rm "${PREFIX}/bin/${TARGET}-pkg-config"; fi; @@ -17,7 +17,7 @@ EOF build_fileop rm "${PREFIX}/bin/pkg-config"; }; -pkg_pkgconf_install_post() { +pkg_pkgconf_install_make_post() { if [ -e "${PREFIX_NATIVE}/bin/pkg-config" ]; then build_fileop rm "${PREFIX_NATIVE}/bin/pkg-config"; fi; diff --git a/vars/psxstub.vars b/vars/psxstub.vars index dbdb0a2..af4bfd9 100644 --- a/vars/psxstub.vars +++ b/vars/psxstub.vars @@ -2,7 +2,7 @@ # set -o errexit -o noglob are assumed. # -pkg_psxstub_install() { +pkg_psxstub_install_make() { if [ "${TARGET}" = i686-nt32-midipix ] \ || [ "${TARGET}" = x86_64-nt64-midipix ]; then build_fileop cd "${PKG_BASE_DIR}/psxstub"; diff --git a/vars/ruby.vars b/vars/ruby.vars index 649f619..55ba881 100644 --- a/vars/ruby.vars +++ b/vars/ruby.vars @@ -2,15 +2,15 @@ # set -o errexit -o noglob are assumed. # -pkg_ruby_install_pre() { +pkg_ruby_install_make_pre() { if [ ! -e rbconfig.rb.orig ]; then sed -i.orig '/^\s*CONFIG\["prefix"\]\s*=.*$/s/=.*$/= ""/' \ rbconfig.rb; fi; }; -pkg_ruby_host_install_pre() { - pkg_ruby_install_pre; +pkg_ruby_host_install_make_pre() { + pkg_ruby_install_make_pre; }; # vim:filetype=sh diff --git a/vars/vim.vars b/vars/vim.vars new file mode 100644 index 0000000..0e0ab50 --- /dev/null +++ b/vars/vim.vars @@ -0,0 +1,10 @@ +# +# set -o errexit -o noglob are assumed. +# + +pkg_vim_configure_pre() { + build_fileop cp "${MIDIPIX_BUILD_PWD}/etc/config.cache" \ + "${PKG_BASE_DIR}/${PKG_SUBDIR}/src/auto"; +}; + +# vim:filetype=sh diff --git a/vars/xz_flavour_minipix.vars b/vars/xz_flavour_minipix.vars index 6b2c268..18820f1 100644 --- a/vars/xz_flavour_minipix.vars +++ b/vars/xz_flavour_minipix.vars @@ -2,7 +2,7 @@ # set -o errexit -o noglob are assumed. # -pkg_xz_flavour_minipix_install() { +pkg_xz_flavour_minipix_install_make() { make LIBTOOL=slibtool -C src/lzmainfo install-binPROGRAMS DESTDIR=${PREFIX_MINIPIX}; make LIBTOOL=slibtool -C src/scripts install-nodist_binSCRIPTS DESTDIR=${PREFIX_MINIPIX}; make LIBTOOL=slibtool -C src/xz install-binPROGRAMS DESTDIR=${PREFIX_MINIPIX};