summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rwxr-xr-xbin/ebuild.sh18
-rw-r--r--pym/portage/__init__.py6
2 files changed, 21 insertions, 3 deletions
diff --git a/bin/ebuild.sh b/bin/ebuild.sh
index c9008e33e..634b3ce4f 100755
--- a/bin/ebuild.sh
+++ b/bin/ebuild.sh
@@ -662,6 +662,10 @@ ebuild_phase_with_hooks() {
done
}
+dyn_pretend() {
+ ebuild_phase_with_hooks pkg_pretend
+}
+
dyn_setup() {
ebuild_phase_with_hooks pkg_setup
}
@@ -1079,6 +1083,7 @@ dyn_help() {
echo "than one option is specified, each will be executed in order."
echo
echo " help : show this help screen"
+ echo " pretend : execute package specific pretend actions"
echo " setup : execute package specific setup actions"
echo " fetch : download source archive(s) and patches"
echo " digest : create a manifest file for the package"
@@ -1346,6 +1351,10 @@ _ebuild_arg_to_phase() {
local phase_func=""
case "$arg" in
+ pretend)
+ ! hasq $eapi 0 1 2 && \
+ phase_func=pkg_pretend
+ ;;
setup)
phase_func=pkg_setup
;;
@@ -1802,11 +1811,16 @@ _source_ebuild() {
pkg_nofetch pkg_postinst pkg_postrm pkg_preinst pkg_prerm
pkg_setup src_test src_unpack"
;;
- *)
+ 2)
valid_phases="src_compile pkg_config src_configure pkg_info
src_install pkg_nofetch pkg_postinst pkg_postrm pkg_preinst
src_prepare pkg_prerm pkg_setup src_test src_unpack"
;;
+ *)
+ valid_phases="src_compile pkg_config src_configure pkg_info
+ src_install pkg_nofetch pkg_postinst pkg_postrm pkg_preinst
+ src_prepare pkg_prerm pkg_pretend pkg_setup src_test src_unpack"
+ ;;
esac
DEFINED_PHASES=
@@ -2003,7 +2017,7 @@ ebuild_main() {
fi
export SANDBOX_ON="0"
;;
- help|setup|preinst)
+ help|pretend|setup|preinst)
#pkg_setup needs to be out of the sandbox for tmp file creation;
#for example, awking and piping a file in /tmp requires a temp file to be created
#in /etc. If pkg_setup is in the sandbox, both our lilo and apache ebuilds break.
diff --git a/pym/portage/__init__.py b/pym/portage/__init__.py
index 461175638..1ad8b15b6 100644
--- a/pym/portage/__init__.py
+++ b/pym/portage/__init__.py
@@ -4920,6 +4920,9 @@ def spawnebuild(mydo, actionmap, mysettings, debug, alwaysdep=0,
if mydo == "prepare" and eapi in ("0", "1"):
return os.EX_OK
+ if mydo == "pretend" and eapi in ("0", "1", "2"):
+ return os.EX_OK
+
kwargs = actionmap[mydo]["args"]
mysettings["EBUILD_PHASE"] = mydo
_doebuild_exit_status_unlink(
@@ -5882,7 +5885,7 @@ def doebuild(myebuild, mydo, myroot, mysettings, debug=0, listonly=0,
clean_phases = ("clean", "cleanrm")
validcommands = ["help","clean","prerm","postrm","cleanrm","preinst","postinst",
- "config", "info", "setup", "depend",
+ "config", "info", "setup", "depend", "pretend",
"fetch", "fetchall", "digest",
"unpack", "prepare", "configure", "compile", "test",
"install", "rpm", "qmerge", "merge",
@@ -6451,6 +6454,7 @@ def doebuild(myebuild, mydo, myroot, mysettings, debug=0, listonly=0,
# args are for the to spawn function
actionmap = {
+"pretend": {"cmd":ebuild_sh, "args":{"droppriv":0, "free":1, "sesandbox":0, "fakeroot":0}},
"setup": {"cmd":ebuild_sh, "args":{"droppriv":0, "free":1, "sesandbox":0, "fakeroot":0}},
"unpack": {"cmd":ebuild_sh, "args":{"droppriv":droppriv, "free":0, "sesandbox":sesandbox, "fakeroot":0}},
"prepare": {"cmd":ebuild_sh, "args":{"droppriv":droppriv, "free":0, "sesandbox":sesandbox, "fakeroot":0}},