He Zhe [Thu, 29 Aug 2019 13:15:50 +0000 (21:15 +0800)]
qemu: Fix dependency of PACKAGECONFIG libcurl
When PACKAGECONFIG libcurl is enabled, we would get the following build failure.
ERROR: Nothing PROVIDES 'libcurl' (but perf.bb DEPENDS on or otherwise requires it). Close matches:
The dependency should be curl.
Signed-off-by: He Zhe <zhe.he@windriver.com> Signed-off-by: Ross Burton <ross.burton@intel.com>
He Zhe [Thu, 29 Aug 2019 13:15:49 +0000 (21:15 +0800)]
qemu: Add pkg-config handling for libgcrypt
When PACKAGECONFIG libgcrypt is enabled, we would get the following error.
ERROR: /usr/bin/libgcrypt-config should not be used, use an alternative such as pkg-config
In oe-core, libgcrypt has been turned to be configured with pkg-config instead
of libgcrypt-config, but qemu configure script does not contain pkg-config
related part for libgcrypt to handle it.
Signed-off-by: He Zhe <zhe.he@windriver.com> Signed-off-by: Ross Burton <ross.burton@intel.com>
Robert Yang [Fri, 30 Aug 2019 07:35:30 +0000 (15:35 +0800)]
build-compare: 2015.02.10 -> 2019.08.14
* Removed the following patches which are already merged by upstream:
0001-Add-support-for-deb-and-ipk-packaging.patch
Rename-rpm-check.sh-to-pkg-diff.sh.patch
functions.sh-improve-deb-and-ipk-checking.patch
functions.sh-remove-space-at-head.patch
functions.sh-run-rpm-once-to-make-it-faster.patch
pkg-diff.sh-check-for-fifo-named-pipe.patch
pkg-diff.sh-check_single_file-return-at-once-when-sa.patch
pkg-diff.sh-remove-space-in-the-end-for-ftype.patch
* Rebased Ignore-DWARF-sections.patch
This version is very outstanding when compare binary packages, e.g.:
PRSERV_HOST = "localhost:0"
INHERIT += "packagefeed-stability"
PACKAGE_CLASSES = "package_ipk
$ bitbake opkg
$ find tmp/deploy/ipk >/tmp/ipk_1
Add a "bbnote 'hello'" to autotools.bbclass' autotools_do_configure.
* BEFORE the upgrading, the result is:
$ diff /tmp/ipk_1 /tmp/ipk_2 -Nur | diffstat
ipk_2 | 1570 +++++++++++++++++++++++++++++++++---------------------------------
1 file changed, 785 insertions(+), 785 deletions(-)
* AFTER the upgrading, the result is:
$ bitbake opkg
$ find tmp/deploy/ipk >/tmp/ipk_2
$ diff /tmp/ipk_1 /tmp/ipk_2 -Nur
No output
And if we really modifed a recipe such as opkg, then it would show that it is
changed.
For a full world build AFTER the upgrading:
$ diff /tmp/ipk_6 /tmp/ipk_7 -Nur | diffstat
ipk_7 | 2090 +++++++++++++++++++++++++++++++++---------------------------------
1 file changed, 1045 insertions(+), 1045 deletions(-)
There are 10968 packages in totall, 1045 ones have been changed, so we can still
improve it in the future.
Signed-off-by: Robert Yang <liezhi.yang@windriver.com>
gcc-testsuite.inc: Fix ssh.exp, ensure multilib_flags are populated
The 'process_multilib_options' function of dejagnu also populates the
'multilib_flags' content from the '--target_board=' arguments. The
'ssh.exp' generated is missing this call ('user.exp' includes it).
Signed-off-by: Nathan Rossi <nathan@nathanrossi.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Richard Purdie [Wed, 4 Sep 2019 10:29:31 +0000 (11:29 +0100)]
binutils/glibc-testsuite: inherit nopackages to fix world builds
These recipes don't need to generate packages but did contain the packaging tasks which
would be triggered by a world build. They showed warnings or errors. Simplest fix
is to remove the unneeded tasks with the nopackages class.
Also don't attempt stash_locales task
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
glibc-testsuite: Create a recipe to implement glibc test suite
A recipe needs to be created for the test suite due to the dependency
chain between libgcc -> glibc -> libgcc-initial, and the requirements of
the test suite to have libgcc for compilation and execution.
The glibc test suite does not use dejagnu like the gcc test suites do.
Instead a test wrapper script is used along with the assumed dependency
of having the same filesystem available on build host and target. For
qemu linux-user the same filesystem is inherently available, for remote
targets NFS is used. Separate test wrapper scripts are created for qemu
linux-user or ssh targets, with the same TOOLCHAIN_TEST_* variables used for
configuration.
Signed-off-by: Nathan Rossi <nathan@nathanrossi.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
gcc-runtime: Add do_check task for executing gcc test suites
Add a do_check task to implement execution of the gcc component test
suites. The component test suites require execution of compiled programs
on the target.
The implementation provided allows for execution testing against a host
via SSH or within the local build environment using qemu linux-user
execution. The selection of execution is done via the
TOOLCHAIN_TEST_TARGET variable, and configuration of the remote host is
done with the TOOLCHAIN_TEST_HOST, TOOLCHAIN_TEST_HOST_USER and
TOOLCHAIN_TEST_HOST_PORT variables.
By default the do_check task will execute all check targets, this can be
changed by setting MAKE_CHECK_TARGETS to the desired test suite target
(e.g. check-gcc or check-target-libatomic).
Signed-off-by: Nathan Rossi <nathan@nathanrossi.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
binutils-cross-testsuite: Create recipe for test suite execution
Create the do_check task in a new recipe 'binutils-cross-testsuite'.
This recipe is built within a target recipe (not -cross) to ensure
correct testing against target specific libraries/etc. The do_check task
is used to execute the binutils test suite for the cross target
binutils. By default this executes tests for binutils, gas and ld. This
can however be changed by setting CHECK_TARGETS to the desired test
suite target (e.g. 'gas').
The binutils test suites do not require any target execution, as such
the check task can be run without QEMU or a target device. However
since the binutils tests do rely on a C compiler there is dependence on
both gcc and libc in order to run the tests.
Signed-off-by: Nathan Rossi <nathan@nathanrossi.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Joshua Watt [Sat, 31 Aug 2019 01:41:24 +0000 (20:41 -0500)]
oeqa: reproducible: Preserve sstate mirror for first build
Preserves the SSTATE_MIRROR variable for the first build in the
reproducible test. This patch is intended to test the theory that using
the Yocto autobuilder sstate mirror will still be reproducible. The
autobuilder always does clean builds and never rebuilds recipes that
were built previously, thus building with the mirror but not
sharing tmpdir and sstate with previous builds should be reproducible.
There is no guarantee that all sstate caches are populated from clean
builds so this patch cannot be submitted to master, and I'm not
bothering sending it to the mailing list.
Signed-off-by: Joshua Watt <JPEWhacker@gmail.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Richard Purdie [Tue, 3 Sep 2019 21:39:37 +0000 (22:39 +0100)]
systemtap: Use latest and greatest git version for 5.2 kernel support
Systemtap has issues with the 5.2 kernel which are fixed in master, we helped
debug and submitted some of the patches. Update to a git version which includes
all the fixes.
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Ross Burton [Thu, 5 Sep 2019 15:56:20 +0000 (16:56 +0100)]
core-image-sato: don't use 512MB in qemumips
qemumips doesn't appear to work well with 512MB of RAM and randomly hangs. As
the bump to 512MB was primarily motivated by the memory needs of virtualised GL
which doesn't work in qemumips currently, drop the memory back to 256MB for
qemumips.
Signed-off-by: Ross Burton <ross.burton@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Similar to bitbake, implement a 'keepalive' output to the console to
ensure CI systems do not kill the process. The default timeout for
bitbake is 5000s.
Signed-off-by: Nathan Rossi <nathan@nathanrossi.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
At some point the modules in tests/cases/loader/invalid/ were removed,
this test relied on having tests/cases/loader/invalid/oetag.py to
trigger a ImportError in the loader module. Skip this test.
Signed-off-by: Nathan Rossi <nathan@nathanrossi.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
gcc-common.inc: Process staging fixme with correct target/native sysroot
Correct the 'staging_processfixme' call so that target sysroot and
native sysroot paths are corrected when extracting the stashed build
directory. This is required for 'make check' to work correctly due paths
used in configuration and scripts which point at the native sysroot.
Signed-off-by: Nathan Rossi <nathan@nathanrossi.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Ross Burton [Mon, 2 Sep 2019 18:54:15 +0000 (19:54 +0100)]
systemd: explicitly set the path to nologin
Set the path to nologin as with sulogin etc so we don't try to execute binaries
from the build path on the target (as the build finds a nologin in the sysroot
at build time).
Signed-off-by: Ross Burton <ross.burton@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Ross Burton [Tue, 3 Sep 2019 11:19:21 +0000 (12:19 +0100)]
libnl: don't patch libnl-3.0.pc
This patch originally came from oe-classic in 2010 with the comment "fix pc file
so that it actually links to the support libraries". If an application wants to
link to the support libraries then it should be using the relevant .pc files to
do so.
oe-core builds successfully with this patch removed and other distributions
don't carry it, so drop the patch.
Signed-off-by: Ross Burton <ross.burton@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Mark Asselstine [Thu, 22 Aug 2019 15:56:16 +0000 (11:56 -0400)]
sdkext: use simpler kernel module for devtool test
The current devtool test for the building of an out-of-tree kernel
module uses something which requires several "high order" kconfigs to
be set. This results in the test failing, not for expected reasons,
but rather because it depends on specific kernel configuration.
Khem Raj [Sat, 31 Aug 2019 05:23:14 +0000 (22:23 -0700)]
gcc: Fix ldbl-128 support for musl
Let the patch trigger based on target triplet instead of passing via
configure, this lets gcc compile for 64bit otherwise it ends up with
libgcc build errors
error: unable to emulate 'TF'
Signed-off-by: Khem Raj <raj.khem@gmail.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Khem Raj [Sat, 31 Aug 2019 05:23:13 +0000 (22:23 -0700)]
gcc: Move STANDARD_STARTFILE_PREFIX_1 and STANDARD_STARTFILE_PREFIX_2 back to gcc.c
when compiling for ppc64, build emits additional
STANDARD_STARTFILE_PREFIX_1 and STANDARD_STARTFILE_PREFIX_2 into
gcc/defaults.h which is not conditional because it really want to
override others with this new value, but it ends up with two definitions
since it gets emitted _after_ the definition this patch moves to
default.h and ends up in duplicate defines.
Signed-off-by: Khem Raj <raj.khem@gmail.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Khem Raj [Sat, 31 Aug 2019 05:23:11 +0000 (22:23 -0700)]
powerpc-tunes: Introduce bigendian tune
This helps in defining LE tunes and at the same time specifies
endianness on compiler cmdline clearly, clang e.g. defaults to
little-endian always, so unless specified with -mbig-endian won't
compile the code right
Signed-off-by: Khem Raj <raj.khem@gmail.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Kai Kang [Fri, 30 Aug 2019 05:46:09 +0000 (01:46 -0400)]
avahi: launch avahi-daemon after connman
When connman installed to image, /etc/resolv.conf is link to
/etc/resolv-conf.connman. So launch avahi-daemon after connman too
just same as after systemd-resolved.service.
Signed-off-by: Kai Kang <kai.kang@windriver.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Adrian Bunk [Thu, 29 Aug 2019 10:09:41 +0000 (13:09 +0300)]
libxcrypt: Fix the build with -Os
| In file included from ../git/lib/alg-des.c:66:
| ../git/lib/alg-des.c: In function '_crypt_des_set_key':
| ../git/lib/byteorder.h:24:1: error: inlining failed in call to 'be32_to_cpu': call is unlikely and code size would grow [-Werror=inline]
| be32_to_cpu (const unsigned char *buf)
| ^~~~~~~~~~~
| ../git/lib/alg-des.c:81:13: note: called from here
| rawkey1 = be32_to_cpu (&key[4]);
| ^~~~~~~~~~~~~~~~~~~~~
Signed-off-by: Adrian Bunk <bunk@stusta.de> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Jason Wessel [Thu, 29 Aug 2019 14:00:31 +0000 (07:00 -0700)]
serial-getty@.service: Allow device to fast fail if it does not exist
Some BSPs use a USB serial port which may or may not actually be
plugged all the time. It is quite useful to have a USB serial port
have a getty running but it does not make sense to wait for it for 90
seconds before completing the system startup if it might never get
plugged in. The typical example is that a USB serial device might
only need to be plugged in when debugging, upgrading, or initially
configuring a device.
This change is somewhat subtle. Systemd uses the "BindsTo" directive
to ensure existence of the device in order to start the service as
well as to terminate the service if the device goes away. The "After"
directive makes that same relationship stronger. When used together
this has the undesired side effect that systemd will wait until its
internal time out value of 90 seconds for the device to come on line
before executing a fail operation or letting other tasks and groups
continue. This is certainly the kind of behavior we want for a disk,
but not for serial ports in general.
The "BindsTo" directive is replaced by the combination of the "PartOf"
and the "ConditionPathExists" directives. The "After" directive is
unchanged because that will wait for the udev rules to process. The
"PartOf" directive will issue a stop to the getty service if the
device goes away, similar to the "BindsTo" directive. The
"ConditionPathExists" is what allows the service to fail fast vs
waiting for the timeout. When a USB device is not plugged in at boot
you would find a message in the system journal like:
systemd[1]: Condition check resulted in Serial Getty on \
ttyUSB0 being skipped.
If you want to observe the problem with qemu, it is easy to replicate.
Simply add the following line to your local.conf for a x86-64 qemu
build.
SERIAL_CONSOLES="115200;ttyS0 115200;ttyUSB0"
Login right after the system boots and observe:
root@qemux86-64:~# systemctl list-jobs |cat
JOB UNIT TYPE STATE
1 multi-user.target start waiting
69 serial-getty@ttyUSB0.service start waiting
64 getty.target start waiting
71 dev-ttyUSB0.device start running
62 systemd-update-utmp-runlevel.service start waiting
5 jobs listed.
You can see above that the dev-ttyUSB0.device will block for 1min 30
seconds. While that might not be a problem for this reference build.
It is certainly a problem for images that have software watchdogs that
verify the system booted up all the way to systemd completion in less
than 90 seconds.
This other nice effect of this change is that the fast fail device
extend to additional serial ports that may not exist on ARM BSPs or
that might be configured in or out by the dtb files on different
boards.
Signed-off-by: Jason Wessel <jason.wessel@windriver.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Changelog:
- Fix issue with DHCP and T1 timeout handling.
- Fix issue with escape characters in peer identity string.
- Add support for setting peer certificate's subject CN mask.
Signed-off-by: Oleksandr Kravchuk <open.source@oleksandr-kravchuk.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
devtool: Avoid failure for recipes with S == WORKDIR and no local files
When extracting the sources for a recipe that has S == WORKDIR and no
local files in the SRC_URI (which, e.g., can happen for a recipe with
a URI that has the unpack=false attribute), the extraction fails with
the following backtrace:
Traceback (most recent call last):
File ".../scripts/devtool", line 344, in <module>
ret = main()
File ".../scripts/devtool", line 331, in main
ret = args.func(args, config, basepath, workspace)
File ".../poky/scripts/lib/devtool/standard.py", line 762, in
modify
initial_rev, _ = _extract_source(srctree, args.keep_temp,
args.branch, False, config, basepath, workspace,
args.fixed_setup, rd, tinfoil, no_overrides=args.no_overrides)
File ".../poky/scripts/lib/devtool/standard.py", line 647, in
_extract_source
bb.process.run('git %s commit -a -m "Committing local file
symlinks\n\n%s"' % (' '.join(useroptions),
oe.patch.GitApplyTree.ignore_commit_prefix), cwd=srctree)
File ".../poky/bitbake/lib/bb/process.py", line 178, in run
raise ExecutionError(cmd, pipe.returncode, stdout, stderr)
bb.process.ExecutionError: Execution of 'git commit -a -m
"Committing local file symlinks
%% ignore"' failed with exit code 1:
On branch devtool
nothing to commit, working tree clean
This is because no files were found in the oe-local-files directory
and consequently no symbolic links were added using `git add`, but the
`git commit` command was still executed.
Signed-off-by: Peter Kjellerstedt <peter.kjellerstedt@axis.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
In particular this brings an important fix for builds with py3:
"Fix build issue which would cause media controls to disappear when Python 3.x was used during the build process."
qemu: switch to '-vga std' emulated hardware from vmware/cirrus for x86/mips
This is the qemu default since qemu 2.2, is generally supported better,
and is recommended by upstream. It also has already been in use for arm/risc
and ovmf.
Bruce Ashfield [Fri, 30 Aug 2019 16:06:31 +0000 (12:06 -0400)]
linux-yocto: introduce 5.2 recipes
Introducing the 5.2 linux-yocto reference kernels. 5.0 is EOL and will
be removed, leaving 4.19 (LTS) and 5.2 as the reference kernels.
This has been build/boot tested on all qemu architectures for
core-image-kernel-dev, and graphics tesed via core-image-sato. No
blocking issues have been found.
Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Richard Purdie [Fri, 30 Aug 2019 15:50:35 +0000 (16:50 +0100)]
gcc-cross: Clean up fixed-includes
We had interesting failures where building gcc-cross-powerpc with 5.0 kernel
headers, then building eudev after moving to 5.2 headers failed.
gcc-cross doesn't rebuild when linux-libc-headers changes due to its
listing in SIGGEN_EXCLUDE_SAFE_RECIPE_DEPS. This shouldn't matter but
fixincludes as adding asm-generic/socket.h to its filtered list which
was then replacing the real header with an older version. This mismatch
lead to build failures.
We trust the Linux kernel headers to be ANSI safe so lets just clear out
any headers and trust the originals to be correct.
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Chen Qi [Fri, 23 Aug 2019 08:56:29 +0000 (16:56 +0800)]
bind: fix build with python3 PACKAGECONFIG enabled
If the PACKAGECONFIG item, python3, is enabled, we get the following
QA issue when multilib is enabled.
ERROR: bind-9.11.5-P4-r0 do_package: QA Issue: bind: Files/directories were installed but not shipped in any package:
/usr/lib
/usr/lib/python3.7
/usr/lib/python3.7/site-packages
/usr/lib/python3.7/site-packages/isc-2.0-py3.7.egg-info
/usr/lib/python3.7/site-packages/isc
/usr/lib/python3.7/site-packages/isc/policy.py
[snip]
The thing is, when --with-python is specified with a path instead of 'yes',
the --with-python-install-dir is in fact ignored.
Fix this issue by specifying the correct arguments.
Signed-off-by: Chen Qi <Qi.Chen@windriver.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Bruce Ashfield [Wed, 28 Aug 2019 19:28:40 +0000 (15:28 -0400)]
perf: v5.3+ build fixes
In the 5.3+ perf builds, there are multiple unistd.h files that need
to be kept in sync. So not only do we update one, we update both to
ensure that libc-headers and the perf build are in sync.
perf checks some key files itself to be sure they are in sync, and
bits.h can be out of sync. There's no build error that results with
bits.h at the moment, but we still make sure they are in sync to
avoid the configure/compile warning.
Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Bruce Ashfield [Thu, 29 Aug 2019 02:14:41 +0000 (22:14 -0400)]
perf: change dependencies on python to python3
The upstream kernel can now handle python3 for the perf scripts, coupled
with the impending EOL of python2, we switch the dependencies in perf
(scripting) to python3.
Outside of dependency changes, we also pass the following two variables
to the perf build: PYTHON=python3 PYTHON_CONFIG=python3-config. To
ensure that our python3 components are used.
For configurations that disable perf scripting, there is no change in
behaviour.
[YOCTO #13358]
Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Bruce Ashfield [Wed, 28 Aug 2019 19:28:38 +0000 (15:28 -0400)]
kernel-devsrc: remove python2 dependency
Witht the approaching EOL of python2, the kernel packages need to
be updated to depend on python3.
The core kernel scripts are now python3 safe, making the RDEPENDS
change relatively simple.
but
There are some scripts that are captured in the devsrc files that
are not used, but reference /usr/bin/python. The python3 package
does not provide /usr/bin/python so any package managers with
automatic dependency detection will fail to assemble a rootfs due
to the missing intepreter.
We could drop the scripts from the source capture, but that
risks dropping something that we need in certain operations and
we'd miss when they are updated in tree to explicitly call python3
(since they won't be revisited often). Light testing shows that the
scripts do run with python3, so rather than removing them, we change
the interpreter once they are copied, and automatic dependency
detection won't cause us rootfs assembly issues.
Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Joshua Watt [Thu, 29 Aug 2019 15:31:06 +0000 (10:31 -0500)]
oeqa: reproducible: Do two clean builds
Perform two clean builds without sstate instead of one partial rebuild
with sstate and one clean build without. There are some classes of
reproducibility issues that this solves, and while we would like to
resolve them in the long term the direction to do so is not currently
clear.
Signed-off-by: Joshua Watt <JPEWhacker@gmail.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>