mirror of
https://git.yoctoproject.org/poky
synced 2026-09-13 09:49:32 +02:00
Compare commits
188 Commits
yocto-5.0.
...
thud-20.0.
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
1cab405d88 | ||
|
|
ca417455d7 | ||
|
|
5fe5271c9d | ||
|
|
8bbd177bb8 | ||
|
|
2ef46c44f5 | ||
|
|
263cf203bd | ||
|
|
0c6290b6bc | ||
|
|
cfbd125fef | ||
|
|
103f13ac6e | ||
|
|
b5dd9158e9 | ||
|
|
25c7bf985e | ||
|
|
e313645b88 | ||
|
|
894df54323 | ||
|
|
de7be89608 | ||
|
|
a4e7bb5346 | ||
|
|
c9bffece78 | ||
|
|
bb2d4def8d | ||
|
|
a8bccfa9a5 | ||
|
|
3fc361f5f0 | ||
|
|
356c6a7b68 | ||
|
|
45e3843c30 | ||
|
|
7c7daa3ec0 | ||
|
|
ee036060a8 | ||
|
|
436b5ceca4 | ||
|
|
2b91be4910 | ||
|
|
e82982094a | ||
|
|
171367cbfd | ||
|
|
2b70fb6ff9 | ||
|
|
25f260f593 | ||
|
|
477b925f55 | ||
|
|
f130b74f8d | ||
|
|
d8276fb3af | ||
|
|
1118e24f23 | ||
|
|
7171e8dcfc | ||
|
|
e662a84379 | ||
|
|
5114d69d95 | ||
|
|
0e75cee6fb | ||
|
|
18ac0e2cee | ||
|
|
7f3ee480cd | ||
|
|
d4326022ba | ||
|
|
910cdcc764 | ||
|
|
14c767243b | ||
|
|
c8e72df9f1 | ||
|
|
e09515d282 | ||
|
|
8bfb94cc9f | ||
|
|
72c040ef58 | ||
|
|
f3205c7e24 | ||
|
|
cfee41c482 | ||
|
|
f5a6daefa7 | ||
|
|
06558e8263 | ||
|
|
19627f0f0f | ||
|
|
cefe82c765 | ||
|
|
6806965405 | ||
|
|
aa22459112 | ||
|
|
499c3f1b18 | ||
|
|
f1273ebf04 | ||
|
|
ca9b96c55e | ||
|
|
75edf19b26 | ||
|
|
6ea3ee45c8 | ||
|
|
f0da07d5ec | ||
|
|
c85578d5c8 | ||
|
|
11e16fcf37 | ||
|
|
7ab39b34cf | ||
|
|
bdb6d5e51c | ||
|
|
e215480cff | ||
|
|
a1130dca9c | ||
|
|
f193f12407 | ||
|
|
91c987bda1 | ||
|
|
0d7fc933c2 | ||
|
|
2402547c97 | ||
|
|
d488e8c03b | ||
|
|
d28d537a54 | ||
|
|
9299827d5b | ||
|
|
0fee785a13 | ||
|
|
99c989b250 | ||
|
|
6fa338d15e | ||
|
|
117da4d473 | ||
|
|
e92d3cfbb4 | ||
|
|
b68c73127e | ||
|
|
e4694ebda6 | ||
|
|
d1138c618c | ||
|
|
cc4ce7db19 | ||
|
|
f48d96e4df | ||
|
|
b55b254f4e | ||
|
|
1cfa86d80f | ||
|
|
b4e664db71 | ||
|
|
34a2953a95 | ||
|
|
90e0658f2e | ||
|
|
037a69934c | ||
|
|
26750a75dc | ||
|
|
ce93ac6395 | ||
|
|
98d689400d | ||
|
|
6b673012d9 | ||
|
|
d50041ea78 | ||
|
|
38887e6c1a | ||
|
|
bc246384a1 | ||
|
|
1dc65214c8 | ||
|
|
c90a56ed6d | ||
|
|
e2a2f8cd89 | ||
|
|
d513b1d6bb | ||
|
|
da35b05c7f | ||
|
|
7e27a9c351 | ||
|
|
f85b494630 | ||
|
|
c56383ce65 | ||
|
|
87e3a9739d | ||
|
|
004ec4fb4d | ||
|
|
8349383002 | ||
|
|
af4b3c6f9b | ||
|
|
a3c44df7b7 | ||
|
|
dbc9755027 | ||
|
|
d99d261613 | ||
|
|
59c4460203 | ||
|
|
582f0ca361 | ||
|
|
1b2dccd9b9 | ||
|
|
8271ca3968 | ||
|
|
94a6cd1c2f | ||
|
|
95b373b7eb | ||
|
|
e8fb450ad5 | ||
|
|
7ded3cc8cc | ||
|
|
4623ec19ac | ||
|
|
274946ead7 | ||
|
|
2559ad01c3 | ||
|
|
7d0a2ece0b | ||
|
|
44d52d9c72 | ||
|
|
339d7d2bd6 | ||
|
|
7ef287ae21 | ||
|
|
e886536f1b | ||
|
|
494ba9bf74 | ||
|
|
b57a73f9c3 | ||
|
|
2aabfcb46d | ||
|
|
667f70276d | ||
|
|
356355d1a7 | ||
|
|
8b9e5b95e5 | ||
|
|
d6725d934d | ||
|
|
425b42f720 | ||
|
|
f34e49fa2f | ||
|
|
d0884492a8 | ||
|
|
c5ba99bc06 | ||
|
|
400d491e8d | ||
|
|
9cedaa6740 | ||
|
|
074cd4f22c | ||
|
|
2cafee8620 | ||
|
|
237ff3e462 | ||
|
|
ea1ffae258 | ||
|
|
19287294c1 | ||
|
|
0a5b7850e5 | ||
|
|
01d00cd776 | ||
|
|
f349ec0424 | ||
|
|
e09a79e997 | ||
|
|
86dbdfa00d | ||
|
|
359ce89adf | ||
|
|
510e6e2143 | ||
|
|
29361d7aeb | ||
|
|
c7ff99ab44 | ||
|
|
d69080b9da | ||
|
|
d6ba484506 | ||
|
|
72d7b5b5d4 | ||
|
|
3c27f3b3a7 | ||
|
|
c414b06ea6 | ||
|
|
d7594fd2ae | ||
|
|
5e12af7587 | ||
|
|
1cd8b3b789 | ||
|
|
ce291652c5 | ||
|
|
594679bb48 | ||
|
|
9cf4132158 | ||
|
|
835cf20001 | ||
|
|
588480ff19 | ||
|
|
920a95e424 | ||
|
|
5778c709b5 | ||
|
|
b9943e4bfe | ||
|
|
7ad6069850 | ||
|
|
fecdb7c64a | ||
|
|
d0e0a3d7a8 | ||
|
|
6b504019d6 | ||
|
|
f6f17e974a | ||
|
|
d62c933d84 | ||
|
|
6ebd270b08 | ||
|
|
810f4827b6 | ||
|
|
5ab68ca832 | ||
|
|
3896bf313f | ||
|
|
33e5b9e5ad | ||
|
|
8dccbf6752 | ||
|
|
93fc92cf42 | ||
|
|
94b1388251 | ||
|
|
1c88c939f8 | ||
|
|
7692a65189 | ||
|
|
c31c80aa8a | ||
|
|
436da7fbf3 |
@@ -1,7 +1,7 @@
|
|||||||
#!/usr/bin/env python3
|
#!/usr/bin/env python3
|
||||||
|
|
||||||
# bitbake-diffsigs
|
# bitbake-diffsigs / bitbake-dumpsig
|
||||||
# BitBake task signature data comparison utility
|
# BitBake task signature data dump and comparison utility
|
||||||
#
|
#
|
||||||
# Copyright (C) 2012-2013, 2017 Intel Corporation
|
# Copyright (C) 2012-2013, 2017 Intel Corporation
|
||||||
#
|
#
|
||||||
@@ -21,7 +21,6 @@
|
|||||||
import os
|
import os
|
||||||
import sys
|
import sys
|
||||||
import warnings
|
import warnings
|
||||||
import fnmatch
|
|
||||||
import argparse
|
import argparse
|
||||||
import logging
|
import logging
|
||||||
import pickle
|
import pickle
|
||||||
@@ -32,7 +31,10 @@ import bb.tinfoil
|
|||||||
import bb.siggen
|
import bb.siggen
|
||||||
import bb.msg
|
import bb.msg
|
||||||
|
|
||||||
logger = bb.msg.logger_create('bitbake-diffsigs')
|
myname = os.path.basename(sys.argv[0])
|
||||||
|
logger = bb.msg.logger_create(myname)
|
||||||
|
|
||||||
|
is_dump = myname == 'bitbake-dumpsig'
|
||||||
|
|
||||||
def find_siginfo(tinfoil, pn, taskname, sigs=None):
|
def find_siginfo(tinfoil, pn, taskname, sigs=None):
|
||||||
result = None
|
result = None
|
||||||
@@ -59,8 +61,8 @@ def find_siginfo(tinfoil, pn, taskname, sigs=None):
|
|||||||
sys.exit(2)
|
sys.exit(2)
|
||||||
return result
|
return result
|
||||||
|
|
||||||
def find_compare_task(bbhandler, pn, taskname, sig1=None, sig2=None, color=False):
|
def find_siginfo_task(bbhandler, pn, taskname, sig1=None, sig2=None):
|
||||||
""" Find the most recent signature files for the specified PN/task and compare them """
|
""" Find the most recent signature files for the specified PN/task """
|
||||||
|
|
||||||
if not taskname.startswith('do_'):
|
if not taskname.startswith('do_'):
|
||||||
taskname = 'do_%s' % taskname
|
taskname = 'do_%s' % taskname
|
||||||
@@ -79,73 +81,81 @@ def find_compare_task(bbhandler, pn, taskname, sig1=None, sig2=None, color=False
|
|||||||
latestfiles = [sigfiles[sig1], sigfiles[sig2]]
|
latestfiles = [sigfiles[sig1], sigfiles[sig2]]
|
||||||
else:
|
else:
|
||||||
filedates = find_siginfo(bbhandler, pn, taskname)
|
filedates = find_siginfo(bbhandler, pn, taskname)
|
||||||
latestfiles = sorted(filedates.keys(), key=lambda f: filedates[f])[-3:]
|
latestfiles = sorted(filedates.keys(), key=lambda f: filedates[f])[-2:]
|
||||||
if not latestfiles:
|
if not latestfiles:
|
||||||
logger.error('No sigdata files found matching %s %s' % (pn, taskname))
|
logger.error('No sigdata files found matching %s %s' % (pn, taskname))
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
elif len(latestfiles) < 2:
|
|
||||||
logger.error('Only one matching sigdata file found for the specified task (%s %s)' % (pn, taskname))
|
|
||||||
sys.exit(1)
|
|
||||||
|
|
||||||
# Define recursion callback
|
return latestfiles
|
||||||
def recursecb(key, hash1, hash2):
|
|
||||||
hashes = [hash1, hash2]
|
|
||||||
hashfiles = find_siginfo(bbhandler, key, None, hashes)
|
|
||||||
|
|
||||||
recout = []
|
|
||||||
if len(hashfiles) == 0:
|
|
||||||
recout.append("Unable to find matching sigdata for %s with hashes %s or %s" % (key, hash1, hash2))
|
|
||||||
elif not hash1 in hashfiles:
|
|
||||||
recout.append("Unable to find matching sigdata for %s with hash %s" % (key, hash1))
|
|
||||||
elif not hash2 in hashfiles:
|
|
||||||
recout.append("Unable to find matching sigdata for %s with hash %s" % (key, hash2))
|
|
||||||
else:
|
|
||||||
out2 = bb.siggen.compare_sigfiles(hashfiles[hash1], hashfiles[hash2], recursecb, color=color)
|
|
||||||
for change in out2:
|
|
||||||
for line in change.splitlines():
|
|
||||||
recout.append(' ' + line)
|
|
||||||
|
|
||||||
return recout
|
# Define recursion callback
|
||||||
|
def recursecb(key, hash1, hash2):
|
||||||
|
hashes = [hash1, hash2]
|
||||||
|
hashfiles = find_siginfo(tinfoil, key, None, hashes)
|
||||||
|
|
||||||
# Recurse into signature comparison
|
recout = []
|
||||||
logger.debug("Signature file (previous): %s" % latestfiles[-2])
|
if len(hashfiles) == 0:
|
||||||
logger.debug("Signature file (latest): %s" % latestfiles[-1])
|
recout.append("Unable to find matching sigdata for %s with hashes %s or %s" % (key, hash1, hash2))
|
||||||
output = bb.siggen.compare_sigfiles(latestfiles[-2], latestfiles[-1], recursecb, color=color)
|
elif not hash1 in hashfiles:
|
||||||
if output:
|
recout.append("Unable to find matching sigdata for %s with hash %s" % (key, hash1))
|
||||||
print('\n'.join(output))
|
elif not hash2 in hashfiles:
|
||||||
sys.exit(0)
|
recout.append("Unable to find matching sigdata for %s with hash %s" % (key, hash2))
|
||||||
|
else:
|
||||||
|
out2 = bb.siggen.compare_sigfiles(hashfiles[hash1], hashfiles[hash2], recursecb, color=color)
|
||||||
|
for change in out2:
|
||||||
|
for line in change.splitlines():
|
||||||
|
recout.append(' ' + line)
|
||||||
|
|
||||||
|
return recout
|
||||||
|
|
||||||
|
|
||||||
parser = argparse.ArgumentParser(
|
parser = argparse.ArgumentParser(
|
||||||
description="Compares siginfo/sigdata files written out by BitBake")
|
description=("Dumps" if is_dump else "Compares") + " siginfo/sigdata files written out by BitBake")
|
||||||
|
|
||||||
parser.add_argument('-d', '--debug',
|
parser.add_argument('-D', '--debug',
|
||||||
help='Enable debug output',
|
help='Enable debug output',
|
||||||
action='store_true')
|
action='store_true')
|
||||||
|
|
||||||
parser.add_argument('--color',
|
if is_dump:
|
||||||
help='Colorize output (where %(metavar)s is %(choices)s)',
|
parser.add_argument("-t", "--task",
|
||||||
choices=['auto', 'always', 'never'], default='auto', metavar='color')
|
help="find the signature data file for the last run of the specified task",
|
||||||
|
action="store", dest="taskargs", nargs=2, metavar=('recipename', 'taskname'))
|
||||||
|
|
||||||
parser.add_argument("-t", "--task",
|
parser.add_argument("sigdatafile1",
|
||||||
help="find the signature data files for last two runs of the specified task and compare them",
|
help="Signature file to dump. Not used when using -t/--task.",
|
||||||
action="store", dest="taskargs", nargs=2, metavar=('recipename', 'taskname'))
|
action="store", nargs='?', metavar="sigdatafile")
|
||||||
|
else:
|
||||||
|
parser.add_argument('-c', '--color',
|
||||||
|
help='Colorize the output (where %(metavar)s is %(choices)s)',
|
||||||
|
choices=['auto', 'always', 'never'], default='auto', metavar='color')
|
||||||
|
|
||||||
parser.add_argument("-s", "--signature",
|
parser.add_argument('-d', '--dump',
|
||||||
help="With -t/--task, specify the signatures to look for instead of taking the last two",
|
help='Dump the last signature data instead of comparing (equivalent to using bitbake-dumpsig)',
|
||||||
action="store", dest="sigargs", nargs=2, metavar=('fromsig', 'tosig'))
|
action='store_true')
|
||||||
|
|
||||||
parser.add_argument("sigdatafile1",
|
parser.add_argument("-t", "--task",
|
||||||
help="First signature file to compare (or signature file to dump, if second not specified). Not used when using -t/--task.",
|
help="find the signature data files for the last two runs of the specified task and compare them",
|
||||||
action="store", nargs='?')
|
action="store", dest="taskargs", nargs=2, metavar=('recipename', 'taskname'))
|
||||||
|
|
||||||
parser.add_argument("sigdatafile2",
|
parser.add_argument("-s", "--signature",
|
||||||
help="Second signature file to compare",
|
help="With -t/--task, specify the signatures to look for instead of taking the last two",
|
||||||
action="store", nargs='?')
|
action="store", dest="sigargs", nargs=2, metavar=('fromsig', 'tosig'))
|
||||||
|
|
||||||
|
parser.add_argument("sigdatafile1",
|
||||||
|
help="First signature file to compare (or signature file to dump, if second not specified). Not used when using -t/--task.",
|
||||||
|
action="store", nargs='?')
|
||||||
|
|
||||||
|
parser.add_argument("sigdatafile2",
|
||||||
|
help="Second signature file to compare",
|
||||||
|
action="store", nargs='?')
|
||||||
|
|
||||||
options = parser.parse_args()
|
options = parser.parse_args()
|
||||||
|
if is_dump:
|
||||||
|
options.color = 'never'
|
||||||
|
options.dump = True
|
||||||
|
options.sigdatafile2 = None
|
||||||
|
options.sigargs = None
|
||||||
|
|
||||||
if options.debug:
|
if options.debug:
|
||||||
logger.setLevel(logging.DEBUG)
|
logger.setLevel(logging.DEBUG)
|
||||||
@@ -155,17 +165,32 @@ color = (options.color == 'always' or (options.color == 'auto' and sys.stdout.is
|
|||||||
if options.taskargs:
|
if options.taskargs:
|
||||||
with bb.tinfoil.Tinfoil() as tinfoil:
|
with bb.tinfoil.Tinfoil() as tinfoil:
|
||||||
tinfoil.prepare(config_only=True)
|
tinfoil.prepare(config_only=True)
|
||||||
if options.sigargs:
|
if not options.dump and options.sigargs:
|
||||||
find_compare_task(tinfoil, options.taskargs[0], options.taskargs[1], options.sigargs[0], options.sigargs[1], color=color)
|
files = find_siginfo_task(tinfoil, options.taskargs[0], options.taskargs[1], options.sigargs[0], options.sigargs[1])
|
||||||
else:
|
else:
|
||||||
find_compare_task(tinfoil, options.taskargs[0], options.taskargs[1], color=color)
|
files = find_siginfo_task(tinfoil, options.taskargs[0], options.taskargs[1])
|
||||||
|
|
||||||
|
if options.dump:
|
||||||
|
logger.debug("Signature file: %s" % files[-1])
|
||||||
|
output = bb.siggen.dump_sigfile(files[-1])
|
||||||
|
else:
|
||||||
|
if len(files) < 2:
|
||||||
|
logger.error('Only one matching sigdata file found for the specified task (%s %s)' % (options.taskargs[0], options.taskargs[1]))
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
|
# Recurse into signature comparison
|
||||||
|
logger.debug("Signature file (previous): %s" % files[-2])
|
||||||
|
logger.debug("Signature file (latest): %s" % files[-1])
|
||||||
|
output = bb.siggen.compare_sigfiles(files[-2], files[-1], recursecb, color=color)
|
||||||
else:
|
else:
|
||||||
if options.sigargs:
|
if options.sigargs:
|
||||||
logger.error('-s/--signature can only be used together with -t/--task')
|
logger.error('-s/--signature can only be used together with -t/--task')
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
try:
|
try:
|
||||||
if options.sigdatafile1 and options.sigdatafile2:
|
if not options.dump and options.sigdatafile1 and options.sigdatafile2:
|
||||||
output = bb.siggen.compare_sigfiles(options.sigdatafile1, options.sigdatafile2, color=color)
|
with bb.tinfoil.Tinfoil() as tinfoil:
|
||||||
|
tinfoil.prepare(config_only=True)
|
||||||
|
output = bb.siggen.compare_sigfiles(options.sigdatafile1, options.sigdatafile2, recursecb, color=color)
|
||||||
elif options.sigdatafile1:
|
elif options.sigdatafile1:
|
||||||
output = bb.siggen.dump_sigfile(options.sigdatafile1)
|
output = bb.siggen.dump_sigfile(options.sigdatafile1)
|
||||||
else:
|
else:
|
||||||
@@ -179,5 +204,5 @@ else:
|
|||||||
logger.error('Invalid signature data - ensure you are specifying sigdata/siginfo files')
|
logger.error('Invalid signature data - ensure you are specifying sigdata/siginfo files')
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
|
|
||||||
if output:
|
if output:
|
||||||
print('\n'.join(output))
|
print('\n'.join(output))
|
||||||
|
|||||||
@@ -1,94 +0,0 @@
|
|||||||
#!/usr/bin/env python3
|
|
||||||
|
|
||||||
# bitbake-dumpsig
|
|
||||||
# BitBake task signature dump utility
|
|
||||||
#
|
|
||||||
# Copyright (C) 2013 Intel Corporation
|
|
||||||
#
|
|
||||||
# This program is free software; you can redistribute it and/or modify
|
|
||||||
# it under the terms of the GNU General Public License version 2 as
|
|
||||||
# published by the Free Software Foundation.
|
|
||||||
#
|
|
||||||
# This program is distributed in the hope that it will be useful,
|
|
||||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
# GNU General Public License for more details.
|
|
||||||
#
|
|
||||||
# You should have received a copy of the GNU General Public License along
|
|
||||||
# with this program; if not, write to the Free Software Foundation, Inc.,
|
|
||||||
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
|
||||||
|
|
||||||
import os
|
|
||||||
import sys
|
|
||||||
import warnings
|
|
||||||
import optparse
|
|
||||||
import logging
|
|
||||||
import pickle
|
|
||||||
|
|
||||||
sys.path.insert(0, os.path.join(os.path.dirname(os.path.dirname(sys.argv[0])), 'lib'))
|
|
||||||
|
|
||||||
import bb.tinfoil
|
|
||||||
import bb.siggen
|
|
||||||
import bb.msg
|
|
||||||
|
|
||||||
logger = bb.msg.logger_create('bitbake-dumpsig')
|
|
||||||
|
|
||||||
def find_siginfo_task(bbhandler, pn, taskname):
|
|
||||||
""" Find the most recent signature file for the specified PN/task """
|
|
||||||
|
|
||||||
if not hasattr(bb.siggen, 'find_siginfo'):
|
|
||||||
logger.error('Metadata does not support finding signature data files')
|
|
||||||
sys.exit(1)
|
|
||||||
|
|
||||||
if not taskname.startswith('do_'):
|
|
||||||
taskname = 'do_%s' % taskname
|
|
||||||
|
|
||||||
filedates = bb.siggen.find_siginfo(pn, taskname, None, bbhandler.config_data)
|
|
||||||
latestfiles = sorted(filedates.keys(), key=lambda f: filedates[f])[-1:]
|
|
||||||
if not latestfiles:
|
|
||||||
logger.error('No sigdata files found matching %s %s' % (pn, taskname))
|
|
||||||
sys.exit(1)
|
|
||||||
|
|
||||||
return latestfiles[0]
|
|
||||||
|
|
||||||
parser = optparse.OptionParser(
|
|
||||||
description = "Dumps siginfo/sigdata files written out by BitBake",
|
|
||||||
usage = """
|
|
||||||
%prog -t recipename taskname
|
|
||||||
%prog sigdatafile""")
|
|
||||||
|
|
||||||
parser.add_option("-D", "--debug",
|
|
||||||
help = "enable debug",
|
|
||||||
action = "store_true", dest="debug", default = False)
|
|
||||||
|
|
||||||
parser.add_option("-t", "--task",
|
|
||||||
help = "find the signature data file for the specified task",
|
|
||||||
action="store", dest="taskargs", nargs=2, metavar='recipename taskname')
|
|
||||||
|
|
||||||
options, args = parser.parse_args(sys.argv)
|
|
||||||
|
|
||||||
if options.debug:
|
|
||||||
logger.setLevel(logging.DEBUG)
|
|
||||||
|
|
||||||
if options.taskargs:
|
|
||||||
tinfoil = bb.tinfoil.Tinfoil()
|
|
||||||
tinfoil.prepare(config_only = True)
|
|
||||||
file = find_siginfo_task(tinfoil, options.taskargs[0], options.taskargs[1])
|
|
||||||
logger.debug("Signature file: %s" % file)
|
|
||||||
elif len(args) == 1:
|
|
||||||
parser.print_help()
|
|
||||||
sys.exit(0)
|
|
||||||
else:
|
|
||||||
file = args[1]
|
|
||||||
|
|
||||||
try:
|
|
||||||
output = bb.siggen.dump_sigfile(file)
|
|
||||||
except IOError as e:
|
|
||||||
logger.error(str(e))
|
|
||||||
sys.exit(1)
|
|
||||||
except (pickle.UnpicklingError, EOFError):
|
|
||||||
logger.error('Invalid signature data - ensure you are specifying a sigdata/siginfo file')
|
|
||||||
sys.exit(1)
|
|
||||||
|
|
||||||
if output:
|
|
||||||
print('\n'.join(output))
|
|
||||||
1
bitbake/bin/bitbake-dumpsig
Symbolic link
1
bitbake/bin/bitbake-dumpsig
Symbolic link
@@ -0,0 +1 @@
|
|||||||
|
bitbake-diffsigs
|
||||||
@@ -588,6 +588,14 @@
|
|||||||
The name of the path in which to place the checkout.
|
The name of the path in which to place the checkout.
|
||||||
By default, the path is <filename>git/</filename>.
|
By default, the path is <filename>git/</filename>.
|
||||||
</para></listitem>
|
</para></listitem>
|
||||||
|
<listitem><para><emphasis>"usehead":</emphasis>
|
||||||
|
Enables local <filename>git://</filename> URLs to use the
|
||||||
|
current branch HEAD as the revision for use with
|
||||||
|
<filename>AUTOREV</filename>.
|
||||||
|
The "usehead" parameter implies no branch and only works
|
||||||
|
when the transfer protocol is
|
||||||
|
<filename>file://</filename>.
|
||||||
|
</para></listitem>
|
||||||
</itemizedlist>
|
</itemizedlist>
|
||||||
Here are some example URLs:
|
Here are some example URLs:
|
||||||
<literallayout class='monospaced'>
|
<literallayout class='monospaced'>
|
||||||
|
|||||||
@@ -609,14 +609,7 @@ class BBCooker:
|
|||||||
k2 = k.split(":do_")
|
k2 = k.split(":do_")
|
||||||
k = k2[0]
|
k = k2[0]
|
||||||
ktask = k2[1]
|
ktask = k2[1]
|
||||||
if mc:
|
taskdata[mc].add_provider(localdata[mc], self.recipecaches[mc], k)
|
||||||
# Provider might be from another mc
|
|
||||||
for mcavailable in self.multiconfigs:
|
|
||||||
# The first element is empty
|
|
||||||
if mcavailable:
|
|
||||||
taskdata[mcavailable].add_provider(localdata[mcavailable], self.recipecaches[mcavailable], k)
|
|
||||||
else:
|
|
||||||
taskdata[mc].add_provider(localdata[mc], self.recipecaches[mc], k)
|
|
||||||
current += 1
|
current += 1
|
||||||
if not ktask.startswith("do_"):
|
if not ktask.startswith("do_"):
|
||||||
ktask = "do_%s" % ktask
|
ktask = "do_%s" % ktask
|
||||||
|
|||||||
@@ -256,7 +256,7 @@ class URI(object):
|
|||||||
|
|
||||||
# Identify if the URI is relative or not
|
# Identify if the URI is relative or not
|
||||||
if urlp.scheme in self._relative_schemes and \
|
if urlp.scheme in self._relative_schemes and \
|
||||||
re.compile("^\w+:(?!//)").match(uri):
|
re.compile(r"^\w+:(?!//)").match(uri):
|
||||||
self.relative = True
|
self.relative = True
|
||||||
|
|
||||||
if not self.relative:
|
if not self.relative:
|
||||||
@@ -1469,7 +1469,7 @@ class FetchMethod(object):
|
|||||||
else:
|
else:
|
||||||
cmd = 'rpm2cpio.sh %s | cpio -id' % (file)
|
cmd = 'rpm2cpio.sh %s | cpio -id' % (file)
|
||||||
elif file.endswith('.deb') or file.endswith('.ipk'):
|
elif file.endswith('.deb') or file.endswith('.ipk'):
|
||||||
output = subprocess.check_output('ar -t %s' % file, preexec_fn=subprocess_setup, shell=True)
|
output = subprocess.check_output(['ar', '-t', file], preexec_fn=subprocess_setup)
|
||||||
datafile = None
|
datafile = None
|
||||||
if output:
|
if output:
|
||||||
for line in output.decode().splitlines():
|
for line in output.decode().splitlines():
|
||||||
|
|||||||
@@ -488,12 +488,15 @@ class Git(FetchMethod):
|
|||||||
source_error.append("clone directory not available or not up to date: " + ud.clonedir)
|
source_error.append("clone directory not available or not up to date: " + ud.clonedir)
|
||||||
|
|
||||||
if not source_found:
|
if not source_found:
|
||||||
if ud.shallow and os.path.exists(ud.fullshallow):
|
if ud.shallow:
|
||||||
bb.utils.mkdirhier(destdir)
|
if os.path.exists(ud.fullshallow):
|
||||||
runfetchcmd("tar -xzf %s" % ud.fullshallow, d, workdir=destdir)
|
bb.utils.mkdirhier(destdir)
|
||||||
source_found = True
|
runfetchcmd("tar -xzf %s" % ud.fullshallow, d, workdir=destdir)
|
||||||
|
source_found = True
|
||||||
|
else:
|
||||||
|
source_error.append("shallow clone not available: " + ud.fullshallow)
|
||||||
else:
|
else:
|
||||||
source_error.append("shallow clone not enabled or not available: " + ud.fullshallow)
|
source_error.append("shallow clone not enabled")
|
||||||
|
|
||||||
if not source_found:
|
if not source_found:
|
||||||
raise bb.fetch2.UnpackError("No up to date source found: " + "; ".join(source_error), ud.url)
|
raise bb.fetch2.UnpackError("No up to date source found: " + "; ".join(source_error), ud.url)
|
||||||
|
|||||||
@@ -63,6 +63,9 @@ class Svn(FetchMethod):
|
|||||||
relpath = self._strip_leading_slashes(ud.path)
|
relpath = self._strip_leading_slashes(ud.path)
|
||||||
ud.pkgdir = os.path.join(svndir, ud.host, relpath)
|
ud.pkgdir = os.path.join(svndir, ud.host, relpath)
|
||||||
ud.moddir = os.path.join(ud.pkgdir, ud.module)
|
ud.moddir = os.path.join(ud.pkgdir, ud.module)
|
||||||
|
# Protects the repository from concurrent updates, e.g. from two
|
||||||
|
# recipes fetching different revisions at the same time
|
||||||
|
ud.svnlock = os.path.join(ud.pkgdir, "svn.lock")
|
||||||
|
|
||||||
ud.setup_revisions(d)
|
ud.setup_revisions(d)
|
||||||
|
|
||||||
@@ -123,35 +126,40 @@ class Svn(FetchMethod):
|
|||||||
|
|
||||||
logger.debug(2, "Fetch: checking for module directory '" + ud.moddir + "'")
|
logger.debug(2, "Fetch: checking for module directory '" + ud.moddir + "'")
|
||||||
|
|
||||||
if os.access(os.path.join(ud.moddir, '.svn'), os.R_OK):
|
lf = bb.utils.lockfile(ud.svnlock)
|
||||||
svnupdatecmd = self._buildsvncommand(ud, d, "update")
|
|
||||||
logger.info("Update " + ud.url)
|
|
||||||
# We need to attempt to run svn upgrade first in case its an older working format
|
|
||||||
try:
|
|
||||||
runfetchcmd(ud.basecmd + " upgrade", d, workdir=ud.moddir)
|
|
||||||
except FetchError:
|
|
||||||
pass
|
|
||||||
logger.debug(1, "Running %s", svnupdatecmd)
|
|
||||||
bb.fetch2.check_network_access(d, svnupdatecmd, ud.url)
|
|
||||||
runfetchcmd(svnupdatecmd, d, workdir=ud.moddir)
|
|
||||||
else:
|
|
||||||
svnfetchcmd = self._buildsvncommand(ud, d, "fetch")
|
|
||||||
logger.info("Fetch " + ud.url)
|
|
||||||
# check out sources there
|
|
||||||
bb.utils.mkdirhier(ud.pkgdir)
|
|
||||||
logger.debug(1, "Running %s", svnfetchcmd)
|
|
||||||
bb.fetch2.check_network_access(d, svnfetchcmd, ud.url)
|
|
||||||
runfetchcmd(svnfetchcmd, d, workdir=ud.pkgdir)
|
|
||||||
|
|
||||||
scmdata = ud.parm.get("scmdata", "")
|
try:
|
||||||
if scmdata == "keep":
|
if os.access(os.path.join(ud.moddir, '.svn'), os.R_OK):
|
||||||
tar_flags = ""
|
svnupdatecmd = self._buildsvncommand(ud, d, "update")
|
||||||
else:
|
logger.info("Update " + ud.url)
|
||||||
tar_flags = "--exclude='.svn'"
|
# We need to attempt to run svn upgrade first in case its an older working format
|
||||||
|
try:
|
||||||
|
runfetchcmd(ud.basecmd + " upgrade", d, workdir=ud.moddir)
|
||||||
|
except FetchError:
|
||||||
|
pass
|
||||||
|
logger.debug(1, "Running %s", svnupdatecmd)
|
||||||
|
bb.fetch2.check_network_access(d, svnupdatecmd, ud.url)
|
||||||
|
runfetchcmd(svnupdatecmd, d, workdir=ud.moddir)
|
||||||
|
else:
|
||||||
|
svnfetchcmd = self._buildsvncommand(ud, d, "fetch")
|
||||||
|
logger.info("Fetch " + ud.url)
|
||||||
|
# check out sources there
|
||||||
|
bb.utils.mkdirhier(ud.pkgdir)
|
||||||
|
logger.debug(1, "Running %s", svnfetchcmd)
|
||||||
|
bb.fetch2.check_network_access(d, svnfetchcmd, ud.url)
|
||||||
|
runfetchcmd(svnfetchcmd, d, workdir=ud.pkgdir)
|
||||||
|
|
||||||
# tar them up to a defined filename
|
scmdata = ud.parm.get("scmdata", "")
|
||||||
runfetchcmd("tar %s -czf %s %s" % (tar_flags, ud.localpath, ud.path_spec), d,
|
if scmdata == "keep":
|
||||||
cleanup=[ud.localpath], workdir=ud.pkgdir)
|
tar_flags = ""
|
||||||
|
else:
|
||||||
|
tar_flags = "--exclude='.svn'"
|
||||||
|
|
||||||
|
# tar them up to a defined filename
|
||||||
|
runfetchcmd("tar %s -czf %s %s" % (tar_flags, ud.localpath, ud.path_spec), d,
|
||||||
|
cleanup=[ud.localpath], workdir=ud.pkgdir)
|
||||||
|
finally:
|
||||||
|
bb.utils.unlockfile(lf)
|
||||||
|
|
||||||
def clean(self, ud, d):
|
def clean(self, ud, d):
|
||||||
""" Clean SVN specific files and dirs """
|
""" Clean SVN specific files and dirs """
|
||||||
|
|||||||
@@ -448,7 +448,7 @@ def setup_bitbake(configParams, configuration, extrafeatures=None):
|
|||||||
else:
|
else:
|
||||||
logger.info("Reconnecting to bitbake server...")
|
logger.info("Reconnecting to bitbake server...")
|
||||||
if not os.path.exists(sockname):
|
if not os.path.exists(sockname):
|
||||||
print("Previous bitbake instance shutting down?, waiting to retry...")
|
logger.info("Previous bitbake instance shutting down?, waiting to retry...")
|
||||||
i = 0
|
i = 0
|
||||||
lock = None
|
lock = None
|
||||||
# Wait for 5s or until we can get the lock
|
# Wait for 5s or until we can get the lock
|
||||||
|
|||||||
@@ -1409,6 +1409,12 @@ class RunQueue:
|
|||||||
bb.event.fire(bb.event.DepTreeGenerated(depgraph), self.cooker.data)
|
bb.event.fire(bb.event.DepTreeGenerated(depgraph), self.cooker.data)
|
||||||
|
|
||||||
if self.state is runQueueSceneInit:
|
if self.state is runQueueSceneInit:
|
||||||
|
if not self.dm_event_handler_registered:
|
||||||
|
res = bb.event.register(self.dm_event_handler_name,
|
||||||
|
lambda x: self.dm.check(self) if self.state in [runQueueSceneRun, runQueueRunning, runQueueCleanUp] else False,
|
||||||
|
('bb.event.HeartbeatEvent',))
|
||||||
|
self.dm_event_handler_registered = True
|
||||||
|
|
||||||
dump = self.cooker.configuration.dump_signatures
|
dump = self.cooker.configuration.dump_signatures
|
||||||
if dump:
|
if dump:
|
||||||
self.rqdata.init_progress_reporter.finish()
|
self.rqdata.init_progress_reporter.finish()
|
||||||
@@ -1425,11 +1431,6 @@ class RunQueue:
|
|||||||
self.rqexe = RunQueueExecuteScenequeue(self)
|
self.rqexe = RunQueueExecuteScenequeue(self)
|
||||||
|
|
||||||
if self.state is runQueueSceneRun:
|
if self.state is runQueueSceneRun:
|
||||||
if not self.dm_event_handler_registered:
|
|
||||||
res = bb.event.register(self.dm_event_handler_name,
|
|
||||||
lambda x: self.dm.check(self) if self.state in [runQueueSceneRun, runQueueRunning, runQueueCleanUp] else False,
|
|
||||||
('bb.event.HeartbeatEvent',))
|
|
||||||
self.dm_event_handler_registered = True
|
|
||||||
retval = self.rqexe.execute()
|
retval = self.rqexe.execute()
|
||||||
|
|
||||||
if self.state is runQueueRunInit:
|
if self.state is runQueueRunInit:
|
||||||
|
|||||||
@@ -239,6 +239,12 @@ class ProcessServer(multiprocessing.Process):
|
|||||||
while not lock:
|
while not lock:
|
||||||
with bb.utils.timeout(3):
|
with bb.utils.timeout(3):
|
||||||
lock = bb.utils.lockfile(lockfile, shared=False, retry=False, block=True)
|
lock = bb.utils.lockfile(lockfile, shared=False, retry=False, block=True)
|
||||||
|
if lock:
|
||||||
|
# We hold the lock so we can remove the file (hide stale pid data)
|
||||||
|
bb.utils.remove(lockfile)
|
||||||
|
bb.utils.unlockfile(lock)
|
||||||
|
return
|
||||||
|
|
||||||
if not lock:
|
if not lock:
|
||||||
# Some systems may not have lsof available
|
# Some systems may not have lsof available
|
||||||
procs = None
|
procs = None
|
||||||
@@ -259,10 +265,6 @@ class ProcessServer(multiprocessing.Process):
|
|||||||
if procs:
|
if procs:
|
||||||
msg += ":\n%s" % str(procs)
|
msg += ":\n%s" % str(procs)
|
||||||
print(msg)
|
print(msg)
|
||||||
return
|
|
||||||
# We hold the lock so we can remove the file (hide stale pid data)
|
|
||||||
bb.utils.remove(lockfile)
|
|
||||||
bb.utils.unlockfile(lock)
|
|
||||||
|
|
||||||
def idle_commands(self, delay, fds=None):
|
def idle_commands(self, delay, fds=None):
|
||||||
nextsleep = delay
|
nextsleep = delay
|
||||||
@@ -412,27 +414,39 @@ class BitBakeServer(object):
|
|||||||
logstart_re = re.compile(self.start_log_format % ('([0-9]+)', '([0-9-]+ [0-9:.]+)'))
|
logstart_re = re.compile(self.start_log_format % ('([0-9]+)', '([0-9-]+ [0-9:.]+)'))
|
||||||
started = False
|
started = False
|
||||||
lines = []
|
lines = []
|
||||||
|
lastlines = []
|
||||||
with open(logfile, "r") as f:
|
with open(logfile, "r") as f:
|
||||||
for line in f:
|
for line in f:
|
||||||
if started:
|
if started:
|
||||||
lines.append(line)
|
lines.append(line)
|
||||||
else:
|
else:
|
||||||
|
lastlines.append(line)
|
||||||
res = logstart_re.match(line.rstrip())
|
res = logstart_re.match(line.rstrip())
|
||||||
if res:
|
if res:
|
||||||
ldatetime = datetime.datetime.strptime(res.group(2), self.start_log_datetime_format)
|
ldatetime = datetime.datetime.strptime(res.group(2), self.start_log_datetime_format)
|
||||||
if ldatetime >= startdatetime:
|
if ldatetime >= startdatetime:
|
||||||
started = True
|
started = True
|
||||||
lines.append(line)
|
lines.append(line)
|
||||||
|
if len(lastlines) > 60:
|
||||||
|
lastlines = lastlines[-60:]
|
||||||
if lines:
|
if lines:
|
||||||
if len(lines) > 10:
|
if len(lines) > 60:
|
||||||
bb.error("Last 10 lines of server log for this session (%s):\n%s" % (logfile, "".join(lines[-10:])))
|
bb.error("Last 60 lines of server log for this session (%s):\n%s" % (logfile, "".join(lines[-60:])))
|
||||||
else:
|
else:
|
||||||
bb.error("Server log for this session (%s):\n%s" % (logfile, "".join(lines)))
|
bb.error("Server log for this session (%s):\n%s" % (logfile, "".join(lines)))
|
||||||
|
elif lastlines:
|
||||||
|
bb.error("Server didn't start, last 60 loglines (%s):\n%s" % (logfile, "".join(lastlines)))
|
||||||
|
else:
|
||||||
|
bb.error("%s doesn't exist" % logfile)
|
||||||
|
|
||||||
raise SystemExit(1)
|
raise SystemExit(1)
|
||||||
|
|
||||||
ready.close()
|
ready.close()
|
||||||
|
|
||||||
def _startServer(self):
|
def _startServer(self):
|
||||||
print(self.start_log_format % (os.getpid(), datetime.datetime.now().strftime(self.start_log_datetime_format)))
|
print(self.start_log_format % (os.getpid(), datetime.datetime.now().strftime(self.start_log_datetime_format)))
|
||||||
|
sys.stdout.flush()
|
||||||
|
|
||||||
server = ProcessServer(self.bitbake_lock, self.sock, self.sockname)
|
server = ProcessServer(self.bitbake_lock, self.sock, self.sockname)
|
||||||
self.configuration.setServerRegIdleCallback(server.register_idle_function)
|
self.configuration.setServerRegIdleCallback(server.register_idle_function)
|
||||||
os.close(self.readypipe)
|
os.close(self.readypipe)
|
||||||
@@ -444,6 +458,8 @@ class BitBakeServer(object):
|
|||||||
server.server_timeout = self.configuration.server_timeout
|
server.server_timeout = self.configuration.server_timeout
|
||||||
server.xmlrpcinterface = self.configuration.xmlrpcinterface
|
server.xmlrpcinterface = self.configuration.xmlrpcinterface
|
||||||
print("Started bitbake server pid %d" % os.getpid())
|
print("Started bitbake server pid %d" % os.getpid())
|
||||||
|
sys.stdout.flush()
|
||||||
|
|
||||||
server.start()
|
server.start()
|
||||||
|
|
||||||
def connectProcessServer(sockname, featureset):
|
def connectProcessServer(sockname, featureset):
|
||||||
@@ -489,7 +505,8 @@ def connectProcessServer(sockname, featureset):
|
|||||||
command_chan.close()
|
command_chan.close()
|
||||||
for i in [writefd, readfd1, writefd2]:
|
for i in [writefd, readfd1, writefd2]:
|
||||||
try:
|
try:
|
||||||
os.close(i)
|
if i:
|
||||||
|
os.close(i)
|
||||||
except OSError:
|
except OSError:
|
||||||
pass
|
pass
|
||||||
sock.close()
|
sock.close()
|
||||||
|
|||||||
@@ -342,10 +342,10 @@ def dump_this_task(outfile, d):
|
|||||||
def init_colors(enable_color):
|
def init_colors(enable_color):
|
||||||
"""Initialise colour dict for passing to compare_sigfiles()"""
|
"""Initialise colour dict for passing to compare_sigfiles()"""
|
||||||
# First set up the colours
|
# First set up the colours
|
||||||
colors = {'color_title': '\033[1;37;40m',
|
colors = {'color_title': '\033[1m',
|
||||||
'color_default': '\033[0;37;40m',
|
'color_default': '\033[0m',
|
||||||
'color_add': '\033[1;32;40m',
|
'color_add': '\033[0;32m',
|
||||||
'color_remove': '\033[1;31;40m',
|
'color_remove': '\033[0;31m',
|
||||||
}
|
}
|
||||||
# Leave all keys present but clear the values
|
# Leave all keys present but clear the values
|
||||||
if not enable_color:
|
if not enable_color:
|
||||||
|
|||||||
@@ -1708,9 +1708,8 @@ class GitShallowTest(FetcherTest):
|
|||||||
with self.assertRaises(bb.fetch2.UnpackError) as context:
|
with self.assertRaises(bb.fetch2.UnpackError) as context:
|
||||||
fetcher.unpack(self.d.getVar('WORKDIR'))
|
fetcher.unpack(self.d.getVar('WORKDIR'))
|
||||||
|
|
||||||
self.assertTrue("No up to date source found" in context.exception.msg)
|
self.assertIn("No up to date source found", context.exception.msg)
|
||||||
self.assertTrue("clone directory not available or not up to date" in context.exception.msg)
|
self.assertIn("clone directory not available or not up to date", context.exception.msg)
|
||||||
self.assertTrue("shallow clone not enabled or not available" in context.exception.msg)
|
|
||||||
|
|
||||||
@skipIfNoNetwork()
|
@skipIfNoNetwork()
|
||||||
def test_that_unpack_does_work_when_using_git_shallow_tarball_but_tarball_is_not_available(self):
|
def test_that_unpack_does_work_when_using_git_shallow_tarball_but_tarball_is_not_available(self):
|
||||||
|
|||||||
@@ -28,7 +28,7 @@ class LayerIndexPlugin(ActionPlugin):
|
|||||||
layerdir = os.path.join(repodir, subdir)
|
layerdir = os.path.join(repodir, subdir)
|
||||||
if not os.path.exists(repodir):
|
if not os.path.exists(repodir):
|
||||||
if fetch_layer:
|
if fetch_layer:
|
||||||
result = subprocess.call('git clone %s %s' % (url, repodir), shell = True)
|
result = subprocess.call(['git', 'clone', url, repodir])
|
||||||
if result:
|
if result:
|
||||||
logger.error("Failed to download %s" % url)
|
logger.error("Failed to download %s" % url)
|
||||||
return None, None, None
|
return None, None, None
|
||||||
|
|||||||
@@ -37,17 +37,30 @@
|
|||||||
hardware.
|
hardware.
|
||||||
You will use Yocto Project to build a reference embedded OS
|
You will use Yocto Project to build a reference embedded OS
|
||||||
called Poky.
|
called Poky.
|
||||||
<note>
|
<note><title>Notes</title>
|
||||||
The examples in this paper assume you are using a native Linux
|
<itemizedlist>
|
||||||
system running a recent Ubuntu Linux distribution.
|
<listitem><para>
|
||||||
If the machine you want to use
|
The examples in this paper assume you are using a
|
||||||
Yocto Project on to build an image is not a native Linux
|
native Linux system running a recent Ubuntu Linux
|
||||||
system, you can still perform these steps by using CROss
|
distribution.
|
||||||
PlatformS (CROPS) and setting up a Poky container.
|
If the machine you want to use Yocto Project on to
|
||||||
See the
|
build an image
|
||||||
<ulink url='&YOCTO_DOCS_DEV_URL;#setting-up-to-use-crops'>Setting Up to Use CROss PlatformS (CROPS)</ulink>"
|
(<ulink url='&YOCTO_DOCS_REF_URL;#hardware-build-system-term'>build host</ulink>)
|
||||||
section in the Yocto Project Development Tasks Manual for more
|
is not a native Linux system, you can
|
||||||
information.
|
still perform these steps by using CROss PlatformS
|
||||||
|
(CROPS) and setting up a Poky container.
|
||||||
|
See the
|
||||||
|
<ulink url='&YOCTO_DOCS_DEV_URL;#setting-up-to-use-crops'>Setting Up to Use CROss PlatformS (CROPS)</ulink>"
|
||||||
|
section in the Yocto Project Development Tasks Manual for more
|
||||||
|
information.
|
||||||
|
</para></listitem>
|
||||||
|
<listitem><para>
|
||||||
|
You cannot use a build host that is using the
|
||||||
|
<ulink url='https://en.wikipedia.org/wiki/Windows_Subsystem_for_Linux'>Windows Subsystem for Linux</ulink>
|
||||||
|
(WSL).
|
||||||
|
The Yocto Project is not compatible with WSL.
|
||||||
|
</para></listitem>
|
||||||
|
</itemizedlist>
|
||||||
</note>
|
</note>
|
||||||
</para>
|
</para>
|
||||||
|
|
||||||
@@ -75,6 +88,10 @@
|
|||||||
Linux distributions that support the Yocto Project, see the
|
Linux distributions that support the Yocto Project, see the
|
||||||
"<ulink url='&YOCTO_DOCS_REF_URL;#detailed-supported-distros'>Supported Linux Distributions</ulink>"
|
"<ulink url='&YOCTO_DOCS_REF_URL;#detailed-supported-distros'>Supported Linux Distributions</ulink>"
|
||||||
section in the Yocto Project Reference Manual.
|
section in the Yocto Project Reference Manual.
|
||||||
|
For detailed information on preparing your build host, see
|
||||||
|
the
|
||||||
|
"<ulink url='&YOCTO_DOCS_DEV_URL;#dev-preparing-the-build-host'>Preparing the Build Host</ulink>"
|
||||||
|
section in the Yocto Project Development Tasks Manual.
|
||||||
</para></listitem>
|
</para></listitem>
|
||||||
<listitem><para>
|
<listitem><para>
|
||||||
<itemizedlist>
|
<itemizedlist>
|
||||||
|
|||||||
@@ -123,9 +123,14 @@
|
|||||||
</revision>
|
</revision>
|
||||||
<revision>
|
<revision>
|
||||||
<revnumber>2.6</revnumber>
|
<revnumber>2.6</revnumber>
|
||||||
<date>&REL_MONTH_YEAR;</date>
|
<date>November 2018</date>
|
||||||
<revremark>Released with the Yocto Project 2.6 Release.</revremark>
|
<revremark>Released with the Yocto Project 2.6 Release.</revremark>
|
||||||
</revision>
|
</revision>
|
||||||
|
<revision>
|
||||||
|
<revnumber>2.6.1</revnumber>
|
||||||
|
<date>&REL_MONTH_YEAR;</date>
|
||||||
|
<revremark>Released with the Yocto Project 2.6.1 Release.</revremark>
|
||||||
|
</revision>
|
||||||
</revhistory>
|
</revhistory>
|
||||||
|
|
||||||
<copyright>
|
<copyright>
|
||||||
|
|||||||
@@ -3237,30 +3237,22 @@
|
|||||||
post-installation script to be delayed until the first boot.
|
post-installation script to be delayed until the first boot.
|
||||||
For example, the script might need to be executed on the
|
For example, the script might need to be executed on the
|
||||||
device itself.
|
device itself.
|
||||||
To delay script execution until boot time, use the following
|
To delay script execution until boot time, you must explicitly
|
||||||
structure in the post-installation script:
|
mark post installs to defer to the target.
|
||||||
<literallayout class='monospaced'>
|
You can use <filename>pkg_postinst_ontarget()</filename> or
|
||||||
pkg_postinst_<replaceable>PACKAGENAME</replaceable>() {
|
call
|
||||||
if [ x"$D" = "x" ]; then
|
<filename>postinst-intercepts defer_to_first_boot</filename>
|
||||||
# Actions to carry out on the device go here
|
from <filename>pkg_postinst()</filename>.
|
||||||
else
|
Any failure of a <filename>pkg_postinst()</filename> script
|
||||||
exit 1
|
(including exit 1) triggers an error during the
|
||||||
fi
|
<ulink url='&YOCTO_DOCS_REF_URL;#ref-tasks-rootfs'><filename>do_rootfs</filename></ulink>
|
||||||
}
|
task.
|
||||||
</literallayout>
|
|
||||||
</para>
|
</para>
|
||||||
|
|
||||||
<para>
|
<para>
|
||||||
The previous example delays execution until the image boots
|
If you have recipes that use
|
||||||
again because the environment variable <filename>D</filename>
|
<filename>pkg_postinst</filename> function
|
||||||
points to the directory containing the image when
|
and they require the use of non-standard native
|
||||||
the root filesystem is created at build time but is unset
|
|
||||||
when executed on the first boot.
|
|
||||||
</para>
|
|
||||||
|
|
||||||
<para>
|
|
||||||
If you have recipes that use <filename>pkg_postinst</filename>
|
|
||||||
scripts and they require the use of non-standard native
|
|
||||||
tools that have dependencies during rootfs construction, you
|
tools that have dependencies during rootfs construction, you
|
||||||
need to use the
|
need to use the
|
||||||
<ulink url='&YOCTO_DOCS_REF_URL;#var-PACKAGE_WRITE_DEPS'><filename>PACKAGE_WRITE_DEPS</filename></ulink>
|
<ulink url='&YOCTO_DOCS_REF_URL;#var-PACKAGE_WRITE_DEPS'><filename>PACKAGE_WRITE_DEPS</filename></ulink>
|
||||||
@@ -3279,8 +3271,8 @@
|
|||||||
<filename>pkg_prerm</filename>, and
|
<filename>pkg_prerm</filename>, and
|
||||||
<filename>pkg_postrm</filename>, respectively.
|
<filename>pkg_postrm</filename>, respectively.
|
||||||
These scrips work in exactly the same way as does
|
These scrips work in exactly the same way as does
|
||||||
<filename>pkg_postinst</filename> with the exception that they
|
<filename>pkg_postinst</filename> with the exception
|
||||||
run at different times.
|
that they run at different times.
|
||||||
Also, because of when they run, they are not applicable to
|
Also, because of when they run, they are not applicable to
|
||||||
being run at image creation time like
|
being run at image creation time like
|
||||||
<filename>pkg_postinst</filename>.
|
<filename>pkg_postinst</filename>.
|
||||||
@@ -7270,13 +7262,12 @@
|
|||||||
easier-to-use and more flexible replacements for an
|
easier-to-use and more flexible replacements for an
|
||||||
existing functionality in OE-Core's
|
existing functionality in OE-Core's
|
||||||
<ulink url='&YOCTO_DOCS_REF_URL;#ref-classes-image-live'><filename>image-live</filename></ulink>
|
<ulink url='&YOCTO_DOCS_REF_URL;#ref-classes-image-live'><filename>image-live</filename></ulink>
|
||||||
class and <filename>mkefidisk.sh</filename> script.
|
class.
|
||||||
The difference between
|
The difference between Wic and those examples is
|
||||||
Wic and those examples is
|
that with Wic the functionality of those scripts is
|
||||||
that with Wic the
|
implemented by a general-purpose partitioning language,
|
||||||
functionality of those scripts is implemented
|
which is based on Redhat kickstart syntax.
|
||||||
by a general-purpose partitioning language, which is
|
</para></listitem>
|
||||||
based on Redhat kickstart syntax.</para></listitem>
|
|
||||||
</itemizedlist>
|
</itemizedlist>
|
||||||
</para>
|
</para>
|
||||||
</section>
|
</section>
|
||||||
@@ -11798,16 +11789,15 @@
|
|||||||
To run the tests automatically after the
|
To run the tests automatically after the
|
||||||
OpenEmbedded build system successfully creates an image,
|
OpenEmbedded build system successfully creates an image,
|
||||||
first set the
|
first set the
|
||||||
<ulink url='&YOCTO_DOCS_REF_URL;#var-TEST_IMAGE'><filename>TEST_IMAGE</filename></ulink>
|
<ulink url='&YOCTO_DOCS_REF_URL;#var-TESTIMAGE_AUTO'><filename>TESTIMAGE_AUTO</filename></ulink>
|
||||||
variable to "1" in your <filename>local.conf</filename>
|
variable to "1" in your <filename>local.conf</filename>
|
||||||
file in the
|
file in the
|
||||||
<ulink url='&YOCTO_DOCS_REF_URL;#build-directory'>Build Directory</ulink>:
|
<ulink url='&YOCTO_DOCS_REF_URL;#build-directory'>Build Directory</ulink>:
|
||||||
<literallayout class='monospaced'>
|
<literallayout class='monospaced'>
|
||||||
TEST_IMAGE = "1"
|
TESTIMAGE_AUTO = "1"
|
||||||
</literallayout>
|
</literallayout>
|
||||||
Next, build your image.
|
Next, build your image.
|
||||||
If the image successfully builds, the tests will be
|
If the image successfully builds, the tests run:
|
||||||
run:
|
|
||||||
<literallayout class='monospaced'>
|
<literallayout class='monospaced'>
|
||||||
bitbake core-image-sato
|
bitbake core-image-sato
|
||||||
</literallayout></para></listitem>
|
</literallayout></para></listitem>
|
||||||
|
|||||||
@@ -408,6 +408,12 @@
|
|||||||
<ulink url='https://git.yoctoproject.org/cgit/cgit.cgi/crops/about/'>CROPS</ulink>,
|
<ulink url='https://git.yoctoproject.org/cgit/cgit.cgi/crops/about/'>CROPS</ulink>,
|
||||||
which leverages
|
which leverages
|
||||||
<ulink url='https://www.docker.com/'>Docker Containers</ulink>.
|
<ulink url='https://www.docker.com/'>Docker Containers</ulink>.
|
||||||
|
<note>
|
||||||
|
You cannot use a build host that is using the
|
||||||
|
<ulink url='https://en.wikipedia.org/wiki/Windows_Subsystem_for_Linux'>Windows Subsystem for Linux</ulink>
|
||||||
|
(WSL).
|
||||||
|
The Yocto Project is not compatible with WSL.
|
||||||
|
</note>
|
||||||
</para>
|
</para>
|
||||||
|
|
||||||
<para>
|
<para>
|
||||||
|
|||||||
@@ -108,9 +108,14 @@
|
|||||||
</revision>
|
</revision>
|
||||||
<revision>
|
<revision>
|
||||||
<revnumber>2.6</revnumber>
|
<revnumber>2.6</revnumber>
|
||||||
<date>&REL_MONTH_YEAR;</date>
|
<date>November 2018</date>
|
||||||
<revremark>Released with the Yocto Project 2.6 Release.</revremark>
|
<revremark>Released with the Yocto Project 2.6 Release.</revremark>
|
||||||
</revision>
|
</revision>
|
||||||
|
<revision>
|
||||||
|
<revnumber>2.6.1</revnumber>
|
||||||
|
<date>&REL_MONTH_YEAR;</date>
|
||||||
|
<revremark>Released with the Yocto Project 2.6.1 Release.</revremark>
|
||||||
|
</revision>
|
||||||
</revhistory>
|
</revhistory>
|
||||||
|
|
||||||
<copyright>
|
<copyright>
|
||||||
|
|||||||
@@ -1603,8 +1603,11 @@
|
|||||||
<title>Creating a <filename>defconfig</filename> File</title>
|
<title>Creating a <filename>defconfig</filename> File</title>
|
||||||
|
|
||||||
<para>
|
<para>
|
||||||
A <filename>defconfig</filename> file is simply a
|
A <filename>defconfig</filename> file in the context of
|
||||||
<filename>.config</filename> renamed to "defconfig".
|
the Yocto Project is often a <filename>.config</filename>
|
||||||
|
file that is copied from a build or a
|
||||||
|
<filename>defconfig</filename> taken from the kernel tree
|
||||||
|
and moved into recipe space.
|
||||||
You can use a <filename>defconfig</filename> file
|
You can use a <filename>defconfig</filename> file
|
||||||
to retain a known set of kernel configurations from which the
|
to retain a known set of kernel configurations from which the
|
||||||
OpenEmbedded build system can draw to create the final
|
OpenEmbedded build system can draw to create the final
|
||||||
|
|||||||
@@ -93,9 +93,14 @@
|
|||||||
</revision>
|
</revision>
|
||||||
<revision>
|
<revision>
|
||||||
<revnumber>2.6</revnumber>
|
<revnumber>2.6</revnumber>
|
||||||
<date>&REL_MONTH_YEAR;</date>
|
<date>November 2018</date>
|
||||||
<revremark>Released with the Yocto Project 2.6 Release.</revremark>
|
<revremark>Released with the Yocto Project 2.6 Release.</revremark>
|
||||||
</revision>
|
</revision>
|
||||||
|
<revision>
|
||||||
|
<revnumber>2.6.1</revnumber>
|
||||||
|
<date>&REL_MONTH_YEAR;</date>
|
||||||
|
<revremark>Released with the Yocto Project 2.6.1 Release.</revremark>
|
||||||
|
</revision>
|
||||||
</revhistory>
|
</revhistory>
|
||||||
|
|
||||||
<copyright>
|
<copyright>
|
||||||
|
|||||||
@@ -77,9 +77,14 @@
|
|||||||
</revision>
|
</revision>
|
||||||
<revision>
|
<revision>
|
||||||
<revnumber>2.6</revnumber>
|
<revnumber>2.6</revnumber>
|
||||||
<date>&REL_MONTH_YEAR;</date>
|
<date>November 2018</date>
|
||||||
<revremark>Released with the Yocto Project 2.6 Release.</revremark>
|
<revremark>Released with the Yocto Project 2.6 Release.</revremark>
|
||||||
</revision>
|
</revision>
|
||||||
|
<revision>
|
||||||
|
<revnumber>2.6.1</revnumber>
|
||||||
|
<date>&REL_MONTH_YEAR;</date>
|
||||||
|
<revremark>Released with the Yocto Project 2.6.1 Release.</revremark>
|
||||||
|
</revision>
|
||||||
</revhistory>
|
</revhistory>
|
||||||
|
|
||||||
<copyright>
|
<copyright>
|
||||||
|
|||||||
@@ -38,9 +38,14 @@
|
|||||||
</revision>
|
</revision>
|
||||||
<revision>
|
<revision>
|
||||||
<revnumber>2.6</revnumber>
|
<revnumber>2.6</revnumber>
|
||||||
<date>&REL_MONTH_YEAR;</date>
|
<date>November 2018</date>
|
||||||
<revremark>Released with the Yocto Project 2.6 Release.</revremark>
|
<revremark>Released with the Yocto Project 2.6 Release.</revremark>
|
||||||
</revision>
|
</revision>
|
||||||
|
<revision>
|
||||||
|
<revnumber>2.6.1</revnumber>
|
||||||
|
<date>&REL_MONTH_YEAR;</date>
|
||||||
|
<revremark>Released with the Yocto Project 2.6.1 Release.</revremark>
|
||||||
|
</revision>
|
||||||
</revhistory>
|
</revhistory>
|
||||||
|
|
||||||
<copyright>
|
<copyright>
|
||||||
|
|||||||
@@ -1,19 +1,19 @@
|
|||||||
<!ENTITY DISTRO "2.6">
|
<!ENTITY DISTRO "2.6.1">
|
||||||
<!ENTITY DISTRO_COMPRESSED "26">
|
<!ENTITY DISTRO_COMPRESSED "261">
|
||||||
<!ENTITY DISTRO_NAME_NO_CAP "thud">
|
<!ENTITY DISTRO_NAME_NO_CAP "thud">
|
||||||
<!ENTITY DISTRO_NAME "Thud">
|
<!ENTITY DISTRO_NAME "Thud">
|
||||||
<!ENTITY DISTRO_NAME_NO_CAP_MINUS_ONE "sumo">
|
<!ENTITY DISTRO_NAME_NO_CAP_MINUS_ONE "sumo">
|
||||||
<!ENTITY DISTRO_NAME_MINUS_ONE "Sumo">
|
<!ENTITY DISTRO_NAME_MINUS_ONE "Sumo">
|
||||||
<!ENTITY YOCTO_DOC_VERSION "2.6">
|
<!ENTITY YOCTO_DOC_VERSION "2.6.1">
|
||||||
<!ENTITY YOCTO_DOC_VERSION_MINUS_ONE "2.5">
|
<!ENTITY YOCTO_DOC_VERSION_MINUS_ONE "2.5.2">
|
||||||
<!ENTITY DISTRO_REL_TAG "yocto-2.6">
|
<!ENTITY DISTRO_REL_TAG "yocto-2.6.1">
|
||||||
<!ENTITY METAINTELVERSION "9.0">
|
<!ENTITY METAINTELVERSION "9.0">
|
||||||
<!ENTITY REL_MONTH_YEAR "October 2018">
|
<!ENTITY REL_MONTH_YEAR "December 2018">
|
||||||
<!ENTITY META_INTEL_REL_TAG "&METAINTELVERSION;-&DISTRO_NAME_NO_CAP;-&YOCTO_DOC_VERSION;">
|
<!ENTITY META_INTEL_REL_TAG "&METAINTELVERSION;-&DISTRO_NAME_NO_CAP;-&YOCTO_DOC_VERSION;">
|
||||||
<!ENTITY POKYVERSION "21.0.0">
|
<!ENTITY POKYVERSION "21.0.1">
|
||||||
<!ENTITY POKYVERSION_COMPRESSED "2100">
|
<!ENTITY POKYVERSION_COMPRESSED "2101">
|
||||||
<!ENTITY YOCTO_POKY "poky-&DISTRO_NAME_NO_CAP;-&POKYVERSION;">
|
<!ENTITY YOCTO_POKY "poky-&DISTRO_NAME_NO_CAP;-&POKYVERSION;">
|
||||||
<!ENTITY COPYRIGHT_YEAR "2010-2018">
|
<!ENTITY COPYRIGHT_YEAR "2010-2019">
|
||||||
<!ENTITY YOCTO_DL_URL "http://downloads.yoctoproject.org">
|
<!ENTITY YOCTO_DL_URL "http://downloads.yoctoproject.org">
|
||||||
<!ENTITY YOCTO_HOME_URL "http://www.yoctoproject.org">
|
<!ENTITY YOCTO_HOME_URL "http://www.yoctoproject.org">
|
||||||
<!ENTITY YOCTO_LISTS_URL "http://lists.yoctoproject.org">
|
<!ENTITY YOCTO_LISTS_URL "http://lists.yoctoproject.org">
|
||||||
|
|||||||
@@ -93,9 +93,14 @@
|
|||||||
</revision>
|
</revision>
|
||||||
<revision>
|
<revision>
|
||||||
<revnumber>2.6</revnumber>
|
<revnumber>2.6</revnumber>
|
||||||
<date>&REL_MONTH_YEAR;</date>
|
<date>November 2018</date>
|
||||||
<revremark>Released with the Yocto Project 2.6 Release.</revremark>
|
<revremark>Released with the Yocto Project 2.6 Release.</revremark>
|
||||||
</revision>
|
</revision>
|
||||||
|
<revision>
|
||||||
|
<revnumber>2.6.1</revnumber>
|
||||||
|
<date>&REL_MONTH_YEAR;</date>
|
||||||
|
<revremark>Released with the Yocto Project 2.6.1 Release.</revremark>
|
||||||
|
</revision>
|
||||||
</revhistory>
|
</revhistory>
|
||||||
|
|
||||||
<copyright>
|
<copyright>
|
||||||
|
|||||||
@@ -3619,7 +3619,7 @@ $ runqemu qemux86-64 tmp/deploy/images/qemux86-64/core-image-minimal-qemux86-64.
|
|||||||
|
|
||||||
<para>
|
<para>
|
||||||
The
|
The
|
||||||
<link linkend='var-KERNEL_IMAGE_BASE_NAME'><filename>KERNEL_IMAGE_BASE_NAME</filename></link>
|
<filename>KERNEL_IMAGE_BASE_NAME</filename>
|
||||||
variable no longer uses the
|
variable no longer uses the
|
||||||
<link linkend='var-KERNEL_IMAGETYPE'><filename>KERNEL_IMAGETYPE</filename></link>
|
<link linkend='var-KERNEL_IMAGETYPE'><filename>KERNEL_IMAGETYPE</filename></link>
|
||||||
variable to create the image's base name.
|
variable to create the image's base name.
|
||||||
@@ -5557,8 +5557,9 @@ id=f4d4f99cfbc2396e49c1613a7d237b9e57f06f81'>commit message</ulink>.
|
|||||||
incompatible with other implementations.
|
incompatible with other implementations.
|
||||||
</para></listitem>
|
</para></listitem>
|
||||||
<listitem><para>
|
<listitem><para>
|
||||||
By default, the <filename>cmake</filename> class uses
|
By default, the
|
||||||
<filename>ninja</filename> instead of
|
<link linkend='ref-classes-cmake'><filename>cmake</filename></link>
|
||||||
|
class uses <filename>ninja</filename> instead of
|
||||||
<filename>make</filename> for building.
|
<filename>make</filename> for building.
|
||||||
This improves build performance.
|
This improves build performance.
|
||||||
If a recipe is broken with <filename>ninja</filename>, then
|
If a recipe is broken with <filename>ninja</filename>, then
|
||||||
@@ -5608,7 +5609,11 @@ id=f4d4f99cfbc2396e49c1613a7d237b9e57f06f81'>commit message</ulink>.
|
|||||||
Any failure of a <filename>pkg_postinst()</filename>
|
Any failure of a <filename>pkg_postinst()</filename>
|
||||||
script (including <filename>exit 1</filename>)
|
script (including <filename>exit 1</filename>)
|
||||||
will trigger a warning during
|
will trigger a warning during
|
||||||
<filename>do_rootfs</filename>.
|
<filename>do_rootfs</filename>.</para>
|
||||||
|
|
||||||
|
<para>For more information, see the
|
||||||
|
"<ulink url='&YOCTO_DOCS_DEV_URL;#new-recipe-post-installation-scripts'>Post-Installation Scripts</ulink>"
|
||||||
|
section in the Yocto Project Development Tasks Manual.
|
||||||
</para></listitem>
|
</para></listitem>
|
||||||
<listitem><para>
|
<listitem><para>
|
||||||
The <filename>elf</filename> image type has been removed.
|
The <filename>elf</filename> image type has been removed.
|
||||||
@@ -5678,6 +5683,648 @@ id=f4d4f99cfbc2396e49c1613a7d237b9e57f06f81'>commit message</ulink>.
|
|||||||
</para>
|
</para>
|
||||||
</section>
|
</section>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
|
<section id='moving-to-the-yocto-project-2.6-release'>
|
||||||
|
<title>Moving to the Yocto Project 2.6 Release</title>
|
||||||
|
|
||||||
|
<para>
|
||||||
|
This section provides migration information for moving to the
|
||||||
|
Yocto Project 2.6 Release from the prior release.
|
||||||
|
</para>
|
||||||
|
|
||||||
|
<section id='migration-2.6-gcc-changes'>
|
||||||
|
<title>GCC 8.2 is Now Used by Default</title>
|
||||||
|
|
||||||
|
<para>
|
||||||
|
The GNU Compiler Collection version 8.2 is now used by default
|
||||||
|
for compilation.
|
||||||
|
For more information on what has changed in the GCC 8.x release,
|
||||||
|
see
|
||||||
|
<ulink url='https://gcc.gnu.org/gcc-8/changes.html'></ulink>.
|
||||||
|
</para>
|
||||||
|
|
||||||
|
<para>
|
||||||
|
If you still need to compile with version 7.x, GCC 7.3 is
|
||||||
|
also provided.
|
||||||
|
You can select this version by setting the
|
||||||
|
and can be selected by setting the
|
||||||
|
<link linkend='var-GCCVERSION'><filename>GCCVERSION</filename></link>
|
||||||
|
variable to "7.%" in your configuration.
|
||||||
|
</para>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<section id='migration-2.6-removed-recipes'>
|
||||||
|
<title>Removed Recipes</title>
|
||||||
|
|
||||||
|
<para>
|
||||||
|
The following recipes have been removed:
|
||||||
|
<literallayout class='monospaced'>
|
||||||
|
<emphasis><filename>beecrypt</filename>:</emphasis> No longer needed since moving to RPM 4.
|
||||||
|
<emphasis><filename>bigreqsproto</filename>:</emphasis> Replaced by <filename>xorgproto</filename>.
|
||||||
|
<emphasis><filename>calibrateproto</filename>:</emphasis> Removed in favor of <filename>xinput</filename>.
|
||||||
|
<emphasis><filename>compositeproto</filename>:</emphasis> Replaced by <filename>xorgproto</filename>.
|
||||||
|
<emphasis><filename>damageproto</filename>:</emphasis> Replaced by <filename>xorgproto</filename>.
|
||||||
|
<emphasis><filename>dmxproto</filename>:</emphasis> Replaced by <filename>xorgproto</filename>.
|
||||||
|
<emphasis><filename>dri2proto</filename>:</emphasis> Replaced by <filename>xorgproto</filename>.
|
||||||
|
<emphasis><filename>dri3proto</filename>:</emphasis> Replaced by <filename>xorgproto</filename>.
|
||||||
|
<emphasis><filename>eee-acpi-scripts</filename>:</emphasis> Became obsolete.
|
||||||
|
<emphasis><filename>fixesproto</filename>:</emphasis> Replaced by <filename>xorgproto</filename>.
|
||||||
|
<emphasis><filename>fontsproto</filename>:</emphasis> Replaced by <filename>xorgproto</filename>.
|
||||||
|
<emphasis><filename>fstests</filename>:</emphasis> Became obsolete.
|
||||||
|
<emphasis><filename>gccmakedep</filename>:</emphasis> No longer used.
|
||||||
|
<emphasis><filename>glproto</filename>:</emphasis> Replaced by <filename>xorgproto</filename>.
|
||||||
|
<emphasis><filename>gnome-desktop3</filename>:</emphasis> No longer needed. This recipe has moved to <filename>meta-oe</filename>.
|
||||||
|
<emphasis><filename>icon-naming-utils</filename>:</emphasis> No longer used since the Sato theme was removed in 2016.
|
||||||
|
<emphasis><filename>inputproto</filename>:</emphasis> Replaced by <filename>xorgproto</filename>.
|
||||||
|
<emphasis><filename>kbproto</filename>:</emphasis> Replaced by <filename>xorgproto</filename>.
|
||||||
|
<emphasis><filename>libusb-compat</filename>:</emphasis> Became obsolete.
|
||||||
|
<emphasis><filename>libuser</filename>:</emphasis> Became obsolete.
|
||||||
|
<emphasis><filename>libnfsidmap</filename>:</emphasis> No longer an external requirement since <filename>nfs-utils</filename> 2.2.1. <filename>libnfsidmap</filename> is now integrated.
|
||||||
|
<emphasis><filename>libxcalibrate</filename>:</emphasis> No longer needed with <filename>xinput</filename>
|
||||||
|
<emphasis><filename>mktemp</filename>:</emphasis> Became obsolete. The <filename>mktemp</filename> command is provided by both <filename>busybox</filename> and <filename>coreutils</filename>.
|
||||||
|
<emphasis><filename>ossp-uuid</filename>:</emphasis> Is not being maintained and has mostly been replaced by <filename>uuid.h</filename> in <filename>util-linux</filename>.
|
||||||
|
<emphasis><filename>pax-utils</filename>:</emphasis> No longer needed. Previous QA tests that did use this recipe are now done at build time.
|
||||||
|
<emphasis><filename>pcmciautils</filename>:</emphasis> Became obsolete.
|
||||||
|
<emphasis><filename>pixz</filename>:</emphasis> No longer needed. <filename>xz</filename> now supports multi-threaded compression.
|
||||||
|
<emphasis><filename>presentproto</filename>:</emphasis> Replaced by <filename>xorgproto</filename>.
|
||||||
|
<emphasis><filename>randrproto</filename>:</emphasis> Replaced by <filename>xorgproto</filename>.
|
||||||
|
<emphasis><filename>recordproto</filename>:</emphasis> Replaced by <filename>xorgproto</filename>.
|
||||||
|
<emphasis><filename>renderproto</filename>:</emphasis> Replaced by <filename>xorgproto</filename>.
|
||||||
|
<emphasis><filename>resourceproto</filename>:</emphasis> Replaced by <filename>xorgproto</filename>.
|
||||||
|
<emphasis><filename>scrnsaverproto</filename>:</emphasis> Replaced by <filename>xorgproto</filename>.
|
||||||
|
<emphasis><filename>trace-cmd</filename>:</emphasis> Became obsolete. <filename>perf</filename> replaced this recipe's functionally.
|
||||||
|
<emphasis><filename>videoproto</filename>:</emphasis> Replaced by <filename>xorgproto</filename>.
|
||||||
|
<emphasis><filename>wireless-tools</filename>:</emphasis> Became obsolete. Superseded by <filename>iw</filename>.
|
||||||
|
<emphasis><filename>xcmiscproto</filename>:</emphasis> Replaced by <filename>xorgproto</filename>.
|
||||||
|
<emphasis><filename>xextproto</filename>:</emphasis> Replaced by <filename>xorgproto</filename>.
|
||||||
|
<emphasis><filename>xf86dgaproto</filename>:</emphasis> Replaced by <filename>xorgproto</filename>.
|
||||||
|
<emphasis><filename>xf86driproto</filename>:</emphasis> Replaced by <filename>xorgproto</filename>.
|
||||||
|
<emphasis><filename>xf86miscproto</filename>:</emphasis> Replaced by <filename>xorgproto</filename>.
|
||||||
|
<emphasis><filename>xf86-video-omapfb</filename>:</emphasis> Became obsolete. Use kernel modesetting driver instead.
|
||||||
|
<emphasis><filename>xf86-video-omap</filename>:</emphasis> Became obsolete. Use kernel modesetting driver instead.
|
||||||
|
<emphasis><filename>xf86vidmodeproto</filename>:</emphasis> Replaced by <filename>xorgproto</filename>.
|
||||||
|
<emphasis><filename>xineramaproto</filename>:</emphasis> Replaced by <filename>xorgproto</filename>.
|
||||||
|
<emphasis><filename>xproto</filename>:</emphasis> Replaced by <filename>xorgproto</filename>.
|
||||||
|
<emphasis><filename>yasm</filename>:</emphasis> No longer needed since previous usages are now satisfied by <filename>nasm</filename>.
|
||||||
|
</literallayout>
|
||||||
|
</para>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<section id='migration-2.6-packaging-changes'>
|
||||||
|
<title>Packaging Changes</title>
|
||||||
|
|
||||||
|
<para>
|
||||||
|
The following packaging changes have been made:
|
||||||
|
<itemizedlist>
|
||||||
|
<listitem><para>
|
||||||
|
<emphasis><filename>cmake</filename>:</emphasis>
|
||||||
|
<filename>cmake.m4</filename> and
|
||||||
|
<filename>toolchain</filename> files have been moved to the
|
||||||
|
main package.
|
||||||
|
</para></listitem>
|
||||||
|
<listitem><para>
|
||||||
|
<emphasis><filename>iptables</filename>:</emphasis>
|
||||||
|
The <filename>iptables</filename> modules have been split
|
||||||
|
into separate packages.
|
||||||
|
</para></listitem>
|
||||||
|
<listitem><para>
|
||||||
|
<emphasis><filename>alsa-lib</filename>:</emphasis>
|
||||||
|
<filename>libasound</filename> is now in the main
|
||||||
|
<filename>alsa-lib</filename> package instead of
|
||||||
|
<filename>libasound</filename>.
|
||||||
|
</para></listitem>
|
||||||
|
<listitem><para>
|
||||||
|
<emphasis><filename>glibc</filename>:</emphasis>
|
||||||
|
<filename>libnss-db</filename> is now in its own package
|
||||||
|
along with a <filename>/var/db/makedbs.sh</filename>
|
||||||
|
script to update databases.
|
||||||
|
</para></listitem>
|
||||||
|
<listitem><para>
|
||||||
|
<emphasis><filename>python</filename> and <filename>python3</filename>:</emphasis>
|
||||||
|
The main package has been removed from the recipe.
|
||||||
|
You must install specific packages or
|
||||||
|
<filename>python-modules</filename> /
|
||||||
|
<filename>python3-modules</filename> for everything.
|
||||||
|
</para></listitem>
|
||||||
|
<listitem><para>
|
||||||
|
<emphasis><filename>systemtap</filename>:</emphasis>
|
||||||
|
Moved <filename>systemtap-exporter</filename> into its own
|
||||||
|
package.
|
||||||
|
</para></listitem>
|
||||||
|
</itemizedlist>
|
||||||
|
</para>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<section id='migration-2.6-xorg-protocol-dependencies'>
|
||||||
|
<title>XOrg Protocol dependencies</title>
|
||||||
|
|
||||||
|
<para>
|
||||||
|
The "*proto" upstream repositories have been combined into one
|
||||||
|
"xorgproto" repository.
|
||||||
|
Thus, the corresponding recipes have also been combined into a
|
||||||
|
single <filename>xorgproto</filename> recipe.
|
||||||
|
Any recipes that depend upon the older <filename>*proto</filename>
|
||||||
|
recipes need to be changed to depend on the newer
|
||||||
|
<filename>xorgproto</filename> recipe instead.
|
||||||
|
</para>
|
||||||
|
|
||||||
|
<para>
|
||||||
|
For names of recipes removed because of this repository change,
|
||||||
|
see the
|
||||||
|
<link linkend="migration-2.6-removed-recipes">Removed Recipes</link>
|
||||||
|
section.
|
||||||
|
</para>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<section id='migration-2.6-distutils-distutils3-fetching-dependencies'>
|
||||||
|
<title><filename>distutils</filename> and <filename>distutils3</filename> Now Prevent Fetching Dependencies During the <filename>do_configure</filename> Task</title>
|
||||||
|
|
||||||
|
<para>
|
||||||
|
Previously, it was possible for Python recipes that inherited
|
||||||
|
the
|
||||||
|
<link linkend='ref-classes-distutils'><filename>distutils</filename></link>
|
||||||
|
and
|
||||||
|
<link linkend='ref-classes-distutils3'><filename>distutils3</filename></link>
|
||||||
|
classes to fetch code during the
|
||||||
|
<link linkend='ref-tasks-configure'><filename>do_configure</filename></link>
|
||||||
|
task to satisfy dependencies mentioned in
|
||||||
|
<filename>setup.py</filename> if those dependencies were not
|
||||||
|
provided in the sysroot (i.e. recipes providing the dependencies
|
||||||
|
were missing from
|
||||||
|
<link linkend='var-DEPENDS'><filename>DEPENDS</filename></link>).
|
||||||
|
<note>
|
||||||
|
This change affects classes beyond just the two mentioned
|
||||||
|
(i.e. <filename>distutils</filename> and
|
||||||
|
<filename>distutils3</filename>).
|
||||||
|
Any recipe that inherits <filename>distutils*</filename>
|
||||||
|
classes are affected.
|
||||||
|
For example, the <filename>setuptools</filename> and
|
||||||
|
<filename>setuptools3</filename> recipes are affected since
|
||||||
|
they inherit the <filename>distutils*</filename> classes.
|
||||||
|
</note>
|
||||||
|
</para>
|
||||||
|
|
||||||
|
<para>
|
||||||
|
Fetching these types of dependencies that are not provided in the
|
||||||
|
sysroot negatively affects the ability to reproduce builds.
|
||||||
|
This type of fetching is now explicitly disabled.
|
||||||
|
Consequently, any missing dependencies in Python recipes that
|
||||||
|
use these classes now result in an error during the
|
||||||
|
<filename>do_configure</filename> task.
|
||||||
|
</para>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<section id='migration-2.6-linux-yocto-configuration-audit-issues-now-correctly-reported'>
|
||||||
|
<title><filename>linux-yocto</filename> Configuration Audit Issues Now Correctly Reported</title>
|
||||||
|
|
||||||
|
<para>
|
||||||
|
Due to a bug, the kernel configuration audit functionality was
|
||||||
|
not writing out any resulting warnings during the build.
|
||||||
|
This issue is now corrected.
|
||||||
|
You might notice these warnings now if you have a custom kernel
|
||||||
|
configuration with a <filename>linux-yocto</filename> style
|
||||||
|
kernel recipe.
|
||||||
|
</para>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<section id='migration-2.6-image-kernel-artifact-naming-changes'>
|
||||||
|
<title>Image/Kernel Artifact Naming Changes</title>
|
||||||
|
|
||||||
|
<para>
|
||||||
|
The following changes have been made:
|
||||||
|
<itemizedlist>
|
||||||
|
<listitem><para>
|
||||||
|
Name variables (e.g.
|
||||||
|
<link linkend='var-IMAGE_NAME'><filename>IMAGE_NAME</filename></link>)
|
||||||
|
use a new <filename>IMAGE_VERSION_SUFFIX</filename>
|
||||||
|
variable instead of
|
||||||
|
<link linkend='var-DATETIME'><filename>DATETIME</filename></link>.
|
||||||
|
Using <filename>IMAGE_VERSION_SUFFIX</filename> allows
|
||||||
|
easier and more direct changes.</para>
|
||||||
|
|
||||||
|
<para>The <filename>IMAGE_VERSION_SUFFIX</filename>
|
||||||
|
variable is set in the
|
||||||
|
<filename>bitbake.conf</filename> configuration file as
|
||||||
|
follows:
|
||||||
|
<literallayout class='monospaced'>
|
||||||
|
IMAGE_VERSION_SUFFIX = "-${DATETIME}"
|
||||||
|
</literallayout>
|
||||||
|
</para></listitem>
|
||||||
|
<listitem><para>
|
||||||
|
Several variables have changed names for consistency:
|
||||||
|
<literallayout class='monospaced'>
|
||||||
|
Old Variable Name New Variable Name
|
||||||
|
========================================================
|
||||||
|
KERNEL_IMAGE_BASE_NAME <link linkend='var-KERNEL_IMAGE_NAME'>KERNEL_IMAGE_NAME</link>
|
||||||
|
KERNEL_IMAGE_SYMLINK_NAME <link linkend='var-KERNEL_IMAGE_LINK_NAME'>KERNEL_IMAGE_LINK_NAME</link>
|
||||||
|
MODULE_TARBALL_BASE_NAME <link linkend='var-MODULE_TARBALL_NAME'>MODULE_TARBALL_NAME</link>
|
||||||
|
MODULE_TARBALL_SYMLINK_NAME <link linkend='var-MODULE_TARBALL_LINK_NAME'>MODULE_TARBALL_LINK_NAME</link>
|
||||||
|
INITRAMFS_BASE_NAME <link linkend='var-INITRAMFS_NAME'>INITRAMFS_NAME</link>
|
||||||
|
</literallayout>
|
||||||
|
</para></listitem>
|
||||||
|
<listitem><para>
|
||||||
|
The <filename>MODULE_IMAGE_BASE_NAME</filename> variable
|
||||||
|
has been removed.
|
||||||
|
The module tarball name is now controlled directly with the
|
||||||
|
<link linkend='var-MODULE_TARBALL_NAME'><filename>MODULE_TARBALL_NAME</filename></link>
|
||||||
|
variable.
|
||||||
|
</para></listitem>
|
||||||
|
<listitem><para>
|
||||||
|
The
|
||||||
|
<link linkend='var-KERNEL_DTB_NAME'><filename>KERNEL_DTB_NAME</filename></link>
|
||||||
|
and
|
||||||
|
<link linkend='var-KERNEL_DTB_LINK_NAME'><filename>KERNEL_DTB_LINK_NAME</filename></link>
|
||||||
|
variables have been introduced to control kernel Device
|
||||||
|
Tree Binary (DTB) artifact names instead of mangling
|
||||||
|
<filename>KERNEL_IMAGE_*</filename> variables.
|
||||||
|
</para></listitem>
|
||||||
|
<listitem><para>
|
||||||
|
The
|
||||||
|
<link linkend='var-KERNEL_FIT_NAME'><filename>KERNEL_FIT_NAME</filename></link>
|
||||||
|
and
|
||||||
|
<link linkend='var-KERNEL_FIT_LINK_NAME'><filename>KERNEL_FIT_LINK_NAME</filename></link>
|
||||||
|
variables have been introduced to specify the name of
|
||||||
|
flattened image tree (FIT) kernel images similar to other
|
||||||
|
deployed artifacts.
|
||||||
|
</para></listitem>
|
||||||
|
<listitem><para>
|
||||||
|
The
|
||||||
|
<link linkend='var-MODULE_TARBALL_NAME'><filename>MODULE_TARBALL_NAME</filename></link>
|
||||||
|
and
|
||||||
|
<link linkend='var-MODULE_TARBALL_LINK_NAME'><filename>MODULE_TARBALL_LINK_NAME</filename></link>
|
||||||
|
variable values no longer include the "module-" prefix or
|
||||||
|
".tgz" suffix.
|
||||||
|
These parts are now hardcoded so that the values are
|
||||||
|
consistent with other artifact naming variables.
|
||||||
|
</para></listitem>
|
||||||
|
<listitem><para>
|
||||||
|
Added the
|
||||||
|
<link linkend='var-INITRAMFS_LINK_NAME'><filename>INITRAMFS_LINK_NAME</filename></link>
|
||||||
|
variable so that the symlink can be controlled similarly
|
||||||
|
to other artifact types.
|
||||||
|
</para></listitem>
|
||||||
|
<listitem><para>
|
||||||
|
<link linkend='var-INITRAMFS_NAME'><filename>INITRAMFS_NAME</filename></link>
|
||||||
|
now uses
|
||||||
|
"${PKGE}-${PKGV}-${PKGR}-${MACHINE}${IMAGE_VERSION_SUFFIX}"
|
||||||
|
instead of
|
||||||
|
"${PV}-${PR}-${MACHINE}-${DATETIME}", which
|
||||||
|
makes it consistent with other variables.
|
||||||
|
</para></listitem>
|
||||||
|
</itemizedlist>
|
||||||
|
</para>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<section id='migration-2.6-serial-console-deprecated'>
|
||||||
|
<title><filename>SERIAL_CONSOLE</filename> Deprecated</title>
|
||||||
|
|
||||||
|
<para>
|
||||||
|
The
|
||||||
|
<link linkend='var-SERIAL_CONSOLE'><filename>SERIAL_CONSOLE</filename></link>
|
||||||
|
variable has been functionally replaced by the
|
||||||
|
<link linkend='var-SERIAL_CONSOLES'><filename>SERIAL_CONSOLES</filename></link>
|
||||||
|
variable for some time.
|
||||||
|
With the Yocto Project 2.6 release,
|
||||||
|
<filename>SERIAL_CONSOLE</filename> has been officially deprecated.
|
||||||
|
</para>
|
||||||
|
|
||||||
|
<para>
|
||||||
|
<filename>SERIAL_CONSOLE</filename> will continue to work as
|
||||||
|
before for the 2.6 release.
|
||||||
|
However, for the sake of future compatibility, it is recommended
|
||||||
|
that you replace all instances of
|
||||||
|
<filename>SERIAL_CONSOLE</filename> with
|
||||||
|
<filename>SERIAL_CONSOLES</filename>.
|
||||||
|
<note>
|
||||||
|
The only difference in usage is that
|
||||||
|
<filename>SERIAL_CONSOLES</filename> expects entries to be
|
||||||
|
separated using semicolons as compared to
|
||||||
|
<filename>SERIAL_CONSOLE</filename>, which expects spaces.
|
||||||
|
</note>
|
||||||
|
</para>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<section id='migration-2.6-poky-sets-unknown-configure-option-to-qa-error'>
|
||||||
|
<title>Configure Script Reports Unknown Options as Errors</title>
|
||||||
|
|
||||||
|
<para>
|
||||||
|
If the configure script reports an unknown option, this now
|
||||||
|
triggers a QA error instead of a warning.
|
||||||
|
Any recipes that previously got away with specifying such unknown
|
||||||
|
options now need to be fixed.
|
||||||
|
</para>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<section id='migration-2.6-override-changes'>
|
||||||
|
<title>Override Changes</title>
|
||||||
|
|
||||||
|
<para>
|
||||||
|
The following changes have occurred:
|
||||||
|
<itemizedlist>
|
||||||
|
<listitem><para>
|
||||||
|
<emphasis>The <filename>virtclass-native</filename> and
|
||||||
|
<filename>virtclass-nativesdk</filename> Overrides Have
|
||||||
|
Been Removed:</emphasis>
|
||||||
|
The <filename>virtclass-native</filename> and
|
||||||
|
<filename>virtclass-nativesdk</filename> overrides have
|
||||||
|
been deprecated since 2012 in favor of
|
||||||
|
<filename>class-native</filename> and
|
||||||
|
<filename>class-nativesdk</filename>, respectively.
|
||||||
|
Both <filename>virtclass-native</filename> and
|
||||||
|
<filename>virtclass-nativesdk</filename> are now dropped.
|
||||||
|
<note>
|
||||||
|
The <filename>virtclass-multilib-</filename> overrides
|
||||||
|
for multilib are still valid.
|
||||||
|
</note>
|
||||||
|
</para></listitem>
|
||||||
|
<listitem><para>
|
||||||
|
<emphasis>The <filename>forcevariable</filename>
|
||||||
|
Override Now Has a Higher Priority Than
|
||||||
|
<filename>libc</filename> Overrides:</emphasis>
|
||||||
|
The <filename>forcevariable</filename> override is
|
||||||
|
documented to be the highest priority override.
|
||||||
|
However, due to a long-standing quirk of how
|
||||||
|
<link linkend='var-OVERRIDES'><filename>OVERRIDES</filename></link>
|
||||||
|
is set, the <filename>libc</filename> overrides (e.g.
|
||||||
|
<filename>libc-glibc</filename>,
|
||||||
|
<filename>libc-musl</filename>, and so forth) erroneously
|
||||||
|
had a higher priority.
|
||||||
|
This issue is now corrected.</para>
|
||||||
|
|
||||||
|
<para>It is likely this change will not cause any
|
||||||
|
problems.
|
||||||
|
However, it is possible with some unusual configurations
|
||||||
|
that you might see a change in behavior if you were
|
||||||
|
relying on the previous behavior.
|
||||||
|
Be sure to check how you use
|
||||||
|
<filename>forcevariable</filename> and
|
||||||
|
<filename>libc-*</filename> overrides in your custom
|
||||||
|
layers and configuration files to ensure they make sense.
|
||||||
|
</para></listitem>
|
||||||
|
<listitem><para>
|
||||||
|
<emphasis>The <filename>build-${BUILD_OS}</filename>
|
||||||
|
Override Has Been Removed:</emphasis>
|
||||||
|
The <filename>build-${BUILD_OS}</filename>, which is
|
||||||
|
typically <filename>build-linux</filename>, override has
|
||||||
|
been removed because building on a host operating system
|
||||||
|
other than a recent version of Linux is neither supported
|
||||||
|
nor recommended.
|
||||||
|
Dropping the override avoids giving the impression that
|
||||||
|
other host operating systems might be supported.
|
||||||
|
</para></listitem>
|
||||||
|
<listitem><para>
|
||||||
|
The "_remove" operator now preserves whitespace.
|
||||||
|
Consequently, when specifying list items to remove, be
|
||||||
|
aware that leading and trailing whitespace resulting from
|
||||||
|
the removal is retained.</para>
|
||||||
|
|
||||||
|
<para>See the
|
||||||
|
"<ulink url='&YOCTO_DOCS_BB_URL;#removing-override-style-syntax'>Removal (Override Style Syntax)</ulink>"
|
||||||
|
section in the BitBake User Manual for a detailed example.
|
||||||
|
</para></listitem>
|
||||||
|
</itemizedlist>
|
||||||
|
</para>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<section id='migration-2.6-systemd-configuration-now-split-out-to-system-conf'>
|
||||||
|
<title><filename>systemd</filename> Configuration is Now Split Into <filename>systemd-conf</filename></title>
|
||||||
|
|
||||||
|
<para>
|
||||||
|
The configuration for the <filename>systemd</filename> recipe
|
||||||
|
has been moved into a <filename>system-conf</filename> recipe.
|
||||||
|
Moving this configuration to a separate recipe avoids the
|
||||||
|
<filename>systemd</filename> recipe from becoming machine-specific
|
||||||
|
for cases where machine-specific configurations need to be applied
|
||||||
|
(e.g. for <filename>qemu*</filename> machines).
|
||||||
|
</para>
|
||||||
|
|
||||||
|
<para>
|
||||||
|
Currently, the new recipe packages the following files:
|
||||||
|
<literallayout class='monospaced'>
|
||||||
|
${sysconfdir}/machine-id
|
||||||
|
${sysconfdir}/systemd/coredump.conf
|
||||||
|
${sysconfdir}/systemd/journald.conf
|
||||||
|
${sysconfdir}/systemd/logind.conf
|
||||||
|
${sysconfdir}/systemd/system.conf
|
||||||
|
${sysconfdir}/systemd/user.conf
|
||||||
|
</literallayout>
|
||||||
|
If you previously used bbappend files to append the
|
||||||
|
<filename>systemd</filename> recipe to change any of the
|
||||||
|
listed files, you must do so for the
|
||||||
|
<filename>systemd-conf</filename> recipe instead.
|
||||||
|
</para>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<section id='migration-2.6-automatic-testing-changes'>
|
||||||
|
<title>Automatic Testing Changes</title>
|
||||||
|
|
||||||
|
<para>
|
||||||
|
This section provides information about automatic testing
|
||||||
|
changes:
|
||||||
|
<itemizedlist>
|
||||||
|
<listitem><para>
|
||||||
|
<emphasis><filename>TEST_IMAGE</filename> Variable Removed:</emphasis>
|
||||||
|
Prior to this release, you set the
|
||||||
|
<filename>TEST_IMAGE</filename> variable to "1" to
|
||||||
|
enable automatic testing for successfully built images.
|
||||||
|
The <filename>TEST_IMAGE</filename> variable no longer
|
||||||
|
exists and has been replaced by the
|
||||||
|
<link linkend='var-TESTIMAGE_AUTO'><filename>TESTIMAGE_AUTO</filename></link>
|
||||||
|
variable.
|
||||||
|
</para></listitem>
|
||||||
|
<listitem><para>
|
||||||
|
<emphasis>Inheriting the <filename>testimage</filename> and
|
||||||
|
<filename>testsdk</filename> Classes:</emphasis>
|
||||||
|
Best practices now dictate that you use the
|
||||||
|
<link linkend='var-IMAGE_CLASSES'><filename>IMAGE_CLASSES</filename></link>
|
||||||
|
variable rather than the
|
||||||
|
<link linkend='var-INHERIT'><filename>INHERIT</filename></link>
|
||||||
|
variable when you inherit the
|
||||||
|
<link linkend='ref-classes-testimage*'><filename>testimage</filename></link>
|
||||||
|
and
|
||||||
|
<link linkend='ref-classes-testsdk'><filename>testsdk</filename></link>
|
||||||
|
classes used for automatic testing.
|
||||||
|
</para></listitem>
|
||||||
|
</itemizedlist>
|
||||||
|
</para>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<section id='migration-2.6-openssl-changes'>
|
||||||
|
<title>OpenSSL Changes</title>
|
||||||
|
|
||||||
|
<para>
|
||||||
|
<ulink url='https://www.openssl.org/'>OpenSSL</ulink> has been
|
||||||
|
upgraded from 1.0 to 1.1.
|
||||||
|
By default, this upgrade could cause problems for recipes that
|
||||||
|
have both versions in their dependency chains.
|
||||||
|
The problem is that both versions cannot be installed together
|
||||||
|
at build time.
|
||||||
|
<note>
|
||||||
|
It is possible to have both versions of the library at runtime.
|
||||||
|
</note>
|
||||||
|
</para>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<section id='migration-2.6-bitbake-changes'>
|
||||||
|
<title>BitBake Changes</title>
|
||||||
|
|
||||||
|
<para>
|
||||||
|
The server logfile <filename>bitbake-cookerdaemon.log</filename> is
|
||||||
|
now always placed in the
|
||||||
|
<link linkend='build-directory'>Build Directory</link>
|
||||||
|
instead of the current directory.
|
||||||
|
</para>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<section id='migration-2.6-security-changes'>
|
||||||
|
<title>Security Changes</title>
|
||||||
|
|
||||||
|
<para>
|
||||||
|
The Poky distribution now uses security compiler flags by
|
||||||
|
default.
|
||||||
|
Inclusion of these flags could cause new failures due to stricter
|
||||||
|
checking for various potential security issues in code.
|
||||||
|
</para>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<section id='migration-2.6-post-installation-changes'>
|
||||||
|
<title>Post Installation Changes</title>
|
||||||
|
|
||||||
|
<para>
|
||||||
|
You must explicitly mark post installs to defer to the target.
|
||||||
|
If you want to explicitly defer a postinstall to first boot on
|
||||||
|
the target rather than at rootfs creation time, use
|
||||||
|
<filename>pkg_postinst_ontarget()</filename> or call
|
||||||
|
<filename>postinst-intercepts defer_to_first_boot</filename> from
|
||||||
|
<filename>pkg_postinst()</filename>.
|
||||||
|
Any failure of a <filename>pkg_postinst()</filename> script
|
||||||
|
(including exit 1) triggers an error during the
|
||||||
|
<link linkend='ref-tasks-rootfs'><filename>do_rootfs</filename></link> task.
|
||||||
|
</para>
|
||||||
|
|
||||||
|
<para>
|
||||||
|
For more information on post-installation behavior, see the
|
||||||
|
"<ulink url='&YOCTO_DOCS_DEV_URL;#new-recipe-post-installation-scripts'>Post-Installation Scripts</ulink>"
|
||||||
|
section in the Yocto Project Development Tasks Manual.
|
||||||
|
</para>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<section id='migration-2.6-python-3-profile-guided-optimizations'>
|
||||||
|
<title>Python 3 Profile-Guided Optimization</title>
|
||||||
|
|
||||||
|
<para>
|
||||||
|
The <filename>python3</filename> recipe now enables profile-guided
|
||||||
|
optimization.
|
||||||
|
Using this optimization requires a little extra build time in
|
||||||
|
exchange for improved performance on the target at runtime.
|
||||||
|
Additionally, the optimization is only enabled if the current
|
||||||
|
<link linkend='var-MACHINE'><filename>MACHINE</filename></link>
|
||||||
|
has support for user-mode emulation in QEMU (i.e. "qemu-usermode"
|
||||||
|
is in
|
||||||
|
<link linkend='var-MACHINE_FEATURES'><filename>MACHINE_FEATURES</filename></link>,
|
||||||
|
which it is by default).
|
||||||
|
</para>
|
||||||
|
|
||||||
|
<para>
|
||||||
|
If you wish to disable Python profile-guided optimization
|
||||||
|
regardless of the value of
|
||||||
|
<filename>MACHINE_FEATURES</filename>, then ensure that
|
||||||
|
<link linkend='var-PACKAGECONFIG'><filename>PACKAGECONFIG</filename></link>
|
||||||
|
for the <filename>python3</filename> recipe does not contain "pgo".
|
||||||
|
You could accomplish the latter using the following at the
|
||||||
|
configuration level:
|
||||||
|
<literallayout class='monospaced'>
|
||||||
|
PACKAGECONFIG_remove_pn-python3 = "pgo"
|
||||||
|
</literallayout>
|
||||||
|
Alternatively, you can set
|
||||||
|
<filename>PACKAGECONFIG</filename> using an append file for the
|
||||||
|
<filename>python3</filename> recipe.
|
||||||
|
</para>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<section id='migration-2.6-miscellaneous-changes'>
|
||||||
|
<title>Miscellaneous Changes</title>
|
||||||
|
|
||||||
|
<para>
|
||||||
|
The following miscellaneous changes occurred:
|
||||||
|
<itemizedlist>
|
||||||
|
<listitem><para>
|
||||||
|
Default to using the Thumb-2 instruction set for armv7a
|
||||||
|
and above.
|
||||||
|
If you have any custom recipes that build software that
|
||||||
|
needs to be built with the ARM instruction set, change the
|
||||||
|
recipe to set the instruction set as follows:
|
||||||
|
<literallayout class='monospaced'>
|
||||||
|
ARM_INSTRUCTION_SET = "arm"
|
||||||
|
</literallayout>
|
||||||
|
</para></listitem>
|
||||||
|
<listitem><para>
|
||||||
|
<filename>run-postinsts</filename> no longer uses
|
||||||
|
<filename>/etc/*-postinsts</filename> for
|
||||||
|
<filename>dpkg/opkg</filename> in favor of built-in
|
||||||
|
postinst support.
|
||||||
|
RPM behavior remains unchanged.
|
||||||
|
</para></listitem>
|
||||||
|
<listitem><para>
|
||||||
|
The <filename>NOISO</filename> and
|
||||||
|
<filename>NOHDD</filename> variables are no longer used.
|
||||||
|
You now control building <filename>*.iso</filename> and
|
||||||
|
<filename>*.hddimg</filename> image types directly
|
||||||
|
by using the
|
||||||
|
<link linkend='var-IMAGE_FSTYPES'><filename>IMAGE_FSTYPES</filename></link>
|
||||||
|
variable.
|
||||||
|
</para></listitem>
|
||||||
|
<listitem><para>
|
||||||
|
The <filename>scripts/contrib/mkefidisk.sh</filename>
|
||||||
|
has been removed in favor of Wic.
|
||||||
|
</para></listitem>
|
||||||
|
<listitem><para>
|
||||||
|
<filename>kernel-modules</filename> has been removed from
|
||||||
|
<link linkend='var-RRECOMMENDS'><filename>RRECOMMENDS</filename></link>
|
||||||
|
for <filename>qemumips</filename> and
|
||||||
|
<filename>qemumips64</filename> machines.
|
||||||
|
Removal also impacts the <filename>x86-base.inc</filename>
|
||||||
|
file.
|
||||||
|
<note>
|
||||||
|
<filename>genericx86</filename> and
|
||||||
|
<filename>genericx86-64</filename> retain
|
||||||
|
<filename>kernel-modules</filename> as part of the
|
||||||
|
<filename>RRECOMMENDS</filename> variable setting.
|
||||||
|
</note>
|
||||||
|
</para></listitem>
|
||||||
|
<listitem><para>
|
||||||
|
The <filename>LGPLv2_WHITELIST_GPL-3.0</filename>
|
||||||
|
variable has been removed.
|
||||||
|
If you are setting this variable in your configuration,
|
||||||
|
set or append it to the
|
||||||
|
<filename>WHITELIST_GPL-3.0</filename> variable instead.
|
||||||
|
</para></listitem>
|
||||||
|
<listitem><para>
|
||||||
|
<filename>${ASNEEDED}</filename> is now included in
|
||||||
|
the
|
||||||
|
<link linkend='var-TARGET_LDFLAGS'><filename>TARGET_LDFLAGS</filename></link>
|
||||||
|
variable directly.
|
||||||
|
The remaining definitions from
|
||||||
|
<filename>meta/conf/distro/include/as-needed.inc</filename>
|
||||||
|
have been moved to corresponding recipes.
|
||||||
|
</para></listitem>
|
||||||
|
<listitem><para>
|
||||||
|
Support for DSA host keys has been dropped from the
|
||||||
|
OpenSSH recipes.
|
||||||
|
If you are still using DSA keys, you must switch over to a
|
||||||
|
more secure algorithm as recommended by OpenSSH upstream.
|
||||||
|
</para></listitem>
|
||||||
|
<listitem><para>
|
||||||
|
The <filename>dhcp</filename> recipe now uses the
|
||||||
|
<filename>dhcpd6.conf</filename> configuration file in
|
||||||
|
<filename>dhcpd6.service</filename> for IPv6 DHCP rather
|
||||||
|
than re-using <filename>dhcpd.conf</filename>, which is
|
||||||
|
now reserved for IPv4.
|
||||||
|
</para></listitem>
|
||||||
|
</itemizedlist>
|
||||||
|
</para>
|
||||||
|
</section>
|
||||||
|
</section>
|
||||||
</chapter>
|
</chapter>
|
||||||
<!--
|
<!--
|
||||||
vim: expandtab tw=80 ts=4
|
vim: expandtab tw=80 ts=4
|
||||||
|
|||||||
@@ -449,12 +449,13 @@
|
|||||||
<title><filename>cmake.bbclass</filename></title>
|
<title><filename>cmake.bbclass</filename></title>
|
||||||
|
|
||||||
<para>
|
<para>
|
||||||
The <filename>cmake</filename> class allows for
|
The <filename>cmake</filename> class allows for recipes that need to
|
||||||
recipes that need to build software using the CMake build system.
|
build software using the
|
||||||
|
<ulink url='https://cmake.org/overview/'>CMake</ulink> build system.
|
||||||
You can use the
|
You can use the
|
||||||
<link linkend='var-EXTRA_OECMAKE'><filename>EXTRA_OECMAKE</filename></link>
|
<link linkend='var-EXTRA_OECMAKE'><filename>EXTRA_OECMAKE</filename></link>
|
||||||
variable to specify additional configuration options to be passed on
|
variable to specify additional configuration options to be passed
|
||||||
the <filename>cmake</filename> command line.
|
using the <filename>cmake</filename> command line.
|
||||||
</para>
|
</para>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
@@ -645,6 +646,54 @@
|
|||||||
</para>
|
</para>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
|
<section id='ref-classes-devupstream'>
|
||||||
|
<title><filename>devupstream.bbclass</filename></title>
|
||||||
|
|
||||||
|
<para>
|
||||||
|
The <filename>devupstream</filename> class uses
|
||||||
|
<link linkend='var-BBCLASSEXTEND'><filename>BBCLASSEXTEND</filename></link>
|
||||||
|
to add a variant of the recipe that fetches from an alternative URI
|
||||||
|
(e.g. Git) instead of a tarball.
|
||||||
|
Following is an example:
|
||||||
|
<literallayout class='monospaced'>
|
||||||
|
BBCLASSEXTEND = "devupstream:target"
|
||||||
|
SRC_URI_class-devupstream = "git://git.example.com/example"
|
||||||
|
SRCREV_class-devupstream = "abcd1234"
|
||||||
|
</literallayout>
|
||||||
|
Adding the above statements to your recipe creates a variant that has
|
||||||
|
<link linkend='var-DEFAULT_PREFERENCE'><filename>DEFAULT_PREFERENCE</filename></link>
|
||||||
|
set to "-1".
|
||||||
|
Consequently, you need to select the variant of the recipe to use it.
|
||||||
|
Any development-specific adjustments can be done by using the
|
||||||
|
<filename>class-devupstream</filename> override.
|
||||||
|
Here is an example:
|
||||||
|
<literallayout class='monospaced'>
|
||||||
|
DEPENDS_append_class-devupstream = " gperf-native"
|
||||||
|
|
||||||
|
do_configure_prepend_class-devupstream() {
|
||||||
|
touch ${S}/README
|
||||||
|
}
|
||||||
|
</literallayout>
|
||||||
|
The class currently only supports creating a development variant of
|
||||||
|
the target recipe, not <filename>native</filename> or
|
||||||
|
<filename>nativesdk</filename> variants.
|
||||||
|
</para>
|
||||||
|
|
||||||
|
<para>
|
||||||
|
The <filename>BBCLASSEXTEND</filename> syntax
|
||||||
|
(i.e. <filename>devupstream:target</filename>) provides support for
|
||||||
|
<filename>native</filename> and <filename>nativesdk</filename>
|
||||||
|
variants.
|
||||||
|
Consequently, this functionality can be added in a future release.
|
||||||
|
</para>
|
||||||
|
|
||||||
|
<para>
|
||||||
|
Support for other version control systems such as Subversion is
|
||||||
|
limited due to BitBake's automatic fetch dependencies (e.g.
|
||||||
|
<filename>subversion-native</filename>).
|
||||||
|
</para>
|
||||||
|
</section>
|
||||||
|
|
||||||
<section id='ref-classes-distro_features_check'>
|
<section id='ref-classes-distro_features_check'>
|
||||||
<title><filename>distro_features_check.bbclass</filename></title>
|
<title><filename>distro_features_check.bbclass</filename></title>
|
||||||
|
|
||||||
@@ -1266,28 +1315,35 @@
|
|||||||
<title><filename>image_types.bbclass</filename></title>
|
<title><filename>image_types.bbclass</filename></title>
|
||||||
|
|
||||||
<para>
|
<para>
|
||||||
The <filename>image_types</filename> class defines all of
|
The <filename>image_types</filename> class defines all of the
|
||||||
the standard image output types that you can enable through the
|
standard image output types that you can enable through the
|
||||||
<link linkend='var-IMAGE_FSTYPES'><filename>IMAGE_FSTYPES</filename></link>
|
<link linkend='var-IMAGE_FSTYPES'><filename>IMAGE_FSTYPES</filename></link>
|
||||||
variable.
|
variable.
|
||||||
You can use this class as a reference on how to add support for custom
|
You can use this class as a reference on how to add support for
|
||||||
image output types.
|
custom image output types.
|
||||||
</para>
|
</para>
|
||||||
|
|
||||||
<para>
|
<para>
|
||||||
By default, this class is enabled through the
|
By default, the
|
||||||
<link linkend='var-IMAGE_CLASSES'><filename>IMAGE_CLASSES</filename></link>
|
<link linkend='ref-classes-image'><filename>image</filename></link>
|
||||||
variable in
|
class automatically enables the <filename>image_types</filename> class.
|
||||||
<link linkend='ref-classes-image'><filename>image.bbclass</filename></link>.
|
The <filename>image</filename> class uses the
|
||||||
If you define your own image types using a custom BitBake class and
|
<filename>IMGCLASSES</filename> variable as follows:
|
||||||
then use <filename>IMAGE_CLASSES</filename> to enable it, the custom
|
<literallayout class='monospaced'>
|
||||||
class must either inherit <filename>image_types</filename> or
|
IMGCLASSES = "rootfs_${IMAGE_PKGTYPE} image_types ${IMAGE_CLASSES}"
|
||||||
<filename>image_types</filename> must also appear in
|
IMGCLASSES += "${@['populate_sdk_base', 'populate_sdk_ext']['linux' in d.getVar("SDK_OS")]}"
|
||||||
<filename>IMAGE_CLASSES</filename>.
|
IMGCLASSES += "${@bb.utils.contains_any('IMAGE_FSTYPES', 'live iso hddimg', 'image-live', '', d)}"
|
||||||
|
IMGCLASSES += "${@bb.utils.contains('IMAGE_FSTYPES', 'container', 'image-container', '', d)}"
|
||||||
|
IMGCLASSES += "image_types_wic"
|
||||||
|
IMGCLASSES += "rootfs-postcommands"
|
||||||
|
IMGCLASSES += "image-postinst-intercepts"
|
||||||
|
inherit ${IMGCLASSES}
|
||||||
|
</literallayout>
|
||||||
</para>
|
</para>
|
||||||
|
|
||||||
<para>
|
<para>
|
||||||
This class also handles conversion and compression of images.
|
The <filename>image_types</filename> class also handles conversion and
|
||||||
|
compression of images.
|
||||||
<note>
|
<note>
|
||||||
To build a VMware VMDK image, you need to add "wic.vmdk" to
|
To build a VMware VMDK image, you need to add "wic.vmdk" to
|
||||||
<filename>IMAGE_FSTYPES</filename>.
|
<filename>IMAGE_FSTYPES</filename>.
|
||||||
@@ -1314,14 +1370,6 @@
|
|||||||
Normally, you do not use this class directly.
|
Normally, you do not use this class directly.
|
||||||
Instead, you add "live" to
|
Instead, you add "live" to
|
||||||
<link linkend='var-IMAGE_FSTYPES'><filename>IMAGE_FSTYPES</filename></link>.
|
<link linkend='var-IMAGE_FSTYPES'><filename>IMAGE_FSTYPES</filename></link>.
|
||||||
You can selectively build just one of these types through the
|
|
||||||
<link linkend='var-NOISO'><filename>NOISO</filename></link>
|
|
||||||
and
|
|
||||||
<link linkend='var-NOHDD'><filename>NOHDD</filename></link> variables.
|
|
||||||
For example, if you were building an ISO image, you would add "live"
|
|
||||||
to <filename>IMAGE_FSTYPES</filename>, set the
|
|
||||||
<filename>NOISO</filename> variable to "0" and the build system would
|
|
||||||
use the <filename>image-live</filename> class to build the ISO image.
|
|
||||||
</para>
|
</para>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
@@ -3502,6 +3550,14 @@ This check was removed for YP 2.3 release
|
|||||||
The classes handle loading the tests and starting the image.
|
The classes handle loading the tests and starting the image.
|
||||||
To use the classes, you need to perform steps to set up the
|
To use the classes, you need to perform steps to set up the
|
||||||
environment.
|
environment.
|
||||||
|
<note><title>Tip</title>
|
||||||
|
Best practices include using
|
||||||
|
<link linkend='var-IMAGE_CLASSES'><filename>IMAGE_CLASSES</filename></link>
|
||||||
|
rather than
|
||||||
|
<link linkend='var-INHERIT'><filename>INHERIT</filename></link> to
|
||||||
|
inherit the <filename>testimage</filename> class for automated
|
||||||
|
image testing.
|
||||||
|
</note>
|
||||||
</para>
|
</para>
|
||||||
|
|
||||||
<para>
|
<para>
|
||||||
@@ -3519,7 +3575,7 @@ This check was removed for YP 2.3 release
|
|||||||
</literallayout>
|
</literallayout>
|
||||||
The <filename>testimage-auto</filename> class runs tests on an image
|
The <filename>testimage-auto</filename> class runs tests on an image
|
||||||
after the image is constructed (i.e.
|
after the image is constructed (i.e.
|
||||||
<link linkend='var-TEST_IMAGE'><filename>TEST_IMAGE</filename></link>
|
<link linkend='var-TESTIMAGE_AUTO'><filename>TESTIMAGE_AUTO</filename></link>
|
||||||
must be set to "1").
|
must be set to "1").
|
||||||
</para>
|
</para>
|
||||||
|
|
||||||
@@ -3541,6 +3597,14 @@ This check was removed for YP 2.3 release
|
|||||||
<literallayout class='monospaced'>
|
<literallayout class='monospaced'>
|
||||||
$ bitbake -c testsdk image
|
$ bitbake -c testsdk image
|
||||||
</literallayout>
|
</literallayout>
|
||||||
|
<note><title>Tip</title>
|
||||||
|
Best practices include using
|
||||||
|
<link linkend='var-IMAGE_CLASSES'><filename>IMAGE_CLASSES</filename></link>
|
||||||
|
rather than
|
||||||
|
<link linkend='var-INHERIT'><filename>INHERIT</filename></link> to
|
||||||
|
inherit the <filename>testsdk</filename> class for automated
|
||||||
|
SDK testing.
|
||||||
|
</note>
|
||||||
</para>
|
</para>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
|
|||||||
@@ -124,9 +124,14 @@
|
|||||||
</revision>
|
</revision>
|
||||||
<revision>
|
<revision>
|
||||||
<revnumber>2.6</revnumber>
|
<revnumber>2.6</revnumber>
|
||||||
<date>&REL_MONTH_YEAR;</date>
|
<date>November 2018</date>
|
||||||
<revremark>Released with the Yocto Project 2.6 Release.</revremark>
|
<revremark>Released with the Yocto Project 2.6 Release.</revremark>
|
||||||
</revision>
|
</revision>
|
||||||
|
<revision>
|
||||||
|
<revnumber>2.6.1</revnumber>
|
||||||
|
<date>&REL_MONTH_YEAR;</date>
|
||||||
|
<revremark>Released with the Yocto Project 2.6.1 Release.</revremark>
|
||||||
|
</revision>
|
||||||
</revhistory>
|
</revhistory>
|
||||||
|
|
||||||
<copyright>
|
<copyright>
|
||||||
|
|||||||
@@ -65,6 +65,14 @@
|
|||||||
that our priority is on the supported platforms listed
|
that our priority is on the supported platforms listed
|
||||||
below.
|
below.
|
||||||
</para></listitem>
|
</para></listitem>
|
||||||
|
<listitem><para>
|
||||||
|
The Yocto Project is not compatible with the
|
||||||
|
<ulink url='https://en.wikipedia.org/wiki/Windows_Subsystem_for_Linux'>Windows Subsystem for Linux</ulink>
|
||||||
|
(WSL).
|
||||||
|
You cannot use a
|
||||||
|
<link linkend='hardware-build-system-term'>build host</link>
|
||||||
|
that is running WSL.
|
||||||
|
</para></listitem>
|
||||||
<listitem><para>
|
<listitem><para>
|
||||||
If you encounter problems, please go to
|
If you encounter problems, please go to
|
||||||
<ulink url='&YOCTO_BUGZILLA_URL;'>Yocto Project Bugzilla</ulink>
|
<ulink url='&YOCTO_BUGZILLA_URL;'>Yocto Project Bugzilla</ulink>
|
||||||
@@ -80,46 +88,49 @@
|
|||||||
</itemizedlist>
|
</itemizedlist>
|
||||||
</note>
|
</note>
|
||||||
<itemizedlist>
|
<itemizedlist>
|
||||||
<!--
|
<!-- <listitem><para>Ubuntu 10.04</para></listitem>
|
||||||
<listitem><para>Ubuntu 10.04</para></listitem>
|
|
||||||
<listitem><para>Ubuntu 11.10</para></listitem>
|
<listitem><para>Ubuntu 11.10</para></listitem>
|
||||||
<listitem><para>Ubuntu 12.04 (LTS)</para></listitem>
|
<listitem><para>Ubuntu 12.04 (LTS)</para></listitem>
|
||||||
<listitem><para>Ubuntu 13.10</para></listitem>
|
<listitem><para>Ubuntu 13.10</para></listitem>
|
||||||
<listitem><para>Ubuntu 14.04 (LTS)</para></listitem> -->
|
<listitem><para>Ubuntu 14.04 (LTS)</para></listitem>
|
||||||
<listitem><para>Ubuntu 14.10</para></listitem>
|
<listitem><para>Ubuntu 14.10</para></listitem>
|
||||||
<listitem><para>Ubuntu 15.04</para></listitem>
|
<listitem><para>Ubuntu 15.04</para></listitem>
|
||||||
<listitem><para>Ubuntu 15.10</para></listitem>
|
<listitem><para>Ubuntu 15.10</para></listitem> -->
|
||||||
<listitem><para>Ubuntu 16.04 (LTS)</para></listitem>
|
<listitem><para>Ubuntu 16.04 (LTS)</para></listitem>
|
||||||
<!-- <listitem><para>Fedora 16 (Verne)</para></listitem>
|
<listitem><para>Ubuntu 16.10 (LTS)</para></listitem>
|
||||||
|
<listitem><para>Ubuntu 17.04</para></listitem>
|
||||||
|
<!-- <listitem><para>Fedora 16 (Verne)</para></listitem>
|
||||||
<listitem><para>Fedora 17 (Spherical)</para></listitem>
|
<listitem><para>Fedora 17 (Spherical)</para></listitem>
|
||||||
<listitem><para>Fedora release 19 (Schrödinger's Cat)</para></listitem>
|
<listitem><para>Fedora 19 (Schrödinger's Cat)</para></listitem>
|
||||||
<listitem><para>Fedora release 20 (Heisenbug)</para></listitem> -->
|
<listitem><para>Fedora release 20 (Heisenbug)</para></listitem>
|
||||||
<listitem><para>Fedora release 22</para></listitem>
|
<listitem><para>Fedora release 22</para></listitem>
|
||||||
<listitem><para>Fedora release 23</para></listitem>
|
<listitem><para>Fedora release 23</para></listitem>
|
||||||
<!-- <listitem><para>Fedora release 24</para></listitem>
|
<listitem><para>Fedora release 24</para></listitem> -->
|
||||||
<listitem><para>CentOS release 5.6 (Final)</para></listitem>
|
<listitem><para>Fedora release 26</para></listitem>
|
||||||
|
<!-- <listitem><para>CentOS release 5.6 (Final)</para></listitem>
|
||||||
<listitem><para>CentOS release 5.7 (Final)</para></listitem>
|
<listitem><para>CentOS release 5.7 (Final)</para></listitem>
|
||||||
<listitem><para>CentOS release 5.8 (Final)</para></listitem>
|
<listitem><para>CentOS release 5.8 (Final)</para></listitem>
|
||||||
<listitem><para>CentOS release 6.3 (Final)</para></listitem>
|
<listitem><para>CentOS release 6.3 (Final)</para></listitem>
|
||||||
<listitem><para>CentOS release 6.x</para></listitem> -->
|
<listitem><para>CentOS release 6.x</para></listitem> -->
|
||||||
<listitem><para>CentOS release 7.x</para></listitem>
|
<listitem><para>CentOS release 7.x</para></listitem>
|
||||||
<!-- <listitem><para>Debian GNU/Linux 6.0 (Squeeze)</para></listitem>
|
<!-- <listitem><para>Debian GNU/Linux 6.0 (Squeeze)</para></listitem>
|
||||||
<listitem><para>Debian GNU/Linux 7.x (Wheezy)</para></listitem> -->
|
<listitem><para>Debian GNU/Linux 7.x (Wheezy)</para></listitem> -->
|
||||||
<listitem><para>Debian GNU/Linux 8.x (Jessie)</para></listitem>
|
<listitem><para>Debian GNU/Linux 8.x (Jessie)</para></listitem>
|
||||||
<listitem><para>Debian GNU/Linux 9.x (Stretch)</para></listitem>
|
<listitem><para>Debian GNU/Linux 9.x (Stretch)</para></listitem>
|
||||||
<!-- <listitem><para>Debian GNU/Linux 7.1 (Wheezy)</para></listitem>
|
<!-- <listitem><para>Debian GNU/Linux 7.1 (Wheezy)</para></listitem>
|
||||||
<listitem><para>Debian GNU/Linux 7.2 (Wheezy)</para></listitem>
|
<listitem><para>Debian GNU/Linux 7.2 (Wheezy)</para></listitem>
|
||||||
<listitem><para>Debian GNU/Linux 7.3 (Wheezy)</para></listitem>
|
<listitem><para>Debian GNU/Linux 7.3 (Wheezy)</para></listitem>
|
||||||
<listitem><para>Debian GNU/Linux 7.4 (Wheezy)</para></listitem>
|
<listitem><para>Debian GNU/Linux 7.4 (Wheezy)</para></listitem>
|
||||||
<listitem><para>Debian GNU/Linux 7.5 (Wheezy)</para></listitem>
|
<listitem><para>Debian GNU/Linux 7.5 (Wheezy)</para></listitem>
|
||||||
<listitem><para>Debian GNU/Linux 7.6 (Wheezy)</para></listitem> -->
|
<listitem><para>Debian GNU/Linux 7.6 (Wheezy)</para></listitem>
|
||||||
<!-- <listitem><para>openSUSE 11.4</para></listitem>
|
<listitem><para>openSUSE 11.4</para></listitem>
|
||||||
<listitem><para>openSUSE 12.1</para></listitem>
|
<listitem><para>openSUSE 12.1</para></listitem>
|
||||||
<listitem><para>openSUSE 12.2</para></listitem>
|
<listitem><para>openSUSE 12.2</para></listitem>
|
||||||
<listitem><para>openSUSE 12.3</para></listitem>
|
<listitem><para>openSUSE 12.3</para></listitem>
|
||||||
<listitem><para>openSUSE 13.1</para></listitem> -->
|
<listitem><para>openSUSE 13.1</para></listitem>
|
||||||
<listitem><para>openSUSE 13.2</para></listitem>
|
<listitem><para>openSUSE 13.2</para></listitem> -->
|
||||||
<listitem><para>openSUSE 42.1</para></listitem>
|
<listitem><para>openSUSE 42.1</para></listitem>
|
||||||
|
<listitem><para>openSUSE 42.2</para></listitem>
|
||||||
</itemizedlist>
|
</itemizedlist>
|
||||||
</para>
|
</para>
|
||||||
|
|
||||||
|
|||||||
@@ -886,7 +886,7 @@
|
|||||||
Boots an image and performs runtime tests within the image
|
Boots an image and performs runtime tests within the image
|
||||||
immediately after it has been built.
|
immediately after it has been built.
|
||||||
This task is enabled when you set
|
This task is enabled when you set
|
||||||
<link linkend='var-TEST_IMAGE'><filename>TEST_IMAGE</filename></link>
|
<link linkend='var-TESTIMAGE_AUTO'><filename>TESTIMAGE_AUTO</filename></link>
|
||||||
equal to "1".
|
equal to "1".
|
||||||
</para>
|
</para>
|
||||||
|
|
||||||
|
|||||||
@@ -4633,7 +4633,12 @@
|
|||||||
<glossdef>
|
<glossdef>
|
||||||
<para role="glossdeffirst">
|
<para role="glossdeffirst">
|
||||||
<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
|
<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
|
||||||
Additional <filename>cmake</filename> options.
|
Additional
|
||||||
|
<ulink url='https://cmake.org/overview/'>CMake</ulink>
|
||||||
|
options.
|
||||||
|
See the
|
||||||
|
<link linkend='ref-classes-cmake'><filename>cmake</filename></link>
|
||||||
|
class for additional information.
|
||||||
</para>
|
</para>
|
||||||
</glossdef>
|
</glossdef>
|
||||||
</glossentry>
|
</glossentry>
|
||||||
@@ -5228,6 +5233,28 @@
|
|||||||
</glossdef>
|
</glossdef>
|
||||||
</glossentry>
|
</glossentry>
|
||||||
|
|
||||||
|
<glossentry id='var-GCCVERSION'><glossterm>GCCVERSION</glossterm>
|
||||||
|
<info>
|
||||||
|
GCCVERSION[doc] = "Specifies the default version of the GNU C Compiler (GCC) to use."
|
||||||
|
</info>
|
||||||
|
<glossdef>
|
||||||
|
<para role="glossdeffirst">
|
||||||
|
<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
|
||||||
|
Specifies the default version of the GNU C Compiler (GCC)
|
||||||
|
used for compilation.
|
||||||
|
By default, <filename>GCCVERSION</filename> is set to
|
||||||
|
"8.x" in the
|
||||||
|
<filename>meta/conf/distro/include/tcmode-default.inc</filename>
|
||||||
|
include file:
|
||||||
|
<literallayout class='monospaced'>
|
||||||
|
GCCVERSION ?= "8.%"
|
||||||
|
</literallayout>
|
||||||
|
You can override this value by setting it in a configuration
|
||||||
|
file such as the <filename>local.conf</filename>.
|
||||||
|
</para>
|
||||||
|
</glossdef>
|
||||||
|
</glossentry>
|
||||||
|
|
||||||
<glossentry id='var-GDB'><glossterm>GDB</glossterm>
|
<glossentry id='var-GDB'><glossterm>GDB</glossterm>
|
||||||
<info>
|
<info>
|
||||||
GDB[doc] = "The minimal command and arguments to run the GNU Debugger."
|
GDB[doc] = "The minimal command and arguments to run the GNU Debugger."
|
||||||
@@ -7002,6 +7029,61 @@ recipes-graphics/xorg-font/font-alias_1.0.3.bb:PR = "${INC_PR}.3"
|
|||||||
</glossdef>
|
</glossdef>
|
||||||
</glossentry>
|
</glossentry>
|
||||||
|
|
||||||
|
<glossentry id='var-INITRAMFS_LINK_NAME'><glossterm>INITRAMFS_LINK_NAME</glossterm>
|
||||||
|
<info>
|
||||||
|
INITRAMFS_LINK_NAME[doc] = "The link name of the initial RAM filesystem image."
|
||||||
|
</info>
|
||||||
|
<glossdef>
|
||||||
|
<para role="glossdeffirst">
|
||||||
|
<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
|
||||||
|
The link name of the initial RAM filesystem image.
|
||||||
|
This variable is set in the
|
||||||
|
<filename>meta/classes/kernel-artifact-names.bbclass</filename>
|
||||||
|
file as follows:
|
||||||
|
<literallayout class='monospaced'>
|
||||||
|
INITRAMFS_LINK_NAME ?= "initramfs-${KERNEL_ARTIFACT_LINK_NAME}"
|
||||||
|
</literallayout>
|
||||||
|
The value of the <filename>KERNEL_ARTIFACT_LINK_NAME</filename>
|
||||||
|
variable, which is set in the same file, has the following
|
||||||
|
value:
|
||||||
|
<literallayout class='monospaced'>
|
||||||
|
KERNEL_ARTIFACT_LINK_NAME ?= "${MACHINE}"
|
||||||
|
</literallayout>
|
||||||
|
</para>
|
||||||
|
|
||||||
|
<para>
|
||||||
|
See the
|
||||||
|
<link linkend='var-MACHINE'><filename>MACHINE</filename></link>
|
||||||
|
variable for additional information.
|
||||||
|
</para>
|
||||||
|
</glossdef>
|
||||||
|
</glossentry>
|
||||||
|
|
||||||
|
<glossentry id='var-INITRAMFS_NAME'><glossterm>INITRAMFS_NAME</glossterm>
|
||||||
|
<info>
|
||||||
|
INITRAMFS_NAME[doc] = "The base name of the initial RAM filesystem image."
|
||||||
|
</info>
|
||||||
|
<glossdef>
|
||||||
|
<para role="glossdeffirst">
|
||||||
|
<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
|
||||||
|
The base name of the initial RAM filesystem image.
|
||||||
|
This variable is set in the
|
||||||
|
<filename>meta/classes/kernel-artifact-names.bbclass</filename>
|
||||||
|
file as follows:
|
||||||
|
<literallayout class='monospaced'>
|
||||||
|
INITRAMFS_NAME ?= "initramfs-${KERNEL_ARTIFACT_NAME}"
|
||||||
|
</literallayout>
|
||||||
|
The value of the
|
||||||
|
<link linkend='var-KERNEL_ARTIFACT_NAME'><filename>KERNEL_ARTIFACT_NAME</filename></link>
|
||||||
|
variable, which is set in the same file, has the following
|
||||||
|
value:
|
||||||
|
<literallayout class='monospaced'>
|
||||||
|
KERNEL_ARTIFACT_NAME ?= "${PKGE}-${PKGV}-${PKGR}-${MACHINE}${IMAGE_VERSION_SUFFIX}"
|
||||||
|
</literallayout>
|
||||||
|
</para>
|
||||||
|
</glossdef>
|
||||||
|
</glossentry>
|
||||||
|
|
||||||
<glossentry id='var-INITRD'><glossterm>INITRD</glossterm>
|
<glossentry id='var-INITRD'><glossterm>INITRD</glossterm>
|
||||||
<info>
|
<info>
|
||||||
INITRD[doc] = "Indicates a list of filesystem images to concatenate and use as an initial RAM disk (initrd)."
|
INITRD[doc] = "Indicates a list of filesystem images to concatenate and use as an initial RAM disk (initrd)."
|
||||||
@@ -7378,6 +7460,45 @@ recipes-graphics/xorg-font/font-alias_1.0.3.bb:PR = "${INC_PR}.3"
|
|||||||
</glossdef>
|
</glossdef>
|
||||||
</glossentry>
|
</glossentry>
|
||||||
|
|
||||||
|
<glossentry id='var-KERNEL_ARTIFACT_NAME'><glossterm>KERNEL_ARTIFACT_NAME</glossterm>
|
||||||
|
<info>
|
||||||
|
KERNEL_ARTIFACT_NAME[doc] = "Specifies the name of all of the build artifacts."
|
||||||
|
</info>
|
||||||
|
<glossdef>
|
||||||
|
<para role="glossdeffirst">
|
||||||
|
<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
|
||||||
|
Specifies the name of all of the build artifacts.
|
||||||
|
You can change the name of the artifacts by changing the
|
||||||
|
<filename>KERNEL_ARTIFACT_NAME</filename> variable.
|
||||||
|
</para>
|
||||||
|
|
||||||
|
<para>
|
||||||
|
The value of <filename>KERNEL_ARTIFACT_NAME</filename>,
|
||||||
|
which is set in the
|
||||||
|
<filename> meta/classes/kernel-artifact-names.bbclass</filename>
|
||||||
|
file, has the following default value:
|
||||||
|
<literallayout class='monospaced'>
|
||||||
|
KERNEL_ARTIFACT_NAME ?= "${PKGE}-${PKGV}-${PKGR}-${MACHINE}${IMAGE_VERSION_SUFFIX}"
|
||||||
|
</literallayout>
|
||||||
|
</para>
|
||||||
|
|
||||||
|
<para>
|
||||||
|
See the
|
||||||
|
<link linkend='var-PKGE'><filename>PKGE</filename></link>,
|
||||||
|
<link linkend='var-PKGV'><filename>PKGV</filename></link>,
|
||||||
|
<link linkend='var-PKGR'><filename>PKGR</filename></link>,
|
||||||
|
and
|
||||||
|
<link linkend='var-MACHINE'><filename>MACHINE</filename></link>
|
||||||
|
variables for additional information.
|
||||||
|
<note>
|
||||||
|
The <filename>IMAGE_VERSION_SUFFIX</filename> variable
|
||||||
|
is set to
|
||||||
|
<link linkend='var-DATETIME'><filename>DATETIME</filename></link>.
|
||||||
|
</note>
|
||||||
|
</para>
|
||||||
|
</glossdef>
|
||||||
|
</glossentry>
|
||||||
|
|
||||||
<glossentry id='var-KERNEL_CLASSES'><glossterm>KERNEL_CLASSES</glossterm>
|
<glossentry id='var-KERNEL_CLASSES'><glossterm>KERNEL_CLASSES</glossterm>
|
||||||
<info>
|
<info>
|
||||||
KERNEL_CLASSES[doc] = "A list of classes defining kernel image types that kernel class should inherit."
|
KERNEL_CLASSES[doc] = "A list of classes defining kernel image types that kernel class should inherit."
|
||||||
@@ -7427,6 +7548,61 @@ recipes-graphics/xorg-font/font-alias_1.0.3.bb:PR = "${INC_PR}.3"
|
|||||||
</glossdef>
|
</glossdef>
|
||||||
</glossentry>
|
</glossentry>
|
||||||
|
|
||||||
|
<glossentry id='var-KERNEL_DTB_LINK_NAME'><glossterm>KERNEL_DTB_LINK_NAME</glossterm>
|
||||||
|
<info>
|
||||||
|
KERNEL_DTB_LINK_NAME[doc] = "The link name of the kernel device tree binary (DTB)."
|
||||||
|
</info>
|
||||||
|
<glossdef>
|
||||||
|
<para role="glossdeffirst">
|
||||||
|
<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
|
||||||
|
The link name of the kernel device tree binary (DTB).
|
||||||
|
This variable is set in the
|
||||||
|
<filename>meta/classes/kernel-artifact-names.bbclass</filename>
|
||||||
|
file as follows:
|
||||||
|
<literallayout class='monospaced'>
|
||||||
|
KERNEL_DTB_LINK_NAME ?= "${KERNEL_ARTIFACT_LINK_NAME}"
|
||||||
|
</literallayout>
|
||||||
|
The value of the <filename>KERNEL_ARTIFACT_LINK_NAME</filename>
|
||||||
|
variable, which is set in the same file, has the following
|
||||||
|
value:
|
||||||
|
<literallayout class='monospaced'>
|
||||||
|
KERNEL_ARTIFACT_LINK_NAME ?= "${MACHINE}"
|
||||||
|
</literallayout>
|
||||||
|
</para>
|
||||||
|
|
||||||
|
<para>
|
||||||
|
See the
|
||||||
|
<link linkend='var-MACHINE'><filename>MACHINE</filename></link>
|
||||||
|
variable for additional information.
|
||||||
|
</para>
|
||||||
|
</glossdef>
|
||||||
|
</glossentry>
|
||||||
|
|
||||||
|
<glossentry id='var-KERNEL_DTB_NAME'><glossterm>KERNEL_DTB_NAME</glossterm>
|
||||||
|
<info>
|
||||||
|
KERNEL_DTB_NAME[doc] = "The base name of the kernel device tree binary (DTB)."
|
||||||
|
</info>
|
||||||
|
<glossdef>
|
||||||
|
<para role="glossdeffirst">
|
||||||
|
<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
|
||||||
|
The base name of the kernel device tree binary (DTB).
|
||||||
|
This variable is set in the
|
||||||
|
<filename>meta/classes/kernel-artifact-names.bbclass</filename>
|
||||||
|
file as follows:
|
||||||
|
<literallayout class='monospaced'>
|
||||||
|
KERNEL_DTB_NAME ?= "${KERNEL_ARTIFACT_NAME}"
|
||||||
|
</literallayout>
|
||||||
|
The value of the
|
||||||
|
<link linkend='var-KERNEL_ARTIFACT_NAME'><filename>KERNEL_ARTIFACT_NAME</filename></link>
|
||||||
|
variable, which is set in the same file, has the following
|
||||||
|
value:
|
||||||
|
<literallayout class='monospaced'>
|
||||||
|
KERNEL_ARTIFACT_NAME ?= "${PKGE}-${PKGV}-${PKGR}-${MACHINE}${IMAGE_VERSION_SUFFIX}"
|
||||||
|
</literallayout>
|
||||||
|
</para>
|
||||||
|
</glossdef>
|
||||||
|
</glossentry>
|
||||||
|
|
||||||
<glossentry id='var-KERNEL_EXTRA_ARGS'><glossterm>KERNEL_EXTRA_ARGS</glossterm>
|
<glossentry id='var-KERNEL_EXTRA_ARGS'><glossterm>KERNEL_EXTRA_ARGS</glossterm>
|
||||||
<info>
|
<info>
|
||||||
KERNEL_EXTRA_ARGS[doc] = "Specifies additional make command-line arguments the OpenEmbedded build system passes on when compiling the kernel."
|
KERNEL_EXTRA_ARGS[doc] = "Specifies additional make command-line arguments the OpenEmbedded build system passes on when compiling the kernel."
|
||||||
@@ -7484,38 +7660,93 @@ recipes-graphics/xorg-font/font-alias_1.0.3.bb:PR = "${INC_PR}.3"
|
|||||||
<literallayout class='monospaced'>
|
<literallayout class='monospaced'>
|
||||||
KERNEL_EXTRA_FEATURES ?= "features/netfilter/netfilter.scc features/taskstats/taskstats.scc"
|
KERNEL_EXTRA_FEATURES ?= "features/netfilter/netfilter.scc features/taskstats/taskstats.scc"
|
||||||
KERNEL_FEATURES_append = " ${KERNEL_EXTRA_FEATURES}"
|
KERNEL_FEATURES_append = " ${KERNEL_EXTRA_FEATURES}"
|
||||||
KERNEL_FEATURES_append_qemuall=" cfg/virtio.scc"
|
KERNEL_FEATURES_append_qemuall = " cfg/virtio.scc"
|
||||||
KERNEL_FEATURES_append_qemux86=" cfg/sound.scc cfg/paravirt_kvm.scc"
|
KERNEL_FEATURES_append_qemux86 = " cfg/sound.scc cfg/paravirt_kvm.scc"
|
||||||
KERNEL_FEATURES_append_qemux86-64=" cfg/sound.scc"
|
KERNEL_FEATURES_append_qemux86-64 = " cfg/sound.scc" </literallayout></para>
|
||||||
</literallayout></para>
|
|
||||||
</glossdef>
|
</glossdef>
|
||||||
</glossentry>
|
</glossentry>
|
||||||
|
|
||||||
<glossentry id='var-KERNEL_IMAGE_BASE_NAME'><glossterm>KERNEL_IMAGE_BASE_NAME</glossterm>
|
<glossentry id='var-KERNEL_FIT_LINK_NAME'><glossterm>KERNEL_FIT_LINK_NAME</glossterm>
|
||||||
<info>
|
<info>
|
||||||
KERNEL_IMAGE_BASE_NAME[doc] = "The base name of the kernel image."
|
KERNEL_FIT_LINK_NAME[doc] = "The link name of the kernel flattened image tree (FIT) image."
|
||||||
</info>
|
</info>
|
||||||
<glossdef>
|
<glossdef>
|
||||||
<para role="glossdeffirst">
|
<para role="glossdeffirst">
|
||||||
<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
|
<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
|
||||||
The base name of the kernel image.
|
The link name of the kernel flattened image tree (FIT) image.
|
||||||
This variable is set in the
|
This variable is set in the
|
||||||
<link linkend='ref-classes-kernel'>kernel</link> class
|
<filename>meta/classes/kernel-artifact-names.bbclass</filename>
|
||||||
as follows:
|
file as follows:
|
||||||
<literallayout class='monospaced'>
|
<literallayout class='monospaced'>
|
||||||
KERNEL_IMAGE_BASE_NAME ?= "${PKGE}-${PKGV}-${PKGR}-${MACHINE}-${DATETIME}"
|
KERNEL_FIT_LINK_NAME ?= "${KERNEL_ARTIFACT_LINK_NAME}"
|
||||||
|
</literallayout>
|
||||||
|
The value of the <filename>KERNEL_ARTIFACT_LINK_NAME</filename>
|
||||||
|
variable, which is set in the same file, has the following
|
||||||
|
value:
|
||||||
|
<literallayout class='monospaced'>
|
||||||
|
KERNEL_ARTIFACT_LINK_NAME ?= "${MACHINE}"
|
||||||
</literallayout>
|
</literallayout>
|
||||||
</para>
|
</para>
|
||||||
|
|
||||||
<para>
|
<para>
|
||||||
See the
|
See the
|
||||||
<link linkend='var-PKGE'><filename>PKGE</filename></link>,
|
<link linkend='var-MACHINE'><filename>MACHINE</filename></link>
|
||||||
<link linkend='var-PKGV'><filename>PKGV</filename></link>,
|
variable for additional information.
|
||||||
<link linkend='var-PKGR'><filename>PKGR</filename></link>,
|
</para>
|
||||||
<link linkend='var-MACHINE'><filename>MACHINE</filename></link>,
|
</glossdef>
|
||||||
and
|
</glossentry>
|
||||||
<link linkend='var-DATETIME'><filename>DATETIME</filename></link>
|
|
||||||
variables for additional information.
|
<glossentry id='var-KERNEL_FIT_NAME'><glossterm>KERNEL_FIT_NAME</glossterm>
|
||||||
|
<info>
|
||||||
|
KERNEL_FIT_NAME[doc] = "The base name of the kernel flattened image tree (FIT) image."
|
||||||
|
</info>
|
||||||
|
<glossdef>
|
||||||
|
<para role="glossdeffirst">
|
||||||
|
<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
|
||||||
|
The base name of the kernel flattened image tree (FIT) image.
|
||||||
|
This variable is set in the
|
||||||
|
<filename>meta/classes/kernel-artifact-names.bbclass</filename>
|
||||||
|
file as follows:
|
||||||
|
<literallayout class='monospaced'>
|
||||||
|
KERNEL_FIT_NAME ?= "${KERNEL_ARTIFACT_NAME}"
|
||||||
|
</literallayout>
|
||||||
|
The value of the
|
||||||
|
<link linkend='var-KERNEL_ARTIFACT_NAME'><filename>KERNEL_ARTIFACT_NAME</filename></link>
|
||||||
|
variable, which is set in the same file, has the following
|
||||||
|
value:
|
||||||
|
<literallayout class='monospaced'>
|
||||||
|
KERNEL_ARTIFACT_NAME ?= "${PKGE}-${PKGV}-${PKGR}-${MACHINE}${IMAGE_VERSION_SUFFIX}"
|
||||||
|
</literallayout>
|
||||||
|
</para>
|
||||||
|
</glossdef>
|
||||||
|
</glossentry>
|
||||||
|
|
||||||
|
<glossentry id='var-KERNEL_IMAGE_LINK_NAME'><glossterm>KERNEL_IMAGE_LINK_NAME</glossterm>
|
||||||
|
<info>
|
||||||
|
KERNEL_IMAGE_LINK_NAME[doc] = "The link name for the kernel image."
|
||||||
|
</info>
|
||||||
|
<glossdef>
|
||||||
|
<para role="glossdeffirst">
|
||||||
|
<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
|
||||||
|
The link name for the kernel image.
|
||||||
|
This variable is set in the
|
||||||
|
<filename>meta/classes/kernel-artifact-names.bbclass</filename>
|
||||||
|
file as follows:
|
||||||
|
<literallayout class='monospaced'>
|
||||||
|
KERNEL_IMAGE_LINK_NAME ?= "${KERNEL_ARTIFACT_LINK_NAME}"
|
||||||
|
</literallayout>
|
||||||
|
The value of the <filename>KERNEL_ARTIFACT_LINK_NAME</filename>
|
||||||
|
variable, which is set in the same file, has the following
|
||||||
|
value:
|
||||||
|
<literallayout class='monospaced'>
|
||||||
|
KERNEL_ARTIFACT_LINK_NAME ?= "${MACHINE}"
|
||||||
|
</literallayout>
|
||||||
|
</para>
|
||||||
|
|
||||||
|
<para>
|
||||||
|
See the
|
||||||
|
<link linkend='var-MACHINE'><filename>MACHINE</filename></link>
|
||||||
|
variable for additional information.
|
||||||
</para>
|
</para>
|
||||||
</glossdef>
|
</glossdef>
|
||||||
</glossentry>
|
</glossentry>
|
||||||
@@ -7551,6 +7782,31 @@ recipes-graphics/xorg-font/font-alias_1.0.3.bb:PR = "${INC_PR}.3"
|
|||||||
</glossdef>
|
</glossdef>
|
||||||
</glossentry>
|
</glossentry>
|
||||||
|
|
||||||
|
<glossentry id='var-KERNEL_IMAGE_NAME'><glossterm>KERNEL_IMAGE_NAME</glossterm>
|
||||||
|
<info>
|
||||||
|
KERNEL_IMAGE_NAME[doc] = "The base name of the kernel image."
|
||||||
|
</info>
|
||||||
|
<glossdef>
|
||||||
|
<para role="glossdeffirst">
|
||||||
|
<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
|
||||||
|
The base name of the kernel image.
|
||||||
|
This variable is set in the
|
||||||
|
<filename>meta/classes/kernel-artifact-names.bbclass</filename>
|
||||||
|
file as follows:
|
||||||
|
<literallayout class='monospaced'>
|
||||||
|
KERNEL_IMAGE_NAME ?= "${KERNEL_ARTIFACT_NAME}"
|
||||||
|
</literallayout>
|
||||||
|
The value of the
|
||||||
|
<link linkend='var-KERNEL_ARTIFACT_NAME'><filename>KERNEL_ARTIFACT_NAME</filename></link>
|
||||||
|
variable, which is set in the same file, has the following
|
||||||
|
value:
|
||||||
|
<literallayout class='monospaced'>
|
||||||
|
KERNEL_ARTIFACT_NAME ?= "${PKGE}-${PKGV}-${PKGR}-${MACHINE}${IMAGE_VERSION_SUFFIX}"
|
||||||
|
</literallayout>
|
||||||
|
</para>
|
||||||
|
</glossdef>
|
||||||
|
</glossentry>
|
||||||
|
|
||||||
<glossentry id='var-KERNEL_IMAGETYPE'><glossterm>KERNEL_IMAGETYPE</glossterm>
|
<glossentry id='var-KERNEL_IMAGETYPE'><glossterm>KERNEL_IMAGETYPE</glossterm>
|
||||||
<info>
|
<info>
|
||||||
KERNEL_IMAGETYPE[doc] = "The type of kernel to build for a device, usually set by the machine configuration files and defaults to 'zImage'."
|
KERNEL_IMAGETYPE[doc] = "The type of kernel to build for a device, usually set by the machine configuration files and defaults to 'zImage'."
|
||||||
@@ -8964,35 +9220,6 @@ recipes-graphics/xorg-font/font-alias_1.0.3.bb:PR = "${INC_PR}.3"
|
|||||||
</glossdef>
|
</glossdef>
|
||||||
</glossentry>
|
</glossentry>
|
||||||
|
|
||||||
<glossentry id='var-MODULE_IMAGE_BASE_NAME'><glossterm>MODULE_IMAGE_BASE_NAME</glossterm>
|
|
||||||
<info>
|
|
||||||
MODULE_IMAGE_BASE_NAME[doc] = "The base name of the kernel modules tarball."
|
|
||||||
</info>
|
|
||||||
<glossdef>
|
|
||||||
<para role="glossdeffirst">
|
|
||||||
<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
|
|
||||||
The base name of the kernel modules tarball.
|
|
||||||
This variable is set in the
|
|
||||||
<link linkend='ref-classes-kernel'>kernel</link> class
|
|
||||||
as follows:
|
|
||||||
<literallayout class='monospaced'>
|
|
||||||
MODULE_IMAGE_BASE_NAME ?= "modules-${PKGE}-${PKGV}-${PKGR}-${MACHINE}-${DATETIME}"
|
|
||||||
</literallayout>
|
|
||||||
</para>
|
|
||||||
|
|
||||||
<para>
|
|
||||||
See the
|
|
||||||
<link linkend='var-PKGE'><filename>PKGE</filename></link>,
|
|
||||||
<link linkend='var-PKGV'><filename>PKGV</filename></link>,
|
|
||||||
<link linkend='var-PKGR'><filename>PKGR</filename></link>,
|
|
||||||
<link linkend='var-MACHINE'><filename>MACHINE</filename></link>,
|
|
||||||
and
|
|
||||||
<link linkend='var-DATETIME'><filename>DATETIME</filename></link>
|
|
||||||
variables for additional information.
|
|
||||||
</para>
|
|
||||||
</glossdef>
|
|
||||||
</glossentry>
|
|
||||||
|
|
||||||
<glossentry id='var-MODULE_TARBALL_DEPLOY'><glossterm>MODULE_TARBALL_DEPLOY</glossterm>
|
<glossentry id='var-MODULE_TARBALL_DEPLOY'><glossterm>MODULE_TARBALL_DEPLOY</glossterm>
|
||||||
<info>
|
<info>
|
||||||
MODULE_TARBALL_DEPLOY[doc] = "Controls creation of the modules-*.tgz file. Set this variable to "0" to disable creation of this file, which contains all of the kernel modules resulting from a kernel build."
|
MODULE_TARBALL_DEPLOY[doc] = "Controls creation of the modules-*.tgz file. Set this variable to "0" to disable creation of this file, which contains all of the kernel modules resulting from a kernel build."
|
||||||
@@ -9009,6 +9236,61 @@ recipes-graphics/xorg-font/font-alias_1.0.3.bb:PR = "${INC_PR}.3"
|
|||||||
</glossdef>
|
</glossdef>
|
||||||
</glossentry>
|
</glossentry>
|
||||||
|
|
||||||
|
<glossentry id='var-MODULE_TARBALL_LINK_NAME'><glossterm>MODULE_TARBALL_LINK_NAME</glossterm>
|
||||||
|
<info>
|
||||||
|
MODULE_TARBALL_LINK_NAME[doc] = "The link name of the kernel module tarball."
|
||||||
|
</info>
|
||||||
|
<glossdef>
|
||||||
|
<para role="glossdeffirst">
|
||||||
|
<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
|
||||||
|
The link name of the kernel module tarball.
|
||||||
|
This variable is set in the
|
||||||
|
<filename>meta/classes/kernel-artifact-names.bbclass</filename>
|
||||||
|
file as follows:
|
||||||
|
<literallayout class='monospaced'>
|
||||||
|
MODULE_TARBALL_LINK_NAME ?= "${KERNEL_ARTIFACT_LINK_NAME}"
|
||||||
|
</literallayout>
|
||||||
|
The value of the <filename>KERNEL_ARTIFACT_LINK_NAME</filename>
|
||||||
|
variable, which is set in the same file, has the following
|
||||||
|
value:
|
||||||
|
<literallayout class='monospaced'>
|
||||||
|
KERNEL_ARTIFACT_LINK_NAME ?= "${MACHINE}"
|
||||||
|
</literallayout>
|
||||||
|
</para>
|
||||||
|
|
||||||
|
<para>
|
||||||
|
See the
|
||||||
|
<link linkend='var-MACHINE'><filename>MACHINE</filename></link>
|
||||||
|
variable for additional information.
|
||||||
|
</para>
|
||||||
|
</glossdef>
|
||||||
|
</glossentry>
|
||||||
|
|
||||||
|
<glossentry id='var-MODULE_TARBALL_NAME'><glossterm>MODULE_TARBALL_NAME</glossterm>
|
||||||
|
<info>
|
||||||
|
MODULE_TARBALL_NAME[doc] = "The base name of the kernel module tarball."
|
||||||
|
</info>
|
||||||
|
<glossdef>
|
||||||
|
<para role="glossdeffirst">
|
||||||
|
<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
|
||||||
|
The base name of the kernel module tarball.
|
||||||
|
This variable is set in the
|
||||||
|
<filename>meta/classes/kernel-artifact-names.bbclass</filename>
|
||||||
|
file as follows:
|
||||||
|
<literallayout class='monospaced'>
|
||||||
|
MODULE_TARBALL_NAME ?= "${KERNEL_ARTIFACT_NAME}"
|
||||||
|
</literallayout>
|
||||||
|
The value of the
|
||||||
|
<link linkend='var-KERNEL_ARTIFACT_NAME'><filename>KERNEL_ARTIFACT_NAME</filename></link>
|
||||||
|
variable, which is set in the same file, has the following
|
||||||
|
value:
|
||||||
|
<literallayout class='monospaced'>
|
||||||
|
KERNEL_ARTIFACT_NAME ?= "${PKGE}-${PKGV}-${PKGR}-${MACHINE}${IMAGE_VERSION_SUFFIX}"
|
||||||
|
</literallayout>
|
||||||
|
</para>
|
||||||
|
</glossdef>
|
||||||
|
</glossentry>
|
||||||
|
|
||||||
<!--
|
<!--
|
||||||
<glossentry id='var-MULTIMACH_HOST_SYS'><glossterm>MULTIMACH_HOST_SYS</glossterm>
|
<glossentry id='var-MULTIMACH_HOST_SYS'><glossterm>MULTIMACH_HOST_SYS</glossterm>
|
||||||
<info>
|
<info>
|
||||||
@@ -9237,44 +9519,6 @@ recipes-graphics/xorg-font/font-alias_1.0.3.bb:PR = "${INC_PR}.3"
|
|||||||
</para>
|
</para>
|
||||||
</glossdef>
|
</glossdef>
|
||||||
</glossentry>
|
</glossentry>
|
||||||
|
|
||||||
<glossentry id='var-NOHDD'><glossterm>NOHDD</glossterm>
|
|
||||||
<info>
|
|
||||||
NOHDD[doc] = "Causes the OpenEmbedded build system to skip building the .hddimg image."
|
|
||||||
</info>
|
|
||||||
<glossdef>
|
|
||||||
<para role="glossdeffirst">
|
|
||||||
<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
|
|
||||||
Causes the OpenEmbedded build system to skip building the
|
|
||||||
<filename>.hddimg</filename> image.
|
|
||||||
The <filename>NOHDD</filename> variable is used with the
|
|
||||||
<link linkend='ref-classes-image-live'><filename>image-live</filename></link>
|
|
||||||
class.
|
|
||||||
Set the variable to "1" to prevent the
|
|
||||||
<filename>.hddimg</filename> image from being built.
|
|
||||||
</para>
|
|
||||||
</glossdef>
|
|
||||||
</glossentry>
|
|
||||||
|
|
||||||
<glossentry id='var-NOISO'><glossterm>NOISO</glossterm>
|
|
||||||
<info>
|
|
||||||
NOISO[doc] = "Causes the OpenEmbedded build system to skip building the ISO image."
|
|
||||||
</info>
|
|
||||||
<glossdef>
|
|
||||||
<para role="glossdeffirst">
|
|
||||||
<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
|
|
||||||
Causes the OpenEmbedded build system to skip building the
|
|
||||||
ISO image.
|
|
||||||
The <filename>NOISO</filename> variable is used with the
|
|
||||||
<link linkend='ref-classes-image-live'><filename>image-live</filename></link>
|
|
||||||
class.
|
|
||||||
Set the variable to "1" to prevent the ISO image from
|
|
||||||
being built.
|
|
||||||
To enable building an ISO image, set the variable to "0".
|
|
||||||
</para>
|
|
||||||
</glossdef>
|
|
||||||
</glossentry>
|
|
||||||
|
|
||||||
</glossdiv>
|
</glossdiv>
|
||||||
|
|
||||||
<glossdiv id='var-glossary-o'><title>O</title>
|
<glossdiv id='var-glossary-o'><title>O</title>
|
||||||
@@ -10093,9 +10337,9 @@ recipes-graphics/xorg-font/font-alias_1.0.3.bb:PR = "${INC_PR}.3"
|
|||||||
Here is the basic block structure:
|
Here is the basic block structure:
|
||||||
<literallayout class='monospaced'>
|
<literallayout class='monospaced'>
|
||||||
PACKAGECONFIG ??= "f1 f2 f3 ..."
|
PACKAGECONFIG ??= "f1 f2 f3 ..."
|
||||||
PACKAGECONFIG[f1] = "--with-f1,--without-f1,build-deps-f1,rt-deps-f1"
|
PACKAGECONFIG[f1] = "--with-f1,--without-f1,build-deps-f1,rt-deps-f1,rt-recs-f1"
|
||||||
PACKAGECONFIG[f2] = "--with-f2,--without-f2,build-deps-f2,rt-deps-f2"
|
PACKAGECONFIG[f2] = "--with-f2,--without-f2,build-deps-f2,rt-deps-f2,rt-recs-f2"
|
||||||
PACKAGECONFIG[f3] = "--with-f3,--without-f3,build-deps-f3,rt-deps-f3"
|
PACKAGECONFIG[f3] = "--with-f3,--without-f3,build-deps-f3,rt-deps-f3,rt-recs-f3"
|
||||||
</literallayout>
|
</literallayout>
|
||||||
</para>
|
</para>
|
||||||
|
|
||||||
@@ -10104,7 +10348,7 @@ recipes-graphics/xorg-font/font-alias_1.0.3.bb:PR = "${INC_PR}.3"
|
|||||||
variable itself specifies a space-separated list of the
|
variable itself specifies a space-separated list of the
|
||||||
features to enable.
|
features to enable.
|
||||||
Following the features, you can determine the behavior of
|
Following the features, you can determine the behavior of
|
||||||
each feature by providing up to four order-dependent
|
each feature by providing up to five order-dependent
|
||||||
arguments, which are separated by commas.
|
arguments, which are separated by commas.
|
||||||
You can omit any argument you like but must retain the
|
You can omit any argument you like but must retain the
|
||||||
separating commas.
|
separating commas.
|
||||||
@@ -10130,6 +10374,10 @@ recipes-graphics/xorg-font/font-alias_1.0.3.bb:PR = "${INC_PR}.3"
|
|||||||
(<link linkend='var-RDEPENDS'><filename>RDEPENDS</filename></link>)
|
(<link linkend='var-RDEPENDS'><filename>RDEPENDS</filename></link>)
|
||||||
that should be added if the feature is enabled.
|
that should be added if the feature is enabled.
|
||||||
</para></listitem>
|
</para></listitem>
|
||||||
|
<listitem><para>Additional runtime recommendations
|
||||||
|
(<link linkend='var-RRECOMMENDS'><filename>RRECOMMENDS</filename></link>)
|
||||||
|
that should be added if the feature is enabled.
|
||||||
|
</para></listitem>
|
||||||
</orderedlist>
|
</orderedlist>
|
||||||
</para>
|
</para>
|
||||||
|
|
||||||
@@ -10178,7 +10426,7 @@ recipes-graphics/xorg-font/font-alias_1.0.3.bb:PR = "${INC_PR}.3"
|
|||||||
<filename>PACKAGECONFIG</filename>.
|
<filename>PACKAGECONFIG</filename>.
|
||||||
You can either completely override the variable:
|
You can either completely override the variable:
|
||||||
<literallayout class='monospaced'>
|
<literallayout class='monospaced'>
|
||||||
PACKAGECONFIG="f4 f5"
|
PACKAGECONFIG = "f4 f5"
|
||||||
</literallayout>
|
</literallayout>
|
||||||
Or, you can just append the variable:
|
Or, you can just append the variable:
|
||||||
<literallayout class='monospaced'>
|
<literallayout class='monospaced'>
|
||||||
@@ -10192,7 +10440,7 @@ recipes-graphics/xorg-font/font-alias_1.0.3.bb:PR = "${INC_PR}.3"
|
|||||||
As with append files previously described,
|
As with append files previously described,
|
||||||
you can either completely override the variable:
|
you can either completely override the variable:
|
||||||
<literallayout class='monospaced'>
|
<literallayout class='monospaced'>
|
||||||
PACKAGECONFIG_pn-<replaceable>recipename</replaceable>="f4 f5"
|
PACKAGECONFIG_pn-<replaceable>recipename</replaceable> = "f4 f5"
|
||||||
</literallayout>
|
</literallayout>
|
||||||
Or, you can just amend the variable:
|
Or, you can just amend the variable:
|
||||||
<literallayout class='monospaced'>
|
<literallayout class='monospaced'>
|
||||||
@@ -15195,41 +15443,6 @@ recipes-graphics/xorg-font/font-alias_1.0.3.bb:PR = "${INC_PR}.3"
|
|||||||
</glossdef>
|
</glossdef>
|
||||||
</glossentry>
|
</glossentry>
|
||||||
|
|
||||||
<glossentry id='var-TEST_IMAGE'><glossterm>TEST_IMAGE</glossterm>
|
|
||||||
<info>
|
|
||||||
TEST_IMAGE[doc] = "Enables test booting of virtual machine images under the QEMU emulator after any root filesystems are created and runs tests against those images."
|
|
||||||
</info>
|
|
||||||
<glossdef>
|
|
||||||
<para role="glossdeffirst">
|
|
||||||
<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
|
|
||||||
Automatically runs the series of automated tests for
|
|
||||||
images when an image is successfully built.
|
|
||||||
</para>
|
|
||||||
|
|
||||||
<para>
|
|
||||||
These tests are written in Python making use of the
|
|
||||||
<filename>unittest</filename> module, and the majority of
|
|
||||||
them run commands on the target system over
|
|
||||||
<filename>ssh</filename>.
|
|
||||||
You can set this variable to "1" in your
|
|
||||||
<filename>local.conf</filename> file in the
|
|
||||||
<link linkend='build-directory'>Build Directory</link>
|
|
||||||
to have the OpenEmbedded build system automatically run
|
|
||||||
these tests after an image successfully builds:
|
|
||||||
<literallayout class='monospaced'>
|
|
||||||
TEST_IMAGE = "1"
|
|
||||||
</literallayout>
|
|
||||||
For more information on enabling, running, and writing
|
|
||||||
these tests, see the
|
|
||||||
"<ulink url='&YOCTO_DOCS_DEV_URL;#performing-automated-runtime-testing'>Performing Automated Runtime Testing</ulink>"
|
|
||||||
section in the Yocto Project Development Tasks Manual and
|
|
||||||
the
|
|
||||||
"<link linkend='ref-classes-testimage*'><filename>testimage*.bbclass</filename></link>"
|
|
||||||
section.
|
|
||||||
</para>
|
|
||||||
</glossdef>
|
|
||||||
</glossentry>
|
|
||||||
|
|
||||||
<glossentry id='var-TEST_LOG_DIR'><glossterm>TEST_LOG_DIR</glossterm>
|
<glossentry id='var-TEST_LOG_DIR'><glossterm>TEST_LOG_DIR</glossterm>
|
||||||
<info>
|
<info>
|
||||||
TEST_LOG_DIR[doc] = "Holds the SSH log and the boot log for QEMU machines. The TEST_LOG_DIR variable defaults to "${WORKDIR}/testimage"."
|
TEST_LOG_DIR[doc] = "Holds the SSH log and the boot log for QEMU machines. The TEST_LOG_DIR variable defaults to "${WORKDIR}/testimage"."
|
||||||
@@ -15530,6 +15743,47 @@ recipes-graphics/xorg-font/font-alias_1.0.3.bb:PR = "${INC_PR}.3"
|
|||||||
</glossdef>
|
</glossdef>
|
||||||
</glossentry>
|
</glossentry>
|
||||||
|
|
||||||
|
<glossentry id='var-TESTIMAGE_AUTO'><glossterm>TESTIMAGE_AUTO</glossterm>
|
||||||
|
<info>
|
||||||
|
TESTIMAGE_AUTO[doc] = "Enables automatic testing of an image once it is built."
|
||||||
|
</info>
|
||||||
|
<glossdef>
|
||||||
|
<para role="glossdeffirst">
|
||||||
|
<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
|
||||||
|
Automatically runs the series of automated tests for
|
||||||
|
images when an image is successfully built.
|
||||||
|
Setting <filename>TESTIMAGE_AUTO</filename> to "1"
|
||||||
|
causes any image that successfully builds to automatically
|
||||||
|
boot under QEMU.
|
||||||
|
Using the variable also adds in dependencies so that any
|
||||||
|
SDK for which testing is requested is automatically built
|
||||||
|
first.
|
||||||
|
</para>
|
||||||
|
|
||||||
|
<para>
|
||||||
|
These tests are written in Python making use of the
|
||||||
|
<filename>unittest</filename> module, and the majority of
|
||||||
|
them run commands on the target system over
|
||||||
|
<filename>ssh</filename>.
|
||||||
|
You can set this variable to "1" in your
|
||||||
|
<filename>local.conf</filename> file in the
|
||||||
|
<link linkend='build-directory'>Build Directory</link>
|
||||||
|
to have the OpenEmbedded build system automatically run
|
||||||
|
these tests after an image successfully builds:
|
||||||
|
<literallayout class='monospaced'>
|
||||||
|
TESTIMAGE_AUTO = "1"
|
||||||
|
</literallayout>
|
||||||
|
For more information on enabling, running, and writing
|
||||||
|
these tests, see the
|
||||||
|
"<ulink url='&YOCTO_DOCS_DEV_URL;#performing-automated-runtime-testing'>Performing Automated Runtime Testing</ulink>"
|
||||||
|
section in the Yocto Project Development Tasks Manual and
|
||||||
|
the
|
||||||
|
"<link linkend='ref-classes-testimage*'><filename>testimage*.bbclass</filename></link>"
|
||||||
|
section.
|
||||||
|
</para>
|
||||||
|
</glossdef>
|
||||||
|
</glossentry>
|
||||||
|
|
||||||
<glossentry id='var-THISDIR'><glossterm>THISDIR</glossterm>
|
<glossentry id='var-THISDIR'><glossterm>THISDIR</glossterm>
|
||||||
<info>
|
<info>
|
||||||
THISDIR[doc] = "The directory in which the file BitBake is currently parsing is located."
|
THISDIR[doc] = "The directory in which the file BitBake is currently parsing is located."
|
||||||
|
|||||||
@@ -58,9 +58,14 @@
|
|||||||
</revision>
|
</revision>
|
||||||
<revision>
|
<revision>
|
||||||
<revnumber>2.6</revnumber>
|
<revnumber>2.6</revnumber>
|
||||||
<date>&REL_MONTH_YEAR;</date>
|
<date>November 2018</date>
|
||||||
<revremark>Released with the Yocto Project 2.6 Release.</revremark>
|
<revremark>Released with the Yocto Project 2.6 Release.</revremark>
|
||||||
</revision>
|
</revision>
|
||||||
|
<revision>
|
||||||
|
<revnumber>2.6.1</revnumber>
|
||||||
|
<date>&REL_MONTH_YEAR;</date>
|
||||||
|
<revremark>Released with the Yocto Project 2.6.1 Release.</revremark>
|
||||||
|
</revision>
|
||||||
</revhistory>
|
</revhistory>
|
||||||
|
|
||||||
<copyright>
|
<copyright>
|
||||||
|
|||||||
@@ -68,9 +68,14 @@
|
|||||||
</revision>
|
</revision>
|
||||||
<revision>
|
<revision>
|
||||||
<revnumber>2.6</revnumber>
|
<revnumber>2.6</revnumber>
|
||||||
<date>&REL_MONTH_YEAR;</date>
|
<date>November 2018</date>
|
||||||
<revremark>Released with the Yocto Project 2.6 Release.</revremark>
|
<revremark>Released with the Yocto Project 2.6 Release.</revremark>
|
||||||
</revision>
|
</revision>
|
||||||
|
<revision>
|
||||||
|
<revnumber>2.6.1</revnumber>
|
||||||
|
<date>&REL_MONTH_YEAR;</date>
|
||||||
|
<revremark>Released with the Yocto Project 2.6.1 Release.</revremark>
|
||||||
|
</revision>
|
||||||
</revhistory>
|
</revhistory>
|
||||||
|
|
||||||
<copyright>
|
<copyright>
|
||||||
|
|||||||
@@ -2,39 +2,39 @@
|
|||||||
# This style is for manual folders like "yocto-project-qs" and "poky-ref-manual".
|
# This style is for manual folders like "yocto-project-qs" and "poky-ref-manual".
|
||||||
# This is the old way that did it. Can't do that now that we have "bitbake-user-manual" strings
|
# This is the old way that did it. Can't do that now that we have "bitbake-user-manual" strings
|
||||||
# in the mega-manual.
|
# in the mega-manual.
|
||||||
# s@"ulink" href="http://www.yoctoproject.org/docs/2.6/[a-z]*-[a-z]*-[a-z]*/[a-z]*-[a-z]*-[a-z]*.html#@"link" href="#@g
|
# s@"ulink" href="http://www.yoctoproject.org/docs/2.6.1/[a-z]*-[a-z]*-[a-z]*/[a-z]*-[a-z]*-[a-z]*.html#@"link" href="#@g
|
||||||
s@"ulink" href="http://www.yoctoproject.org/docs/2.6/yocto-project-qs/yocto-project-qs.html#@"link" href="#@g
|
s@"ulink" href="http://www.yoctoproject.org/docs/2.6.1/yocto-project-qs/yocto-project-qs.html#@"link" href="#@g
|
||||||
s@"ulink" href="http://www.yoctoproject.org/docs/2.6/poky-ref-manual/poky-ref-manual.html#@"link" href="#@g
|
s@"ulink" href="http://www.yoctoproject.org/docs/2.6.1/poky-ref-manual/poky-ref-manual.html#@"link" href="#@g
|
||||||
|
|
||||||
# Processes all other manuals (<word>-<word> style) except for the BitBake User Manual because
|
# Processes all other manuals (<word>-<word> style) except for the BitBake User Manual because
|
||||||
# it is not included in the mega-manual.
|
# it is not included in the mega-manual.
|
||||||
# This style is for manual folders that use two word, which is the standard now (e.g. "ref-manual").
|
# This style is for manual folders that use two word, which is the standard now (e.g. "ref-manual").
|
||||||
# This was the one-liner that worked before we introduced the BitBake User Manual, which is
|
# This was the one-liner that worked before we introduced the BitBake User Manual, which is
|
||||||
# not in the mega-manual.
|
# not in the mega-manual.
|
||||||
# s@"ulink" href="http://www.yoctoproject.org/docs/2.6/[a-z]*-[a-z]*/[a-z]*-[a-z]*.html#@"link" href="#@g
|
# s@"ulink" href="http://www.yoctoproject.org/docs/2.6.1/[a-z]*-[a-z]*/[a-z]*-[a-z]*.html#@"link" href="#@g
|
||||||
|
|
||||||
s@"ulink" href="http://www.yoctoproject.org/docs/2.6/sdk-manual/sdk-manual.html#@"link" href="#@g
|
s@"ulink" href="http://www.yoctoproject.org/docs/2.6.1/sdk-manual/sdk-manual.html#@"link" href="#@g
|
||||||
s@"ulink" href="http://www.yoctoproject.org/docs/2.6/bsp-guide/bsp-guide.html#@"link" href="#@g
|
s@"ulink" href="http://www.yoctoproject.org/docs/2.6.1/bsp-guide/bsp-guide.html#@"link" href="#@g
|
||||||
s@"ulink" href="http://www.yoctoproject.org/docs/2.6/dev-manual/dev-manual.html#@"link" href="#@g
|
s@"ulink" href="http://www.yoctoproject.org/docs/2.6.1/dev-manual/dev-manual.html#@"link" href="#@g
|
||||||
s@"ulink" href="http://www.yoctoproject.org/docs/2.6/overview-manual/overview-manual.html#@"link" href="#@g
|
s@"ulink" href="http://www.yoctoproject.org/docs/2.6.1/overview-manual/overview-manual.html#@"link" href="#@g
|
||||||
s@"ulink" href="http://www.yoctoproject.org/docs/2.6/brief-yoctoprojectqs/brief-yoctoprojectqs.html#@"link" href="#@g
|
s@"ulink" href="http://www.yoctoproject.org/docs/2.6.1/brief-yoctoprojectqs/brief-yoctoprojectqs.html#@"link" href="#@g
|
||||||
s@"ulink" href="http://www.yoctoproject.org/docs/2.6/kernel-dev/kernel-dev.html#@"link" href="#@g
|
s@"ulink" href="http://www.yoctoproject.org/docs/2.6.1/kernel-dev/kernel-dev.html#@"link" href="#@g
|
||||||
s@"ulink" href="http://www.yoctoproject.org/docs/2.6/profile-manual/profile-manual.html#@"link" href="#@g
|
s@"ulink" href="http://www.yoctoproject.org/docs/2.6.1/profile-manual/profile-manual.html#@"link" href="#@g
|
||||||
s@"ulink" href="http://www.yoctoproject.org/docs/2.6/ref-manual/ref-manual.html#@"link" href="#@g
|
s@"ulink" href="http://www.yoctoproject.org/docs/2.6.1/ref-manual/ref-manual.html#@"link" href="#@g
|
||||||
s@"ulink" href="http://www.yoctoproject.org/docs/2.6/toaster-manual/toaster-manual.html#@"link" href="#@g
|
s@"ulink" href="http://www.yoctoproject.org/docs/2.6.1/toaster-manual/toaster-manual.html#@"link" href="#@g
|
||||||
|
|
||||||
# Process cases where just an external manual is referenced without an id anchor
|
# Process cases where just an external manual is referenced without an id anchor
|
||||||
s@<a class="ulink" href="http://www.yoctoproject.org/docs/2.6/brief-yoctoprojectqs/brief-yoctoprojectqs.html" target="_top">Yocto Project Quick Build</a>@Yocto Project Quick Build@g
|
s@<a class="ulink" href="http://www.yoctoproject.org/docs/2.6.1/brief-yoctoprojectqs/brief-yoctoprojectqs.html" target="_top">Yocto Project Quick Build</a>@Yocto Project Quick Build@g
|
||||||
s@<a class="ulink" href="http://www.yoctoproject.org/docs/2.6/yocto-project-qs/yocto-project-qs.html" target="_top">Yocto Project Quick Start</a>@Yocto Project Quick Start@g
|
s@<a class="ulink" href="http://www.yoctoproject.org/docs/2.6.1/yocto-project-qs/yocto-project-qs.html" target="_top">Yocto Project Quick Start</a>@Yocto Project Quick Start@g
|
||||||
s@<a class="ulink" href="http://www.yoctoproject.org/docs/2.6/dev-manual/dev-manual.html" target="_top">Yocto Project Development Tasks Manual</a>@Yocto Project Development Tasks Manual@g
|
s@<a class="ulink" href="http://www.yoctoproject.org/docs/2.6.1/dev-manual/dev-manual.html" target="_top">Yocto Project Development Tasks Manual</a>@Yocto Project Development Tasks Manual@g
|
||||||
s@<a class="ulink" href="http://www.yoctoproject.org/docs/2.6/overview-manual/overview-manual.html" target="_top">Yocto Project Overview and Concepts Manual</a>@Yocto project Overview and Concepts Manual@g
|
s@<a class="ulink" href="http://www.yoctoproject.org/docs/2.6.1/overview-manual/overview-manual.html" target="_top">Yocto Project Overview and Concepts Manual</a>@Yocto project Overview and Concepts Manual@g
|
||||||
s@<a class="ulink" href="http://www.yoctoproject.org/docs/2.6/sdk-manual/sdk-manual.html" target="_top">Yocto Project Application Development and the Extensible Software Development Kit (eSDK)</a>@Yocto Project Application Development and the Extensible Software Development Kit (eSDK)@g
|
s@<a class="ulink" href="http://www.yoctoproject.org/docs/2.6.1/sdk-manual/sdk-manual.html" target="_top">Yocto Project Application Development and the Extensible Software Development Kit (eSDK)</a>@Yocto Project Application Development and the Extensible Software Development Kit (eSDK)@g
|
||||||
s@<a class="ulink" href="http://www.yoctoproject.org/docs/2.6/bsp-guide/bsp-guide.html" target="_top">Yocto Project Board Support Package (BSP) Developer's Guide</a>@Yocto Project Board Support Package (BSP) Developer's Guide@g
|
s@<a class="ulink" href="http://www.yoctoproject.org/docs/2.6.1/bsp-guide/bsp-guide.html" target="_top">Yocto Project Board Support Package (BSP) Developer's Guide</a>@Yocto Project Board Support Package (BSP) Developer's Guide@g
|
||||||
s@<a class="ulink" href="http://www.yoctoproject.org/docs/2.6/profile-manual/profile-manual.html" target="_top">Yocto Project Profiling and Tracing Manual</a>@Yocto Project Profiling and Tracing Manual@g
|
s@<a class="ulink" href="http://www.yoctoproject.org/docs/2.6.1/profile-manual/profile-manual.html" target="_top">Yocto Project Profiling and Tracing Manual</a>@Yocto Project Profiling and Tracing Manual@g
|
||||||
s@<a class="ulink" href="http://www.yoctoproject.org/docs/2.6/kernel-dev/kernel-dev.html" target="_top">Yocto Project Linux Kernel Development Manual</a>@Yocto Project Linux Kernel Development Manual@g
|
s@<a class="ulink" href="http://www.yoctoproject.org/docs/2.6.1/kernel-dev/kernel-dev.html" target="_top">Yocto Project Linux Kernel Development Manual</a>@Yocto Project Linux Kernel Development Manual@g
|
||||||
s@<a class="ulink" href="http://www.yoctoproject.org/docs/2.6/ref-manual/ref-manual.html" target="_top">Yocto Project Reference Manual</a>@Yocto Project Reference Manual@g
|
s@<a class="ulink" href="http://www.yoctoproject.org/docs/2.6.1/ref-manual/ref-manual.html" target="_top">Yocto Project Reference Manual</a>@Yocto Project Reference Manual@g
|
||||||
s@<a class="ulink" href="http://www.yoctoproject.org/docs/2.6/toaster-manual/toaster-manual.html" target="_top">Toaster User Manual</a>@Toaster User Manual@g
|
s@<a class="ulink" href="http://www.yoctoproject.org/docs/2.6.1/toaster-manual/toaster-manual.html" target="_top">Toaster User Manual</a>@Toaster User Manual@g
|
||||||
|
|
||||||
# Process a single, rouge occurrence of a linked reference to the Mega-Manual.
|
# Process a single, rouge occurrence of a linked reference to the Mega-Manual.
|
||||||
s@<a class="ulink" href="http://www.yoctoproject.org/docs/2.6/mega-manual/mega-manual.html" target="_top">Yocto Project Mega-Manual</a>@Yocto Project Mega-Manual@g
|
s@<a class="ulink" href="http://www.yoctoproject.org/docs/2.6.1/mega-manual/mega-manual.html" target="_top">Yocto Project Mega-Manual</a>@Yocto Project Mega-Manual@g
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
DISTRO = "poky"
|
DISTRO = "poky"
|
||||||
DISTRO_NAME = "Poky (Yocto Project Reference Distro)"
|
DISTRO_NAME = "Poky (Yocto Project Reference Distro)"
|
||||||
DISTRO_VERSION = "2.6"
|
DISTRO_VERSION = "2.6.1"
|
||||||
DISTRO_CODENAME = "thud"
|
DISTRO_CODENAME = "thud"
|
||||||
SDK_VENDOR = "-pokysdk"
|
SDK_VENDOR = "-pokysdk"
|
||||||
SDK_VERSION := "${@'${DISTRO_VERSION}'.replace('snapshot-${DATE}','snapshot')}"
|
SDK_VERSION := "${@'${DISTRO_VERSION}'.replace('snapshot-${DATE}','snapshot')}"
|
||||||
@@ -67,14 +67,12 @@ SANITY_TESTED_DISTROS ?= " \
|
|||||||
poky-2.5 \n \
|
poky-2.5 \n \
|
||||||
poky-2.6 \n \
|
poky-2.6 \n \
|
||||||
ubuntu-16.04 \n \
|
ubuntu-16.04 \n \
|
||||||
ubuntu-16.10 \n \
|
ubuntu-18.04 \n \
|
||||||
ubuntu-17.04 \n \
|
fedora-28 \n \
|
||||||
fedora-26 \n \
|
|
||||||
centos-7 \n \
|
centos-7 \n \
|
||||||
debian-8 \n \
|
debian-8 \n \
|
||||||
debian-9 \n \
|
debian-9 \n \
|
||||||
opensuse-42.1 \n \
|
opensuse-42.3 \n \
|
||||||
opensuse-42.2 \n \
|
|
||||||
"
|
"
|
||||||
#
|
#
|
||||||
# OELAYOUT_ABI allows us to notify users when the format of TMPDIR changes in
|
# OELAYOUT_ABI allows us to notify users when the format of TMPDIR changes in
|
||||||
|
|||||||
@@ -157,10 +157,12 @@ USER_CLASSES ?= "buildstats image-mklibs image-prelink"
|
|||||||
# Runtime testing of images
|
# Runtime testing of images
|
||||||
#
|
#
|
||||||
# The build system can test booting virtual machine images under qemu (an emulator)
|
# The build system can test booting virtual machine images under qemu (an emulator)
|
||||||
# after any root filesystems are created and run tests against those images. To
|
# after any root filesystems are created and run tests against those images. It can also
|
||||||
# enable this uncomment this line. See classes/testimage(-auto).bbclass for
|
# run tests against any SDK that are built. To enable this uncomment these lines.
|
||||||
# further details.
|
# See classes/test{image,sdk}.bbclass for further details.
|
||||||
#TEST_IMAGE = "1"
|
#IMAGE_CLASSES += "testimage testsdk"
|
||||||
|
#TESTIMAGE_AUTO_qemuall = "1"
|
||||||
|
|
||||||
#
|
#
|
||||||
# Interactive shell configuration
|
# Interactive shell configuration
|
||||||
#
|
#
|
||||||
|
|||||||
12
meta-selftest/recipes-test/delay/delay.bb
Normal file
12
meta-selftest/recipes-test/delay/delay.bb
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
SUMMARY = "Recipe with a fixed delay task"
|
||||||
|
DESCRIPTION = "Contains a delay task to be used to for testing."
|
||||||
|
LICENSE = "MIT"
|
||||||
|
|
||||||
|
INHIBIT_DEFAULT_DEPS = "1"
|
||||||
|
EXCLUDE_FROM_WORLD = "1"
|
||||||
|
|
||||||
|
do_delay() {
|
||||||
|
sleep 5
|
||||||
|
}
|
||||||
|
do_delay[nostamp] = "1"
|
||||||
|
addtask delay
|
||||||
@@ -2,7 +2,7 @@ SUMMARY = "Error Test case that fails on do_compile"
|
|||||||
DESCRIPTION = "This generates a compile time error to be used to for testing."
|
DESCRIPTION = "This generates a compile time error to be used to for testing."
|
||||||
LICENSE = "MIT"
|
LICENSE = "MIT"
|
||||||
|
|
||||||
INHIBIT_DEFAULT_DEPS = "1"
|
INHIBIT_DEFAULT_DEPS = "1"
|
||||||
EXCLUDE_FROM_WORLD = "1"
|
EXCLUDE_FROM_WORLD = "1"
|
||||||
|
|
||||||
do_compile() {
|
do_compile() {
|
||||||
|
|||||||
@@ -23,9 +23,6 @@
|
|||||||
# COPYLEFT_RECIPE_TYPES = 'target'
|
# COPYLEFT_RECIPE_TYPES = 'target'
|
||||||
#
|
#
|
||||||
|
|
||||||
# Don't filter the license by default
|
|
||||||
COPYLEFT_LICENSE_INCLUDE ?= ''
|
|
||||||
COPYLEFT_LICENSE_EXCLUDE ?= ''
|
|
||||||
# Create archive for all the recipe types
|
# Create archive for all the recipe types
|
||||||
COPYLEFT_RECIPE_TYPES ?= 'target native nativesdk cross crosssdk cross-canadian'
|
COPYLEFT_RECIPE_TYPES ?= 'target native nativesdk cross crosssdk cross-canadian'
|
||||||
inherit copyleft_filter
|
inherit copyleft_filter
|
||||||
|
|||||||
@@ -31,7 +31,7 @@ BINCONFIG_GLOB ?= "*-config"
|
|||||||
PACKAGE_PREPROCESS_FUNCS += "binconfig_package_preprocess"
|
PACKAGE_PREPROCESS_FUNCS += "binconfig_package_preprocess"
|
||||||
|
|
||||||
binconfig_package_preprocess () {
|
binconfig_package_preprocess () {
|
||||||
for config in `find ${PKGD} -name '${BINCONFIG_GLOB}'`; do
|
for config in `find ${PKGD} -type f -name '${BINCONFIG_GLOB}'`; do
|
||||||
sed -i \
|
sed -i \
|
||||||
-e 's:${STAGING_BASELIBDIR}:${base_libdir}:g;' \
|
-e 's:${STAGING_BASELIBDIR}:${base_libdir}:g;' \
|
||||||
-e 's:${STAGING_LIBDIR}:${libdir}:g;' \
|
-e 's:${STAGING_LIBDIR}:${libdir}:g;' \
|
||||||
@@ -40,7 +40,7 @@ binconfig_package_preprocess () {
|
|||||||
-e 's:${STAGING_DIR_HOST}${prefix}:${prefix}:' \
|
-e 's:${STAGING_DIR_HOST}${prefix}:${prefix}:' \
|
||||||
$config
|
$config
|
||||||
done
|
done
|
||||||
for lafile in `find ${PKGD} -name "*.la"` ; do
|
for lafile in `find ${PKGD} -type f -name "*.la"` ; do
|
||||||
sed -i \
|
sed -i \
|
||||||
-e 's:${STAGING_BASELIBDIR}:${base_libdir}:g;' \
|
-e 's:${STAGING_BASELIBDIR}:${base_libdir}:g;' \
|
||||||
-e 's:${STAGING_LIBDIR}:${libdir}:g;' \
|
-e 's:${STAGING_LIBDIR}:${libdir}:g;' \
|
||||||
@@ -54,7 +54,7 @@ binconfig_package_preprocess () {
|
|||||||
SYSROOT_PREPROCESS_FUNCS += "binconfig_sysroot_preprocess"
|
SYSROOT_PREPROCESS_FUNCS += "binconfig_sysroot_preprocess"
|
||||||
|
|
||||||
binconfig_sysroot_preprocess () {
|
binconfig_sysroot_preprocess () {
|
||||||
for config in `find ${S} -name '${BINCONFIG_GLOB}'` `find ${B} -name '${BINCONFIG_GLOB}'`; do
|
for config in `find ${S} -type f -name '${BINCONFIG_GLOB}'` `find ${B} -type f -name '${BINCONFIG_GLOB}'`; do
|
||||||
configname=`basename $config`
|
configname=`basename $config`
|
||||||
install -d ${SYSROOT_DESTDIR}${bindir_crossscripts}
|
install -d ${SYSROOT_DESTDIR}${bindir_crossscripts}
|
||||||
sed ${@get_binconfig_mangle(d)} $config > ${SYSROOT_DESTDIR}${bindir_crossscripts}/$configname
|
sed ${@get_binconfig_mangle(d)} $config > ${SYSROOT_DESTDIR}${bindir_crossscripts}/$configname
|
||||||
|
|||||||
@@ -1,187 +0,0 @@
|
|||||||
#
|
|
||||||
# Small event handler to automatically open URLs and file
|
|
||||||
# bug reports at a bugzilla of your choiche
|
|
||||||
# it uses XML-RPC interface, so you must have it enabled
|
|
||||||
#
|
|
||||||
# Before using you must define BUGZILLA_USER, BUGZILLA_PASS credentials,
|
|
||||||
# BUGZILLA_XMLRPC - uri of xmlrpc.cgi,
|
|
||||||
# BUGZILLA_PRODUCT, BUGZILLA_COMPONENT - a place in BTS for build bugs
|
|
||||||
# BUGZILLA_VERSION - version against which to report new bugs
|
|
||||||
#
|
|
||||||
|
|
||||||
def bugzilla_find_bug_report(debug_file, server, args, bugname):
|
|
||||||
args['summary'] = bugname
|
|
||||||
bugs = server.Bug.search(args)
|
|
||||||
if len(bugs['bugs']) == 0:
|
|
||||||
print >> debug_file, "Bugs not found"
|
|
||||||
return (False,None)
|
|
||||||
else: # silently pick the first result
|
|
||||||
print >> debug_file, "Result of bug search is "
|
|
||||||
print >> debug_file, bugs
|
|
||||||
status = bugs['bugs'][0]['status']
|
|
||||||
id = bugs['bugs'][0]['id']
|
|
||||||
return (not status in ["CLOSED", "RESOLVED", "VERIFIED"],id)
|
|
||||||
|
|
||||||
def bugzilla_file_bug(debug_file, server, args, name, text, version):
|
|
||||||
args['summary'] = name
|
|
||||||
args['comment'] = text
|
|
||||||
args['version'] = version
|
|
||||||
args['op_sys'] = 'Linux'
|
|
||||||
args['platform'] = 'Other'
|
|
||||||
args['severity'] = 'normal'
|
|
||||||
args['priority'] = 'Normal'
|
|
||||||
try:
|
|
||||||
return server.Bug.create(args)['id']
|
|
||||||
except Exception, e:
|
|
||||||
print >> debug_file, repr(e)
|
|
||||||
return None
|
|
||||||
|
|
||||||
def bugzilla_reopen_bug(debug_file, server, args, bug_number):
|
|
||||||
args['ids'] = [bug_number]
|
|
||||||
args['status'] = "CONFIRMED"
|
|
||||||
try:
|
|
||||||
server.Bug.update(args)
|
|
||||||
return True
|
|
||||||
except Exception, e:
|
|
||||||
print >> debug_file, repr(e)
|
|
||||||
return False
|
|
||||||
|
|
||||||
def bugzilla_create_attachment(debug_file, server, args, bug_number, text, file_name, log, logdescription):
|
|
||||||
args['ids'] = [bug_number]
|
|
||||||
args['file_name'] = file_name
|
|
||||||
args['summary'] = logdescription
|
|
||||||
args['content_type'] = "text/plain"
|
|
||||||
args['data'] = log
|
|
||||||
args['comment'] = text
|
|
||||||
try:
|
|
||||||
server.Bug.add_attachment(args)
|
|
||||||
return True
|
|
||||||
except Exception, e:
|
|
||||||
print >> debug_file, repr(e)
|
|
||||||
return False
|
|
||||||
|
|
||||||
def bugzilla_add_comment(debug_file, server, args, bug_number, text):
|
|
||||||
args['id'] = bug_number
|
|
||||||
args['comment'] = text
|
|
||||||
try:
|
|
||||||
server.Bug.add_comment(args)
|
|
||||||
return True
|
|
||||||
except Exception, e:
|
|
||||||
print >> debug_file, repr(e)
|
|
||||||
return False
|
|
||||||
|
|
||||||
addhandler bugzilla_eventhandler
|
|
||||||
bugzilla_eventhandler[eventmask] = "bb.event.MsgNote bb.build.TaskFailed"
|
|
||||||
python bugzilla_eventhandler() {
|
|
||||||
import glob
|
|
||||||
import xmlrpclib, httplib
|
|
||||||
|
|
||||||
class ProxiedTransport(xmlrpclib.Transport):
|
|
||||||
def __init__(self, proxy, use_datetime = 0):
|
|
||||||
xmlrpclib.Transport.__init__(self, use_datetime)
|
|
||||||
self.proxy = proxy
|
|
||||||
self.user = None
|
|
||||||
self.password = None
|
|
||||||
|
|
||||||
def set_user(self, user):
|
|
||||||
self.user = user
|
|
||||||
|
|
||||||
def set_password(self, password):
|
|
||||||
self.password = password
|
|
||||||
|
|
||||||
def make_connection(self, host):
|
|
||||||
self.realhost = host
|
|
||||||
return httplib.HTTP(self.proxy)
|
|
||||||
|
|
||||||
def send_request(self, connection, handler, request_body):
|
|
||||||
connection.putrequest("POST", 'http://%s%s' % (self.realhost, handler))
|
|
||||||
if self.user != None:
|
|
||||||
if self.password != None:
|
|
||||||
auth = "%s:%s" % (self.user, self.password)
|
|
||||||
else:
|
|
||||||
auth = self.user
|
|
||||||
connection.putheader("Proxy-authorization", "Basic " + base64.encodestring(auth))
|
|
||||||
|
|
||||||
event = e
|
|
||||||
data = e.data
|
|
||||||
name = bb.event.getName(event)
|
|
||||||
if name == "MsgNote":
|
|
||||||
# avoid recursion
|
|
||||||
return
|
|
||||||
|
|
||||||
if name == "TaskFailed":
|
|
||||||
xmlrpc = data.getVar("BUGZILLA_XMLRPC")
|
|
||||||
user = data.getVar("BUGZILLA_USER")
|
|
||||||
passw = data.getVar("BUGZILLA_PASS")
|
|
||||||
product = data.getVar("BUGZILLA_PRODUCT")
|
|
||||||
compon = data.getVar("BUGZILLA_COMPONENT")
|
|
||||||
version = data.getVar("BUGZILLA_VERSION")
|
|
||||||
|
|
||||||
proxy = data.getVar('http_proxy')
|
|
||||||
if (proxy):
|
|
||||||
import urllib2
|
|
||||||
s, u, p, hostport = urllib2._parse_proxy(proxy)
|
|
||||||
transport = ProxiedTransport(hostport)
|
|
||||||
else:
|
|
||||||
transport = None
|
|
||||||
|
|
||||||
server = xmlrpclib.ServerProxy(xmlrpc, transport=transport, verbose=0)
|
|
||||||
args = {
|
|
||||||
'Bugzilla_login': user,
|
|
||||||
'Bugzilla_password': passw,
|
|
||||||
'product': product,
|
|
||||||
'component': compon}
|
|
||||||
|
|
||||||
# evil hack to figure out what is going on
|
|
||||||
debug_file = open(os.path.join(data.getVar("TMPDIR"),"..","bugzilla-log"),"a")
|
|
||||||
|
|
||||||
file = None
|
|
||||||
bugname = "%(package)s-%(pv)s-autobuild" % { "package" : data.getVar("PN"),
|
|
||||||
"pv" : data.getVar("PV"),
|
|
||||||
}
|
|
||||||
log_file = glob.glob("%s/log.%s.*" % (event.data.getVar('T'), event.task))
|
|
||||||
text = "The %s step in %s failed at %s for machine %s" % (e.task, data.getVar("PN"), data.getVar('DATETIME'), data.getVar('MACHINE') )
|
|
||||||
if len(log_file) != 0:
|
|
||||||
print >> debug_file, "Adding log file %s" % log_file[0]
|
|
||||||
file = open(log_file[0], 'r')
|
|
||||||
log = file.read()
|
|
||||||
file.close();
|
|
||||||
else:
|
|
||||||
print >> debug_file, "No log file found for the glob"
|
|
||||||
log = None
|
|
||||||
|
|
||||||
(bug_open, bug_number) = bugzilla_find_bug_report(debug_file, server, args.copy(), bugname)
|
|
||||||
print >> debug_file, "Bug is open: %s and bug number: %s" % (bug_open, bug_number)
|
|
||||||
|
|
||||||
# The bug is present and still open, attach an error log
|
|
||||||
if not bug_number:
|
|
||||||
bug_number = bugzilla_file_bug(debug_file, server, args.copy(), bugname, text, version)
|
|
||||||
if not bug_number:
|
|
||||||
print >> debug_file, "Couldn't acquire a new bug_numer, filing a bugreport failed"
|
|
||||||
else:
|
|
||||||
print >> debug_file, "The new bug_number: '%s'" % bug_number
|
|
||||||
elif not bug_open:
|
|
||||||
if not bugzilla_reopen_bug(debug_file, server, args.copy(), bug_number):
|
|
||||||
print >> debug_file, "Failed to reopen the bug #%s" % bug_number
|
|
||||||
else:
|
|
||||||
print >> debug_file, "Reopened the bug #%s" % bug_number
|
|
||||||
|
|
||||||
if bug_number and log:
|
|
||||||
print >> debug_file, "The bug is known as '%s'" % bug_number
|
|
||||||
desc = "Build log for machine %s" % (data.getVar('MACHINE'))
|
|
||||||
if not bugzilla_create_attachment(debug_file, server, args.copy(), bug_number, text, log_file[0], log, desc):
|
|
||||||
print >> debug_file, "Failed to attach the build log for bug #%s" % bug_number
|
|
||||||
else:
|
|
||||||
print >> debug_file, "Created an attachment for '%s' '%s' '%s'" % (product, compon, bug_number)
|
|
||||||
else:
|
|
||||||
print >> debug_file, "Not trying to create an attachment for bug #%s" % bug_number
|
|
||||||
if not bugzilla_add_comment(debug_file, server, args.copy(), bug_number, text, ):
|
|
||||||
print >> debug_file, "Failed to create a comment the build log for bug #%s" % bug_number
|
|
||||||
else:
|
|
||||||
print >> debug_file, "Created an attachment for '%s' '%s' '%s'" % (product, compon, bug_number)
|
|
||||||
|
|
||||||
# store bug number for oestats-client
|
|
||||||
if bug_number:
|
|
||||||
data.setVar('OESTATS_BUG_NUMBER', bug_number)
|
|
||||||
}
|
|
||||||
|
|
||||||
@@ -4,8 +4,8 @@ CLASSOVERRIDE = "class-crosssdk"
|
|||||||
MACHINEOVERRIDES = ""
|
MACHINEOVERRIDES = ""
|
||||||
PACKAGE_ARCH = "${SDK_ARCH}"
|
PACKAGE_ARCH = "${SDK_ARCH}"
|
||||||
python () {
|
python () {
|
||||||
# set TUNE_PKGARCH to SDK_ARCH
|
# set TUNE_PKGARCH to SDK_ARCH
|
||||||
d.setVar('TUNE_PKGARCH', d.getVar('SDK_ARCH'))
|
d.setVar('TUNE_PKGARCH', d.getVar('SDK_ARCH'))
|
||||||
}
|
}
|
||||||
|
|
||||||
STAGING_BINDIR_TOOLCHAIN = "${STAGING_DIR_NATIVE}${bindir_native}/${TARGET_ARCH}${TARGET_VENDOR}-${TARGET_OS}"
|
STAGING_BINDIR_TOOLCHAIN = "${STAGING_DIR_NATIVE}${bindir_native}/${TARGET_ARCH}${TARGET_VENDOR}-${TARGET_OS}"
|
||||||
|
|||||||
@@ -33,7 +33,7 @@ BB_HASHBASE_WHITELIST += "ICECC_PARALLEL_MAKE ICECC_DISABLED ICECC_USER_PACKAGE_
|
|||||||
ICECC_CARET_WORKAROUND ICECC_CFLAGS ICECC_ENV_VERSION \
|
ICECC_CARET_WORKAROUND ICECC_CFLAGS ICECC_ENV_VERSION \
|
||||||
ICECC_DEBUG ICECC_LOGFILE ICECC_REPEAT_RATE ICECC_PREFERRED_HOST \
|
ICECC_DEBUG ICECC_LOGFILE ICECC_REPEAT_RATE ICECC_PREFERRED_HOST \
|
||||||
ICECC_CLANG_REMOTE_CPP ICECC_IGNORE_UNVERIFIED ICECC_TEST_SOCKET \
|
ICECC_CLANG_REMOTE_CPP ICECC_IGNORE_UNVERIFIED ICECC_TEST_SOCKET \
|
||||||
ICECC_ENV_DEBUG \
|
ICECC_ENV_DEBUG ICECC_SYSTEM_PACKAGE_BL ICECC_SYSTEM_CLASS_BL \
|
||||||
"
|
"
|
||||||
|
|
||||||
ICECC_ENV_EXEC ?= "${STAGING_BINDIR_NATIVE}/icecc-create-env"
|
ICECC_ENV_EXEC ?= "${STAGING_BINDIR_NATIVE}/icecc-create-env"
|
||||||
@@ -61,6 +61,31 @@ CXXFLAGS += "${ICECC_CFLAGS}"
|
|||||||
# Debug flags when generating environments
|
# Debug flags when generating environments
|
||||||
ICECC_ENV_DEBUG ??= ""
|
ICECC_ENV_DEBUG ??= ""
|
||||||
|
|
||||||
|
# "system" recipe blacklist contains a list of packages that can not distribute
|
||||||
|
# compile tasks for one reason or the other. When adding new entry, please
|
||||||
|
# document why (how it failed) so that we can re-evaluate it later e.g. when
|
||||||
|
# there is new version
|
||||||
|
#
|
||||||
|
# libgcc-initial - fails with CPP sanity check error if host sysroot contains
|
||||||
|
# cross gcc built for another target tune/variant
|
||||||
|
# target-sdk-provides-dummy - ${HOST_PREFIX} is empty which triggers the "NULL
|
||||||
|
# prefix" error.
|
||||||
|
ICECC_SYSTEM_PACKAGE_BL += "\
|
||||||
|
libgcc-initial \
|
||||||
|
target-sdk-provides-dummy \
|
||||||
|
"
|
||||||
|
|
||||||
|
# "system" classes that should be blacklisted. When adding new entry, please
|
||||||
|
# document why (how it failed) so that we can re-evaluate it later
|
||||||
|
#
|
||||||
|
# image - Image aren't compiling, but the testing framework for images captures
|
||||||
|
# PARALLEL_MAKE as part of the test environment. Many tests won't use
|
||||||
|
# icecream, but leaving the high level of parallelism can cause them to
|
||||||
|
# consume an unnecessary amount of resources.
|
||||||
|
ICECC_SYSTEM_CLASS_BL += "\
|
||||||
|
image \
|
||||||
|
"
|
||||||
|
|
||||||
def icecc_dep_prepend(d):
|
def icecc_dep_prepend(d):
|
||||||
# INHIBIT_DEFAULT_DEPS doesn't apply to the patch command. Whether or not
|
# INHIBIT_DEFAULT_DEPS doesn't apply to the patch command. Whether or not
|
||||||
# we need that built is the responsibility of the patch function / class, not
|
# we need that built is the responsibility of the patch function / class, not
|
||||||
@@ -134,7 +159,7 @@ def use_icecc(bb,d):
|
|||||||
|
|
||||||
pn = d.getVar('PN')
|
pn = d.getVar('PN')
|
||||||
|
|
||||||
system_class_blacklist = []
|
system_class_blacklist = (d.getVar('ICECC_SYSTEM_CLASS_BL') or "").split()
|
||||||
user_class_blacklist = (d.getVar('ICECC_USER_CLASS_BL') or "none").split()
|
user_class_blacklist = (d.getVar('ICECC_USER_CLASS_BL') or "none").split()
|
||||||
package_class_blacklist = system_class_blacklist + user_class_blacklist
|
package_class_blacklist = system_class_blacklist + user_class_blacklist
|
||||||
|
|
||||||
@@ -143,15 +168,7 @@ def use_icecc(bb,d):
|
|||||||
bb.debug(1, "%s: class %s found in blacklist, disable icecc" % (pn, black))
|
bb.debug(1, "%s: class %s found in blacklist, disable icecc" % (pn, black))
|
||||||
return "no"
|
return "no"
|
||||||
|
|
||||||
# "system" recipe blacklist contains a list of packages that can not distribute compile tasks
|
system_package_blacklist = (d.getVar('ICECC_SYSTEM_PACKAGE_BL') or "").split()
|
||||||
# for one reason or the other
|
|
||||||
# this is the old list (which doesn't seem to be valid anymore, because I was able to build
|
|
||||||
# all these with icecc enabled)
|
|
||||||
# system_package_blacklist = [ "glibc", "gcc", "bind", "u-boot", "dhcp-forwarder", "enchant", "connman", "orbit2" ]
|
|
||||||
# when adding new entry, please document why (how it failed) so that we can re-evaluate it later
|
|
||||||
# e.g. when there is new version
|
|
||||||
# building libgcc-initial with icecc fails with CPP sanity check error if host sysroot contains cross gcc built for another target tune/variant
|
|
||||||
system_package_blacklist = ["libgcc-initial"]
|
|
||||||
user_package_blacklist = (d.getVar('ICECC_USER_PACKAGE_BL') or "").split()
|
user_package_blacklist = (d.getVar('ICECC_USER_PACKAGE_BL') or "").split()
|
||||||
user_package_whitelist = (d.getVar('ICECC_USER_PACKAGE_WL') or "").split()
|
user_package_whitelist = (d.getVar('ICECC_USER_PACKAGE_WL') or "").split()
|
||||||
package_blacklist = system_package_blacklist + user_package_blacklist
|
package_blacklist = system_package_blacklist + user_package_blacklist
|
||||||
@@ -381,7 +398,7 @@ set_icecc_env() {
|
|||||||
# Don't let ccache find the icecream compiler links that have been created, otherwise
|
# Don't let ccache find the icecream compiler links that have been created, otherwise
|
||||||
# it can end up invoking icecream recursively.
|
# it can end up invoking icecream recursively.
|
||||||
export CCACHE_PATH="$PATH"
|
export CCACHE_PATH="$PATH"
|
||||||
export CCACHE_DISBALE="1"
|
export CCACHE_DISABLE="1"
|
||||||
|
|
||||||
export ICECC_VERSION ICECC_CC ICECC_CXX
|
export ICECC_VERSION ICECC_CC ICECC_CXX
|
||||||
export PATH="$ICE_PATH:$PATH"
|
export PATH="$ICE_PATH:$PATH"
|
||||||
|
|||||||
@@ -497,7 +497,7 @@ python () {
|
|||||||
d.setVarFlag(task, 'fakeroot', '1')
|
d.setVarFlag(task, 'fakeroot', '1')
|
||||||
|
|
||||||
d.appendVarFlag(task, 'prefuncs', ' ' + debug + ' set_image_size')
|
d.appendVarFlag(task, 'prefuncs', ' ' + debug + ' set_image_size')
|
||||||
d.prependVarFlag(task, 'postfuncs', ' create_symlinks')
|
d.prependVarFlag(task, 'postfuncs', 'create_symlinks ')
|
||||||
d.appendVarFlag(task, 'subimages', ' ' + ' '.join(subimages))
|
d.appendVarFlag(task, 'subimages', ' ' + ' '.join(subimages))
|
||||||
d.appendVarFlag(task, 'vardeps', ' ' + ' '.join(vardeps))
|
d.appendVarFlag(task, 'vardeps', ' ' + ' '.join(vardeps))
|
||||||
d.appendVarFlag(task, 'vardepsexclude', 'DATETIME DATE ' + ' '.join(vardepsexclude))
|
d.appendVarFlag(task, 'vardepsexclude', 'DATETIME DATE ' + ' '.join(vardepsexclude))
|
||||||
|
|||||||
@@ -239,6 +239,7 @@ EXTRA_IMAGECMD_ext4 ?= "-i 4096"
|
|||||||
EXTRA_IMAGECMD_btrfs ?= "-n 4096"
|
EXTRA_IMAGECMD_btrfs ?= "-n 4096"
|
||||||
EXTRA_IMAGECMD_f2fs ?= ""
|
EXTRA_IMAGECMD_f2fs ?= ""
|
||||||
|
|
||||||
|
do_image_cpio[depends] += "cpio-native:do_populate_sysroot"
|
||||||
do_image_jffs2[depends] += "mtd-utils-native:do_populate_sysroot"
|
do_image_jffs2[depends] += "mtd-utils-native:do_populate_sysroot"
|
||||||
do_image_cramfs[depends] += "util-linux-native:do_populate_sysroot"
|
do_image_cramfs[depends] += "util-linux-native:do_populate_sysroot"
|
||||||
do_image_ext2[depends] += "e2fsprogs-native:do_populate_sysroot"
|
do_image_ext2[depends] += "e2fsprogs-native:do_populate_sysroot"
|
||||||
|
|||||||
@@ -383,7 +383,7 @@ def package_qa_hash_style(path, name, d, elf, messages):
|
|||||||
sane = True
|
sane = True
|
||||||
|
|
||||||
if has_syms and not sane:
|
if has_syms and not sane:
|
||||||
package_qa_add_message(messages, "ldflags", "No GNU_HASH in the elf binary: '%s'" % path)
|
package_qa_add_message(messages, "ldflags", "No GNU_HASH in the ELF binary %s, didn't pass LDFLAGS?" % path)
|
||||||
|
|
||||||
|
|
||||||
QAPATHTEST[buildpaths] = "package_qa_check_buildpaths"
|
QAPATHTEST[buildpaths] = "package_qa_check_buildpaths"
|
||||||
|
|||||||
@@ -49,13 +49,7 @@ python __anonymous () {
|
|||||||
|
|
||||||
OVERRIDES_append = ":${TARGET_ARCH}-${TARGET_OS}"
|
OVERRIDES_append = ":${TARGET_ARCH}-${TARGET_OS}"
|
||||||
|
|
||||||
locale_base_postinst() {
|
locale_base_postinst_ontarget() {
|
||||||
#!/bin/sh
|
|
||||||
|
|
||||||
if [ "x$D" != "x" ]; then
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
localedef --inputfile=${datadir}/i18n/locales/%s --charmap=%s %s
|
localedef --inputfile=${datadir}/i18n/locales/%s --charmap=%s %s
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -215,7 +209,7 @@ python package_do_split_gconvs () {
|
|||||||
def output_locale_source(name, pkgname, locale, encoding):
|
def output_locale_source(name, pkgname, locale, encoding):
|
||||||
d.setVar('RDEPENDS_%s' % pkgname, '%slocaledef %s-localedata-%s %s-charmap-%s' % \
|
d.setVar('RDEPENDS_%s' % pkgname, '%slocaledef %s-localedata-%s %s-charmap-%s' % \
|
||||||
(mlprefix, mlprefix+bpn, legitimize_package_name(locale), mlprefix+bpn, legitimize_package_name(encoding)))
|
(mlprefix, mlprefix+bpn, legitimize_package_name(locale), mlprefix+bpn, legitimize_package_name(encoding)))
|
||||||
d.setVar('pkg_postinst_%s' % pkgname, d.getVar('locale_base_postinst') \
|
d.setVar('pkg_postinst_ontarget_%s' % pkgname, d.getVar('locale_base_postinst_ontarget') \
|
||||||
% (locale, encoding, locale))
|
% (locale, encoding, locale))
|
||||||
d.setVar('pkg_postrm_%s' % pkgname, d.getVar('locale_base_postrm') % \
|
d.setVar('pkg_postrm_%s' % pkgname, d.getVar('locale_base_postrm') % \
|
||||||
(locale, encoding, locale))
|
(locale, encoding, locale))
|
||||||
|
|||||||
@@ -309,7 +309,7 @@ def incompatible_license(d, dont_want_licenses, package=None):
|
|||||||
except oe.license.LicenseError as exc:
|
except oe.license.LicenseError as exc:
|
||||||
bb.fatal('%s: %s' % (d.getVar('P'), exc))
|
bb.fatal('%s: %s' % (d.getVar('P'), exc))
|
||||||
return any(not oe.license.license_ok(canonical_license(d, l), \
|
return any(not oe.license.license_ok(canonical_license(d, l), \
|
||||||
dont_want_licenses) for l in licenses)
|
dont_want_licenses) for l in licenses)
|
||||||
|
|
||||||
def check_license_flags(d):
|
def check_license_flags(d):
|
||||||
"""
|
"""
|
||||||
|
|||||||
@@ -34,8 +34,8 @@ def get_kernelversion_file(p):
|
|||||||
return None
|
return None
|
||||||
|
|
||||||
def linux_module_packages(s, d):
|
def linux_module_packages(s, d):
|
||||||
suffix = ""
|
suffix = ""
|
||||||
return " ".join(map(lambda s: "kernel-module-%s%s" % (s.lower().replace('_', '-').replace('@', '+'), suffix), s.split()))
|
return " ".join(map(lambda s: "kernel-module-%s%s" % (s.lower().replace('_', '-').replace('@', '+'), suffix), s.split()))
|
||||||
|
|
||||||
# that's all
|
# that's all
|
||||||
|
|
||||||
|
|||||||
@@ -24,9 +24,11 @@ python () {
|
|||||||
|
|
||||||
for entry in (d.getVar("MULTILIB_SCRIPTS", False) or "").split():
|
for entry in (d.getVar("MULTILIB_SCRIPTS", False) or "").split():
|
||||||
pkg, script = entry.split(":")
|
pkg, script = entry.split(":")
|
||||||
|
epkg = d.expand(pkg)
|
||||||
scriptname = os.path.basename(script)
|
scriptname = os.path.basename(script)
|
||||||
d.appendVar("ALTERNATIVE_" + pkg, scriptname + " ")
|
d.appendVar("ALTERNATIVE_" + epkg, " " + scriptname + " ")
|
||||||
d.setVarFlag("ALTERNATIVE_LINK_NAME", scriptname, script)
|
d.setVarFlag("ALTERNATIVE_LINK_NAME", scriptname, script)
|
||||||
d.setVarFlag("ALTERNATIVE_TARGET", scriptname, script + "-${MULTILIB_SUFFIX}")
|
d.setVarFlag("ALTERNATIVE_TARGET", scriptname, script + "-${MULTILIB_SUFFIX}")
|
||||||
d.appendVar("multilibscript_rename", "\n mv ${PKGD}" + script + " ${PKGD}" + script + "-${MULTILIB_SUFFIX}")
|
d.appendVar("multilibscript_rename", "\n mv ${PKGD}" + script + " ${PKGD}" + script + "-${MULTILIB_SUFFIX}")
|
||||||
|
d.appendVar("FILES_" + epkg, " " + script + "-${MULTILIB_SUFFIX}")
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -280,6 +280,8 @@ python copy_buildsystem () {
|
|||||||
|
|
||||||
# Create local.conf
|
# Create local.conf
|
||||||
builddir = d.getVar('TOPDIR')
|
builddir = d.getVar('TOPDIR')
|
||||||
|
if derivative and os.path.exists(builddir + '/conf/site.conf'):
|
||||||
|
shutil.copyfile(builddir + '/conf/site.conf', baseoutpath + '/conf/site.conf')
|
||||||
if derivative and os.path.exists(builddir + '/conf/auto.conf'):
|
if derivative and os.path.exists(builddir + '/conf/auto.conf'):
|
||||||
shutil.copyfile(builddir + '/conf/auto.conf', baseoutpath + '/conf/auto.conf')
|
shutil.copyfile(builddir + '/conf/auto.conf', baseoutpath + '/conf/auto.conf')
|
||||||
if derivative:
|
if derivative:
|
||||||
@@ -297,6 +299,9 @@ python copy_buildsystem () {
|
|||||||
return origvalue, op, 0, True
|
return origvalue, op, 0, True
|
||||||
varlist = ['[^#=+ ]*']
|
varlist = ['[^#=+ ]*']
|
||||||
oldlines = []
|
oldlines = []
|
||||||
|
if os.path.exists(builddir + '/conf/site.conf'):
|
||||||
|
with open(builddir + '/conf/site.conf', 'r') as f:
|
||||||
|
oldlines += f.readlines()
|
||||||
if os.path.exists(builddir + '/conf/auto.conf'):
|
if os.path.exists(builddir + '/conf/auto.conf'):
|
||||||
with open(builddir + '/conf/auto.conf', 'r') as f:
|
with open(builddir + '/conf/auto.conf', 'r') as f:
|
||||||
oldlines += f.readlines()
|
oldlines += f.readlines()
|
||||||
|
|||||||
@@ -59,6 +59,7 @@ addtask install_ptest_base after do_install before do_package do_populate_sy
|
|||||||
python () {
|
python () {
|
||||||
if not bb.data.inherits_class('native', d) and not bb.data.inherits_class('cross', d):
|
if not bb.data.inherits_class('native', d) and not bb.data.inherits_class('cross', d):
|
||||||
d.setVarFlag('do_install_ptest_base', 'fakeroot', '1')
|
d.setVarFlag('do_install_ptest_base', 'fakeroot', '1')
|
||||||
|
d.setVarFlag('do_install_ptest_base', 'umask', '022')
|
||||||
|
|
||||||
# Remove all '*ptest_base' tasks when ptest is not enabled
|
# Remove all '*ptest_base' tasks when ptest is not enabled
|
||||||
if not(d.getVar('PTEST_ENABLED') == "1"):
|
if not(d.getVar('PTEST_ENABLED') == "1"):
|
||||||
|
|||||||
@@ -22,7 +22,10 @@
|
|||||||
# 3. Use the mtime of "known" files such as NEWS, CHANGLELOG, ...
|
# 3. Use the mtime of "known" files such as NEWS, CHANGLELOG, ...
|
||||||
# This works for well-kept repositories distributed via tarball.
|
# This works for well-kept repositories distributed via tarball.
|
||||||
#
|
#
|
||||||
# 4. If the above steps fail, use the modification time of the youngest file in the source tree.
|
# 4. Use the modification time of the youngest file in the source tree, if there is one.
|
||||||
|
# This will be the newest file from the distribution tarball, if any.
|
||||||
|
#
|
||||||
|
# 5. Fall back to a fixed timestamp.
|
||||||
#
|
#
|
||||||
# Once the value of SOURCE_DATE_EPOCH is determined, it is stored in the recipe's SDE_FILE.
|
# Once the value of SOURCE_DATE_EPOCH is determined, it is stored in the recipe's SDE_FILE.
|
||||||
# If none of these mechanisms are suitable, replace the do_deploy_source_date_epoch task
|
# If none of these mechanisms are suitable, replace the do_deploy_source_date_epoch task
|
||||||
@@ -104,15 +107,15 @@ def get_source_date_epoch_from_git(d, sourcedir):
|
|||||||
return source_date_epoch
|
return source_date_epoch
|
||||||
|
|
||||||
def get_source_date_epoch_from_youngest_file(d, sourcedir):
|
def get_source_date_epoch_from_youngest_file(d, sourcedir):
|
||||||
|
if sourcedir == d.getVar('WORKDIR'):
|
||||||
|
# These sources are almost certainly not from a tarball
|
||||||
|
return None
|
||||||
|
|
||||||
# Do it the hard way: check all files and find the youngest one...
|
# Do it the hard way: check all files and find the youngest one...
|
||||||
source_date_epoch = None
|
source_date_epoch = None
|
||||||
newest_file = None
|
newest_file = None
|
||||||
# Just in case S = WORKDIR
|
|
||||||
exclude = set(["build", "image", "license-destdir", "patches", "pseudo",
|
|
||||||
"recipe-sysroot", "recipe-sysroot-native", "sysroot-destdir", "temp"])
|
|
||||||
for root, dirs, files in os.walk(sourcedir, topdown=True):
|
for root, dirs, files in os.walk(sourcedir, topdown=True):
|
||||||
files = [f for f in files if not f[0] == '.']
|
files = [f for f in files if not f[0] == '.']
|
||||||
dirs[:] = [d for d in dirs if d not in exclude]
|
|
||||||
|
|
||||||
for fname in files:
|
for fname in files:
|
||||||
filename = os.path.join(root, fname)
|
filename = os.path.join(root, fname)
|
||||||
@@ -128,6 +131,10 @@ def get_source_date_epoch_from_youngest_file(d, sourcedir):
|
|||||||
bb.debug(1, "Newest file found: %s" % newest_file)
|
bb.debug(1, "Newest file found: %s" % newest_file)
|
||||||
return source_date_epoch
|
return source_date_epoch
|
||||||
|
|
||||||
|
def fixed_source_date_epoch():
|
||||||
|
bb.debug(1, "No tarball or git repo found to determine SOURCE_DATE_EPOCH")
|
||||||
|
return 0
|
||||||
|
|
||||||
python do_create_source_date_epoch_stamp() {
|
python do_create_source_date_epoch_stamp() {
|
||||||
epochfile = d.getVar('SDE_FILE')
|
epochfile = d.getVar('SDE_FILE')
|
||||||
if os.path.isfile(epochfile):
|
if os.path.isfile(epochfile):
|
||||||
@@ -139,11 +146,8 @@ python do_create_source_date_epoch_stamp() {
|
|||||||
get_source_date_epoch_from_git(d, sourcedir) or
|
get_source_date_epoch_from_git(d, sourcedir) or
|
||||||
get_source_date_epoch_from_known_files(d, sourcedir) or
|
get_source_date_epoch_from_known_files(d, sourcedir) or
|
||||||
get_source_date_epoch_from_youngest_file(d, sourcedir) or
|
get_source_date_epoch_from_youngest_file(d, sourcedir) or
|
||||||
0 # Last resort
|
fixed_source_date_epoch() # Last resort
|
||||||
)
|
)
|
||||||
if source_date_epoch == 0:
|
|
||||||
# empty folder, not a single file ...
|
|
||||||
bb.debug(1, "No files found to determine SOURCE_DATE_EPOCH")
|
|
||||||
|
|
||||||
bb.debug(1, "SOURCE_DATE_EPOCH: %d" % source_date_epoch)
|
bb.debug(1, "SOURCE_DATE_EPOCH: %d" % source_date_epoch)
|
||||||
bb.utils.mkdirhier(d.getVar('SDE_DIR'))
|
bb.utils.mkdirhier(d.getVar('SDE_DIR'))
|
||||||
|
|||||||
@@ -511,6 +511,16 @@ def check_make_version(sanity_data):
|
|||||||
return None
|
return None
|
||||||
|
|
||||||
|
|
||||||
|
# Check if we're running on WSL (Windows Subsystem for Linux). Its known not to
|
||||||
|
# work but we should tell the user that upfront.
|
||||||
|
def check_wsl(d):
|
||||||
|
with open("/proc/version", "r") as f:
|
||||||
|
verdata = f.readlines()
|
||||||
|
for l in verdata:
|
||||||
|
if "Microsoft" in l:
|
||||||
|
return "OpenEmbedded doesn't work under WSL at this time, sorry"
|
||||||
|
return None
|
||||||
|
|
||||||
# Tar version 1.24 and onwards handle overwriting symlinks correctly
|
# Tar version 1.24 and onwards handle overwriting symlinks correctly
|
||||||
# but earlier versions do not; this needs to work properly for sstate
|
# but earlier versions do not; this needs to work properly for sstate
|
||||||
def check_tar_version(sanity_data):
|
def check_tar_version(sanity_data):
|
||||||
@@ -625,6 +635,7 @@ def check_sanity_version_change(status, d):
|
|||||||
status.addresult(check_tar_version(d))
|
status.addresult(check_tar_version(d))
|
||||||
status.addresult(check_git_version(d))
|
status.addresult(check_git_version(d))
|
||||||
status.addresult(check_perl_modules(d))
|
status.addresult(check_perl_modules(d))
|
||||||
|
status.addresult(check_wsl(d))
|
||||||
|
|
||||||
missing = ""
|
missing = ""
|
||||||
|
|
||||||
|
|||||||
@@ -1,13 +1,13 @@
|
|||||||
python siteconfig_do_siteconfig () {
|
python siteconfig_do_siteconfig () {
|
||||||
shared_state = sstate_state_fromvars(d)
|
shared_state = sstate_state_fromvars(d)
|
||||||
if shared_state['task'] != 'populate_sysroot':
|
if shared_state['task'] != 'populate_sysroot':
|
||||||
return
|
return
|
||||||
if not os.path.isdir(os.path.join(d.getVar('FILE_DIRNAME'), 'site_config')):
|
if not os.path.isdir(os.path.join(d.getVar('FILE_DIRNAME'), 'site_config')):
|
||||||
bb.debug(1, "No site_config directory, skipping do_siteconfig")
|
bb.debug(1, "No site_config directory, skipping do_siteconfig")
|
||||||
return
|
return
|
||||||
sstate_install(shared_state, d)
|
sstate_install(shared_state, d)
|
||||||
bb.build.exec_func('do_siteconfig_gencache', d)
|
bb.build.exec_func('do_siteconfig_gencache', d)
|
||||||
sstate_clean(shared_state, d)
|
sstate_clean(shared_state, d)
|
||||||
}
|
}
|
||||||
|
|
||||||
EXTRASITECONFIG ?= ""
|
EXTRASITECONFIG ?= ""
|
||||||
|
|||||||
@@ -423,8 +423,9 @@ def sstate_clean_cachefile(ss, d):
|
|||||||
import oe.path
|
import oe.path
|
||||||
|
|
||||||
sstatepkgfile = d.getVar('SSTATE_PATHSPEC') + "*_" + ss['task'] + ".tgz*"
|
sstatepkgfile = d.getVar('SSTATE_PATHSPEC') + "*_" + ss['task'] + ".tgz*"
|
||||||
bb.note("Removing %s" % sstatepkgfile)
|
if d.getVarFlag('do_%s' % ss['task'], 'task'):
|
||||||
oe.path.remove(sstatepkgfile)
|
bb.note("Removing %s" % sstatepkgfile)
|
||||||
|
oe.path.remove(sstatepkgfile)
|
||||||
|
|
||||||
def sstate_clean_cachefiles(d):
|
def sstate_clean_cachefiles(d):
|
||||||
for task in (d.getVar('SSTATETASKS') or "").split():
|
for task in (d.getVar('SSTATETASKS') or "").split():
|
||||||
|
|||||||
@@ -151,7 +151,7 @@ def get_testimage_configuration(d, test_type, machine):
|
|||||||
'IMAGE_BASENAME': d.getVar("IMAGE_BASENAME"),
|
'IMAGE_BASENAME': d.getVar("IMAGE_BASENAME"),
|
||||||
'IMAGE_PKGTYPE': d.getVar("IMAGE_PKGTYPE"),
|
'IMAGE_PKGTYPE': d.getVar("IMAGE_PKGTYPE"),
|
||||||
'STARTTIME': d.getVar("DATETIME"),
|
'STARTTIME': d.getVar("DATETIME"),
|
||||||
'HOST_DISTRO': ('-'.join(platform.linux_distribution())).replace(' ', '-'),
|
'HOST_DISTRO': oe.lsb.distro_identifier().replace(' ', '-'),
|
||||||
'LAYERS': get_layers(d.getVar("BBLAYERS"))}
|
'LAYERS': get_layers(d.getVar("BBLAYERS"))}
|
||||||
return configuration
|
return configuration
|
||||||
get_testimage_configuration[vardepsexclude] = "DATETIME"
|
get_testimage_configuration[vardepsexclude] = "DATETIME"
|
||||||
|
|||||||
@@ -23,7 +23,7 @@ def get_sdk_configuration(d, test_type):
|
|||||||
'IMAGE_BASENAME': d.getVar("IMAGE_BASENAME"),
|
'IMAGE_BASENAME': d.getVar("IMAGE_BASENAME"),
|
||||||
'IMAGE_PKGTYPE': d.getVar("IMAGE_PKGTYPE"),
|
'IMAGE_PKGTYPE': d.getVar("IMAGE_PKGTYPE"),
|
||||||
'STARTTIME': d.getVar("DATETIME"),
|
'STARTTIME': d.getVar("DATETIME"),
|
||||||
'HOST_DISTRO': ('-'.join(platform.linux_distribution())).replace(' ', '-'),
|
'HOST_DISTRO': oe.lsb.distro_identifier().replace(' ', '-'),
|
||||||
'LAYERS': get_layers(d.getVar("BBLAYERS"))}
|
'LAYERS': get_layers(d.getVar("BBLAYERS"))}
|
||||||
return configuration
|
return configuration
|
||||||
get_sdk_configuration[vardepsexclude] = "DATETIME"
|
get_sdk_configuration[vardepsexclude] = "DATETIME"
|
||||||
|
|||||||
@@ -37,19 +37,19 @@ RECIPE_MAINTAINER_pn-alsa-state = "Tanu Kaskinen <tanuk@iki.fi>"
|
|||||||
RECIPE_MAINTAINER_pn-alsa-tools = "Tanu Kaskinen <tanuk@iki.fi>"
|
RECIPE_MAINTAINER_pn-alsa-tools = "Tanu Kaskinen <tanuk@iki.fi>"
|
||||||
RECIPE_MAINTAINER_pn-alsa-utils = "Tanu Kaskinen <tanuk@iki.fi>"
|
RECIPE_MAINTAINER_pn-alsa-utils = "Tanu Kaskinen <tanuk@iki.fi>"
|
||||||
RECIPE_MAINTAINER_pn-alsa-utils-scripts = "Tanu Kaskinen <tanuk@iki.fi>"
|
RECIPE_MAINTAINER_pn-alsa-utils-scripts = "Tanu Kaskinen <tanuk@iki.fi>"
|
||||||
RECIPE_MAINTAINER_pn-apmd = "Ross Burton <ross.burton@intel.com>"
|
RECIPE_MAINTAINER_pn-apmd = "Anuj Mittal <anuj.mittal@intel.com>"
|
||||||
RECIPE_MAINTAINER_pn-apr = "Hongxu Jia <hongxu.jia@windriver.com>"
|
RECIPE_MAINTAINER_pn-apr = "Hongxu Jia <hongxu.jia@windriver.com>"
|
||||||
RECIPE_MAINTAINER_pn-apr-util = "Hongxu Jia <hongxu.jia@windriver.com>"
|
RECIPE_MAINTAINER_pn-apr-util = "Hongxu Jia <hongxu.jia@windriver.com>"
|
||||||
RECIPE_MAINTAINER_pn-apt = "Aníbal Limón <limon.anibal@gmail.com>"
|
RECIPE_MAINTAINER_pn-apt = "Aníbal Limón <limon.anibal@gmail.com>"
|
||||||
RECIPE_MAINTAINER_pn-apt-native = "Aníbal Limón <limon.anibal@gmail.com>"
|
RECIPE_MAINTAINER_pn-apt-native = "Aníbal Limón <limon.anibal@gmail.com>"
|
||||||
RECIPE_MAINTAINER_pn-argp-standalone = "Khem Raj <raj.khem@gmail.com>"
|
RECIPE_MAINTAINER_pn-argp-standalone = "Khem Raj <raj.khem@gmail.com>"
|
||||||
RECIPE_MAINTAINER_pn-asciidoc = "Yi Zhao <yi.zhao@windriver.com>"
|
RECIPE_MAINTAINER_pn-asciidoc = "Yi Zhao <yi.zhao@windriver.com>"
|
||||||
RECIPE_MAINTAINER_pn-aspell = "Ross Burton <ross.burton@intel.com>"
|
RECIPE_MAINTAINER_pn-aspell = "Anuj Mittal <anuj.mittal@intel.com>"
|
||||||
RECIPE_MAINTAINER_pn-assimp = "Ross Burton <ross.burton@intel.com>"
|
RECIPE_MAINTAINER_pn-assimp = "Anuj Mittal <anuj.mittal@intel.com>"
|
||||||
RECIPE_MAINTAINER_pn-at = "Chen Qi <Qi.Chen@windriver.com>"
|
RECIPE_MAINTAINER_pn-at = "Chen Qi <Qi.Chen@windriver.com>"
|
||||||
RECIPE_MAINTAINER_pn-at-spi2-atk = "Ross Burton <ross.burton@intel.com>"
|
RECIPE_MAINTAINER_pn-at-spi2-atk = "Anuj Mittal <anuj.mittal@intel.com>"
|
||||||
RECIPE_MAINTAINER_pn-at-spi2-core = "Ross Burton <ross.burton@intel.com>"
|
RECIPE_MAINTAINER_pn-at-spi2-core = "Anuj Mittal <anuj.mittal@intel.com>"
|
||||||
RECIPE_MAINTAINER_pn-atk = "Ross Burton <ross.burton@intel.com>"
|
RECIPE_MAINTAINER_pn-atk = "Anuj Mittal <anuj.mittal@intel.com>"
|
||||||
RECIPE_MAINTAINER_pn-attr = "Chen Qi <Qi.Chen@windriver.com>"
|
RECIPE_MAINTAINER_pn-attr = "Chen Qi <Qi.Chen@windriver.com>"
|
||||||
RECIPE_MAINTAINER_pn-autoconf = "Robert Yang <liezhi.yang@windriver.com>"
|
RECIPE_MAINTAINER_pn-autoconf = "Robert Yang <liezhi.yang@windriver.com>"
|
||||||
RECIPE_MAINTAINER_pn-autoconf-archive = "Robert Yang <liezhi.yang@windriver.com>"
|
RECIPE_MAINTAINER_pn-autoconf-archive = "Robert Yang <liezhi.yang@windriver.com>"
|
||||||
@@ -57,11 +57,11 @@ RECIPE_MAINTAINER_pn-automake = "Robert Yang <liezhi.yang@windriver.com>"
|
|||||||
RECIPE_MAINTAINER_pn-avahi = "Yi Zhao <yi.zhao@windriver.com>"
|
RECIPE_MAINTAINER_pn-avahi = "Yi Zhao <yi.zhao@windriver.com>"
|
||||||
RECIPE_MAINTAINER_pn-avahi-ui = "Yi Zhao <yi.zhao@windriver.com>"
|
RECIPE_MAINTAINER_pn-avahi-ui = "Yi Zhao <yi.zhao@windriver.com>"
|
||||||
RECIPE_MAINTAINER_pn-babeltrace = "Alexander Kanavin <alex.kanavin@gmail.com>"
|
RECIPE_MAINTAINER_pn-babeltrace = "Alexander Kanavin <alex.kanavin@gmail.com>"
|
||||||
RECIPE_MAINTAINER_pn-base-files = "Ross Burton <ross.burton@intel.com>"
|
RECIPE_MAINTAINER_pn-base-files = "Anuj Mittal <anuj.mittal@intel.com>"
|
||||||
RECIPE_MAINTAINER_pn-base-passwd = "Ross Burton <ross.burton@intel.com>"
|
RECIPE_MAINTAINER_pn-base-passwd = "Anuj Mittal <anuj.mittal@intel.com>"
|
||||||
RECIPE_MAINTAINER_pn-bash = "Hongxu Jia <hongxu.jia@windriver.com>"
|
RECIPE_MAINTAINER_pn-bash = "Hongxu Jia <hongxu.jia@windriver.com>"
|
||||||
RECIPE_MAINTAINER_pn-bash-completion = "Alexander Kanavin <alex.kanavin@gmail.com>"
|
RECIPE_MAINTAINER_pn-bash-completion = "Alexander Kanavin <alex.kanavin@gmail.com>"
|
||||||
RECIPE_MAINTAINER_pn-bc = "Ross Burton <ross.burton@intel.com>"
|
RECIPE_MAINTAINER_pn-bc = "Anuj Mittal <anuj.mittal@intel.com>"
|
||||||
RECIPE_MAINTAINER_pn-bind = "Armin Kuster <akuster808@gmail.com>"
|
RECIPE_MAINTAINER_pn-bind = "Armin Kuster <akuster808@gmail.com>"
|
||||||
RECIPE_MAINTAINER_pn-binutils = "Khem Raj <raj.khem@gmail.com>"
|
RECIPE_MAINTAINER_pn-binutils = "Khem Raj <raj.khem@gmail.com>"
|
||||||
RECIPE_MAINTAINER_pn-binutils-cross = "Khem Raj <raj.khem@gmail.com>"
|
RECIPE_MAINTAINER_pn-binutils-cross = "Khem Raj <raj.khem@gmail.com>"
|
||||||
@@ -71,8 +71,8 @@ RECIPE_MAINTAINER_pn-bison = "Chen Qi <Qi.Chen@windriver.com>"
|
|||||||
RECIPE_MAINTAINER_pn-bjam-native = "Alexander Kanavin <alex.kanavin@gmail.com>"
|
RECIPE_MAINTAINER_pn-bjam-native = "Alexander Kanavin <alex.kanavin@gmail.com>"
|
||||||
RECIPE_MAINTAINER_pn-blktool = "Yi Zhao <yi.zhao@windriver.com>"
|
RECIPE_MAINTAINER_pn-blktool = "Yi Zhao <yi.zhao@windriver.com>"
|
||||||
RECIPE_MAINTAINER_pn-blktrace = "Alexander Kanavin <alex.kanavin@gmail.com>"
|
RECIPE_MAINTAINER_pn-blktrace = "Alexander Kanavin <alex.kanavin@gmail.com>"
|
||||||
RECIPE_MAINTAINER_pn-bluez5 = "Ross Burton <ross.burton@intel.com>"
|
RECIPE_MAINTAINER_pn-bluez5 = "Anuj Mittal <anuj.mittal@intel.com>"
|
||||||
RECIPE_MAINTAINER_pn-bmap-tools = "Ross Burton <ross.burton@intel.com>"
|
RECIPE_MAINTAINER_pn-bmap-tools = "Anuj Mittal <anuj.mittal@intel.com>"
|
||||||
RECIPE_MAINTAINER_pn-boost = "Alexander Kanavin <alex.kanavin@gmail.com>"
|
RECIPE_MAINTAINER_pn-boost = "Alexander Kanavin <alex.kanavin@gmail.com>"
|
||||||
RECIPE_MAINTAINER_pn-bootchart2 = "Alexander Kanavin <alex.kanavin@gmail.com>"
|
RECIPE_MAINTAINER_pn-bootchart2 = "Alexander Kanavin <alex.kanavin@gmail.com>"
|
||||||
RECIPE_MAINTAINER_pn-bsd-headers = "Khem Raj <raj.khem@gmail.com>"
|
RECIPE_MAINTAINER_pn-bsd-headers = "Khem Raj <raj.khem@gmail.com>"
|
||||||
@@ -86,7 +86,7 @@ RECIPE_MAINTAINER_pn-busybox = "Andrej Valek <andrej.valek@siemens.com>"
|
|||||||
RECIPE_MAINTAINER_pn-busybox-inittab = "Denys Dmytriyenko <denys@ti.com>"
|
RECIPE_MAINTAINER_pn-busybox-inittab = "Denys Dmytriyenko <denys@ti.com>"
|
||||||
RECIPE_MAINTAINER_pn-bzip2 = "Denys Dmytriyenko <denys@ti.com>"
|
RECIPE_MAINTAINER_pn-bzip2 = "Denys Dmytriyenko <denys@ti.com>"
|
||||||
RECIPE_MAINTAINER_pn-ca-certificates = "Alexander Kanavin <alex.kanavin@gmail.com>"
|
RECIPE_MAINTAINER_pn-ca-certificates = "Alexander Kanavin <alex.kanavin@gmail.com>"
|
||||||
RECIPE_MAINTAINER_pn-cairo = "Ross Burton <ross.burton@intel.com>"
|
RECIPE_MAINTAINER_pn-cairo = "Anuj Mittal <anuj.mittal@intel.com>"
|
||||||
RECIPE_MAINTAINER_pn-cantarell-fonts = "Alexander Kanavin <alex.kanavin@gmail.com>"
|
RECIPE_MAINTAINER_pn-cantarell-fonts = "Alexander Kanavin <alex.kanavin@gmail.com>"
|
||||||
RECIPE_MAINTAINER_pn-ccache = "Robert Yang <liezhi.yang@windriver.com>"
|
RECIPE_MAINTAINER_pn-ccache = "Robert Yang <liezhi.yang@windriver.com>"
|
||||||
RECIPE_MAINTAINER_pn-cdrtools-native = "Yi Zhao <yi.zhao@windriver.com>"
|
RECIPE_MAINTAINER_pn-cdrtools-native = "Yi Zhao <yi.zhao@windriver.com>"
|
||||||
@@ -108,7 +108,7 @@ RECIPE_MAINTAINER_pn-coreutils = "Chen Qi <Qi.Chen@windriver.com>"
|
|||||||
RECIPE_MAINTAINER_pn-cpio = "Denys Dmytriyenko <denys@ti.com>"
|
RECIPE_MAINTAINER_pn-cpio = "Denys Dmytriyenko <denys@ti.com>"
|
||||||
RECIPE_MAINTAINER_pn-cracklib = "Armin Kuster <akuster808@gmail.com>"
|
RECIPE_MAINTAINER_pn-cracklib = "Armin Kuster <akuster808@gmail.com>"
|
||||||
RECIPE_MAINTAINER_pn-createrepo-c = "Alexander Kanavin <alex.kanavin@gmail.com>"
|
RECIPE_MAINTAINER_pn-createrepo-c = "Alexander Kanavin <alex.kanavin@gmail.com>"
|
||||||
RECIPE_MAINTAINER_pn-cronie = "Ross Burton <ross.burton@intel.com>"
|
RECIPE_MAINTAINER_pn-cronie = "Anuj Mittal <anuj.mittal@intel.com>"
|
||||||
RECIPE_MAINTAINER_pn-cross-localedef-native = "Khem Raj <raj.khem@gmail.com>"
|
RECIPE_MAINTAINER_pn-cross-localedef-native = "Khem Raj <raj.khem@gmail.com>"
|
||||||
RECIPE_MAINTAINER_pn-cryptodev-linux = "Robert Yang <liezhi.yang@windriver.com>"
|
RECIPE_MAINTAINER_pn-cryptodev-linux = "Robert Yang <liezhi.yang@windriver.com>"
|
||||||
RECIPE_MAINTAINER_pn-cryptodev-module = "Robert Yang <liezhi.yang@windriver.com>"
|
RECIPE_MAINTAINER_pn-cryptodev-module = "Robert Yang <liezhi.yang@windriver.com>"
|
||||||
@@ -145,11 +145,11 @@ RECIPE_MAINTAINER_pn-ed = "Alexander Kanavin <alex.kanavin@gmail.com>"
|
|||||||
RECIPE_MAINTAINER_pn-eglinfo-fb = "Alexander Kanavin <alex.kanavin@gmail.com>"
|
RECIPE_MAINTAINER_pn-eglinfo-fb = "Alexander Kanavin <alex.kanavin@gmail.com>"
|
||||||
RECIPE_MAINTAINER_pn-eglinfo-x11 = "Alexander Kanavin <alex.kanavin@gmail.com>"
|
RECIPE_MAINTAINER_pn-eglinfo-x11 = "Alexander Kanavin <alex.kanavin@gmail.com>"
|
||||||
RECIPE_MAINTAINER_pn-elfutils = "Hongxu Jia <hongxu.jia@windriver.com>"
|
RECIPE_MAINTAINER_pn-elfutils = "Hongxu Jia <hongxu.jia@windriver.com>"
|
||||||
RECIPE_MAINTAINER_pn-enchant = "Ross Burton <ross.burton@intel.com>"
|
RECIPE_MAINTAINER_pn-enchant = "Anuj Mittal <anuj.mittal@intel.com>"
|
||||||
RECIPE_MAINTAINER_pn-encodings = "Armin Kuster <akuster808@gmail.com>"
|
RECIPE_MAINTAINER_pn-encodings = "Armin Kuster <akuster808@gmail.com>"
|
||||||
RECIPE_MAINTAINER_pn-epiphany = "Alexander Kanavin <alex.kanavin@gmail.com>"
|
RECIPE_MAINTAINER_pn-epiphany = "Alexander Kanavin <alex.kanavin@gmail.com>"
|
||||||
RECIPE_MAINTAINER_pn-ethtool = "Changhyeok Bae <changhyeok.bae@lge.com>"
|
RECIPE_MAINTAINER_pn-ethtool = "Changhyeok Bae <changhyeok.bae@lge.com>"
|
||||||
RECIPE_MAINTAINER_pn-eudev = "Ross Burton <ross.burton@intel.com>"
|
RECIPE_MAINTAINER_pn-eudev = "Anuj Mittal <anuj.mittal@intel.com>"
|
||||||
RECIPE_MAINTAINER_pn-expat = "Yi Zhao <yi.zhao@windriver.com>"
|
RECIPE_MAINTAINER_pn-expat = "Yi Zhao <yi.zhao@windriver.com>"
|
||||||
RECIPE_MAINTAINER_pn-expect = "Alexander Kanavin <alex.kanavin@gmail.com>"
|
RECIPE_MAINTAINER_pn-expect = "Alexander Kanavin <alex.kanavin@gmail.com>"
|
||||||
RECIPE_MAINTAINER_pn-ffmpeg = "Alexander Kanavin <alex.kanavin@gmail.com>"
|
RECIPE_MAINTAINER_pn-ffmpeg = "Alexander Kanavin <alex.kanavin@gmail.com>"
|
||||||
@@ -187,9 +187,9 @@ RECIPE_MAINTAINER_pn-gettext = "Robert Yang <liezhi.yang@windriver.com>"
|
|||||||
RECIPE_MAINTAINER_pn-gettext-minimal-native = "Robert Yang <liezhi.yang@windriver.com>"
|
RECIPE_MAINTAINER_pn-gettext-minimal-native = "Robert Yang <liezhi.yang@windriver.com>"
|
||||||
RECIPE_MAINTAINER_pn-ghostscript = "Hongxu Jia <hongxu.jia@windriver.com>"
|
RECIPE_MAINTAINER_pn-ghostscript = "Hongxu Jia <hongxu.jia@windriver.com>"
|
||||||
RECIPE_MAINTAINER_pn-git = "Robert Yang <liezhi.yang@windriver.com>"
|
RECIPE_MAINTAINER_pn-git = "Robert Yang <liezhi.yang@windriver.com>"
|
||||||
RECIPE_MAINTAINER_pn-glew = "Ross Burton <ross.burton@intel.com>"
|
RECIPE_MAINTAINER_pn-glew = "Anuj Mittal <anuj.mittal@intel.com>"
|
||||||
RECIPE_MAINTAINER_pn-glib-2.0 = "Ross Burton <ross.burton@intel.com>"
|
RECIPE_MAINTAINER_pn-glib-2.0 = "Anuj Mittal <anuj.mittal@intel.com>"
|
||||||
RECIPE_MAINTAINER_pn-glib-networking = "Ross Burton <ross.burton@intel.com>"
|
RECIPE_MAINTAINER_pn-glib-networking = "Anuj Mittal <anuj.mittal@intel.com>"
|
||||||
RECIPE_MAINTAINER_pn-glibc = "Khem Raj <raj.khem@gmail.com>"
|
RECIPE_MAINTAINER_pn-glibc = "Khem Raj <raj.khem@gmail.com>"
|
||||||
RECIPE_MAINTAINER_pn-glibc-initial = "Khem Raj <raj.khem@gmail.com>"
|
RECIPE_MAINTAINER_pn-glibc-initial = "Khem Raj <raj.khem@gmail.com>"
|
||||||
RECIPE_MAINTAINER_pn-glibc-locale = "Khem Raj <raj.khem@gmail.com>"
|
RECIPE_MAINTAINER_pn-glibc-locale = "Khem Raj <raj.khem@gmail.com>"
|
||||||
@@ -217,7 +217,7 @@ RECIPE_MAINTAINER_pn-groff = "Hongxu Jia <hongxu.jia@windriver.com>"
|
|||||||
RECIPE_MAINTAINER_pn-grub = "Anuj Mittal <anuj.mittal@intel.com>"
|
RECIPE_MAINTAINER_pn-grub = "Anuj Mittal <anuj.mittal@intel.com>"
|
||||||
RECIPE_MAINTAINER_pn-grub-bootconf = "Anuj Mittal <anuj.mittal@intel.com>"
|
RECIPE_MAINTAINER_pn-grub-bootconf = "Anuj Mittal <anuj.mittal@intel.com>"
|
||||||
RECIPE_MAINTAINER_pn-grub-efi = "Anuj Mittal <anuj.mittal@intel.com>"
|
RECIPE_MAINTAINER_pn-grub-efi = "Anuj Mittal <anuj.mittal@intel.com>"
|
||||||
RECIPE_MAINTAINER_pn-gsettings-desktop-schemas = "Ross Burton <ross.burton@intel.com>"
|
RECIPE_MAINTAINER_pn-gsettings-desktop-schemas = "Anuj Mittal <anuj.mittal@intel.com>"
|
||||||
RECIPE_MAINTAINER_pn-gst-examples = "Anuj Mittal <anuj.mittal@intel.com>"
|
RECIPE_MAINTAINER_pn-gst-examples = "Anuj Mittal <anuj.mittal@intel.com>"
|
||||||
RECIPE_MAINTAINER_pn-gst-validate = "Anuj Mittal <anuj.mittal@intel.com>"
|
RECIPE_MAINTAINER_pn-gst-validate = "Anuj Mittal <anuj.mittal@intel.com>"
|
||||||
RECIPE_MAINTAINER_pn-gstreamer1.0 = "Anuj Mittal <anuj.mittal@intel.com>"
|
RECIPE_MAINTAINER_pn-gstreamer1.0 = "Anuj Mittal <anuj.mittal@intel.com>"
|
||||||
@@ -236,25 +236,25 @@ RECIPE_MAINTAINER_pn-gtk+3 = "Ross Burton <ross.burton@intel.com>"
|
|||||||
RECIPE_MAINTAINER_pn-gtk-doc = "Alexander Kanavin <alex.kanavin@gmail.com>"
|
RECIPE_MAINTAINER_pn-gtk-doc = "Alexander Kanavin <alex.kanavin@gmail.com>"
|
||||||
RECIPE_MAINTAINER_pn-gtk-icon-utils-native = "Ross Burton <ross.burton@intel.com>"
|
RECIPE_MAINTAINER_pn-gtk-icon-utils-native = "Ross Burton <ross.burton@intel.com>"
|
||||||
RECIPE_MAINTAINER_pn-gzip = "Denys Dmytriyenko <denys@ti.com>"
|
RECIPE_MAINTAINER_pn-gzip = "Denys Dmytriyenko <denys@ti.com>"
|
||||||
RECIPE_MAINTAINER_pn-harfbuzz = "Ross Burton <ross.burton@intel.com>"
|
RECIPE_MAINTAINER_pn-harfbuzz = "Anuj Mittal <anuj.mittal@intel.com>"
|
||||||
RECIPE_MAINTAINER_pn-hdparm = "Denys Dmytriyenko <denys@ti.com>"
|
RECIPE_MAINTAINER_pn-hdparm = "Denys Dmytriyenko <denys@ti.com>"
|
||||||
RECIPE_MAINTAINER_pn-help2man-native = "Hongxu Jia <hongxu.jia@windriver.com>"
|
RECIPE_MAINTAINER_pn-help2man-native = "Hongxu Jia <hongxu.jia@windriver.com>"
|
||||||
RECIPE_MAINTAINER_pn-hicolor-icon-theme = "Ross Burton <ross.burton@intel.com>"
|
RECIPE_MAINTAINER_pn-hicolor-icon-theme = "Anuj Mittal <anuj.mittal@intel.com>"
|
||||||
RECIPE_MAINTAINER_pn-hwlatdetect = "Alexander Kanavin <alex.kanavin@gmail.com>"
|
RECIPE_MAINTAINER_pn-hwlatdetect = "Alexander Kanavin <alex.kanavin@gmail.com>"
|
||||||
RECIPE_MAINTAINER_pn-i2c-tools = "Ross Burton <ross.burton@intel.com>"
|
RECIPE_MAINTAINER_pn-i2c-tools = "Anuj Mittal <anuj.mittal@intel.com>"
|
||||||
RECIPE_MAINTAINER_pn-icecc-create-env = "Joshua Watt <JPEWhacker@gmail.com>"
|
RECIPE_MAINTAINER_pn-icecc-create-env = "Joshua Watt <JPEWhacker@gmail.com>"
|
||||||
RECIPE_MAINTAINER_pn-icu = "Alexander Kanavin <alex.kanavin@gmail.com>"
|
RECIPE_MAINTAINER_pn-icu = "Alexander Kanavin <alex.kanavin@gmail.com>"
|
||||||
RECIPE_MAINTAINER_pn-ifupdown = "Ross Burton <ross.burton@intel.com>"
|
RECIPE_MAINTAINER_pn-ifupdown = "Anuj Mittal <anuj.mittal@intel.com>"
|
||||||
RECIPE_MAINTAINER_pn-init-ifupdown = "Ross Burton <ross.burton@intel.com>"
|
RECIPE_MAINTAINER_pn-init-ifupdown = "Anuj Mittal <anuj.mittal@intel.com>"
|
||||||
RECIPE_MAINTAINER_pn-initramfs-boot = "Otavio Salvador <otavio.salvador@ossystems.com.br>"
|
RECIPE_MAINTAINER_pn-initramfs-boot = "Otavio Salvador <otavio.salvador@ossystems.com.br>"
|
||||||
RECIPE_MAINTAINER_pn-initramfs-framework = "Otavio Salvador <otavio.salvador@ossystems.com.br>"
|
RECIPE_MAINTAINER_pn-initramfs-framework = "Otavio Salvador <otavio.salvador@ossystems.com.br>"
|
||||||
RECIPE_MAINTAINER_pn-initramfs-live-boot = "Ross Burton <ross.burton@intel.com>"
|
RECIPE_MAINTAINER_pn-initramfs-live-boot = "Anuj Mittal <anuj.mittal@intel.com>"
|
||||||
RECIPE_MAINTAINER_pn-initramfs-live-boot-tiny = "Ross Burton <ross.burton@intel.com>"
|
RECIPE_MAINTAINER_pn-initramfs-live-boot-tiny = "Anuj Mittal <anuj.mittal@intel.com>"
|
||||||
RECIPE_MAINTAINER_pn-initramfs-live-install = "Ross Burton <ross.burton@intel.com>"
|
RECIPE_MAINTAINER_pn-initramfs-live-install = "Anuj Mittal <anuj.mittal@intel.com>"
|
||||||
RECIPE_MAINTAINER_pn-initramfs-live-install-efi = "Ross Burton <ross.burton@intel.com>"
|
RECIPE_MAINTAINER_pn-initramfs-live-install-efi = "Anuj Mittal <anuj.mittal@intel.com>"
|
||||||
RECIPE_MAINTAINER_pn-initramfs-live-install-efi-testfs = "Ross Burton <ross.burton@intel.com>"
|
RECIPE_MAINTAINER_pn-initramfs-live-install-efi-testfs = "Anuj Mittal <anuj.mittal@intel.com>"
|
||||||
RECIPE_MAINTAINER_pn-initramfs-live-install-testfs = "Ross Burton <ross.burton@intel.com>"
|
RECIPE_MAINTAINER_pn-initramfs-live-install-testfs = "Anuj Mittal <anuj.mittal@intel.com>"
|
||||||
RECIPE_MAINTAINER_pn-initscripts = "Ross Burton <ross.burton@intel.com>"
|
RECIPE_MAINTAINER_pn-initscripts = "Anuj Mittal <anuj.mittal@intel.com>"
|
||||||
RECIPE_MAINTAINER_pn-intltool = "Alexander Kanavin <alex.kanavin@gmail.com>"
|
RECIPE_MAINTAINER_pn-intltool = "Alexander Kanavin <alex.kanavin@gmail.com>"
|
||||||
RECIPE_MAINTAINER_pn-iproute2 = "Changhyeok Bae <changhyeok.bae@lge.com>"
|
RECIPE_MAINTAINER_pn-iproute2 = "Changhyeok Bae <changhyeok.bae@lge.com>"
|
||||||
RECIPE_MAINTAINER_pn-iptables = "Changhyeok Bae <changhyeok.bae@lge.com>"
|
RECIPE_MAINTAINER_pn-iptables = "Changhyeok Bae <changhyeok.bae@lge.com>"
|
||||||
@@ -262,7 +262,7 @@ RECIPE_MAINTAINER_pn-iputils = "Changhyeok Bae <changhyeok.bae@lge.com>"
|
|||||||
RECIPE_MAINTAINER_pn-irda-utils = "Changhyeok Bae <changhyeok.bae@lge.com>"
|
RECIPE_MAINTAINER_pn-irda-utils = "Changhyeok Bae <changhyeok.bae@lge.com>"
|
||||||
RECIPE_MAINTAINER_pn-iso-codes = "Alexander Kanavin <alex.kanavin@gmail.com>"
|
RECIPE_MAINTAINER_pn-iso-codes = "Alexander Kanavin <alex.kanavin@gmail.com>"
|
||||||
RECIPE_MAINTAINER_pn-iw = "Changhyeok Bae <changhyeok.bae@lge.com>"
|
RECIPE_MAINTAINER_pn-iw = "Changhyeok Bae <changhyeok.bae@lge.com>"
|
||||||
RECIPE_MAINTAINER_pn-libjpeg-turbo = "Ross Burton <ross.burton@intel.com>"
|
RECIPE_MAINTAINER_pn-libjpeg-turbo = "Anuj Mittal <anuj.mittal@intel.com>"
|
||||||
RECIPE_MAINTAINER_pn-json-c = "Yi Zhao <yi.zhao@windriver.com>"
|
RECIPE_MAINTAINER_pn-json-c = "Yi Zhao <yi.zhao@windriver.com>"
|
||||||
RECIPE_MAINTAINER_pn-json-glib = "Yi Zhao <yi.zhao@windriver.com>"
|
RECIPE_MAINTAINER_pn-json-glib = "Yi Zhao <yi.zhao@windriver.com>"
|
||||||
RECIPE_MAINTAINER_pn-kbd = "Alexander Kanavin <alex.kanavin@gmail.com>"
|
RECIPE_MAINTAINER_pn-kbd = "Alexander Kanavin <alex.kanavin@gmail.com>"
|
||||||
@@ -273,17 +273,17 @@ RECIPE_MAINTAINER_pn-keymaps = "Alexander Kanavin <alex.kanavin@gmail.com>"
|
|||||||
RECIPE_MAINTAINER_pn-kmod = "Chen Qi <Qi.Chen@windriver.com>"
|
RECIPE_MAINTAINER_pn-kmod = "Chen Qi <Qi.Chen@windriver.com>"
|
||||||
RECIPE_MAINTAINER_pn-kmod-native = "Chen Qi <Qi.Chen@windriver.com>"
|
RECIPE_MAINTAINER_pn-kmod-native = "Chen Qi <Qi.Chen@windriver.com>"
|
||||||
RECIPE_MAINTAINER_pn-kmscube = "Carlos Rafael Giani <dv@pseudoterminal.org>"
|
RECIPE_MAINTAINER_pn-kmscube = "Carlos Rafael Giani <dv@pseudoterminal.org>"
|
||||||
RECIPE_MAINTAINER_pn-l3afpad = "Ross Burton <ross.burton@intel.com>"
|
RECIPE_MAINTAINER_pn-l3afpad = "Anuj Mittal <anuj.mittal@intel.com>"
|
||||||
RECIPE_MAINTAINER_pn-lame = "Tanu Kaskinen <tanuk@iki.fi>"
|
RECIPE_MAINTAINER_pn-lame = "Tanu Kaskinen <tanuk@iki.fi>"
|
||||||
RECIPE_MAINTAINER_pn-ldconfig-native = "Khem Raj <raj.khem@gmail.com>"
|
RECIPE_MAINTAINER_pn-ldconfig-native = "Khem Raj <raj.khem@gmail.com>"
|
||||||
RECIPE_MAINTAINER_pn-less = "Yi Zhao <yi.zhao@windriver.com>"
|
RECIPE_MAINTAINER_pn-less = "Yi Zhao <yi.zhao@windriver.com>"
|
||||||
RECIPE_MAINTAINER_pn-liba52 = "Tanu Kaskinen <tanuk@iki.fi>"
|
RECIPE_MAINTAINER_pn-liba52 = "Tanu Kaskinen <tanuk@iki.fi>"
|
||||||
RECIPE_MAINTAINER_pn-libacpi = "Ross Burton <ross.burton@intel.com>"
|
RECIPE_MAINTAINER_pn-libacpi = "Anuj Mittal <anuj.mittal@intel.com>"
|
||||||
RECIPE_MAINTAINER_pn-libaio = "Alexander Kanavin <alex.kanavin@gmail.com>"
|
RECIPE_MAINTAINER_pn-libaio = "Alexander Kanavin <alex.kanavin@gmail.com>"
|
||||||
RECIPE_MAINTAINER_pn-libarchive = "Otavio Salvador <otavio.salvador@ossystems.com.br>"
|
RECIPE_MAINTAINER_pn-libarchive = "Otavio Salvador <otavio.salvador@ossystems.com.br>"
|
||||||
RECIPE_MAINTAINER_pn-libart-lgpl = "Ross Burton <ross.burton@intel.com>"
|
RECIPE_MAINTAINER_pn-libart-lgpl = "Anuj Mittal <anuj.mittal@intel.com>"
|
||||||
RECIPE_MAINTAINER_pn-libassuan = "Armin Kuster <akuster808@gmail.com>"
|
RECIPE_MAINTAINER_pn-libassuan = "Armin Kuster <akuster808@gmail.com>"
|
||||||
RECIPE_MAINTAINER_pn-libatomic-ops = "Ross Burton <ross.burton@intel.com>"
|
RECIPE_MAINTAINER_pn-libatomic-ops = "Anuj Mittal <anuj.mittal@intel.com>"
|
||||||
RECIPE_MAINTAINER_pn-libbsd = "Yi Zhao <yi.zhao@windriver.com>"
|
RECIPE_MAINTAINER_pn-libbsd = "Yi Zhao <yi.zhao@windriver.com>"
|
||||||
RECIPE_MAINTAINER_pn-libcap = "Yi Zhao <yi.zhao@windriver.com>"
|
RECIPE_MAINTAINER_pn-libcap = "Yi Zhao <yi.zhao@windriver.com>"
|
||||||
RECIPE_MAINTAINER_pn-libcap-ng = "Yi Zhao <yi.zhao@windriver.com>"
|
RECIPE_MAINTAINER_pn-libcap-ng = "Yi Zhao <yi.zhao@windriver.com>"
|
||||||
@@ -291,16 +291,16 @@ RECIPE_MAINTAINER_pn-libcgroup = "Alexander Kanavin <alex.kanavin@gmail.com>"
|
|||||||
RECIPE_MAINTAINER_pn-libcheck = "Yi Zhao <yi.zhao@windriver.com>"
|
RECIPE_MAINTAINER_pn-libcheck = "Yi Zhao <yi.zhao@windriver.com>"
|
||||||
RECIPE_MAINTAINER_pn-libcomps = "Alexander Kanavin <alex.kanavin@gmail.com>"
|
RECIPE_MAINTAINER_pn-libcomps = "Alexander Kanavin <alex.kanavin@gmail.com>"
|
||||||
RECIPE_MAINTAINER_pn-libconvert-asn1-perl = "Tim Orling <timothy.t.orling@linux.intel.com>"
|
RECIPE_MAINTAINER_pn-libconvert-asn1-perl = "Tim Orling <timothy.t.orling@linux.intel.com>"
|
||||||
RECIPE_MAINTAINER_pn-libcroco = "Ross Burton <ross.burton@intel.com>"
|
RECIPE_MAINTAINER_pn-libcroco = "Anuj Mittal <anuj.mittal@intel.com>"
|
||||||
RECIPE_MAINTAINER_pn-libdaemon = "Alexander Kanavin <alex.kanavin@gmail.com>"
|
RECIPE_MAINTAINER_pn-libdaemon = "Alexander Kanavin <alex.kanavin@gmail.com>"
|
||||||
RECIPE_MAINTAINER_pn-libdmx = "Armin Kuster <akuster808@gmail.com>"
|
RECIPE_MAINTAINER_pn-libdmx = "Armin Kuster <akuster808@gmail.com>"
|
||||||
RECIPE_MAINTAINER_pn-libdnf = "Alexander Kanavin <alex.kanavin@gmail.com>"
|
RECIPE_MAINTAINER_pn-libdnf = "Alexander Kanavin <alex.kanavin@gmail.com>"
|
||||||
RECIPE_MAINTAINER_pn-libdrm = "Otavio Salvador <otavio.salvador@ossystems.com.br>"
|
RECIPE_MAINTAINER_pn-libdrm = "Otavio Salvador <otavio.salvador@ossystems.com.br>"
|
||||||
RECIPE_MAINTAINER_pn-libepoxy = "Ross Burton <ross.burton@intel.com>"
|
RECIPE_MAINTAINER_pn-libepoxy = "Anuj Mittal <anuj.mittal@intel.com>"
|
||||||
RECIPE_MAINTAINER_pn-liberation-fonts = "Alexander Kanavin <alex.kanavin@gmail.com>"
|
RECIPE_MAINTAINER_pn-liberation-fonts = "Alexander Kanavin <alex.kanavin@gmail.com>"
|
||||||
RECIPE_MAINTAINER_pn-liberror-perl = "Tim Orling <timothy.t.orling@linux.intel.com>"
|
RECIPE_MAINTAINER_pn-liberror-perl = "Tim Orling <timothy.t.orling@linux.intel.com>"
|
||||||
RECIPE_MAINTAINER_pn-libevdev = "Ross Burton <ross.burton@intel.com>"
|
RECIPE_MAINTAINER_pn-libevdev = "Anuj Mittal <anuj.mittal@intel.com>"
|
||||||
RECIPE_MAINTAINER_pn-libevent = "Ross Burton <ross.burton@intel.com>"
|
RECIPE_MAINTAINER_pn-libevent = "Anuj Mittal <anuj.mittal@intel.com>"
|
||||||
RECIPE_MAINTAINER_pn-libexif = "Alexander Kanavin <alex.kanavin@gmail.com>"
|
RECIPE_MAINTAINER_pn-libexif = "Alexander Kanavin <alex.kanavin@gmail.com>"
|
||||||
RECIPE_MAINTAINER_pn-libfakekey = "Alexander Kanavin <alex.kanavin@gmail.com>"
|
RECIPE_MAINTAINER_pn-libfakekey = "Alexander Kanavin <alex.kanavin@gmail.com>"
|
||||||
RECIPE_MAINTAINER_pn-libffi = "Alexander Kanavin <alex.kanavin@gmail.com>"
|
RECIPE_MAINTAINER_pn-libffi = "Alexander Kanavin <alex.kanavin@gmail.com>"
|
||||||
@@ -328,44 +328,44 @@ RECIPE_MAINTAINER_pn-libmpc = "Khem Raj <raj.khem@gmail.com>"
|
|||||||
RECIPE_MAINTAINER_pn-libnewt = "Hongxu Jia <hongxu.jia@windriver.com>"
|
RECIPE_MAINTAINER_pn-libnewt = "Hongxu Jia <hongxu.jia@windriver.com>"
|
||||||
RECIPE_MAINTAINER_pn-libnewt-python = "Hongxu Jia <hongxu.jia@windriver.com>"
|
RECIPE_MAINTAINER_pn-libnewt-python = "Hongxu Jia <hongxu.jia@windriver.com>"
|
||||||
RECIPE_MAINTAINER_pn-libnl = "Alexander Kanavin <alex.kanavin@gmail.com>"
|
RECIPE_MAINTAINER_pn-libnl = "Alexander Kanavin <alex.kanavin@gmail.com>"
|
||||||
RECIPE_MAINTAINER_pn-libnotify = "Ross Burton <ross.burton@intel.com>"
|
RECIPE_MAINTAINER_pn-libnotify = "Anuj Mittal <anuj.mittal@intel.com>"
|
||||||
RECIPE_MAINTAINER_pn-libnsl2 = "Khem Raj <raj.khem@gmail.com>"
|
RECIPE_MAINTAINER_pn-libnsl2 = "Khem Raj <raj.khem@gmail.com>"
|
||||||
RECIPE_MAINTAINER_pn-libnss-mdns = "Alexander Kanavin <alex.kanavin@gmail.com>"
|
RECIPE_MAINTAINER_pn-libnss-mdns = "Alexander Kanavin <alex.kanavin@gmail.com>"
|
||||||
RECIPE_MAINTAINER_pn-libnss-nis = "Khem Raj <raj.khem@gmail.com>"
|
RECIPE_MAINTAINER_pn-libnss-nis = "Khem Raj <raj.khem@gmail.com>"
|
||||||
RECIPE_MAINTAINER_pn-libogg = "Ross Burton <ross.burton@intel.com>"
|
RECIPE_MAINTAINER_pn-libogg = "Anuj Mittal <anuj.mittal@intel.com>"
|
||||||
RECIPE_MAINTAINER_pn-libomxil = "Ross Burton <ross.burton@intel.com>"
|
RECIPE_MAINTAINER_pn-libomxil = "Anuj Mittal <anuj.mittal@intel.com>"
|
||||||
RECIPE_MAINTAINER_pn-libpam = "Ross Burton <ross.burton@intel.com>"
|
RECIPE_MAINTAINER_pn-libpam = "Anuj Mittal <anuj.mittal@intel.com>"
|
||||||
RECIPE_MAINTAINER_pn-libpcap = "Ross Burton <ross.burton@intel.com>"
|
RECIPE_MAINTAINER_pn-libpcap = "Anuj Mittal <anuj.mittal@intel.com>"
|
||||||
RECIPE_MAINTAINER_pn-libpciaccess = "Alexander Kanavin <alex.kanavin@gmail.com>"
|
RECIPE_MAINTAINER_pn-libpciaccess = "Alexander Kanavin <alex.kanavin@gmail.com>"
|
||||||
RECIPE_MAINTAINER_pn-libpcre = "Yi Zhao <yi.zhao@windriver.com>"
|
RECIPE_MAINTAINER_pn-libpcre = "Yi Zhao <yi.zhao@windriver.com>"
|
||||||
RECIPE_MAINTAINER_pn-libpcre2 = "Armin Kuster <akuster808@gmail.com>"
|
RECIPE_MAINTAINER_pn-libpcre2 = "Armin Kuster <akuster808@gmail.com>"
|
||||||
RECIPE_MAINTAINER_pn-libpipeline = "Alexander Kanavin <alex.kanavin@gmail.com>"
|
RECIPE_MAINTAINER_pn-libpipeline = "Alexander Kanavin <alex.kanavin@gmail.com>"
|
||||||
RECIPE_MAINTAINER_pn-libpng = "Ross Burton <ross.burton@intel.com>"
|
RECIPE_MAINTAINER_pn-libpng = "Anuj Mittal <anuj.mittal@intel.com>"
|
||||||
RECIPE_MAINTAINER_pn-libproxy = "Ross Burton <ross.burton@intel.com>"
|
RECIPE_MAINTAINER_pn-libproxy = "Anuj Mittal <anuj.mittal@intel.com>"
|
||||||
RECIPE_MAINTAINER_pn-libpthread-stubs = "Alexander Kanavin <alex.kanavin@gmail.com>"
|
RECIPE_MAINTAINER_pn-libpthread-stubs = "Alexander Kanavin <alex.kanavin@gmail.com>"
|
||||||
RECIPE_MAINTAINER_pn-librepo = "Alexander Kanavin <alex.kanavin@gmail.com>"
|
RECIPE_MAINTAINER_pn-librepo = "Alexander Kanavin <alex.kanavin@gmail.com>"
|
||||||
RECIPE_MAINTAINER_pn-librsvg = "Ross Burton <ross.burton@intel.com>"
|
RECIPE_MAINTAINER_pn-librsvg = "Anuj Mittal <anuj.mittal@intel.com>"
|
||||||
RECIPE_MAINTAINER_pn-libsamplerate0 = "Tanu Kaskinen <tanuk@iki.fi>"
|
RECIPE_MAINTAINER_pn-libsamplerate0 = "Tanu Kaskinen <tanuk@iki.fi>"
|
||||||
RECIPE_MAINTAINER_pn-libsdl = "Yi Zhao <yi.zhao@windriver.com>"
|
RECIPE_MAINTAINER_pn-libsdl = "Yi Zhao <yi.zhao@windriver.com>"
|
||||||
RECIPE_MAINTAINER_pn-libsdl2 = "Yi Zhao <yi.zhao@windriver.com>"
|
RECIPE_MAINTAINER_pn-libsdl2 = "Yi Zhao <yi.zhao@windriver.com>"
|
||||||
RECIPE_MAINTAINER_pn-libsecret = "Alexander Kanavin <alex.kanavin@gmail.com>"
|
RECIPE_MAINTAINER_pn-libsecret = "Alexander Kanavin <alex.kanavin@gmail.com>"
|
||||||
RECIPE_MAINTAINER_pn-libsm = "Armin Kuster <akuster808@gmail.com>"
|
RECIPE_MAINTAINER_pn-libsm = "Armin Kuster <akuster808@gmail.com>"
|
||||||
RECIPE_MAINTAINER_pn-libsndfile1 = "Tanu Kaskinen <tanuk@iki.fi>"
|
RECIPE_MAINTAINER_pn-libsndfile1 = "Tanu Kaskinen <tanuk@iki.fi>"
|
||||||
RECIPE_MAINTAINER_pn-libsolv = "Ross Burton <ross.burton@intel.com>"
|
RECIPE_MAINTAINER_pn-libsolv = "Anuj Mittal <anuj.mittal@intel.com>"
|
||||||
RECIPE_MAINTAINER_pn-libsoup-2.4 = "Ross Burton <ross.burton@intel.com>"
|
RECIPE_MAINTAINER_pn-libsoup-2.4 = "Anuj Mittal <anuj.mittal@intel.com>"
|
||||||
RECIPE_MAINTAINER_pn-libtasn1 = "Ross Burton <ross.burton@intel.com>"
|
RECIPE_MAINTAINER_pn-libtasn1 = "Anuj Mittal <anuj.mittal@intel.com>"
|
||||||
RECIPE_MAINTAINER_pn-libtest-needs-perl = "Tim Orling <timothy.t.orling@linux.intel.com>"
|
RECIPE_MAINTAINER_pn-libtest-needs-perl = "Tim Orling <timothy.t.orling@linux.intel.com>"
|
||||||
RECIPE_MAINTAINER_pn-libtheora = "Alexander Kanavin <alex.kanavin@gmail.com>"
|
RECIPE_MAINTAINER_pn-libtheora = "Alexander Kanavin <alex.kanavin@gmail.com>"
|
||||||
RECIPE_MAINTAINER_pn-libtimedate-perl = "Tim Orling <timothy.t.orling@linux.intel.com>"
|
RECIPE_MAINTAINER_pn-libtimedate-perl = "Tim Orling <timothy.t.orling@linux.intel.com>"
|
||||||
RECIPE_MAINTAINER_pn-libtirpc = "Ross Burton <ross.burton@intel.com>"
|
RECIPE_MAINTAINER_pn-libtirpc = "Anuj Mittal <anuj.mittal@intel.com>"
|
||||||
RECIPE_MAINTAINER_pn-libtool = "Robert Yang <liezhi.yang@windriver.com>"
|
RECIPE_MAINTAINER_pn-libtool = "Robert Yang <liezhi.yang@windriver.com>"
|
||||||
RECIPE_MAINTAINER_pn-libtool-cross = "Robert Yang <liezhi.yang@windriver.com>"
|
RECIPE_MAINTAINER_pn-libtool-cross = "Robert Yang <liezhi.yang@windriver.com>"
|
||||||
RECIPE_MAINTAINER_pn-libtool-native = "Robert Yang <liezhi.yang@windriver.com>"
|
RECIPE_MAINTAINER_pn-libtool-native = "Robert Yang <liezhi.yang@windriver.com>"
|
||||||
RECIPE_MAINTAINER_pn-libunistring = "Ross Burton <ross.burton@intel.com>"
|
RECIPE_MAINTAINER_pn-libunistring = "Anuj Mittal <anuj.mittal@intel.com>"
|
||||||
RECIPE_MAINTAINER_pn-libunwind = "Bruce Ashfield <bruce.ashfield@windriver.com>"
|
RECIPE_MAINTAINER_pn-libunwind = "Bruce Ashfield <bruce.ashfield@windriver.com>"
|
||||||
RECIPE_MAINTAINER_pn-liburcu = "Alexander Kanavin <alex.kanavin@gmail.com>"
|
RECIPE_MAINTAINER_pn-liburcu = "Alexander Kanavin <alex.kanavin@gmail.com>"
|
||||||
RECIPE_MAINTAINER_pn-liburi-perl = "Tim Orling <timothy.t.orling@linux.intel.com>"
|
RECIPE_MAINTAINER_pn-liburi-perl = "Tim Orling <timothy.t.orling@linux.intel.com>"
|
||||||
RECIPE_MAINTAINER_pn-libusb1 = "Ross Burton <ross.burton@intel.com>"
|
RECIPE_MAINTAINER_pn-libusb1 = "Anuj Mittal <anuj.mittal@intel.com>"
|
||||||
RECIPE_MAINTAINER_pn-libva = "Anuj Mittal <anuj.mittal@intel.com>"
|
RECIPE_MAINTAINER_pn-libva = "Anuj Mittal <anuj.mittal@intel.com>"
|
||||||
RECIPE_MAINTAINER_pn-libva-utils = "Anuj Mittal <anuj.mittal@intel.com>"
|
RECIPE_MAINTAINER_pn-libva-utils = "Anuj Mittal <anuj.mittal@intel.com>"
|
||||||
RECIPE_MAINTAINER_pn-libvorbis = "Tanu Kaskinen <tanuk@iki.fi>"
|
RECIPE_MAINTAINER_pn-libvorbis = "Tanu Kaskinen <tanuk@iki.fi>"
|
||||||
@@ -420,7 +420,7 @@ RECIPE_MAINTAINER_pn-linux-yocto-rt = "Bruce Ashfield <bruce.ashfield@windriver.
|
|||||||
RECIPE_MAINTAINER_pn-linux-yocto-tiny = "Bruce Ashfield <bruce.ashfield@windriver.com>"
|
RECIPE_MAINTAINER_pn-linux-yocto-tiny = "Bruce Ashfield <bruce.ashfield@windriver.com>"
|
||||||
RECIPE_MAINTAINER_pn-llvm = "Khem Raj <raj.khem@gmail.com>"
|
RECIPE_MAINTAINER_pn-llvm = "Khem Raj <raj.khem@gmail.com>"
|
||||||
RECIPE_MAINTAINER_pn-logrotate = "Yi Zhao <yi.zhao@windriver.com>"
|
RECIPE_MAINTAINER_pn-logrotate = "Yi Zhao <yi.zhao@windriver.com>"
|
||||||
RECIPE_MAINTAINER_pn-lrzsz = "Ross Burton <ross.burton@intel.com>"
|
RECIPE_MAINTAINER_pn-lrzsz = "Anuj Mittal <anuj.mittal@intel.com>"
|
||||||
RECIPE_MAINTAINER_pn-lsb = "Hongxu Jia <hongxu.jia@windriver.com>"
|
RECIPE_MAINTAINER_pn-lsb = "Hongxu Jia <hongxu.jia@windriver.com>"
|
||||||
RECIPE_MAINTAINER_pn-lsbinitscripts = "Ross Burton <ross.burton@intel.com>"
|
RECIPE_MAINTAINER_pn-lsbinitscripts = "Ross Burton <ross.burton@intel.com>"
|
||||||
RECIPE_MAINTAINER_pn-lsbtest = "Yi Zhao <yi.zhao@windriver.com>"
|
RECIPE_MAINTAINER_pn-lsbtest = "Yi Zhao <yi.zhao@windriver.com>"
|
||||||
@@ -465,11 +465,11 @@ RECIPE_MAINTAINER_pn-meta-toolchain = "Richard Purdie <richard.purdie@linuxfound
|
|||||||
RECIPE_MAINTAINER_pn-meta-world-pkgdata = "Richard Purdie <richard.purdie@linuxfoundation.org>"
|
RECIPE_MAINTAINER_pn-meta-world-pkgdata = "Richard Purdie <richard.purdie@linuxfoundation.org>"
|
||||||
RECIPE_MAINTAINER_pn-mingetty = "Yi Zhao <yi.zhao@windriver.com>"
|
RECIPE_MAINTAINER_pn-mingetty = "Yi Zhao <yi.zhao@windriver.com>"
|
||||||
RECIPE_MAINTAINER_pn-mini-x-session = "Armin Kuster <akuster808@gmail.com>"
|
RECIPE_MAINTAINER_pn-mini-x-session = "Armin Kuster <akuster808@gmail.com>"
|
||||||
RECIPE_MAINTAINER_pn-minicom = "Ross Burton <ross.burton@intel.com>"
|
RECIPE_MAINTAINER_pn-minicom = "Anuj Mittal <anuj.mittal@intel.com>"
|
||||||
RECIPE_MAINTAINER_pn-mkfontdir = "Armin Kuster <akuster808@gmail.com>"
|
RECIPE_MAINTAINER_pn-mkfontdir = "Armin Kuster <akuster808@gmail.com>"
|
||||||
RECIPE_MAINTAINER_pn-mkfontscale = "Armin Kuster <akuster808@gmail.com>"
|
RECIPE_MAINTAINER_pn-mkfontscale = "Armin Kuster <akuster808@gmail.com>"
|
||||||
RECIPE_MAINTAINER_pn-mklibs-native = "Robert Yang <liezhi.yang@windriver.com>"
|
RECIPE_MAINTAINER_pn-mklibs-native = "Robert Yang <liezhi.yang@windriver.com>"
|
||||||
RECIPE_MAINTAINER_pn-mmc-utils = "Ross Burton <ross.burton@intel.com>"
|
RECIPE_MAINTAINER_pn-mmc-utils = "Anuj Mittal <anuj.mittal@intel.com>"
|
||||||
RECIPE_MAINTAINER_pn-mobile-broadband-provider-info = "Alexander Kanavin <alex.kanavin@gmail.com>"
|
RECIPE_MAINTAINER_pn-mobile-broadband-provider-info = "Alexander Kanavin <alex.kanavin@gmail.com>"
|
||||||
RECIPE_MAINTAINER_pn-modutils-initscripts = "Yi Zhao <yi.zhao@windriver.com>"
|
RECIPE_MAINTAINER_pn-modutils-initscripts = "Yi Zhao <yi.zhao@windriver.com>"
|
||||||
RECIPE_MAINTAINER_pn-mpeg2dec = "Alexander Kanavin <alex.kanavin@gmail.com>"
|
RECIPE_MAINTAINER_pn-mpeg2dec = "Alexander Kanavin <alex.kanavin@gmail.com>"
|
||||||
@@ -477,11 +477,11 @@ RECIPE_MAINTAINER_pn-mpfr = "Khem Raj <raj.khem@gmail.com>"
|
|||||||
RECIPE_MAINTAINER_pn-mpg123 = "Alexander Kanavin <alex.kanavin@gmail.com>"
|
RECIPE_MAINTAINER_pn-mpg123 = "Alexander Kanavin <alex.kanavin@gmail.com>"
|
||||||
RECIPE_MAINTAINER_pn-msmtp = "Alexander Kanavin <alex.kanavin@gmail.com>"
|
RECIPE_MAINTAINER_pn-msmtp = "Alexander Kanavin <alex.kanavin@gmail.com>"
|
||||||
RECIPE_MAINTAINER_pn-mtd-utils = "Denys Dmytriyenko <denys@ti.com>"
|
RECIPE_MAINTAINER_pn-mtd-utils = "Denys Dmytriyenko <denys@ti.com>"
|
||||||
RECIPE_MAINTAINER_pn-mtdev = "Ross Burton <ross.burton@intel.com>"
|
RECIPE_MAINTAINER_pn-mtdev = "Anuj Mittal <anuj.mittal@intel.com>"
|
||||||
RECIPE_MAINTAINER_pn-mtools = "Ross Burton <ross.burton@intel.com>"
|
RECIPE_MAINTAINER_pn-mtools = "Anuj Mittal <anuj.mittal@intel.com>"
|
||||||
RECIPE_MAINTAINER_pn-musl = "Khem Raj <raj.khem@gmail.com>"
|
RECIPE_MAINTAINER_pn-musl = "Khem Raj <raj.khem@gmail.com>"
|
||||||
RECIPE_MAINTAINER_pn-musl-utils = "Khem Raj <raj.khem@gmail.com>"
|
RECIPE_MAINTAINER_pn-musl-utils = "Khem Raj <raj.khem@gmail.com>"
|
||||||
RECIPE_MAINTAINER_pn-mx-1.0 = "Ross Burton <ross.burton@intel.com>"
|
RECIPE_MAINTAINER_pn-mx-1.0 = "Anuj Mittal <anuj.mittal@intel.com>"
|
||||||
RECIPE_MAINTAINER_pn-nasm = "Richard Purdie <richard.purdie@linuxfoundation.org>"
|
RECIPE_MAINTAINER_pn-nasm = "Richard Purdie <richard.purdie@linuxfoundation.org>"
|
||||||
RECIPE_MAINTAINER_pn-nativesdk-buildtools-perl-dummy = "Richard Purdie <richard.purdie@linuxfoundation.org>"
|
RECIPE_MAINTAINER_pn-nativesdk-buildtools-perl-dummy = "Richard Purdie <richard.purdie@linuxfoundation.org>"
|
||||||
RECIPE_MAINTAINER_pn-nativesdk-libtool = "Richard Purdie <richard.purdie@linuxfoundation.org>"
|
RECIPE_MAINTAINER_pn-nativesdk-libtool = "Richard Purdie <richard.purdie@linuxfoundation.org>"
|
||||||
@@ -489,7 +489,7 @@ RECIPE_MAINTAINER_pn-nativesdk-packagegroup-sdk-host = "Ross Burton <ross.burton
|
|||||||
RECIPE_MAINTAINER_pn-nativesdk-qemu-helper = "Richard Purdie <richard.purdie@linuxfoundation.org>"
|
RECIPE_MAINTAINER_pn-nativesdk-qemu-helper = "Richard Purdie <richard.purdie@linuxfoundation.org>"
|
||||||
RECIPE_MAINTAINER_pn-newlib = "Alejandro Hernandez <aehs29@gmail.com>"
|
RECIPE_MAINTAINER_pn-newlib = "Alejandro Hernandez <aehs29@gmail.com>"
|
||||||
RECIPE_MAINTAINER_pn-ncurses = "Hongxu Jia <hongxu.jia@windriver.com>"
|
RECIPE_MAINTAINER_pn-ncurses = "Hongxu Jia <hongxu.jia@windriver.com>"
|
||||||
RECIPE_MAINTAINER_pn-neard = "Ross Burton <ross.burton@intel.com>"
|
RECIPE_MAINTAINER_pn-neard = "Anuj Mittal <anuj.mittal@intel.com>"
|
||||||
RECIPE_MAINTAINER_pn-net-tools = "Armin Kuster <akuster808@gmail.com>"
|
RECIPE_MAINTAINER_pn-net-tools = "Armin Kuster <akuster808@gmail.com>"
|
||||||
RECIPE_MAINTAINER_pn-netbase = "Armin Kuster <akuster808@gmail.com>"
|
RECIPE_MAINTAINER_pn-netbase = "Armin Kuster <akuster808@gmail.com>"
|
||||||
RECIPE_MAINTAINER_pn-nettle = "Armin Kuster <akuster808@gmail.com>"
|
RECIPE_MAINTAINER_pn-nettle = "Armin Kuster <akuster808@gmail.com>"
|
||||||
@@ -499,7 +499,7 @@ RECIPE_MAINTAINER_pn-ninja = "Khem Raj <raj.khem@gmail.com>"
|
|||||||
RECIPE_MAINTAINER_pn-npth = "Alexander Kanavin <alex.kanavin@gmail.com>"
|
RECIPE_MAINTAINER_pn-npth = "Alexander Kanavin <alex.kanavin@gmail.com>"
|
||||||
RECIPE_MAINTAINER_pn-nspr = "Armin Kuster <akuster808@gmail.com>"
|
RECIPE_MAINTAINER_pn-nspr = "Armin Kuster <akuster808@gmail.com>"
|
||||||
RECIPE_MAINTAINER_pn-nss = "Armin Kuster <akuster808@gmail.com>"
|
RECIPE_MAINTAINER_pn-nss = "Armin Kuster <akuster808@gmail.com>"
|
||||||
RECIPE_MAINTAINER_pn-nss-myhostname = "Ross Burton <ross.burton@intel.com>"
|
RECIPE_MAINTAINER_pn-nss-myhostname = "Anuj Mittal <anuj.mittal@intel.com>"
|
||||||
RECIPE_MAINTAINER_pn-ofono = "Ross Burton <ross.burton@intel.com>"
|
RECIPE_MAINTAINER_pn-ofono = "Ross Burton <ross.burton@intel.com>"
|
||||||
RECIPE_MAINTAINER_pn-openssh = "Armin Kuster <akuster808@gmail.com>"
|
RECIPE_MAINTAINER_pn-openssh = "Armin Kuster <akuster808@gmail.com>"
|
||||||
RECIPE_MAINTAINER_pn-openssl = "Alexander Kanavin <alex.kanavin@gmail.com>"
|
RECIPE_MAINTAINER_pn-openssl = "Alexander Kanavin <alex.kanavin@gmail.com>"
|
||||||
@@ -508,7 +508,7 @@ RECIPE_MAINTAINER_pn-opkg = "Alejandro del Castillo <alejandro.delcastillo@ni.co
|
|||||||
RECIPE_MAINTAINER_pn-opkg-arch-config = "Alejandro del Castillo <alejandro.delcastillo@ni.com>"
|
RECIPE_MAINTAINER_pn-opkg-arch-config = "Alejandro del Castillo <alejandro.delcastillo@ni.com>"
|
||||||
RECIPE_MAINTAINER_pn-opkg-keyrings = "Alejandro del Castillo <alejandro.delcastillo@ni.com>"
|
RECIPE_MAINTAINER_pn-opkg-keyrings = "Alejandro del Castillo <alejandro.delcastillo@ni.com>"
|
||||||
RECIPE_MAINTAINER_pn-opkg-utils = "Alejandro del Castillo <alejandro.delcastillo@ni.com>"
|
RECIPE_MAINTAINER_pn-opkg-utils = "Alejandro del Castillo <alejandro.delcastillo@ni.com>"
|
||||||
RECIPE_MAINTAINER_pn-orc = "Ross Burton <ross.burton@intel.com>"
|
RECIPE_MAINTAINER_pn-orc = "Anuj Mittal <anuj.mittal@intel.com>"
|
||||||
RECIPE_MAINTAINER_pn-os-release = "Ross Burton <ross.burton@intel.com>"
|
RECIPE_MAINTAINER_pn-os-release = "Ross Burton <ross.burton@intel.com>"
|
||||||
RECIPE_MAINTAINER_pn-ovmf = "Ricardo Neri <ricardo.neri-calderon@linux.intel.com>"
|
RECIPE_MAINTAINER_pn-ovmf = "Ricardo Neri <ricardo.neri-calderon@linux.intel.com>"
|
||||||
RECIPE_MAINTAINER_pn-ovmf-shell-image = "Ricardo Neri <ricardo.neri-calderon@linux.intel.com>"
|
RECIPE_MAINTAINER_pn-ovmf-shell-image = "Ricardo Neri <ricardo.neri-calderon@linux.intel.com>"
|
||||||
@@ -527,12 +527,12 @@ RECIPE_MAINTAINER_pn-perl-native = "Ross Burton <ross.burton@intel.com>"
|
|||||||
RECIPE_MAINTAINER_pn-piglit = "Ross Burton <ross.burton@intel.com>"
|
RECIPE_MAINTAINER_pn-piglit = "Ross Burton <ross.burton@intel.com>"
|
||||||
RECIPE_MAINTAINER_pn-pigz = "Hongxu Jia <hongxu.jia@windriver.com>"
|
RECIPE_MAINTAINER_pn-pigz = "Hongxu Jia <hongxu.jia@windriver.com>"
|
||||||
RECIPE_MAINTAINER_pn-pinentry = "Armin Kuster <akuster808@gmail.com>"
|
RECIPE_MAINTAINER_pn-pinentry = "Armin Kuster <akuster808@gmail.com>"
|
||||||
RECIPE_MAINTAINER_pn-pixman = "Ross Burton <ross.burton@intel.com>"
|
RECIPE_MAINTAINER_pn-pixman = "Anuj Mittal <anuj.mittal@intel.com>"
|
||||||
RECIPE_MAINTAINER_pn-pkgconf = "Ross Burton <ross.burton@intel.com>"
|
RECIPE_MAINTAINER_pn-pkgconf = "Ross Burton <ross.burton@intel.com>"
|
||||||
RECIPE_MAINTAINER_pn-pkgconfig = "Ross Burton <ross.burton@intel.com>"
|
RECIPE_MAINTAINER_pn-pkgconfig = "Ross Burton <ross.burton@intel.com>"
|
||||||
RECIPE_MAINTAINER_pn-pm-utils = "Ross Burton <ross.burton@intel.com>"
|
RECIPE_MAINTAINER_pn-pm-utils = "Ross Burton <ross.burton@intel.com>"
|
||||||
RECIPE_MAINTAINER_pn-pointercal-xinput = "Alexander Kanavin <alex.kanavin@gmail.com>"
|
RECIPE_MAINTAINER_pn-pointercal-xinput = "Alexander Kanavin <alex.kanavin@gmail.com>"
|
||||||
RECIPE_MAINTAINER_pn-pong-clock = "Ross Burton <ross.burton@intel.com>"
|
RECIPE_MAINTAINER_pn-pong-clock = "Anuj Mittal <anuj.mittal@intel.com>"
|
||||||
RECIPE_MAINTAINER_pn-popt = "Yi Zhao <yi.zhao@windriver.com>"
|
RECIPE_MAINTAINER_pn-popt = "Yi Zhao <yi.zhao@windriver.com>"
|
||||||
RECIPE_MAINTAINER_pn-powertop = "Alexander Kanavin <alex.kanavin@gmail.com>"
|
RECIPE_MAINTAINER_pn-powertop = "Alexander Kanavin <alex.kanavin@gmail.com>"
|
||||||
RECIPE_MAINTAINER_pn-ppp = "Hongxu Jia <hongxu.jia@windriver.com>"
|
RECIPE_MAINTAINER_pn-ppp = "Hongxu Jia <hongxu.jia@windriver.com>"
|
||||||
@@ -545,7 +545,7 @@ RECIPE_MAINTAINER_pn-psplash = "Yi Zhao <yi.zhao@windriver.com>"
|
|||||||
RECIPE_MAINTAINER_pn-ptest-runner = "Ross Burton <ross.burton@intel.com>"
|
RECIPE_MAINTAINER_pn-ptest-runner = "Ross Burton <ross.burton@intel.com>"
|
||||||
RECIPE_MAINTAINER_pn-pulseaudio = "Tanu Kaskinen <tanuk@iki.fi>"
|
RECIPE_MAINTAINER_pn-pulseaudio = "Tanu Kaskinen <tanuk@iki.fi>"
|
||||||
RECIPE_MAINTAINER_pn-pulseaudio-client-conf-sato = "Tanu Kaskinen <tanuk@iki.fi>"
|
RECIPE_MAINTAINER_pn-pulseaudio-client-conf-sato = "Tanu Kaskinen <tanuk@iki.fi>"
|
||||||
RECIPE_MAINTAINER_pn-puzzles = "Ross Burton <ross.burton@intel.com>"
|
RECIPE_MAINTAINER_pn-puzzles = "Anuj Mittal <anuj.mittal@intel.com>"
|
||||||
RECIPE_MAINTAINER_pn-python = "Derek Straka <derek@asterius.io>"
|
RECIPE_MAINTAINER_pn-python = "Derek Straka <derek@asterius.io>"
|
||||||
RECIPE_MAINTAINER_pn-python-native = "Derek Straka <derek@asterius.io>"
|
RECIPE_MAINTAINER_pn-python-native = "Derek Straka <derek@asterius.io>"
|
||||||
RECIPE_MAINTAINER_pn-python-nose = "Derek Straka <derek@asterius.io>"
|
RECIPE_MAINTAINER_pn-python-nose = "Derek Straka <derek@asterius.io>"
|
||||||
@@ -580,13 +580,13 @@ RECIPE_MAINTAINER_pn-qemu-helper-native = "Richard Purdie <richard.purdie@linuxf
|
|||||||
RECIPE_MAINTAINER_pn-qemuwrapper-cross = "Richard Purdie <richard.purdie@linuxfoundation.org>"
|
RECIPE_MAINTAINER_pn-qemuwrapper-cross = "Richard Purdie <richard.purdie@linuxfoundation.org>"
|
||||||
RECIPE_MAINTAINER_pn-quilt = "Robert Yang <liezhi.yang@windriver.com>"
|
RECIPE_MAINTAINER_pn-quilt = "Robert Yang <liezhi.yang@windriver.com>"
|
||||||
RECIPE_MAINTAINER_pn-quilt-native = "Robert Yang <liezhi.yang@windriver.com>"
|
RECIPE_MAINTAINER_pn-quilt-native = "Robert Yang <liezhi.yang@windriver.com>"
|
||||||
RECIPE_MAINTAINER_pn-quota = "Ross Burton <ross.burton@intel.com>"
|
RECIPE_MAINTAINER_pn-quota = "Anuj Mittal <anuj.mittal@intel.com>"
|
||||||
RECIPE_MAINTAINER_pn-re2c = "Khem Raj <raj.khem@gmail.com>"
|
RECIPE_MAINTAINER_pn-re2c = "Khem Raj <raj.khem@gmail.com>"
|
||||||
RECIPE_MAINTAINER_pn-readline = "Hongxu Jia <hongxu.jia@windriver.com>"
|
RECIPE_MAINTAINER_pn-readline = "Hongxu Jia <hongxu.jia@windriver.com>"
|
||||||
RECIPE_MAINTAINER_pn-resolvconf = "Chen Qi <Qi.Chen@windriver.com>"
|
RECIPE_MAINTAINER_pn-resolvconf = "Chen Qi <Qi.Chen@windriver.com>"
|
||||||
RECIPE_MAINTAINER_pn-rgb = "Armin Kuster <akuster808@gmail.com>"
|
RECIPE_MAINTAINER_pn-rgb = "Armin Kuster <akuster808@gmail.com>"
|
||||||
RECIPE_MAINTAINER_pn-rpcbind = "Hongxu Jia <hongxu.jia@windriver.com>"
|
RECIPE_MAINTAINER_pn-rpcbind = "Hongxu Jia <hongxu.jia@windriver.com>"
|
||||||
RECIPE_MAINTAINER_pn-rng-tools = "Ross Burton <ross.burton@intel.com>"
|
RECIPE_MAINTAINER_pn-rng-tools = "Anuj Mittal <anuj.mittal@intel.com>"
|
||||||
RECIPE_MAINTAINER_pn-rpcsvc-proto = "Khem Raj <raj.khem@gmail.com>"
|
RECIPE_MAINTAINER_pn-rpcsvc-proto = "Khem Raj <raj.khem@gmail.com>"
|
||||||
RECIPE_MAINTAINER_pn-rpm = "Mark Hatle <mark.hatle@windriver.com>"
|
RECIPE_MAINTAINER_pn-rpm = "Mark Hatle <mark.hatle@windriver.com>"
|
||||||
RECIPE_MAINTAINER_pn-rsync = "Yi Zhao <yi.zhao@windriver.com>"
|
RECIPE_MAINTAINER_pn-rsync = "Yi Zhao <yi.zhao@windriver.com>"
|
||||||
@@ -596,15 +596,15 @@ RECIPE_MAINTAINER_pn-run-postinsts = "Ross Burton <ross.burton@intel.com>"
|
|||||||
RECIPE_MAINTAINER_pn-rxvt-unicode = "Armin Kuster <akuster808@gmail.com>"
|
RECIPE_MAINTAINER_pn-rxvt-unicode = "Armin Kuster <akuster808@gmail.com>"
|
||||||
RECIPE_MAINTAINER_pn-sato-screenshot = "Ross Burton <ross.burton@intel.com>"
|
RECIPE_MAINTAINER_pn-sato-screenshot = "Ross Burton <ross.burton@intel.com>"
|
||||||
RECIPE_MAINTAINER_pn-sbc = "Tanu Kaskinen <tanuk@iki.fi>"
|
RECIPE_MAINTAINER_pn-sbc = "Tanu Kaskinen <tanuk@iki.fi>"
|
||||||
RECIPE_MAINTAINER_pn-screen = "Ross Burton <ross.burton@intel.com>"
|
RECIPE_MAINTAINER_pn-screen = "Anuj Mittal <anuj.mittal@intel.com>"
|
||||||
RECIPE_MAINTAINER_pn-sed = "Chen Qi <Qi.Chen@windriver.com>"
|
RECIPE_MAINTAINER_pn-sed = "Chen Qi <Qi.Chen@windriver.com>"
|
||||||
RECIPE_MAINTAINER_pn-serf = "Ross Burton <ross.burton@intel.com>"
|
RECIPE_MAINTAINER_pn-serf = "Anuj Mittal <anuj.mittal@intel.com>"
|
||||||
RECIPE_MAINTAINER_pn-setserial = "Yi Zhao <yi.zhao@windriver.com>"
|
RECIPE_MAINTAINER_pn-setserial = "Yi Zhao <yi.zhao@windriver.com>"
|
||||||
RECIPE_MAINTAINER_pn-settings-daemon = "Ross Burton <ross.burton@intel.com>"
|
RECIPE_MAINTAINER_pn-settings-daemon = "Anuj Mittal <anuj.mittal@intel.com>"
|
||||||
RECIPE_MAINTAINER_pn-shadow = "Chen Qi <Qi.Chen@windriver.com>"
|
RECIPE_MAINTAINER_pn-shadow = "Chen Qi <Qi.Chen@windriver.com>"
|
||||||
RECIPE_MAINTAINER_pn-shadow-securetty = "Chen Qi <Qi.Chen@windriver.com>"
|
RECIPE_MAINTAINER_pn-shadow-securetty = "Chen Qi <Qi.Chen@windriver.com>"
|
||||||
RECIPE_MAINTAINER_pn-shadow-sysroot = "Chen Qi <Qi.Chen@windriver.com>"
|
RECIPE_MAINTAINER_pn-shadow-sysroot = "Chen Qi <Qi.Chen@windriver.com>"
|
||||||
RECIPE_MAINTAINER_pn-shared-mime-info = "Ross Burton <ross.burton@intel.com>"
|
RECIPE_MAINTAINER_pn-shared-mime-info = "Anuj Mittal <anuj.mittal@intel.com>"
|
||||||
RECIPE_MAINTAINER_pn-shutdown-desktop = "Alexander Kanavin <alex.kanavin@gmail.com>"
|
RECIPE_MAINTAINER_pn-shutdown-desktop = "Alexander Kanavin <alex.kanavin@gmail.com>"
|
||||||
RECIPE_MAINTAINER_pn-signing-keys = "Richard Purdie <richard.purdie@linuxfoundation.org>"
|
RECIPE_MAINTAINER_pn-signing-keys = "Richard Purdie <richard.purdie@linuxfoundation.org>"
|
||||||
RECIPE_MAINTAINER_pn-slang = "Yi Zhao <yi.zhao@windriver.com>"
|
RECIPE_MAINTAINER_pn-slang = "Yi Zhao <yi.zhao@windriver.com>"
|
||||||
@@ -612,14 +612,14 @@ RECIPE_MAINTAINER_pn-socat = "Hongxu Jia <hongxu.jia@windriver.com>"
|
|||||||
RECIPE_MAINTAINER_pn-source-highlight = "Alexander Kanavin <alex.kanavin@gmail.com>"
|
RECIPE_MAINTAINER_pn-source-highlight = "Alexander Kanavin <alex.kanavin@gmail.com>"
|
||||||
RECIPE_MAINTAINER_pn-speex = "Tanu Kaskinen <tanuk@iki.fi>"
|
RECIPE_MAINTAINER_pn-speex = "Tanu Kaskinen <tanuk@iki.fi>"
|
||||||
RECIPE_MAINTAINER_pn-speexdsp = "Tanu Kaskinen <tanuk@iki.fi>"
|
RECIPE_MAINTAINER_pn-speexdsp = "Tanu Kaskinen <tanuk@iki.fi>"
|
||||||
RECIPE_MAINTAINER_pn-sqlite3 = "Ross Burton <ross.burton@intel.com>"
|
RECIPE_MAINTAINER_pn-sqlite3 = "Anuj Mittal <anuj.mittal@intel.com>"
|
||||||
RECIPE_MAINTAINER_pn-squashfs-tools = "Robert Yang <liezhi.yang@windriver.com>"
|
RECIPE_MAINTAINER_pn-squashfs-tools = "Robert Yang <liezhi.yang@windriver.com>"
|
||||||
RECIPE_MAINTAINER_pn-startup-notification = "Alexander Kanavin <alex.kanavin@gmail.com>"
|
RECIPE_MAINTAINER_pn-startup-notification = "Alexander Kanavin <alex.kanavin@gmail.com>"
|
||||||
RECIPE_MAINTAINER_pn-strace = "Robert Yang <liezhi.yang@windriver.com>"
|
RECIPE_MAINTAINER_pn-strace = "Robert Yang <liezhi.yang@windriver.com>"
|
||||||
RECIPE_MAINTAINER_pn-stress = "Ross Burton <ross.burton@intel.com>"
|
RECIPE_MAINTAINER_pn-stress = "Anuj Mittal <anuj.mittal@intel.com>"
|
||||||
RECIPE_MAINTAINER_pn-subversion = "Richard Purdie <richard.purdie@linuxfoundation.org>"
|
RECIPE_MAINTAINER_pn-subversion = "Richard Purdie <richard.purdie@linuxfoundation.org>"
|
||||||
RECIPE_MAINTAINER_pn-sudo = "Chen Qi <Qi.Chen@windriver.com>"
|
RECIPE_MAINTAINER_pn-sudo = "Chen Qi <Qi.Chen@windriver.com>"
|
||||||
RECIPE_MAINTAINER_pn-swig = "Ross Burton <ross.burton@intel.com>"
|
RECIPE_MAINTAINER_pn-swig = "Anuj Mittal <anuj.mittal@intel.com>"
|
||||||
RECIPE_MAINTAINER_pn-sysfsutils = "Chen Qi <Qi.Chen@windriver.com>"
|
RECIPE_MAINTAINER_pn-sysfsutils = "Chen Qi <Qi.Chen@windriver.com>"
|
||||||
RECIPE_MAINTAINER_pn-sysklogd = "Chen Qi <Qi.Chen@windriver.com>"
|
RECIPE_MAINTAINER_pn-sysklogd = "Chen Qi <Qi.Chen@windriver.com>"
|
||||||
RECIPE_MAINTAINER_pn-syslinux = "Alexander Kanavin <alex.kanavin@gmail.com>"
|
RECIPE_MAINTAINER_pn-syslinux = "Alexander Kanavin <alex.kanavin@gmail.com>"
|
||||||
@@ -637,18 +637,18 @@ RECIPE_MAINTAINER_pn-systemtap = "Victor Kamensky <kamensky@cisco.com>"
|
|||||||
RECIPE_MAINTAINER_pn-systemtap-uprobes = "Victor Kamensky <kamensky@cisco.com>"
|
RECIPE_MAINTAINER_pn-systemtap-uprobes = "Victor Kamensky <kamensky@cisco.com>"
|
||||||
RECIPE_MAINTAINER_pn-sysvinit = "Ross Burton <ross.burton@intel.com>"
|
RECIPE_MAINTAINER_pn-sysvinit = "Ross Burton <ross.burton@intel.com>"
|
||||||
RECIPE_MAINTAINER_pn-sysvinit-inittab = "Ross Burton <ross.burton@intel.com>"
|
RECIPE_MAINTAINER_pn-sysvinit-inittab = "Ross Burton <ross.burton@intel.com>"
|
||||||
RECIPE_MAINTAINER_pn-taglib = "Ross Burton <ross.burton@intel.com>"
|
RECIPE_MAINTAINER_pn-taglib = "Anuj Mittal <anuj.mittal@intel.com>"
|
||||||
RECIPE_MAINTAINER_pn-tar = "Chen Qi <Qi.Chen@windriver.com>"
|
RECIPE_MAINTAINER_pn-tar = "Chen Qi <Qi.Chen@windriver.com>"
|
||||||
RECIPE_MAINTAINER_pn-tcf-agent = "Ross Burton <ross.burton@intel.com>"
|
RECIPE_MAINTAINER_pn-tcf-agent = "Anuj Mittal <anuj.mittal@intel.com>"
|
||||||
RECIPE_MAINTAINER_pn-tcl = "Yi Zhao <yi.zhao@windriver.com>"
|
RECIPE_MAINTAINER_pn-tcl = "Yi Zhao <yi.zhao@windriver.com>"
|
||||||
RECIPE_MAINTAINER_pn-tcp-wrappers = "Robert Yang <liezhi.yang@windriver.com>"
|
RECIPE_MAINTAINER_pn-tcp-wrappers = "Robert Yang <liezhi.yang@windriver.com>"
|
||||||
RECIPE_MAINTAINER_pn-testexport-tarball = "Richard Purdie <richard.purdie@linuxfoundation.org>"
|
RECIPE_MAINTAINER_pn-testexport-tarball = "Richard Purdie <richard.purdie@linuxfoundation.org>"
|
||||||
RECIPE_MAINTAINER_pn-texi2html = "Robert Yang <liezhi.yang@windriver.com>"
|
RECIPE_MAINTAINER_pn-texi2html = "Robert Yang <liezhi.yang@windriver.com>"
|
||||||
RECIPE_MAINTAINER_pn-texinfo = "Ross Burton <ross.burton@intel.com>"
|
RECIPE_MAINTAINER_pn-texinfo = "Anuj Mittal <anuj.mittal@intel.com>"
|
||||||
RECIPE_MAINTAINER_pn-texinfo-dummy-native = "Ross Burton <ross.burton@intel.com>"
|
RECIPE_MAINTAINER_pn-texinfo-dummy-native = "Anuj Mittal <anuj.mittal@intel.com>"
|
||||||
RECIPE_MAINTAINER_pn-tiff = "Alexander Kanavin <alex.kanavin@gmail.com>"
|
RECIPE_MAINTAINER_pn-tiff = "Alexander Kanavin <alex.kanavin@gmail.com>"
|
||||||
RECIPE_MAINTAINER_pn-time = "Robert Yang <liezhi.yang@windriver.com>"
|
RECIPE_MAINTAINER_pn-time = "Robert Yang <liezhi.yang@windriver.com>"
|
||||||
RECIPE_MAINTAINER_pn-ttf-bitstream-vera = "Ross Burton <ross.burton@intel.com>"
|
RECIPE_MAINTAINER_pn-ttf-bitstream-vera = "Anuj Mittal <anuj.mittal@intel.com>"
|
||||||
RECIPE_MAINTAINER_pn-tzcode-native = "Armin Kuster <akuster808@gmail.com>"
|
RECIPE_MAINTAINER_pn-tzcode-native = "Armin Kuster <akuster808@gmail.com>"
|
||||||
RECIPE_MAINTAINER_pn-tzdata = "Armin Kuster <akuster808@gmail.com>"
|
RECIPE_MAINTAINER_pn-tzdata = "Armin Kuster <akuster808@gmail.com>"
|
||||||
RECIPE_MAINTAINER_pn-u-boot = "Marek Vasut <marek.vasut@gmail.com>"
|
RECIPE_MAINTAINER_pn-u-boot = "Marek Vasut <marek.vasut@gmail.com>"
|
||||||
@@ -668,7 +668,7 @@ RECIPE_MAINTAINER_pn-v86d = "Alexander Kanavin <alex.kanavin@gmail.com>"
|
|||||||
RECIPE_MAINTAINER_pn-vala = "Alexander Kanavin <alex.kanavin@gmail.com>"
|
RECIPE_MAINTAINER_pn-vala = "Alexander Kanavin <alex.kanavin@gmail.com>"
|
||||||
RECIPE_MAINTAINER_pn-valgrind = "Alexander Kanavin <alex.kanavin@gmail.com>"
|
RECIPE_MAINTAINER_pn-valgrind = "Alexander Kanavin <alex.kanavin@gmail.com>"
|
||||||
RECIPE_MAINTAINER_pn-volatile-binds = "Chen Qi <Qi.Chen@windriver.com>"
|
RECIPE_MAINTAINER_pn-volatile-binds = "Chen Qi <Qi.Chen@windriver.com>"
|
||||||
RECIPE_MAINTAINER_pn-vte = "Ross Burton <ross.burton@intel.com>"
|
RECIPE_MAINTAINER_pn-vte = "Anuj Mittal <anuj.mittal@intel.com>"
|
||||||
RECIPE_MAINTAINER_pn-vulkan = "Ross Burton <ross.burton@intel.com>"
|
RECIPE_MAINTAINER_pn-vulkan = "Ross Burton <ross.burton@intel.com>"
|
||||||
RECIPE_MAINTAINER_pn-vulkan-demos = "Ross Burton <ross.burton@intel.com>"
|
RECIPE_MAINTAINER_pn-vulkan-demos = "Ross Burton <ross.burton@intel.com>"
|
||||||
RECIPE_MAINTAINER_pn-waffle = "Ross Burton <ross.burton@intel.com>"
|
RECIPE_MAINTAINER_pn-waffle = "Ross Burton <ross.burton@intel.com>"
|
||||||
@@ -681,8 +681,8 @@ RECIPE_MAINTAINER_pn-weston = "Denys Dmytriyenko <denys@ti.com>"
|
|||||||
RECIPE_MAINTAINER_pn-weston-conf = "Denys Dmytriyenko <denys@ti.com>"
|
RECIPE_MAINTAINER_pn-weston-conf = "Denys Dmytriyenko <denys@ti.com>"
|
||||||
RECIPE_MAINTAINER_pn-weston-init = "Denys Dmytriyenko <denys@ti.com>"
|
RECIPE_MAINTAINER_pn-weston-init = "Denys Dmytriyenko <denys@ti.com>"
|
||||||
RECIPE_MAINTAINER_pn-wget = "Yi Zhao <yi.zhao@windriver.com>"
|
RECIPE_MAINTAINER_pn-wget = "Yi Zhao <yi.zhao@windriver.com>"
|
||||||
RECIPE_MAINTAINER_pn-which = "Ross Burton <ross.burton@intel.com>"
|
RECIPE_MAINTAINER_pn-which = "Anuj Mittal <anuj.mittal@intel.com>"
|
||||||
RECIPE_MAINTAINER_pn-wic-tools = "Ross Burton <ross.burton@intel.com>"
|
RECIPE_MAINTAINER_pn-wic-tools = "Anuj Mittal <anuj.mittal@intel.com>"
|
||||||
RECIPE_MAINTAINER_pn-wpa-supplicant = "Changhyeok Bae <changhyeok.bae@lge.com>"
|
RECIPE_MAINTAINER_pn-wpa-supplicant = "Changhyeok Bae <changhyeok.bae@lge.com>"
|
||||||
RECIPE_MAINTAINER_pn-x11perf = "Armin Kuster <akuster808@gmail.com>"
|
RECIPE_MAINTAINER_pn-x11perf = "Armin Kuster <akuster808@gmail.com>"
|
||||||
RECIPE_MAINTAINER_pn-x264 = "Anuj Mittal <anuj.mittal@intel.com>"
|
RECIPE_MAINTAINER_pn-x264 = "Anuj Mittal <anuj.mittal@intel.com>"
|
||||||
@@ -694,7 +694,7 @@ RECIPE_MAINTAINER_pn-xcb-util-keysyms = "Armin Kuster <akuster808@gmail.com>"
|
|||||||
RECIPE_MAINTAINER_pn-xcb-util-renderutil = "Armin Kuster <akuster808@gmail.com>"
|
RECIPE_MAINTAINER_pn-xcb-util-renderutil = "Armin Kuster <akuster808@gmail.com>"
|
||||||
RECIPE_MAINTAINER_pn-xcb-util-wm = "Armin Kuster <akuster808@gmail.com>"
|
RECIPE_MAINTAINER_pn-xcb-util-wm = "Armin Kuster <akuster808@gmail.com>"
|
||||||
RECIPE_MAINTAINER_pn-xcursor-transparent-theme = "Armin Kuster <akuster808@gmail.com>"
|
RECIPE_MAINTAINER_pn-xcursor-transparent-theme = "Armin Kuster <akuster808@gmail.com>"
|
||||||
RECIPE_MAINTAINER_pn-xdg-utils = "Ross Burton <ross.burton@intel.com>"
|
RECIPE_MAINTAINER_pn-xdg-utils = "Anuj Mittal <anuj.mittal@intel.com>"
|
||||||
RECIPE_MAINTAINER_pn-xdpyinfo = "Armin Kuster <akuster808@gmail.com>"
|
RECIPE_MAINTAINER_pn-xdpyinfo = "Armin Kuster <akuster808@gmail.com>"
|
||||||
RECIPE_MAINTAINER_pn-xev = "Armin Kuster <akuster808@gmail.com>"
|
RECIPE_MAINTAINER_pn-xev = "Armin Kuster <akuster808@gmail.com>"
|
||||||
RECIPE_MAINTAINER_pn-xeyes = "Armin Kuster <akuster808@gmail.com>"
|
RECIPE_MAINTAINER_pn-xeyes = "Armin Kuster <akuster808@gmail.com>"
|
||||||
@@ -729,7 +729,7 @@ RECIPE_MAINTAINER_pn-xserver-xorg = "Armin Kuster <akuster808@gmail.com>"
|
|||||||
RECIPE_MAINTAINER_pn-xset = "Armin Kuster <akuster808@gmail.com>"
|
RECIPE_MAINTAINER_pn-xset = "Armin Kuster <akuster808@gmail.com>"
|
||||||
RECIPE_MAINTAINER_pn-xtrans = "Armin Kuster <akuster808@gmail.com>"
|
RECIPE_MAINTAINER_pn-xtrans = "Armin Kuster <akuster808@gmail.com>"
|
||||||
RECIPE_MAINTAINER_pn-xuser-account = "Armin Kuster <akuster808@gmail.com>"
|
RECIPE_MAINTAINER_pn-xuser-account = "Armin Kuster <akuster808@gmail.com>"
|
||||||
RECIPE_MAINTAINER_pn-xvideo-tests = "Ross Burton <ross.burton@intel.com>"
|
RECIPE_MAINTAINER_pn-xvideo-tests = "Anuj Mittal <anuj.mittal@intel.com>"
|
||||||
RECIPE_MAINTAINER_pn-xvinfo = "Armin Kuster <akuster808@gmail.com>"
|
RECIPE_MAINTAINER_pn-xvinfo = "Armin Kuster <akuster808@gmail.com>"
|
||||||
RECIPE_MAINTAINER_pn-xwininfo = "Armin Kuster <akuster808@gmail.com>"
|
RECIPE_MAINTAINER_pn-xwininfo = "Armin Kuster <akuster808@gmail.com>"
|
||||||
RECIPE_MAINTAINER_pn-xz = "Denys Dmytriyenko <denys@ti.com>"
|
RECIPE_MAINTAINER_pn-xz = "Denys Dmytriyenko <denys@ti.com>"
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ SRC_DISTRIBUTE_LICENSES += "CC-BY-NC-3.0 CC-BY-NC-ND-1.0 CC-BY-NC-ND-2.0"
|
|||||||
SRC_DISTRIBUTE_LICENSES += "CC-BY-NC-ND-2.5 CC-BY-NC-ND-3.0 CC-BY-NC-SA-1.0"
|
SRC_DISTRIBUTE_LICENSES += "CC-BY-NC-ND-2.5 CC-BY-NC-ND-3.0 CC-BY-NC-SA-1.0"
|
||||||
SRC_DISTRIBUTE_LICENSES += "CC-BY-NC-SA-2.0 CC-BY-NC-SA-2.5 CC-BY-NC-SA-3.0"
|
SRC_DISTRIBUTE_LICENSES += "CC-BY-NC-SA-2.0 CC-BY-NC-SA-2.5 CC-BY-NC-SA-3.0"
|
||||||
SRC_DISTRIBUTE_LICENSES += "CC-BY-ND-1.0 CC-BY-ND-2.0 CC-BY-ND-2.5 CC-BY-ND-3.0"
|
SRC_DISTRIBUTE_LICENSES += "CC-BY-ND-1.0 CC-BY-ND-2.0 CC-BY-ND-2.5 CC-BY-ND-3.0"
|
||||||
SRC_DISTRIBUTE_LICENSES += "CC-BY-SA-1.0 CC-BY-SA-2.0 CC-BY-SA-2.5 CC-BY-SA-3.0"
|
SRC_DISTRIBUTE_LICENSES += "CC-BY-SA-1.0 CC-BY-SA-2.0 CC-BY-SA-2.5 CC-BY-SA-3.0 CC-BY-SA-4.0"
|
||||||
SRC_DISTRIBUTE_LICENSES += "CDDL-1.0 CECILL-1.0 CECILL-2.0 CECILL-B CECILL-C"
|
SRC_DISTRIBUTE_LICENSES += "CDDL-1.0 CECILL-1.0 CECILL-2.0 CECILL-B CECILL-C"
|
||||||
SRC_DISTRIBUTE_LICENSES += "ClArtistic CPAL-1.0 CPL-1.0 CUA-OPL-1.0 DSSSL"
|
SRC_DISTRIBUTE_LICENSES += "ClArtistic CPAL-1.0 CPL-1.0 CUA-OPL-1.0 DSSSL"
|
||||||
SRC_DISTRIBUTE_LICENSES += "ECL-1.0 ECL-2.0 eCos-2.0 EDL-1.0 EFL-1.0 EFL-2.0"
|
SRC_DISTRIBUTE_LICENSES += "ECL-1.0 ECL-2.0 eCos-2.0 EDL-1.0 EFL-1.0 EFL-2.0"
|
||||||
|
|||||||
428
meta/files/common-licenses/CC-BY-SA-4.0
Normal file
428
meta/files/common-licenses/CC-BY-SA-4.0
Normal file
@@ -0,0 +1,428 @@
|
|||||||
|
Attribution-ShareAlike 4.0 International
|
||||||
|
|
||||||
|
=======================================================================
|
||||||
|
|
||||||
|
Creative Commons Corporation ("Creative Commons") is not a law firm and
|
||||||
|
does not provide legal services or legal advice. Distribution of
|
||||||
|
Creative Commons public licenses does not create a lawyer-client or
|
||||||
|
other relationship. Creative Commons makes its licenses and related
|
||||||
|
information available on an "as-is" basis. Creative Commons gives no
|
||||||
|
warranties regarding its licenses, any material licensed under their
|
||||||
|
terms and conditions, or any related information. Creative Commons
|
||||||
|
disclaims all liability for damages resulting from their use to the
|
||||||
|
fullest extent possible.
|
||||||
|
|
||||||
|
Using Creative Commons Public Licenses
|
||||||
|
|
||||||
|
Creative Commons public licenses provide a standard set of terms and
|
||||||
|
conditions that creators and other rights holders may use to share
|
||||||
|
original works of authorship and other material subject to copyright
|
||||||
|
and certain other rights specified in the public license below. The
|
||||||
|
following considerations are for informational purposes only, are not
|
||||||
|
exhaustive, and do not form part of our licenses.
|
||||||
|
|
||||||
|
Considerations for licensors: Our public licenses are
|
||||||
|
intended for use by those authorized to give the public
|
||||||
|
permission to use material in ways otherwise restricted by
|
||||||
|
copyright and certain other rights. Our licenses are
|
||||||
|
irrevocable. Licensors should read and understand the terms
|
||||||
|
and conditions of the license they choose before applying it.
|
||||||
|
Licensors should also secure all rights necessary before
|
||||||
|
applying our licenses so that the public can reuse the
|
||||||
|
material as expected. Licensors should clearly mark any
|
||||||
|
material not subject to the license. This includes other CC-
|
||||||
|
licensed material, or material used under an exception or
|
||||||
|
limitation to copyright. More considerations for licensors:
|
||||||
|
wiki.creativecommons.org/Considerations_for_licensors
|
||||||
|
|
||||||
|
Considerations for the public: By using one of our public
|
||||||
|
licenses, a licensor grants the public permission to use the
|
||||||
|
licensed material under specified terms and conditions. If
|
||||||
|
the licensor's permission is not necessary for any reason--for
|
||||||
|
example, because of any applicable exception or limitation to
|
||||||
|
copyright--then that use is not regulated by the license. Our
|
||||||
|
licenses grant only permissions under copyright and certain
|
||||||
|
other rights that a licensor has authority to grant. Use of
|
||||||
|
the licensed material may still be restricted for other
|
||||||
|
reasons, including because others have copyright or other
|
||||||
|
rights in the material. A licensor may make special requests,
|
||||||
|
such as asking that all changes be marked or described.
|
||||||
|
Although not required by our licenses, you are encouraged to
|
||||||
|
respect those requests where reasonable. More considerations
|
||||||
|
for the public:
|
||||||
|
wiki.creativecommons.org/Considerations_for_licensees
|
||||||
|
|
||||||
|
=======================================================================
|
||||||
|
|
||||||
|
Creative Commons Attribution-ShareAlike 4.0 International Public
|
||||||
|
License
|
||||||
|
|
||||||
|
By exercising the Licensed Rights (defined below), You accept and agree
|
||||||
|
to be bound by the terms and conditions of this Creative Commons
|
||||||
|
Attribution-ShareAlike 4.0 International Public License ("Public
|
||||||
|
License"). To the extent this Public License may be interpreted as a
|
||||||
|
contract, You are granted the Licensed Rights in consideration of Your
|
||||||
|
acceptance of these terms and conditions, and the Licensor grants You
|
||||||
|
such rights in consideration of benefits the Licensor receives from
|
||||||
|
making the Licensed Material available under these terms and
|
||||||
|
conditions.
|
||||||
|
|
||||||
|
|
||||||
|
Section 1 -- Definitions.
|
||||||
|
|
||||||
|
a. Adapted Material means material subject to Copyright and Similar
|
||||||
|
Rights that is derived from or based upon the Licensed Material
|
||||||
|
and in which the Licensed Material is translated, altered,
|
||||||
|
arranged, transformed, or otherwise modified in a manner requiring
|
||||||
|
permission under the Copyright and Similar Rights held by the
|
||||||
|
Licensor. For purposes of this Public License, where the Licensed
|
||||||
|
Material is a musical work, performance, or sound recording,
|
||||||
|
Adapted Material is always produced where the Licensed Material is
|
||||||
|
synched in timed relation with a moving image.
|
||||||
|
|
||||||
|
b. Adapter's License means the license You apply to Your Copyright
|
||||||
|
and Similar Rights in Your contributions to Adapted Material in
|
||||||
|
accordance with the terms and conditions of this Public License.
|
||||||
|
|
||||||
|
c. BY-SA Compatible License means a license listed at
|
||||||
|
creativecommons.org/compatiblelicenses, approved by Creative
|
||||||
|
Commons as essentially the equivalent of this Public License.
|
||||||
|
|
||||||
|
d. Copyright and Similar Rights means copyright and/or similar rights
|
||||||
|
closely related to copyright including, without limitation,
|
||||||
|
performance, broadcast, sound recording, and Sui Generis Database
|
||||||
|
Rights, without regard to how the rights are labeled or
|
||||||
|
categorized. For purposes of this Public License, the rights
|
||||||
|
specified in Section 2(b)(1)-(2) are not Copyright and Similar
|
||||||
|
Rights.
|
||||||
|
|
||||||
|
e. Effective Technological Measures means those measures that, in the
|
||||||
|
absence of proper authority, may not be circumvented under laws
|
||||||
|
fulfilling obligations under Article 11 of the WIPO Copyright
|
||||||
|
Treaty adopted on December 20, 1996, and/or similar international
|
||||||
|
agreements.
|
||||||
|
|
||||||
|
f. Exceptions and Limitations means fair use, fair dealing, and/or
|
||||||
|
any other exception or limitation to Copyright and Similar Rights
|
||||||
|
that applies to Your use of the Licensed Material.
|
||||||
|
|
||||||
|
g. License Elements means the license attributes listed in the name
|
||||||
|
of a Creative Commons Public License. The License Elements of this
|
||||||
|
Public License are Attribution and ShareAlike.
|
||||||
|
|
||||||
|
h. Licensed Material means the artistic or literary work, database,
|
||||||
|
or other material to which the Licensor applied this Public
|
||||||
|
License.
|
||||||
|
|
||||||
|
i. Licensed Rights means the rights granted to You subject to the
|
||||||
|
terms and conditions of this Public License, which are limited to
|
||||||
|
all Copyright and Similar Rights that apply to Your use of the
|
||||||
|
Licensed Material and that the Licensor has authority to license.
|
||||||
|
|
||||||
|
j. Licensor means the individual(s) or entity(ies) granting rights
|
||||||
|
under this Public License.
|
||||||
|
|
||||||
|
k. Share means to provide material to the public by any means or
|
||||||
|
process that requires permission under the Licensed Rights, such
|
||||||
|
as reproduction, public display, public performance, distribution,
|
||||||
|
dissemination, communication, or importation, and to make material
|
||||||
|
available to the public including in ways that members of the
|
||||||
|
public may access the material from a place and at a time
|
||||||
|
individually chosen by them.
|
||||||
|
|
||||||
|
l. Sui Generis Database Rights means rights other than copyright
|
||||||
|
resulting from Directive 96/9/EC of the European Parliament and of
|
||||||
|
the Council of 11 March 1996 on the legal protection of databases,
|
||||||
|
as amended and/or succeeded, as well as other essentially
|
||||||
|
equivalent rights anywhere in the world.
|
||||||
|
|
||||||
|
m. You means the individual or entity exercising the Licensed Rights
|
||||||
|
under this Public License. Your has a corresponding meaning.
|
||||||
|
|
||||||
|
|
||||||
|
Section 2 -- Scope.
|
||||||
|
|
||||||
|
a. License grant.
|
||||||
|
|
||||||
|
1. Subject to the terms and conditions of this Public License,
|
||||||
|
the Licensor hereby grants You a worldwide, royalty-free,
|
||||||
|
non-sublicensable, non-exclusive, irrevocable license to
|
||||||
|
exercise the Licensed Rights in the Licensed Material to:
|
||||||
|
|
||||||
|
a. reproduce and Share the Licensed Material, in whole or
|
||||||
|
in part; and
|
||||||
|
|
||||||
|
b. produce, reproduce, and Share Adapted Material.
|
||||||
|
|
||||||
|
2. Exceptions and Limitations. For the avoidance of doubt, where
|
||||||
|
Exceptions and Limitations apply to Your use, this Public
|
||||||
|
License does not apply, and You do not need to comply with
|
||||||
|
its terms and conditions.
|
||||||
|
|
||||||
|
3. Term. The term of this Public License is specified in Section
|
||||||
|
6(a).
|
||||||
|
|
||||||
|
4. Media and formats; technical modifications allowed. The
|
||||||
|
Licensor authorizes You to exercise the Licensed Rights in
|
||||||
|
all media and formats whether now known or hereafter created,
|
||||||
|
and to make technical modifications necessary to do so. The
|
||||||
|
Licensor waives and/or agrees not to assert any right or
|
||||||
|
authority to forbid You from making technical modifications
|
||||||
|
necessary to exercise the Licensed Rights, including
|
||||||
|
technical modifications necessary to circumvent Effective
|
||||||
|
Technological Measures. For purposes of this Public License,
|
||||||
|
simply making modifications authorized by this Section 2(a)
|
||||||
|
(4) never produces Adapted Material.
|
||||||
|
|
||||||
|
5. Downstream recipients.
|
||||||
|
|
||||||
|
a. Offer from the Licensor -- Licensed Material. Every
|
||||||
|
recipient of the Licensed Material automatically
|
||||||
|
receives an offer from the Licensor to exercise the
|
||||||
|
Licensed Rights under the terms and conditions of this
|
||||||
|
Public License.
|
||||||
|
|
||||||
|
b. Additional offer from the Licensor -- Adapted Material.
|
||||||
|
Every recipient of Adapted Material from You
|
||||||
|
automatically receives an offer from the Licensor to
|
||||||
|
exercise the Licensed Rights in the Adapted Material
|
||||||
|
under the conditions of the Adapter's License You apply.
|
||||||
|
|
||||||
|
c. No downstream restrictions. You may not offer or impose
|
||||||
|
any additional or different terms or conditions on, or
|
||||||
|
apply any Effective Technological Measures to, the
|
||||||
|
Licensed Material if doing so restricts exercise of the
|
||||||
|
Licensed Rights by any recipient of the Licensed
|
||||||
|
Material.
|
||||||
|
|
||||||
|
6. No endorsement. Nothing in this Public License constitutes or
|
||||||
|
may be construed as permission to assert or imply that You
|
||||||
|
are, or that Your use of the Licensed Material is, connected
|
||||||
|
with, or sponsored, endorsed, or granted official status by,
|
||||||
|
the Licensor or others designated to receive attribution as
|
||||||
|
provided in Section 3(a)(1)(A)(i).
|
||||||
|
|
||||||
|
b. Other rights.
|
||||||
|
|
||||||
|
1. Moral rights, such as the right of integrity, are not
|
||||||
|
licensed under this Public License, nor are publicity,
|
||||||
|
privacy, and/or other similar personality rights; however, to
|
||||||
|
the extent possible, the Licensor waives and/or agrees not to
|
||||||
|
assert any such rights held by the Licensor to the limited
|
||||||
|
extent necessary to allow You to exercise the Licensed
|
||||||
|
Rights, but not otherwise.
|
||||||
|
|
||||||
|
2. Patent and trademark rights are not licensed under this
|
||||||
|
Public License.
|
||||||
|
|
||||||
|
3. To the extent possible, the Licensor waives any right to
|
||||||
|
collect royalties from You for the exercise of the Licensed
|
||||||
|
Rights, whether directly or through a collecting society
|
||||||
|
under any voluntary or waivable statutory or compulsory
|
||||||
|
licensing scheme. In all other cases the Licensor expressly
|
||||||
|
reserves any right to collect such royalties.
|
||||||
|
|
||||||
|
|
||||||
|
Section 3 -- License Conditions.
|
||||||
|
|
||||||
|
Your exercise of the Licensed Rights is expressly made subject to the
|
||||||
|
following conditions.
|
||||||
|
|
||||||
|
a. Attribution.
|
||||||
|
|
||||||
|
1. If You Share the Licensed Material (including in modified
|
||||||
|
form), You must:
|
||||||
|
|
||||||
|
a. retain the following if it is supplied by the Licensor
|
||||||
|
with the Licensed Material:
|
||||||
|
|
||||||
|
i. identification of the creator(s) of the Licensed
|
||||||
|
Material and any others designated to receive
|
||||||
|
attribution, in any reasonable manner requested by
|
||||||
|
the Licensor (including by pseudonym if
|
||||||
|
designated);
|
||||||
|
|
||||||
|
ii. a copyright notice;
|
||||||
|
|
||||||
|
iii. a notice that refers to this Public License;
|
||||||
|
|
||||||
|
iv. a notice that refers to the disclaimer of
|
||||||
|
warranties;
|
||||||
|
|
||||||
|
v. a URI or hyperlink to the Licensed Material to the
|
||||||
|
extent reasonably practicable;
|
||||||
|
|
||||||
|
b. indicate if You modified the Licensed Material and
|
||||||
|
retain an indication of any previous modifications; and
|
||||||
|
|
||||||
|
c. indicate the Licensed Material is licensed under this
|
||||||
|
Public License, and include the text of, or the URI or
|
||||||
|
hyperlink to, this Public License.
|
||||||
|
|
||||||
|
2. You may satisfy the conditions in Section 3(a)(1) in any
|
||||||
|
reasonable manner based on the medium, means, and context in
|
||||||
|
which You Share the Licensed Material. For example, it may be
|
||||||
|
reasonable to satisfy the conditions by providing a URI or
|
||||||
|
hyperlink to a resource that includes the required
|
||||||
|
information.
|
||||||
|
|
||||||
|
3. If requested by the Licensor, You must remove any of the
|
||||||
|
information required by Section 3(a)(1)(A) to the extent
|
||||||
|
reasonably practicable.
|
||||||
|
|
||||||
|
b. ShareAlike.
|
||||||
|
|
||||||
|
In addition to the conditions in Section 3(a), if You Share
|
||||||
|
Adapted Material You produce, the following conditions also apply.
|
||||||
|
|
||||||
|
1. The Adapter's License You apply must be a Creative Commons
|
||||||
|
license with the same License Elements, this version or
|
||||||
|
later, or a BY-SA Compatible License.
|
||||||
|
|
||||||
|
2. You must include the text of, or the URI or hyperlink to, the
|
||||||
|
Adapter's License You apply. You may satisfy this condition
|
||||||
|
in any reasonable manner based on the medium, means, and
|
||||||
|
context in which You Share Adapted Material.
|
||||||
|
|
||||||
|
3. You may not offer or impose any additional or different terms
|
||||||
|
or conditions on, or apply any Effective Technological
|
||||||
|
Measures to, Adapted Material that restrict exercise of the
|
||||||
|
rights granted under the Adapter's License You apply.
|
||||||
|
|
||||||
|
|
||||||
|
Section 4 -- Sui Generis Database Rights.
|
||||||
|
|
||||||
|
Where the Licensed Rights include Sui Generis Database Rights that
|
||||||
|
apply to Your use of the Licensed Material:
|
||||||
|
|
||||||
|
a. for the avoidance of doubt, Section 2(a)(1) grants You the right
|
||||||
|
to extract, reuse, reproduce, and Share all or a substantial
|
||||||
|
portion of the contents of the database;
|
||||||
|
|
||||||
|
b. if You include all or a substantial portion of the database
|
||||||
|
contents in a database in which You have Sui Generis Database
|
||||||
|
Rights, then the database in which You have Sui Generis Database
|
||||||
|
Rights (but not its individual contents) is Adapted Material,
|
||||||
|
|
||||||
|
including for purposes of Section 3(b); and
|
||||||
|
c. You must comply with the conditions in Section 3(a) if You Share
|
||||||
|
all or a substantial portion of the contents of the database.
|
||||||
|
|
||||||
|
For the avoidance of doubt, this Section 4 supplements and does not
|
||||||
|
replace Your obligations under this Public License where the Licensed
|
||||||
|
Rights include other Copyright and Similar Rights.
|
||||||
|
|
||||||
|
|
||||||
|
Section 5 -- Disclaimer of Warranties and Limitation of Liability.
|
||||||
|
|
||||||
|
a. UNLESS OTHERWISE SEPARATELY UNDERTAKEN BY THE LICENSOR, TO THE
|
||||||
|
EXTENT POSSIBLE, THE LICENSOR OFFERS THE LICENSED MATERIAL AS-IS
|
||||||
|
AND AS-AVAILABLE, AND MAKES NO REPRESENTATIONS OR WARRANTIES OF
|
||||||
|
ANY KIND CONCERNING THE LICENSED MATERIAL, WHETHER EXPRESS,
|
||||||
|
IMPLIED, STATUTORY, OR OTHER. THIS INCLUDES, WITHOUT LIMITATION,
|
||||||
|
WARRANTIES OF TITLE, MERCHANTABILITY, FITNESS FOR A PARTICULAR
|
||||||
|
PURPOSE, NON-INFRINGEMENT, ABSENCE OF LATENT OR OTHER DEFECTS,
|
||||||
|
ACCURACY, OR THE PRESENCE OR ABSENCE OF ERRORS, WHETHER OR NOT
|
||||||
|
KNOWN OR DISCOVERABLE. WHERE DISCLAIMERS OF WARRANTIES ARE NOT
|
||||||
|
ALLOWED IN FULL OR IN PART, THIS DISCLAIMER MAY NOT APPLY TO YOU.
|
||||||
|
|
||||||
|
b. TO THE EXTENT POSSIBLE, IN NO EVENT WILL THE LICENSOR BE LIABLE
|
||||||
|
TO YOU ON ANY LEGAL THEORY (INCLUDING, WITHOUT LIMITATION,
|
||||||
|
NEGLIGENCE) OR OTHERWISE FOR ANY DIRECT, SPECIAL, INDIRECT,
|
||||||
|
INCIDENTAL, CONSEQUENTIAL, PUNITIVE, EXEMPLARY, OR OTHER LOSSES,
|
||||||
|
COSTS, EXPENSES, OR DAMAGES ARISING OUT OF THIS PUBLIC LICENSE OR
|
||||||
|
USE OF THE LICENSED MATERIAL, EVEN IF THE LICENSOR HAS BEEN
|
||||||
|
ADVISED OF THE POSSIBILITY OF SUCH LOSSES, COSTS, EXPENSES, OR
|
||||||
|
DAMAGES. WHERE A LIMITATION OF LIABILITY IS NOT ALLOWED IN FULL OR
|
||||||
|
IN PART, THIS LIMITATION MAY NOT APPLY TO YOU.
|
||||||
|
|
||||||
|
c. The disclaimer of warranties and limitation of liability provided
|
||||||
|
above shall be interpreted in a manner that, to the extent
|
||||||
|
possible, most closely approximates an absolute disclaimer and
|
||||||
|
waiver of all liability.
|
||||||
|
|
||||||
|
|
||||||
|
Section 6 -- Term and Termination.
|
||||||
|
|
||||||
|
a. This Public License applies for the term of the Copyright and
|
||||||
|
Similar Rights licensed here. However, if You fail to comply with
|
||||||
|
this Public License, then Your rights under this Public License
|
||||||
|
terminate automatically.
|
||||||
|
|
||||||
|
b. Where Your right to use the Licensed Material has terminated under
|
||||||
|
Section 6(a), it reinstates:
|
||||||
|
|
||||||
|
1. automatically as of the date the violation is cured, provided
|
||||||
|
it is cured within 30 days of Your discovery of the
|
||||||
|
violation; or
|
||||||
|
|
||||||
|
2. upon express reinstatement by the Licensor.
|
||||||
|
|
||||||
|
For the avoidance of doubt, this Section 6(b) does not affect any
|
||||||
|
right the Licensor may have to seek remedies for Your violations
|
||||||
|
of this Public License.
|
||||||
|
|
||||||
|
c. For the avoidance of doubt, the Licensor may also offer the
|
||||||
|
Licensed Material under separate terms or conditions or stop
|
||||||
|
distributing the Licensed Material at any time; however, doing so
|
||||||
|
will not terminate this Public License.
|
||||||
|
|
||||||
|
d. Sections 1, 5, 6, 7, and 8 survive termination of this Public
|
||||||
|
License.
|
||||||
|
|
||||||
|
|
||||||
|
Section 7 -- Other Terms and Conditions.
|
||||||
|
|
||||||
|
a. The Licensor shall not be bound by any additional or different
|
||||||
|
terms or conditions communicated by You unless expressly agreed.
|
||||||
|
|
||||||
|
b. Any arrangements, understandings, or agreements regarding the
|
||||||
|
Licensed Material not stated herein are separate from and
|
||||||
|
independent of the terms and conditions of this Public License.
|
||||||
|
|
||||||
|
|
||||||
|
Section 8 -- Interpretation.
|
||||||
|
|
||||||
|
a. For the avoidance of doubt, this Public License does not, and
|
||||||
|
shall not be interpreted to, reduce, limit, restrict, or impose
|
||||||
|
conditions on any use of the Licensed Material that could lawfully
|
||||||
|
be made without permission under this Public License.
|
||||||
|
|
||||||
|
b. To the extent possible, if any provision of this Public License is
|
||||||
|
deemed unenforceable, it shall be automatically reformed to the
|
||||||
|
minimum extent necessary to make it enforceable. If the provision
|
||||||
|
cannot be reformed, it shall be severed from this Public License
|
||||||
|
without affecting the enforceability of the remaining terms and
|
||||||
|
conditions.
|
||||||
|
|
||||||
|
c. No term or condition of this Public License will be waived and no
|
||||||
|
failure to comply consented to unless expressly agreed to by the
|
||||||
|
Licensor.
|
||||||
|
|
||||||
|
d. Nothing in this Public License constitutes or may be interpreted
|
||||||
|
as a limitation upon, or waiver of, any privileges and immunities
|
||||||
|
that apply to the Licensor or You, including from the legal
|
||||||
|
processes of any jurisdiction or authority.
|
||||||
|
|
||||||
|
|
||||||
|
=======================================================================
|
||||||
|
|
||||||
|
Creative Commons is not a party to its public
|
||||||
|
licenses. Notwithstanding, Creative Commons may elect to apply one of
|
||||||
|
its public licenses to material it publishes and in those instances
|
||||||
|
will be considered the “Licensor.” The text of the Creative Commons
|
||||||
|
public licenses is dedicated to the public domain under the CC0 Public
|
||||||
|
Domain Dedication. Except for the limited purpose of indicating that
|
||||||
|
material is shared under a Creative Commons public license or as
|
||||||
|
otherwise permitted by the Creative Commons policies published at
|
||||||
|
creativecommons.org/policies, Creative Commons does not authorize the
|
||||||
|
use of the trademark "Creative Commons" or any other trademark or logo
|
||||||
|
of Creative Commons without its prior written consent including,
|
||||||
|
without limitation, in connection with any unauthorized modifications
|
||||||
|
to any of its public licenses or any other arrangements,
|
||||||
|
understandings, or agreements concerning use of licensed material. For
|
||||||
|
the avoidance of doubt, this paragraph does not form part of the
|
||||||
|
public licenses.
|
||||||
|
|
||||||
|
Creative Commons may be contacted at creativecommons.org.
|
||||||
|
|
||||||
@@ -318,9 +318,10 @@ def multiprocess_launch(target, items, d, extraargs=None):
|
|||||||
for p in launched:
|
for p in launched:
|
||||||
p.join()
|
p.join()
|
||||||
if errors:
|
if errors:
|
||||||
|
msg = ""
|
||||||
for (e, tb) in errors:
|
for (e, tb) in errors:
|
||||||
bb.error(str(tb))
|
msg = msg + str(e) + ": " + str(tb) + "\n"
|
||||||
bb.fatal("Fatal errors occurred in subprocesses, tracebacks printed above")
|
bb.fatal("Fatal errors occurred in subprocesses:\n%s" % msg)
|
||||||
return results
|
return results
|
||||||
|
|
||||||
def squashspaces(string):
|
def squashspaces(string):
|
||||||
|
|||||||
@@ -24,7 +24,7 @@ from oeqa.core.decorator import decoratorClasses, OETestDecorator, \
|
|||||||
# Generate the function definition because this differ across python versions
|
# Generate the function definition because this differ across python versions
|
||||||
# Python >= 3.4.4 uses tree parameters instead four but for example Python 3.5.3
|
# Python >= 3.4.4 uses tree parameters instead four but for example Python 3.5.3
|
||||||
# ueses four parameters so isn't incremental.
|
# ueses four parameters so isn't incremental.
|
||||||
_failed_test_args = inspect.getargspec(unittest.loader._make_failed_test).args
|
_failed_test_args = inspect.getfullargspec(unittest.loader._make_failed_test).args
|
||||||
exec("""def _make_failed_test(%s): raise exception""" % ', '.join(_failed_test_args))
|
exec("""def _make_failed_test(%s): raise exception""" % ', '.join(_failed_test_args))
|
||||||
unittest.loader._make_failed_test = _make_failed_test
|
unittest.loader._make_failed_test = _make_failed_test
|
||||||
|
|
||||||
|
|||||||
@@ -76,9 +76,7 @@ class OETestResult(_TestResult):
|
|||||||
msg = "%s - OK - All required tests passed" % component
|
msg = "%s - OK - All required tests passed" % component
|
||||||
else:
|
else:
|
||||||
msg = "%s - FAIL - Required tests failed" % component
|
msg = "%s - FAIL - Required tests failed" % component
|
||||||
skipped = len(self.skipped)
|
msg += " (successes=%d, skipped=%d, failures=%d, errors=%d)" % (len(self.successes), len(self.skipped), len(self.failures), len(self.errors))
|
||||||
if skipped:
|
|
||||||
msg += " (skipped=%d)" % skipped
|
|
||||||
self.tc.logger.info(msg)
|
self.tc.logger.info(msg)
|
||||||
|
|
||||||
def _getTestResultDetails(self, case):
|
def _getTestResultDetails(self, case):
|
||||||
@@ -95,13 +93,13 @@ class OETestResult(_TestResult):
|
|||||||
|
|
||||||
# When fails at module or class level the class name is passed as string
|
# When fails at module or class level the class name is passed as string
|
||||||
# so figure out to see if match
|
# so figure out to see if match
|
||||||
m = re.search("^setUpModule \((?P<module_name>.*)\)$", scase_str)
|
m = re.search(r"^setUpModule \((?P<module_name>.*)\)$", scase_str)
|
||||||
if m:
|
if m:
|
||||||
if case.__class__.__module__ == m.group('module_name'):
|
if case.__class__.__module__ == m.group('module_name'):
|
||||||
found = True
|
found = True
|
||||||
break
|
break
|
||||||
|
|
||||||
m = re.search("^setUpClass \((?P<class_name>.*)\)$", scase_str)
|
m = re.search(r"^setUpClass \((?P<class_name>.*)\)$", scase_str)
|
||||||
if m:
|
if m:
|
||||||
class_name = "%s.%s" % (case.__class__.__module__,
|
class_name = "%s.%s" % (case.__class__.__module__,
|
||||||
case.__class__.__name__)
|
case.__class__.__name__)
|
||||||
@@ -124,6 +122,7 @@ class OETestResult(_TestResult):
|
|||||||
self.tc.logger.info("RESULTS:")
|
self.tc.logger.info("RESULTS:")
|
||||||
|
|
||||||
result = {}
|
result = {}
|
||||||
|
logs = {}
|
||||||
if hasattr(self.tc, "extraresults"):
|
if hasattr(self.tc, "extraresults"):
|
||||||
result = self.tc.extraresults
|
result = self.tc.extraresults
|
||||||
|
|
||||||
@@ -142,12 +141,20 @@ class OETestResult(_TestResult):
|
|||||||
if case.id() in self.starttime and case.id() in self.endtime:
|
if case.id() in self.starttime and case.id() in self.endtime:
|
||||||
t = " (" + "{0:.2f}".format(self.endtime[case.id()] - self.starttime[case.id()]) + "s)"
|
t = " (" + "{0:.2f}".format(self.endtime[case.id()] - self.starttime[case.id()]) + "s)"
|
||||||
|
|
||||||
self.tc.logger.info("RESULTS - %s - Testcase %s: %s%s" % (case.id(), oeid, status, t))
|
if status not in logs:
|
||||||
|
logs[status] = []
|
||||||
|
logs[status].append("RESULTS - %s - Testcase %s: %s%s" % (case.id(), oeid, status, t))
|
||||||
if log:
|
if log:
|
||||||
result[case.id()] = {'status': status, 'log': log}
|
result[case.id()] = {'status': status, 'log': log}
|
||||||
else:
|
else:
|
||||||
result[case.id()] = {'status': status}
|
result[case.id()] = {'status': status}
|
||||||
|
|
||||||
|
for i in ['PASSED', 'SKIPPED', 'EXPECTEDFAIL', 'ERROR', 'FAILED', 'UNKNOWN']:
|
||||||
|
if i not in logs:
|
||||||
|
continue
|
||||||
|
for l in logs[i]:
|
||||||
|
self.tc.logger.info(l)
|
||||||
|
|
||||||
if json_file_dir:
|
if json_file_dir:
|
||||||
tresultjsonhelper = OETestResultJSONHelper()
|
tresultjsonhelper = OETestResultJSONHelper()
|
||||||
tresultjsonhelper.dump_testresult_file(json_file_dir, configuration, result_id, result)
|
tresultjsonhelper.dump_testresult_file(json_file_dir, configuration, result_id, result)
|
||||||
|
|||||||
@@ -115,6 +115,9 @@ class ConcurrentTestSuite(unittest.TestSuite):
|
|||||||
for thread, process_result in threads.values():
|
for thread, process_result in threads.values():
|
||||||
process_result.stop()
|
process_result.stop()
|
||||||
raise
|
raise
|
||||||
|
finally:
|
||||||
|
for test in tests:
|
||||||
|
test[0]._stream.close()
|
||||||
|
|
||||||
def _run_test(self, test, process_result, queue):
|
def _run_test(self, test, process_result, queue):
|
||||||
try:
|
try:
|
||||||
|
|||||||
@@ -18,7 +18,7 @@ class AptRepoTest(AptTest):
|
|||||||
@classmethod
|
@classmethod
|
||||||
def setUpClass(cls):
|
def setUpClass(cls):
|
||||||
service_repo = os.path.join(cls.tc.td['DEPLOY_DIR_DEB'], 'all')
|
service_repo = os.path.join(cls.tc.td['DEPLOY_DIR_DEB'], 'all')
|
||||||
cls.repo_server = HTTPService(service_repo, cls.tc.target.server_ip)
|
cls.repo_server = HTTPService(service_repo, cls.tc.target.server_ip, logger=cls.tc.logger)
|
||||||
cls.repo_server.start()
|
cls.repo_server.start()
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
|
|||||||
@@ -55,7 +55,7 @@ class DnfRepoTest(DnfTest):
|
|||||||
@classmethod
|
@classmethod
|
||||||
def setUpClass(cls):
|
def setUpClass(cls):
|
||||||
cls.repo_server = HTTPService(os.path.join(cls.tc.td['WORKDIR'], 'oe-testimage-repo'),
|
cls.repo_server = HTTPService(os.path.join(cls.tc.td['WORKDIR'], 'oe-testimage-repo'),
|
||||||
cls.tc.target.server_ip)
|
cls.tc.target.server_ip, logger=cls.tc.logger)
|
||||||
cls.repo_server.start()
|
cls.repo_server.start()
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
|
|||||||
@@ -21,7 +21,7 @@ class OpkgRepoTest(OpkgTest):
|
|||||||
if cls.tc.td["MULTILIB_VARIANTS"]:
|
if cls.tc.td["MULTILIB_VARIANTS"]:
|
||||||
allarchfeed = cls.tc.td["TUNE_PKGARCH"]
|
allarchfeed = cls.tc.td["TUNE_PKGARCH"]
|
||||||
service_repo = os.path.join(cls.tc.td['DEPLOY_DIR_IPK'], allarchfeed)
|
service_repo = os.path.join(cls.tc.td['DEPLOY_DIR_IPK'], allarchfeed)
|
||||||
cls.repo_server = HTTPService(service_repo, cls.tc.target.server_ip)
|
cls.repo_server = HTTPService(service_repo, cls.tc.target.server_ip, logger=cls.tc.logger)
|
||||||
cls.repo_server.start()
|
cls.repo_server.start()
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
|
|||||||
@@ -12,6 +12,8 @@ import oeqa.utils.ftools as ftools
|
|||||||
from oeqa.utils.commands import runCmd, bitbake, get_bb_var
|
from oeqa.utils.commands import runCmd, bitbake, get_bb_var
|
||||||
from oeqa.core.case import OETestCase
|
from oeqa.core.case import OETestCase
|
||||||
|
|
||||||
|
import bb.utils
|
||||||
|
|
||||||
class OESelftestTestCase(OETestCase):
|
class OESelftestTestCase(OETestCase):
|
||||||
def __init__(self, methodName="runTest"):
|
def __init__(self, methodName="runTest"):
|
||||||
self._extra_tear_down_commands = []
|
self._extra_tear_down_commands = []
|
||||||
@@ -167,7 +169,7 @@ to ensure accurate results.")
|
|||||||
if self._track_for_cleanup:
|
if self._track_for_cleanup:
|
||||||
for path in self._track_for_cleanup:
|
for path in self._track_for_cleanup:
|
||||||
if os.path.isdir(path):
|
if os.path.isdir(path):
|
||||||
shutil.rmtree(path)
|
bb.utils.remove(path, recurse=True)
|
||||||
if os.path.isfile(path):
|
if os.path.isfile(path):
|
||||||
os.remove(path)
|
os.remove(path)
|
||||||
self._track_for_cleanup = []
|
self._track_for_cleanup = []
|
||||||
|
|||||||
@@ -38,10 +38,12 @@ class ImageOptionsTests(OESelftestTestCase):
|
|||||||
self.assertTrue(os.path.isfile(p), msg = "No ccache found (%s)" % p)
|
self.assertTrue(os.path.isfile(p), msg = "No ccache found (%s)" % p)
|
||||||
self.write_config('INHERIT += "ccache"')
|
self.write_config('INHERIT += "ccache"')
|
||||||
self.add_command_to_tearDown('bitbake -c clean m4')
|
self.add_command_to_tearDown('bitbake -c clean m4')
|
||||||
|
bitbake("m4 -c clean")
|
||||||
bitbake("m4 -f -c compile")
|
bitbake("m4 -f -c compile")
|
||||||
log_compile = os.path.join(get_bb_var("WORKDIR","m4"), "temp/log.do_compile")
|
log_compile = os.path.join(get_bb_var("WORKDIR","m4"), "temp/log.do_compile")
|
||||||
res = runCmd("grep ccache %s" % log_compile, ignore_status=True)
|
with open(log_compile, "r") as f:
|
||||||
self.assertEqual(0, res.status, msg="No match for ccache in m4 log.do_compile. For further details: %s" % log_compile)
|
loglines = "".join(f.readlines())
|
||||||
|
self.assertIn("ccache", loglines, msg="No match for ccache in m4 log.do_compile. For further details: %s" % log_compile)
|
||||||
|
|
||||||
@OETestID(1435)
|
@OETestID(1435)
|
||||||
def test_read_only_image(self):
|
def test_read_only_image(self):
|
||||||
@@ -57,15 +59,15 @@ class DiskMonTest(OESelftestTestCase):
|
|||||||
@OETestID(277)
|
@OETestID(277)
|
||||||
def test_stoptask_behavior(self):
|
def test_stoptask_behavior(self):
|
||||||
self.write_config('BB_DISKMON_DIRS = "STOPTASKS,${TMPDIR},100000G,100K"')
|
self.write_config('BB_DISKMON_DIRS = "STOPTASKS,${TMPDIR},100000G,100K"')
|
||||||
res = bitbake("m4", ignore_status = True)
|
res = bitbake("delay -c delay", ignore_status = True)
|
||||||
self.assertTrue('ERROR: No new tasks can be executed since the disk space monitor action is "STOPTASKS"!' in res.output, msg = "Tasks should have stopped. Disk monitor is set to STOPTASK: %s" % res.output)
|
self.assertTrue('ERROR: No new tasks can be executed since the disk space monitor action is "STOPTASKS"!' in res.output, msg = "Tasks should have stopped. Disk monitor is set to STOPTASK: %s" % res.output)
|
||||||
self.assertEqual(res.status, 1, msg = "bitbake reported exit code %s. It should have been 1. Bitbake output: %s" % (str(res.status), res.output))
|
self.assertEqual(res.status, 1, msg = "bitbake reported exit code %s. It should have been 1. Bitbake output: %s" % (str(res.status), res.output))
|
||||||
self.write_config('BB_DISKMON_DIRS = "ABORT,${TMPDIR},100000G,100K"')
|
self.write_config('BB_DISKMON_DIRS = "ABORT,${TMPDIR},100000G,100K"')
|
||||||
res = bitbake("m4", ignore_status = True)
|
res = bitbake("delay -c delay", ignore_status = True)
|
||||||
self.assertTrue('ERROR: Immediately abort since the disk space monitor action is "ABORT"!' in res.output, "Tasks should have been aborted immediatelly. Disk monitor is set to ABORT: %s" % res.output)
|
self.assertTrue('ERROR: Immediately abort since the disk space monitor action is "ABORT"!' in res.output, "Tasks should have been aborted immediatelly. Disk monitor is set to ABORT: %s" % res.output)
|
||||||
self.assertEqual(res.status, 1, msg = "bitbake reported exit code %s. It should have been 1. Bitbake output: %s" % (str(res.status), res.output))
|
self.assertEqual(res.status, 1, msg = "bitbake reported exit code %s. It should have been 1. Bitbake output: %s" % (str(res.status), res.output))
|
||||||
self.write_config('BB_DISKMON_DIRS = "WARN,${TMPDIR},100000G,100K"')
|
self.write_config('BB_DISKMON_DIRS = "WARN,${TMPDIR},100000G,100K"')
|
||||||
res = bitbake("m4")
|
res = bitbake("delay -c delay")
|
||||||
self.assertTrue('WARNING: The free space' in res.output, msg = "A warning should have been displayed for disk monitor is set to WARN: %s" %res.output)
|
self.assertTrue('WARNING: The free space' in res.output, msg = "A warning should have been displayed for disk monitor is set to WARN: %s" %res.output)
|
||||||
|
|
||||||
class SanityOptionsTest(OESelftestTestCase):
|
class SanityOptionsTest(OESelftestTestCase):
|
||||||
|
|||||||
@@ -70,11 +70,13 @@ CORE_IMAGE_EXTRA_INSTALL = "perl"
|
|||||||
@classmethod
|
@classmethod
|
||||||
def setUpClass(cls):
|
def setUpClass(cls):
|
||||||
super(oeSDKExtSelfTest, cls).setUpClass()
|
super(oeSDKExtSelfTest, cls).setUpClass()
|
||||||
cls.tmpdir_eSDKQA = tempfile.mkdtemp(prefix='eSDKQA')
|
|
||||||
|
|
||||||
sstate_dir = get_bb_var('SSTATE_DIR')
|
|
||||||
|
|
||||||
cls.image = 'core-image-minimal'
|
cls.image = 'core-image-minimal'
|
||||||
|
|
||||||
|
bb_vars = get_bb_vars(['SSTATE_DIR', 'WORKDIR'], cls.image)
|
||||||
|
bb.utils.mkdirhier(bb_vars["WORKDIR"])
|
||||||
|
cls.tmpdirobj = tempfile.TemporaryDirectory(prefix="selftest-esdk-", dir=bb_vars["WORKDIR"])
|
||||||
|
cls.tmpdir_eSDKQA = cls.tmpdirobj.name
|
||||||
|
|
||||||
oeSDKExtSelfTest.generate_eSDK(cls.image)
|
oeSDKExtSelfTest.generate_eSDK(cls.image)
|
||||||
|
|
||||||
# Install eSDK
|
# Install eSDK
|
||||||
@@ -87,14 +89,14 @@ CORE_IMAGE_EXTRA_INSTALL = "perl"
|
|||||||
sstate_config="""
|
sstate_config="""
|
||||||
SDK_LOCAL_CONF_WHITELIST = "SSTATE_MIRRORS"
|
SDK_LOCAL_CONF_WHITELIST = "SSTATE_MIRRORS"
|
||||||
SSTATE_MIRRORS = "file://.* file://%s/PATH"
|
SSTATE_MIRRORS = "file://.* file://%s/PATH"
|
||||||
""" % sstate_dir
|
""" % bb_vars["SSTATE_DIR"]
|
||||||
with open(os.path.join(cls.tmpdir_eSDKQA, 'conf', 'local.conf'), 'a+') as f:
|
with open(os.path.join(cls.tmpdir_eSDKQA, 'conf', 'local.conf'), 'a+') as f:
|
||||||
f.write(sstate_config)
|
f.write(sstate_config)
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def tearDownClass(cls):
|
def tearDownClass(cls):
|
||||||
shutil.rmtree(cls.tmpdir_eSDKQA, ignore_errors=True)
|
cls.tmpdirobj.cleanup()
|
||||||
super(oeSDKExtSelfTest, cls).tearDownClass()
|
super().tearDownClass()
|
||||||
|
|
||||||
@OETestID(1602)
|
@OETestID(1602)
|
||||||
def test_install_libraries_headers(self):
|
def test_install_libraries_headers(self):
|
||||||
|
|||||||
@@ -38,13 +38,6 @@ class TestRealPath(TestCase):
|
|||||||
( "b/test", errno.ENOENT ),
|
( "b/test", errno.ENOENT ),
|
||||||
]
|
]
|
||||||
|
|
||||||
def __del__(self):
|
|
||||||
try:
|
|
||||||
#os.system("tree -F %s" % self.tmpdir)
|
|
||||||
shutil.rmtree(self.tmpdir)
|
|
||||||
except:
|
|
||||||
pass
|
|
||||||
|
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
self.tmpdir = tempfile.mkdtemp(prefix = "oe-test_path")
|
self.tmpdir = tempfile.mkdtemp(prefix = "oe-test_path")
|
||||||
self.root = os.path.join(self.tmpdir, "R")
|
self.root = os.path.join(self.tmpdir, "R")
|
||||||
@@ -59,6 +52,9 @@ class TestRealPath(TestCase):
|
|||||||
for l in self.LINKS:
|
for l in self.LINKS:
|
||||||
os.symlink(l[1], os.path.join(self.root, l[0]))
|
os.symlink(l[1], os.path.join(self.root, l[0]))
|
||||||
|
|
||||||
|
def tearDown(self):
|
||||||
|
shutil.rmtree(self.tmpdir)
|
||||||
|
|
||||||
def __realpath(self, file, use_physdir, assume_dir = True):
|
def __realpath(self, file, use_physdir, assume_dir = True):
|
||||||
return oe.path.realpath(os.path.join(self.root, file), self.root,
|
return oe.path.realpath(os.path.join(self.root, file), self.root,
|
||||||
use_physdir, assume_dir = assume_dir)
|
use_physdir, assume_dir = assume_dir)
|
||||||
|
|||||||
@@ -66,6 +66,9 @@ class TestMultiprocessLaunch(TestCase):
|
|||||||
|
|
||||||
def dummyerror(msg):
|
def dummyerror(msg):
|
||||||
print("ERROR: %s" % msg)
|
print("ERROR: %s" % msg)
|
||||||
|
def dummyfatal(msg):
|
||||||
|
print("ERROR: %s" % msg)
|
||||||
|
raise bb.BBHandledException()
|
||||||
|
|
||||||
@contextmanager
|
@contextmanager
|
||||||
def captured_output():
|
def captured_output():
|
||||||
@@ -79,6 +82,7 @@ class TestMultiprocessLaunch(TestCase):
|
|||||||
|
|
||||||
d = bb.data_smart.DataSmart()
|
d = bb.data_smart.DataSmart()
|
||||||
bb.error = dummyerror
|
bb.error = dummyerror
|
||||||
|
bb.fatal = dummyfatal
|
||||||
|
|
||||||
# Assert the function returns the right results
|
# Assert the function returns the right results
|
||||||
result = multiprocess_launch(testfunction, ["3", "4", "5", "6"], d, extraargs=(d,))
|
result = multiprocess_launch(testfunction, ["3", "4", "5", "6"], d, extraargs=(d,))
|
||||||
|
|||||||
@@ -42,7 +42,8 @@ SYSLINUX_TIMEOUT = "10"
|
|||||||
"""Test runqemu machine"""
|
"""Test runqemu machine"""
|
||||||
cmd = "%s %s" % (self.cmd_common, self.machine)
|
cmd = "%s %s" % (self.cmd_common, self.machine)
|
||||||
with runqemu(self.recipe, ssh=False, launch_cmd=cmd) as qemu:
|
with runqemu(self.recipe, ssh=False, launch_cmd=cmd) as qemu:
|
||||||
self.assertTrue(qemu.runner.logged, "Failed: %s" % cmd)
|
with open(qemu.qemurunnerlog) as f:
|
||||||
|
self.assertTrue(qemu.runner.logged, "Failed: %s, %s" % (cmd, f.read()))
|
||||||
|
|
||||||
@OETestID(2002)
|
@OETestID(2002)
|
||||||
def test_boot_machine_ext4(self):
|
def test_boot_machine_ext4(self):
|
||||||
@@ -50,7 +51,7 @@ SYSLINUX_TIMEOUT = "10"
|
|||||||
cmd = "%s %s ext4" % (self.cmd_common, self.machine)
|
cmd = "%s %s ext4" % (self.cmd_common, self.machine)
|
||||||
with runqemu(self.recipe, ssh=False, launch_cmd=cmd) as qemu:
|
with runqemu(self.recipe, ssh=False, launch_cmd=cmd) as qemu:
|
||||||
with open(qemu.qemurunnerlog) as f:
|
with open(qemu.qemurunnerlog) as f:
|
||||||
self.assertTrue('rootfs.ext4' in f.read(), "Failed: %s" % cmd)
|
self.assertIn('rootfs.ext4', f.read(), "Failed: %s" % cmd)
|
||||||
|
|
||||||
@OETestID(2003)
|
@OETestID(2003)
|
||||||
def test_boot_machine_iso(self):
|
def test_boot_machine_iso(self):
|
||||||
@@ -58,14 +59,16 @@ SYSLINUX_TIMEOUT = "10"
|
|||||||
cmd = "%s %s iso" % (self.cmd_common, self.machine)
|
cmd = "%s %s iso" % (self.cmd_common, self.machine)
|
||||||
with runqemu(self.recipe, ssh=False, launch_cmd=cmd) as qemu:
|
with runqemu(self.recipe, ssh=False, launch_cmd=cmd) as qemu:
|
||||||
with open(qemu.qemurunnerlog) as f:
|
with open(qemu.qemurunnerlog) as f:
|
||||||
self.assertTrue('media=cdrom' in f.read(), "Failed: %s" % cmd)
|
self.assertIn('media=cdrom', f.read(), "Failed: %s" % cmd)
|
||||||
|
|
||||||
@OETestID(2004)
|
@OETestID(2004)
|
||||||
def test_boot_recipe_image(self):
|
def test_boot_recipe_image(self):
|
||||||
"""Test runqemu recipe-image"""
|
"""Test runqemu recipe-image"""
|
||||||
cmd = "%s %s" % (self.cmd_common, self.recipe)
|
cmd = "%s %s" % (self.cmd_common, self.recipe)
|
||||||
with runqemu(self.recipe, ssh=False, launch_cmd=cmd) as qemu:
|
with runqemu(self.recipe, ssh=False, launch_cmd=cmd) as qemu:
|
||||||
self.assertTrue(qemu.runner.logged, "Failed: %s" % cmd)
|
with open(qemu.qemurunnerlog) as f:
|
||||||
|
self.assertTrue(qemu.runner.logged, "Failed: %s, %s" % (cmd, f.read()))
|
||||||
|
|
||||||
|
|
||||||
@OETestID(2005)
|
@OETestID(2005)
|
||||||
def test_boot_recipe_image_vmdk(self):
|
def test_boot_recipe_image_vmdk(self):
|
||||||
@@ -73,7 +76,7 @@ SYSLINUX_TIMEOUT = "10"
|
|||||||
cmd = "%s %s wic.vmdk" % (self.cmd_common, self.recipe)
|
cmd = "%s %s wic.vmdk" % (self.cmd_common, self.recipe)
|
||||||
with runqemu(self.recipe, ssh=False, launch_cmd=cmd) as qemu:
|
with runqemu(self.recipe, ssh=False, launch_cmd=cmd) as qemu:
|
||||||
with open(qemu.qemurunnerlog) as f:
|
with open(qemu.qemurunnerlog) as f:
|
||||||
self.assertTrue('format=vmdk' in f.read(), "Failed: %s" % cmd)
|
self.assertIn('format=vmdk', f.read(), "Failed: %s" % cmd)
|
||||||
|
|
||||||
@OETestID(2006)
|
@OETestID(2006)
|
||||||
def test_boot_recipe_image_vdi(self):
|
def test_boot_recipe_image_vdi(self):
|
||||||
@@ -81,14 +84,16 @@ SYSLINUX_TIMEOUT = "10"
|
|||||||
cmd = "%s %s wic.vdi" % (self.cmd_common, self.recipe)
|
cmd = "%s %s wic.vdi" % (self.cmd_common, self.recipe)
|
||||||
with runqemu(self.recipe, ssh=False, launch_cmd=cmd) as qemu:
|
with runqemu(self.recipe, ssh=False, launch_cmd=cmd) as qemu:
|
||||||
with open(qemu.qemurunnerlog) as f:
|
with open(qemu.qemurunnerlog) as f:
|
||||||
self.assertTrue('format=vdi' in f.read(), "Failed: %s" % cmd)
|
self.assertIn('format=vdi', f.read(), "Failed: %s" % cmd)
|
||||||
|
|
||||||
@OETestID(2007)
|
@OETestID(2007)
|
||||||
def test_boot_deploy(self):
|
def test_boot_deploy(self):
|
||||||
"""Test runqemu deploy_dir_image"""
|
"""Test runqemu deploy_dir_image"""
|
||||||
cmd = "%s %s" % (self.cmd_common, self.deploy_dir_image)
|
cmd = "%s %s" % (self.cmd_common, self.deploy_dir_image)
|
||||||
with runqemu(self.recipe, ssh=False, launch_cmd=cmd) as qemu:
|
with runqemu(self.recipe, ssh=False, launch_cmd=cmd) as qemu:
|
||||||
self.assertTrue(qemu.runner.logged, "Failed: %s" % cmd)
|
with open(qemu.qemurunnerlog) as f:
|
||||||
|
self.assertTrue(qemu.runner.logged, "Failed: %s, %s" % (cmd, f.read()))
|
||||||
|
|
||||||
|
|
||||||
@OETestID(2008)
|
@OETestID(2008)
|
||||||
def test_boot_deploy_hddimg(self):
|
def test_boot_deploy_hddimg(self):
|
||||||
@@ -96,7 +101,7 @@ SYSLINUX_TIMEOUT = "10"
|
|||||||
cmd = "%s %s hddimg" % (self.cmd_common, self.deploy_dir_image)
|
cmd = "%s %s hddimg" % (self.cmd_common, self.deploy_dir_image)
|
||||||
with runqemu(self.recipe, ssh=False, launch_cmd=cmd) as qemu:
|
with runqemu(self.recipe, ssh=False, launch_cmd=cmd) as qemu:
|
||||||
with open(qemu.qemurunnerlog) as f:
|
with open(qemu.qemurunnerlog) as f:
|
||||||
self.assertTrue(re.search('file=.*.hddimg', f.read()), "Failed: %s" % cmd)
|
self.assertTrue(re.search('file=.*.hddimg', f.read()), "Failed: %s, %s" % (cmd, f.read()))
|
||||||
|
|
||||||
@OETestID(2009)
|
@OETestID(2009)
|
||||||
def test_boot_machine_slirp(self):
|
def test_boot_machine_slirp(self):
|
||||||
@@ -104,7 +109,7 @@ SYSLINUX_TIMEOUT = "10"
|
|||||||
cmd = "%s slirp %s" % (self.cmd_common, self.machine)
|
cmd = "%s slirp %s" % (self.cmd_common, self.machine)
|
||||||
with runqemu(self.recipe, ssh=False, launch_cmd=cmd) as qemu:
|
with runqemu(self.recipe, ssh=False, launch_cmd=cmd) as qemu:
|
||||||
with open(qemu.qemurunnerlog) as f:
|
with open(qemu.qemurunnerlog) as f:
|
||||||
self.assertTrue(' -netdev user' in f.read(), "Failed: %s" % cmd)
|
self.assertIn(' -netdev user', f.read(), "Failed: %s" % cmd)
|
||||||
|
|
||||||
@OETestID(2009)
|
@OETestID(2009)
|
||||||
def test_boot_machine_slirp_qcow2(self):
|
def test_boot_machine_slirp_qcow2(self):
|
||||||
@@ -112,7 +117,7 @@ SYSLINUX_TIMEOUT = "10"
|
|||||||
cmd = "%s slirp wic.qcow2 %s" % (self.cmd_common, self.machine)
|
cmd = "%s slirp wic.qcow2 %s" % (self.cmd_common, self.machine)
|
||||||
with runqemu(self.recipe, ssh=False, launch_cmd=cmd) as qemu:
|
with runqemu(self.recipe, ssh=False, launch_cmd=cmd) as qemu:
|
||||||
with open(qemu.qemurunnerlog) as f:
|
with open(qemu.qemurunnerlog) as f:
|
||||||
self.assertTrue('format=qcow2' in f.read(), "Failed: %s" % cmd)
|
self.assertIn('format=qcow2', f.read(), "Failed: %s" % cmd)
|
||||||
|
|
||||||
@OETestID(2010)
|
@OETestID(2010)
|
||||||
def test_boot_qemu_boot(self):
|
def test_boot_qemu_boot(self):
|
||||||
@@ -123,7 +128,8 @@ SYSLINUX_TIMEOUT = "10"
|
|||||||
self.skipTest("%s not found" % qemuboot_conf)
|
self.skipTest("%s not found" % qemuboot_conf)
|
||||||
cmd = "%s %s" % (self.cmd_common, qemuboot_conf)
|
cmd = "%s %s" % (self.cmd_common, qemuboot_conf)
|
||||||
with runqemu(self.recipe, ssh=False, launch_cmd=cmd) as qemu:
|
with runqemu(self.recipe, ssh=False, launch_cmd=cmd) as qemu:
|
||||||
self.assertTrue(qemu.runner.logged, "Failed: %s" % cmd)
|
with open(qemu.qemurunnerlog) as f:
|
||||||
|
self.assertTrue(qemu.runner.logged, "Failed: %s, %s" % (cmd, f.read()))
|
||||||
|
|
||||||
@OETestID(2011)
|
@OETestID(2011)
|
||||||
def test_boot_rootfs(self):
|
def test_boot_rootfs(self):
|
||||||
@@ -134,7 +140,9 @@ SYSLINUX_TIMEOUT = "10"
|
|||||||
self.skipTest("%s not found" % rootfs)
|
self.skipTest("%s not found" % rootfs)
|
||||||
cmd = "%s %s" % (self.cmd_common, rootfs)
|
cmd = "%s %s" % (self.cmd_common, rootfs)
|
||||||
with runqemu(self.recipe, ssh=False, launch_cmd=cmd) as qemu:
|
with runqemu(self.recipe, ssh=False, launch_cmd=cmd) as qemu:
|
||||||
self.assertTrue(qemu.runner.logged, "Failed: %s" % cmd)
|
with open(qemu.qemurunnerlog) as f:
|
||||||
|
self.assertTrue(qemu.runner.logged, "Failed: %s, %s" % (cmd, f.read()))
|
||||||
|
|
||||||
|
|
||||||
# This test was designed as a separate class to test that shutdown
|
# This test was designed as a separate class to test that shutdown
|
||||||
# command will shutdown qemu as expected on each qemu architecture
|
# command will shutdown qemu as expected on each qemu architecture
|
||||||
|
|||||||
@@ -1,10 +1,12 @@
|
|||||||
from oeqa.selftest.case import OESelftestTestCase
|
from oeqa.selftest.case import OESelftestTestCase
|
||||||
from oeqa.utils.commands import runCmd, bitbake, get_bb_var, get_bb_vars
|
from oeqa.utils.commands import runCmd, bitbake, get_bb_var, get_bb_vars
|
||||||
import os
|
import os
|
||||||
|
import oe
|
||||||
import glob
|
import glob
|
||||||
import re
|
import re
|
||||||
import shutil
|
import shutil
|
||||||
import tempfile
|
import tempfile
|
||||||
|
from contextlib import contextmanager
|
||||||
from oeqa.core.decorator.oeid import OETestID
|
from oeqa.core.decorator.oeid import OETestID
|
||||||
from oeqa.utils.ftools import write_file
|
from oeqa.utils.ftools import write_file
|
||||||
|
|
||||||
@@ -15,23 +17,39 @@ class Signing(OESelftestTestCase):
|
|||||||
pub_key_path = ""
|
pub_key_path = ""
|
||||||
secret_key_path = ""
|
secret_key_path = ""
|
||||||
|
|
||||||
@classmethod
|
def setup_gpg(self):
|
||||||
def setUpClass(cls):
|
bitbake('gnupg-native -c addto_recipe_sysroot')
|
||||||
super(Signing, cls).setUpClass()
|
|
||||||
# Check that we can find the gpg binary and fail early if we can't
|
|
||||||
if not shutil.which("gpg"):
|
|
||||||
raise AssertionError("This test needs GnuPG")
|
|
||||||
|
|
||||||
cls.gpg_dir = tempfile.mkdtemp(prefix="oeqa-signing-")
|
self.gpg_dir = tempfile.mkdtemp(prefix="oeqa-signing-")
|
||||||
|
self.track_for_cleanup(self.gpg_dir)
|
||||||
|
|
||||||
cls.pub_key_path = os.path.join(cls.testlayer_path, 'files', 'signing', "key.pub")
|
self.pub_key_path = os.path.join(self.testlayer_path, 'files', 'signing', "key.pub")
|
||||||
cls.secret_key_path = os.path.join(cls.testlayer_path, 'files', 'signing', "key.secret")
|
self.secret_key_path = os.path.join(self.testlayer_path, 'files', 'signing', "key.secret")
|
||||||
|
|
||||||
runCmd('gpg --batch --homedir %s --import %s %s' % (cls.gpg_dir, cls.pub_key_path, cls.secret_key_path))
|
nsysroot = get_bb_var("RECIPE_SYSROOT_NATIVE", "gnupg-native")
|
||||||
|
runCmd('gpg --batch --homedir %s --import %s %s' % (self.gpg_dir, self.pub_key_path, self.secret_key_path), native_sysroot=nsysroot)
|
||||||
|
return nsysroot + get_bb_var("bindir_native")
|
||||||
|
|
||||||
@classmethod
|
|
||||||
def tearDownClass(cls):
|
@contextmanager
|
||||||
shutil.rmtree(cls.gpg_dir, ignore_errors=True)
|
def create_new_builddir(self, builddir, newbuilddir):
|
||||||
|
bb.utils.mkdirhier(newbuilddir)
|
||||||
|
oe.path.copytree(builddir + "/conf", newbuilddir + "/conf")
|
||||||
|
oe.path.copytree(builddir + "/cache", newbuilddir + "/cache")
|
||||||
|
|
||||||
|
origenv = os.environ.copy()
|
||||||
|
|
||||||
|
for e in os.environ:
|
||||||
|
if builddir in os.environ[e]:
|
||||||
|
os.environ[e] = os.environ[e].replace(builddir, newbuilddir)
|
||||||
|
|
||||||
|
os.chdir(newbuilddir)
|
||||||
|
try:
|
||||||
|
yield
|
||||||
|
finally:
|
||||||
|
for e in origenv:
|
||||||
|
os.environ[e] = origenv[e]
|
||||||
|
os.chdir(builddir)
|
||||||
|
|
||||||
@OETestID(1362)
|
@OETestID(1362)
|
||||||
def test_signing_packages(self):
|
def test_signing_packages(self):
|
||||||
@@ -46,6 +64,8 @@ class Signing(OESelftestTestCase):
|
|||||||
"""
|
"""
|
||||||
import oe.packagedata
|
import oe.packagedata
|
||||||
|
|
||||||
|
self.setup_gpg()
|
||||||
|
|
||||||
package_classes = get_bb_var('PACKAGE_CLASSES')
|
package_classes = get_bb_var('PACKAGE_CLASSES')
|
||||||
if 'package_rpm' not in package_classes:
|
if 'package_rpm' not in package_classes:
|
||||||
self.skipTest('This test requires RPM Packaging.')
|
self.skipTest('This test requires RPM Packaging.')
|
||||||
@@ -108,11 +128,12 @@ class Signing(OESelftestTestCase):
|
|||||||
|
|
||||||
test_recipe = 'ed'
|
test_recipe = 'ed'
|
||||||
|
|
||||||
builddir = os.environ.get('BUILDDIR')
|
# Since we need gpg but we can't use gpg-native for sstate signatures, we
|
||||||
|
# build gpg-native in our original builddir then run the tests in a second one.
|
||||||
|
builddir = os.environ.get('BUILDDIR') + "-testsign"
|
||||||
sstatedir = os.path.join(builddir, 'test-sstate')
|
sstatedir = os.path.join(builddir, 'test-sstate')
|
||||||
|
|
||||||
self.add_command_to_tearDown('bitbake -c clean %s' % test_recipe)
|
nsysroot = self.setup_gpg()
|
||||||
self.add_command_to_tearDown('rm -rf %s' % sstatedir)
|
|
||||||
|
|
||||||
feature = 'SSTATE_SIG_KEY ?= "testuser"\n'
|
feature = 'SSTATE_SIG_KEY ?= "testuser"\n'
|
||||||
feature += 'SSTATE_SIG_PASSPHRASE ?= "test123"\n'
|
feature += 'SSTATE_SIG_PASSPHRASE ?= "test123"\n'
|
||||||
@@ -124,19 +145,26 @@ class Signing(OESelftestTestCase):
|
|||||||
|
|
||||||
self.write_config(feature)
|
self.write_config(feature)
|
||||||
|
|
||||||
bitbake('-c clean %s' % test_recipe)
|
with self.create_new_builddir(os.environ['BUILDDIR'], builddir):
|
||||||
bitbake(test_recipe)
|
|
||||||
|
|
||||||
recipe_sig = glob.glob(sstatedir + '/*/*:ed:*_package.tgz.sig')
|
os.environ["PATH"] = nsysroot + ":" + os.environ["PATH"]
|
||||||
recipe_tgz = glob.glob(sstatedir + '/*/*:ed:*_package.tgz')
|
self.add_command_to_tearDown('bitbake -c clean %s' % test_recipe)
|
||||||
|
self.add_command_to_tearDown('rm -rf %s' % sstatedir)
|
||||||
|
self.add_command_to_tearDown('rm -rf %s' % builddir)
|
||||||
|
|
||||||
self.assertEqual(len(recipe_sig), 1, 'Failed to find .sig file.')
|
bitbake('-c clean %s' % test_recipe)
|
||||||
self.assertEqual(len(recipe_tgz), 1, 'Failed to find .tgz file.')
|
bitbake('-c populate_lic %s' % test_recipe)
|
||||||
|
|
||||||
ret = runCmd('gpg --homedir %s --verify %s %s' % (self.gpg_dir, recipe_sig[0], recipe_tgz[0]))
|
recipe_sig = glob.glob(sstatedir + '/*/*:ed:*_populate_lic.tgz.sig')
|
||||||
# gpg: Signature made Thu 22 Oct 2015 01:45:09 PM EEST using RSA key ID 61EEFB30
|
recipe_tgz = glob.glob(sstatedir + '/*/*:ed:*_populate_lic.tgz')
|
||||||
# gpg: Good signature from "testuser (nocomment) <testuser@email.com>"
|
|
||||||
self.assertIn('gpg: Good signature from', ret.output, 'Package signed incorrectly.')
|
self.assertEqual(len(recipe_sig), 1, 'Failed to find .sig file.')
|
||||||
|
self.assertEqual(len(recipe_tgz), 1, 'Failed to find .tgz file.')
|
||||||
|
|
||||||
|
ret = runCmd('gpg --homedir %s --verify %s %s' % (self.gpg_dir, recipe_sig[0], recipe_tgz[0]))
|
||||||
|
# gpg: Signature made Thu 22 Oct 2015 01:45:09 PM EEST using RSA key ID 61EEFB30
|
||||||
|
# gpg: Good signature from "testuser (nocomment) <testuser@email.com>"
|
||||||
|
self.assertIn('gpg: Good signature from', ret.output, 'Package signed incorrectly.')
|
||||||
|
|
||||||
|
|
||||||
class LockedSignatures(OESelftestTestCase):
|
class LockedSignatures(OESelftestTestCase):
|
||||||
|
|||||||
@@ -5,12 +5,13 @@ import os
|
|||||||
import time
|
import time
|
||||||
import glob
|
import glob
|
||||||
import sys
|
import sys
|
||||||
import imp
|
import importlib
|
||||||
import signal
|
import signal
|
||||||
from shutil import copyfile
|
from shutil import copyfile
|
||||||
from random import choice
|
from random import choice
|
||||||
|
|
||||||
import oeqa
|
import oeqa
|
||||||
|
import oe
|
||||||
|
|
||||||
from oeqa.core.context import OETestContext, OETestContextExecutor
|
from oeqa.core.context import OETestContext, OETestContextExecutor
|
||||||
from oeqa.core.exception import OEQAPreRun, OEQATestNotFound
|
from oeqa.core.exception import OEQAPreRun, OEQATestNotFound
|
||||||
@@ -100,10 +101,15 @@ class OESelftestTestContextExecutor(OETestContextExecutor):
|
|||||||
|
|
||||||
def _process_args(self, logger, args):
|
def _process_args(self, logger, args):
|
||||||
args.test_start_time = time.strftime("%Y%m%d%H%M%S")
|
args.test_start_time = time.strftime("%Y%m%d%H%M%S")
|
||||||
args.output_log = '%s-results-%s.log' % (self.name, args.test_start_time)
|
|
||||||
args.test_data_file = None
|
args.test_data_file = None
|
||||||
args.CASES_PATHS = None
|
args.CASES_PATHS = None
|
||||||
|
|
||||||
|
bbvars = get_bb_vars()
|
||||||
|
logdir = os.environ.get("BUILDDIR")
|
||||||
|
if 'LOG_DIR' in bbvars:
|
||||||
|
logdir = bbvars['LOG_DIR']
|
||||||
|
args.output_log = logdir + '/%s-results-%s.log' % (self.name, args.test_start_time)
|
||||||
|
|
||||||
super(OESelftestTestContextExecutor, self)._process_args(logger, args)
|
super(OESelftestTestContextExecutor, self)._process_args(logger, args)
|
||||||
|
|
||||||
if args.list_modules:
|
if args.list_modules:
|
||||||
@@ -113,7 +119,7 @@ class OESelftestTestContextExecutor(OETestContextExecutor):
|
|||||||
elif args.list_tests:
|
elif args.list_tests:
|
||||||
args.list_tests = 'name'
|
args.list_tests = 'name'
|
||||||
|
|
||||||
self.tc_kwargs['init']['td'] = get_bb_vars()
|
self.tc_kwargs['init']['td'] = bbvars
|
||||||
self.tc_kwargs['init']['machines'] = self._get_available_machines()
|
self.tc_kwargs['init']['machines'] = self._get_available_machines()
|
||||||
|
|
||||||
builddir = os.environ.get("BUILDDIR")
|
builddir = os.environ.get("BUILDDIR")
|
||||||
@@ -178,7 +184,7 @@ class OESelftestTestContextExecutor(OETestContextExecutor):
|
|||||||
self.tc.logger.info("\t%s" % l)
|
self.tc.logger.info("\t%s" % l)
|
||||||
|
|
||||||
sys.path.extend(layer_libdirs)
|
sys.path.extend(layer_libdirs)
|
||||||
imp.reload(oeqa.selftest)
|
importlib.reload(oeqa.selftest)
|
||||||
|
|
||||||
_check_required_env_variables(["BUILDDIR"])
|
_check_required_env_variables(["BUILDDIR"])
|
||||||
_check_presence_meta_selftest()
|
_check_presence_meta_selftest()
|
||||||
@@ -218,7 +224,7 @@ class OESelftestTestContextExecutor(OETestContextExecutor):
|
|||||||
configuration = {'TEST_TYPE': 'oeselftest',
|
configuration = {'TEST_TYPE': 'oeselftest',
|
||||||
'STARTTIME': args.test_start_time,
|
'STARTTIME': args.test_start_time,
|
||||||
'MACHINE': self.tc.td["MACHINE"],
|
'MACHINE': self.tc.td["MACHINE"],
|
||||||
'HOST_DISTRO': ('-'.join(platform.linux_distribution())).replace(' ', '-'),
|
'HOST_DISTRO': oe.lsb.distro_identifier().replace(' ', '-'),
|
||||||
'HOST_NAME': metadata['hostname'],
|
'HOST_NAME': metadata['hostname'],
|
||||||
'LAYERS': metadata['layers']}
|
'LAYERS': metadata['layers']}
|
||||||
return configuration
|
return configuration
|
||||||
@@ -303,7 +309,7 @@ class OESelftestTestContextExecutor(OETestContextExecutor):
|
|||||||
|
|
||||||
output_link = os.path.join(os.path.dirname(args.output_log),
|
output_link = os.path.join(os.path.dirname(args.output_log),
|
||||||
"%s-results.log" % self.name)
|
"%s-results.log" % self.name)
|
||||||
if os.path.exists(output_link):
|
if os.path.lexists(output_link):
|
||||||
os.remove(output_link)
|
os.remove(output_link)
|
||||||
os.symlink(args.output_log, output_link)
|
os.symlink(args.output_log, output_link)
|
||||||
|
|
||||||
|
|||||||
@@ -17,7 +17,8 @@ class BuildProject(metaclass=ABCMeta):
|
|||||||
self.uri = uri
|
self.uri = uri
|
||||||
self.archive = os.path.basename(uri)
|
self.archive = os.path.basename(uri)
|
||||||
if not tmpdir:
|
if not tmpdir:
|
||||||
tmpdir = tempfile.mkdtemp(prefix='buildproject')
|
self.tempdirobj = tempfile.TemporaryDirectory(prefix='buildproject-')
|
||||||
|
tmpdir = self.tempdirobj.name
|
||||||
self.localarchive = os.path.join(tmpdir, self.archive)
|
self.localarchive = os.path.join(tmpdir, self.archive)
|
||||||
self.dl_dir = dl_dir
|
self.dl_dir = dl_dir
|
||||||
if foldername:
|
if foldername:
|
||||||
|
|||||||
@@ -146,6 +146,9 @@ class Command(object):
|
|||||||
# At this point we know that the process has closed stdout/stderr, so
|
# At this point we know that the process has closed stdout/stderr, so
|
||||||
# it is safe and necessary to wait for the actual process completion.
|
# it is safe and necessary to wait for the actual process completion.
|
||||||
self.status = self.process.wait()
|
self.status = self.process.wait()
|
||||||
|
self.process.stdout.close()
|
||||||
|
if self.process.stderr:
|
||||||
|
self.process.stderr.close()
|
||||||
|
|
||||||
self.log.debug("Command '%s' returned %d as exit code." % (self.cmd, self.status))
|
self.log.debug("Command '%s' returned %d as exit code." % (self.cmd, self.status))
|
||||||
# logging the complete output is insane
|
# logging the complete output is insane
|
||||||
@@ -333,16 +336,20 @@ def runqemu(pn, ssh=True, runqemuparams='', image_fstype=None, launch_cmd=None,
|
|||||||
try:
|
try:
|
||||||
qemu.start(params=qemuparams, ssh=ssh, runqemuparams=runqemuparams, launch_cmd=launch_cmd, discard_writes=discard_writes)
|
qemu.start(params=qemuparams, ssh=ssh, runqemuparams=runqemuparams, launch_cmd=launch_cmd, discard_writes=discard_writes)
|
||||||
except bb.build.FuncFailed:
|
except bb.build.FuncFailed:
|
||||||
raise Exception('Failed to start QEMU - see the logs in %s' % logdir)
|
msg = 'Failed to start QEMU - see the logs in %s' % logdir
|
||||||
|
if os.path.exists(qemu.qemurunnerlog):
|
||||||
|
with open(qemu.qemurunnerlog, 'r') as f:
|
||||||
|
msg = msg + "Qemurunner log output from %s:\n%s" % (qemu.qemurunnerlog, f.read())
|
||||||
|
raise Exception(msg)
|
||||||
|
|
||||||
yield qemu
|
yield qemu
|
||||||
|
|
||||||
finally:
|
finally:
|
||||||
|
targetlogger.removeHandler(handler)
|
||||||
try:
|
try:
|
||||||
qemu.stop()
|
qemu.stop()
|
||||||
except:
|
except:
|
||||||
pass
|
pass
|
||||||
targetlogger.removeHandler(handler)
|
|
||||||
|
|
||||||
def updateEnv(env_file):
|
def updateEnv(env_file):
|
||||||
"""
|
"""
|
||||||
|
|||||||
@@ -1,13 +1,13 @@
|
|||||||
import http.server
|
import http.server
|
||||||
import multiprocessing
|
import multiprocessing
|
||||||
import os
|
import os
|
||||||
|
import traceback
|
||||||
|
import signal
|
||||||
from socketserver import ThreadingMixIn
|
from socketserver import ThreadingMixIn
|
||||||
|
|
||||||
class HTTPServer(ThreadingMixIn, http.server.HTTPServer):
|
class HTTPServer(ThreadingMixIn, http.server.HTTPServer):
|
||||||
|
|
||||||
def server_start(self, root_dir):
|
def server_start(self, root_dir, logger):
|
||||||
import signal
|
|
||||||
signal.signal(signal.SIGTERM, signal.SIG_DFL)
|
|
||||||
os.chdir(root_dir)
|
os.chdir(root_dir)
|
||||||
self.serve_forever()
|
self.serve_forever()
|
||||||
|
|
||||||
@@ -18,19 +18,40 @@ class HTTPRequestHandler(http.server.SimpleHTTPRequestHandler):
|
|||||||
|
|
||||||
class HTTPService(object):
|
class HTTPService(object):
|
||||||
|
|
||||||
def __init__(self, root_dir, host=''):
|
def __init__(self, root_dir, host='', logger=None):
|
||||||
self.root_dir = root_dir
|
self.root_dir = root_dir
|
||||||
self.host = host
|
self.host = host
|
||||||
self.port = 0
|
self.port = 0
|
||||||
|
self.logger = logger
|
||||||
|
|
||||||
def start(self):
|
def start(self):
|
||||||
|
if not os.path.exists(self.root_dir):
|
||||||
|
self.logger.info("Not starting HTTPService for directory %s which doesn't exist" % (self.root_dir))
|
||||||
|
return
|
||||||
|
|
||||||
self.server = HTTPServer((self.host, self.port), HTTPRequestHandler)
|
self.server = HTTPServer((self.host, self.port), HTTPRequestHandler)
|
||||||
if self.port == 0:
|
if self.port == 0:
|
||||||
self.port = self.server.server_port
|
self.port = self.server.server_port
|
||||||
self.process = multiprocessing.Process(target=self.server.server_start, args=[self.root_dir])
|
self.process = multiprocessing.Process(target=self.server.server_start, args=[self.root_dir, self.logger])
|
||||||
|
|
||||||
|
# The signal handler from testimage.bbclass can cause deadlocks here
|
||||||
|
# if the HTTPServer is terminated before it can restore the standard
|
||||||
|
#signal behaviour
|
||||||
|
orig = signal.getsignal(signal.SIGTERM)
|
||||||
|
signal.signal(signal.SIGTERM, signal.SIG_DFL)
|
||||||
self.process.start()
|
self.process.start()
|
||||||
|
signal.signal(signal.SIGTERM, orig)
|
||||||
|
|
||||||
|
if self.logger:
|
||||||
|
self.logger.info("Started HTTPService on %s:%s" % (self.host, self.port))
|
||||||
|
|
||||||
|
|
||||||
def stop(self):
|
def stop(self):
|
||||||
self.server.server_close()
|
if hasattr(self, "server"):
|
||||||
self.process.terminate()
|
self.server.server_close()
|
||||||
self.process.join()
|
if hasattr(self, "process"):
|
||||||
|
self.process.terminate()
|
||||||
|
self.process.join()
|
||||||
|
if self.logger:
|
||||||
|
self.logger.info("Stopped HTTPService on %s:%s" % (self.host, self.port))
|
||||||
|
|
||||||
|
|||||||
@@ -135,7 +135,7 @@ class QemuRunner:
|
|||||||
|
|
||||||
def launch(self, launch_cmd, get_ip = True, qemuparams = None, extra_bootparams = None, env = None):
|
def launch(self, launch_cmd, get_ip = True, qemuparams = None, extra_bootparams = None, env = None):
|
||||||
try:
|
try:
|
||||||
threadsock, threadport = self.create_socket()
|
self.threadsock, threadport = self.create_socket()
|
||||||
self.server_socket, self.serverport = self.create_socket()
|
self.server_socket, self.serverport = self.create_socket()
|
||||||
except socket.error as msg:
|
except socket.error as msg:
|
||||||
self.logger.error("Failed to create listening socket: %s" % msg[1])
|
self.logger.error("Failed to create listening socket: %s" % msg[1])
|
||||||
@@ -203,8 +203,8 @@ class QemuRunner:
|
|||||||
# No point waiting any longer
|
# No point waiting any longer
|
||||||
self.logger.debug('runqemu exited with code %d' % self.runqemu.returncode)
|
self.logger.debug('runqemu exited with code %d' % self.runqemu.returncode)
|
||||||
self._dump_host()
|
self._dump_host()
|
||||||
self.stop()
|
|
||||||
self.logger.debug("Output from runqemu:\n%s" % self.getOutput(output))
|
self.logger.debug("Output from runqemu:\n%s" % self.getOutput(output))
|
||||||
|
self.stop()
|
||||||
return False
|
return False
|
||||||
time.sleep(0.5)
|
time.sleep(0.5)
|
||||||
|
|
||||||
@@ -216,8 +216,8 @@ class QemuRunner:
|
|||||||
processes = ps.decode("utf-8")
|
processes = ps.decode("utf-8")
|
||||||
self.logger.debug("Running processes:\n%s" % processes)
|
self.logger.debug("Running processes:\n%s" % processes)
|
||||||
self._dump_host()
|
self._dump_host()
|
||||||
self.stop()
|
|
||||||
op = self.getOutput(output)
|
op = self.getOutput(output)
|
||||||
|
self.stop()
|
||||||
if op:
|
if op:
|
||||||
self.logger.error("Output from runqemu:\n%s" % op)
|
self.logger.error("Output from runqemu:\n%s" % op)
|
||||||
else:
|
else:
|
||||||
@@ -238,13 +238,13 @@ class QemuRunner:
|
|||||||
# because is possible to have control characters
|
# because is possible to have control characters
|
||||||
cmdline = re_control_char.sub(' ', cmdline)
|
cmdline = re_control_char.sub(' ', cmdline)
|
||||||
try:
|
try:
|
||||||
ips = re.findall("((?:[0-9]{1,3}\.){3}[0-9]{1,3})", cmdline.split("ip=")[1])
|
ips = re.findall(r"((?:[0-9]{1,3}\.){3}[0-9]{1,3})", cmdline.split("ip=")[1])
|
||||||
self.ip = ips[0]
|
self.ip = ips[0]
|
||||||
self.server_ip = ips[1]
|
self.server_ip = ips[1]
|
||||||
self.logger.debug("qemu cmdline used:\n{}".format(cmdline))
|
self.logger.debug("qemu cmdline used:\n{}".format(cmdline))
|
||||||
except (IndexError, ValueError):
|
except (IndexError, ValueError):
|
||||||
# Try to get network configuration from runqemu output
|
# Try to get network configuration from runqemu output
|
||||||
match = re.match('.*Network configuration: ([0-9.]+)::([0-9.]+):([0-9.]+)$.*',
|
match = re.match(r'.*Network configuration: ([0-9.]+)::([0-9.]+):([0-9.]+)$.*',
|
||||||
out, re.MULTILINE|re.DOTALL)
|
out, re.MULTILINE|re.DOTALL)
|
||||||
if match:
|
if match:
|
||||||
self.ip, self.server_ip, self.netmask = match.groups()
|
self.ip, self.server_ip, self.netmask = match.groups()
|
||||||
@@ -263,7 +263,7 @@ class QemuRunner:
|
|||||||
self.logger.debug("Target IP: %s" % self.ip)
|
self.logger.debug("Target IP: %s" % self.ip)
|
||||||
self.logger.debug("Server IP: %s" % self.server_ip)
|
self.logger.debug("Server IP: %s" % self.server_ip)
|
||||||
|
|
||||||
self.thread = LoggingThread(self.log, threadsock, self.logger)
|
self.thread = LoggingThread(self.log, self.threadsock, self.logger)
|
||||||
self.thread.start()
|
self.thread.start()
|
||||||
if not self.thread.connection_established.wait(self.boottime):
|
if not self.thread.connection_established.wait(self.boottime):
|
||||||
self.logger.error("Didn't receive a console connection from qemu. "
|
self.logger.error("Didn't receive a console connection from qemu. "
|
||||||
@@ -331,14 +331,14 @@ class QemuRunner:
|
|||||||
# If we are not able to login the tests can continue
|
# If we are not able to login the tests can continue
|
||||||
try:
|
try:
|
||||||
(status, output) = self.run_serial("root\n", raw=True)
|
(status, output) = self.run_serial("root\n", raw=True)
|
||||||
if re.search("root@[a-zA-Z0-9\-]+:~#", output):
|
if re.search(r"root@[a-zA-Z0-9\-]+:~#", output):
|
||||||
self.logged = True
|
self.logged = True
|
||||||
self.logger.debug("Logged as root in serial console")
|
self.logger.debug("Logged as root in serial console")
|
||||||
if netconf:
|
if netconf:
|
||||||
# configure guest networking
|
# configure guest networking
|
||||||
cmd = "ifconfig eth0 %s netmask %s up\n" % (self.ip, self.netmask)
|
cmd = "ifconfig eth0 %s netmask %s up\n" % (self.ip, self.netmask)
|
||||||
output = self.run_serial(cmd, raw=True)[1]
|
output = self.run_serial(cmd, raw=True)[1]
|
||||||
if re.search("root@[a-zA-Z0-9\-]+:~#", output):
|
if re.search(r"root@[a-zA-Z0-9\-]+:~#", output):
|
||||||
self.logger.debug("configured ip address %s", self.ip)
|
self.logger.debug("configured ip address %s", self.ip)
|
||||||
else:
|
else:
|
||||||
self.logger.debug("Couldn't configure guest networking")
|
self.logger.debug("Couldn't configure guest networking")
|
||||||
@@ -369,14 +369,22 @@ class QemuRunner:
|
|||||||
if self.runqemu.poll() is None:
|
if self.runqemu.poll() is None:
|
||||||
self.logger.debug("Sending SIGKILL to runqemu")
|
self.logger.debug("Sending SIGKILL to runqemu")
|
||||||
os.killpg(os.getpgid(self.runqemu.pid), signal.SIGKILL)
|
os.killpg(os.getpgid(self.runqemu.pid), signal.SIGKILL)
|
||||||
|
self.runqemu.stdin.close()
|
||||||
|
self.runqemu.stdout.close()
|
||||||
self.runqemu = None
|
self.runqemu = None
|
||||||
|
|
||||||
if hasattr(self, 'server_socket') and self.server_socket:
|
if hasattr(self, 'server_socket') and self.server_socket:
|
||||||
self.server_socket.close()
|
self.server_socket.close()
|
||||||
self.server_socket = None
|
self.server_socket = None
|
||||||
|
if hasattr(self, 'threadsock') and self.threadsock:
|
||||||
|
self.threadsock.close()
|
||||||
|
self.threadsock = None
|
||||||
self.qemupid = None
|
self.qemupid = None
|
||||||
self.ip = None
|
self.ip = None
|
||||||
if os.path.exists(self.qemu_pidfile):
|
if os.path.exists(self.qemu_pidfile):
|
||||||
os.remove(self.qemu_pidfile)
|
os.remove(self.qemu_pidfile)
|
||||||
|
if self.monitorpipe:
|
||||||
|
self.monitorpipe.close()
|
||||||
|
|
||||||
def stop_qemu_system(self):
|
def stop_qemu_system(self):
|
||||||
if self.qemupid:
|
if self.qemupid:
|
||||||
@@ -436,7 +444,7 @@ class QemuRunner:
|
|||||||
if answer:
|
if answer:
|
||||||
data += answer.decode('utf-8')
|
data += answer.decode('utf-8')
|
||||||
# Search the prompt to stop
|
# Search the prompt to stop
|
||||||
if re.search("[a-zA-Z0-9]+@[a-zA-Z0-9\-]+:~#", data):
|
if re.search(r"[a-zA-Z0-9]+@[a-zA-Z0-9\-]+:~#", data):
|
||||||
break
|
break
|
||||||
else:
|
else:
|
||||||
raise Exception("No data on serial console socket")
|
raise Exception("No data on serial console socket")
|
||||||
|
|||||||
@@ -20,8 +20,9 @@ class BuildProject(metaclass=ABCMeta):
|
|||||||
if not tmpdir:
|
if not tmpdir:
|
||||||
tmpdir = self.d.getVar('WORKDIR')
|
tmpdir = self.d.getVar('WORKDIR')
|
||||||
if not tmpdir:
|
if not tmpdir:
|
||||||
tmpdir = tempfile.mkdtemp(prefix='buildproject')
|
self.tempdirobj = tempfile.TemporaryDirectory(prefix='buildproject-')
|
||||||
self.localarchive = os.path.join(tmpdir,self.archive)
|
tmpdir = self.tempdirobj.name
|
||||||
|
self.localarchive = os.path.join(tmpdir, self.archive)
|
||||||
if foldername:
|
if foldername:
|
||||||
self.fname = foldername
|
self.fname = foldername
|
||||||
else:
|
else:
|
||||||
|
|||||||
@@ -6,8 +6,8 @@ SRC_URI = "${KERNELORG_MIRROR}/linux/utils/net/${BPN}/${BP}.tar.xz \
|
|||||||
file://0001-ip-Remove-unneed-header.patch \
|
file://0001-ip-Remove-unneed-header.patch \
|
||||||
"
|
"
|
||||||
|
|
||||||
SRC_URI[md5sum] = "8b8680e91390c57cab788fbf8e929479"
|
SRC_URI[md5sum] = "67eeebacaac4515cab73dfd2fc796af3"
|
||||||
SRC_URI[sha256sum] = "a9e6c70c95f513871c5e1f4e452c04fcb3c4d8a05be651bd794cd994a52daa45"
|
SRC_URI[sha256sum] = "d9ec5ca1f47d8a85416fa26e7dc1cbf5d067640eb60e90bdc1c7e5bdc6a29984"
|
||||||
|
|
||||||
# CFLAGS are computed in Makefile and reference CCOPTS
|
# CFLAGS are computed in Makefile and reference CCOPTS
|
||||||
#
|
#
|
||||||
@@ -0,0 +1,70 @@
|
|||||||
|
From 3e1d00481093e10775eaf69d619c45b32a4aa7dc Mon Sep 17 00:00:00 2001
|
||||||
|
From: =?UTF-8?q?Martin=20Hundeb=C3=B8ll?= <martin@geanix.com>
|
||||||
|
Date: Tue, 6 Nov 2018 14:50:47 +0100
|
||||||
|
Subject: [PATCH] buildinfo: strip sysroot and debug-prefix-map from compiler
|
||||||
|
info
|
||||||
|
MIME-Version: 1.0
|
||||||
|
Content-Type: text/plain; charset=UTF-8
|
||||||
|
Content-Transfer-Encoding: 8bit
|
||||||
|
|
||||||
|
The openssl build system generates buildinf.h containing the full
|
||||||
|
compiler command line used to compile objects. This breaks
|
||||||
|
reproducibility, as the compile command is baked into libcrypto, where
|
||||||
|
it is used when running `openssl version -f`.
|
||||||
|
|
||||||
|
Add stripped build variables for the compiler and cflags lines, and use
|
||||||
|
those when generating buildinfo.h.
|
||||||
|
|
||||||
|
This is based on a similar patch for older openssl versions:
|
||||||
|
https://patchwork.openembedded.org/patch/147229/
|
||||||
|
|
||||||
|
Upstream-Status: Inappropriate [OE specific]
|
||||||
|
Signed-off-by: Martin Hundebøll <martin@geanix.com>
|
||||||
|
---
|
||||||
|
Configurations/unix-Makefile.tmpl | 10 +++++++++-
|
||||||
|
crypto/build.info | 2 +-
|
||||||
|
2 files changed, 10 insertions(+), 2 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/Configurations/unix-Makefile.tmpl b/Configurations/unix-Makefile.tmpl
|
||||||
|
index 16af4d2087..54c162784c 100644
|
||||||
|
--- a/Configurations/unix-Makefile.tmpl
|
||||||
|
+++ b/Configurations/unix-Makefile.tmpl
|
||||||
|
@@ -317,13 +317,21 @@ BIN_LDFLAGS={- join(' ', $target{bin_lflags} || (),
|
||||||
|
'$(CNF_LDFLAGS)', '$(LDFLAGS)') -}
|
||||||
|
BIN_EX_LIBS=$(CNF_EX_LIBS) $(EX_LIBS)
|
||||||
|
|
||||||
|
-# CPPFLAGS_Q is used for one thing only: to build up buildinf.h
|
||||||
|
+# *_Q variables are used for one thing only: to build up buildinf.h
|
||||||
|
CPPFLAGS_Q={- $cppflags1 =~ s|([\\"])|\\$1|g;
|
||||||
|
$cppflags2 =~ s|([\\"])|\\$1|g;
|
||||||
|
$lib_cppflags =~ s|([\\"])|\\$1|g;
|
||||||
|
join(' ', $lib_cppflags || (), $cppflags2 || (),
|
||||||
|
$cppflags1 || ()) -}
|
||||||
|
|
||||||
|
+CFLAGS_Q={- for (@{$config{CFLAGS}}) {
|
||||||
|
+ s|-fdebug-prefix-map=[^ ]+|-fdebug-prefix-map=|g;
|
||||||
|
+ }
|
||||||
|
+ join(' ', @{$config{CFLAGS}}) -}
|
||||||
|
+
|
||||||
|
+CC_Q={- $config{CC} =~ s|--sysroot=[^ ]+|--sysroot=recipe-sysroot|g;
|
||||||
|
+ join(' ', $config{CC}) -}
|
||||||
|
+
|
||||||
|
PERLASM_SCHEME= {- $target{perlasm_scheme} -}
|
||||||
|
|
||||||
|
# For x86 assembler: Set PROCESSOR to 386 if you want to support
|
||||||
|
diff --git a/crypto/build.info b/crypto/build.info
|
||||||
|
index b515b7318e..8c9cee2a09 100644
|
||||||
|
--- a/crypto/build.info
|
||||||
|
+++ b/crypto/build.info
|
||||||
|
@@ -10,7 +10,7 @@ EXTRA= ../ms/uplink-x86.pl ../ms/uplink.c ../ms/applink.c \
|
||||||
|
ppccpuid.pl pariscid.pl alphacpuid.pl arm64cpuid.pl armv4cpuid.pl
|
||||||
|
|
||||||
|
DEPEND[cversion.o]=buildinf.h
|
||||||
|
-GENERATE[buildinf.h]=../util/mkbuildinf.pl "$(CC) $(LIB_CFLAGS) $(CPPFLAGS_Q)" "$(PLATFORM)"
|
||||||
|
+GENERATE[buildinf.h]=../util/mkbuildinf.pl "$(CC_Q) $(CFLAGS_Q) $(CPPFLAGS_Q)" "$(PLATFORM)"
|
||||||
|
DEPEND[buildinf.h]=../configdata.pm
|
||||||
|
|
||||||
|
GENERATE[uplink-x86.s]=../ms/uplink-x86.pl $(PERLASM_SCHEME)
|
||||||
|
--
|
||||||
|
2.19.1
|
||||||
|
|
||||||
@@ -1,108 +0,0 @@
|
|||||||
Backport patch to fix CVE-2018-0734. Remove a section which only remove a
|
|
||||||
space. It can't be applied because the context is different.
|
|
||||||
|
|
||||||
CVE: CVE-2018-0734
|
|
||||||
Upstream-Status: Backport
|
|
||||||
|
|
||||||
Signed-off-by: Kai Kang <kai.kang@windriver.com>
|
|
||||||
|
|
||||||
From 8abfe72e8c1de1b95f50aa0d9134803b4d00070f Mon Sep 17 00:00:00 2001
|
|
||||||
From: Pauli <paul.dale@oracle.com>
|
|
||||||
Date: Wed, 24 Oct 2018 07:42:46 +1000
|
|
||||||
Subject: [PATCH] Timing vulnerability in DSA signature generation
|
|
||||||
(CVE-2018-0734).
|
|
||||||
|
|
||||||
Avoid a timing attack that leaks information via a side channel that
|
|
||||||
triggers when a BN is resized. Increasing the size of the BNs
|
|
||||||
prior to doing anything with them suppresses the attack.
|
|
||||||
|
|
||||||
Thanks due to Samuel Weiser for finding and locating this.
|
|
||||||
|
|
||||||
Reviewed-by: Bernd Edlinger <bernd.edlinger@hotmail.de>
|
|
||||||
(Merged from https://github.com/openssl/openssl/pull/7486)
|
|
||||||
|
|
||||||
(cherry picked from commit a9cfb8c2aa7254a4aa6a1716909e3f8cb78049b6)
|
|
||||||
---
|
|
||||||
crypto/dsa/dsa_ossl.c | 28 +++++++++++++++-------------
|
|
||||||
1 file changed, 15 insertions(+), 13 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/crypto/dsa/dsa_ossl.c b/crypto/dsa/dsa_ossl.c
|
|
||||||
index ca20811200..2dd2d7489a 100644
|
|
||||||
--- a/crypto/dsa/dsa_ossl.c
|
|
||||||
+++ b/crypto/dsa/dsa_ossl.c
|
|
||||||
@@ -9,6 +9,7 @@
|
|
||||||
|
|
||||||
#include <stdio.h>
|
|
||||||
#include "internal/cryptlib.h"
|
|
||||||
+#include "internal/bn_int.h"
|
|
||||||
#include <openssl/bn.h>
|
|
||||||
#include <openssl/sha.h>
|
|
||||||
#include "dsa_locl.h"
|
|
||||||
@@ -180,9 +181,9 @@ static int dsa_sign_setup(DSA *dsa, BN_CTX *ctx_in,
|
|
||||||
{
|
|
||||||
BN_CTX *ctx = NULL;
|
|
||||||
BIGNUM *k, *kinv = NULL, *r = *rp;
|
|
||||||
- BIGNUM *l, *m;
|
|
||||||
+ BIGNUM *l;
|
|
||||||
int ret = 0;
|
|
||||||
- int q_bits;
|
|
||||||
+ int q_bits, q_words;
|
|
||||||
|
|
||||||
if (!dsa->p || !dsa->q || !dsa->g) {
|
|
||||||
DSAerr(DSA_F_DSA_SIGN_SETUP, DSA_R_MISSING_PARAMETERS);
|
|
||||||
@@ -191,8 +192,7 @@ static int dsa_sign_setup(DSA *dsa, BN_CTX *ctx_in,
|
|
||||||
|
|
||||||
k = BN_new();
|
|
||||||
l = BN_new();
|
|
||||||
- m = BN_new();
|
|
||||||
- if (k == NULL || l == NULL || m == NULL)
|
|
||||||
+ if (k == NULL || l == NULL)
|
|
||||||
goto err;
|
|
||||||
|
|
||||||
if (ctx_in == NULL) {
|
|
||||||
@@ -203,9 +203,9 @@ static int dsa_sign_setup(DSA *dsa, BN_CTX *ctx_in,
|
|
||||||
|
|
||||||
/* Preallocate space */
|
|
||||||
q_bits = BN_num_bits(dsa->q);
|
|
||||||
- if (!BN_set_bit(k, q_bits)
|
|
||||||
- || !BN_set_bit(l, q_bits)
|
|
||||||
- || !BN_set_bit(m, q_bits))
|
|
||||||
+ q_words = bn_get_top(dsa->q);
|
|
||||||
+ if (!bn_wexpand(k, q_words + 2)
|
|
||||||
+ || !bn_wexpand(l, q_words + 2))
|
|
||||||
goto err;
|
|
||||||
|
|
||||||
/* Get random k */
|
|
||||||
@@ -240,14 +240,17 @@ static int dsa_sign_setup(DSA *dsa, BN_CTX *ctx_in,
|
|
||||||
* small timing information leakage. We then choose the sum that is
|
|
||||||
* one bit longer than the modulus.
|
|
||||||
*
|
|
||||||
- * TODO: revisit the BN_copy aiming for a memory access agnostic
|
|
||||||
- * conditional copy.
|
|
||||||
+ * There are some concerns about the efficacy of doing this. More
|
|
||||||
+ * specificly refer to the discussion starting with:
|
|
||||||
+ * https://github.com/openssl/openssl/pull/7486#discussion_r228323705
|
|
||||||
+ * The fix is to rework BN so these gymnastics aren't required.
|
|
||||||
*/
|
|
||||||
if (!BN_add(l, k, dsa->q)
|
|
||||||
- || !BN_add(m, l, dsa->q)
|
|
||||||
- || !BN_copy(k, BN_num_bits(l) > q_bits ? l : m))
|
|
||||||
+ || !BN_add(k, l, dsa->q))
|
|
||||||
goto err;
|
|
||||||
|
|
||||||
+ BN_consttime_swap(BN_is_bit_set(l, q_bits), k, l, q_words + 2);
|
|
||||||
+
|
|
||||||
if ((dsa)->meth->bn_mod_exp != NULL) {
|
|
||||||
if (!dsa->meth->bn_mod_exp(dsa, r, dsa->g, k, dsa->p, ctx,
|
|
||||||
dsa->method_mont_p))
|
|
||||||
@@ -275,7 +278,6 @@ static int dsa_sign_setup(DSA *dsa, BN_CTX *ctx_in,
|
|
||||||
BN_CTX_free(ctx);
|
|
||||||
BN_clear_free(k);
|
|
||||||
BN_clear_free(l);
|
|
||||||
- BN_clear_free(m);
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
--
|
|
||||||
2.17.0
|
|
||||||
|
|
||||||
@@ -1,50 +0,0 @@
|
|||||||
CVE: CVE-2018-0735
|
|
||||||
|
|
||||||
Upstream-Status: Backport
|
|
||||||
|
|
||||||
Signed-off-by: Kai Kang <kai.kang@windriver.com>
|
|
||||||
|
|
||||||
From b1d6d55ece1c26fa2829e2b819b038d7b6d692b4 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Pauli <paul.dale@oracle.com>
|
|
||||||
Date: Fri, 26 Oct 2018 10:54:58 +1000
|
|
||||||
Subject: [PATCH] Timing vulnerability in ECDSA signature generation
|
|
||||||
(CVE-2018-0735)
|
|
||||||
|
|
||||||
Preallocate an extra limb for some of the big numbers to avoid a reallocation
|
|
||||||
that can potentially provide a side channel.
|
|
||||||
|
|
||||||
Reviewed-by: Bernd Edlinger <bernd.edlinger@hotmail.de>
|
|
||||||
(Merged from https://github.com/openssl/openssl/pull/7486)
|
|
||||||
|
|
||||||
(cherry picked from commit 99540ec79491f59ed8b46b4edf130e17dc907f52)
|
|
||||||
---
|
|
||||||
crypto/ec/ec_mult.c | 6 +++---
|
|
||||||
1 file changed, 3 insertions(+), 3 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/crypto/ec/ec_mult.c b/crypto/ec/ec_mult.c
|
|
||||||
index 7e1b3650e7..0e0a5e1394 100644
|
|
||||||
--- a/crypto/ec/ec_mult.c
|
|
||||||
+++ b/crypto/ec/ec_mult.c
|
|
||||||
@@ -206,8 +206,8 @@ int ec_scalar_mul_ladder(const EC_GROUP *group, EC_POINT *r,
|
|
||||||
*/
|
|
||||||
cardinality_bits = BN_num_bits(cardinality);
|
|
||||||
group_top = bn_get_top(cardinality);
|
|
||||||
- if ((bn_wexpand(k, group_top + 1) == NULL)
|
|
||||||
- || (bn_wexpand(lambda, group_top + 1) == NULL)) {
|
|
||||||
+ if ((bn_wexpand(k, group_top + 2) == NULL)
|
|
||||||
+ || (bn_wexpand(lambda, group_top + 2) == NULL)) {
|
|
||||||
ECerr(EC_F_EC_SCALAR_MUL_LADDER, ERR_R_BN_LIB);
|
|
||||||
goto err;
|
|
||||||
}
|
|
||||||
@@ -244,7 +244,7 @@ int ec_scalar_mul_ladder(const EC_GROUP *group, EC_POINT *r,
|
|
||||||
* k := scalar + 2*cardinality
|
|
||||||
*/
|
|
||||||
kbit = BN_is_bit_set(lambda, cardinality_bits);
|
|
||||||
- BN_consttime_swap(kbit, k, lambda, group_top + 1);
|
|
||||||
+ BN_consttime_swap(kbit, k, lambda, group_top + 2);
|
|
||||||
|
|
||||||
group_top = bn_get_top(group->field);
|
|
||||||
if ((bn_wexpand(s->X, group_top) == NULL)
|
|
||||||
--
|
|
||||||
2.17.0
|
|
||||||
|
|
||||||
@@ -354,8 +354,8 @@ openssl_package_preprocess () {
|
|||||||
for file in `find ${PKGD} -name *.h -o -name *.pc -o -name *.so`; do
|
for file in `find ${PKGD} -name *.h -o -name *.pc -o -name *.so`; do
|
||||||
rm $file
|
rm $file
|
||||||
done
|
done
|
||||||
rm ${PKGD}/usr/bin/openssl
|
rm ${PKGD}${bindir}/openssl
|
||||||
rm ${PKGD}/usr/bin/c_rehash
|
rm ${PKGD}${bindir}/c_rehash
|
||||||
rmdir ${PKGD}/usr/bin
|
rmdir ${PKGD}${bindir}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -15,16 +15,15 @@ SRC_URI = "http://www.openssl.org/source/openssl-${PV}.tar.gz \
|
|||||||
file://run-ptest \
|
file://run-ptest \
|
||||||
file://openssl-c_rehash.sh \
|
file://openssl-c_rehash.sh \
|
||||||
file://0001-skip-test_symbol_presence.patch \
|
file://0001-skip-test_symbol_presence.patch \
|
||||||
file://0002-fix-CVE-2018-0734.patch \
|
file://0001-buildinfo-strip-sysroot-and-debug-prefix-map-from-co.patch \
|
||||||
file://0003-fix-CVE-2018-0735.patch \
|
|
||||||
"
|
"
|
||||||
|
|
||||||
SRC_URI_append_class-nativesdk = " \
|
SRC_URI_append_class-nativesdk = " \
|
||||||
file://environment.d-openssl.sh \
|
file://environment.d-openssl.sh \
|
||||||
"
|
"
|
||||||
|
|
||||||
SRC_URI[md5sum] = "7079eb017429e0ffb9efb42bf80ccb21"
|
SRC_URI[md5sum] = "963deb2272d6be7d4c2458afd2517b73"
|
||||||
SRC_URI[sha256sum] = "2836875a0f89c03d0fdf483941512613a50cfb421d6fd94b9f41d7279d586a3d"
|
SRC_URI[sha256sum] = "fc20130f8b7cbd2fb918b2f14e2f429e109c31ddd0fb38fc5d71d9ffed3f9f41"
|
||||||
|
|
||||||
inherit lib_package multilib_header ptest
|
inherit lib_package multilib_header ptest
|
||||||
|
|
||||||
@@ -7,7 +7,7 @@ SECTION = "console/network"
|
|||||||
|
|
||||||
DEPENDS = "openssl readline"
|
DEPENDS = "openssl readline"
|
||||||
|
|
||||||
LICENSE = "GPL-2.0+-with-OpenSSL-exception"
|
LICENSE = "GPL-2.0-with-OpenSSL-exception"
|
||||||
LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263 \
|
LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263 \
|
||||||
file://README;beginline=257;endline=287;md5=338c05eadd013872abb1d6e198e10a3f"
|
file://README;beginline=257;endline=287;md5=338c05eadd013872abb1d6e198e10a3f"
|
||||||
|
|
||||||
|
|||||||
@@ -55,35 +55,35 @@ inherit cml1 systemd update-rc.d ptest
|
|||||||
|
|
||||||
# internal helper
|
# internal helper
|
||||||
def busybox_cfg(feature, tokens, cnf, rem):
|
def busybox_cfg(feature, tokens, cnf, rem):
|
||||||
if type(tokens) == type(""):
|
if type(tokens) == type(""):
|
||||||
tokens = [tokens]
|
tokens = [tokens]
|
||||||
rem.extend(['/^[# ]*' + token + '[ =]/d' for token in tokens])
|
rem.extend(['/^[# ]*' + token + '[ =]/d' for token in tokens])
|
||||||
if feature:
|
if feature:
|
||||||
cnf.extend([token + '=y' for token in tokens])
|
cnf.extend([token + '=y' for token in tokens])
|
||||||
else:
|
else:
|
||||||
cnf.extend(['# ' + token + ' is not set' for token in tokens])
|
cnf.extend(['# ' + token + ' is not set' for token in tokens])
|
||||||
|
|
||||||
# Map distro features to config settings
|
# Map distro features to config settings
|
||||||
def features_to_busybox_settings(d):
|
def features_to_busybox_settings(d):
|
||||||
cnf, rem = ([], [])
|
cnf, rem = ([], [])
|
||||||
busybox_cfg(bb.utils.contains('DISTRO_FEATURES', 'ipv6', True, False, d), 'CONFIG_FEATURE_IPV6', cnf, rem)
|
busybox_cfg(bb.utils.contains('DISTRO_FEATURES', 'ipv6', True, False, d), 'CONFIG_FEATURE_IPV6', cnf, rem)
|
||||||
busybox_cfg(True, 'CONFIG_LFS', cnf, rem)
|
busybox_cfg(True, 'CONFIG_LFS', cnf, rem)
|
||||||
busybox_cfg(True, 'CONFIG_FDISK_SUPPORT_LARGE_DISKS', cnf, rem)
|
busybox_cfg(True, 'CONFIG_FDISK_SUPPORT_LARGE_DISKS', cnf, rem)
|
||||||
busybox_cfg(bb.utils.contains('DISTRO_FEATURES', 'nls', True, False, d), 'CONFIG_LOCALE_SUPPORT', cnf, rem)
|
busybox_cfg(bb.utils.contains('DISTRO_FEATURES', 'nls', True, False, d), 'CONFIG_LOCALE_SUPPORT', cnf, rem)
|
||||||
busybox_cfg(bb.utils.contains('DISTRO_FEATURES', 'ipv4', True, False, d), 'CONFIG_FEATURE_IFUPDOWN_IPV4', cnf, rem)
|
busybox_cfg(bb.utils.contains('DISTRO_FEATURES', 'ipv4', True, False, d), 'CONFIG_FEATURE_IFUPDOWN_IPV4', cnf, rem)
|
||||||
busybox_cfg(bb.utils.contains('DISTRO_FEATURES', 'ipv6', True, False, d), 'CONFIG_FEATURE_IFUPDOWN_IPV6', cnf, rem)
|
busybox_cfg(bb.utils.contains('DISTRO_FEATURES', 'ipv6', True, False, d), 'CONFIG_FEATURE_IFUPDOWN_IPV6', cnf, rem)
|
||||||
busybox_cfg(bb.utils.contains('DISTRO_FEATURES', 'wifi', True, False, d), 'CONFIG_RFKILL', cnf, rem)
|
busybox_cfg(bb.utils.contains('DISTRO_FEATURES', 'wifi', True, False, d), 'CONFIG_RFKILL', cnf, rem)
|
||||||
busybox_cfg(bb.utils.contains('DISTRO_FEATURES', 'bluetooth', True, False, d), 'CONFIG_RFKILL', cnf, rem)
|
busybox_cfg(bb.utils.contains('DISTRO_FEATURES', 'bluetooth', True, False, d), 'CONFIG_RFKILL', cnf, rem)
|
||||||
return "\n".join(cnf), "\n".join(rem)
|
return "\n".join(cnf), "\n".join(rem)
|
||||||
|
|
||||||
# X, Y = ${@features_to_busybox_settings(d)}
|
# X, Y = ${@features_to_busybox_settings(d)}
|
||||||
# unfortunately doesn't seem to work with bitbake, workaround:
|
# unfortunately doesn't seem to work with bitbake, workaround:
|
||||||
def features_to_busybox_conf(d):
|
def features_to_busybox_conf(d):
|
||||||
cnf, rem = features_to_busybox_settings(d)
|
cnf, rem = features_to_busybox_settings(d)
|
||||||
return cnf
|
return cnf
|
||||||
def features_to_busybox_del(d):
|
def features_to_busybox_del(d):
|
||||||
cnf, rem = features_to_busybox_settings(d)
|
cnf, rem = features_to_busybox_settings(d)
|
||||||
return rem
|
return rem
|
||||||
|
|
||||||
configmangle = '/CONFIG_EXTRA_CFLAGS/d; \
|
configmangle = '/CONFIG_EXTRA_CFLAGS/d; \
|
||||||
'
|
'
|
||||||
@@ -184,7 +184,8 @@ do_compile() {
|
|||||||
oe_runmake busybox_unstripped
|
oe_runmake busybox_unstripped
|
||||||
mv busybox_unstripped busybox.$s
|
mv busybox_unstripped busybox.$s
|
||||||
oe_runmake busybox.links
|
oe_runmake busybox.links
|
||||||
mv busybox.links busybox.links.$s
|
sort busybox.links > busybox.links.$s
|
||||||
|
rm busybox.links
|
||||||
done
|
done
|
||||||
|
|
||||||
# hard fail if sh is being linked to the suid busybox (detects bug 10346)
|
# hard fail if sh is being linked to the suid busybox (detects bug 10346)
|
||||||
|
|||||||
@@ -129,11 +129,11 @@ ALTERNATIVE_LINK_NAME[kill.1] = "${mandir}/man1/kill.1"
|
|||||||
ALTERNATIVE_LINK_NAME[stat.1] = "${mandir}/man1/stat.1"
|
ALTERNATIVE_LINK_NAME[stat.1] = "${mandir}/man1/stat.1"
|
||||||
|
|
||||||
python __anonymous() {
|
python __anonymous() {
|
||||||
for prog in d.getVar('base_bindir_progs').split():
|
for prog in d.getVar('base_bindir_progs').split():
|
||||||
d.setVarFlag('ALTERNATIVE_LINK_NAME', prog, '%s/%s' % (d.getVar('base_bindir'), prog))
|
d.setVarFlag('ALTERNATIVE_LINK_NAME', prog, '%s/%s' % (d.getVar('base_bindir'), prog))
|
||||||
|
|
||||||
for prog in d.getVar('sbindir_progs').split():
|
for prog in d.getVar('sbindir_progs').split():
|
||||||
d.setVarFlag('ALTERNATIVE_LINK_NAME', prog, '%s/%s' % (d.getVar('sbindir'), prog))
|
d.setVarFlag('ALTERNATIVE_LINK_NAME', prog, '%s/%s' % (d.getVar('sbindir'), prog))
|
||||||
}
|
}
|
||||||
|
|
||||||
BBCLASSEXTEND = "native nativesdk"
|
BBCLASSEXTEND = "native nativesdk"
|
||||||
|
|||||||
@@ -22,7 +22,7 @@ IMAGE_FSTYPES = "wic.vmdk"
|
|||||||
|
|
||||||
inherit core-image module-base setuptools3
|
inherit core-image module-base setuptools3
|
||||||
|
|
||||||
SRCREV ?= "53332c9f1bd270f34a290fea68fde1d3ff41f86e"
|
SRCREV ?= "ca417455d79b29cd14cd8d39a9da904bf23fcc48"
|
||||||
SRC_URI = "git://git.yoctoproject.org/poky;branch=thud \
|
SRC_URI = "git://git.yoctoproject.org/poky;branch=thud \
|
||||||
file://Yocto_Build_Appliance.vmx \
|
file://Yocto_Build_Appliance.vmx \
|
||||||
file://Yocto_Build_Appliance.vmxf \
|
file://Yocto_Build_Appliance.vmxf \
|
||||||
@@ -116,9 +116,9 @@ IMAGE_PREPROCESS_COMMAND += "do_populate_poky_src; "
|
|||||||
addtask rootfs after do_unpack
|
addtask rootfs after do_unpack
|
||||||
|
|
||||||
python () {
|
python () {
|
||||||
# Ensure we run these usually noexec tasks
|
# Ensure we run these usually noexec tasks
|
||||||
d.delVarFlag("do_fetch", "noexec")
|
d.delVarFlag("do_fetch", "noexec")
|
||||||
d.delVarFlag("do_unpack", "noexec")
|
d.delVarFlag("do_unpack", "noexec")
|
||||||
}
|
}
|
||||||
|
|
||||||
create_bundle_files () {
|
create_bundle_files () {
|
||||||
|
|||||||
@@ -239,6 +239,9 @@ do_install() {
|
|||||||
# Delete journal README, as log can be symlinked inside volatile.
|
# Delete journal README, as log can be symlinked inside volatile.
|
||||||
rm -f ${D}/${localstatedir}/log/README
|
rm -f ${D}/${localstatedir}/log/README
|
||||||
|
|
||||||
|
# journal-remote creates this at start
|
||||||
|
rm -rf ${D}/${localstatedir}/log/journal/remote
|
||||||
|
|
||||||
install -d ${D}${systemd_unitdir}/system/graphical.target.wants
|
install -d ${D}${systemd_unitdir}/system/graphical.target.wants
|
||||||
install -d ${D}${systemd_unitdir}/system/multi-user.target.wants
|
install -d ${D}${systemd_unitdir}/system/multi-user.target.wants
|
||||||
install -d ${D}${systemd_unitdir}/system/poweroff.target.wants
|
install -d ${D}${systemd_unitdir}/system/poweroff.target.wants
|
||||||
@@ -309,19 +312,35 @@ PACKAGES =+ "\
|
|||||||
${PN}-zsh-completion \
|
${PN}-zsh-completion \
|
||||||
${PN}-xorg-xinitrc \
|
${PN}-xorg-xinitrc \
|
||||||
${PN}-container \
|
${PN}-container \
|
||||||
|
${PN}-journal-gatewayd \
|
||||||
|
${PN}-journal-upload \
|
||||||
|
${PN}-journal-remote \
|
||||||
${PN}-extra-utils \
|
${PN}-extra-utils \
|
||||||
"
|
"
|
||||||
|
|
||||||
SUMMARY_${PN}-container = "Tools for containers and VMs"
|
SUMMARY_${PN}-container = "Tools for containers and VMs"
|
||||||
DESCRIPTION_${PN}-container = "Systemd tools to spawn and manage containers and virtual machines."
|
DESCRIPTION_${PN}-container = "Systemd tools to spawn and manage containers and virtual machines."
|
||||||
|
|
||||||
SYSTEMD_PACKAGES = "${@bb.utils.contains('PACKAGECONFIG', 'binfmt', '${PN}-binfmt', '', d)}"
|
SUMMARY_${PN}-journal-gatewayd = "HTTP server for journal events"
|
||||||
|
DESCRIPTION_${PN}-journal-gatewayd = "systemd-journal-gatewayd serves journal events over the network. Clients must connect using HTTP. The server listens on port 19531 by default."
|
||||||
|
|
||||||
|
SUMMARY_${PN}-journal-upload = "Send journal messages over the network"
|
||||||
|
DESCRIPTION_${PN}-journal-upload = "systemd-journal-upload uploads journal entries to a specified URL."
|
||||||
|
|
||||||
|
SUMMARY_${PN}-journal-remote = "Receive journal messages over the network"
|
||||||
|
DESCRIPTION_${PN}-journal-remote = "systemd-journal-remote is a command to receive serialized journal events and store them to journal files."
|
||||||
|
|
||||||
|
SYSTEMD_PACKAGES = "${@bb.utils.contains('PACKAGECONFIG', 'binfmt', '${PN}-binfmt', '', d)} \
|
||||||
|
${@bb.utils.contains('PACKAGECONFIG', 'microhttpd', '${PN}-journal-gatewayd', '', d)} \
|
||||||
|
${@bb.utils.contains('PACKAGECONFIG', 'journal-upload', '${PN}-journal-upload', '', d)} \
|
||||||
|
${@bb.utils.contains('PACKAGECONFIG', '', '${PN}-journal-remote', '', d)} \
|
||||||
|
"
|
||||||
SYSTEMD_SERVICE_${PN}-binfmt = "systemd-binfmt.service"
|
SYSTEMD_SERVICE_${PN}-binfmt = "systemd-binfmt.service"
|
||||||
|
|
||||||
USERADD_PACKAGES = "${PN} ${PN}-extra-utils"
|
USERADD_PACKAGES = "${PN} ${PN}-extra-utils ${PN}-journal-gateway ${PN}-journal-upload ${PN}-journal-remote"
|
||||||
USERADD_PARAM_${PN} += "${@bb.utils.contains('PACKAGECONFIG', 'microhttpd', '--system -d / -M --shell /bin/nologin systemd-journal-gateway;', '', d)}"
|
USERADD_PARAM_${PN}-journal-gateway += "${@bb.utils.contains('PACKAGECONFIG', 'microhttpd', '--system -d / -M --shell /bin/nologin systemd-journal-gateway;', '', d)}"
|
||||||
USERADD_PARAM_${PN} += "${@bb.utils.contains('PACKAGECONFIG', 'microhttpd', '--system -d / -M --shell /bin/nologin systemd-journal-remote;', '', d)}"
|
USERADD_PARAM_${PN}-journal-remote += "${@bb.utils.contains('PACKAGECONFIG', 'microhttpd', '--system -d / -M --shell /bin/nologin systemd-journal-remote;', '', d)}"
|
||||||
USERADD_PARAM_${PN} += "${@bb.utils.contains('PACKAGECONFIG', 'journal-upload', '--system -d / -M --shell /bin/nologin systemd-journal-upload;', '', d)}"
|
USERADD_PARAM_${PN}-journal-upload += "${@bb.utils.contains('PACKAGECONFIG', 'journal-upload', '--system -d / -M --shell /bin/nologin systemd-journal-upload;', '', d)}"
|
||||||
USERADD_PARAM_${PN} += "${@bb.utils.contains('PACKAGECONFIG', 'timesyncd', '--system -d / -M --shell /bin/nologin systemd-timesync;', '', d)}"
|
USERADD_PARAM_${PN} += "${@bb.utils.contains('PACKAGECONFIG', 'timesyncd', '--system -d / -M --shell /bin/nologin systemd-timesync;', '', d)}"
|
||||||
USERADD_PARAM_${PN} += "${@bb.utils.contains('PACKAGECONFIG', 'networkd', '--system -d / -M --shell /bin/nologin systemd-network;', '', d)}"
|
USERADD_PARAM_${PN} += "${@bb.utils.contains('PACKAGECONFIG', 'networkd', '--system -d / -M --shell /bin/nologin systemd-network;', '', d)}"
|
||||||
USERADD_PARAM_${PN} += "${@bb.utils.contains('PACKAGECONFIG', 'coredump', '--system -d / -M --shell /bin/nologin systemd-coredump;', '', d)}"
|
USERADD_PARAM_${PN} += "${@bb.utils.contains('PACKAGECONFIG', 'coredump', '--system -d / -M --shell /bin/nologin systemd-coredump;', '', d)}"
|
||||||
@@ -362,6 +381,29 @@ RRECOMMENDS_${PN}-binfmt = "kernel-module-binfmt-misc"
|
|||||||
|
|
||||||
RRECOMMENDS_${PN}-vconsole-setup = "kbd kbd-consolefonts kbd-keymaps"
|
RRECOMMENDS_${PN}-vconsole-setup = "kbd kbd-consolefonts kbd-keymaps"
|
||||||
|
|
||||||
|
|
||||||
|
FILES_${PN}-journal-gatewayd = "${rootlibexecdir}/systemd/systemd-journal-gatewayd \
|
||||||
|
${systemd_system_unitdir}/systemd-journal-gatewayd.service \
|
||||||
|
${systemd_system_unitdir}/systemd-journal-gatewayd.socket \
|
||||||
|
${systemd_system_unitdir}/sockets.target.wants/systemd-journal-gatewayd.socket \
|
||||||
|
${datadir}/systemd/gatewayd/browse.html \
|
||||||
|
"
|
||||||
|
SYSTEMD_SERVICE_${PN}-journal-gatewayd = "systemd-journal-gatewayd.socket"
|
||||||
|
|
||||||
|
FILES_${PN}-journal-upload = "${rootlibexecdir}/systemd/systemd-journal-upload \
|
||||||
|
${systemd_system_unitdir}/systemd-journal-upload.service \
|
||||||
|
${sysconfdir}/systemd/journal-upload.conf \
|
||||||
|
"
|
||||||
|
SYSTEMD_SERVICE_${PN}-journal-upload = "systemd-journal-upload.service"
|
||||||
|
|
||||||
|
FILES_${PN}-journal-remote = "${rootlibexecdir}/systemd/systemd-journal-remote \
|
||||||
|
${sysconfdir}/systemd/journal-remote.conf \
|
||||||
|
${systemd_system_unitdir}/systemd-journal-remote.service \
|
||||||
|
${systemd_system_unitdir}/systemd-journal-remote.socket \
|
||||||
|
"
|
||||||
|
SYSTEMD_SERVICE_${PN}-remote = "systemd-journal-remote.socket"
|
||||||
|
|
||||||
|
|
||||||
FILES_${PN}-container = "${sysconfdir}/dbus-1/system.d/org.freedesktop.import1.conf \
|
FILES_${PN}-container = "${sysconfdir}/dbus-1/system.d/org.freedesktop.import1.conf \
|
||||||
${sysconfdir}/dbus-1/system.d/org.freedesktop.machine1.conf \
|
${sysconfdir}/dbus-1/system.d/org.freedesktop.machine1.conf \
|
||||||
${base_bindir}/machinectl \
|
${base_bindir}/machinectl \
|
||||||
@@ -380,9 +422,6 @@ FILES_${PN}-container = "${sysconfdir}/dbus-1/system.d/org.freedesktop.import1.c
|
|||||||
${systemd_system_unitdir}/var-lib-machines.mount \
|
${systemd_system_unitdir}/var-lib-machines.mount \
|
||||||
${rootlibexecdir}/systemd/systemd-import \
|
${rootlibexecdir}/systemd/systemd-import \
|
||||||
${rootlibexecdir}/systemd/systemd-importd \
|
${rootlibexecdir}/systemd/systemd-importd \
|
||||||
${rootlibexecdir}/systemd/systemd-journal-gatewayd \
|
|
||||||
${rootlibexecdir}/systemd/systemd-journal-remote \
|
|
||||||
${rootlibexecdir}/systemd/systemd-journal-upload \
|
|
||||||
${rootlibexecdir}/systemd/systemd-machined \
|
${rootlibexecdir}/systemd/systemd-machined \
|
||||||
${rootlibexecdir}/systemd/systemd-pull \
|
${rootlibexecdir}/systemd/systemd-pull \
|
||||||
${exec_prefix}/lib/tmpfiles.d/systemd-nspawn.conf \
|
${exec_prefix}/lib/tmpfiles.d/systemd-nspawn.conf \
|
||||||
@@ -396,6 +435,12 @@ FILES_${PN}-container = "${sysconfdir}/dbus-1/system.d/org.freedesktop.import1.c
|
|||||||
${datadir}/polkit-1/actions/org.freedesktop.machine1.policy \
|
${datadir}/polkit-1/actions/org.freedesktop.machine1.policy \
|
||||||
"
|
"
|
||||||
|
|
||||||
|
RRECOMMENDS_${PN}-container += "\
|
||||||
|
${PN}-journal-upload \
|
||||||
|
${PN}-journal-remote \
|
||||||
|
${PN}-journal-gatewayd \
|
||||||
|
"
|
||||||
|
|
||||||
FILES_${PN}-extra-utils = "\
|
FILES_${PN}-extra-utils = "\
|
||||||
${base_bindir}/systemd-escape \
|
${base_bindir}/systemd-escape \
|
||||||
${base_bindir}/systemd-inhibit \
|
${base_bindir}/systemd-inhibit \
|
||||||
|
|||||||
@@ -0,0 +1,73 @@
|
|||||||
|
From 80810f04f2de6bae6e394f52ad9cdd2189862f74 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Jaroslav Rohel <jrohel@redhat.com>
|
||||||
|
Date: Fri, 9 Nov 2018 07:35:13 +0100
|
||||||
|
Subject: [PATCH] Fix setup of logging (log domains) (RhBug:1645897)
|
||||||
|
|
||||||
|
New debug messages were added into GLib library. These messages come
|
||||||
|
from the "GLib" log domain and were not hidden in the standard and
|
||||||
|
quiet mode of the application.
|
||||||
|
This fix hides log messages regardless on source log domain.
|
||||||
|
|
||||||
|
Upstream-Status: Backport
|
||||||
|
|
||||||
|
Signed-off-by: Zheng Ruoqin <zhengrq.fnst@cn.fujitsu.com>
|
||||||
|
---
|
||||||
|
src/createrepo_shared.c | 19 ++++++-------------
|
||||||
|
src/misc.c | 5 ++++-
|
||||||
|
2 files changed, 10 insertions(+), 14 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/src/createrepo_shared.c b/src/createrepo_shared.c
|
||||||
|
index 8a26787..7cb8ba8 100644
|
||||||
|
--- a/src/createrepo_shared.c
|
||||||
|
+++ b/src/createrepo_shared.c
|
||||||
|
@@ -270,24 +270,17 @@ cr_lock_repo(const gchar *repo_dir,
|
||||||
|
void
|
||||||
|
cr_setup_logging(gboolean quiet, gboolean verbose)
|
||||||
|
{
|
||||||
|
- g_log_set_default_handler (cr_log_fn, NULL);
|
||||||
|
-
|
||||||
|
if (quiet) {
|
||||||
|
// Quiet mode
|
||||||
|
- GLogLevelFlags levels = G_LOG_LEVEL_MESSAGE | G_LOG_LEVEL_INFO |
|
||||||
|
- G_LOG_LEVEL_DEBUG | G_LOG_LEVEL_WARNING;
|
||||||
|
- g_log_set_handler(NULL, levels, cr_null_log_fn, NULL);
|
||||||
|
- g_log_set_handler("C_CREATEREPOLIB", levels, cr_null_log_fn, NULL);
|
||||||
|
+ GLogLevelFlags hidden_levels = G_LOG_LEVEL_MESSAGE | G_LOG_LEVEL_INFO |
|
||||||
|
+ G_LOG_LEVEL_DEBUG | G_LOG_LEVEL_WARNING;
|
||||||
|
+ g_log_set_default_handler (cr_log_fn, GINT_TO_POINTER(hidden_levels));
|
||||||
|
} else if (verbose) {
|
||||||
|
// Verbose mode
|
||||||
|
- GLogLevelFlags levels = G_LOG_LEVEL_MESSAGE | G_LOG_LEVEL_INFO |
|
||||||
|
- G_LOG_LEVEL_DEBUG | G_LOG_LEVEL_WARNING;
|
||||||
|
- g_log_set_handler(NULL, levels, cr_log_fn, NULL);
|
||||||
|
- g_log_set_handler("C_CREATEREPOLIB", levels, cr_log_fn, NULL);
|
||||||
|
+ g_log_set_default_handler (cr_log_fn, GINT_TO_POINTER(0));
|
||||||
|
} else {
|
||||||
|
// Standard mode
|
||||||
|
- GLogLevelFlags levels = G_LOG_LEVEL_DEBUG;
|
||||||
|
- g_log_set_handler(NULL, levels, cr_null_log_fn, NULL);
|
||||||
|
- g_log_set_handler("C_CREATEREPOLIB", levels, cr_null_log_fn, NULL);
|
||||||
|
+ GLogLevelFlags hidden_levels = G_LOG_LEVEL_DEBUG;
|
||||||
|
+ g_log_set_default_handler (cr_log_fn, GINT_TO_POINTER(hidden_levels));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
diff --git a/src/misc.c b/src/misc.c
|
||||||
|
index 9937480..9549a44 100644
|
||||||
|
--- a/src/misc.c
|
||||||
|
+++ b/src/misc.c
|
||||||
|
@@ -912,8 +912,11 @@ void
|
||||||
|
cr_log_fn(const gchar *log_domain,
|
||||||
|
GLogLevelFlags log_level,
|
||||||
|
const gchar *message,
|
||||||
|
- G_GNUC_UNUSED gpointer user_data)
|
||||||
|
+ gpointer user_data)
|
||||||
|
{
|
||||||
|
+ gint hidden_log_levels = GPOINTER_TO_INT(user_data);
|
||||||
|
+ if (log_level & hidden_log_levels)
|
||||||
|
+ return;
|
||||||
|
switch(log_level) {
|
||||||
|
case G_LOG_LEVEL_ERROR:
|
||||||
|
if (log_domain) g_printerr("%s: ", log_domain);
|
||||||
|
--
|
||||||
|
1.8.3.1
|
||||||
|
|
||||||
@@ -7,6 +7,7 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263"
|
|||||||
SRC_URI = "git://github.com/rpm-software-management/createrepo_c \
|
SRC_URI = "git://github.com/rpm-software-management/createrepo_c \
|
||||||
file://0001-Do-not-set-PYTHON_INSTALL_DIR-by-running-python.patch \
|
file://0001-Do-not-set-PYTHON_INSTALL_DIR-by-running-python.patch \
|
||||||
file://0001-Correctly-install-the-shared-library.patch \
|
file://0001-Correctly-install-the-shared-library.patch \
|
||||||
|
file://0001-Fix-setup-of-logging-log-domains-RhBug-1645897.patch \
|
||||||
"
|
"
|
||||||
|
|
||||||
PV = "0.11.1+git${SRCPV}"
|
PV = "0.11.1+git${SRCPV}"
|
||||||
|
|||||||
@@ -6,36 +6,32 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504"
|
|||||||
DEPENDS = "libtool bzip2 zlib virtual/libintl"
|
DEPENDS = "libtool bzip2 zlib virtual/libintl"
|
||||||
DEPENDS_append_libc-musl = " argp-standalone fts "
|
DEPENDS_append_libc-musl = " argp-standalone fts "
|
||||||
# The Debian patches below are from:
|
# The Debian patches below are from:
|
||||||
# http://ftp.de.debian.org/debian/pool/main/e/elfutils/elfutils_0.170-0.5.debian.tar.xz
|
# http://ftp.de.debian.org/debian/pool/main/e/elfutils/elfutils_0.175-1.debian.tar.xz
|
||||||
SRC_URI = "https://sourceware.org/elfutils/ftp/${PV}/${BP}.tar.bz2 \
|
SRC_URI = "https://sourceware.org/elfutils/ftp/${PV}/${BP}.tar.bz2 \
|
||||||
file://0001-dso-link-change.patch \
|
file://0001-dso-link-change.patch \
|
||||||
file://0002-Fix-elf_cvt_gunhash-if-dest-and-src-are-same.patch \
|
file://0002-Fix-elf_cvt_gunhash-if-dest-and-src-are-same.patch \
|
||||||
file://0003-fixheadercheck.patch \
|
file://0003-fixheadercheck.patch \
|
||||||
file://0004-Disable-the-test-to-convert-euc-jp.patch \
|
file://0004-Disable-the-test-to-convert-euc-jp.patch \
|
||||||
file://0005-fix-a-stack-usage-warning.patch \
|
|
||||||
file://0006-Fix-build-on-aarch64-musl.patch \
|
file://0006-Fix-build-on-aarch64-musl.patch \
|
||||||
file://0007-Fix-control-path-where-we-have-str-as-uninitialized-.patch \
|
file://0007-Fix-control-path-where-we-have-str-as-uninitialized-.patch \
|
||||||
file://0001-libasm-may-link-with-libbz2-if-found.patch \
|
file://0001-libasm-may-link-with-libbz2-if-found.patch \
|
||||||
file://0001-libelf-elf_end.c-check-data_list.data.d.d_buf-before.patch \
|
file://0001-libelf-elf_end.c-check-data_list.data.d.d_buf-before.patch \
|
||||||
file://0001-libdwfl-Sanity-check-partial-core-file-data-reads.patch \
|
file://debian/hppa_backend.diff \
|
||||||
file://0001-size-Handle-recursive-ELF-ar-files.patch \
|
file://debian/arm_backend.diff \
|
||||||
file://0001-arlib-Check-that-sh_entsize-isn-t-zero.patch \
|
file://debian/mips_backend.diff \
|
||||||
file://debian/0001-hppa_backend.patch \
|
file://debian/mips_readelf_w.patch \
|
||||||
file://debian/0001-arm_backend.patch \
|
file://debian/kfreebsd_path.patch \
|
||||||
file://debian/0001-mips_backend.patch \
|
|
||||||
file://debian/0001-testsuite-ignore-elflint.patch \
|
|
||||||
file://debian/0001-mips_readelf_w.patch \
|
|
||||||
file://debian/0001-Ignore-differences-between-mips-machine-identifiers.patch \
|
file://debian/0001-Ignore-differences-between-mips-machine-identifiers.patch \
|
||||||
file://debian/0002-Add-support-for-mips64-abis-in-mips_retval.c.patch \
|
file://debian/0002-Add-support-for-mips64-abis-in-mips_retval.c.patch \
|
||||||
file://debian/0003-Add-mips-n64-relocation-format-hack.patch \
|
file://debian/0003-Add-mips-n64-relocation-format-hack.patch \
|
||||||
|
file://debian/hurd_path.patch \
|
||||||
file://debian/ignore_strmerge.diff \
|
file://debian/ignore_strmerge.diff \
|
||||||
file://debian/0001-fix-gcc7-ftbfs.patch \
|
file://debian/disable_werror.patch \
|
||||||
file://debian/0001-disable_werror.patch \
|
|
||||||
"
|
"
|
||||||
SRC_URI_append_libc-musl = " file://0008-build-Provide-alternatives-for-glibc-assumptions-hel.patch"
|
SRC_URI_append_libc-musl = " file://0008-build-Provide-alternatives-for-glibc-assumptions-hel.patch"
|
||||||
|
|
||||||
SRC_URI[md5sum] = "48bec24c0c8b2c16820326956dff9378"
|
SRC_URI[md5sum] = "9a02b0382b78cc2d515fb950275d4c02"
|
||||||
SRC_URI[sha256sum] = "cdf27e70076e10a29539d89e367101d516bc4aa11b0d7777fe52139e3fcad08a"
|
SRC_URI[sha256sum] = "f7ef925541ee32c6d15ae5cb27da5f119e01a5ccdbe9fe57bf836730d7b7a65b"
|
||||||
|
|
||||||
inherit autotools gettext
|
inherit autotools gettext
|
||||||
|
|
||||||
@@ -1,36 +0,0 @@
|
|||||||
From b518841fbc1431d7c5baa016e35f10fb647b5958 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Mark Wielaard <mark@klomp.org>
|
|
||||||
Date: Thu, 18 Oct 2018 19:01:52 +0200
|
|
||||||
Subject: [PATCH] arlib: Check that sh_entsize isn't zero.
|
|
||||||
|
|
||||||
A bogus ELF file could have sh_entsize as zero. Don't divide by zero,
|
|
||||||
but just assume there are no symbols in the section.
|
|
||||||
|
|
||||||
https://sourceware.org/bugzilla/show_bug.cgi?id=23786
|
|
||||||
|
|
||||||
Signed-off-by: Mark Wielaard <mark@klomp.org>
|
|
||||||
|
|
||||||
CVE: CVE-2018-18521
|
|
||||||
Upstream-Status: Backport [http://sourceware.org/git/elfutils.git]
|
|
||||||
Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
|
|
||||||
---
|
|
||||||
src/arlib.c | 3 +++
|
|
||||||
1 file changed, 3 insertions(+)
|
|
||||||
|
|
||||||
diff --git a/src/arlib.c b/src/arlib.c
|
|
||||||
index 778e087..a6521e3 100644
|
|
||||||
--- a/src/arlib.c
|
|
||||||
+++ b/src/arlib.c
|
|
||||||
@@ -252,6 +252,9 @@ arlib_add_symbols (Elf *elf, const char *arfname, const char *membername,
|
|
||||||
if (data == NULL)
|
|
||||||
continue;
|
|
||||||
|
|
||||||
+ if (shdr->sh_entsize == 0)
|
|
||||||
+ continue;
|
|
||||||
+
|
|
||||||
int nsyms = shdr->sh_size / shdr->sh_entsize;
|
|
||||||
for (int ndx = shdr->sh_info; ndx < nsyms; ++ndx)
|
|
||||||
{
|
|
||||||
--
|
|
||||||
2.7.4
|
|
||||||
|
|
||||||
@@ -1,60 +0,0 @@
|
|||||||
From 8cbb2f8de89d65ca52d4242f213a6206b48d2c8d Mon Sep 17 00:00:00 2001
|
|
||||||
From: Hongxu Jia <hongxu.jia@windriver.com>
|
|
||||||
Date: Fri, 2 Nov 2018 14:22:31 +0800
|
|
||||||
Subject: [PATCH] libdwfl: Sanity check partial core file data reads.
|
|
||||||
|
|
||||||
There were two issues when reading note data from a core file.
|
|
||||||
We didn't check if the data we already had in a buffer was big
|
|
||||||
enough. And if we did get the data, we should check if we got
|
|
||||||
everything, or just a part of the data.
|
|
||||||
|
|
||||||
https://sourceware.org/bugzilla/show_bug.cgi?id=23752
|
|
||||||
|
|
||||||
Signed-off-by: Mark Wielaard <mark@klomp.org>
|
|
||||||
|
|
||||||
CVE: CVE-2018-18310
|
|
||||||
Upstream-Status: Backport [http://sourceware.org/git/elfutils.git]
|
|
||||||
Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
|
|
||||||
---
|
|
||||||
libdwfl/dwfl_segment_report_module.c | 13 +++++++++++--
|
|
||||||
1 file changed, 11 insertions(+), 2 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/libdwfl/dwfl_segment_report_module.c b/libdwfl/dwfl_segment_report_module.c
|
|
||||||
index 36e5c82..8749884 100644
|
|
||||||
--- a/libdwfl/dwfl_segment_report_module.c
|
|
||||||
+++ b/libdwfl/dwfl_segment_report_module.c
|
|
||||||
@@ -1,5 +1,5 @@
|
|
||||||
/* Sniff out modules from ELF headers visible in memory segments.
|
|
||||||
- Copyright (C) 2008-2012, 2014, 2015 Red Hat, Inc.
|
|
||||||
+ Copyright (C) 2008-2012, 2014, 2015, 2018 Red Hat, Inc.
|
|
||||||
This file is part of elfutils.
|
|
||||||
|
|
||||||
This file is free software; you can redistribute it and/or modify
|
|
||||||
@@ -301,7 +301,10 @@ dwfl_segment_report_module (Dwfl *dwfl, int ndx, const char *name,
|
|
||||||
inline bool read_portion (void **data, size_t *data_size,
|
|
||||||
GElf_Addr vaddr, size_t filesz)
|
|
||||||
{
|
|
||||||
- if (vaddr - start + filesz > buffer_available
|
|
||||||
+ /* Check whether we will have to read the segment data, or if it
|
|
||||||
+ can be returned from the existing buffer. */
|
|
||||||
+ if (filesz > buffer_available
|
|
||||||
+ || vaddr - start > buffer_available - filesz
|
|
||||||
/* If we're in string mode, then don't consider the buffer we have
|
|
||||||
sufficient unless it contains the terminator of the string. */
|
|
||||||
|| (filesz == 0 && memchr (vaddr - start + buffer, '\0',
|
|
||||||
@@ -459,6 +462,12 @@ dwfl_segment_report_module (Dwfl *dwfl, int ndx, const char *name,
|
|
||||||
if (read_portion (&data, &data_size, vaddr, filesz))
|
|
||||||
return;
|
|
||||||
|
|
||||||
+ /* data_size will be zero if we got everything from the initial
|
|
||||||
+ buffer, otherwise it will be the size of the new buffer that
|
|
||||||
+ could be read. */
|
|
||||||
+ if (data_size != 0)
|
|
||||||
+ filesz = data_size;
|
|
||||||
+
|
|
||||||
assert (sizeof (Elf32_Nhdr) == sizeof (Elf64_Nhdr));
|
|
||||||
|
|
||||||
void *notes;
|
|
||||||
--
|
|
||||||
2.7.4
|
|
||||||
|
|
||||||
@@ -1,40 +0,0 @@
|
|||||||
From 440d34d0ee37964453245895d38d7fc31bcf3d7d Mon Sep 17 00:00:00 2001
|
|
||||||
From: Mark Wielaard <mark@klomp.org>
|
|
||||||
Date: Thu, 18 Oct 2018 23:15:48 +0200
|
|
||||||
Subject: [PATCH] size: Handle recursive ELF ar files.
|
|
||||||
|
|
||||||
eu-size didn't handle an ELF ar file that contained an ar file itself
|
|
||||||
correctly. handle_ar would recursively call itself but close the ELF
|
|
||||||
file before returning. Only close the ELF file at the top-level.
|
|
||||||
|
|
||||||
https://sourceware.org/bugzilla/show_bug.cgi?id=23787
|
|
||||||
|
|
||||||
Signed-off-by: Mark Wielaard <mark@klomp.org>
|
|
||||||
|
|
||||||
CVE: CVE-2018-18520
|
|
||||||
Upstream-Status: Backport [http://sourceware.org/git/elfutils.git]
|
|
||||||
Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
|
|
||||||
---
|
|
||||||
src/size.c | 6 ++++--
|
|
||||||
1 file changed, 4 insertions(+), 2 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/src/size.c b/src/size.c
|
|
||||||
index 5ff3f2a..f01fd88 100644
|
|
||||||
--- a/src/size.c
|
|
||||||
+++ b/src/size.c
|
|
||||||
@@ -374,8 +374,10 @@ handle_ar (int fd, Elf *elf, const char *prefix, const char *fname)
|
|
||||||
INTERNAL_ERROR (fname);
|
|
||||||
}
|
|
||||||
|
|
||||||
- if (unlikely (elf_end (elf) != 0))
|
|
||||||
- INTERNAL_ERROR (fname);
|
|
||||||
+ /* Only close ELF handle if this was a "top level" ar file. */
|
|
||||||
+ if (prefix == NULL)
|
|
||||||
+ if (unlikely (elf_end (elf) != 0))
|
|
||||||
+ INTERNAL_ERROR (fname);
|
|
||||||
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
--
|
|
||||||
2.7.4
|
|
||||||
|
|
||||||
@@ -1,35 +0,0 @@
|
|||||||
From 4d7ea681932556ad881f6841de90d0bfff56f8d7 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Hongxu Jia <hongxu.jia@windriver.com>
|
|
||||||
Date: Tue, 15 Aug 2017 17:25:16 +0800
|
|
||||||
Subject: [PATCH 5/7] fix a stack-usage warning
|
|
||||||
|
|
||||||
Upstream-Status: Pending
|
|
||||||
|
|
||||||
not use a variable to as a array size, otherwise the warning to error
|
|
||||||
that
|
|
||||||
stack usage might be unbounded [-Werror=stack-usage=] will happen
|
|
||||||
|
|
||||||
Signed-off-by: Roy Li <rongqing.li@windriver.com>
|
|
||||||
|
|
||||||
Rebase to 0.170
|
|
||||||
Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
|
|
||||||
---
|
|
||||||
backends/ppc_initreg.c | 2 +-
|
|
||||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
|
||||||
|
|
||||||
diff --git a/backends/ppc_initreg.c b/backends/ppc_initreg.c
|
|
||||||
index 3e4432f..59c2d97 100644
|
|
||||||
--- a/backends/ppc_initreg.c
|
|
||||||
+++ b/backends/ppc_initreg.c
|
|
||||||
@@ -94,7 +94,7 @@ ppc_set_initial_registers_tid (pid_t tid __attribute__ ((unused)),
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
const size_t gprs = sizeof (user_regs.r.gpr) / sizeof (*user_regs.r.gpr);
|
|
||||||
- Dwarf_Word dwarf_regs[gprs];
|
|
||||||
+ Dwarf_Word dwarf_regs[sizeof (user_regs.r.gpr) / sizeof (*user_regs.r.gpr)];
|
|
||||||
for (unsigned gpr = 0; gpr < gprs; gpr++)
|
|
||||||
dwarf_regs[gpr] = user_regs.r.gpr[gpr];
|
|
||||||
if (! setfunc (0, gprs, dwarf_regs, arg))
|
|
||||||
--
|
|
||||||
2.7.4
|
|
||||||
|
|
||||||
@@ -7,7 +7,7 @@ Subject: [PATCH] build: Provide alternatives for glibc assumptions helps
|
|||||||
Upstream-Status: Pending
|
Upstream-Status: Pending
|
||||||
Signed-off-by: Khem Raj <raj.khem@gmail.com>
|
Signed-off-by: Khem Raj <raj.khem@gmail.com>
|
||||||
|
|
||||||
Rebase to 0.174
|
Rebase to 0.175
|
||||||
|
|
||||||
Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
|
Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
|
||||||
---
|
---
|
||||||
@@ -129,7 +129,7 @@ index 7bcf61c..c345797 100644
|
|||||||
return elf_errmsg (error & 0xffff);
|
return elf_errmsg (error & 0xffff);
|
||||||
case OTHER_ERROR (LIBDW):
|
case OTHER_ERROR (LIBDW):
|
||||||
diff --git a/libdwfl/dwfl_module_getdwarf.c b/libdwfl/dwfl_module_getdwarf.c
|
diff --git a/libdwfl/dwfl_module_getdwarf.c b/libdwfl/dwfl_module_getdwarf.c
|
||||||
index af6838a..c079d6a 100644
|
index 56e6105..f4a0649 100644
|
||||||
--- a/libdwfl/dwfl_module_getdwarf.c
|
--- a/libdwfl/dwfl_module_getdwarf.c
|
||||||
+++ b/libdwfl/dwfl_module_getdwarf.c
|
+++ b/libdwfl/dwfl_module_getdwarf.c
|
||||||
@@ -35,6 +35,7 @@
|
@@ -35,6 +35,7 @@
|
||||||
@@ -161,12 +161,12 @@ index f849128..6f0aca1 100644
|
|||||||
#define crc32 __libdwfl_crc32
|
#define crc32 __libdwfl_crc32
|
||||||
#include <libdwflP.h>
|
#include <libdwflP.h>
|
||||||
diff --git a/libdwfl/linux-kernel-modules.c b/libdwfl/linux-kernel-modules.c
|
diff --git a/libdwfl/linux-kernel-modules.c b/libdwfl/linux-kernel-modules.c
|
||||||
index 9d0fef2..9fc09b8 100644
|
index 360e4ee..b5aa397 100644
|
||||||
--- a/libdwfl/linux-kernel-modules.c
|
--- a/libdwfl/linux-kernel-modules.c
|
||||||
+++ b/libdwfl/linux-kernel-modules.c
|
+++ b/libdwfl/linux-kernel-modules.c
|
||||||
@@ -40,6 +40,7 @@
|
@@ -41,6 +41,7 @@
|
||||||
#include <system.h>
|
|
||||||
|
|
||||||
|
#include "libelfP.h"
|
||||||
#include "libdwflP.h"
|
#include "libdwflP.h"
|
||||||
+#include "system.h"
|
+#include "system.h"
|
||||||
#include <inttypes.h>
|
#include <inttypes.h>
|
||||||
@@ -198,7 +198,7 @@ index 5dc632b..14da1b7 100644
|
|||||||
|
|
||||||
#endif /* elf.h */
|
#endif /* elf.h */
|
||||||
diff --git a/libelf/libelf.h b/libelf/libelf.h
|
diff --git a/libelf/libelf.h b/libelf/libelf.h
|
||||||
index d11358c..4cf9272 100644
|
index 1ff11c9..c21e018 100644
|
||||||
--- a/libelf/libelf.h
|
--- a/libelf/libelf.h
|
||||||
+++ b/libelf/libelf.h
|
+++ b/libelf/libelf.h
|
||||||
@@ -29,6 +29,7 @@
|
@@ -29,6 +29,7 @@
|
||||||
@@ -210,7 +210,7 @@ index d11358c..4cf9272 100644
|
|||||||
#include <sys/types.h>
|
#include <sys/types.h>
|
||||||
|
|
||||||
diff --git a/libelf/libelfP.h b/libelf/libelfP.h
|
diff --git a/libelf/libelfP.h b/libelf/libelfP.h
|
||||||
index ed216c8..415e6f6 100644
|
index 9f3e8e9..10a347a 100644
|
||||||
--- a/libelf/libelfP.h
|
--- a/libelf/libelfP.h
|
||||||
+++ b/libelf/libelfP.h
|
+++ b/libelf/libelfP.h
|
||||||
@@ -32,6 +32,7 @@
|
@@ -32,6 +32,7 @@
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user