From 9e387129c51a6b5b1e1423ab68cdc4ea345bb731 Mon Sep 17 00:00:00 2001 From: Zac Medico Date: Mon, 6 Jul 2009 20:23:57 +0000 Subject: Bug #273622 - Add pkg_pretend support for the ebuild(1) command (emerge support not implemented yet). Thanks to Markus Meier for this patch. svn path=/main/trunk/; revision=13799 --- bin/ebuild.sh | 18 ++++++++++++++++-- pym/portage/__init__.py | 6 +++++- 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}}, -- cgit v1.2.3-1-g7c22