Disallow some functions in global scope in EAPI="4-python".
authorArfrever Frehtes Taifersar Arahesis <Arfrever@Gentoo.Org>
Mon, 19 Dec 2011 01:33:27 +0000 (02:33 +0100)
committerArfrever Frehtes Taifersar Arahesis <Arfrever@Gentoo.Org>
Mon, 19 Dec 2011 01:33:27 +0000 (02:33 +0100)
bin/ebuild.sh

index af7b3a92bf55e9cb6fec911849d43af02a68a410..63c246a89d396935aeb5a58e93262d7c39a7f58f 100755 (executable)
@@ -25,17 +25,27 @@ else
                libopts register_die_hook register_success_hook \
                remove_path_entry set_unless_changed strip_duplicate_slashes \
                unset_unless_changed use_with use_enable ; do
-               eval "${x}() { : ; }"
+               eval "${x}() {
+                       if has \"\${EAPI:-0}\" 4-python; then
+                               die \"\${FUNCNAME}() calls are not allowed in global scope\"
+                       fi
+               }"
        done
-       # These dummy functions return false, in order to ensure that
+       # These dummy functions return false in older EAPIs, in order to ensure that
        # `use multislot` is false for the "depend" phase.
        for x in use useq usev ; do
-               eval "${x}() { return 1; }"
+               eval "${x}() {
+                       if has \"\${EAPI:-0}\" 4-python; then
+                               die \"\${FUNCNAME}() calls are not allowed in global scope\"
+                       else
+                               return 1
+                       fi
+               }"
        done
        # These functions die because calls to them during the "depend" phase
        # are considered to be severe QA violations.
        for x in best_version has_version portageq ; do
-               eval "${x}() { die \"\${FUNCNAME} calls are not allowed in global scope\"; }"
+               eval "${x}() { die \"\${FUNCNAME}() calls are not allowed in global scope\"; }"
        done
        unset x
 fi