summaryrefslogtreecommitdiffstats
path: root/meta/classes-global
diff options
context:
space:
mode:
Diffstat (limited to 'meta/classes-global')
-rw-r--r--meta/classes-global/base.bbclass13
-rw-r--r--meta/classes-global/insane.bbclass8
-rw-r--r--meta/classes-global/sstate.bbclass22
3 files changed, 23 insertions, 20 deletions
diff --git a/meta/classes-global/base.bbclass b/meta/classes-global/base.bbclass
index e55a538e36..b86f50e283 100644
--- a/meta/classes-global/base.bbclass
+++ b/meta/classes-global/base.bbclass
@@ -183,23 +183,16 @@ python base_do_unpack() {
183 183
184 basedir = None 184 basedir = None
185 unpackdir = d.getVar('UNPACKDIR') 185 unpackdir = d.getVar('UNPACKDIR')
186 workdir = d.getVar('WORKDIR') 186 if sourcedir.startswith(unpackdir):
187 if sourcedir.startswith(workdir) and not sourcedir.startswith(unpackdir): 187 basedir = sourcedir.replace(unpackdir, '').strip("/").split('/')[0]
188 basedir = sourcedir.replace(workdir, '').strip("/").split('/')[0]
189 if basedir: 188 if basedir:
190 bb.utils.remove(workdir + '/' + basedir, True) 189 d.setVar("SOURCE_BASEDIR", unpackdir + '/' + basedir)
191 d.setVar("SOURCE_BASEDIR", workdir + '/' + basedir)
192 190
193 try: 191 try:
194 fetcher = bb.fetch2.Fetch(src_uri, d) 192 fetcher = bb.fetch2.Fetch(src_uri, d)
195 fetcher.unpack(d.getVar('UNPACKDIR')) 193 fetcher.unpack(d.getVar('UNPACKDIR'))
196 except bb.fetch2.BBFetchException as e: 194 except bb.fetch2.BBFetchException as e:
197 bb.fatal("Bitbake Fetcher Error: " + repr(e)) 195 bb.fatal("Bitbake Fetcher Error: " + repr(e))
198
199 if basedir and os.path.exists(unpackdir + '/' + basedir):
200 # Compatibility magic to ensure ${WORKDIR}/git and ${WORKDIR}/${BP}
201 # as often used in S work as expected.
202 shutil.move(unpackdir + '/' + basedir, workdir + '/' + basedir)
203} 196}
204 197
205SSTATETASKS += "do_deploy_source_date_epoch" 198SSTATETASKS += "do_deploy_source_date_epoch"
diff --git a/meta/classes-global/insane.bbclass b/meta/classes-global/insane.bbclass
index c45650291f..4ef664b3ce 100644
--- a/meta/classes-global/insane.bbclass
+++ b/meta/classes-global/insane.bbclass
@@ -1431,6 +1431,14 @@ Rerun configure task after fixing this."""
1431python do_qa_unpack() { 1431python do_qa_unpack() {
1432 src_uri = d.getVar('SRC_URI') 1432 src_uri = d.getVar('SRC_URI')
1433 s_dir = d.getVar('S') 1433 s_dir = d.getVar('S')
1434 s_dir_orig = d.getVar('S', False)
1435
1436 if s_dir_orig == '${WORKDIR}/git' or s_dir_orig == '${UNPACKDIR}/git':
1437 bb.fatal('Recipes that set S = "${WORKDIR}/git" or S = "${UNPACKDIR}/git" should remove that assignment, as S set by bitbake.conf in oe-core now works.')
1438
1439 if '${WORKDIR}' in s_dir_orig:
1440 bb.fatal('S should be set relative to UNPACKDIR, e.g. replace WORKDIR with UNPACKDIR in "S = {}"'.format(s_dir_orig))
1441
1434 if src_uri and not os.path.exists(s_dir): 1442 if src_uri and not os.path.exists(s_dir):
1435 bb.warn('%s: the directory %s (%s) pointed to by the S variable doesn\'t exist - please set S within the recipe to point to where the source has been unpacked to' % (d.getVar('PN'), d.getVar('S', False), s_dir)) 1443 bb.warn('%s: the directory %s (%s) pointed to by the S variable doesn\'t exist - please set S within the recipe to point to where the source has been unpacked to' % (d.getVar('PN'), d.getVar('S', False), s_dir))
1436} 1444}
diff --git a/meta/classes-global/sstate.bbclass b/meta/classes-global/sstate.bbclass
index 1d7b033b80..2968cc4c2e 100644
--- a/meta/classes-global/sstate.bbclass
+++ b/meta/classes-global/sstate.bbclass
@@ -726,7 +726,6 @@ def pstaging_fetch(sstatefetch, d):
726 localdata = bb.data.createCopy(d) 726 localdata = bb.data.createCopy(d)
727 727
728 dldir = localdata.expand("${SSTATE_DIR}") 728 dldir = localdata.expand("${SSTATE_DIR}")
729 bb.utils.mkdirhier(dldir)
730 729
731 localdata.delVar('MIRRORS') 730 localdata.delVar('MIRRORS')
732 localdata.setVar('FILESPATH', dldir) 731 localdata.setVar('FILESPATH', dldir)
@@ -746,16 +745,19 @@ def pstaging_fetch(sstatefetch, d):
746 if bb.utils.to_boolean(d.getVar("SSTATE_VERIFY_SIG"), False): 745 if bb.utils.to_boolean(d.getVar("SSTATE_VERIFY_SIG"), False):
747 uris += ['file://{0}.sig;downloadfilename={0}.sig'.format(sstatefetch)] 746 uris += ['file://{0}.sig;downloadfilename={0}.sig'.format(sstatefetch)]
748 747
749 for srcuri in uris: 748 with bb.utils.umask(0o002):
750 localdata.delVar('SRC_URI') 749 bb.utils.mkdirhier(dldir)
751 localdata.setVar('SRC_URI', srcuri)
752 try:
753 fetcher = bb.fetch2.Fetch([srcuri], localdata, cache=False)
754 fetcher.checkstatus()
755 fetcher.download()
756 750
757 except bb.fetch2.BBFetchException: 751 for srcuri in uris:
758 pass 752 localdata.delVar('SRC_URI')
753 localdata.setVar('SRC_URI', srcuri)
754 try:
755 fetcher = bb.fetch2.Fetch([srcuri], localdata, cache=False)
756 fetcher.checkstatus()
757 fetcher.download()
758
759 except bb.fetch2.BBFetchException:
760 pass
759 761
760def sstate_setscene(d): 762def sstate_setscene(d):
761 shared_state = sstate_state_fromvars(d) 763 shared_state = sstate_state_fromvars(d)