diff options
author | Lucía Andrea Illanes Albornoz <lucia@luciaillanes.de> | 2023-02-17 19:29:28 +0100 |
---|---|---|
committer | Lucía Andrea Illanes Albornoz <lucia@luciaillanes.de> | 2023-02-17 19:29:28 +0100 |
commit | e9fa0774ed2e7e030a68f5b0ae51fe6dd69fe492 (patch) | |
tree | 37e46c2578bd8f4f435073db01abc514976da8a8 /subr.pkg/pkg_install_rpm.subr | |
parent | 56495632fc8bf612766a9c431e37ff27a903e8c6 (diff) | |
download | midipix_build-e9fa0774ed2e7e030a68f5b0ae51fe6dd69fe492.tar.bz2 midipix_build-e9fa0774ed2e7e030a68f5b0ae51fe6dd69fe492.tar.xz |
Make everything a bit faster.
0) Issues several prayers and sacrifices to Enki under threat of a terrible deluge sent down by Ellil
1) Convert fork-write/read exprs to be non-forking
2) Pass mostly everything by reference
3) Don't bother cleaning the variable namespace because Bourne shell is an abomination
4) Removes broken ./pkgtool.sh -s, --restart-at, --update-diff & ./build.sh --dump-{in,on-abort}
5) Cleanup
Diffstat (limited to 'subr.pkg/pkg_install_rpm.subr')
-rw-r--r-- | subr.pkg/pkg_install_rpm.subr | 66 |
1 files changed, 66 insertions, 0 deletions
diff --git a/subr.pkg/pkg_install_rpm.subr b/subr.pkg/pkg_install_rpm.subr new file mode 100644 index 00000000..11cdfd85 --- /dev/null +++ b/subr.pkg/pkg_install_rpm.subr @@ -0,0 +1,66 @@ +# +# set +o errexit -o noglob -o nounset is assumed. +# + +pkg_install_rpm() { + local _pir_group_name="${1}" _pir_pkg_name="${2}" _pir_restart_at="${3}" \ + _pir_pkg_url="" _pir_pkg_version_full="" _pir_pkg_version_rpm="" \ + _pir_rc=0; + + if rtl_lmatch \$ARG_DIST "rpm" ","\ + && [ "${PKG_RPM_DISABLE:-0}" -eq 0 ]\ + && command which rpmbuild >/dev/null 2>&1; + then + if [ "${PKG_URL:+1}" = 1 ]; then + _pir_pkg_url="${PKG_URL%% *}"; _pir_pkg_version_full="${PKG_VERSION}"; _pir_pkg_version_rpm="${PKG_VERSION%%-*}"; + elif [ "${PKG_URLS_GIT:+1}" = 1 ]; then + _pir_pkg_version_rpm="$(cd "${PKG_BASE_DIR}/${PKG_SUBDIR}" && git rev-parse HEAD)"; + _pir_pkg_version_full="${_pir_pkg_version_rpm} ($(cd "${PKG_BASE_DIR}/${PKG_SUBDIR}" && git rev-parse --abbrev-ref HEAD))"; + _pir_pkg_url="${PKG_URLS_GIT%% *}"; _pir_pkg_url="${_pir_pkg_url##*=}"; _pir_pkg_url="${_pir_pkg_url%%@*}"; + + if [ "${_pir_pkg_url#${DEFAULT_GITROOT_HEAD}}" != "${_pir_pkg_url}" ]; then + _pir_pkg_url="Unknown"; + fi; + fi; + + if ! rtl_fileop cp "${MIDIPIX_BUILD_PWD}/etc/package.spec" \ + "${PKG_BASE_DIR}/${PKG_NAME}-${_pir_pkg_version_rpm}.spec"; + then + return 1; + else + while true; do + rpmbuild \ + -bb \ + --define="_tmppath ${BUILD_WORKDIR}" \ + --define="_topdir ${PREFIX_RPM}/${PKG_NAME}-${_pir_pkg_version_rpm}" \ + --define="pkg_destdir ${PKG_DESTDIR}" \ + --define="pkg_name ${PKG_NAME}" \ + --define="pkg_url ${_pir_pkg_url}" \ + --define="pkg_version_full ${_pir_pkg_version_full}" \ + --define="pkg_version_rpm ${_pir_pkg_version_rpm}" \ + --nodeps "${PKG_BASE_DIR}/${PKG_NAME}-${_pir_pkg_version_rpm}.spec"; + _pir_rc="${?}"; + + if [ "${_pir_rc}" -eq 0 ]; then + break; + elif [ "${_pir_rc}" -eq 141 ]; then + continue; + else + return "${_pir_rc}"; + fi; + done; + + if ! find "${PREFIX_RPM}/${PKG_NAME}-${_pir_pkg_version_rpm}/RPMS" \ + -iname \*.rpm -exec cp -pP {} "${PREFIX_RPM}/" \; \ + || ! rtl_fileop rm "${PREFIX_RPM}/${PKG_NAME}-${_pir_pkg_version_rpm}" \ + || ! rtl_fileop cp "${PKG_BASE_DIR}/${PKG_NAME}-${_pir_pkg_version_rpm}.spec" "${PREFIX_RPM}/"; + then + return 1; + fi; + fi; + fi; + + return 0; +}; + +# vim:filetype=sh |