summaryrefslogtreecommitdiffhomepage
path: root/subr.pkg
diff options
context:
space:
mode:
Diffstat (limited to 'subr.pkg')
-rw-r--r--subr.pkg/pkg_build.subr53
-rw-r--r--subr.pkg/pkg_build_clean.subr50
-rw-r--r--subr.pkg/pkg_clean.subr33
-rw-r--r--subr.pkg/pkg_configure.subr131
-rw-r--r--subr.pkg/pkg_configure_autotools.subr34
-rw-r--r--subr.pkg/pkg_configure_clean.subr22
-rw-r--r--subr.pkg/pkg_configure_patch.subr39
l---------subr.pkg/pkg_configure_patch_pre.subr1
-rw-r--r--subr.pkg/pkg_fetch_clean.subr26
-rw-r--r--subr.pkg/pkg_fetch_download.subr44
-rw-r--r--subr.pkg/pkg_fetch_extract.subr53
-rw-r--r--subr.pkg/pkg_install.subr38
-rw-r--r--subr.pkg/pkg_install_clean.subr16
-rw-r--r--subr.pkg/pkg_install_files.subr94
-rw-r--r--subr.pkg/pkg_install_make.subr46
-rw-r--r--subr.pkg/pkg_install_rpm.subr36
-rw-r--r--subr.pkg/pkg_install_subdirs.subr27
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