summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--classes/fsl-eula-unpack.bbclass79
1 files changed, 78 insertions, 1 deletions
diff --git a/classes/fsl-eula-unpack.bbclass b/classes/fsl-eula-unpack.bbclass
index 0e7ef9d6..ec9673ae 100644
--- a/classes/fsl-eula-unpack.bbclass
+++ b/classes/fsl-eula-unpack.bbclass
@@ -6,7 +6,53 @@
6# 6#
7# SRC_URI = "${FSL_MIRROR}/firmware-imx-${PV};fsl-eula=true" 7# SRC_URI = "${FSL_MIRROR}/firmware-imx-${PV};fsl-eula=true"
8 8
9LIC_FILES_CHKSUM_append = " file://${FSL_EULA_FILE};md5=ab61cab9599935bfe9f700405ef00f28" 9FSL_EULA_FILE_MD5SUM_LA_OPT_BASE_LICENSE_V8 = "01ba08a2b77c3a0a9d0ab5d4d83fed64"
10FSL_EULA_FILE_MD5SUM_LA_OPT_BASE_LICENSE_V10 = "3880bb9c943b135a30fad5e8aabd3ee9"
11FSL_EULA_FILE_MD5SUM_LA_OPT_BASE_LICENSE_V11 = "a31dce3023402a821cfcdc1bb8dbdbc0"
12FSL_EULA_FILE_MD5SUM_LA_OPT_BASE_LICENSE_V12 = "8cf95184c220e247b9917e7244124c5a"
13FSL_EULA_FILE_MD5SUM_LA_OPT_BASE_LICENSE_V13 = "102094e9e695888c6a9f9fda9004165d"
14FSL_EULA_FILE_MD5SUM_LA_OPT_BASE_LICENSE_V14 = "d4f548f93b5fe0ee2bc86758c344412d"
15FSL_EULA_FILE_MD5SUM_LA_OPT_BASE_LICENSE_V16 = "be67a88e9e6c841043b005ad7bcf8309"
16FSL_EULA_FILE_MD5SUM_LA_OPT_BASE_LICENSE_V17 = "88595f92466edd79be7f4f9547ffa0ef"
17FSL_EULA_FILE_MD5SUM_LA_OPT_BASE_LICENSE_V18 = "6b552f505eedab4a11ab538cf3db743a"
18FSL_EULA_FILE_MD5SUM_LA_OPT_BASE_LICENSE_V20 = "08fd295cce89b0a9c74b9b83ed74f671"
19FSL_EULA_FILE_MD5SUM_LA_OPT_BASE_LICENSE_V21 = "6bd2df2910a2234bf6f419b7d2f531a3"
20FSL_EULA_FILE_MD5SUM_LA_OPT_BASE_LICENSE_V22 = "75abe2fa1d16ca79f87cde926f05f72d"
21FSL_EULA_FILE_MD5SUM_LA_OPT_BASE_LICENSE_V24 = "ab61cab9599935bfe9f700405ef00f28"
22FSL_EULA_FILE_MD5SUM_LA_OPT_BASE_LICENSE_V26 = "5ab1a30d0cd181e3408077727ea5a2db"
23FSL_EULA_FILE_MD5SUM_LA_OPT_NXP_SOFTWARE_LICENSE_V3 = "6dfb32a488e5fd6bae52fbf6c7ebb086"
24FSL_EULA_FILE_MD5SUM_LA_OPT_NXP_SOFTWARE_LICENSE_V5 = "80c0478f4339af024519b3723023fe28"
25FSL_EULA_FILE_MD5SUM_LA_OPT_NXP_SOFTWARE_LICENSE_V7 = "fb0303e4ee8b0e71c094171e2272bd44"
26FSL_EULA_FILE_MD5SUM_LA_OPT_NXP_SOFTWARE_LICENSE_V8 = "72c0f70181bb6e83eee6aab8de12a9f3"
27FSL_EULA_FILE_MD5SUM_LA_OPT_NXP_SOFTWARE_LICENSE_V9 = "6c12031a11b81db21cdfe0be88cac4b3"
28FSL_EULA_FILE_MD5SUMS = " \
29 ${FSL_EULA_FILE_MD5SUM_LA_OPT_BASE_LICENSE_V8} \
30 ${FSL_EULA_FILE_MD5SUM_LA_OPT_BASE_LICENSE_V10} \
31 ${FSL_EULA_FILE_MD5SUM_LA_OPT_BASE_LICENSE_V11} \
32 ${FSL_EULA_FILE_MD5SUM_LA_OPT_BASE_LICENSE_V12} \
33 ${FSL_EULA_FILE_MD5SUM_LA_OPT_BASE_LICENSE_V13} \
34 ${FSL_EULA_FILE_MD5SUM_LA_OPT_BASE_LICENSE_V14} \
35 ${FSL_EULA_FILE_MD5SUM_LA_OPT_BASE_LICENSE_V16} \
36 ${FSL_EULA_FILE_MD5SUM_LA_OPT_BASE_LICENSE_V17} \
37 ${FSL_EULA_FILE_MD5SUM_LA_OPT_BASE_LICENSE_V18} \
38 ${FSL_EULA_FILE_MD5SUM_LA_OPT_BASE_LICENSE_V20} \
39 ${FSL_EULA_FILE_MD5SUM_LA_OPT_BASE_LICENSE_V21} \
40 ${FSL_EULA_FILE_MD5SUM_LA_OPT_BASE_LICENSE_V22} \
41 ${FSL_EULA_FILE_MD5SUM_LA_OPT_BASE_LICENSE_V24} \
42 ${FSL_EULA_FILE_MD5SUM_LA_OPT_BASE_LICENSE_V26} \
43 ${FSL_EULA_FILE_MD5SUM_LA_OPT_NXP_SOFTWARE_LICENSE_V3} \
44 ${FSL_EULA_FILE_MD5SUM_LA_OPT_NXP_SOFTWARE_LICENSE_V5} \
45 ${FSL_EULA_FILE_MD5SUM_LA_OPT_NXP_SOFTWARE_LICENSE_V7} \
46 ${FSL_EULA_FILE_MD5SUM_LA_OPT_NXP_SOFTWARE_LICENSE_V8} \
47 ${FSL_EULA_FILE_MD5SUM_LA_OPT_NXP_SOFTWARE_LICENSE_V9} \
48"
49
50# The checksum for the EULA in the layer
51FSL_EULA_FILE_MD5SUM ?= \
52 "${FSL_EULA_FILE_MD5SUM_LA_OPT_BASE_LICENSE_V24}"
53
54LIC_FILES_CHKSUM_LAYER ?= "file://${FSL_EULA_FILE};md5=${FSL_EULA_FILE_MD5SUM}"
55LIC_FILES_CHKSUM_append = " ${LIC_FILES_CHKSUM_LAYER}"
10 56
11LIC_FILES_CHKSUM[vardepsexclude] += "FSL_EULA_FILE" 57LIC_FILES_CHKSUM[vardepsexclude] += "FSL_EULA_FILE"
12 58
@@ -26,6 +72,7 @@ python fsl_bin_do_unpack() {
26 rootdir = localdata.getVar('WORKDIR', True) 72 rootdir = localdata.getVar('WORKDIR', True)
27 fetcher = bb.fetch2.Fetch(src_uri, localdata) 73 fetcher = bb.fetch2.Fetch(src_uri, localdata)
28 74
75 found = 0
29 for url in fetcher.ud.values(): 76 for url in fetcher.ud.values():
30 # Skip this fetcher if it's not under EULA or if the fetcher type is not supported 77 # Skip this fetcher if it's not under EULA or if the fetcher type is not supported
31 if not url.parm.get('fsl-eula', False) or url.type not in ['http', 'https', 'ftp', 'file']: 78 if not url.parm.get('fsl-eula', False) or url.type not in ['http', 'https', 'ftp', 'file']:
@@ -34,9 +81,39 @@ python fsl_bin_do_unpack() {
34 if not os.path.exists(url.localpath): 81 if not os.path.exists(url.localpath):
35 bb.debug(1, "Exiting as '%s' cannot be found" % url.basename) 82 bb.debug(1, "Exiting as '%s' cannot be found" % url.basename)
36 return 83 return
84 found += 1
37 bb.note("Handling file '%s' as a Freescale EULA-licensed archive." % url.basename) 85 bb.note("Handling file '%s' as a Freescale EULA-licensed archive." % url.basename)
38 cmd = "sh %s --auto-accept --force" % (url.localpath) 86 cmd = "sh %s --auto-accept --force" % (url.localpath)
39 bb.fetch2.runfetchcmd(cmd, d, quiet=True, workdir=rootdir) 87 bb.fetch2.runfetchcmd(cmd, d, quiet=True, workdir=rootdir)
88
89 # Check for two EULAs, one from the layer and one from the package
90 bb.note("Checking LIC_FILES_CHKSUM for Freescale EULA consistency...")
91 if found > 1:
92 bb.warn("The package contains multiple Freescale EULA-licensed archives. The consistency logic may not be able to detect a EULA problem.")
93 layer_license = d.getVar('LIC_FILES_CHKSUM_LAYER')
94 licenses = d.getVar('LIC_FILES_CHKSUM') or ""
95 md5sums = d.getVar('FSL_EULA_FILE_MD5SUMS') or ""
96 found_layer_license = False
97 found_package_license = False
98 for license in licenses.split():
99 try:
100 (method, host, path, user, pswd, parm) = bb.fetch.decodeurl(license)
101 if method != "file" or not path:
102 raise bb.fetch.MalformedUrl()
103 except bb.fetch.MalformedUrl:
104 bb.fatal("%s: LIC_FILES_CHKSUM contains an invalid URL: %s" % (d.getVar('PF'), license))
105 if license == layer_license:
106 bb.note("Found Freescale EULA for the layer %s." % license)
107 found_layer_license = True
108 elif parm.get('md5') in md5sums:
109 bb.note("Found Freescale EULA for the package %s." % license)
110 found_package_license = True
111 if not found_layer_license:
112 bb.fatal("The Freescale layer EULA '%s' is not listed in LIC_FILES_CHKSUM '%s'."
113 % (layer_license, licenses))
114 if not found_package_license:
115 bb.fatal("A valid package EULA with md5sum in %s was not found in LIC_FILES_CHKSUM '%s'."
116 % (md5sums.split(), licenses))
40} 117}
41 118
42python do_unpack() { 119python do_unpack() {