[oe-commits] [openembedded-core] 46/57: classes/patch: when PATCHTOOL = "git" double-check the repository

git at git.openembedded.org git at git.openembedded.org
Sat Dec 9 14:44:38 UTC 2017


This is an automated email from the git hooks/post-receive script.

rpurdie pushed a commit to branch master-next
in repository openembedded-core.

commit 3c46aa1e02535512cc8cb737752db883953951d4
Author: Paul Eggleton <paul.eggleton at linux.intel.com>
AuthorDate: Tue Dec 5 14:36:58 2017 +1300

    classes/patch: when PATCHTOOL = "git" double-check the repository
    
    If a bug is present or the user has set PATCHTOOL = "git" on a source
    tree that isn't git, if we try to perform git operations (such as
    committing or changing branches) when extracting source, then we might
    in fact be running those operations on the metadata repository if the
    build directory is underneath, say, poky or OE-Core, and that could
    make a mess. Check if the source tree is a git repository and refuse
    to continue if it isn't.
    
    Signed-off-by: Paul Eggleton <paul.eggleton at linux.intel.com>
    Signed-off-by: Ross Burton <ross.burton at intel.com>
---
 meta/classes/patch.bbclass | 15 +++++++++++++++
 1 file changed, 15 insertions(+)

diff --git a/meta/classes/patch.bbclass b/meta/classes/patch.bbclass
index 930ee33..2fc6925 100644
--- a/meta/classes/patch.bbclass
+++ b/meta/classes/patch.bbclass
@@ -28,6 +28,21 @@ python patch_task_patch_prefunc() {
     # Prefunc for do_patch
     srcsubdir = d.getVar('S')
 
+    workdir = os.path.abspath(d.getVar('WORKDIR'))
+    testsrcdir = os.path.abspath(srcsubdir)
+    if (testsrcdir + os.sep).startswith(workdir + os.sep):
+        # Double-check that either workdir or S or some directory in-between is a git repository
+        found = False
+        while testsrcdir != '/':
+            if os.path.exists(os.path.join(testsrcdir, '.git')):
+                found = True
+                break
+            if testsrcdir == workdir:
+                break
+            testsrcdir = os.path.dirname(testsrcdir)
+        if not found:
+            bb.fatal('PATCHTOOL = "git" set for source tree that is not a git repository. Refusing to continue as that may result in commits being made in your metadata repository.')
+
     patchdir = os.path.join(srcsubdir, 'patches')
     if os.path.exists(patchdir):
         if os.listdir(patchdir):

-- 
To stop receiving notification emails like this one, please contact
the administrator of this repository.


More information about the Openembedded-commits mailing list