diff options
-rw-r--r-- | meta/classes/patch.bbclass | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/meta/classes/patch.bbclass b/meta/classes/patch.bbclass index 930ee33d54..2fc6925e49 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): |