From 0ae7b58060f1ee7914dd45d462e48d4b8a3751ad Mon Sep 17 00:00:00 2001 From: Robert Yang Date: Fri, 22 Aug 2014 01:31:27 -0700 Subject: sanity.bbclass: check the format of MIRRORS Check the format of MIRRORS, PREMIRRORS and SSTATE_MIRRORS: * Each mirror shoudl contain two memebers. * The local "file://" url must use absolute path (file:///). * The protocol must in protocols list. (From OE-Core rev: c8c213bb25b137cf70ba8ce9a45e60065d926735) Signed-off-by: Robert Yang Signed-off-by: Richard Purdie --- meta/classes/sanity.bbclass | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/meta/classes/sanity.bbclass b/meta/classes/sanity.bbclass index 3b40ebe..dbcc26b 100644 --- a/meta/classes/sanity.bbclass +++ b/meta/classes/sanity.bbclass @@ -753,6 +753,39 @@ def check_sanity_everybuild(status, d): if oeroot.find(' ') != -1: status.addresult("Error, you have a space in your COREBASE directory path. Please move the installation to a directory which doesn't include a space since autotools doesn't support this.") + # Check the format of MIRRORS, PREMIRRORS and SSTATE_MIRRORS + mir_types = ['MIRRORS', 'PREMIRRORS', 'SSTATE_MIRRORS'] + protocols = ['http://', 'ftp://', 'file://', 'https://', 'https?$://', \ + 'git://', 'gitsm://', 'hg://', 'osc://', 'p4://', 'svk://', 'svn://', \ + 'bzr://', 'cvs://'] + for mir_type in mir_types: + mirros = (d.getVar(mir_type, True) or '').split('\\n') + for mir in mirros: + mir_list = mir.split() + # Should be two members. + if len(mir_list) not in [0, 2]: + bb.warn('Invalid %s: %s, should be 2 members, but found %s.' \ + % (mir_type, mir.strip(), len(mir_list))) + elif len(mir_list) == 2: + # Each member should start with protocols + valid_protocol_0 = False + valid_protocol_1 = False + file_absolute = True + for protocol in protocols: + if not valid_protocol_0 and mir_list[0].startswith(protocol): + valid_protocol_0 = True + if not valid_protocol_1 and mir_list[1].startswith(protocol): + valid_protocol_1 = True + # The file:// must be an absolute path. + if protocol == 'file://' and not mir_list[1].startswith('file:///'): + file_absolute = False + if valid_protocol_0 and valid_protocol_1: + break + if not (valid_protocol_0 and valid_protocol_1): + bb.warn('Invalid protocol in %s: %s' % (mir_type, mir.strip())) + if not file_absolute: + bb.warn('Invalid file url in %s: %s, must be absolute path (file:///)' % (mir_type, mir.strip())) + # Check that TMPDIR hasn't changed location since the last time we were run tmpdir = d.getVar('TMPDIR', True) checkfile = os.path.join(tmpdir, "saved_tmpdir") -- cgit v1.1