diff options
Diffstat (limited to 'meta/classes/patch.bbclass')
| -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() { | |||
| 28 | # Prefunc for do_patch | 28 | # Prefunc for do_patch |
| 29 | srcsubdir = d.getVar('S') | 29 | srcsubdir = d.getVar('S') |
| 30 | 30 | ||
| 31 | workdir = os.path.abspath(d.getVar('WORKDIR')) | ||
| 32 | testsrcdir = os.path.abspath(srcsubdir) | ||
| 33 | if (testsrcdir + os.sep).startswith(workdir + os.sep): | ||
| 34 | # Double-check that either workdir or S or some directory in-between is a git repository | ||
| 35 | found = False | ||
| 36 | while testsrcdir != '/': | ||
| 37 | if os.path.exists(os.path.join(testsrcdir, '.git')): | ||
| 38 | found = True | ||
| 39 | break | ||
| 40 | if testsrcdir == workdir: | ||
| 41 | break | ||
| 42 | testsrcdir = os.path.dirname(testsrcdir) | ||
| 43 | if not found: | ||
| 44 | 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.') | ||
| 45 | |||
| 31 | patchdir = os.path.join(srcsubdir, 'patches') | 46 | patchdir = os.path.join(srcsubdir, 'patches') |
| 32 | if os.path.exists(patchdir): | 47 | if os.path.exists(patchdir): |
| 33 | if os.listdir(patchdir): | 48 | if os.listdir(patchdir): |
