summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--groups.d/000.host_tools.group2
-rw-r--r--groups.d/010.host_deps.group2
-rw-r--r--groups.d/020.host_deps_rpm.group2
-rw-r--r--groups.d/030.cross_toolchain.group2
-rw-r--r--groups.d/040.host_toolchain.group2
-rw-r--r--groups.d/100.native_tools.group2
-rw-r--r--groups.d/110.native_toolchain.group2
-rw-r--r--groups.d/120.native_runtime.group2
-rw-r--r--groups.d/200.native_packages.group2
-rw-r--r--groups.d/800.minipix.group2
-rw-r--r--groups.d/999.dist.group3
-rw-r--r--groups.d/dev_packages.group3
-rw-r--r--subr.ex/ex_pkg.subr106
13 files changed, 71 insertions, 61 deletions
diff --git a/groups.d/000.host_tools.group b/groups.d/000.host_tools.group
index 31fe06c0..b00996a8 100644
--- a/groups.d/000.host_tools.group
+++ b/groups.d/000.host_tools.group
@@ -7,4 +7,6 @@ HOST_TOOLS_MAKEFLAGS_INSTALL="prefix= PREFIX=";
HOST_TOOLS_PREFIX="${PREFIX}";
HOST_TOOLS_RPM_DISABLE=1;
+ex_pkg_register_group "host_tools" "${RTL_FILEOP_SOURCE_FNAME}";
+
# vim:filetype=sh textwidth=0
diff --git a/groups.d/010.host_deps.group b/groups.d/010.host_deps.group
index 1f188df3..6c7c8280 100644
--- a/groups.d/010.host_deps.group
+++ b/groups.d/010.host_deps.group
@@ -13,4 +13,6 @@ HOST_DEPS_PKG_CONFIG="${PREFIX}/bin/pkgconf";
HOST_DEPS_PREFIX="${PREFIX}";
HOST_DEPS_TOOLS_RPM_DISABLE=1;
+ex_pkg_register_group "host_deps" "${RTL_FILEOP_SOURCE_FNAME}";
+
# vim:filetype=sh textwidth=0
diff --git a/groups.d/020.host_deps_rpm.group b/groups.d/020.host_deps_rpm.group
index c3ebf575..6376d247 100644
--- a/groups.d/020.host_deps_rpm.group
+++ b/groups.d/020.host_deps_rpm.group
@@ -13,4 +13,6 @@ HOST_DEPS_RPM_PKG_CONFIG="${PREFIX}/bin/pkgconf";
HOST_DEPS_RPM_PREFIX="${PREFIX}";
HOST_DEPS_RPM_RPM_DISABLE=1;
+ex_pkg_register_group "host_deps_rpm" "${RTL_FILEOP_SOURCE_FNAME}";
+
# vim:filetype=sh textwidth=0
diff --git a/groups.d/030.cross_toolchain.group b/groups.d/030.cross_toolchain.group
index 111e388d..148f93d5 100644
--- a/groups.d/030.cross_toolchain.group
+++ b/groups.d/030.cross_toolchain.group
@@ -9,4 +9,6 @@ CROSS_TOOLCHAIN_PKG_CONFIG="${PREFIX}/bin/pkgconf";
CROSS_TOOLCHAIN_PREFIX="${PREFIX_LOCAL}";
CROSS_TOOLCHAIN_RPM_DISABLE=1;
+ex_pkg_register_group "cross_toolchain" "${RTL_FILEOP_SOURCE_FNAME}";
+
# vim:filetype=sh textwidth=0
diff --git a/groups.d/040.host_toolchain.group b/groups.d/040.host_toolchain.group
index c7657dc1..649feba1 100644
--- a/groups.d/040.host_toolchain.group
+++ b/groups.d/040.host_toolchain.group
@@ -9,4 +9,6 @@ HOST_TOOLCHAIN_PKG_CONFIG="${PREFIX}/bin/pkgconf";
HOST_TOOLCHAIN_PREFIX="${PREFIX_CROSS}";
HOST_TOOLCHAIN_RPM_DISABLE=1;
+ex_pkg_register_group "host_toolchain" "${RTL_FILEOP_SOURCE_FNAME}";
+
# vim:filetype=sh textwidth=0
diff --git a/groups.d/100.native_tools.group b/groups.d/100.native_tools.group
index 70e5df5f..eea03fef 100644
--- a/groups.d/100.native_tools.group
+++ b/groups.d/100.native_tools.group
@@ -7,4 +7,6 @@ NATIVE_TOOLS_MAKEFLAGS_INSTALL="PREFIX= prefix=";
NATIVE_TOOLS_PKG_CONFIG_LIBDIR="${PREFIX_NATIVE}/lib/pkgconfig";
NATIVE_TOOLS_PREFIX="${PREFIX_NATIVE}";
+ex_pkg_register_group "native_tools" "${RTL_FILEOP_SOURCE_FNAME}";
+
# vim:filetype=sh textwidth=0
diff --git a/groups.d/110.native_toolchain.group b/groups.d/110.native_toolchain.group
index 014ed809..bc197645 100644
--- a/groups.d/110.native_toolchain.group
+++ b/groups.d/110.native_toolchain.group
@@ -5,4 +5,6 @@ NATIVE_TOOLCHAIN_CONFIGURE_ARGS="--disable-nls --host=${DEFAULT_TARGET} --progra
NATIVE_TOOLCHAIN_GROUP_DEPENDS="host_deps host_deps_rpm cross_toolchain host_toolchain host_tools native_tools";
NATIVE_TOOLCHAIN_PREFIX="${PREFIX_NATIVE}";
+ex_pkg_register_group "native_toolchain" "${RTL_FILEOP_SOURCE_FNAME}";
+
# vim:filetype=sh textwidth=0
diff --git a/groups.d/120.native_runtime.group b/groups.d/120.native_runtime.group
index 153a40f1..89986cda 100644
--- a/groups.d/120.native_runtime.group
+++ b/groups.d/120.native_runtime.group
@@ -9,4 +9,6 @@ NATIVE_RUNTIME_ENV_VARS_EXTRA="CFLAGS_PATH=-I${PREFIX_NATIVE}/include:LDFLAGS_PA
NATIVE_RUNTIME_GROUP_DEPENDS="host_deps host_deps_rpm cross_toolchain host_toolchain host_tools native_toolchain native_tools";
NATIVE_RUNTIME_PREFIX="${PREFIX_NATIVE}";
+ex_pkg_register_group "native_runtime" "${RTL_FILEOP_SOURCE_FNAME}";
+
# vim:filetype=sh textwidth=0
diff --git a/groups.d/200.native_packages.group b/groups.d/200.native_packages.group
index 845117c2..f64b924c 100644
--- a/groups.d/200.native_packages.group
+++ b/groups.d/200.native_packages.group
@@ -14,4 +14,6 @@ NATIVE_PACKAGES_PKG_CONFIG_LIBDIR="${PREFIX_NATIVE}/lib/pkgconfig";
NATIVE_PACKAGES_PREFIX="${PREFIX_NATIVE}";
NATIVE_PACKAGES_PYTHON="${PREFIX}/bin/python2";
+ex_pkg_register_group "native_packages" "${RTL_FILEOP_SOURCE_FNAME}";
+
# vim:filetype=sh textwidth=0
diff --git a/groups.d/800.minipix.group b/groups.d/800.minipix.group
index b24c863f..5a11ec0f 100644
--- a/groups.d/800.minipix.group
+++ b/groups.d/800.minipix.group
@@ -15,4 +15,6 @@ MINIPIX_PKGLIST_DISABLE=1;
MINIPIX_PREFIX="${PREFIX}/minipix_dist";
MINIPIX_RPM_DISABLE=1;
+ex_pkg_register_group "minipix" "${RTL_FILEOP_SOURCE_FNAME}";
+
# vim:filetype=sh textwidth=0
diff --git a/groups.d/999.dist.group b/groups.d/999.dist.group
index c980cf47..27ac86b9 100644
--- a/groups.d/999.dist.group
+++ b/groups.d/999.dist.group
@@ -4,6 +4,9 @@
DIST_FORCE=1;
DIST_NO_LOG_VARS=1;
DIST_PACKAGES="dist_gitref dist_minipix dist_zipdist";
+
: ${PKG_DIST_ZIPDIST_DEPENDS:="dist_minipix"};
+ex_pkg_register_group "dist" "${RTL_FILEOP_SOURCE_FNAME}";
+
# vim:filetype=sh textwidth=0
diff --git a/groups.d/dev_packages.group b/groups.d/dev_packages.group
index e4cbd8f4..cb2fbca2 100644
--- a/groups.d/dev_packages.group
+++ b/groups.d/dev_packages.group
@@ -1,7 +1,6 @@
#
# Build group dev_packages
#
-GROUP_AUTO=0;
rtl_lconcat2 \$DEV_PACKAGES_CFLAGS_CONFIGURE \$DEFAULT_CFLAGS "--sysroot=${PREFIX_NATIVE}";
rtl_lconcat2 \$DEV_PACKAGES_CXXFLAGS_CONFIGURE \$DEFAULT_CXXFLAGS "--sysroot=${PREFIX_NATIVE}";
DEV_PACKAGES_CONFIG_CACHE_LOCAL="${CONFIG_CACHE_GNULIB}";
@@ -16,4 +15,6 @@ DEV_PACKAGES_PKG_CONFIG_LIBDIR="${PREFIX_NATIVE}/lib/pkgconfig";
DEV_PACKAGES_PREFIX="${PREFIX_NATIVE}";
DEV_PACKAGES_PYTHON="${PREFIX}/bin/python2";
+ex_pkg_register_group "dev_packages" "${RTL_FILEOP_SOURCE_FNAME}" "noauto";
+
# vim:filetype=sh textwidth=0
diff --git a/subr.ex/ex_pkg.subr b/subr.ex/ex_pkg.subr
index 6c020702..94dbf6c8 100644
--- a/subr.ex/ex_pkg.subr
+++ b/subr.ex/ex_pkg.subr
@@ -3,6 +3,7 @@
# set +o errexit -o noglob -o nounset is assumed.
#
+
#
# ex_pkg_check_depends() - check single named package for unsatisfied dependencies
# @_checkfl: enable (1) or inhibit (0) dependency expansion
@@ -249,74 +250,21 @@ ex_pkg_load_vars() {
# Returns: zero (0) on success, non-zero (>0) on failure.
#
ex_pkg_load_groups() {
- local _eplg_rgroups="${1#\$}" _eplg_rgroups_noauto="${2#\$}" \
- _eplg_build_groups="" _eplg_build_groups_noauto="" \
- _eplg_fname="" _eplg_group="" _eplg_group_noautofl=0 \
- _eplg_group_target="" _eplg_group_target_uc="" \
- _eplg_group_target_appendfl=0 _eplg_groups="" _eplg_pkg_name="" \
- _eplg_pkg_names="";
+ local _eplg_rgroups="${1#\$}" _eplg_rgroups_noauto="${2#\$}" \
+ _eplg_build_groups="" _eplg_build_groups_noauto="" _eplg_fname="";
+ EXP_PKG_REGISTER_GROUP_RGROUPS="${_eplg_rgroups}";
+ EXP_PKG_REGISTER_GROUP_RGROUPS_NOAUTO="${_eplg_rgroups_noauto}";
for _eplg_fname in $(find ./groups.d -name *.group | sort); do
- rtl_fileop source "${_eplg_fname}";
-
- _eplg_group="${_eplg_fname##*/}";
- _eplg_group="${_eplg_group%.group}";
- _eplg_group="${_eplg_group#*.}";
-
- if [ "${GROUP_TARGET_APPEND:+1}" = 1 ]; then
- _eplg_group_target="${GROUP_TARGET_APPEND}";
- _eplg_group_target_appendfl=1;
- unset GROUP_TARGET_APPEND;
- else
- _eplg_group_target="${_eplg_group}";
- _eplg_group_target_appendfl=0;
- fi;
-
- _eplg_group_noautofl=0;
- if ! rtl_lmatch \$_eplg_groups "${_eplg_group_target}"; then
- rtl_lconcat \$_eplg_groups "${_eplg_group_target}";
- if eval [ \"\${GROUP_AUTO:+1}\" = 1 ]; then
- if eval [ \"\${GROUP_AUTO:-0}\" -ne 0 ]; then
- _eplg_group_noautofl=0;
- rtl_lconcat \$_eplg_build_groups "${_eplg_group_target}";
- else
- _eplg_group_noautofl=1;
- rtl_lconcat \$_eplg_build_groups_noauto "${_eplg_group_target}";
- fi;
- unset GROUP_AUTO;
- else
- rtl_lconcat \$_eplg_build_groups "${_eplg_group_target}";
- fi;
- fi;
-
- if rtl_get_var_unsafe \$_eplg_pkg_names -u "${_eplg_group}_PACKAGES"\
- && [ "${_eplg_pkg_names:+1}" = 1 ]; then
- if [ "${_eplg_group_target_appendfl}" -eq 1 ]; then
- rtl_toupper2 \$_eplg_group_target \$_eplg_group_target_uc;
- rtl_lconcat "\$${_eplg_group_target_uc}_PACKAGES" "${_eplg_pkg_names}";
- fi;
-
- if [ "${_eplg_group_noautofl}" -eq 0 ]; then
- for _eplg_pkg_name in ${_eplg_pkg_names}; do
- rtl_set_var_unsafe -u "PKG_${_eplg_pkg_name}_GROUP" "${_eplg_group}";
- rtl_set_var_unsafe -u "PKG_${_eplg_pkg_name}_GROUP_FNAME" "${_eplg_fname}";
- done;
- fi;
- fi;
+ rtl_fileop source_with_fnamevar "${_eplg_fname}";
done;
+ unset EXP_PKG_REGISTER_GROUP_RGROUPS;
+ unset EXP_PKG_REGISTER_GROUP_RGROUPS_NOAUTO;
for _eplg_fname in $(find ./groups.d -mindepth 2 -name *.package | sort); do
rtl_fileop source_with_fnamevar "${_eplg_fname}";
done;
- _eplg_build_groups="$(rtl_uniq "${_eplg_build_groups}")";
- eval ${_eplg_rgroups}=\"${_eplg_build_groups}\";
-
- if [ "${_eplg_rgroups_noauto:+1}" = 1 ]; then
- _eplg_build_groups_noauto="$(rtl_uniq "${_eplg_build_groups_noauto}")";
- eval ${_eplg_rgroups_noauto}=\"${_eplg_build_groups_noauto}\";
- fi;
-
return 0;
};
@@ -348,6 +296,44 @@ ex_pkg_register() {
};
#
+# ex_pkg_register_group() - register single group
+# @_group_name: single group name
+# @_fname: pathname to file group is defined in, relative to midipix_build root
+# @[_autofl]: "auto" for groups to build by default, "noauto" for optional groups only built when requested
+# ${EXP_PKG_REGISTER_GROUP_RGROUPS}: inout reference to variable of build groups
+# ${EXP_PKG_REGISTER_GROUP_RGROUPS_NOAUTO}: inout reference to variable of build groups only built when requested
+#
+# Returns: zero (0) on success, non-zero (>0) on failure.
+#
+ex_pkg_register_group() {
+ local _eprg_group_name="${1}" _eprg_fname="${2}" _eprg_autofl="${3:-auto}" \
+ _eprg_pkg_name="" _eprg_pkg_names="" _eprg_rgroups="";
+
+ case "${_eprg_autofl}" in
+ auto) _eprg_rgroups="${EXP_PKG_REGISTER_GROUP_RGROUPS}"; ;;
+ noauto) _eprg_rgroups="${EXP_PKG_REGISTER_GROUP_RGROUPS_NOAUTO}"; ;;
+ *) ;;
+ esac;
+ if ! rtl_lmatch "${_eprg_rgroups}" "${_eprg_group_name}"; then
+ rtl_lconcat "${_eprg_rgroups}" "${_eprg_group_name}";
+ fi;
+
+ if rtl_get_var_unsafe \$_eprg_pkg_names -u "${_eprg_group_name}_PACKAGES"\
+ && [ "${_eprg_pkg_names:+1}" = 1 ]; then
+ case "${_eprg_autofl}" in
+ noauto)
+ for _eprg_pkg_name in ${_eprg_pkg_names}; do
+ rtl_set_var_unsafe -u "PKG_${_eprg_pkg_name}_GROUP" "${_eprg_group_name}";
+ rtl_set_var_unsafe -u "PKG_${_eprg_pkg_name}_GROUP_FNAME" "${_eprg_fname}";
+ done;
+ ;;
+ esac;
+ fi;
+
+ return 0;
+};
+
+#
# ex_pkg_unfold_depends() - unfold list of package names into dependency-expanded set of complete, disabled, finished, and outstanding package names
# @_rdisabled: in reference toout variable of disabled packages
# @_rfinished: in reference toout variable of finished packages