diff options
Diffstat (limited to 'subr.pkg')
-rw-r--r-- | subr.pkg/pkg_build.subr | 53 | ||||
-rw-r--r-- | subr.pkg/pkg_build_clean.subr | 50 | ||||
-rw-r--r-- | subr.pkg/pkg_clean.subr | 33 | ||||
-rw-r--r-- | subr.pkg/pkg_configure.subr | 131 | ||||
-rw-r--r-- | subr.pkg/pkg_configure_autotools.subr | 34 | ||||
-rw-r--r-- | subr.pkg/pkg_configure_clean.subr | 22 | ||||
-rw-r--r-- | subr.pkg/pkg_configure_patch.subr | 39 | ||||
l--------- | subr.pkg/pkg_configure_patch_pre.subr | 1 | ||||
-rw-r--r-- | subr.pkg/pkg_fetch_clean.subr | 26 | ||||
-rw-r--r-- | subr.pkg/pkg_fetch_download.subr | 44 | ||||
-rw-r--r-- | subr.pkg/pkg_fetch_extract.subr | 53 | ||||
-rw-r--r-- | subr.pkg/pkg_install.subr | 38 | ||||
-rw-r--r-- | subr.pkg/pkg_install_clean.subr | 16 | ||||
-rw-r--r-- | subr.pkg/pkg_install_files.subr | 94 | ||||
-rw-r--r-- | subr.pkg/pkg_install_make.subr | 46 | ||||
-rw-r--r-- | subr.pkg/pkg_install_rpm.subr | 36 | ||||
-rw-r--r-- | subr.pkg/pkg_install_subdirs.subr | 27 |
17 files changed, 743 insertions, 0 deletions
diff --git a/subr.pkg/pkg_build.subr b/subr.pkg/pkg_build.subr new file mode 100644 index 00000000..f3ec51df --- /dev/null +++ b/subr.pkg/pkg_build.subr @@ -0,0 +1,53 @@ +# +# Copyright (c) 2016, 2017, 2018, 2019, 2020, 2021, 2022, 2023 Lucía Andrea Illanes Albornoz <lucia@luciaillanes.de> +# set +o errexit -o noglob -o nounset is assumed. +# + +pkg_build() { + local _pb_group_name="${1}" _pb_pkg_name="${2}" _pb_restart_at="${3}" \ + _pb_no_autoconf="" _pb_rc=0 _pb_subdir=""; + + if ! [ -x "${PKG_CONFIGURE:-}" ]; then + _pb_no_autoconf=1; + fi; + + for _pb_subdir in ${PKG_MAKE_SUBDIRS:-:}; do + if [ "${_pb_subdir}" = ":" ]; then + _pb_subdir=""; + fi; + + # + # N.B. We only pass 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. + # + ex_rtl_make \ + "${PKG_AR}" "${PKG_CC}" "${PKG_CXX}" "${PKG_CCLD}" "${PKG_LIBTOOL}" \ + "${PKG_MAKE}" "${PKG_PKG_CONFIG}" "${PKG_RANLIB}" \ + -- \ + "${_pb_no_autoconf}" "${_pb_subdir}" \ + -- \ + "${PKG_MAKEFLAGS_BUILD:-}" "${PKG_MAKEFLAGS_BUILD_EXTRA:-}" \ + "${PKG_MAKEFLAGS_BUILD_LIST:-}" "${PKG_MAKEFLAGS_BUILD_EXTRA_LIST:-}" \ + "${PKG_MAKEFLAGS_LOADAVG:-}" "${PKG_MAKEFLAGS_PARALLELISE:-}" \ + "${PKG_MAKEFLAGS_VERBOSITY:-}" \ + -- \ + "${PKG_CFLAGS_BUILD:-}" "${PKG_CFLAGS_BUILD_EXTRA:-}" \ + "${PKG_CPPFLAGS_BUILD:-}" "${PKG_CPPFLAGS_BUILD_EXTRA:-}" \ + "${PKG_CXXFLAGS_BUILD:-}" "${PKG_CXXFLAGS_BUILD_EXTRA:-}" \ + "${PKG_LDFLAGS_BUILD:-}" "${PKG_LDFLAGS_BUILD_EXTRA:-}" \ + "${PKG_PKG_CONFIG_LIBDIR:-}" \ + -- \ + "" "" \ + ; + _pb_rc="${?}"; + + if [ "${_pb_rc}" -ne 0 ]; then + break; + fi; + done; + + return "${_pb_rc}"; +}; + +# vim:filetype=sh textwidth=0 diff --git a/subr.pkg/pkg_build_clean.subr b/subr.pkg/pkg_build_clean.subr new file mode 100644 index 00000000..c9ba0e86 --- /dev/null +++ b/subr.pkg/pkg_build_clean.subr @@ -0,0 +1,50 @@ +# +# Copyright (c) 2016, 2017, 2018, 2019, 2020, 2021, 2022, 2023 Lucía Andrea Illanes Albornoz <lucia@luciaillanes.de> +# set +o errexit -o noglob -o nounset is assumed. +# + +pkg_build_clean() { + local _pbc_group_name="${1}" _pbc_pkg_name="${2}" _pbc_restart_at="${3}" \ + _pbc_no_autoconf="" _pbc_rc=0 _pbc_subdir=""; + + if ! [ -x "${PKG_CONFIGURE:-}" ]; then + _pbc_no_autoconf=1; + fi; + + if ex_pkg_state_test "${PKG_NAME}" "build" "${_pbc_restart_at}"; then + for _pbc_subdir in ${PKG_MAKE_SUBDIRS:-:}; do + if [ "${_pbc_subdir}" = ":" ]; then + _pbc_subdir=""; + fi; + + ex_rtl_make \ + "${PKG_AR}" "${PKG_CC}" "${PKG_CXX}" "${PKG_CCLD}" "${PKG_LIBTOOL}" \ + "${PKG_MAKE}" "${PKG_PKG_CONFIG}" "${PKG_RANLIB}" \ + -- \ + "${_pbc_no_autoconf}" "${_pbc_subdir}" \ + -- \ + "${PKG_MAKEFLAGS_BUILD:-}" "${PKG_MAKEFLAGS_BUILD_EXTRA:-}" \ + "${PKG_MAKEFLAGS_BUILD_LIST:-}" "${PKG_MAKEFLAGS_BUILD_EXTRA_LIST:-}" \ + "${PKG_MAKEFLAGS_LOADAVG:-}" "${PKG_MAKEFLAGS_PARALLELISE:-}" \ + "${PKG_MAKEFLAGS_VERBOSITY:-}" \ + -- \ + "${PKG_CFLAGS_BUILD:-}" "${PKG_CFLAGS_BUILD_EXTRA:-}" \ + "${PKG_CPPFLAGS_BUILD:-}" "${PKG_CPPFLAGS_BUILD_EXTRA:-}" \ + "${PKG_CXXFLAGS_BUILD:-}" "${PKG_CXXFLAGS_BUILD_EXTRA:-}" \ + "${PKG_LDFLAGS_BUILD:-}" "${PKG_LDFLAGS_BUILD_EXTRA:-}" \ + "${PKG_PKG_CONFIG_LIBDIR:-}" \ + -- \ + "" "clean" \ + ; + _pbc_rc="${?}"; + + if [ "${_pbc_rc}" -ne 0 ]; then + break; + fi; + done; + fi; + + return 0; +}; + +# vim:filetype=sh textwidth=0 diff --git a/subr.pkg/pkg_clean.subr b/subr.pkg/pkg_clean.subr new file mode 100644 index 00000000..2046c28b --- /dev/null +++ b/subr.pkg/pkg_clean.subr @@ -0,0 +1,33 @@ +# +# Copyright (c) 2016, 2017, 2018, 2019, 2020, 2021, 2022, 2023 Lucía Andrea Illanes Albornoz <lucia@luciaillanes.de> +# set +o errexit -o noglob -o nounset is assumed. +# + +pkg_clean() { + local _pc_group_name="${1}" _pc_pkg_name="${2}" _pc_restart_at="${3}"; + + if [ "${PKG_NO_CLEAN:-0}" -eq 0 ]; then + if rtl_lmatch \$ARG_CLEAN_BUILDS "build" ","\ + && [ "${PKG_NO_CLEAN_BUILD_DIR:-0}" -eq 0 ]; then + if ! rtl_fileop rm "${PKG_BUILD_DIR}"; then + return 1; + fi; + fi; + if rtl_lmatch \$ARG_CLEAN_BUILDS "dest" ","; then + if ! rtl_fileop rm "${PKG_DESTDIR}"; then + return 1; + elif [ -e "${PKG_DESTDIR_HOST}" ]\ + && ! rtl_fileop rm "${PKG_DESTDIR_HOST}"; then + return 1; + fi; + fi; + if rtl_lmatch \$ARG_CLEAN_BUILDS "src" ","; then + if ! rtl_fileop rm "${PKG_BASE_DIR}/${PKG_SUBDIR}"; then + return 1; + fi; + fi; + fi; + return 0; +}; + +# vim:filetype=sh textwidth=0 diff --git a/subr.pkg/pkg_configure.subr b/subr.pkg/pkg_configure.subr new file mode 100644 index 00000000..229cf583 --- /dev/null +++ b/subr.pkg/pkg_configure.subr @@ -0,0 +1,131 @@ +# +# Copyright (c) 2016, 2017, 2018, 2019, 2020, 2021, 2022, 2023 Lucía Andrea Illanes Albornoz <lucia@luciaillanes.de> +# set +o errexit -o noglob -o nounset is assumed. +# + +pkgp_configure_autotools() { + local _ppca_rc=0; + + if ! [ -x "${PKG_CONFIGURE:-}" ]; then + _ppca_rc=2; + elif [ -d "${PKG_BASE_DIR}/${PKG_SUBDIR}/sofort" ]\ + || [ "${PKG_CONFIGURE_TYPE:-}" = "sofort" ]; + then + _ppca_rc=2; + else + ex_rtl_configure \ + "${PKG_AR}" "${PKG_CC}" "${PKG_CONFIGURE}" "${PKG_CXX}" "${PKG_LD}" \ + "${PKG_LIBTOOL}" "${PKG_PKG_CONFIG}" "${PKG_PYTHON:-}" "${PKG_RANLIB}" \ + -- \ + "${PKG_CONFIGURE_ARGS:-}" "${PKG_CONFIGURE_ARGS_EXTRA:-}" \ + "${PKG_CONFIGURE_ARGS_LIST:-}" "${PKG_CONFIGURE_ARGS_EXTRA_LIST:-}" \ + -- \ + "${PKG_CFLAGS_CONFIGURE:-}" "${PKG_CFLAGS_CONFIGURE_EXTRA:-}" \ + "${PKG_CPPFLAGS_CONFIGURE:-}" "${PKG_CPPFLAGS_CONFIGURE_EXTRA:-}" \ + "${PKG_CXXFLAGS_CONFIGURE:-}" "${PKG_CXXFLAGS_CONFIGURE_EXTRA:-}" \ + "${PKG_LDFLAGS_CONFIGURE:-}" "${PKG_LDFLAGS_CONFIGURE_EXTRA:-}" \ + "${PKG_PKG_CONFIG_LIBDIR:-}" \ + ; + _ppca_rc=$((${?} ? 1 : ${_ppca_rc})); + fi; + + return "${_ppca_rc}"; +}; + +pkgp_configure_cmake() { + local _ppcc_build_type="" _ppcc_rc=0 _ppcc_system_name="" _ppcc_system_processor=""; + + if [ "${PKG_CMAKE_LISTFILE:+1}" != 1 ]\ + || ! [ -e "${PKG_BASE_DIR}/${PKG_SUBDIR}/${PKG_CMAKE_LISTFILE}" ]; then + _ppcc_rc=2; + else + case "${BUILD_KIND}" in + debug) _ppcc_build_type="Debug"; ;; + release) _ppcc_build_type="Release"; ;; + *) return 1; ;; + esac; + + case "${PKG_BUILD_TYPE}" in + native) + _ppcc_system_name="Midipix"; + case "${ARCH}" in + nt32) _ppcc_system_processor="i686"; ;; + nt64) _ppcc_system_processor="x86_64"; ;; + esac; + esac; + + ex_rtl_configure_cmake \ + "${PKG_AR}" "${PKG_CC}" "${PKG_CMAKE}" "${PKG_CXX}" \ + "${PKG_LD}" "${PKG_PKG_CONFIG}" "${PKG_PYTHON:-}" "${PKG_RANLIB}" \ + -- \ + "${_ppcc_build_type}" "${PKG_BUILD_TYPE}" "${PKG_CMAKE_ARGS:-}" \ + "${PKG_CMAKE_ARGS_EXTRA:-}" "${PKG_PREFIX}" \ + "${PKG_BASE_DIR}/${PKG_SUBDIR}" "${_ppcc_system_name}" \ + "${_ppcc_system_processor}" \ + -- \ + "${PKG_CFLAGS_CONFIGURE:-}" "${PKG_CFLAGS_CONFIGURE_EXTRA:-}" \ + "${PKG_CPPFLAGS_CONFIGURE:-}" "${PKG_CPPFLAGS_CONFIGURE_EXTRA:-}" \ + "${PKG_CXXFLAGS_CONFIGURE:-}" "${PKG_CXXFLAGS_CONFIGURE_EXTRA:-}" \ + "${PKG_LDFLAGS_CONFIGURE:-}" "${PKG_LDFLAGS_CONFIGURE_EXTRA:-}" \ + "${PKG_PKG_CONFIG_LIBDIR:-}" \ + ; + _ppcc_rc=$((${?} ? 1 : ${_ppcc_rc})); + fi; + + return "${_ppcc_rc}"; +}; + +pkgp_configure_sofort() { + local _ppcs_rc=0; + + if ! [ -x "${PKG_CONFIGURE:-}" ]; then + _ppcs_rc=2; + elif ! [ -d "${PKG_BASE_DIR}/${PKG_SUBDIR}/sofort" ]\ + && ! [ "${PKG_CONFIGURE_TYPE:-}" = "sofort" ]; then + _ppcs_rc=2; + else + ex_rtl_configure_sofort \ + "${PKG_AR}" "${PKG_CC}" "${PKG_CONFIGURE}" "${PKG_CXX}" \ + "${PKG_LD}" "${PKG_RANLIB}" \ + -- \ + "${PKG_NATIVE_AR:-}" "${PKG_NATIVE_CC:-}" "${PKG_NATIVE_CXX:-}" \ + "${PKG_NATIVE_LD:-}" "${PKG_NATIVE_RANLIB:-}" \ + -- \ + "${PKG_CONFIGURE_ARGS:-}" "${PKG_CONFIGURE_ARGS_EXTRA:-}" \ + -- \ + "${PKG_CFLAGS_CONFIGURE:-}" "${PKG_CFLAGS_CONFIGURE_EXTRA:-}" \ + "${PKG_CPPFLAGS_CONFIGURE:-}" "${PKG_CPPFLAGS_CONFIGURE_EXTRA:-}" \ + "${PKG_CXXFLAGS_CONFIGURE:-}" "${PKG_CXXFLAGS_CONFIGURE_EXTRA:-}" \ + "${PKG_LDFLAGS_CONFIGURE:-}" "${PKG_LDFLAGS_CONFIGURE_EXTRA:-}" \ + -- \ + "${PKG_SOFORT_NATIVE_CFLAGS:-}" "${PKG_SOFORT_NATIVE_CFLAGS_EXTRA:-}" \ + "${PKG_SOFORT_NATIVE_CPPFLAGS:-}" "${PKG_SOFORT_NATIVE_CPPFLAGS_EXTRA:-}" \ + "${PKG_SOFORT_NATIVE_CXXFLAGS:-}" "${PKG_SOFORT_NATIVE_CXXFLAGS_EXTRA:-}" \ + "${PKG_SOFORT_NATIVE_LDFLAGS:-}" "${PKG_SOFORT_NATIVE_LDFLAGS_EXTRA:-}" \ + ; + _ppcs_rc=$((${?} ? 1 : ${_ppcs_rc})); + fi; + + return "${_ppcs_rc}"; +}; + +pkg_configure() { + local _pc_group_name="${1}" _pc_pkg_name="${2}" _pc_restart_at="${3}" \ + _pc_rc=0 _pc_type=""; + + for _pc_type in autotools cmake sofort; do + if [ "${PKG_CONFIGURE_TYPE:+1}" = 1 ]\ + && [ "${PKG_CONFIGURE_TYPE}" != "${_pc_type}" ]; then + continue; + else + pkgp_configure_${_pc_type} "${@}"; _pc_rc="${?}"; + case "${_pc_rc}" in + 0|1) return "${_pc_rc}"; ;; + 2) _pc_rc=0; continue; ;; + esac; + fi; + done; + return "${_pc_rc}"; +}; + +# vim:filetype=sh textwidth=0 diff --git a/subr.pkg/pkg_configure_autotools.subr b/subr.pkg/pkg_configure_autotools.subr new file mode 100644 index 00000000..0a7a62d1 --- /dev/null +++ b/subr.pkg/pkg_configure_autotools.subr @@ -0,0 +1,34 @@ +# +# Copyright (c) 2016, 2017, 2018, 2019, 2020, 2021, 2022, 2023 Lucía Andrea Illanes Albornoz <lucia@luciaillanes.de> +# set +o errexit -o noglob -o nounset is assumed. +# + +pkg_configure_autotools() { + local _pca_group_name="${1}" _pca_pkg_name="${2}" _pca_restart_at="${3}" \ + _pca_rc=0; + + if [ "${PKG_CONFIGURE_TYPE:+1}" = 1 ]\ + && [ "${PKG_CONFIGURE_TYPE}" != "autotools" ]; then + _pca_rc=0; + else + ex_rtl_configure_prepare \ + "${PKG_BUILD_TYPE}" \ + "${PKG_BUILD_DIR}" \ + "${PKG_CONFIG_CACHE:-}" \ + "${PKG_CONFIG_CACHE_LOCAL:-}" \ + "${PKG_CONFIG_CACHE_EXTRA:-}" \ + "${MIDIPIX_BUILD_PWD}/etc/config.guess" \ + "${MIDIPIX_BUILD_PWD}/etc/config.sub" \ + "${PKG_AUTOCONF_CONFIG_GUESS:-copy}" \ + "${PKG_FORCE_AUTORECONF:-0}" \ + "${PKG_BASE_DIR}/${PKG_SUBDIR}" \ + "${PKG_PKG_CONFIG:-}" \ + "${PKG_PKG_CONFIG_LIBDIRG:-}" \ + "${PKG_PREFIX}"; + _pca_rc="${?}"; + fi; + + return "${_pca_rc}"; +}; + +# vim:filetype=sh textwidth=0 diff --git a/subr.pkg/pkg_configure_clean.subr b/subr.pkg/pkg_configure_clean.subr new file mode 100644 index 00000000..3dba1036 --- /dev/null +++ b/subr.pkg/pkg_configure_clean.subr @@ -0,0 +1,22 @@ +# +# Copyright (c) 2016, 2017, 2018, 2019, 2020, 2021, 2022, 2023 Lucía Andrea Illanes Albornoz <lucia@luciaillanes.de> +# set +o errexit -o noglob -o nounset is assumed. +# + +pkg_configure_clean() { + local _pcc_group_name="${1}" _pcc_pkg_name="${2}" _pcc_restart_at="${3}"; + + if ex_pkg_state_test \ + "${_pcc_pkg_name}" \ + "configure_patch_pre,configure_autotools,configure_patch,configure" \ + "${_pcc_restart_at}"\ + && [ "${PKG_BUILD_DIR:-}" != "${PKG_SUBDIR:-}" ]; + then + rtl_fileop rm "${PKG_BUILD_DIR}" || return 1; + rtl_fileop mkdir "${PKG_BUILD_DIR}" || return 1; + rtl_fileop cd "${PKG_BUILD_DIR}" || return 1; + fi; + return 0; +}; + +# vim:filetype=sh textwidth=0 diff --git a/subr.pkg/pkg_configure_patch.subr b/subr.pkg/pkg_configure_patch.subr new file mode 100644 index 00000000..62c4f382 --- /dev/null +++ b/subr.pkg/pkg_configure_patch.subr @@ -0,0 +1,39 @@ +# +# Copyright (c) 2016, 2017, 2018, 2019, 2020, 2021, 2022, 2023 Lucía Andrea Illanes Albornoz <lucia@luciaillanes.de> +# set +o errexit -o noglob -o nounset is assumed. +# + +pkg_configure_patch_pre() { + pkg_configure_patch "${@}" "patches_pre"; +}; + +pkg_configure_patch() { + local _pcp_group_name="${1}" _pcp_pkg_name="${2}" \ + _pcp_restart_at="${3}" _pcp_type="${4:-patches}" \ + _pcp_patch_cwd="" _pcp_strip_count=0; + + if [ -x "${PKG_BASE_DIR}/${PKG_SUBDIR}/srcprep.sh" ]; then + return 0; + fi; + + if [ "${PKG_FNAME:+1}" = 1 ]\ + && [ "${PKG_URLS_GIT:+1}" = 1 ]; + then + _pcp_patch_cwd="${PKG_BASE_DIR}"; + _pcp_strip_count=0; + else + _pcp_patch_cwd="${PKG_BASE_DIR}/${PKG_SUBDIR}"; + _pcp_strip_count=1; + fi; + + if ! rtl_patch_files \ + "${_pcp_patch_cwd}" "${_pcp_strip_count}" \ + ex_pkg_get_default -- -- \ + "${_pcp_pkg_name}" "${PKG_VERSION:-}" "${_pcp_type}"; + then + return 1; + fi; + return 0; +}; + +# vim:filetype=sh textwidth=0 diff --git a/subr.pkg/pkg_configure_patch_pre.subr b/subr.pkg/pkg_configure_patch_pre.subr new file mode 120000 index 00000000..f26702c8 --- /dev/null +++ b/subr.pkg/pkg_configure_patch_pre.subr @@ -0,0 +1 @@ +pkg_configure_patch.subr
\ No newline at end of file diff --git a/subr.pkg/pkg_fetch_clean.subr b/subr.pkg/pkg_fetch_clean.subr new file mode 100644 index 00000000..0ac5c970 --- /dev/null +++ b/subr.pkg/pkg_fetch_clean.subr @@ -0,0 +1,26 @@ +# +# Copyright (c) 2016, 2017, 2018, 2019, 2020, 2021, 2022, 2023 Lucía Andrea Illanes Albornoz <lucia@luciaillanes.de> +# set +o errexit -o noglob -o nounset is assumed. +# + +pkg_fetch_clean() { + local _pfc_group_name="${1}" _pfc_pkg_name="${2}" _pfc_restart_at="${3}" \ + _pfc_dname=""; + + if [ "${PKG_URLS_GIT:+1}" = 1 ]; then + if [ "${PKG_SUBDIR:+1}" = 1 ]\ + && [ "${PKG_SUBDIR}" != "${PKG_URLS_GIT%%=*}" ]; then + rtl_fileop rm "${PKG_SUBDIR}"; + fi; + + for _pfc_dname in ${PKG_URLS_GIT}; do + _pfc_dname="${_pfc_dname%%=*}"; rtl_fileop rm "${_pfc_dname}"; + done; + elif [ "${PKG_SUBDIR:+1}" = 1 ]; then + rtl_fileop rm "${PKG_SUBDIR}"; + fi; + + return 0; +}; + +# vim:filetype=sh textwidth=0 diff --git a/subr.pkg/pkg_fetch_download.subr b/subr.pkg/pkg_fetch_download.subr new file mode 100644 index 00000000..455f32ed --- /dev/null +++ b/subr.pkg/pkg_fetch_download.subr @@ -0,0 +1,44 @@ +# +# Copyright (c) 2016, 2017, 2018, 2019, 2020, 2021, 2022, 2023 Lucía Andrea Illanes Albornoz <lucia@luciaillanes.de> +# set +o errexit -o noglob -o nounset is assumed. +# + +pkg_fetch_download() { + local _pfd_group_name="${1}" _pfd_pkg_name="${2}" _pfd_restart_at="${3}"; + + if [ "${ARG_FETCH_FORCE:-}" != "offline" ]; then + if [ "${PKG_URL:+1}" = 1 ]; then + if ! rtl_fetch_dlcache_subdir \ + "${BUILD_DLCACHEDIR}" "${PKG_NAME}" \ + "${PKG_INHERIT_FROM:-}"; + then + return 1; + elif ! rtl_fetch_url_wget \ + "${PKG_URL}" "${PKG_SHA256SUM}" "${BUILD_DLCACHEDIR}/${PKG_NAME}"\ + "${PKG_FNAME}" "${PKG_NAME}" "${PKG_MIRRORS:-}"; then + return 1; + fi; + fi; + + if [ "${PKG_URLS_GIT:+1}" = 1 ]; then + if ! rtl_fetch_dlcache_subdir \ + "${BUILD_DLCACHEDIR}" "${PKG_NAME}" \ + "${PKG_INHERIT_FROM:-}"; + then + return 1; + elif ! rtl_fetch_urls_git \ + "${BUILD_DLCACHEDIR}/${PKG_NAME}" "${DEFAULT_GIT_ARGS}" "${PKG_BASE_DIR}"\ + "${PKG_NAME}" "${PKG_MIRRORS_GIT:-}" ${PKG_URLS_GIT}; then + return 1; + fi; + fi; + + rtl_fetch_clean_dlcache \ + "${BUILD_DLCACHEDIR}" "${PKG_NAME}" \ + "${PKG_FNAME:-}" "${PKG_URLS_GIT:-}"; + fi; + + return 0; +}; + +# vim:filetype=sh textwidth=0 diff --git a/subr.pkg/pkg_fetch_extract.subr b/subr.pkg/pkg_fetch_extract.subr new file mode 100644 index 00000000..14839ce5 --- /dev/null +++ b/subr.pkg/pkg_fetch_extract.subr @@ -0,0 +1,53 @@ +# +# Copyright (c) 2016, 2017, 2018, 2019, 2020, 2021, 2022, 2023 Lucía Andrea Illanes Albornoz <lucia@luciaillanes.de> +# set +o errexit -o noglob -o nounset is assumed. +# + +pkgp_fetch_extract_type() { + local _ppfet_fname="${1}" _ppfet_rtype="${2#\$}"; + + if [ "${1##*.tar.}" != "${1}" ]; then + eval ${_ppfet_rtype}='${1##*.tar.}'; + elif [ "${1##*.t}" != "${1}" ]; then + eval ${_ppfet_rtype}='${1##*.t}'; + fi; + return 0; +}; + +pkg_fetch_extract() { + local _pfe_group_name="${1}" _pfe_pkg_name="${2}" _pfe_restart_at="${3}" \ + _pfe_type=""; + + if [ "${PKG_URL:+1}" = 1 ]; then + _pfe_oldpwd="${PWD}"; + + if ! rtl_fileop cd "${PKG_BASE_DIR}"\ + || ! rtl_fileop rm "${PKG_BASE_DIR}/${PKG_SUBDIR}"; then + rtl_fileop cd "${_pfe_oldpwd}"; return 1; + else + pkgp_fetch_extract_type "${PKG_NAME}" \$_pfe_type; + + case "${_pfe_type}" in + bz2) bunzip2 -d < "${BUILD_DLCACHEDIR}/${PKG_NAME}/${PKG_FNAME}" | tar -C "${PKG_BASE_DIR}" -xf -; ;; + gz) gunzip -d < "${BUILD_DLCACHEDIR}/${PKG_NAME}/${PKG_FNAME}" | tar -C "${PKG_BASE_DIR}" -xf -; ;; + lz) lzip -d < "${BUILD_DLCACHEDIR}/${PKG_NAME}/${PKG_FNAME}" | tar -C "${PKG_BASE_DIR}" -xf -; ;; + xz) xz -d < "${BUILD_DLCACHEDIR}/${PKG_NAME}/${PKG_FNAME}" | tar -C "${PKG_BASE_DIR}" -xf -; ;; + *) tar -C "${PKG_BASE_DIR}" -xf "${BUILD_DLCACHEDIR}/${PKG_NAME}/${PKG_FNAME}"; ;; + esac; + + if [ "${?}" -ne 0 ]; then + rtl_fileop cd "${_pfe_oldpwd}"; return 1; + else + rtl_fileop cd "${_pfe_oldpwd}"; + fi; + fi; + fi; + + if [ -x "${PKG_BASE_DIR}/${PKG_SUBDIR}/srcprep.sh" ]; then + "${PKG_BASE_DIR}/${PKG_SUBDIR}/srcprep.sh"; + fi; + + return 0; +}; + +# vim:filetype=sh textwidth=0 diff --git a/subr.pkg/pkg_install.subr b/subr.pkg/pkg_install.subr new file mode 100644 index 00000000..8e795fa4 --- /dev/null +++ b/subr.pkg/pkg_install.subr @@ -0,0 +1,38 @@ +# +# Copyright (c) 2016, 2017, 2018, 2019, 2020, 2021, 2022, 2023 Lucía Andrea Illanes Albornoz <lucia@luciaillanes.de> +# set +o errexit -o noglob -o nounset is assumed. +# + +pkg_install() { + local _group_name="${1}" _pkg_name="${2}" _restart_at="${3}" \ + _destdir="" _destdir_prefix="" _pkglist_name=""; + + if ! rtl_fileop mkdir "${PKG_PREFIX}"; then + return 1; + else for _destdir in "${PKG_DESTDIR}:${PKG_PREFIX}" "${PKG_DESTDIR_HOST}:${PREFIX}"; do + rtl_lassignV "_destdir _destdir_prefix" ":" "${_destdir}"; + if [ -e "${_destdir}" ]; then + (set +o errexit -o noglob; rtl_flock_acquire 4 || exit "${?}"; + trap "rm -f \"${BUILD_WORKDIR}/install.lock\"" EXIT; + if ! tar -C "${_destdir}" -cpf - . | tar -C "${_destdir_prefix}" --overwrite -xpf -; then + exit 1; + fi) 4<>"${BUILD_WORKDIR}/install.lock"; + fi; + done; + if [ "${?}" -ne 0 ]; then + return 1; + elif [ "${PKG_PKGLIST_DISABLE:-0}" -eq 0 ]; then + if [ ! -e "${PREFIX}/pkglist.${PKG_BUILD_TYPE}" ]\ + && ! touch "${PREFIX}/pkglist.${PKG_BUILD_TYPE}"; then + return 1; + else + _pkglist_name="${PKG_BASE_DIR##*/}"; _pkglist_name="${_pkglist_name%%-*}"; + if ! printf "%s\n" "${_pkglist_name}" >> "${PREFIX}/pkglist.${PKG_BUILD_TYPE}"; then + return 1; + fi; + fi; + fi; + fi; +}; + +# vim:filetype=sh textwidth=0 diff --git a/subr.pkg/pkg_install_clean.subr b/subr.pkg/pkg_install_clean.subr new file mode 100644 index 00000000..7a045d73 --- /dev/null +++ b/subr.pkg/pkg_install_clean.subr @@ -0,0 +1,16 @@ +# +# Copyright (c) 2016, 2017, 2018, 2019, 2020, 2021, 2022, 2023 Lucía Andrea Illanes Albornoz <lucia@luciaillanes.de> +# set +o errexit -o noglob -o nounset is assumed. +# + +pkg_install_clean() { + local _pic_group_name="${1}" _pic_pkg_name="${2}" _pic_restart_at="${3}"; + + if [ "${PKG_DESTDIR:+1}" = 1 ]; then + rtl_fileop rm "${PKG_DESTDIR}" || return 1; + rtl_fileop mkdir "${PKG_DESTDIR}" || return 1; + fi; + return 0; +}; + +# vim:filetype=sh textwidth=0 diff --git a/subr.pkg/pkg_install_files.subr b/subr.pkg/pkg_install_files.subr new file mode 100644 index 00000000..f37257c6 --- /dev/null +++ b/subr.pkg/pkg_install_files.subr @@ -0,0 +1,94 @@ +# +# Copyright (c) 2016, 2017, 2018, 2019, 2020, 2021, 2022, 2023 Lucía Andrea Illanes Albornoz <lucia@luciaillanes.de> +# set +o errexit -o noglob -o nounset is assumed. +# + +pkgp_install_files() { + if [ "${PKG_INSTALL_FILES:+1}" = 1 ]; then + if ! rtl_install -v "${PKG_DESTDIR}" ${PKG_INSTALL_FILES}; then + return 1; + fi; + fi; + return 0; +}; + +pkgp_install_files_v2() { + local _ppifv2_status="" _ppifv2_vflag=""; + + if [ "${PKG_INSTALL_FILES_V2:+1}" = 1 ]; then + if rtl_lmatch \$ARG_VERBOSE_TAGS "install" ","; then + _ppifv2_vflag="-v"; + fi; + if ! rtl_install_v2 \ + \$_ppifv2_status \ + -p "_builddir=${PKG_BUILD_DIR}" \ + -p "_destdir=${PKG_BASE_DIR}/${PKG_DESTDIR}" \ + -p "_destdir_host=${PKG_BASE_DIR}/${PKG_DESTDIR_HOST}" \ + -p "_files=${MIDIPIX_BUILD_PWD}/files/${PKG_NAME}" \ + -p "_name=${PKG_NAME}" \ + -p "_prefix=${PKG_PREFIX}" \ + -p "_prefix_host=${PREFIX}" \ + -p "_prefix_native=${PREFIX_NATIVE}" \ + -p "_subdir=${PKG_BASE_DIR}/${PKG_SUBDIR}" \ + -p "_target=${PKG_TARGET}" \ + -p "_version=${PKG_VERSION:-}" \ + -p "_workdir=${BUILD_WORKDIR}" \ + ${_ppifv2_vflag} -- "${PKG_DESTDIR}" \ + "${PKG_INSTALL_FILES_V2}"; + then + return 1; + fi; + fi; +}; + +pkgp_install_files_libraries() { + if [ "${PKG_BUILD_TYPE}" != "host" ]; then + ex_rtl_install_library_archives "${PKG_DESTDIR}" "${PKG_TARGET}-mdso" || return 1; + fi; + if [ "${PKG_NO_PURGE_LA_FILES:-0}" -eq 0 ]; then + ex_rtl_purge_la_files "${PKG_DESTDIR}" || return 1; + fi; + return 0; +}; + +pkgp_install_files_perms() { + rtl_set_perms_treeV \ + 0755 0755 0644 \ + "${PKG_DESTDIR}" \ + "${PKG_DESTDIR_HOST}"; + return "${?}"; +}; + +pkgp_install_files_strip() { + local _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 \ + "${PKG_TARGET}-strip" \ + "${PKG_DESTDIR}" \ + -- \ + rtl_log_msgV "pkg_strip" "${MSG_pkg_strip}"; + _ppifs_rc="${?}"; + fi; + + return "${_ppifs_rc}"; +}; + +pkg_install_files() { + local _pif_group_name="${1}" _pif_pkg_name="${2}" _pif_restart_at="${3}"; + + if ! pkgp_install_files\ + || ! pkgp_install_files_v2\ + || ! pkgp_install_files_perms\ + || ! ex_rtl_fixup_pkgconfig_paths "${PKG_DESTDIR}"\ + || ! pkgp_install_files_strip\ + || ! pkgp_install_files_libraries; + 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 new file mode 100644 index 00000000..1fb896d7 --- /dev/null +++ b/subr.pkg/pkg_install_make.subr @@ -0,0 +1,46 @@ +# +# Copyright (c) 2016, 2017, 2018, 2019, 2020, 2021, 2022, 2023 Lucía Andrea Illanes Albornoz <lucia@luciaillanes.de> +# set +o errexit -o noglob -o nounset is assumed. +# + +pkg_install_make() { + local _pim_group_name="${1}" _pim_pkg_name="${2}" _pim_restart_at="${3}" \ + _pim_ranlib="" _pim_rc=0 _pim_subdir=""; + + for _pim_subdir in ${PKG_MAKE_SUBDIRS:-:}; do + if [ "${PKG_RANLIB_INSTALL:+1}" = 1 ]; then + _pim_ranlib="${PKG_RANLIB_INSTALL}"; + else + _pim_ranlib="${PKG_RANLIB}"; + fi; + if [ "${_pim_subdir}" = ":" ]; then + _pim_subdir=""; + fi; + + ex_rtl_make \ + "${PKG_AR}" "${PKG_CC}" "${PKG_CXX}" "${PKG_CCLD}" "${PKG_LIBTOOL}" \ + "${PKG_MAKE}" "${PKG_PKG_CONFIG}" "${_pim_ranlib}" \ + -- \ + 1 "${_pim_subdir}" \ + -- \ + "${PKG_MAKEFLAGS_INSTALL:-}" "${PKG_MAKEFLAGS_INSTALL_EXTRA:-}" \ + "${PKG_MAKEFLAGS_INSTALL_LIST:-}" "${PKG_MAKEFLAGS_INSTALL_EXTRA_LIST:-}" \ + "${PKG_MAKEFLAGS_LOADAVG:-}" "${PKG_MAKEFLAGS_PARALLELISE:-}" \ + "${PKG_MAKEFLAGS_VERBOSITY:-}" \ + -- \ + "" "" "" "" "" "" "" "" "" \ + -- \ + "${PKG_MAKE_INSTALL_VNAME:-DESTDIR}=${PKG_DESTDIR}/" \ + "${PKG_INSTALL_TARGET:-install}" \ + ; + _pim_rc="${?}"; + + if [ "${_pim_rc}" -ne 0 ]; then + return 1; + fi; + done; + + return 0; +}; + +# vim:filetype=sh textwidth=0 diff --git a/subr.pkg/pkg_install_rpm.subr b/subr.pkg/pkg_install_rpm.subr new file mode 100644 index 00000000..83b6841f --- /dev/null +++ b/subr.pkg/pkg_install_rpm.subr @@ -0,0 +1,36 @@ +# +# Copyright (c) 2016, 2017, 2018, 2019, 2020, 2021, 2022, 2023 Lucía Andrea Illanes Albornoz <lucia@luciaillanes.de> +# 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_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 + 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}" \ + "${DEFAULT_RPM_JOBS_MAX}" "${DEFAULT_RPM_JOBS_SEMAPHORE}" \ + "${DEFAULT_RPM_JOBS_WAIT}" \ + "${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; +}; + +# vim:filetype=sh textwidth=0 diff --git a/subr.pkg/pkg_install_subdirs.subr b/subr.pkg/pkg_install_subdirs.subr new file mode 100644 index 00000000..f36c4b6d --- /dev/null +++ b/subr.pkg/pkg_install_subdirs.subr @@ -0,0 +1,27 @@ +# +# Copyright (c) 2016, 2017, 2018, 2019, 2020, 2021, 2022, 2023 Lucía Andrea Illanes Albornoz <lucia@luciaillanes.de> +# set +o errexit -o noglob -o nounset is assumed. +# + +pkg_install_subdirs() { + local _pis_group_name="${1}" _pkg_name="${2}" _restart_at="${3}" \ + _pis_gspec=""; + + for _pis_gspec in \ + "${PKG_INSTALL_FILES_DESTDIR:-}" \ + "${PKG_INSTALL_FILES_DESTDIR_EXTRA:-}"; do + if ! rtl_install "${PKG_DESTDIR}" ${_pis_gspec}; then + return 1; + fi; + done; + + if [ "${PKG_PREFIX%/}" = "${PREFIX_NATIVE%/}" ]; then + if ! rtl_install "${PKG_DESTDIR}/${DEFAULT_TARGET}" ${PKG_INSTALL_FILES_DESTDIR}; then + return 1; + fi; + fi; + + return 0; +}; + +# vim:filetype=sh textwidth=0 |