Alex Kiernan [Wed, 8 May 2019 15:57:28 +0000 (16:57 +0100)]
systemd: Restore mask and preset targets, fix instance creation
Ensure that anyone who sets SYSTEMD_AUTO_ENABLE_${PN} = "mask" (or
"preset") retains the previous behaviour. In addition fix "enable" so it
can (again) create instance units out of templates.
Remove over-zealous quoting of SYSTEMD_SERVICE_ESCAPED as it's already
safely escaped (and can be multiple arguments).
Alex Kiernan [Wed, 8 May 2019 15:57:27 +0000 (16:57 +0100)]
systemd-systemctl: Restore support for enable command
Refactor so that SystemdUnit is its own class, then add support for the
enable command. This restores the ability of systemd.bbclass to create
instances using syntax such as:
Alex Kiernan [Wed, 8 May 2019 15:57:26 +0000 (16:57 +0100)]
systemd: Default to non-stateless images
When creating images, for anything other than the explicitly stateless
case, touch /etc/machine-id so that the images can be booted without an
initramfs and with `ro` set on the kernel command line, otherwise system
refuses to start:
[ 7.222134] systemd[1]: No hostname configured.
[ 7.227266] systemd[1]: Set hostname to <localhost>.
[ 7.232622] systemd[1]: System cannot boot: Missing /etc/machine-id and /etc is mounted read-only.
[ 7.241750] systemd[1]: Booting up is supported only when:
[ 7.247362] systemd[1]: 1) /etc/machine-id exists and is populated.
[ 7.253752] systemd[1]: 2) /etc/machine-id exists and is empty.
[ 7.259757] systemd[1]: 3) /etc/machine-id is missing and /etc is writable.
If IMAGE_FEATURES includes `stateless-rootfs` then systemctl-native is
not run on the image leaving the image for population at runtime by
systemd.
map unexpectedSuccesses to PASSED and improve the way they're displayed. We
expect/allow ptest runner to fail but if it passes we should handle it correctly.
Richard Purdie [Wed, 8 May 2019 17:22:19 +0000 (18:22 +0100)]
meta/lib+scripts: Convert to SPDX license headers
This adds SPDX license headers in place of the wide assortment of things
currently in our script headers. We default to GPL-2.0-only except for the
oeqa code where it was clearly submitted and marked as MIT on the most part
or some scripts which had the "or later" GPL versioning.
The patch also drops other obsolete bits of file headers where they were
encoountered such as editor modelines, obsolete maintainer information or
the phrase "All rights reserved" which is now obsolete and not required in
copyright headers (in this case its actually confusing for licensing as all
rights were not reserved).
More work is needed for OE-Core but this takes care of the bulk of the scripts
and meta/lib directories.
The top level LICENSE files are tweaked to match the new structure and the
SPDX naming.
Richard Purdie [Wed, 8 May 2019 15:56:32 +0000 (16:56 +0100)]
oeqa: Drop OETestID
These IDs refer to testopia which we're no longer using. We would now use the test
names to definitively reference tests and the IDs can be dropped, along with their
supporting code.
It fails to build lib32-target-sdk-provides-dummy with error messages:
| ERROR: target-sdk-provides-dummy-1.0-r0 do_packagedata: The recipe target-sdk-provides-dummy
| is trying to install files into a shared area when those files already exist. Those files
| and their manifest location are:
| .../tmp/pkgdata/qemux86-64/lib32-target-sdk-provides-dummy
| (matched in manifest-qemux86_64-lib32-target-sdk-provides-dummy.packagedata)
| .../tmp/pkgdata/qemux86-64/runtime/lib32-target-sdk-provides-dummy
| (matched in manifest-qemux86_64-lib32-target-sdk-provides-dummy.packagedata)
| ... snip ...
| Please verify which recipe should provide the above files.
Add related directories to SSTATE_DUPWHITELIST to avoid the failures.
Changqing Li [Wed, 8 May 2019 10:05:27 +0000 (18:05 +0800)]
python3: fix do_install fail for parallel buiild
When using make -j with the 'install' target, it's possible for altbininstall
(which normally creates BINDIR) and libainstall (which doesn't, though it
installs python-config there) to race, resulting in a failure due to
attempting to install python-config into a nonexistent BINDIR. Ensure it also
exists in the libainstall target.
Joshua Watt [Wed, 8 May 2019 16:16:23 +0000 (11:16 -0500)]
resulttool: Add option to dump all ptest logs
Adds an option to dump all the ptest logs to individual files in a
specified directory. If multiple test runs are present, the
'--prepend-run' argument will create separate directories for each test
run under the target directory and put the logs there to prevent each
test run from clobbering the others.
Richard Purdie [Wed, 8 May 2019 10:50:14 +0000 (11:50 +0100)]
scripts/pybootchart/draw: Fix some bounding problems
The chart size extents were being incorrectly reported, not accounting for the
width of the legend. Set a minimum width to account for that (its fixed size).
Also stop printing the chart background off the bottom of the chart extents.
Richard Purdie [Wed, 8 May 2019 10:48:35 +0000 (11:48 +0100)]
scripts/pybootchart: Port to python3
This updates the pybootchart code (used for viewing build timing profiles)
to use python3. The bulk of the changes are to use gi instead of pygtk, i.e.
port from gtk+2 to gtk+3.
The main change is to make the bootchart widget inherit gtk.Scrollable
and change the way the scrollbars are implemented to match the new method
upstream. The drawing code used cairo already so can remain unchanged,
Hongxu Jia [Mon, 6 May 2019 02:37:27 +0000 (10:37 +0800)]
acpica: use update-alternatives for acpidump
acpidump is both provided by acpica and pmtools, so use
update-alternatives to fix conflicts:
...
|Error: Transaction check error:
| file /usr/bin/acpidump conflicts between attempted installs of
pmtools-20130209+git0+3ebe0e54c5-r0.i586 and acpica-20190405-r0.i586
...
Khem Raj [Mon, 6 May 2019 17:51:36 +0000 (10:51 -0700)]
gcc-target: Do not set --with-sysroot and gxx-include-dir paths
These options are not needed on target infact since the defaults would
be good enough for compiler to find the relevant headers and libraries
from compiler runtime
with gcc9 it starts to strip the sysroot from gxx-include-dir which
means it tries to look for gxx headers in localdir
Whenever cml1 do_configure is used with a defconfig, oldconfig waits for
input. This silently fails on recent kconfig projects with:
"Error in reading or end of file."
We cannot use a more up to date kconfig target such as olddefconfig,
because busybox does not support it.
Douglas Royds [Mon, 6 May 2019 06:47:25 +0000 (18:47 +1200)]
distutils: Run python from the PATH in the -native case as well
The python distutils generate a python wrapper script for each package,
containing shebang lines pointing to the python executable.
In our case, this is a fully-qualified path to python-native in the
recipe-sysroot-native.
Ubuntu 18.04 restricts the useful length of the shebang line to 125
characters, and Ubuntu 16.04 restricts it to 77. In both cases, the
staged python script fails to run due to the length of the path to
the python-native executable.
Replace the shebang line with nativepython or nativepython3 as appropriate.
The nativepython symlink is installed by the python-native recipe:
#!/usr/bin/env nativepython
We were already doing this for on-target distutils components.
This change applies the sed-line to -native distutils components as well.
In this way, -native clients of these components can invoke the wrapper scripts
directly, without themselves needing to inherit pythonnative.
This works around a known setuptools issue:
https://github.com/pypa/setuptools/issues/494
Even once this issue has been resolved upstream,
we will still need to replace `python` with `nativepython`
Alex Kiernan [Sun, 5 May 2019 05:24:27 +0000 (06:24 +0100)]
recipetool: fix unbound variable when fixed SRCREV can't be found
If attempting to find a fixed SRCREV fails because the directory doesn't exit,
avoid failing with:
Traceback (most recent call last):
File "/home/vagrant/poky/scripts/recipetool", line 121, in <module>
ret = main()
File "/home/vagrant/poky/scripts/recipetool", line 110, in main
ret = args.func(args)
File "/home/vagrant/poky/scripts/lib/recipetool/create.py", line 707, in create_recipe
srcrev = stdout.rstrip()
UnboundLocalError: local variable 'stdout' referenced before assignment
Alex Kiernan [Sun, 5 May 2019 05:23:32 +0000 (06:23 +0100)]
go: Exclude vcs files when installing deps
Because our clones use the host git, on (say) Ubuntu 18.04, the local
git directories acquire perl scripts such as fsmonitor-watchman.sample.
During packaging, this leads to failures:
ERROR: go-hsperfdata-1.0.3+gitAUTOINC+b58598ac84-r0 do_package_qa: QA Issue: /usr/lib/go/pkg/dep/sources/https---github.com-nsf-termbox--go/.git/hooks/fsmonitor-watchman.sample contained in package go-hsperfdata-staticdev requires /usr/bin/perl, but no providers found in RDEPENDS_go-hsperfdata-staticdev? [file-rdeps]
ERROR: go-hsperfdata-1.0.3+gitAUTOINC+b58598ac84-r0 do_package_qa: QA run found fatal errors. Please consider fixing them.
ERROR: go-hsperfdata-1.0.3+gitAUTOINC+b58598ac84-r0 do_package_qa:
ERROR: go-hsperfdata-1.0.3+gitAUTOINC+b58598ac84-r0 do_package_qa: Function failed: do_package_qa
Alex Kiernan [Sun, 5 May 2019 05:23:13 +0000 (06:23 +0100)]
python3: Add ntpath.py to python core
The newer python3 recipe no longer includes ntpath.py in core, leading
to failures in pkg_resources:
Traceback (most recent call last):
File "/usr/bin/bmaptool", line 6, in <module>
from pkg_resources import load_entry_point
File "/usr/lib/python3.7/site-packages/pkg_resources/__init__.py", line 42, in <module>
import ntpath
ModuleNotFoundError: No module named 'ntpath'
Hongxu Jia [Sun, 5 May 2019 10:04:24 +0000 (18:04 +0800)]
cpio/tar/native.bbclass: move rmt to sbindir and add a prefix to avoid native clashing
The rmt in cpio-native and tar-native is clashing, since
tar-native has set var-NATIVE_PACKAGE_PATH_SUFFIX, we move rmt
to sbindir, and add suffix NATIVE_PACKAGE_PATH_SUFFIX to sbindir
could avoid the clashing.
And in Ubuntu, rmt is in sbindir
$ which rmt
/usr/sbin/rmt
Scott Rifenbark [Mon, 6 May 2019 19:44:48 +0000 (12:44 -0700)]
documentation: Cleaned up "plug-in"/"plugin" terminology.
The YP manual set was using the plugin term inconsistently.
It was appearing as "plugin" as well as "plug-in". The
plugins in the project are all named without a hyphen.
The term itself is either/or according to Google. I have
changed all references to plugin so that they do not use
a hyphen.
Scott Rifenbark [Fri, 19 Apr 2019 16:51:59 +0000 (09:51 -0700)]
dev-manual: Added reasoning blurb to "Viewing Variables" section.
I put a new introductory paragraph in the "Viewing Variables"
section that alludes to why you might want to see variables.
Also, I linked to the section "Modifying Variable Values" in
the BB manual.
Scott Rifenbark [Fri, 12 Apr 2019 21:12:10 +0000 (14:12 -0700)]
mega-manual, overview-manual: Added updated index releases figure
The index-downloads.png file changes due to "eclipse" no
longer being there. Both the overview-manual and the
mega-manual figures folders hold this figure.
Scott Rifenbark [Fri, 12 Apr 2019 21:07:01 +0000 (14:07 -0700)]
Documentation: Removed customization.xsl files for Eclipse
The help files for YP manuals used in the Eclipse application
are no longer supported. I removed the individual
*-customization.xsl files for the individual YP manuals.
Signed-off-by: Paul Barker <paul@betafive.co.uk> Signed-off-by: Ross Burton <ross.burton@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Signed-off-by: Paul Barker <paul@betafive.co.uk> Signed-off-by: Ross Burton <ross.burton@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Khem Raj [Fri, 3 May 2019 06:29:26 +0000 (23:29 -0700)]
mdadm: Disable Werror
Werror spews more warnings with gcc9, like other distros (
debian/fedora) disable Warnings as errors
Fixes
super-intel.c:696:9: error: taking address of packed member of 'struct imsm_super' may result in an unaligned pointer value [-Werror=address-of-packed-member]
Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com> Signed-off-by: Ross Burton <ross.burton@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Signed-off-by: Max Kellermann <max.kellermann@gmail.com> Signed-off-by: Ross Burton <ross.burton@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Signed-off-by: Max Kellermann <max.kellermann@gmail.com> Signed-off-by: Ross Burton <ross.burton@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Richard Purdie [Wed, 1 May 2019 11:09:44 +0000 (12:09 +0100)]
bitbake: bitbake: Strip old editor directives from file headers
There are much better ways to handle this and most editors shouldn't need this
in modern times, drop the noise from the files. Its not consitently applied
anyway.
Richard Purdie [Wed, 1 May 2019 10:47:13 +0000 (11:47 +0100)]
bitbake: bitbake: Drop duplicate license boilerplace text
With the introduction of SPDX-License-Identifier headers, we don't need a ton
of header boilerplate in every file. Simplify the files and rely on the top
level for the full licence text.
Richard Purdie [Tue, 30 Apr 2019 10:05:26 +0000 (11:05 +0100)]
bitbake: bitbake: Add initial pass of SPDX license headers to source code
This adds the SPDX-License-Identifier license headers to the majority of
our source files to make it clearer exactly which license files are under.
The bulk of the files are under GPL v2.0 with one found to be under V2.0
or later, some under MIT and some have dual license. There are some files
which are potentially harder to classify where we've imported upstream code
and those can be handled specifically in later commits.
The COPYING file is replaced with LICENSE.X files which contain the full
license texts.
Alex Kiernan [Wed, 17 Apr 2019 18:31:16 +0000 (18:31 +0000)]
uboot-sign: Fix build when UBOOT_DTB_BINARY is empty
When UBOOT_DTB_BINARY is empty and because the code now changes
directory into ${B}, the test for the existence becomes `[ -f ]` which
succeeds and subsequently the install fails.
Reorder the code so it's clear that UBOOT_DTB_BINARY empty is an
expected configuration and then quote UBOOT_DTB_BINARY everywhere so
no one trips over this again.
Martin Jansa [Thu, 2 May 2019 13:52:22 +0000 (13:52 +0000)]
opkg: fix ptest packaging when OPKGLIBDIR == libdir
there is small issue with ptest packaging in cases where
OPKGLIBDIR is set to /usr/lib.
Then all ptest files get packaged in libopkg instead of opkg-ptest and correct QA error is triggered:
ERROR: QA Issue: /usr/lib/opkg/ptest/tests/opkgcl.py contained in package libopkg requires /usr/bin/python3, but no providers found in RDEPENDS_libopkg? [file-rdeps]
# $FILES_libopkg
# set /jenkins/mjansa/build-webos-master/oe-core/meta/recipes-devtools/opkg/opkg_0.4.0.bb:62
# "${libdir}/*.so.* ${OPKGLIBDIR}/opkg/"
FILES_libopkg="/usr/lib/*.so.* /usr/lib/opkg/"
Alex Kiernan [Thu, 2 May 2019 21:09:44 +0000 (22:09 +0100)]
image: call systemctl preset-all for images
Rather than rely on systemd's default invocation of preset-all at
runtime, we pre-populate the symlink tree as part of of the image. This
is done late so any overrides of presets during rootfs construction
should already have happened.
Whilst we don't strictly need this for the read-write root case, it
avoids boot time churn; for read-only root we have to do it here.
Alex Kiernan [Thu, 2 May 2019 21:09:43 +0000 (22:09 +0100)]
systemctl-native: Rewrite in Python supporting preset-all and mask
Rewrite systemctl-native in Python so that extending/testing it is
easier.
Now that the systemd class sets up service presets instead of actively
enabling services, the 'enable' and 'disable' subcommands for systemctl
are not actually used anywhere. As such, we can remove these to make
sure that nobody inadvertently introduces new uses of them.
This implementation covers `preset-all` and `mask` which are the only
options used in the current code, but should be readily extensible to
other commands.
We use `preset-all` at image construction time to populate the symlinks
used by systemd.
Jonas Bonn [Thu, 2 May 2019 21:09:42 +0000 (22:09 +0100)]
systemd: create preset files instead of installing in image
At first boot, systemd will create the /etc/systemd/system directory
from service preset files. As such, for a normal, writable /etc
(writable rootfs), there is no need to set up this directory at image
creation time.
This patch changes the systemd machinery to create preset files and to
rely on systemd to do the service enablement.
This breaks the read-only-rootfs case; there's a fix for this in a
follow-up patch.
Signed-off-by: Jonas Bonn <jonas@norrbonn.se> Signed-off-by: Alex Kiernan <alex.kiernan@gmail.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Alex Kiernan [Thu, 2 May 2019 21:09:41 +0000 (22:09 +0100)]
systemd-conf: simplify creation of machine-specific configuration
The configuration files that systemd installs are just skeletons
detailing the available options and their default values. The
recommended means of changing the configuration is to provide snippets
in configuration directories. For example, journald.conf settings are
best set in /usr/lib/system.d/journald.conf.d/ and can be overridden by
the user by providing overriding snippets in
/etc/systemd/journald.conf.d/.
The systemd-conf package is just providing machine-specific overrides
for some systemd defaults.
This patch restores the installation of config files by systemd and
reduces systemd-conf to just providing the config snippets in
/usr/lib/systemd/*.conf.d. This simpilfies the systemd-conf recipe
considerably since it now just sets up a couple of text files and
doesn't even need access to the systemd source anymore.
License-Update: configuration snippets licensing is independent of
systemd licensing
Jonas Bonn [Thu, 2 May 2019 21:09:40 +0000 (22:09 +0100)]
systemd: do not create machine-id
There is no reason to have an emtpy machine-id as part of the systemd
package. Either:
i) the filesystem is writable and the file will be created
automatically; or
ii) the filesystem is read-only, in which case the empty machine-id file
should be created as part of the read-only-rootfs tweaks.
Signed-off-by: Jonas Bonn <jonas@norrbonn.se> Signed-off-by: Alex Kiernan <alex.kiernan@gmail.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Jonas Bonn [Thu, 2 May 2019 21:09:39 +0000 (22:09 +0100)]
systemd: don't build firstboot by default
The firstboot service prompts the user for information about the host at
first boot. Systemd determines whether or not a boot is a "first boot"
by the existence of the file /etc/machine-id. Since oe-core always
includes this file (it is part of the systemd package), the firstboot
service never runs so this service is being built but never run.
A follow-up patch to this one will remove the machine-id from the
systemd build and allow it to be created automatically by systemd at
"first boot". With that patch, we don't want the firstboot service to
suddenly start being invoked and presenting a prompt to the user.
With this patch, the firstboot service becomes a PACKAGECONFIG option
that the user must actively select.
Signed-off-by: Jonas Bonn <jonas@norrbonn.se> Signed-off-by: Alex Kiernan <alex.kiernan@gmail.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>