summaryrefslogtreecommitdiffstats
path: root/meta/classes/distrodata.bbclass
diff options
context:
space:
mode:
Diffstat (limited to 'meta/classes/distrodata.bbclass')
-rw-r--r--meta/classes/distrodata.bbclass425
1 files changed, 0 insertions, 425 deletions
diff --git a/meta/classes/distrodata.bbclass b/meta/classes/distrodata.bbclass
deleted file mode 100644
index 7712c8e40d..0000000000
--- a/meta/classes/distrodata.bbclass
+++ /dev/null
@@ -1,425 +0,0 @@
1include conf/distro/include/distro_alias.inc
2
3addhandler distro_eventhandler
4distro_eventhandler[eventmask] = "bb.event.BuildStarted"
5python distro_eventhandler() {
6 import oe.distro_check as dc
7 import csv
8 logfile = dc.create_log_file(e.data, "distrodata.csv")
9
10 lf = bb.utils.lockfile("%s.lock" % logfile)
11 with open(logfile, "a") as f:
12 writer = csv.writer(f)
13 writer.writerow(['Package', 'Description', 'Owner', 'License',
14 'VerMatch', 'Version', 'Upstream', 'Reason', 'Recipe Status',
15 'Distro 1', 'Distro 2', 'Distro 3'])
16 f.close()
17 bb.utils.unlockfile(lf)
18
19 return
20}
21
22addtask distrodata_np
23do_distrodata_np[nostamp] = "1"
24python do_distrodata_np() {
25 localdata = bb.data.createCopy(d)
26 pn = d.getVar("PN")
27 bb.note("Package Name: %s" % pn)
28
29 import oe.distro_check as dist_check
30 tmpdir = d.getVar('TMPDIR')
31 distro_check_dir = os.path.join(tmpdir, "distro_check")
32 datetime = localdata.getVar('DATETIME')
33 dist_check.update_distro_data(distro_check_dir, datetime, localdata)
34
35 if pn.find("-native") != -1:
36 pnstripped = pn.split("-native")
37 bb.note("Native Split: %s" % pnstripped)
38 localdata.setVar('OVERRIDES', "pn-" + pnstripped[0] + ":" + d.getVar('OVERRIDES'))
39
40 if pn.find("-cross") != -1:
41 pnstripped = pn.split("-cross")
42 bb.note("cross Split: %s" % pnstripped)
43 localdata.setVar('OVERRIDES', "pn-" + pnstripped[0] + ":" + d.getVar('OVERRIDES'))
44
45 if pn.find("-crosssdk") != -1:
46 pnstripped = pn.split("-crosssdk")
47 bb.note("cross Split: %s" % pnstripped)
48 localdata.setVar('OVERRIDES', "pn-" + pnstripped[0] + ":" + d.getVar('OVERRIDES'))
49
50 if pn.startswith("nativesdk-"):
51 pnstripped = pn.replace("nativesdk-", "")
52 bb.note("NativeSDK Split: %s" % pnstripped)
53 localdata.setVar('OVERRIDES', "pn-" + pnstripped + ":" + d.getVar('OVERRIDES'))
54
55
56 if pn.find("-initial") != -1:
57 pnstripped = pn.split("-initial")
58 bb.note("initial Split: %s" % pnstripped)
59 localdata.setVar('OVERRIDES', "pn-" + pnstripped[0] + ":" + d.getVar('OVERRIDES'))
60
61 """generate package information from .bb file"""
62 pname = localdata.getVar('PN')
63 pcurver = localdata.getVar('PV')
64 pdesc = localdata.getVar('DESCRIPTION')
65 if pdesc is not None:
66 pdesc = pdesc.replace(',','')
67 pdesc = pdesc.replace('\n','')
68
69 pgrp = localdata.getVar('SECTION')
70 plicense = localdata.getVar('LICENSE').replace(',','_')
71
72 rstatus = localdata.getVar('RECIPE_COLOR')
73 if rstatus is not None:
74 rstatus = rstatus.replace(',','')
75
76 pupver = localdata.getVar('RECIPE_UPSTREAM_VERSION')
77 if pcurver == pupver:
78 vermatch="1"
79 else:
80 vermatch="0"
81 noupdate_reason = localdata.getVar('RECIPE_NO_UPDATE_REASON')
82 if noupdate_reason is None:
83 noupdate="0"
84 else:
85 noupdate="1"
86 noupdate_reason = noupdate_reason.replace(',','')
87
88 maintainer = localdata.getVar('RECIPE_MAINTAINER')
89 rlrd = localdata.getVar('RECIPE_UPSTREAM_DATE')
90 result = dist_check.compare_in_distro_packages_list(distro_check_dir, localdata)
91
92 bb.note("DISTRO: %s,%s,%s,%s,%s,%s,%s,%s,%s\n" % \
93 (pname, pdesc, maintainer, plicense, vermatch, pcurver, pupver, noupdate_reason, rstatus))
94 line = pn
95 for i in result:
96 line = line + "," + i
97 bb.note("%s\n" % line)
98}
99do_distrodata_np[vardepsexclude] = "DATETIME"
100
101addtask distrodata
102do_distrodata[nostamp] = "1"
103python do_distrodata() {
104 import csv
105 logpath = d.getVar('LOG_DIR')
106 bb.utils.mkdirhier(logpath)
107 logfile = os.path.join(logpath, "distrodata.csv")
108
109 import oe.distro_check as dist_check
110 localdata = bb.data.createCopy(d)
111 tmpdir = d.getVar('TMPDIR')
112 distro_check_dir = os.path.join(tmpdir, "distro_check")
113 datetime = localdata.getVar('DATETIME')
114 dist_check.update_distro_data(distro_check_dir, datetime, localdata)
115
116 pn = d.getVar("PN")
117 bb.note("Package Name: %s" % pn)
118
119 if pn.find("-native") != -1:
120 pnstripped = pn.split("-native")
121 bb.note("Native Split: %s" % pnstripped)
122 localdata.setVar('OVERRIDES', "pn-" + pnstripped[0] + ":" + d.getVar('OVERRIDES'))
123
124 if pn.startswith("nativesdk-"):
125 pnstripped = pn.replace("nativesdk-", "")
126 bb.note("NativeSDK Split: %s" % pnstripped)
127 localdata.setVar('OVERRIDES', "pn-" + pnstripped + ":" + d.getVar('OVERRIDES'))
128
129 if pn.find("-cross") != -1:
130 pnstripped = pn.split("-cross")
131 bb.note("cross Split: %s" % pnstripped)
132 localdata.setVar('OVERRIDES', "pn-" + pnstripped[0] + ":" + d.getVar('OVERRIDES'))
133
134 if pn.find("-crosssdk") != -1:
135 pnstripped = pn.split("-crosssdk")
136 bb.note("cross Split: %s" % pnstripped)
137 localdata.setVar('OVERRIDES', "pn-" + pnstripped[0] + ":" + d.getVar('OVERRIDES'))
138
139 if pn.find("-initial") != -1:
140 pnstripped = pn.split("-initial")
141 bb.note("initial Split: %s" % pnstripped)
142 localdata.setVar('OVERRIDES', "pn-" + pnstripped[0] + ":" + d.getVar('OVERRIDES'))
143
144 """generate package information from .bb file"""
145 pname = localdata.getVar('PN')
146 pcurver = localdata.getVar('PV')
147 pdesc = localdata.getVar('DESCRIPTION')
148 if pdesc is not None:
149 pdesc = pdesc.replace(',','')
150 pdesc = pdesc.replace('\n','')
151
152 pgrp = localdata.getVar('SECTION')
153 plicense = localdata.getVar('LICENSE').replace(',','_')
154
155 rstatus = localdata.getVar('RECIPE_COLOR')
156 if rstatus is not None:
157 rstatus = rstatus.replace(',','')
158
159 pupver = localdata.getVar('RECIPE_UPSTREAM_VERSION')
160 if pcurver == pupver:
161 vermatch="1"
162 else:
163 vermatch="0"
164
165 noupdate_reason = localdata.getVar('RECIPE_NO_UPDATE_REASON')
166 if noupdate_reason is None:
167 noupdate="0"
168 else:
169 noupdate="1"
170 noupdate_reason = noupdate_reason.replace(',','')
171
172 maintainer = localdata.getVar('RECIPE_MAINTAINER')
173 rlrd = localdata.getVar('RECIPE_UPSTREAM_DATE')
174 # do the comparison
175 result = dist_check.compare_in_distro_packages_list(distro_check_dir, localdata)
176
177 lf = bb.utils.lockfile("%s.lock" % logfile)
178 with open(logfile, "a") as f:
179 row = [pname, pdesc, maintainer, plicense, vermatch, pcurver, pupver, noupdate_reason, rstatus]
180 row.extend(result)
181
182 writer = csv.writer(f)
183 writer.writerow(row)
184 f.close()
185 bb.utils.unlockfile(lf)
186}
187do_distrodata[vardepsexclude] = "DATETIME"
188
189addhandler checkpkg_eventhandler
190checkpkg_eventhandler[eventmask] = "bb.event.BuildStarted bb.event.BuildCompleted"
191python checkpkg_eventhandler() {
192 import csv
193
194 def parse_csv_file(filename):
195 package_dict = {}
196
197 with open(filename, "r") as f:
198 reader = csv.reader(f, delimiter='\t')
199 for row in reader:
200 pn = row[0]
201
202 if reader.line_num == 1:
203 header = row
204 continue
205
206 if not pn in package_dict.keys():
207 package_dict[pn] = row
208 f.close()
209
210 with open(filename, "w") as f:
211 writer = csv.writer(f, delimiter='\t')
212 writer.writerow(header)
213 for pn in package_dict.keys():
214 writer.writerow(package_dict[pn])
215 f.close()
216
217 del package_dict
218
219 if bb.event.getName(e) == "BuildStarted":
220 import oe.distro_check as dc
221 logfile = dc.create_log_file(e.data, "checkpkg.csv")
222
223 lf = bb.utils.lockfile("%s.lock" % logfile)
224 with open(logfile, "a") as f:
225 writer = csv.writer(f, delimiter='\t')
226 headers = ['Package', 'Version', 'Upver', 'License', 'Section',
227 'Home', 'Release', 'Depends', 'BugTracker', 'PE', 'Description',
228 'Status', 'Tracking', 'URI', 'MAINTAINER', 'NoUpReason']
229 writer.writerow(headers)
230 f.close()
231 bb.utils.unlockfile(lf)
232 elif bb.event.getName(e) == "BuildCompleted":
233 import os
234 filename = "tmp/log/checkpkg.csv"
235 if os.path.isfile(filename):
236 lf = bb.utils.lockfile("%s.lock"%filename)
237 parse_csv_file(filename)
238 bb.utils.unlockfile(lf)
239 return
240}
241
242addtask checkpkg
243do_checkpkg[nostamp] = "1"
244python do_checkpkg() {
245 localdata = bb.data.createCopy(d)
246 import csv
247 import re
248 import tempfile
249 import subprocess
250 import oe.recipeutils
251 from bb.utils import vercmp_string
252 from bb.fetch2 import FetchError, NoMethodError, decodeurl
253
254 def get_upstream_version_and_status():
255
256 # set if the upstream check fails reliably, e.g. absent git tags, or weird version format used on our or on upstream side.
257 upstream_version_unknown = localdata.getVar('UPSTREAM_VERSION_UNKNOWN')
258 # set if the upstream check cannot be reliably performed due to transient network failures, or server behaving weirdly.
259 # This one should be used sparingly, as it completely excludes a recipe from upstream checking.
260 upstream_check_unreliable = localdata.getVar('UPSTREAM_CHECK_UNRELIABLE')
261
262 if upstream_check_unreliable == "1":
263 return "N/A", "CHECK_IS_UNRELIABLE"
264
265 uv = oe.recipeutils.get_recipe_upstream_version(localdata)
266 pupver = uv['version'] if uv['version'] else "N/A"
267 pversion = uv['current_version']
268 revision = uv['revision'] if uv['revision'] else "N/A"
269
270 if pupver == "N/A":
271 pstatus = "UNKNOWN" if upstream_version_unknown else "UNKNOWN_BROKEN"
272 else:
273 cmp = vercmp_string(pversion, pupver)
274 if cmp == -1:
275 pstatus = "UPDATE" if not upstream_version_unknown else "KNOWN_BROKEN"
276 elif cmp == 0:
277 pstatus = "MATCH" if not upstream_version_unknown else "KNOWN_BROKEN"
278 else:
279 pstatus = "UNKNOWN" if upstream_version_unknown else "UNKNOWN_BROKEN"
280
281 return pversion, pupver, pstatus, revision
282
283
284 """initialize log files."""
285 logpath = d.getVar('LOG_DIR')
286 bb.utils.mkdirhier(logpath)
287 logfile = os.path.join(logpath, "checkpkg.csv")
288
289 """generate package information from .bb file"""
290 pname = d.getVar('PN')
291
292 if pname.find("-native") != -1:
293 if d.getVar('BBCLASSEXTEND'):
294 return
295 pnstripped = pname.split("-native")
296 bb.note("Native Split: %s" % pnstripped)
297 localdata.setVar('OVERRIDES', "pn-" + pnstripped[0] + ":" + d.getVar('OVERRIDES'))
298
299 if pname.startswith("nativesdk-"):
300 if d.getVar('BBCLASSEXTEND'):
301 return
302 pnstripped = pname.replace("nativesdk-", "")
303 bb.note("NativeSDK Split: %s" % pnstripped)
304 localdata.setVar('OVERRIDES', "pn-" + pnstripped + ":" + d.getVar('OVERRIDES'))
305
306 if pname.find("-cross") != -1:
307 pnstripped = pname.split("-cross")
308 bb.note("cross Split: %s" % pnstripped)
309 localdata.setVar('OVERRIDES', "pn-" + pnstripped[0] + ":" + d.getVar('OVERRIDES'))
310
311 if pname.find("-initial") != -1:
312 pnstripped = pname.split("-initial")
313 bb.note("initial Split: %s" % pnstripped)
314 localdata.setVar('OVERRIDES', "pn-" + pnstripped[0] + ":" + d.getVar('OVERRIDES'))
315
316 pdesc = localdata.getVar('DESCRIPTION')
317 pgrp = localdata.getVar('SECTION')
318 plicense = localdata.getVar('LICENSE')
319 psection = localdata.getVar('SECTION')
320 phome = localdata.getVar('HOMEPAGE')
321 prelease = localdata.getVar('PR')
322 pdepends = localdata.getVar('DEPENDS')
323 pbugtracker = localdata.getVar('BUGTRACKER')
324 ppe = localdata.getVar('PE')
325 psrcuri = localdata.getVar('SRC_URI')
326 maintainer = localdata.getVar('RECIPE_MAINTAINER')
327
328 pversion, pupver, pstatus, prevision = get_upstream_version_and_status()
329
330 if psrcuri:
331 psrcuri = psrcuri.split()[0]
332 else:
333 psrcuri = "none"
334 pdepends = "".join(pdepends.split("\t"))
335 pdesc = "".join(pdesc.split("\t"))
336 no_upgr_reason = d.getVar('RECIPE_NO_UPDATE_REASON')
337 lf = bb.utils.lockfile("%s.lock" % logfile)
338 with open(logfile, "a") as f:
339 writer = csv.writer(f, delimiter='\t')
340 writer.writerow([pname, pversion, pupver, plicense, psection, phome,
341 prelease, pdepends, pbugtracker, ppe, pdesc, pstatus, prevision,
342 psrcuri, maintainer, no_upgr_reason])
343 f.close()
344 bb.utils.unlockfile(lf)
345}
346
347addhandler distro_check_eventhandler
348distro_check_eventhandler[eventmask] = "bb.event.BuildStarted"
349python distro_check_eventhandler() {
350 """initialize log files."""
351 import oe.distro_check as dc
352 result_file = dc.create_log_file(e.data, "distrocheck.csv")
353 return
354}
355
356addtask distro_check
357do_distro_check[nostamp] = "1"
358do_distro_check[vardepsexclude] += "DATETIME"
359python do_distro_check() {
360 """checks if the package is present in other public Linux distros"""
361 import oe.distro_check as dc
362 import shutil
363 if bb.data.inherits_class('native', d) or bb.data.inherits_class('cross', d) or bb.data.inherits_class('sdk', d) or bb.data.inherits_class('crosssdk', d) or bb.data.inherits_class('nativesdk',d):
364 return
365
366 localdata = bb.data.createCopy(d)
367 tmpdir = d.getVar('TMPDIR')
368 distro_check_dir = os.path.join(tmpdir, "distro_check")
369 logpath = d.getVar('LOG_DIR')
370 bb.utils.mkdirhier(logpath)
371 result_file = os.path.join(logpath, "distrocheck.csv")
372 datetime = localdata.getVar('DATETIME')
373 dc.update_distro_data(distro_check_dir, datetime, localdata)
374
375 # do the comparison
376 result = dc.compare_in_distro_packages_list(distro_check_dir, d)
377
378 # save the results
379 dc.save_distro_check_result(result, datetime, result_file, d)
380}
381
382#
383#Check Missing License Text.
384#Use this task to generate the missing license text data for pkg-report system,
385#then we can search those recipes which license text isn't exsit in common-licenses directory
386#
387addhandler checklicense_eventhandler
388checklicense_eventhandler[eventmask] = "bb.event.BuildStarted"
389python checklicense_eventhandler() {
390 """initialize log files."""
391 import csv
392 import oe.distro_check as dc
393 logfile = dc.create_log_file(e.data, "missinglicense.csv")
394 lf = bb.utils.lockfile("%s.lock" % logfile)
395 with open(logfile, "a") as f:
396 writer = csv.writer(f, delimiter='\t')
397 writer.writerow(['Package', 'License', 'MissingLicense'])
398 f.close()
399 bb.utils.unlockfile(lf)
400 return
401}
402
403addtask checklicense
404do_checklicense[nostamp] = "1"
405python do_checklicense() {
406 import csv
407 import shutil
408 logpath = d.getVar('LOG_DIR')
409 bb.utils.mkdirhier(logpath)
410 pn = d.getVar('PN')
411 logfile = os.path.join(logpath, "missinglicense.csv")
412 generic_directory = d.getVar('COMMON_LICENSE_DIR')
413 license_types = d.getVar('LICENSE')
414 for license_type in ((license_types.replace('+', '').replace('|', '&')
415 .replace('(', '').replace(')', '').replace(';', '')
416 .replace(',', '').replace(" ", "").split("&"))):
417 if not os.path.isfile(os.path.join(generic_directory, license_type)):
418 lf = bb.utils.lockfile("%s.lock" % logfile)
419 with open(logfile, "a") as f:
420 writer = csv.writer(f, delimiter='\t')
421 writer.writerow([pn, license_types, license_type])
422 f.close()
423 bb.utils.unlockfile(lf)
424 return
425}