doebuild: support 'nofetch' phase
authorZac Medico <zmedico@gentoo.org>
Sun, 7 Jul 2013 19:48:00 +0000 (12:48 -0700)
committerZac Medico <zmedico@gentoo.org>
Sun, 7 Jul 2013 19:48:00 +0000 (12:48 -0700)
bin/phase-functions.sh
pym/portage/package/ebuild/_spawn_nofetch.py
pym/portage/package/ebuild/doebuild.py
pym/portage/tests/ebuild/test_doebuild_fd_pipes.py

index 6433c545e31b882676929ad501f1178c7abf9d7a..5c172437f01577f95be3f73e515c5698921308e1 100644 (file)
@@ -622,6 +622,7 @@ __dyn_help() {
        echo "  pretend     : execute package specific pretend actions"
        echo "  setup       : execute package specific setup actions"
        echo "  fetch       : download source archive(s) and patches"
+       echo "  nofetch     : display special fetch instructions"
        echo "  digest      : create a manifest file for the package"
        echo "  manifest    : create a manifest file for the package"
        echo "  unpack      : unpack sources (auto-dependencies if needed)"
index a8814a5bdecbfd7d1205e91a0b4ea7cf82f0f80d..0fc53c8ca936c4102fba820cf567552764939aea 100644 (file)
@@ -50,7 +50,7 @@ def spawn_nofetch(portdb, ebuild_path, settings=None, fd_pipes=None):
                settings = config(clone=settings)
 
        if 'PORTAGE_PARALLEL_FETCHONLY' in settings:
-               return
+               return os.EX_OK
 
        # We must create our private PORTAGE_TMPDIR before calling
        # doebuild_environment(), since lots of variables such
@@ -76,7 +76,7 @@ def spawn_nofetch(portdb, ebuild_path, settings=None, fd_pipes=None):
 
                if 'fetch' not in restrict and \
                        'nofetch' not in defined_phases:
-                       return
+                       return os.EX_OK
 
                prepare_build_dirs(settings=settings)
                ebuild_phase = EbuildPhase(background=False,
@@ -89,3 +89,5 @@ def spawn_nofetch(portdb, ebuild_path, settings=None, fd_pipes=None):
                elog_process(settings.mycpv, settings)
        finally:
                shutil.rmtree(private_tmpdir)
+
+       return ebuild_phase.returncode
index edf3df6abbe12c676dd35d42a50d26f5bf2f2251..06ea1115b536d107c8da0a71d9410ad7adf104e5 100644 (file)
@@ -574,7 +574,7 @@ def doebuild(myebuild, mydo, _unused=DeprecationWarning, settings=None, debug=0,
                        "fetch", "fetchall", "digest",
                        "unpack", "prepare", "configure", "compile", "test",
                        "install", "rpm", "qmerge", "merge",
-                       "package","unmerge", "manifest"]
+                       "package", "unmerge", "manifest", "nofetch"]
 
        if mydo not in validcommands:
                validcommands.sort()
@@ -745,6 +745,16 @@ def doebuild(myebuild, mydo, _unused=DeprecationWarning, settings=None, debug=0,
                        return _spawn_phase(mydo, mysettings,
                                fd_pipes=fd_pipes, returnpid=returnpid)
 
+               elif mydo == "nofetch":
+
+                       if returnpid:
+                               writemsg("!!! doebuild: %s\n" %
+                                       _("returnpid is not supported for phase '%s'\n" % mydo),
+                                       noiselevel=-1)
+
+                       return spawn_nofetch(mydbapi, myebuild, settings=mysettings,
+                               fd_pipes=fd_pipes)
+
                if tree == "porttree":
 
                        if not returnpid:
index ddd73e2babac2494d0d5a1582f98a878e3f38b16..6fdda5fea1b451fd4576154bc3a4fb801b4d9152 100644 (file)
@@ -33,6 +33,7 @@ class DoebuildFdPipesTestCase(TestCase):
 
                ebuild_body = textwrap.dedent("""
                        S=${WORKDIR}
+                       pkg_nofetch() { echo nofetch ; }
                        pkg_pretend() { echo pretend ; }
                        pkg_setup() { echo setup ; }
                        src_unpack() { echo unpack ; }
@@ -78,7 +79,7 @@ class DoebuildFdPipesTestCase(TestCase):
                        self.assertNotEqual(ebuildpath, None)
 
                        for phase in ('pretend', 'setup', 'unpack', 'prepare', 'configure',
-                                'compile', 'test', 'install', 'clean', 'merge'):
+                                'compile', 'test', 'install', 'clean', 'merge', 'nofetch'):
 
                                pr, pw = os.pipe()