From 938c5c45b976387ceea5792b0ce9717dd97667eb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Luc=C3=ADa=20Andrea=20Illanes=20Albornoz?= Date: Mon, 27 Mar 2023 08:04:23 +0200 Subject: Generalise subr.pkg/*.subr code. --- subr.pkg/pkg_build.subr | 2 +- subr.pkg/pkg_build_clean.subr | 2 +- subr.pkg/pkg_configure.subr | 4 +- subr.pkg/pkg_install_files.subr | 97 ++++++++++++----------------------------- subr.pkg/pkg_install_libs.subr | 95 ---------------------------------------- subr.pkg/pkg_install_make.subr | 2 +- subr.pkg/pkg_install_rpm.subr | 68 +++++++---------------------- 7 files changed, 49 insertions(+), 221 deletions(-) delete mode 100644 subr.pkg/pkg_install_libs.subr (limited to 'subr.pkg') diff --git a/subr.pkg/pkg_build.subr b/subr.pkg/pkg_build.subr index a11e87ac..9ca2afce 100644 --- a/subr.pkg/pkg_build.subr +++ b/subr.pkg/pkg_build.subr @@ -21,7 +21,7 @@ pkg_build() { # autoconf as it often abuses it by appending -std={gnu99,...} to it # instead of amending CFLAGS. # - ex_pkg_run_make \ + ex_rtl_run_make \ "${PKG_AR}" "${PKG_CC}" "${PKG_CXX}" "${PKG_CCLD}" "${PKG_LIBTOOL}" \ "${PKG_MAKE}" "${PKG_PKG_CONFIG}" "${PKG_RANLIB}" \ -- \ diff --git a/subr.pkg/pkg_build_clean.subr b/subr.pkg/pkg_build_clean.subr index 3cd78bb9..f93577ec 100644 --- a/subr.pkg/pkg_build_clean.subr +++ b/subr.pkg/pkg_build_clean.subr @@ -17,7 +17,7 @@ pkg_build_clean() { _pbc_subdir=""; fi; - ex_pkg_run_make \ + ex_rtl_run_make \ "${PKG_AR}" "${PKG_CC}" "${PKG_CXX}" "${PKG_CCLD}" "${PKG_LIBTOOL}" \ "${PKG_MAKE}" "${PKG_PKG_CONFIG}" "${PKG_RANLIB}" \ -- \ diff --git a/subr.pkg/pkg_configure.subr b/subr.pkg/pkg_configure.subr index 71fac55a..8d75b6f7 100644 --- a/subr.pkg/pkg_configure.subr +++ b/subr.pkg/pkg_configure.subr @@ -13,7 +13,7 @@ pkgp_configure_autotools() { then _ppca_rc=2; else - ex_pkg_run_configure \ + ex_rtl_run_configure \ "${PKG_AR}" "${PKG_CC}" "${PKG_CONFIGURE}" "${PKG_CXX}" "${PKG_LD}" \ "${PKG_LIBTOOL}" "${PKG_PKG_CONFIG}" "${PKG_PYTHON:-}" "${PKG_RANLIB}" \ -- \ @@ -53,7 +53,7 @@ pkgp_configure_cmake() { esac; esac; - ex_pkg_run_configure_cmake \ + ex_rtl_run_configure_cmake \ "${PKG_AR}" "${PKG_CC}" "${ARG_CCACHE}" "${PKG_CMAKE}" "${PKG_CXX}" \ "${PKG_LD}" "${PKG_PKG_CONFIG}" "${PKG_PYTHON:-}" "${PKG_RANLIB}" \ -- \ diff --git a/subr.pkg/pkg_install_files.subr b/subr.pkg/pkg_install_files.subr index 204bab74..ac471188 100644 --- a/subr.pkg/pkg_install_files.subr +++ b/subr.pkg/pkg_install_files.subr @@ -41,80 +41,38 @@ pkgp_install_files_v2() { fi; }; -pkgp_install_files_perms() { - local _ppifp_destdir="" _ppifp_fname="" IFS; - - for _ppifp_destdir in "${PKG_DESTDIR}" "${PKG_DESTDIR_HOST}"; do - if [ -e "${_ppifp_destdir}" ]; then - rtl_set_IFS_nl; - - for _ppifp_fname in $(find "${_ppifp_destdir}" -type d); do - if ! rtl_fileop chmod 0755 "${_ppifp_fname}"; then - return 1; - fi; - done; - - for _ppifp_fname in $(find "${_ppifp_destdir}" \( -not -perm /0111 \) -type f); do - if ! rtl_fileop chmod 0644 "${_ppifp_fname}"; then - return 1; - fi; - done; - - for _ppifp_fname in $(find "${_ppifp_destdir}" -perm /0111 -type f); do - if ! rtl_fileop chmod 0755 "${_ppifp_fname}"; then - return 1; - fi; - done; - fi; - done; +pkgp_install_files_libraries() { + if [ "${PKG_BUILD_TYPE}" != "host" ]; then + ex_rtl_install_library_archives "${PKG_DESTDIR}" "${PKG_TARGET}-mdso" || return 1; + fi; + ex_rtl_purge_la_files "${PKG_DESTDIR}" || return 1; return 0; }; -pkgp_install_files_pkgconfig() { - local _ppifp2_pc_path=""; - - for _ppifp2_pc_path in $(find "${PKG_DESTDIR}" -name \*.pc); do - if [ -n "$(sed -ne '/^libdir=[^$]*$/p' "${_ppifp2_pc_path}")" ] \ - && ! sed -i"" -e '/^libdir=[^$]*$/s/^libdir=\(.*\)$/libdir=${exec_prefix}\1/' \ - -e '/^exec_prefix=$/s/^.*$/exec_prefix=${prefix}/' \ - "${_ppifp2_pc_path}"; then - return 1; - fi; - - if [ -n "$(sed -ne '/^includedir=[^$]*$/p' "${_ppifp2_pc_path}")" ] \ - && ! sed -i"" -e '/^includedir=[^$]*$/s/^includedir=\(.*\)$/includedir=${prefix}\1/' \ - "${_ppifp2_pc_path}"; then - return 1; - fi; - done; +pkgp_install_files_perms() { + rtl_set_perms_treeV \ + 0755 0755 0644 \ + "${PKG_DESTDIR}" \ + "${PKG_DESTDIR_HOST}"; + return "${?}"; }; pkgp_install_files_strip() { - local _ppifs_bin_path="" _ppifs_stripfl=0 _ppifs_tree_root="${PKG_DESTDIR}"; - - if [ -e "${_ppifs_tree_root}" ]; then - if rtl_match "${PKG_NAME}" "*_ppifs_minipix"; then - : $((_ppifs_stripfl=(${ARG_DEBUG_MINIPIX:-0} ? 0 : 1))); - elif [ "${BUILD_KIND}" = release ]\ - && [ "${PKG_BUILD_TYPE}" = native ]; - then - _ppifs_stripfl=1; - else - _ppifs_stripfl=0; - fi; - - if [ "${_ppifs_stripfl:-0}" -eq 1 ]; then - for _ppifs_bin_path in $(find "${_ppifs_tree_root}" -perm /a=x -type f); do - if objdump -sj .debug_frame -j .debug_info "${_ppifs_bin_path}" >/dev/null 2>&1; then - rtl_log_msgV "pkg_strip" "${MSG_pkg_strip}" "${_ppifs_bin_path}"; - if ! "${PKG_TARGET}-strip" "${_ppifs_bin_path}"; then - return 1; - fi; - fi; - done; - fi; + local _ppifs_files_stripped="" _ppifs_pkg_minipixfl=0 _ppifs_rc=0; + + rtl_match "${PKG_NAME}" "*_minipix"; _ppifs_pkg_minipixfl="${?}"; + if [ \( "${_ppifs_pkg_minipixfl}" -eq 0 \) -a \( "${ARG_DEBUG_MINIPIX:-0}" -eq 0 \) ]\ + || [ \( "${BUILD_KIND}" = release \) -a \( "${PKG_BUILD_TYPE}" = native \) ]; then + ex_rtl_strip_files \ + \$_ppifs_files_stripped \ + "${PKG_TARGET}-strip" \ + "${PKG_DESTDIR}" \ + -- \ + rtl_log_msgV "pkg_strip" "${MSG_pkg_strip}"; + _ppifs_rc="${?}"; fi; - return 0; + + return "${_ppifs_rc}"; }; pkg_install_files() { @@ -123,8 +81,9 @@ pkg_install_files() { if ! pkgp_install_files\ || ! pkgp_install_files_v2\ || ! pkgp_install_files_perms\ - || ! pkgp_install_files_pkgconfig\ - || ! pkgp_install_files_strip; + || ! ex_rtl_fixup_pkgconfig_paths "${PKG_DESTDIR}"\ + || ! pkgp_install_files_strip\ + || ! pkgp_install_files_libraries; then return 1; fi; diff --git a/subr.pkg/pkg_install_libs.subr b/subr.pkg/pkg_install_libs.subr deleted file mode 100644 index d19c9565..00000000 --- a/subr.pkg/pkg_install_libs.subr +++ /dev/null @@ -1,95 +0,0 @@ -# -# Copyright (c) 2016, 2017, 2018, 2019, 2020, 2021, 2022, 2023 LucĂ­a Andrea Illanes Albornoz -# set +o errexit -o noglob -o nounset is assumed. -# - -pkgp_install_libs_purge_la() { - local _ppilpl_la_path=""; - - for _ppilpl_la_path in $(find "${PKG_DESTDIR}" -type f -name \*.la); do - if ! rtl_fileop rm "${_ppilpl_la_path}"; then - return 1; - fi; - done; - return 0; -}; - -pkgp_install_libs_shared_link() { - local _ppilsl_lib_name="${1}" _ppilsl_so_dir="${2}" _ppilsl_so_path="${3}" \ - _ppilsl_lib_link_path="${3%.so*}.lib.a" _ppilsl_fname="" _ppilsl_lib_link_tgt=""; - - if _ppilsl_lib_link_tgt="$(find "${_ppilsl_so_dir}" -name "${_ppilsl_lib_name%%.*}.*.lib.a" | sort | tail -1)"\ - && [ "${_ppilsl_lib_link_tgt:+1}" = 1 ]\ - && [ "${_ppilsl_lib_link_tgt}" != "${_ppilsl_lib_link_path}" ]; - then - rtl_basename2 \$_ppilsl_lib_link_tgt \$_ppilsl_fname; - - if ! rtl_fileop rm "${_ppilsl_lib_link_path}"\ - || ! rtl_fileop ln_symbolic "${_ppilsl_fname}" "${_ppilsl_lib_link_path}"; then - return 1; - fi; - fi; - return 0; -}; - -pkgp_install_libs_shared() { - local _ppils_postfix="" _ppils_lib_dst_path="" _ppils_lib_name="" \ - _ppils_lib_src_path="" _ppils_so_dst_dir="" _ppils_so_src_path=""; - - if [ "${PKG_BUILD_TYPE}" != "host" ]; then - for _ppils_so_src_path in \ - $(find "${PKG_DESTDIR}" \ - \( -name "*.so" -or -name "*.so.*" \) -print); - do - if [ "$(readlink -f "${_ppils_so_src_path}")" != "/dev/null" ]\ - && rtl_remove_postfix "[0-9.]" "${_ppils_so_src_path##*.so}" \$_ppils_postfix\ - && [ "${_ppils_postfix:+1}" != 1 ]; then - case "${_ppils_so_src_path}" in - *.so) _ppils_lib_src_path="${_ppils_so_src_path%%.so}.lib.a"; ;; - *.so.*) _ppils_lib_src_path="${_ppils_so_src_path%%.so.*}.${_ppils_so_src_path##*.so.}.lib.a"; ;; - esac; - - _ppils_so_dst_dir="${_ppils_so_src_path%/*}"; - rtl_basename2 \$_ppils_lib_src_path \$_ppils_lib_name; - _ppils_lib_dst_path="${_ppils_so_dst_dir}/${_ppils_lib_name}"; - - if [ ! -L "${_ppils_lib_src_path}" ]\ - && [ ! -e "${_ppils_lib_dst_path}" ]; then - if ! (rtl_basename2 \$_ppils_so_src_path \$_ppils_fname; \ - rtl_basename2 \$_ppils_lib_dst_path \$_ppils_fname_dst; \ - rtl_dirname2 \$_ppils_so_src_path \$_ppils_dname; \ - rtl_fileop cd "${_ppils_dname}" && \ - perk -e "${_ppils_fname}" |\ - "${PKG_TARGET}-mdso" \ - -i "${_ppils_fname_dst}" \ - -n "${_ppils_fname}" -); - then - return 1; - fi; - fi; - - if ! pkgp_install_libs_shared_link \ - "${_ppils_lib_name}" "${_ppils_so_dst_dir}" \ - "${_ppils_so_src_path}"; - then - return 1; - fi; - fi; - done; - fi; - - return 0; -}; - -pkg_install_libs() { - local _pil_group_name="${1}" _pil_pkg_name="${2}" _pil_restart_at="${3}"; - - if ! pkgp_install_libs_purge_la\ - || ! pkgp_install_libs_shared; - then - return 1; - fi; - return 0; -}; - -# vim:filetype=sh textwidth=0 diff --git a/subr.pkg/pkg_install_make.subr b/subr.pkg/pkg_install_make.subr index 914a2af2..fe255767 100644 --- a/subr.pkg/pkg_install_make.subr +++ b/subr.pkg/pkg_install_make.subr @@ -17,7 +17,7 @@ pkg_install_make() { _pim_subdir=""; fi; - ex_pkg_run_make \ + ex_rtl_run_make \ "${PKG_AR}" "${PKG_CC}" "${PKG_CXX}" "${PKG_CCLD}" "${PKG_LIBTOOL}" \ "${PKG_MAKE}" "${PKG_PKG_CONFIG}" "${_pim_ranlib}" \ -- \ diff --git a/subr.pkg/pkg_install_rpm.subr b/subr.pkg/pkg_install_rpm.subr index fccdc7f0..ac3d4407 100644 --- a/subr.pkg/pkg_install_rpm.subr +++ b/subr.pkg/pkg_install_rpm.subr @@ -5,63 +5,27 @@ 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; + _pir_rc=0 _pir_url="" _pir_version="" _pir_version_rpm=""; 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 "_binary_payload w2T16.xzdio" \ - \ - --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; + ex_rtl_expand_rpm_version \ + \$_pir_url \$_pir_version \$_pir_version_rpm \ + "${PKG_BASE_DIR}/${PKG_SUBDIR}" \ + "${PKG_URL:-}" "${DEFAULT_GITROOT_HEAD}" "${PKG_URLS_GIT:-}" \ + "${PKG_VERSION:-}" || return 1; + ex_rtl_build_rpm \ + "${PKG_DESTDIR}" \ + "${PKG_NAME}" \ + "${PREFIX_RPM}" \ + "${MIDIPIX_BUILD_PWD}/etc/package.spec" \ + "${PKG_BASE_DIR}/${PKG_NAME}-${_pir_version_rpm}.spec" \ + "${BUILD_WORKDIR}" \ + "${PREFIX_RPM}/${PKG_NAME}-${_pir_version_rpm}" \ + "${_pir_url}" \ + "${_pir_version}" "${_pir_version_rpm}" || return 1; fi; return 0; -- cgit v1.2.3