more cascaded profiles support
authorgenone <genone@gentoo.org>
Fri, 8 Apr 2005 00:36:37 +0000 (00:36 -0000)
committergenone <genone@gentoo.org>
Fri, 8 Apr 2005 00:36:37 +0000 (00:36 -0000)
svn path=/; revision=204

trunk/ChangeLog
trunk/src/euse/euse

index 38892773747d0d7ecb010a0245b4ecddaf21f626..aed8c255a4da2ffa9be8594e2d9e96cfedb8a208 100644 (file)
@@ -1,5 +1,6 @@
 2005-04-07 Marius Mauch <genone@gentoo.org>
        * euse: fixed bugs 74344, 75525 and 84521
+       * euse: add better support for cascaded profiles
 
 2005-03-12 Aron Griffis <agriffis@gentoo.org>
        * Added eviewcvs to -dev, utility for generating viewcvs URLs
index d6632336de5b7cbea500c5efb20c9f793e5cc735..d34c7e45fed8fda9561620e6b9ad4de196fe6d17 100755 (executable)
@@ -15,7 +15,7 @@ MAKE_GLOBALS_PATH=/etc/make.globals
 MAKE_PROFILE_PATH=/etc/make.profile
 MAKE_CONF_BACKUP_PATH=/etc/make.conf.euse_backup
 
-MODE="showhelp"                # available operation modes: showhelp, showversion, showdesc, showflags, modify
+[ -z "${MODE}" ] && MODE="showhelp"            # available operation modes: showhelp, showversion, showdesc, showflags, modify
 
 parse_arguments() {
        if [ -z "${1}" ]; then
@@ -87,7 +87,7 @@ showhelp() {
        echo "Notes: ${PROGRAM_NAME} currently only works for global flags defined"
        echo "       in make.globals, make.defaults or make.conf, it doesn't handle"
        echo "       use.defaults, use.mask or package.use yet (see portage(5) for details on"
-       echo "       these files)."
+       echo "       these files). It also might have issues with cascaded profiles."
        echo "       If multiple options are specified only the last one will be used."
 }
 
@@ -114,8 +114,10 @@ get_useflags() {
        source "${MAKE_CONF_PATH}"
        ACTIVE_FLAGS[1]="${USE}"
        USE=""
-       source $(get_make_defaults)
-       ACTIVE_FLAGS[2]="${USE}"
+       for x in $(get_all_make_defaults); do
+               source "${x}"
+               ACTIVE_FLAGS[2]="${ACTIVE_FLAGS[2]} ${USE}"
+       done
        USE=""
        source "${MAKE_GLOBALS_PATH}"
        ACTIVE_FLAGS[3]="${USE}"
@@ -145,13 +147,28 @@ get_useflaglist() {
        fi
 }
 
+# get all make.defaults by traversing the cascaded profile directories
+get_all_make_defaults() {
+       local curdir
+       local parent
+       local rvalue
+       
+       curdir="$(readlink -f ${MAKE_PROFILE_PATH})"
+       
+       while [ -f "${curdir}/parent" ]; do
+               [ -f "${curdir}/make.defaults" ] && rvalue="${curdir}/make.defaults ${rvalue}"
+               parent="$(egrep -v '(^#|^ *$)' ${curdir}/parent)"
+               curdir="$(readlink -f ${curdir}/${parent})"
+       done
+
+       echo "${rvalue}"
+}
+
 # get the path to make.defaults by traversing the cascaded profile directories
 get_make_defaults() {
        local curdir
-       local notfound
        local parent
        
-       notfound=1
        curdir="$(readlink -f ${MAKE_PROFILE_PATH})"
        
        while [ ! -f "${curdir}/make.defaults" -a -f "${curdir}/parent" ]; do
@@ -197,7 +214,9 @@ get_portdir() {
        if [ -z "${PORTDIR}" ]; then
                use_backup="${USE}"
                source "${MAKE_GLOBALS_PATH}"
-               source "$(get_make_defaults)"
+               for x in $(get_all_make_defaults); do
+                       source "${x}"
+               done
                source "${MAKE_CONF_PATH}"
                USE="${use_backup}"
        fi
@@ -384,6 +403,7 @@ modify() {
 
 ##### main program comes now #####
 
+# disable globbing as it fucks up with args=*
 set -f
 parse_arguments "$@"
 check_sanity