Compare commits

..

387 Commits

Author SHA1 Message Date
Richard Purdie
022df46535 build-appliance-image: Update to pyro head revision
(From OE-Core rev: 10a75d2f1004c4cdf3fbe850c41ff47721eb139a)

Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-12-14 13:29:44 +00:00
Richard Purdie
b859272ad4 poky: Update version to 2.3.3
(From meta-yocto rev: b61638847dda679cafd1dc3031b17522c7e9b7c7)

Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-12-14 13:29:32 +00:00
Joshua Watt
a75a2f4272 cross-localedef-native: Include locale_t.h
Newer versions of glibc (2.26) moved the struct locale definition from
xlocale.h to bits/types/locale_t.h. For compatibility with build hosts
using this version of glibc, include this header.

See f0be25b6336db7492e47d2e8e72eb8af53b5506d in glibc

(From OE-Core rev: 4e9bb9ab2e5c603f3eb2d52ce272401c8e320cc0)

(From OE-Core rev: ab2bbccf9afb1db05a1f9fbcb5ec31bc1e4cb5eb)

Signed-off-by: Joshua Watt <JPEWhacker@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Signed-off-by: Armin Kuster <akuster808@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-12-11 22:02:59 +00:00
Andre McCurdy
3413d7ac24 glibc_2.25: fix building for x86 with -Os (or -fno-omit-frame-pointer)
Glibc 2.25 fails to build for x86 when frame pointers are enabled (ie
when optimised for size or when -fno-omit-frame-pointer is explicitly
included in CFLAGS etc). Backport the upstream fix from glibc 2.26.

  https://sourceware.org/git/?p=glibc.git;a=commitdiff;h=3b33d6ed6096c1d20d05a650b06026d673f7399a

(From OE-Core rev: 81ba29c7b9c872d9a9c2efe5f9f8fe6a492af813)

Signed-off-by: Andre McCurdy <armccurdy@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-12-11 22:02:59 +00:00
Andrey Konovalov
2c03e1984a weston: add patch to set pitch correctly for subsampled textures
This fixes display issue with YUV420/I420 and NV12 formats, that
can result in crash of weston.

The master branch has this fix as part of commit 148920f3971d "weston:
Bump version to 3.0.0". The patch has been rebased to apply cleanly
to weston 2.0.0.

(From OE-Core rev: bdf87b453867d2f74d97c0a7e0f71902a47b11fb)

Signed-off-by: Andrey Konovalov <andrey.konovalov@linaro.org>
Signed-off-by: Armin Kuster <akuster808@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-12-11 22:02:59 +00:00
Armin Kuster
7e2a26a041 binutls: Security fix for CVE-2017-9955
Affects: <= 2.28

[v2]
Fixed signed-off-by for CVE-2017-9955_9

(From OE-Core rev: ccb2651cc736a6efd7e69a5afecd6aa975ee914c)

Signed-off-by: Armin Kuster <akuster808@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-12-11 22:02:59 +00:00
Armin Kuster
f52aa25197 binutils: Security fix for CVE-2017-9954
Affects: <= 2.28
(From OE-Core rev: 85ad166e6487abcd6395569e71fa81e273d47a9d)

Signed-off-by: Armin Kuster <akuster808@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-12-11 22:02:59 +00:00
Armin Kuster
4aff74cf1e binutls: Secuirty fix for CVE-2017-9756
Affects: <= 2.28

(From OE-Core rev: 59956de9ffd18d65c41697772e2b95da982cc803)

Signed-off-by: Armin Kuster <akuster808@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-12-11 22:02:59 +00:00
Armin Kuster
3f098a0f6e binutls: Security fix for CVE-2017-9755
Affects: <= 2.28

(From OE-Core rev: 2a1da95cf865de024d278178b28e58a299526121)

Signed-off-by: Armin Kuster <akuster808@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-12-11 22:02:59 +00:00
Armin Kuster
e6b8c7e098 binutls: Security fix for CVE-2017-9753
Affects: <= 2.28

(From OE-Core rev: 02e45129712d7629bfbe3675ed8e735f66ae6301)

Signed-off-by: Armin Kuster <akuster808@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-12-11 22:02:59 +00:00
Armin Kuster
9d446c1938 binutls: Security fix for CVE-2017-9752
Affects: <= 2.28

(From OE-Core rev: b7bab86b9598ad0fedfcbdafb3d1fc2d522b2b70)

Signed-off-by: Armin Kuster <akuster808@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-12-11 22:02:59 +00:00
Armin Kuster
64ccf9b291 binutls: Security fix for CVE-2017-9751
Affects: <= 2.28

(From OE-Core rev: 6e6544eb51d8041fd939581dc2a5178db948ec4a)

Signed-off-by: Armin Kuster <akuster808@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-12-11 22:02:59 +00:00
Armin Kuster
60bd16df85 Binutils: Security fix for CVE-2017-9750
Affects: <= 2.28

(From OE-Core rev: 96e07bc43b817dbc35b8a317e801dee1974939b9)

Signed-off-by: Armin Kuster <akuster808@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-12-11 22:02:59 +00:00
Armin Kuster
bbf6d99f12 binutils: Security fix for CVE-2017-9749
Affects: <= 2.28

(From OE-Core rev: 8b177c76ce892c1ee064498b8fa21e99a993d69e)

Signed-off-by: Armin Kuster <akuster808@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-12-11 22:02:59 +00:00
Armin Kuster
fc95cd2ee7 binutls: Security fix for CVE-2017-9748
affects: <= 2.28

(From OE-Core rev: 1a60007cb6705ba25a2a6d07ccf2c2639d131874)

Signed-off-by: Armin Kuster <akuster808@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-12-11 22:02:58 +00:00
Armin Kuster
6b3fee6bd7 binutls: Security fix for CVE-2017-9747
Affects: <= 2.28

(From OE-Core rev: 2a40f61560be1db90aec08493f6c760de5b4d264)

Signed-off-by: Armin Kuster <akuster808@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-12-11 22:02:58 +00:00
Armin Kuster
b519ef3fc3 binutls: Security for fix CVE-2017-9746
Affects: <= 2.28

(From OE-Core rev: 75731517f8df241ae40378bca1b5b8ec5b45dab0)

Signed-off-by: Armin Kuster <akuster808@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-12-11 22:02:58 +00:00
Armin Kuster
10b391060b binutils: Security fix for CVE-2017-9745
Affects: <= 2.28

(From OE-Core rev: da1960fb6d9de9620ac507256554659e1bbe7083)

Signed-off-by: Armin Kuster <akuster808@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-12-11 22:02:58 +00:00
Armin Kuster
266586ff4c binutls: Security fix for CVE-2017-9744
Affects: <= 2.28

(From OE-Core rev: 462cdbd112555a363eddfe3e47cd9b14fccf9395)

Signed-off-by: Armin Kuster <akuster808@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-12-11 22:02:58 +00:00
Armin Kuster
9fba95a0e8 binutils: Security fix for CVE-2017-9742
Affects: <= 2.28

(From OE-Core rev: f8d6efda47b993e5e27631b9b7cd0a8638178e15)

Signed-off-by: Armin Kuster <akuster808@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-12-11 22:02:58 +00:00
Armin Kuster
436e0fc8dc binutils: Security fix for CVE-2017-9040 and CVE-2017-9042
Affects: <= 2.28
(From OE-Core rev: 9e96e8d16590601e716ddb36194fd9642a5d1643)

Signed-off-by: Armin Kuster <akuster808@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-12-11 22:02:58 +00:00
Armin Kuster
e963ce2d79 binutils: Security fix for CVE-2017-9039
Affects: <= 2.28

(From OE-Core rev: 1d467814bfc36755a7a795aa3d1c4d2d2e083171)

Signed-off-by: Armin Kuster <akuster808@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-12-11 22:02:58 +00:00
Armin Kuster
7ac79cbbe1 binutils: Security fix for CVE-2017-9038 and CVE-2017-9044
(From OE-Core rev: 32e5dedd7bf5b249a8f89f88bbe17d5ba71039b7)

Signed-off-by: Armin Kuster <akuster808@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-12-11 22:02:58 +00:00
Armin Kuster
ffdcca938b binutils: Security fix CVE-2017-8421
Affects: <= 2.28

(From OE-Core rev: 7442e97d451047e5f8ed2e23f5898837a7d572a7)

Signed-off-by: Armin Kuster <akuster808@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-12-11 22:02:58 +00:00
Armin Kuster
5d2f47f2a2 binutils: Security fix for CVE-2017-8398
Affects: <= 2.28

(From OE-Core rev: 8bbed39afd0d4197e39db587f41cd301726c2958)

Signed-off-by: Armin Kuster <akuster808@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-12-11 22:02:58 +00:00
Armin Kuster
640706066c binutils: Secuirty fix CVE-2017-8396 and CVE-2017-8397
Affects: <= 2.28

(From OE-Core rev: 006d106c81420ab53a9755f96edb58c227850587)

Signed-off-by: Armin Kuster <akuster808@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-12-11 22:02:58 +00:00
Armin Kuster
a24b585342 binutls: Security fix CVE-2017-8395
Affects: <= 2.28

(From OE-Core rev: b6c2ce1cd3907f5c6f5dcff0afb971d000e7c9bc)

Signed-off-by: Armin Kuster <akuster808@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-12-11 22:02:58 +00:00
Armin Kuster
e109245168 binutls: Secuirty fix CVE-2017-8394
Affects: <= 2.28

(From OE-Core rev: 4684afc0f29beafc0b97a0c7f0479a88c5a69d8e)

Signed-off-by: Armin Kuster <akuster808@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-12-11 22:02:58 +00:00
Armin Kuster
6da272440d binutils: Security fix CVE-2017-8393
Affects: <= 2.28

(From OE-Core rev: e96c9ab000c8693788b7a233bd7061d43cbe24d7)

Signed-off-by: Armin Kuster <akuster808@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-12-11 22:02:58 +00:00
Armin Kuster
34a2b675f4 binutils: Security Fix CVE-2017-7614
Affects: <= 2.28

(From OE-Core rev: 6dd4758d9f7060ccf1a30d7a4adb09beb43bc574)

Signed-off-by: Armin Kuster <akuster808@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-12-11 22:02:58 +00:00
Armin Kuster
722c61d4f4 binutils: Security fix CVE-2017-7223
Affects <= 2.28

(From OE-Core rev: 04ca81f0539a7549d4c527377c8a05b396247220)

Signed-off-by: Armin Kuster <akuster808@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-12-11 22:02:58 +00:00
Ming Liu
673999ac76 lib/oe/terminal.py: use an absolute path to execute oe-gnome-terminal-phonehome
A flaw was found on my Ubuntu 14.04.5 LTS, on which that gnome-terminal is
the default terminal, when I run any of the tasks:
bitbake busybox -c menuconfig/devshell/devpyshell
bitbake virtual/kernel -c menuconfig/devshell/devpyshell

I got a error as follows:
"Failed to execute child process "oe-gnome-terminal-phonehome" (No such file or directory)"

Seems the environment of the process calling Popen is not passed to the
child process, this behaviour is a known issue in Python bug tracker:
http://bugs.python.org/issue8557

It could be fixed by using an absolute path instead per test.

(From OE-Core rev: 6dcafdc6754f9eda22dfe93609401d75e8626c05)

Signed-off-by: Ming Liu <liu.ming50@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
(cherry picked from commit 2117c148ef07d84bc605768e3b3671b0126b9337)
Signed-off-by: Andre McCurdy <armccurdy@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-12-11 22:02:58 +00:00
Florin Sarbu
6d7fe76005 gcc: Use libssp_nonshared linker specs only for ppc/musl
Link libssp_nonshared.a only for ppc/musl because glibc already
provides the content for libssp_nonshared in libc_nonshared.a and
therefore we dont need to make it universal.

(From OE-Core rev: c08247e3c7)

(From OE-Core rev: ac2aad028daca6ea3aa0c0ccea8d528e896f8349)

Signed-off-by: Florin Sarbu <florin@resin.io>
Signed-off-by: Armin Kuster <akuster@mvista.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-12-11 22:02:58 +00:00
Tom Rini
8f7b65de99 dpkg: Add missing RDEPENDS for dpkg-perl
In order to be able to use dpkg-perl on a system various stock perl
modules must also be installed on the system.  Create the list of
required modules based on a read of the code and testing with additional
utilities and list them in RDEPENDS_${PN}-perl.

(From OE-Core rev: 31949633788f9c2283bcdf1c5374313c8be84923)

Signed-off-by: Tom Rini <trini@konsulko.com>
Signed-off-by: Ross Burton <ross.burton@intel.com>
Signed-off-by: Armin Kuster <akuster808@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-12-11 22:02:57 +00:00
Tom Rini
cf105e1360 dpkg: Fix perl modules by moving them to the versioned perl directory
In order for the dpkg perl modules to be used the must reside in the
versioned perl library directory (as to be in the default include path).
Be explicit about this location in our FILES_${PN}-perl directive, so
that if this breaks in the future, the recipe will fail).  We can now
drop the custom do_configure as it wasn't fixing this problem.

(From OE-Core rev: e360911f51f37b426ed65a8a6783ee1b5542cc91)

Signed-off-by: Tom Rini <trini@konsulko.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Signed-off-by: Armin Kuster <akuster808@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-12-11 22:02:57 +00:00
Tom Rini
557884aeca cpan-base.bbclass: Move PERLVERSION and get_perl_version to a new file
It is possible for non-CPAN recipes to contain perl modules.  These perl
modules must reside in the versioned perl library directory in order to
work in normal circumstances..  Export this logic to a separate class so
that it can be reused without the rest of the cpan logic.

Without this, dpkg will not export its perl code to the correct location
and will not be found by utilities that expect to use it.

(From OE-Core rev: 6907280335dd47f2fd3a3f4cf809357c3caff65d)

Signed-off-by: Tom Rini <trini@konsulko.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Signed-off-by: Armin Kuster <akuster808@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-12-11 22:02:57 +00:00
Richard Purdie
b366f7eccc populate_sdk_ext: Use prebuilt uninative tarball
For uninative to work, it relies on it being updated to new versions as
newer glibcs are built. This means the uninative generated by the current
build may not be as recent as the uninative that is being downloaded by
uninative.bbclass.

If this occurs, we can get symbol mismatch errors.

Ultimately, the sstate and the uninative versions need to match so we
should use the same tarball as uninative.bbclass is using, not the one
we built.

[YOCTO #12405]

(From OE-Core rev: 1bde969058f7e832db0e7eb9c6f7ef00f027628c)

Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-12-11 21:47:34 +00:00
David Reyna
2021e95bcd bitbake: toaster: allow dots in user path names
The dot '.' character should be allowed in the user paths for
local non-git layers, DL_DIR, and SSTATE_DIR.

[YOCTO #10650]

(Bitbake rev: ca9b9ffc250eb3ece5af3d64ff5febef69d555b0)

Signed-off-by: David Reyna <David.Reyna@windriver.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-11-05 22:41:27 +00:00
David Reyna
ecb828a68f bitbake: toaster: reserve HEAD from imported layers
The HEAD reference in Toaster layers are reserved for the
"Local Yocto Project" layers, stored at the top directory.
Imported layers are not allowed to use this since they are
managed differently - for example the 'remotes' will collide.

Fix the add layer handler to not drop the data fields when it
is a git repo.

Explicitly inform the user when an internal Toaster error is
returned via AJAX, so that they know why clicking the layer add
button did not do anything.

[YOCTO #9924]

(Bitbake rev: 90fb89e5e3ada9e36ab0b2a5a0dbfd74f9be279f)

Signed-off-by: David Reyna <David.Reyna@windriver.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-11-05 22:41:27 +00:00
Armin Kuster
99656fecf4 ruby: Security fix for CVE-2017-14064
affects ruby < 2.4.1

(From OE-Core rev: 2db9d0854239bca9d5c4efde808a1931c4c0ca0e)

Signed-off-by: Armin Kuster <akuster@mvista.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-11-05 22:39:49 +00:00
Armin Kuster
1e98c0ec2f curl: Security fix for CVE-2017-1000101
Affected versions: curl 7.34.0 to and including 7.54.1
Not affected versions: curl < 7.34.0 and >= 7.55.0

(From OE-Core rev: a12cc7500a224d4be91f67f7921e1f16fcf880d4)

Signed-off-by: Armin Kuster <akuster@mvista.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-11-05 22:39:49 +00:00
Armin Kuster
0037dd8d8d curl: Security fix for CVE-2017-1000100
Affected versions: libcurl 7.15.0 to and including 7.54.1
Not affected versions: libcurl < 7.15.0 and >= 7.55.0

(From OE-Core rev: eafbe104727d79643c1738360789ae455fff116c)

Signed-off-by: Armin Kuster <akuster@mvista.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-11-05 22:39:49 +00:00
Rajkumar Veer
a2ad903fa9 tiff: Security fix for CVE-2017-7593
(From OE-Core rev: b6ec8ab42befaa07c859a5c5cc14611b821a1304)

Signed-off-by: Rajkumar Veer <rveer@mvista.com>
Signed-off-by: Armin Kuster <akuster@mvista.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-11-05 22:39:49 +00:00
Rajkumar Veer
2aed68963f tiff: Security fix for CVE-2017-7602
(From OE-Core rev: 957e9f92b17c6b268e6c037666d2f32ef23f7bf9)

Signed-off-by: Rajkumar Veer <rveer@mvista.com>
Signed-off-by: Armin Kuster <akuster@mvista.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-11-05 22:39:49 +00:00
Rajkumar Veer
a05828ec79 tiff: Security fix for CVE-2017-7601
(From OE-Core rev: 7423b8318a381d139590f6ab2c50874d0eb775a6)

Signed-off-by: Rajkumar Veer <rveer@mvista.com>
Signed-off-by: Armin Kuster <akuster@mvista.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-11-05 22:39:49 +00:00
Rajkumar Veer
599438440e tiff: Security fix for CVE-2017-7598
(From OE-Core rev: 13704be6d172eef2459bb3a5ceed47711ef08b99)

Signed-off-by: Rajkumar Veer <rveer@mvista.com>
Signed-off-by: Armin Kuster <akuster@mvista.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-11-05 22:39:49 +00:00
Rajkumar Veer
2b6b802cd5 tiff: Security fix for CVE-2017-7596
(From OE-Core rev: e22d6cab6dcfa020408b541242c26a994958831f)

Signed-off-by: Rajkumar Veer <rveer@mvista.com>
Signed-off-by: Armin Kuster <akuster@mvista.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-11-05 22:39:49 +00:00
Rajkumar Veer
8e0f6c5ae5 tiff: Security fix for CVE-2017-7595
(From OE-Core rev: 7af2f595a595533356ddef42e542825faab3382a)

Signed-off-by: Rajkumar Veer <rveer@mvista.com>
Signed-off-by: Armin Kuster <akuster@mvista.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-11-05 22:39:49 +00:00
Rajkumar Veer
2e37f28552 tiff: Security fix for CVE-2017-7594
(From OE-Core rev: ac828e5620430cff207ac5dc14dc5e2dbf99f9de)

Signed-off-by: Rajkumar Veer <rveer@mvista.com>
Signed-off-by: Armin Kuster <akuster@mvista.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-11-05 22:39:49 +00:00
Rajkumar Veer
9f2bab8493 tiff: Security fix for CVE-2017-7592
(From OE-Core rev: 4c918f46c40878ae91d8de4223c6370f8c10ec66)

Signed-off-by: Rajkumar Veer <rveer@mvista.com>
Signed-off-by: Armin Kuster <akuster@mvista.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-11-05 22:39:49 +00:00
Rajkumar Veer
7af530d449 tiff: Security fix for CVE-2016-10270
(From OE-Core rev: 9600bca011fe5fd2837606ab05e64325b3f12114)

Signed-off-by: Rajkumar Veer <rveer@mvista.com>
Signed-off-by: Armin Kuster <akuster@mvista.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-11-05 22:39:48 +00:00
Rajkumar Veer
6a2f7581c5 tiff: Security fix for CVE-2016-10269
(From OE-Core rev: f9efc9fc8d26784c7a2017efc771e809e6471911)

Signed-off-by: Rajkumar Veer <rveer@mvista.com>
Signed-off-by: Armin Kuster <akuster@mvista.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-11-05 22:39:48 +00:00
Rajkumar Veer
dbd47a912b tiff: Security fix CVE-2016-10267
(From OE-Core rev: 91aff69faa7861f9872331ea386145667607550c)

Signed-off-by: Rajkumar Veer <rveer@mvista.com>
Signed-off-by: Armin Kuster <akuster@mvista.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-11-05 22:39:48 +00:00
Rajkumar Veer
3b7576ac22 tiff: Security fix CVE-2016-10266
(From OE-Core rev: aa1dc0afd99970f474f38a671e6c49aa2090fbe3)

Signed-off-by: Rajkumar Veer <rveer@mvista.com>
Signed-off-by: Armin Kuster <akuster@mvista.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-11-05 22:39:48 +00:00
Rajkumar Veer
46ee394865 tiff: Security fix CVE-2016-10268
(From OE-Core rev: a384e06b6ac12541b9928ecbc5834ef1d505ac0f)

Signed-off-by: Rajkumar Veer <rveer@mvista.com>
Signed-off-by: Armin Kuster <akuster@mvista.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-11-05 22:39:48 +00:00
Rajkumar Veer
ca16811eed tiff: Secruity fix CVE-2016-10093
(From OE-Core rev: a34da9ea14275d0bf8e9f2b7df7416fe622770cb)

Signed-off-by: Rajkumar Veer <rveer@mvista.com>
Signed-off-by: Armin Kuster <akuster@mvista.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-11-05 22:39:48 +00:00
Rajkumar Veer
18a0ad760c tiff: Security fix for CVE-2016-10271
(From OE-Core rev: d358e9bda3dcbdcfff7008804099f89f97f8bf79)

Signed-off-by: Rajkumar Veer <rveer@mvista.com>
Signed-off-by: Armin Kuster <akuster@mvista.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-11-05 22:39:48 +00:00
André Draszik
0d5277acc3 valgrind: enable on mips soft-float
Valgrind support for mips soft-float hosts has been fixed
in the 3.12 [1] and 3.13 [2] releases, so let's start
building it on those, too.

[1] https://sourceware.org/git/?p=valgrind.git;a=commit;h=8f0070d31daea6f0ed18f8fe69498a67530bfcbb
[2] https://sourceware.org/git/?p=valgrind.git;a=commit;h=3172936d63da4b6257099bc05aee5793978269cb

(From OE-Core rev: fe734c3adddef18e1dade182eb77c6d3c923e498)

Signed-off-by: André Draszik <adraszik@tycoint.com>
Signed-off-by: Ross Burton <ross.burton@intel.com>

(cherry picked from commit 82dbad6aa1390668aa86d28c8a3125b68d6072fa)
Signed-off-by: André Draszik <adraszik@tycoint.com>
Signed-off-by: Armin Kuster <akuster808@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-11-05 22:39:48 +00:00
Jose Perez Carranza
595c92e204 oeqa/sdk: Replace buildiptables for buildlzip tests
Buildiptables test cases are conflicting with images built with “musl”
as standard C library, in order to avoid those issues lzip package was
selected to be used on the tests as this does not have any "musl"
dependency.

[YOCTO #11713]

(From OE-Core rev: b798284f62b3cb171373716b1ee84403439314aa)

(From OE-Core rev: 0699de9efe40029a6c5e799bb8c9616337fd163e)

Signed-off-by: Jose Perez Carranza <jose.perez.carranza@linux.intel.com>
Signed-off-by: Ross Burton <ross.burton@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Signed-off-by: Armin Kuster <akuster808@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-11-05 22:39:48 +00:00
Jose Perez Carranza
a6e7401378 oeqa/runtime: Replace buildiptables for buildlzip on runtime tests
Buildiptables test cases are conflicting with images built with “musl”
as standard C library, in order to avoid those issues lzip package was
selected to be used on the tests as this does not have any "musl"
dependency.

This patch is applicable for testimage tests

[YOCTO # 11713]

(From OE-Core rev: 41683e0ab316049e28b1f4ceaf39f0fe17722d92)

(From OE-Core rev: d40bcafb574788ed26855c5d1a072523893c1b4b)

Signed-off-by: Jose Perez Carranza <jose.perez.carranza@linux.intel.com>
Signed-off-by: Ross Burton <ross.burton@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Signed-off-by: Armin Kuster <akuster808@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-11-05 22:39:48 +00:00
Tom Rini
d096d7e850 image_types.bbclass: Make u-boot signed images more versatile
With the introduction of chaining compression/conversion support we can
convert the old image_types_uboot.bbclass code that did a hand-chaining
of a set of ${filesystem}.${compression} into generic and arbitrary
support to sign whatever the user wants to sign for their image.

This, for the record, does remove setting a valid compression type in
the record in favour of just saying none.  This is not a generally
useful feature in U-Boot and I believe being versatile in terms of being
able to pass in arbitrary compressions is more important.

(From OE-Core rev: 979ff606d8c4c6f66c6dc533a92212f18708089e)

Signed-off-by: Tom Rini <trini@konsulko.com>
Signed-off-by: Ross Burton <ross.burton@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Signed-off-by: Armin Kuster <akuster808@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-11-05 22:39:48 +00:00
Joshua Watt
ebb625a140 openssh: Fix key generation with systemd
106b59d9 broke SSH host key generation when systemd and a read-only root file
system are in use because there isn't a way for systemd to get the optional
weak assigment of SYSCONFDIR from /etc/default/sshd and still provide a default
value if it is not specified. Instead, move the logic for determining if keys
need to be created to a helper script that both the SysV init script and the
systemd unit file can reference.

This does mean that the systemd unit file can't check for file existence to
know if it should start the service, but it wasn't able to do that correctly
anyway anymore. This should be a problem since the serivce is only run once per
power cycle by systemd, and should exit quickly if the keys already exist

(From OE-Core rev: 73f1397d86f33abace089cc9a28e859b47bb7b6c)

Signed-off-by: Joshua Watt <JPEWhacker@gmail.com>
Signed-off-by: Ross Burton <ross.burton@intel.com>

(cherry picked from commit 7e49c5879862253ae1b6a26535d07a2740a95798)
Signed-off-by: André Draszik <adraszik@tycoint.com>
Signed-off-by: Armin Kuster <akuster808@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-11-05 22:39:48 +00:00
André Draszik
9f981b48cf json-c: backport patch to fix gcc7 compilation
(The native version might be being built using gcc-7)

We can't cherry-pick a commit from master, as master
has upgraded json-c at the same time as applying
this patch, see commit
ccf630e78aad ("json-c: Upgrade to 0.12.1 release")

(From OE-Core rev: 9b0cb8149ce82c0e6fa3054b54d35e9bf1353bf0)

Signed-off-by: André Draszik <adraszik@tycoint.com>
Signed-off-by: Armin Kuster <akuster808@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-11-05 22:39:48 +00:00
André Draszik
7ca04fef1b useradd-staticids: don't create username-group if gid is specified
Adding distcc to an image, and having staticids enabled,
doesn't work as it causes a a superfluous 'distcc' group
being added using a conflicting  GID, thus failing the
build:
 | ERROR: distcc-3.2-r0 do_prepare_recipe_sysroot: distcc: groupadd command did not succeed.

Compared to other recipes, the distcc recipe only
specifies --gid for the primary group, and doesn't specify
--no-user-group, but when --gid is given, it doesn't make
sense to create a matching username-group in addition,
even if --no-user-group was not specified, and 'useradd'
actually complains if --gid and --user-group are given
both.

If only --gid is given, the current code in here
effectively behaves as if --user-group was specified,
taking the group-id of the username-group from the
--gid parameter. This causes the error above, as we try
to add a new group (distcc) with an existing group-id
(nogroup).

This is contrary to the comment in this file just above,
contrary to what useradd can do, contrary to behaviour
without the useradd-staticids bbclass, and non-intuitive.

Change the code such that a username-group is only created
- if a primary group using --gid was not specified, or
- if --no-user-group was not specified

To be in line with useradd, if gid is not given, and
--no-user-group is given, we add the user to the group
'users', which mimics useradd's behaviour.

(From OE-Core rev: b1843e60ebe534243b49f3685540fa5ea49d5f35)

Signed-off-by: André Draszik <adraszik@tycoint.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>

(cherry picked from commit fc3a86ae68919cec72c1a8ae0f9ba1f98ae13f0d)
Signed-off-by: André Draszik <adraszik@tycoint.com>
Signed-off-by: Armin Kuster <akuster808@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-11-05 22:39:48 +00:00
André Draszik
8c3ea68812 curl: enable threaded resolver
Multi-threaded applications using libcurl crash
on DNS timeouts when built using OE.

The reason is as follows:
By default, libcurl implements DNS timeouts using a
timer (alarm()) and a pair of setjmp()/longjmp().
This approach is unsafe in multi-threaded applications
for various reasons, as e.g. explained in the relevant
man-pages.

To avoid this, libcurl can be compiled with a built-in
threaded resolver, or against the c-ares asynchronous
resolver library.

To keep extra dependencies to a minimum, and to mimic
other distributions (debian at least), and because
c-ares is not available in OE-core, add a PACKAGECONFIG
to be able to enable use of of the built-in threaded
resolver and enable it by default.

(From OE-Core rev: f4dbb4ce29fcd03e64c83efea39f32df437c21cc)

Signed-off-by: André Draszik <adraszik@tycoint.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>

(cherry picked from commit 41f1e44fce976c4140cda62a41349e91e69d04ef)
Signed-off-by: André Draszik <adraszik@tycoint.com>
Signed-off-by: Armin Kuster <akuster808@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-11-05 22:39:48 +00:00
André Draszik
47d26eef52 kernel-fitimage: support MIPS (compressed)
On MIPS, the compressed kernel image target is vmlinuz.bin

(From OE-Core rev: ed459bc971697fdd46e5204f625cde7afcdef6eb)

Signed-off-by: André Draszik <adraszik@tycoint.com>
Signed-off-by: Ross Burton <ross.burton@intel.com>

(cherry picked from commit 74d97569aa4e0f82e094a539dec302076103affa)
Signed-off-by: André Draszik <adraszik@tycoint.com>
Signed-off-by: Armin Kuster <akuster808@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-11-05 22:39:47 +00:00
André Draszik
431cb72138 kernel-uboot: support compressed kernel on MIPS
MIPS generates vmlinuz.bin when compression in the kernel build is
enabled, including any necessary objcopy so we can leverage that
and skip our manual invocation of objcopy here. We just have to
put the file into the right place for the rest of the build to
find it.

(From OE-Core rev: 3db4004b2982a297a02ebeb6b0cb90cebdb44a0a)

Signed-off-by: André Draszik <adraszik@tycoint.com>
Signed-off-by: Ross Burton <ross.burton@intel.com>

(cherry picked from commit 00bc7682473c2558d72ba42c182f8e3bd445f8af)
Signed-off-by: André Draszik <adraszik@tycoint.com>
Signed-off-by: Armin Kuster <akuster808@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-11-05 22:39:47 +00:00
André Draszik
1e69586439 kernel-uimage: optimise UBOOT_ENTRYSYMBOL support
This is the remaining local change to a fix similar to
commit e0b4f018d1c2 ("kernel-uimage.bbclass: Fix up
generation of uImage from vmlinux"):

Make awk exit on match to save a few CPU cycles so as
to make this similar to kernel-fitimage.bbclass

(From OE-Core rev: d60b3d02949ba318e30627131fd38f74c74cf590)

Signed-off-by: André Draszik <adraszik@tycoint.com>
Signed-off-by: Ross Burton <ross.burton@intel.com>

(cherry picked from commit 614e8be7a89a2f2113fa40b11e7a05b9e8155f6a)
Signed-off-by: André Draszik <adraszik@tycoint.com>
Signed-off-by: Armin Kuster <akuster808@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-11-05 22:39:47 +00:00
André Draszik
01e24eb47b kernel-fitimage: unbreak UBOOT_ENTRYSYMBOL support
- vmlinux is located in ${B}, not ${S}.
- parsing of nm output got broken completely in commit
  b406a89935f148779569fa3770776e009dd51f13 ("kernel-fitimage: add
  initramfs support"), commit ec755d2524
  in yocto

While at it, make awk exit on match to save a few CPU cycles.

(From OE-Core rev: 1353892f3a130bcfa4e9c5b36b3ed7eb4a2c872d)

Signed-off-by: André Draszik <adraszik@tycoint.com>
Signed-off-by: Ross Burton <ross.burton@intel.com>

(cherry picked from commit 9d2ec9c046c4a9c6a842d28133d40639f5a65297)
Signed-off-by: André Draszik <adraszik@tycoint.com>
Signed-off-by: Armin Kuster <akuster808@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-11-05 22:39:47 +00:00
André Draszik
637fec385a kernel-fitimage: sanitize dtb section name (unbreak MIPS)
We can't build fitImages for MIPS any more:
| Error: fit-image.its:21.27-28 syntax error
| FATAL ERROR: Unable to parse input tree
| uboot-mkimage: Can't read arch/mips/boot/fitImage.tmp: Invalid argument

Since commit cd2ed7f80b555add07795cc0cbaee866e6c193a3
("kernel-fitimage: dtb sections named by their filenames
and one config section for each dtb"), commit
1ec405ef5d in yocto, dtb
sections are named by the DTB filename, but the filename
can legally be in a subdirectory below
arch/$arch/boot/dts/, and on MIPS all DTBs are actually
in a subdirectory.

If so, mkimage fails with the above error message.

Unbreak this by replacing the offending character
(directory separator /)

(From OE-Core rev: feb78cb536a5e5cc9f1c36014b1a1ae1c147f45c)

Signed-off-by: André Draszik <adraszik@tycoint.com>
Signed-off-by: Ross Burton <ross.burton@intel.com>

(cherry picked from commit 335fc50cf54e47db4e3d5c35a9846484faf0270f)
Signed-off-by: André Draszik <adraszik@tycoint.com>
Signed-off-by: Armin Kuster <akuster808@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-11-05 22:39:47 +00:00
Nathan Rossi
8deaf6612a kernel-uimage.bbclass: Fix up generation of uImage from vmlinux
Fix up the generation of uImage from vmlinux when KEEPUIMAGE != 'yes'.
This fixes up the working directory that do_uboot_mkimage is run from,
such that it is run from the ${B} directory to access built artefacts.

Simplify the logic in the task so that the parse step either adds the
task or not if the conditions are met. This reduces the need for the
task to run in cases when it is not used. The task is also changed to
depend on the kernel_link_images task as arch/<arch>/boot/* is not
available until after kernel_link_images in certain cases (e.g.
vmlinux/uImage only KERNEL_IMAGETYPES).

Fix up the use of ${S}/vmlinux when pulling the entry symbols
address so that it accesses the vmlinux in ${B}.

(From OE-Core rev: 60f0e4b18c7d77d7be2b22573b7d0c7ad3d0832f)

Signed-off-by: Nathan Rossi <nathan@nathanrossi.com>
Signed-off-by: Ross Burton <ross.burton@intel.com>

(cherry picked from commit e0b4f018d1c2a65e66c81e5be1da8894e9a6c132)
Signed-off-by: André Draszik <adraszik@tycoint.com>
Signed-off-by: Armin Kuster <akuster808@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-11-05 22:39:47 +00:00
Richard Purdie
b286ba24f4 ca-certificates: Fix postinst dependency issues
We were relying on running ca-certificates from the -native version. This
meant the host and target path layouts had to match which might not be true,
it certainly isn't true for the sdk builds.

There was a dependency on run-parts which wasn't represented (we can get it
from busybox or debianutils).

Since this is an allarch script, call the script directly, making sure debianutils
and openssl are available as postinst rootfs time to resolve the issues.

(From OE-Core rev: a406704fd68d08c3916b7986f96175be34affc50)

Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>

(cherry picked from commit d9575e05f2cb8bf293534c036ddc0d0336701256)
Signed-off-by: André Draszik <adraszik@tycoint.com>
Signed-off-by: Armin Kuster <akuster808@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-11-05 22:39:47 +00:00
Richard Purdie
cfa154ec74 debianutils: Add a native version (for run-parts)
(From OE-Core rev: 4c8be205c317eaa649d034de22b960409bb3fa3b)

Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>

(cherry picked from commit 46985e66c193ad2aa9b575aeab5c78740bc5a4ed)
Signed-off-by: André Draszik <adraszik@tycoint.com>
Signed-off-by: Armin Kuster <akuster808@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-11-05 22:39:47 +00:00
André Draszik
5399eb5636 copyleft_filter.bbclass: restore possiblity to filter on type
Since the changes introduced in ae9102bda3
("copyleft_filter.bbclass: Allow to filter on name"), it is
impossible to filter on the recipe type, all recipes are
treated as though they should be included if the license
matches, irrespective of the COPYLEFT_RECIPE_TYPES
variable.

Fix this.

(From OE-Core rev: 23b520c42e93e47e3a19037877281af673144b31)

Signed-off-by: André Draszik <adraszik@tycoint.com>
Signed-off-by: Ross Burton <ross.burton@intel.com>

(cherry picked from commit e612dfa520c7d7ecf58006e82189be601204f38d)
Signed-off-by: André Draszik <adraszik@tycoint.com>
Signed-off-by: Armin Kuster <akuster808@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-11-05 22:39:47 +00:00
André Draszik
0c9925f229 selftest/archiver: only execute deploy_archives task
There should be no reason to execute a full build, as we're
just interested in the deployment of the archives.

The newly added tests already do the same.

(From OE-Core rev: 89a00238c45b0457bdf7add3629124901bc72f4b)

Signed-off-by: André Draszik <adraszik@tycoint.com>
Signed-off-by: Ross Burton <ross.burton@intel.com>

(cherry picked from commit 78c2897dff7cd9fe2cab511549cb146d5231e573)
Signed-off-by: André Draszik <adraszik@tycoint.com>
Signed-off-by: Armin Kuster <akuster808@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-11-05 22:39:47 +00:00
André Draszik
edae320ef5 selftest/archiver: add tests for recipe type filtering
The archiver used to be able to filter based on COPYLEFT_RECIPE_TYPES.

Unfortunately, this got broken with the fix for
  https://bugzilla.yoctoproject.org/show_bug.cgi?id=6929
in commit ae9102bda3 ("copyleft_filter.bbclass: Allow to filter on name")

Add two tests to prevent that from happening again.

(From OE-Core rev: 11064f15d7fc10b99eac4084af48a91d8b212932)

Signed-off-by: André Draszik <adraszik@tycoint.com>
Signed-off-by: Ross Burton <ross.burton@intel.com>

(cherry picked from commit 709f02c5cb25983090251c6237bac4fc0a295c4f)
Signed-off-by: André Draszik <adraszik@tycoint.com>
Signed-off-by: Armin Kuster <akuster808@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-11-05 22:39:47 +00:00
André Draszik
28b8850356 openssh: allow to override OpenSSL HostKeys when read-only-rootfs
With these changes it is possible to have a .bbappend that
- sets SYSCONFDIR to some persistent storage
- modifies SYSCONFDIR/sshd_config to use ssh host keys from
  the (writable) sysconfdir

(From OE-Core rev: 79c7c8342859306750f0af17210a183fdc543caf)

Signed-off-by: André Draszik <adraszik@tycoint.com>
Reviewed-by: Stephane Ayotte <sayotte@tycoint.com>
Signed-off-by: Ross Burton <ross.burton@intel.com>

(cherry picked from commit 106b59d9f96f70d133fa1421091ad280d27a5b6a)
Signed-off-by: André Draszik <adraszik@tycoint.com>
Signed-off-by: Armin Kuster <akuster808@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-11-05 22:39:47 +00:00
André Draszik
cd28daadfd busybox: add backported patch to support iproute 'scope'
This is needed for avahi-autoipd, which attempts to
create a link-scope route as part of its work.

Without iproute scope support in busybox, the route is
not created due to an error message, and hence we
aren't accessible by, and can't access ourselves,
IP addresses outside the link-local scope
(169.254.0.0/16) unless we also have a proper
non link-local IP address, which somehow defeats the
purpose of zeroconf.

(From OE-Core rev: d0047eb364b5e38c3fbd349c40c71f6c50a1a22d)

Signed-off-by: André Draszik <adraszik@tycoint.com>
Reviewed-by: Stephane Ayotte <sayotte@tycoint.com>
Signed-off-by: Ross Burton <ross.burton@intel.com>

(cherry picked from commit bd06a1cbe8e97b7f66979b12d4d248092379df4a)
Signed-off-by: André Draszik <adraszik@tycoint.com>
Signed-off-by: Armin Kuster <akuster808@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-11-05 22:39:47 +00:00
Ming Liu
5cb078a086 busybox: fix a linking issue
A following linking error was observed:
| ==========
| archival/lib.a(tar.o): In function `tar_main':
| archival/tar.c:1168: undefined reference to `unpack_Z_stream'
| archival/tar.c:1168: undefined reference to `unpack_Z_stream'
| ld: busybox_unstripped: hidden symbol `unpack_Z_stream' isn't defined
| ld: final link failed: Bad value

this happened with clang compiler, with the following configs:
| CONFIG_TAR=y
| # CONFIG_FEATURE_SEAMLESS_Z is not set

which can be fixed by adding IF_FEATURE_* checks in.

(From OE-Core rev: 5e9e8b336931335c660733a269c59ae0547019bd)

Signed-off-by: Ming Liu <peter.x.liu@external.atlascopco.com>
Signed-off-by: Ross Burton <ross.burton@intel.com>

(cherry picked from commit 789254b5ae983a94346f53de18286713b80eb5f2)
Signed-off-by: André Draszik <adraszik@tycoint.com>
Signed-off-by: Armin Kuster <akuster808@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-11-05 22:39:47 +00:00
André Draszik
7deed8ff4e gdb: fix gdbserver not working in musl/mips context
Similar to
  https://bugs.lede-project.org/index.php?do=details&task_id=637&openedfrom=-1%2Bweek

(From OE-Core rev: c33426e2011054043c276c72b8af651a9aa179ad)

Signed-off-by: André Draszik <adraszik@tycoint.com>
Acked-by: Sylvain Lemieux <slemieux@tycoint.com>
Signed-off-by: Ross Burton <ross.burton@intel.com>

(cherry picked from commit 0b9d94a5e54191f93659f7b4e7a3cb4376487823)
Signed-off-by: André Draszik <adraszik@tycoint.com>
Signed-off-by: Armin Kuster <akuster808@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-11-05 22:39:47 +00:00
Peter Kjellerstedt
b085162a8e oe-pkgdata-util: package-info: Allow extra variables to be displayed
By specifying the -e <var> option one or multiple times, extra
variables available in the pkgdata can be displayed, e.,g,
`oe-pkgdata-util package-info -e SUMMARY -e LICENSE ...`. The extra
variables displayed are quoted since some of them may contain
whitespace.

(From OE-Core rev: 265db40c75b6a4b9a666e49dd1739423eb711695)

Signed-off-by: Peter Kjellerstedt <peter.kjellerstedt@axis.com>
Signed-off-by: Ross Burton <ross.burton@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Signed-off-by: Armin Kuster <akuster808@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-11-05 22:39:47 +00:00
Samuli Piippo
faf109ca94 binutils: apply mingw fix only for binutils-cross-canadian
Whenever SDKMACHINE is set to mingw32, sdkmingw32 override is defined
everywhere. This meant that value of LDGOLD was different also for
binutils and binutils-cross depending whether SDKMACHINE was set or not.

(From OE-Core rev: 0398f84482dbe5ee99b20e2ca6b3e9984f7ccec5)

(From OE-Core rev: ef5f97aea26fa22accfd1841a2f1319935d6d95f)

Signed-off-by: Samuli Piippo <samuli.piippo@qt.io>
Signed-off-by: Ross Burton <ross.burton@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Signed-off-by: Armin Kuster <akuster808@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-11-05 22:39:47 +00:00
Markus Lehtonen
65c54c2700 oe-build-perf-report: use correct x-axis max value in html charts
(From OE-Core rev: 1d99b018c2b6a44b9db2f2ede113e64dae751eee)

(From OE-Core rev: 3a5a8280a1c079c8cc1161e0abc407c1a62aa068)

Signed-off-by: Markus Lehtonen <markus.lehtonen@linux.intel.com>
Signed-off-by: Ross Burton <ross.burton@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Signed-off-by: Armin Kuster <akuster808@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-11-05 22:39:47 +00:00
Markus Lehtonen
eff8629de1 oe-build-perf-report: allow slashes in {branch} field in tag names
The target branch name might contain slashes.

(From OE-Core rev: 3ddde7d5bcffdd855dae0da6ba5feec752cbacec)

(From OE-Core rev: 6b3f1a6107de04bc4f212876db2e3c4c762b044a)

Signed-off-by: Markus Lehtonen <markus.lehtonen@linux.intel.com>
Signed-off-by: Ross Burton <ross.burton@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Signed-off-by: Armin Kuster <akuster808@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-11-05 22:39:47 +00:00
Markus Lehtonen
b9d63e19a9 oe-build-perf-report: accept parenthesis in tag names
(From OE-Core rev: b1feae0e23300ea3894d14d2e7b1c1f8b419146e)

(From OE-Core rev: f2a7a52b7a0915bd9905b3244b7b0deb6795205d)

Signed-off-by: Markus Lehtonen <markus.lehtonen@linux.intel.com>
Signed-off-by: Ross Burton <ross.burton@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Signed-off-by: Armin Kuster <akuster808@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-11-05 22:39:47 +00:00
Ross Burton
24be54c87c oeqa/selftest/recipetool: use stable tarball for recipetool create test
GitHub dynamically generates the /archive/ tarballs but we're encoding checksums
in the test suite.  Change the URL to use a static tarball, and update the
checksums.

(From OE-Core rev: 9c668f9ff989a34e615e2ecc051dadbfe24a5bb4)

(From OE-Core rev: 20f54eb2b2a306858f330eb50205e594d53767ec)

Signed-off-by: Ross Burton <ross.burton@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Signed-off-by: Armin Kuster <akuster808@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-11-05 22:39:46 +00:00
Enrico Scholz
448d0be779 wic: accept '-' in bitbake variables
'-' is valid and common in bitbake variables (e.g. 'FOO_pn-bar'). Accept
it and other characters when reading the .env file.

Also, allow variables to be empty.

(From OE-Core rev: e688ac8e92d2bc451d8b2d437596f630bedccd2c)

(From OE-Core rev: 2a69250abf61e51f633033ddb672e8f459191899)

(From OE-Core rev: aa367a3583f6e1fb0e55f7ec46ddad13291f1c6f)

Signed-off-by: Enrico Scholz <enrico.scholz@ensc.de>
Signed-off-by: Ross Burton <ross.burton@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Signed-off-by: Armin Kuster <akuster808@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-11-05 22:39:46 +00:00
Ross Burton
c458f2867e useradd: don't override pseudo environment
Back in the dark days before recipe-specific-sysroots the paths being passed in
this manual construction of the pseudo environment made sense, but now they're
incorrect and result in pseudo writing to two different databases during a
single build.  The result is that pseudo doesn't follow changes to /etc/passwd
in the sysroot, and warns in the logs.

Remove the PSEUDO_LOCALSTATEDIR assignment and inherit the correct assignment in
FAKEROOTENV.

(From OE-Core rev: 02457ef7f600ce954874e2d11e74b1c6daaa3bfc)

(From OE-Core rev: e8112536055e75dff43369395a6cf6ba44ba8db7)

Signed-off-by: Ross Burton <ross.burton@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Signed-off-by: Armin Kuster <akuster808@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-11-05 22:39:46 +00:00
Ross Burton
9351217eb7 bitbake: tests/fetch: handle network failures gracefully
If there is a network failure the return value from latest_versionstring() is
('','') which later causes an exception when comparing versions.

Improve this by checking the return value and failing the test early.

[ YOCTO #12053 ]

(Bitbake rev: 4284d918dc7451f6a4d00be065369e86bbaec4d2)

Signed-off-by: Ross Burton <ross.burton@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-11-05 22:37:29 +00:00
Mikko Rapeli
4490625088 bitbake: bitbake: Fix return value checks from subprocess.call()'s
Python function subprocess.call() returns the return value of the
executed process. If return values are not checked, errors may
go unnoticed and bad things can happen.

Change all callers of subprocess.call() which do not check for
the return value to use subprocess.check_call() which raises
CalledProcessError if the subprocess returns with non-zero value.

https://docs.python.org/2/library/subprocess.html#using-the-subprocess-module

All users of the function were found with:

$ git grep "subprocess\.call" | \
  egrep -v 'if.*subprocess\.call|=\ +subprocess\.call|return.*subprocess\.call'

Tested similar patch on top of yocto jethro. Only compile tested
core-image-minimal on poky master branch.

(Bitbake rev: aac956a0950c05bf58af1885474cd89bb9c8fbd1)

Signed-off-by: Mikko Rapeli <mikko.rapeli@bmw.de>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-11-05 22:37:29 +00:00
Andre Rosa
a475795953 bitbake: Replace deprecated git branch parameter "--set-upstream"
Since 2017-08-17 (git version 2.14.1.473.g3ec7d702a) using deprecated
git branch parameter "--set-upstream" causes a fetcher error. Replace
it by "--set-upstream-to".

https://git.kernel.org/pub/scm/git/git.git/commit/?id=52668846ea2d41ffbd87cda7cb8e492dea9f2c4d
says, it's deprecated since 2012-08-30 so hopefully all still supported
host distributions have new enough git to support "--set-upstream-to".

ERROR: PACKAGE do_unpack: Fetcher failure: ...;
git -c core.fsyncobjectfiles=0 branch --set-upstream master origin/master failed with exit code 128, output:
fatal: the '--set-upstream' option is no longer supported. Please use '--track' or '--set-upstream-to' instead.

ERROR: PACKAGE do_unpack: Function failed: base_do_unpack

(Bitbake rev: 698e36430761cd3cf81283d58ca5bb3426bd24dd)

Signed-off-by: Andre Rosa <andre.rosa@lge.com>
Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-11-05 22:37:29 +00:00
Will Newton
50cc15335e goarch.bbclass: Replace logic for setting GOARM
The previous logic applied a regex to TUNE_FEATURES which could
set the GOARM value to 7 incorrectly, for example when dealing
with an arm1176 core. Simplify to check for the presence of
"armv7" instead. At the same time add a check for "armv6" and
set GOARM to 6 in that case.

(From OE-Core rev: 93dd2f9f3edf0584f9e806c629611d645dd72dbf)

Signed-off-by: Will Newton <willn@resin.io>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-10-24 14:55:01 +01:00
Ross Burton
827eb5b232 wpa_supplicant: fix WPA2 key replay security bug
WPA2 is vulnerable to replay attacks which result in unauthenticated users
having access to the network.

* CVE-2017-13077: reinstallation of the pairwise key in the Four-way handshake

* CVE-2017-13078: reinstallation of the group key in the Four-way handshake

* CVE-2017-13079: reinstallation of the integrity group key in the Four-way
handshake

* CVE-2017-13080: reinstallation of the group key in the Group Key handshake

* CVE-2017-13081: reinstallation of the integrity group key in the Group Key
handshake

* CVE-2017-13082: accepting a retransmitted Fast BSS Transition Reassociation
Request and reinstalling the pairwise key while processing it

* CVE-2017-13086: reinstallation of the Tunneled Direct-Link Setup (TDLS)
PeerKey (TPK) key in the TDLS handshake

* CVE-2017-13087: reinstallation of the group key (GTK) when processing a
Wireless Network Management (WNM) Sleep Mode Response frame

* CVE-2017-13088: reinstallation of the integrity group key (IGTK) when
processing a Wireless Network Management (WNM) Sleep Mode Response frame

Backport patches from upstream to resolve these CVEs.

(From OE-Core rev: 28d2d47f2a4fc3eb649cf58e82bce0525ab0bc74)

Signed-off-by: Ross Burton <ross.burton@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-10-16 23:47:01 +01:00
Richard Purdie
b1f14ecddf bitbake: toaster/highlight.pack.js: Fix corrupted file
The newly added file in the last commit was corrupted, fix it.

(Bitbake rev: 64e4f407bc235b774acf55f959b699ad3a5c9fa8)

Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-10-10 11:07:11 +01:00
David Reyna
15eb02516b bitbake: toaster: Remove prettify
Remove "prettify.js" and "prettify.css" due to license issues with Apache2.
Replace with "highlight.pack.js" with its BSD3 License.

[YOCTO #12206]

(Bitbake rev: 8c86ec28abd406f6d62dee9f917ed1df47f7f301)

Signed-off-by: Jason Wessel <jason.wessel@windriver.com>
Signed-off-by: Brian Avery <brian.avery@intel.com>
Signed-off-by: David Reyna <david.reyna@windriver.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-10-10 09:42:04 +01:00
Gerson Fernando Budke
717303e6fb image.bbclass: Sorted ctypes to avoid basehash error
When selected multiple subimages a similar error could happend:
  Variable do_image_cpio[subimages] value changed \
    from 'cpio.gz.u-boot cpio.gz' to 'cpio.gz cpio.gz.u-boot'
To avoid this, 'ctypes' should be sorted at 'gen_conversion_cmds'.

This garantee that 'CONVERSION_CMD_xxx' are always written in tha same
order and consequently 'do_image_cpio' have the same hash.

(From OE-Core rev: 271f1a5f65b8685a1e3645026876251122ef3974)

(From OE-Core rev: 404a04a862a71a5a0fb1c20b6bc9fc9c8b2bb98c)

Signed-off-by: Gerson Fernando Budke <nandojve@gmail.com>
Signed-off-by: Ross Burton <ross.burton@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-09-22 17:53:25 +01:00
Paul Eggleton
30613467d8 bitbake: cooker: add BB_CMDLINE to enable access to UI command line with memres
In OpenEmbedded's buildhistory class we want access to the bitbake
command line that launched the build, and up to now we were simply using
sys.argv from within the event handler to get that. Unfortunately that
doesn't work in memory resident mode, since the event handler is
naturally executing within the server and thus will give you the command
that launched the bitbake server which is much less interesting. Add a
dynamic variable BB_CMDLINE to provide access to this, set from sys.argv
within the UI process in updateToServer().

(Note that BB_CMDLINE isn't currently passed through to the worker, so
this is only really readable from event handlers plus any explicit
getVariable calls - in theory an observe-only UI could read it for
example.)

Part of the fix for [YOCTO #11634].

(Bitbake rev: 85596c9af3bb6407159c6c8de229cbe275aa74ea)

Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-09-21 17:20:11 +01:00
Armin Kuster
e9834ba34b linux-yocto/4.1: generix86* bsp fix perf issue with gcc >=7
(From meta-yocto rev: 9e7a7a8dc6c1e08e973ee9f91bbad3b659e9848e)

Signed-off-by: Armin Kuster <akuster808@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-09-21 17:19:25 +01:00
Alejandro Hernandez
9b1a7e66af linux-yocto: Update genericx86* SRCREVs for linux-yocto 4.1
- Includes fix for CVE-2017-1000251

- Upgrades to Linux 4.1.43

(From meta-yocto rev: e3ae387f2f7f40f66f08cc79e66b933e3c1b217c)

Signed-off-by: Alejandro Hernandez <alejandro.hernandez@linux.intel.com>

cleaned up as other bsp already updated to 4.1.43

Signed-off-by: Armin Kuster <akuster808@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-09-21 17:18:49 +01:00
Armin Kuster
b24d9be38f meta-yocto-bsp: bump 4.1 to latest linux stable kernel for the non-x86 BSPs
(From meta-yocto rev: 30e33eb070d8fd2d44b5e56ea163ea0b861770c5)

Signed-off-by: Armin Kuster <akuster808@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-09-21 17:18:10 +01:00
Kevin Hao
4a8a38986f meta-yocto-bsp: bump to the latest linux stable kernel for the non-x86 BSPs
Bump to the latest stable kernel for 4.4, 4.9, 4.10 and 4.12.

(From meta-yocto rev: 6909368e9b193c3fc79257982ec609307a5e1ba4)

(From meta-yocto rev: 72f1afdd9e532146609c85aab4a2b540b988ce0b)

Signed-off-by: Kevin Hao <kexin.hao@windriver.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>

Dropped 4.12 changes
Signed-off-by: Armin Kuster <akuster808@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-09-21 16:55:59 +01:00
Alejandro Hernandez
b2408ffb9e linux-yocto: Update genericx86* SRCREVs for linux-yocto 4.9
- Includes fix for CVE-2017-1000251
- Upgrades to Linux 4.9.49

(From meta-yocto rev: b3c4140647104fc764e8f8ffef6bd4bcba9ef4a2)

(From meta-yocto rev: ba4a104566ad993d6bf1387cb0e6be32664acc51)

Signed-off-by: Alejandro Hernandez <alejandro.hernandez@linux.intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Signed-off-by: Armin Kuster <akuster808@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-09-21 16:55:59 +01:00
Alejandro Hernandez
17286a9114 linux-yocto: Update genericx86* SRCREVs for linux-yocto 4.10
- Includes fix for CVE-2017-1000251

(From meta-yocto rev: b97bbea9418f5406461a35feabf15c1c26cebd3d)

(From meta-yocto rev: 1efda3dadfcb0a6973dbfb2efa4d0f7f62b99af3)

Signed-off-by: Alejandro Hernandez <alejandro.hernandez@linux.intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Signed-off-by: Armin Kuster <akuster808@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-09-21 16:55:59 +01:00
Alejandro Hernandez
b1d08ca8db linux-yocto: Update genericx86* SRCREVs for linux-yocto 4.4
- Includes fix for CVE-2017-1000251

- Upgrades to Linux 4.4.87

(From meta-yocto rev: a1a0b9ef0681ef43ce6648d25e389ddccb1bfe9c)

(From meta-yocto rev: ddaca52c2a3a536be57b73f2140db1d78455e0ed)

Signed-off-by: Alejandro Hernandez <alejandro.hernandez@linux.intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Signed-off-by: Armin Kuster <akuster808@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-09-21 16:55:59 +01:00
Alejandro Hernandez
4340075da0 linux-yocto: Update genericx86* SRCREVs for linux-yocto 4.10
(From meta-yocto rev: 0c0ecd81156c66d82d40b61ed012e86910f5977a)

(From meta-yocto rev: c25f383caa7b899a65120c0e4d548ddb552a7de5)

Signed-off-by: Alejandro Hernandez <alejandro.hernandez@linux.intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Signed-off-by: Armin Kuster <akuster808@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-09-21 16:55:58 +01:00
Alejandro Hernandez
f56136d78e linux-yocto: Update genericx86* SRCREVs for linux-yocto 4.9
Upgrades to Linux 4.9.46

(From meta-yocto rev: 783c1e3d41d1928f5ef4451838e271e83a9c2b87)

(From meta-yocto rev: 246edd5bc123b842b29dd70ab5a13ff68bd32281)

Signed-off-by: Alejandro Hernandez <alejandro.hernandez@linux.intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Signed-off-by: Armin Kuster <akuster808@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-09-21 16:55:58 +01:00
Alejandro Hernandez
d8115fe4a4 linux-yocto: Update genericx86* SRCREVs for linux-yocto 4.4
Upgrades to Linux 4.4.85

(From meta-yocto rev: 232ad256cb77e92729575f04522b76cad58809d5)

(From meta-yocto rev: 5ec3ca1362d91c3a1027ca173c89c09f8432195d)

Signed-off-by: Alejandro Hernandez <alejandro.hernandez@linux.intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Signed-off-by: Armin Kuster <akuster808@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-09-21 16:55:58 +01:00
Kevin Hao
8d7351e37d meta-yocto-bsp: bump to the latest linux stable kernel for the non-x86 BSPs
Bump to the latest stable kernel for 4.4, 4.9, 4.10 and 4.12. Also
set the default kernel to 4.12.

(From meta-yocto rev: 4e0ada1132db54a1723e3a603fa99b0b8ddf29eb)

(From meta-yocto rev: bbf359b74c71db3e82452b925143fd9fc46227a0)

Signed-off-by: Kevin Hao <kexin.hao@windriver.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>

Dropped 4.12 changes
Signed-off-by: Armin Kuster <akuster808@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-09-21 16:55:58 +01:00
Alejandro Hernandez
8981242a91 linux-yocto: Update genericx86* SRCREVs for linux-yocto 4.9
Upgrades to Linux 4.9.36

(From meta-yocto rev: f99882d06f69d828fd2070a22f091065e8ca06d0)

(From meta-yocto rev: 7338441e6c15a1ac2f6b8f648933b9490ed2a7e5)

Signed-off-by: Alejandro Hernandez <alejandro.hernandez@linux.intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Signed-off-by: Armin Kuster <akuster808@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-09-21 16:55:58 +01:00
Alejandro Hernandez
6b2b85b405 linux-yocto: Update genericx86* SRCREVs for linux-yocto 4.4
Upgrades to Linux 4.4.76

(From meta-yocto rev: 96c1eb3de2ec9f7731d2c134b5b85b4db81c1da7)

(From meta-yocto rev: 7db9c02672e58efffd5f4754e9980b70f3c78363)

Signed-off-by: Alejandro Hernandez <alejandro.hernandez@linux.intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Signed-off-by: Armin Kuster <akuster808@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-09-21 16:55:58 +01:00
Alejandro Hernandez
dc7418f759 linux-yocto: Update genericx86* SRCREVs for linux-yocto 4.1
Upgrades to Linux 4.1.42

(From meta-yocto rev: f328f98de4578a0182bdd84d69dc924521c71488)

(From meta-yocto rev: 59ea6416a7fee4dcdf2c1b6bbbc2d8caba1da4c1)

Signed-off-by: Alejandro Hernandez <alejandro.hernandez@linux.intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Signed-off-by: Armin Kuster <akuster808@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-09-21 16:55:58 +01:00
Kevin Hao
affe0dcc8e meta-yocto-bsp: bump to the latest linux stable kernel for the non-x86 BSPs
Bump to the latest stable kernel for 4.1, 4,4 and 4.9.

(From meta-yocto rev: 41128b3640e5733e62cb633f7a3ce704dff6a4f2)

(From meta-yocto rev: c9cb766fadfe5de7952e04c6588c6b2f0c8d1f70)

Signed-off-by: Kevin Hao <kexin.hao@windriver.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Signed-off-by: Armin Kuster <akuster808@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-09-21 16:55:58 +01:00
Kevin Hao
47b8028c8d meta-yocto-bsp: bump to the latest linux stable kernel for the non-x86 BSPs
Bump to the latest stable kernel for 4.4, 4,9 and 4.10.

(From meta-yocto rev: 294a7d2e1b8d7c54f6ec11804254e7028390c028)

(From meta-yocto rev: f10cac1117229b1a6a73df95f185a5e26df34b69)

Signed-off-by: Kevin Hao <kexin.hao@windriver.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Signed-off-by: Armin Kuster <akuster808@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-09-21 16:55:58 +01:00
Alejandro Hernandez
23be02c8ae linux-yocto: Update genericx86* SRCREVs for linux-yocto 4.10
Upgrades to Linux 4.10.17

(From meta-yocto rev: f620f654bfb1b05dd24394911ee6d3b6ce6ea457)

(From meta-yocto rev: 964a27b19d58f63bc3a741ec81af9e3d2666fec2)

Signed-off-by: Alejandro Hernandez <alejandro.hernandez@linux.intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Signed-off-by: Armin Kuster <akuster808@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-09-21 16:55:58 +01:00
Alejandro Hernandez
d011ec9def linux-yocto: Update genericx86* SRCREVs for linux-yocto 4.9
Upgrades to 4.9.31

(From meta-yocto rev: b85c5ba43892c63d0a6536908c8d548dbe9cc045)

(From meta-yocto rev: 9e2b41aeaa6a24aeed5ed0528468a3fccaa2b8d9)

Signed-off-by: Alejandro Hernandez <alejandro.hernandez@linux.intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Signed-off-by: Armin Kuster <akuster808@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-09-21 16:55:58 +01:00
Alejandro Hernandez
0cb21a4d1e linux-yocto: Update genericx86* SRCREVs for linux-yocto 4.4
Upgrades to Linux 4.4.71

(From meta-yocto rev: 2850ef6ed0d93a45d5f60ede74e4c0f7183842f3)

(From meta-yocto rev: 293c1eaf910fddc1be0e4c900f553b3d3facc0f9)

Signed-off-by: Alejandro Hernandez <alejandro.hernandez@linux.intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Signed-off-by: Armin Kuster <akuster808@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-09-21 16:55:58 +01:00
Kevin Hao
b9dd3782ce meta-yocto-bsp: bump to the latest linux stable kernel for the non-x86 BSPs
Bump to the latest stable kernel for 4.1, 4.4, 4,9 and 4.10.

(From meta-yocto rev: acedc2be541a29e33c5d44692aab75432e4d56a3)

(From meta-yocto rev: 892155e4be919e0e936c251d0ad904415e23f918)

Signed-off-by: Kevin Hao <kexin.hao@windriver.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Signed-off-by: Armin Kuster <akuster808@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-09-21 16:55:58 +01:00
Alejandro Hernandez
251fea0032 linux-yocto: Update genericx86* SRCREVs for linux-yocto 4.10
Updates to Linux 4.10.15

(From meta-yocto rev: 28c2c9fc90431e0688c49874314caffc60d6014c)

(From meta-yocto rev: bd4fa8e9c552fb883cdf6c99fbd1ae8be31f666d)

Signed-off-by: Alejandro Hernandez <alejandro.hernandez@linux.intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Signed-off-by: Armin Kuster <akuster808@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-09-21 16:55:58 +01:00
Alejandro Hernandez
e094dcf0f3 linux-yocto: Update genericx86* SRCREVs for linux-yocto 4.9
Updates to Linux 4.9.27

(From meta-yocto rev: 270a28fe3d7f438205f805f763396a5c3645c813)

(From meta-yocto rev: c88be9f19d077656770cd8c07df906e21e136356)

Signed-off-by: Alejandro Hernandez <alejandro.hernandez@linux.intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Signed-off-by: Armin Kuster <akuster808@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-09-21 16:55:58 +01:00
Alejandro Hernandez
710ff8cdda linux-yocto: Update genericx86* SRCREVs for linux-yocto 4.4
Updates to Linux 4.4.67

(From meta-yocto rev: cc8a05a174e5a863c6acb4d130c65fba56307c67)

(From meta-yocto rev: faeca44ef955840023215f7210be6e34862c9d51)

Signed-off-by: Alejandro Hernandez <alejandro.hernandez@linux.intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Signed-off-by: Armin Kuster <akuster808@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-09-21 16:55:58 +01:00
Alejandro Hernandez
9d3df55f8c linux-yocto: Update genericx86* SRCREVs for linux-yocto 4.1
Updates to Linux 4.1.39

(From meta-yocto rev: f5fd419a0882f5bae4a7e7cf54e103cda9369142)

(From meta-yocto rev: 92008fc0835d438ea6a47016d25a729cc5454d6f)

Signed-off-by: Alejandro Hernandez <alejandro.hernandez@linux.intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Signed-off-by: Armin Kuster <akuster808@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-09-21 16:55:58 +01:00
Juro Bystricky
cb8f468991 gcc-6.3.inc: Use ucontext_t not struct ucontext.
Use ucontext_t not struct ucontext in linux-unwind.h files.

Current glibc no longer gives the ucontext_t type the tag struct
ucontext, to conform with POSIX namespace rules.  This requires
various linux-unwind.h files in libgcc, that were previously using
struct ucontext, to be fixed to use ucontext_t instead.  This is
similar to the removal of the struct siginfo tag from siginfo_t some
years ago.

Backport of patches by Joseph Myers, taken from
https://gcc.gnu.org/viewcvs/gcc?limit_changes=0&view=revision&revision=249957

[YOCTO #12083]

(From OE-Core rev: ec1c18d866c137b1fa523d0fcc29f65a28f59f44)

(From OE-Core rev: 5c4c077a9182561a95f071d9c0d4a7a7f06fca98)

Signed-off-by: Juro Bystricky <juro.bystricky@intel.com>
Signed-off-by: Ross Burton <ross.burton@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Signed-off-by: Armin Kuster <akuster808@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-09-21 16:55:58 +01:00
Armin Kuster
4297169451 linuux-yocto/4.1: update to 4.1.43 plus bluetooth CVE-2017-1000251
(From OE-Core rev: 9b7ac3fbe76424a9c797b62cb7ed895c2844ea4b)

Signed-off-by: Armin Kuster <akuster808@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-09-21 16:55:58 +01:00
Ross Burton
5d5cc1fa6a libproxy: use stable download URL
GitHub automatically-generated tarballs from tags can and do change over time,
so change libproxy to use the uploaded tarball.

(From OE-Core rev: 1a159da61a8a3d06918f838b1dcec45eed2815a7)

(From OE-Core rev: ea56903d4dded44845d89d7ee7208b88027512d8)

Signed-off-by: Ross Burton <ross.burton@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Signed-off-by: Armin Kuster <akuster808@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-09-21 16:55:58 +01:00
Bruce Ashfield
ec29ea0394 linux-yocto/4.9: bluetooth: CVE-2017-1000251
Integrating the following commit:

[
    commit 16de0149674ed12d983b77a453852ac2e64584b4
    Author: Ben Seri <ben@armis.com>
    Date:   Sat Sep 9 23:15:59 2017 +0200

    Bluetooth: Properly check L2CAP config option output buffer length

    Validate the output buffer length for L2CAP config requests and
    responses to avoid overflowing the stack buffer used for building the
    option blocks.

    Cc: stable@vger.kernel.org
    Signed-off-by: Ben Seri <ben@armis.com>
    Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Bruce Ashfield <bruce.ashfield@windriver.com>
]

(From OE-Core rev: a15ec979910a74d4490aecf30aa21fa5c2f4e99d)

(From OE-Core rev: cda7f3650deebd8a3a7108a2a2e782ebb661150c)

Signed-off-by: Bruce Ashfield <bruce.ashfield@windriver.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Signed-off-by: Armin Kuster <akuster808@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-09-21 16:55:58 +01:00
Bruce Ashfield
468bcd601d linux-yocto/4.4: bluetooth: CVE-2017-1000251
Integrating the following commit:

[
    commit 16de0149674ed12d983b77a453852ac2e64584b4
    Author: Ben Seri <ben@armis.com>
    Date:   Sat Sep 9 23:15:59 2017 +0200

    Bluetooth: Properly check L2CAP config option output buffer length

    Validate the output buffer length for L2CAP config requests and
    responses to avoid overflowing the stack buffer used for building the
    option blocks.

    Cc: stable@vger.kernel.org
    Signed-off-by: Ben Seri <ben@armis.com>
    Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Bruce Ashfield <bruce.ashfield@windriver.com>
]

(From OE-Core rev: a7e749a7d03818aaa21265dfb455c1a2766782cc)

(From OE-Core rev: 96c573e6e146f7e6366e3543054c87cf9960603e)

Signed-off-by: Bruce Ashfield <bruce.ashfield@windriver.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Signed-off-by: Armin Kuster <akuster808@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-09-21 16:55:58 +01:00
Bruce Ashfield
e77d5579f4 linux-yocto/4.10: bluetooth: CVE-2017-1000251
Integrating the following commit:

[
    commit 16de0149674ed12d983b77a453852ac2e64584b4
    Author: Ben Seri <ben@armis.com>
    Date:   Sat Sep 9 23:15:59 2017 +0200

    Bluetooth: Properly check L2CAP config option output buffer length

    Validate the output buffer length for L2CAP config requests and
    responses to avoid overflowing the stack buffer used for building the
    option blocks.

    Cc: stable@vger.kernel.org
    Signed-off-by: Ben Seri <ben@armis.com>
    Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Bruce Ashfield <bruce.ashfield@windriver.com>
]

(From OE-Core rev: 7d3ae3213e6da8c27b9618594a8c20c674b0f8f3)

(From OE-Core rev: aa18cb2391dad13bb332b9674b931ce31271cb64)

Signed-off-by: Bruce Ashfield <bruce.ashfield@windriver.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Signed-off-by: Armin Kuster <akuster808@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-09-21 16:55:57 +01:00
Bruce Ashfield
460d2292f8 linux-yocto/4.9: update to v4.9.49
Integrating the korg -stable updates that comprise the following commits:

   f07cb3489cff Linux 4.9.49
   8bc67f67b763 drm/bridge: adv7511: Switch to using drm_kms_helper_hotplug_event()
   8b5a7e443622 drm/bridge: adv7511: Use work_struct to defer hotplug handing to out of irq context
   7791b59153cb scsi: sg: recheck MMAP_IO request length with lock held
   b06e1abf1ff2 scsi: sg: protect against races between mmap() and SG_SET_RESERVED_SIZE
   5b9c6a54c629 cs5536: add support for IDE controller variant
   ec552ece1f25 workqueue: Fix flag collision
   25bdc516b58e drm/nouveau/pci/msi: disable MSI on big-endian platforms by default
   078866740e35 s390/mm: avoid empty zero pages for KVM guests to avoid postcopy hangs
   c193becad9ad MCB: add support for SC31 to mcb-lpc
   0e720cd70631 mwifiex: correct channel stat buffer overflows
   5c23d3ed1190 dlm: avoid double-free on error path in dlm_device_{register,unregister}
   23b7d4f52b69 iwlwifi: pci: add new PCI ID for 7265D
   747562619512 Bluetooth: Add support of 13d3:3494 RTL8723BE device
   b48f7183c64c rtlwifi: rtl_pci_probe: Fix fail path of _rtl_pci_find_adapter
   ed7a384a904f Input: trackpoint - assume 3 buttons when buttons detection fails
   90a1e2e19ed7 ath10k: fix memory leak in rx ring buffer allocation
   d8b992d93555 intel_th: pci: Add Cannon Lake PCH-LP support
   a22d561178ee intel_th: pci: Add Cannon Lake PCH-H support
   5555eb956edc driver core: bus: Fix a potential double free
   ffb58b875d24 iio: adc: ti-ads1015: add adequate wait time to get correct conversion
   ff4a98e3bcb3 iio: adc: ti-ads1015: don't return invalid value from buffer setup callbacks
   1ed4565b7c7b iio: adc: ti-ads1015: avoid getting stale result after runtime resume
   c72ad1a4fdf0 iio: adc: ti-ads1015: enable conversion when CONFIG_PM is not set
   115af6c3b155 iio: adc: ti-ads1015: fix scale information for ADS1115
   177d84e3a72a iio: adc: ti-ads1015: fix incorrect data rate setting update
   e58b04fb5b0b staging/rts5208: fix incorrect shift to extract upper nybble
   afcfe0661a74 USB: core: Avoid race of async_completed() w/ usbdev_release()
   80cdcd7f5335 USB: musb: fix external abort on suspend
   6b3b3a22ef20 usb:xhci:Fix regression when ATI chipsets detected
   99a22c84f51d usb: Add device quirk for Logitech HD Pro Webcam C920-C
   773b93f4255f USB: serial: option: add support for D-Link DWM-157 C1
   2ea91c52ff5f usb: quirks: add delay init quirk for Corsair Strafe RGB keyboard
   8a697a50c090 Linux 4.9.48
   d325f1f1e245 epoll: fix race between ep_poll_callback(POLLFREE) and ep_free()/ep_remove()
   dd2342ad6665 kvm: arm/arm64: Force reading uncached stage2 PGD
   70df301a083c drm/ttm: Fix accounting error when fail to get pages for pool
   12a70ccaa686 xfrm: policy: check policy direction value
   31decdcd8369 lib/mpi: kunmap after finishing accessing buffer
   9e2788ce8f17 wl1251: add a missing spin_lock_init()
   e2ae90bb85f8 CIFS: remove endian related sparse warning
   c5e76654a9e5 CIFS: Fix maximum SMB2 header size
   d4e7dfda905e alpha: uapi: Add support for __SANE_USERSPACE_TYPES__
   309e4dbfaf3d cpuset: Fix incorrect memory_pressure control file mapping
   da16ed52c36a cpumask: fix spurious cpumask_of_node() on non-NUMA multi-node configs
   715849268b34 ceph: fix readpage from fscache
   8cc3acff5f1a mm, madvise: ensure poisoned pages are removed from per-cpu lists
   17c564f629f4 mm, uprobes: fix multiple free of ->uprobes_state.xol_area
   9e0a64330ce5 crypto: algif_skcipher - only call put_page on referenced and used pages
   91a0e1edb80a i2c: ismt: Return EMSGSIZE for block reads with bogus length
   d22f6da47355 i2c: ismt: Don't duplicate the receive length for block reads
   31562136c8d4 irqchip: mips-gic: SYNC after enabling GIC region
   458ca52f1564 Linux 4.9.47
   529ada21ff9e lz4: fix bogus gcc warning
   c47c52cde806 scsi: sg: reset 'res_in_use' after unlinking reserved array
   4099ac938385 scsi: sg: protect accesses to 'reserved' page array
   c0c6dff92303 locking/spinlock/debug: Remove spinlock lockup detection code
   27e7506c33d0 arm64: fpsimd: Prevent registers leaking across exec
   43f776dab360 x86/io: Add "memory" clobber to insb/insw/insl/outsb/outsw/outsl
   509d8b52bbe7 arm64: mm: abort uaccess retries upon fatal signal
   3e033635b2b7 kvm: arm/arm64: Fix race in resetting stage2 PGD
   b8a1532b16fd gcov: support GCC 7.1
   47974403c9ca staging: wilc1000: simplify vif[i]->ndev accesses
   dd758f82a3bf scsi: isci: avoid array subscript warning
   f71996c3ce5d p54: memset(0) whole array

(From OE-Core rev: 57819c9f133f168a6a856afa0d0c5ac57a4f2f44)

(From OE-Core rev: 8114054e92a575ef64b72124194dd3162c56ebb2)

Signed-off-by: Bruce Ashfield <bruce.ashfield@windriver.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Signed-off-by: Armin Kuster <akuster808@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-09-21 16:55:57 +01:00
Bruce Ashfield
0808085dc4 linux-yocto/4.4: update to v4.4.87
Integrating the -stable update with the following commits:

   573b59e17e37 Linux 4.4.87
   d95827490c39 crypto: algif_skcipher - only call put_page on referenced and used pages
   ab3ee6b53d67 epoll: fix race between ep_poll_callback(POLLFREE) and ep_free()/ep_remove()
   628212c89fae kvm: arm/arm64: Force reading uncached stage2 PGD
   57ff696f54b5 kvm: arm/arm64: Fix race in resetting stage2 PGD
   94183009ac0e drm/ttm: Fix accounting error when fail to get pages for pool
   9b3dcc98d8df xfrm: policy: check policy direction value
   c0c2e7567a34 wl1251: add a missing spin_lock_init()
   5f08f0aebf70 CIFS: remove endian related sparse warning
   e596cc1454d4 CIFS: Fix maximum SMB2 header size
   6cdda3497db8 alpha: uapi: Add support for __SANE_USERSPACE_TYPES__
   ed48d9230e30 cpuset: Fix incorrect memory_pressure control file mapping
   15e94ec4ec21 cpumask: fix spurious cpumask_of_node() on non-NUMA multi-node configs
   857d0b3dd756 ceph: fix readpage from fscache
   043ccc9781cc i2c: ismt: Return EMSGSIZE for block reads with bogus length
   fab3229af4e5 i2c: ismt: Don't duplicate the receive length for block reads
   e119fc492de9 irqchip: mips-gic: SYNC after enabling GIC region
   cd99a4f3f43b Linux 4.4.86
   c81c4d453edf drm/i915: fix compiler warning in drivers/gpu/drm/i915/intel_uncore.c
   b7571624fe98 scsi: sg: reset 'res_in_use' after unlinking reserved array
   a4075bbb67b9 scsi: sg: protect accesses to 'reserved' page array
   823086b057aa arm64: fpsimd: Prevent registers leaking across exec
   218720fe5939 x86/io: Add "memory" clobber to insb/insw/insl/outsb/outsw/outsl
   a7a074f3a4d5 arm64: mm: abort uaccess retries upon fatal signal
   da981044d049 lpfc: Fix Device discovery failures during switch reboot test.
   389328ea1379 p54: memset(0) whole array
   5acdbe667cf4 lightnvm: initialize ppa_addr in dev_to_generic_addr()
   d255fffdb532 gcov: support GCC 7.1
   2f3e97a814c8 gcov: add support for gcc version >= 6
   41685ae5cd7b i2c: jz4780: drop superfluous init
   05429bbfd726 btrfs: remove duplicate const specifier
   9a64425945a0 ALSA: au88x0: Fix zero clear of stream->resources
   da8477a6695a scsi: isci: avoid array subscript warning

(From OE-Core rev: 6b06a7ae93d7d98c03e7e924a434463a4337e47b)

(From OE-Core rev: fd7b5e308d17f92ea24b6eb17631327a4e9eec9f)

Signed-off-by: Bruce Ashfield <bruce.ashfield@windriver.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Signed-off-by: Armin Kuster <akuster808@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-09-21 16:55:57 +01:00
Olaf Mandel
873a4eca11 (PRE)MIRRORS: fix pattern for npm:// without slash
For URIs with the npm:// transport but with no other slash in it, the
common MIRRORS and PREMIRRORS pattern of npm://.*/.* fails to match.
Make the last slash in the pattern optional in the mirros.bbclass and
own-mirrors.bbclass classes.

Many URIs with the npm:// transport have no slash after the host part:

  npm://registry.npmjs.org;name=foo;version=0.1.2

This means that MIRRORS and PREMIRRORS containing entries like the
first one will not match these URIs:

  npm://.*/.*   # fails to match
  npm://.*/?.*  # matches this and URIs with path components

For normal regular expressions, a pattern like 'npm://.*(/.*)?' would
probably be preferred, but that won't work here: the pattern gets split
into the substrings 'npm', '.*(' and '/.*)?', which are not valid
regular expressions individually.

(From OE-Core rev: 0d1e2b4507af28fc451b8fa94130a39ac342637d)

(From OE-Core rev: 1f5675a43e1781635fee15cc3674143c195da169)

Signed-off-by: Olaf Mandel <o.mandel@menlosystems.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Signed-off-by: Armin Kuster <akuster808@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-09-21 16:55:57 +01:00
Leonardo Sandoval
23ea6ac574 waffle: fix REQUIRED_DISTRO_FEATURES and PACKAGECONFIG virtual/libgl dependencies
Waffle's REQUIRED_DISTRO_FEATURES statement looks into DEPENDS and if
virtual/libgl is present, it includes opengl as distro feature. However,
in a multilib environment, recipes provides virtual/${MLPREFIX}libgl,
thus waffle recipe needs to include the prefix. Also PACKAGECONFIG
statements need this change in order to properly include the libgl
dependency.

The way this error showed up was in a multilib environment and a distro
not containing opengl, i.e. nodistro, leading the following error when
building world -S none (because opengl was not included as required distro
feature):

    ERROR: Nothing PROVIDES 'virtual/lib32-libgl' (but virtual:multilib:lib32:/meta/recipes-graphics/waffle/waffle_1.5.2.bb DEPENDS on or otherwise requires it). Close matches:
      virtual/lib32-libsdl
      virtual/lib32-libc
      virtual/lib32-libsdl2
    ERROR: Required build target 'lib32-meta-world-pkgdata' has no buildable providers.
    Missing or unbuildable dependency chain was: ['lib32-meta-world-pkgdata', 'meta-world-pkgdata', 'lib32-waffle', 'virtual/lib32-libgl']

    Summary: There were 2 ERROR messages shown, returning a non-zero exit code.

[YOCTO #10900]

(From OE-Core rev: 2e3344a3b6d5c709ab0d368dd171240ab5cc6e22)

(From OE-Core rev: 8b0c5abe824647c6c9205ecedd29c3ac54c423a5)

Signed-off-by: Leonardo Sandoval <leonardo.sandoval.gonzalez@linux.intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Signed-off-by: Armin Kuster <akuster808@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-09-21 16:55:57 +01:00
Jose Alarcon
44c5efb453 rootfs-postcommands: add test for unsatisfied RRECOMMENDS
The do_rootfs log contains a number of unsatisfied package
recommendations. At the moment those are only visible when
reviewing the rootfs log.

This patch adds an extra check to surface any unsatisfied
recommendation  as WARNINGS to the build output.

Enable this check with:
ROOTFS_POSTPROCESS_COMMAND += "rootfs_log_check_recommends;"

(From OE-Core rev: 9d049bf7941f30e35c51775684559e95185fba96)

(From OE-Core rev: 514cadd28d05f5060b2538ef9b2920370c22bf73)

Signed-off-by: Jose Alarcon <jose.alarcon@ge.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Signed-off-by: Armin Kuster <akuster808@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-09-21 16:55:57 +01:00
Jose Alarcon
4d85aa71a0 rootfs-postcommands: remove empty line
(From OE-Core rev: 76a801da7fe5651d9e8310a2b32c275e1700daf3)

(From OE-Core rev: 189ea6f0232f1910736121fb15f80eea97932af8)

Signed-off-by: Jose Alarcon <jose.alarcon@ge.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Signed-off-by: Armin Kuster <akuster808@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-09-21 16:55:57 +01:00
Khem Raj
40ce8ca30c rootfs-postcommands.bbclass: Filter out dangling symlinks in ssh_allow_empty_password()
In images built with pam in DISTRO_FEATURES, we end up with dangling symlinks
if su is not packaged into image

$ ls /mnt/a/oe/build/tmp/work/raspberrypi3-bec-linux-gnueabi/core-image-minimal/1.0-r0/rootfs/etc/pam.d/su-l -l
lrwxrwxrwx 1 kraj users 2 Aug  9 07:56 /mnt/a/oe/build/tmp/work/raspberrypi3-bec-linux-gnueabi/core-image-minimal/1.0-r0/rootfs/etc/pam.d/su-l -> su

This causes image do_rootfs to fail

| sed: can't read /mnt/a/oe/build/tmp/work/raspberrypi3-bec-linux-gnueabi/core-image-minimal/1.0-r0/rootfs/etc/pam.d/s
u-l: No such file or directory
| WARNING: /mnt/a/oe/build/tmp/work/raspberrypi3-bec-linux-gnueabi/core-image-minimal/1.0-r0/temp/run.ssh_allow_empty_
password.19238:1 exit 2 from 'sed -i 's/nullok_secure/nullok/' /mnt/a/oe/build/tmp/work/raspberrypi3-bec-linux-gnueabi
/core-image-minimal/1.0-r0/rootfs/etc/pam.d/*'

Therefore we need to filter out dangling symlinks before sed'ing
things out

(From OE-Core rev: b92105e5a085c8cd3c650579644922ed97163e73)

(From OE-Core rev: ed1aaf24bfd4a09132c7e0247c460102ec85254d)

Signed-off-by: Khem Raj <raj.khem@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Signed-off-by: Armin Kuster <akuster808@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-09-21 16:55:57 +01:00
Peter Kjellerstedt
88455dd53c alsa-utils: Do not hardcode path to /lib/udev
Use ${nonarch_base_libdir}/udev instead. This avoids problems when
usrmerge is enabled in DISTRO_FEATURES and udev support is disabled.

(From OE-Core rev: 0a4372705a030ca54ed420cdfec33d46ab93499c)

(From OE-Core rev: d9f3c803d739a815fe5ee2e1227c5ae571fefb8f)

Signed-off-by: Peter Kjellerstedt <peter.kjellerstedt@axis.com>
Signed-off-by: Ross Burton <ross.burton@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
(cherry picked from commit 8e9ceff887)
Signed-off-by: Armin Kuster <akuster808@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-09-21 16:55:57 +01:00
Alexander Kanavin
625b0a6702 package_rpm.bbclass: disable generation of .build-id links
As we're not using them and they're getting in the way of
reproducibility.

[YOCTO #11718]

(From OE-Core rev: 1bd3ed18379c330c1c733dc9f043dbbe8aa0d254)

(From OE-Core rev: 5c8f831c71932e2abebd72f8be1ec95e1b6c3ab7)

Signed-off-by: Alexander Kanavin <alexander.kanavin@linux.intel.com>
Signed-off-by: Ross Burton <ross.burton@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Signed-off-by: Armin Kuster <akuster808@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-09-21 16:55:57 +01:00
Alexander Kanavin
59f8925f60 package_rpm.bbclass: use multithreaded xz compression
RPM's default is single-threaded gz; the change greatly helps with
both buildtimes (when there is a small number of large-sized packages)
and disk space taken by resulting rpms.

(From OE-Core rev: f108c4d09926bd28e7a57b665fc8cb5373827780)

(From OE-Core rev: fd329fdc6374ebde3f5ab171dbe76bf5cec6771d)

Signed-off-by: Alexander Kanavin <alexander.kanavin@linux.intel.com>
Signed-off-by: Ross Burton <ross.burton@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Signed-off-by: Armin Kuster <akuster808@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-09-21 16:55:57 +01:00
Ng Wei Tee
f6eff90737 rpm: allow arch-dependent binaries in noarch packages
This is needed for packages like linux-firmware which have a
legitimate reason for it. Oe-core has a separate package_qa
test for this situation, so any accidental inclusions of such
binaries will still be caught.

[YOCTO #11329]

(From OE-Core rev: 6aaff392d703183d19192e2d171e10a92f259c65)

(From OE-Core rev: 35059f271964da1f8112a45f19875b59fb9cd02f)

Signed-off-by: Ng Wei Tee <wei.tee.ng@intel.com>
Signed-off-by: Ross Burton <ross.burton@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Signed-off-by: Armin Kuster <akuster808@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-09-21 16:55:57 +01:00
Mark Hatle
b5bef4ea31 bitbake: cooker.py: Fix layer priority processing
If you have a layer with a blank BBFILE_PATTERN the layer was ignored
when processing the list of layers with priorities.  This list is not
only used for processing recipes, but also by additional programs such
as bitbake-layers show-layers.

Without this change, a layer that provides configuration or classes
only does now show up in show-layers, which is used by the
yocto-compat-layer.py script.  This causes a failures in the compatibility
check.

(Bitbake rev: 1db8336cee8cd22aaaa67e3dde5b9218840ba4a1)

Signed-off-by: Mark Hatle <mark.hatle@windriver.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-09-21 16:51:07 +01:00
David Reyna
372f72f2ee bitbake: toaster: recipe links broken for default layers
The default layers are missing the recipe link definitions in
the fixture files, and because they are predefined they do not
get the updated information from the Layer Index.

[YOCTO #12006]

(Bitbake rev: b408dfae3685494ae34417e72c586b9eb0ddace9)

Signed-off-by: David Reyna <David.Reyna@windriver.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-09-21 16:51:07 +01:00
David Reyna
17b4f4e731 bitbake: toaster: edit column list not sorted
The list of columns in the many 'Edit Columns' pop-ups became unsorted
with the 'Toaster Table' implementation. These entries need to be
gathered and sorted in the column processing.

[YOCTO #12004]

(Bitbake rev: d06a8ff74be11e4315feac6768064355ec15611f)

Signed-off-by: David Reyna <David.Reyna@windriver.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-09-21 16:51:07 +01:00
Olaf Mandel
8ef614ee77 bitbake: toaster: set default pokydirname if no external layers
If no external layers are defined, pokydirname is not set. Rectify
this by taking the 'be.sourcedir' as the pokydirname.

[YOCTO #12015]

(Bitbake rev: 4bcf15abbd6c399b7094762394393d41e0f347e7)

Signed-off-by: Olaf Mandel <o.mandel@menlosystems.com>
Signed-off-by: David Reyna <David.Reyna@windriver.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-09-21 16:51:07 +01:00
Olaf Mandel
9566ec3c3a bitbake: toaster: debug message for lists layers missing separators
One of the debug messages during build contains a list of all layers
but without spaces or other separators between them. Use pformat
instead.

[YOCTO #12014]

(Bitbake rev: 00fb88c9c969ae9b38004adf236c057628b3227d)

Signed-off-by: Olaf Mandel <o.mandel@menlosystems.com>
Signed-off-by: David Reyna <David.Reyna@windriver.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-09-21 16:51:07 +01:00
Awais Belal
f744d7c496 bitbake: toaster: Order column in Tasks selectable
The build page provides tables related to performance that
cover build time, CPU time and disk IO. The "Edit columns"
drop down does not allow selection of the Order column and
makes it hidden as well which is not accurate from user
interaction point of view.
This patch enables the hideable property for the Order column
so it is hidden by default but the user can enable it through
the drop down if need be.

[YOCTO #11040]

(Bitbake rev: a3063e3c7e3ae21bcebe23fcf0a4fda559252fb5)

Signed-off-by: Awais Belal <awais_belal@mentor.com>
Signed-off-by: David Reyna <David.Reyna@windriver.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-09-21 16:51:07 +01:00
David Reyna
4c246b822a bitbake: toaster: display error when the fstype select is empty
There must be at least one FSTYPE selected in the Toaster bitbake
variable editor page. When the user deselects all the "Save"
button gets disabled, but the error message is missing.

[YOCTO #8126]

(Bitbake rev: 407bb26eebe4ec8a68547fd98b0a15cb18895d9a)

Signed-off-by: David Reyna <David.Reyna@windriver.com>
Signed-off-by: David Reyna <David.Reyna@windriver.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-09-21 16:51:06 +01:00
Paul Eggleton
9034b2c57b bitbake: cooker: ensure monkey-patching in collect_bbfiles() gets undone on error
In collect_bbfiles() we're monkey-patching os.listdir in order to find
which directories to watch, and then undoing that when we're finished -
however if an exception occurred for any reason there was nothing to
ensure the latter occurred. This may not have caused any issues, but as
this kind of thing really ought to be secured using try...finally just
in case, so do that.

(Bitbake rev: 021e0eda63bd629af56b5e1c380c5f98868f7332)

Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-09-21 16:51:06 +01:00
Paul Eggleton
0704bbdaeb bitbake: cooker: fix watching empty directories
The code that was supposed to watch directories along BBFILES for
creation of new files wasn't working in the case where the directory did
not initially contain any matching files - since in updateCache() we are
passing the directory path to add_filewatch() and the latter function
calls os.path.dirname() on the path on the assumption that it is a file
path, and thus the parent of the directory got watched but not the
directory itself. (If the directory wasn't empty everything worked fine
since add_filewatch() was called elsewhere with the path to one of the
files in that directory, and thus the directory got watched). Add a
parameter to add_filewatch() to tell it we are passing it directory
path(s) rather than file path(s).

(Bitbake rev: b0b36ff889715227e394c59a36326c31ea21b96b)

Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-09-21 16:51:06 +01:00
Richard Purdie
200362645b bitbake: cooker: Track directories searched for bbappend/bb files
Some of the directories searched by BBFILES are not currently being added
to the inotify watch list. This can mean that added append files are not
noticed leading to misleading metadata results when using
BB_SERVER_TIMEOUT != 0.

We use glob to expand the BBFILES references and without writing our own
implentation, figuring out the directories it searches is hard. We use
some horrible hacks here to intecept the listdir calls, I'm open
to better ways to handle this but this does ensure we have the right
watches set.

(Bitbake rev: a161ea021a1e309c25d1adc09e6e3fc58442c893)

Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-09-21 16:51:06 +01:00
Martin Jansa
072430b9b3 bitbake.conf: add bzr to HOSTTOOLS_NONFATAL
* it's used by bzr fetcher:
  meta/conf/bitbake.conf:FETCHCMD_bzr = "/usr/bin/env bzr"
  and when it isn't available in PATH do_fetch tasks fail with:
  /usr/bin/env: ‘bzr’: No such file or directory
* it was also added in:
  https://patchwork.openembedded.org/patch/140107/
  but this change wasn't merged (nor rejected AFAIS)

* cherry-picked from master c7ba7e9e7a7ca2caf453106112dc5a3c855b21d3

(From OE-Core rev: 92f73702d95e9c6ae72de667f225c9d24afe5c0a)

Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-09-13 22:13:00 +01:00
Martin Jansa
5228b68cfe glibc-locale: add runtime dependency on glibc
* the libc.so.6 dependency is detected always:
  $ grep FILERDEPENDS BUILD-*/pkgdata/qemux86/runtime/localedef
  BUILD-bad/pkgdata/qemux86/runtime/localedef:FILERDEPENDSFLIST_localedef: /usr/bin/localedef
  BUILD-bad/pkgdata/qemux86/runtime/localedef:FILERDEPENDS_/usr/bin/localedef_localedef: libc.so.6(GLIBC_2.15) libc.so.6(GLIBC_2.3) libc.so.6(GLIBC_2.2) libc.so.6(GLIBC_2.1) libc.so.6(GLIBC_2.0) libc.so.6
  BUILD-ok/pkgdata/qemux86/runtime/localedef:FILERDEPENDSFLIST_localedef: /usr/bin/localedef
  BUILD-ok/pkgdata/qemux86/runtime/localedef:FILERDEPENDS_/usr/bin/localedef_localedef: libc.so.6(GLIBC_2.15) libc.so.6(GLIBC_2.3) libc.so.6(GLIBC_2.2) libc.so.6(GLIBC_2.1) libc.so.6(GLIBC_2.0) libc.so.6

* but in some builds the glibc dependency isn't built soon enough:
  $ diff -uNr BUILD-*/pkgdata/qemux86/runtime/localedef
  --- BUILD-bad/pkgdata/qemux86/runtime/localedef 2017-09-02 21:17:50.000000000 +0000
  +++ BUILD-ok/pkgdata/qemux86/runtime/localedef  2017-09-11 10:15:49.954381592 +0000
  @@ -6,6 +6,7 @@
   LICENSE: GPLv2 & LGPLv2.1
   DESCRIPTION_localedef: glibc: compile locale definition files
   SUMMARY: Locale data from glibc
  +RDEPENDS_localedef: glibc (>= 2.26)
   SECTION: base
   PKG_localedef: localedef
   FILES_localedef: /usr/bin/localedef
  and the build fails with QA issues:
  http://errors.yoctoproject.org/Errors/Details/155529/

  ERROR: QA Issue: /usr/bin/localedef contained in package localedef requires libc.so.6(GLIBC_2.0), but no providers found in RDEPENDS_localedef? [file-rdeps]
  ERROR: QA Issue: /usr/bin/localedef contained in package localedef requires libc.so.6(GLIBC_2.15), but no providers found in RDEPENDS_localedef? [file-rdeps]
  ERROR: QA Issue: /usr/bin/localedef contained in package localedef requires libc.so.6(GLIBC_2.3), but no providers found in RDEPENDS_localedef? [file-rdeps]
  ERROR: QA Issue: /usr/bin/localedef contained in package localedef requires libc.so.6(GLIBC_2.2), but no providers found in RDEPENDS_localedef? [file-rdeps]
  ERROR: QA Issue: /usr/bin/localedef contained in package localedef requires libc.so.6(GLIBC_2.1), but no providers found in RDEPENDS_localedef? [file-rdeps]
  ERROR: QA Issue: /usr/bin/localedef contained in package localedef requires libc.so.6, but no providers found in RDEPENDS_localedef? [file-rdeps]
  ERROR: QA run found fatal errors. Please consider fixing them.

* reproducible with Yocto 2.2 Morty as well, with slightly different
  error message:
  ERROR: glibc-locale-2.24-r0 do_package_qa: QA Issue: /usr/bin/localedef contained in package localedef requires libc.so.6(GLIBC_2.4), but no providers found in RDEPENDS_localedef? [file-rdeps]

* cherry-picked from master 2d2b4d7383c93174fe8eeb72440e81345df71295

(From OE-Core rev: eade33d548bd1a16f5397a44299ac809707efd60)

Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-09-13 22:13:00 +01:00
Richard Purdie
ce26a57e04 Revert "expat: Don't use getrandom() in the -native case"
This reverts commit 450942db7f4638eba7ec262901fe1d7e1b1f6070.

Applied in error to the pyro branch.

Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-09-11 23:51:59 +01:00
Richard Purdie
c60135eeef poky: Update version to 2.3.2
(From meta-yocto rev: b96df6ebe62b38343e0e0516e059c2b8f3ee2deb)

Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-09-11 22:16:59 +01:00
Khem Raj
e2ab43fd1d grub: Fix build with gcc7
backport patches from upsteam and adapt them to 2.0 codebase

(From OE-Core rev: 347976bf08158d1aa46dfea6f0f9d6dcc0d97395)

Signed-off-by: Khem Raj <raj.khem@gmail.com>
Signed-off-by: Armin Kuster <akuster808@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-09-11 22:15:59 +01:00
Richard Purdie
911146122c staging: Fix a logic error which caused dependency removal
There was a logic error in the dependency cleanup code which meant
it would remove dependencies which other tasks still depended upon.
Fix the path names so the comparisions work as intended.

This fixes dependencies accidentally disappearing from sysroots
under certain reconfiguration situations.

(From OE-Core rev: 1634fe5148b3501f2c1b75cf7fb704a2ef60424e)

(From OE-Core rev: 3969c068bc9557b405a5ad61c10c402ec93bd932)

Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
(cherry picked from commit a6631eed6f)
Signed-off-by: Armin Kuster <akuster808@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-09-11 22:15:59 +01:00
Richard Purdie
8329bfd156 staging: Ensure dependencies are removed before being added
Currently items are added to the sysroot, the obsolete items are removed. If
a change such as pkgconfig -> pkgconf is made, this leads to conflicts of
overlapping files in the sysroot.

In order to better support this, handle removing items before adding them.
This requires some minor refactoring to construct the installed list
before the main function loop, otherwise there are no changes in this
patch other than reordering the operations.

(From OE-Core rev: add4f107c151d32d9ea914bb0b93c3d3c17c776c)

(From OE-Core rev: 970d4df7336e5102ac61e66689e977fb2e41a1aa)

Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
(cherry picked from commit 5b45fe40db)
Signed-off-by: Armin Kuster <akuster808@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-09-11 22:15:59 +01:00
Richard Purdie
292cb6a32f staging: Avoid sysroot removal races
Currently a task could remove a dependency needed by another task leading
to build failures, often due to missing dependencies (e.g. dynamic libraries
not being found). This was often seen for all-arch recipes in package_write_rpm.

When removing a dependency, first check that no other task active for the
recipe has that same dependency.

(From OE-Core rev: ff3617cc2cd5618f48a25aa4e3b2014430fcbe23)

(From OE-Core rev: 67438ac91a40429affc952ad1d7e92c763f52bab)

Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
(cherry picked from commit 3de0786429)
Signed-off-by: Armin Kuster <akuster808@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-09-11 22:15:59 +01:00
Paul Eggleton
54efca180b classes/license: drop erroneous sha256 parameter in LIC_FILES_CHKSUM
In OE-Core commit a48fea275b, a check on
the value of a "sha256" parameter was added, however there was no
mention of this in the commit message and no corresponding code to
actually verify the checksum as sha256 was added along with it either,
so there's no point in getting the value. Additionally it was assuming
that a sha256 value would be present without checking first, with the
result that if you leave out the md5 value in a recipe intentionally in
order to get it to tell you the correct value on the next build, you got
a traceback instead of the appropriate error containing the information.
Drop this entirely - if we want to implement this we need to do it
properly.

(From OE-Core rev: e9eaa7d15fe7ab643ab19556dab84051f8f1974e)

(From OE-Core rev: fcedfce43adad8659a1376bb28b1ed41e621dd53)

Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Signed-off-by: Armin Kuster <akuster808@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-09-11 22:15:59 +01:00
Bruce Ashfield
21c1a32746 linux-yocto/4.4: update to v4.4.85
Integrating the korg releases with the following commit summary:

   717bd21f81a3 Linux 4.4.85
   12b25d2a52f0 ACPI / APEI: Add missing synchronize_rcu() on NOTIFY_SCI removal
   b526de00a9b0 ACPI: ioapic: Clear on-stack resource before using it
   4e5f2c204150 ntb_transport: fix bug calculating num_qps_mw
   1aac8ffd619f ntb_transport: fix qp count bug
   4ec0b2c2d235 ASoC: rsnd: don't call update callback if it was NULL
   95fc5ef85428 ASoC: rsnd: ssi: 24bit data needs right-aligned settings
   fd504621fa52 ASoC: rsnd: Add missing initialization of ADG req_rate
   e974777b2ecb ASoC: rsnd: avoid pointless loop in rsnd_mod_interrupt()
   fdc568a4224a ASoC: rsnd: disable SRC.out only when stop timing
   bfba69dc30ab ASoC: simple-card: don't fail if sysclk setting is not supported
   eb2ba09b05a6 staging: rtl8188eu: add RNX-N150NUB support
   1d7e8cf01e2e iio: hid-sensor-trigger: Fix the race with user space powering up sensors
   d2c072cb638d iio: imu: adis16480: Fix acceleration scale factor for adis16480
   9dac44d5d4b0 ANDROID: binder: fix proc->tsk check.
   1792d6c17cb2 binder: Use wake up hint for synchronous transactions.
   596b97ec2e5e binder: use group leader instead of open thread
   e1c7a4478833 Bluetooth: bnep: fix possible might sleep error in bnep_session
   f9adf422b993 Bluetooth: cmtp: fix possible might sleep error in cmtp_session
   172bbb8ee44a Bluetooth: hidp: fix possible might sleep error in hidp_session_thread
   708d19eaf303 perf/core: Fix group {cpu,task} validation
   87ac57ff972a nfsd: Limit end of page list when decoding NFSv4 WRITE
   e6066962ca46 cifs: return ENAMETOOLONG for overlong names in cifs_open()/cifs_lookup()
   210b41b4971e cifs: Fix df output for users with quota limits
   9f57741b44ba tracing: Fix freeing of filter in create_filter() when set_str is false
   0d2b7767611f drm: rcar-du: Fix H/V sync signal polarity configuration
   64f3c534e7ac drm: rcar-du: Fix display timing controller parameter
   fbf583912145 drm: rcar-du: Fix crash in encoder failure error path
   766a097cbfea drm: rcar-du: lvds: Rename PLLEN bit to PLLON
   2b60c153ff3d drm: rcar-du: lvds: Fix PLL frequency-related configuration
   3416ee45a8cb drm/atomic: If the atomic check fails, return its value first
   2a9d7664ffb2 drm: Release driver tracking before making the object available again
   33e4c6378417 i2c: designware: Fix system suspend
   10814c149eeb ARCv2: PAE40: Explicitly set MSB counterpart of SLC region ops addresses
   6b1c81dd7fdb ALSA: hda - Add stereo mic quirk for Lenovo G50-70 (17aa:3978)
   099e57fcb03f ALSA: core: Fix unexpected error at replacing user TLV
   07051c175477 Input: elan_i2c - add ELAN0602 ACPI ID to support Lenovo Yoga310
   5609ae96bcd6 Input: trackpoint - add new trackpoint firmware ID
   a56800ae1c57 mei: me: add lewisburg device ids
   707352e68745 mei: me: add broxton pci device ids
   58079f56b302 net_sched: fix order of queue length updates in qdisc_replace()
   248af6aa226c net: sched: fix NULL pointer dereference when action calls some targets
   eece6c91dd33 irda: do not leak initialized list.dev to userspace
   4e39b7409f3b tcp: when rearming RTO, if RTO time is in past then fire RTO ASAP
   ece3ff173731 ipv6: repair fib6 tree in failure case
   6415a71ddf15 ipv6: reset fn->rr_ptr when replacing route
   69827c395d25 tipc: fix use-after-free
   0e8d62861552 sctp: fully initialize the IPv6 address in sctp_v6_to_addr()
   1bd54371388c ipv4: better IP_MAX_MTU enforcement
   7e1fe0062c24 net_sched/sfq: update hierarchical backlog when drop packet
   114414b85475 ipv4: fix NULL dereference in free_fib_info_rcu()
   c207ec46b301 dccp: defer ccid_hc_tx_delete() at dismantle time
   c65eca7ddd88 dccp: purge write queue in dccp_destroy_sock()
   f0cd9201c0c0 af_key: do not use GFP_KERNEL in atomic contexts
   982ce2aa79fb Linux 4.4.84
   ccf1033d9983 usb: qmi_wwan: add D-Link DWM-222 device ID
   6b4509223681 usb: optimize acpi companion search for usb port devices
   ce1b98a30571 perf/x86: Fix LBR related crashes on Intel Atom
   b4cf49024cf4 pids: make task_tgid_nr_ns() safe
   46d51a26efbc Sanitize 'move_pages()' permission checks
   b27e9ff9a5f4 irqchip/atmel-aic: Fix unbalanced refcount in aic_common_rtc_irq_fixup()
   ed281a6acaf1 irqchip/atmel-aic: Fix unbalanced of_node_put() in aic_common_irq_fixup()
   64340986295d x86/asm/64: Clear AC on NMI entries
   c0b397fd6b2b xen: fix bio vec merging
   240628085eff mm: revert x86_64 and arm64 ELF_ET_DYN_BASE base changes
   cc971fa12bd2 mm/mempolicy: fix use after free when calling get_mempolicy
   669c8ab896a2 ALSA: usb-audio: Add mute TLV for playback volumes on C-Media devices
   f600f9c43346 ALSA: usb-audio: Apply sample rate quirk to Sennheiser headset
   735aa043bf00 ALSA: seq: 2nd attempt at fixing race creating a queue
   ae4743cac8d7 Input: elan_i2c - Add antoher Lenovo ACPI ID for upcoming Lenovo NB
   0dbf7f7811df Input: elan_i2c - add ELAN0608 to the ACPI table
   4362533a0468 crypto: x86/sha1 - Fix reads beyond the number of blocks passed
   04f4f73ffe93 parisc: pci memory bar assignment fails with 64bit kernels on dino/cujo
   ea088172692c audit: Fix use after free in audit_remove_watch_rule()
   b72f1119c654 netfilter: nf_ct_ext: fix possible panic after nf_ct_extend_unregister
   425fdd287e9b Linux 4.4.83
   792f1fe5ec55 pinctrl: samsung: Remove bogus irq_[un]mask from resource management
   6f51066b3797 pinctrl: sunxi: add a missing function of A10/A20 pinctrl driver
   8bb6ef68655e pnfs/blocklayout: require 64-bit sector_t
   7b5a9de376b8 iio: adc: vf610_adc: Fix VALT selection value for REFSEL bits
   567a21de8531 usb:xhci:Add quirk for Certain failing HP keyboard on reset after resume
   dd3a2a08943f usb: quirks: Add no-lpm quirk for Moshi USB to Ethernet Adapter
   921a1ed2a11a usb: core: unlink urbs from the tail of the endpoint's urb_list
   bc2f02f74549 USB: Check for dropped connection before switching to full speed
   ed4f50eec60f uas: Add US_FL_IGNORE_RESIDUE for Initio Corporation INIC-3069
   dedeba47c51a iio: light: tsl2563: use correct event code
   dfb5cc919c61 iio: accel: bmc150: Always restore device to normal mode after suspend-resume
   c5f6f4fe1c09 staging:iio:resolver:ad2s1210 fix negative IIO_ANGL_VEL read
   dc978e9b65ab USB: hcd: Mark secondary HCD as dead if the primary one died
   8b278516e5e3 usb: musb: fix tx fifo flush handling again
   8a0c225613c2 USB: serial: pl2303: add new ATEN device id
   31c9287b9430 USB: serial: cp210x: add support for Qivicon USB ZigBee dongle
   9cb43dec24e0 USB: serial: option: add D-Link DWM-222 device ID
   a89843a80bd4 nfs/flexfiles: fix leak of nfs4_ff_ds_version arrays
   7271d130b5dc fuse: initialize the flock flag in fuse_file on allocation
   b89e781dab24 iscsi-target: Fix iscsi_np reset hung task during parallel delete
   3afc4e9273de iscsi-target: fix memory leak in iscsit_setup_text_cmd()
   9ea732ebb53f mm: ratelimit PFNs busy info message
   97e371409da7 cpuset: fix a deadlock due to incomplete patching of cpusets_enabled()
   4e2e415f4cc1 Linux 4.4.82
   fab61468402b net: account for current skb length when deciding about UFO
   96cdeaa3af8f ipv4: Should use consistent conditional judgement for ip fragment in __ip_append_data and ip_finish_output
   d45aabadbcb9 mm/mempool: avoid KASAN marking mempool poison checks as use-after-free
   7e86f2d55f66 KVM: arm/arm64: Handle hva aging while destroying the vm
   6fe71ca3cb3c sparc64: Prevent perf from running during super critical sections
   938990d2433c udp: consistently apply ufo or fragmentation
   98c1ad1edfe8 revert "ipv4: Should use consistent conditional judgement for ip fragment in __ip_append_data and ip_finish_output"
   54fc0c32307d revert "net: account for current skb length when deciding about UFO"
   63364a508d24 packet: fix tp_reserve race in packet_set_ring
   37d5c6e8d38d net: avoid skb_warn_bad_offload false positives on UFO
   8607d550847f tcp: fastopen: tcp_connect() must refresh the route
   40fc2b4451a2 net: sched: set xt_tgchk_param par.nft_compat as 0 in ipt_init_target
   d0da2877d421 bpf, s390: fix jit branch offset related to ldimm64
   4e0675f44b89 net: fix keepalive code vs TCP_FASTOPEN_CONNECT
   025bb7f7e92c tcp: avoid setting cwnd to invalid ssthresh after cwnd reduction states
   2ab639c7e2d1 Linux 4.4.81
   34a08ae493f1 workqueue: implicit ordered attribute should be overridable
   0c787041504e net: account for current skb length when deciding about UFO
   12b8f014a394 ipv4: Should use consistent conditional judgement for ip fragment in __ip_append_data and ip_finish_output
   78c04996b588 mm: don't dereference struct page fields of invalid pages
   bbe660db23e4 signal: protect SIGNAL_UNKILLABLE from unintentional clearing.
   623f4fcd947e lib/Kconfig.debug: fix frv build failure
   9c83b97bdeab mm, slab: make sure that KMALLOC_MAX_SIZE will fit into MAX_ORDER
   5205f5216c6a ARM: 8632/1: ftrace: fix syscall name matching
   874f22658c54 virtio_blk: fix panic in initialization error path
   c9e4ee445752 drm/virtio: fix framebuffer sparse warning
   1e43b2d06474 scsi: qla2xxx: Get mutex lock before checking optrom_state
   a98737110659 phy state machine: failsafe leave invalid RUNNING state
   db01878ca5dd x86/boot: Add missing declaration of string functions
   032422cca86d tg3: Fix race condition in tg3_get_stats64().
   93585e813588 net: phy: dp83867: fix irq generation
   41433e314b77 sh_eth: R8A7740 supports packet shecksumming
   50231cef2d6f wext: handle NULL extra data in iwe_stream_add_point better
   cada8caa2655 sparc64: Measure receiver forward progress to avoid send mondo timeout
   7c37101cd650 xen-netback: correctly schedule rate-limited queues
   2933fb22de6d net: phy: Fix PHY unbind crash
   a8f1b40bb2da net: phy: Correctly process PHY_HALTED in phy_stop_machine()
   dc4132791a50 net/mlx5: Fix command bad flow on command entry allocation failure
   de6669607a45 sctp: fix the check for _sctp_walk_params and _sctp_walk_errors
   2bac20a4ae9c sctp: don't dereference ptr before leaving _sctp_walk_{params, errors}()
   dd4edbcbb760 dccp: fix a memleak for dccp_feat_init err process
   adcc87858e09 dccp: fix a memleak that dccp_ipv4 doesn't put reqsk properly
   c3278ed37d3e dccp: fix a memleak that dccp_ipv6 doesn't put reqsk properly
   91c5aa7ea073 net: ethernet: nb8800: Handle all 4 RGMII modes identically
   d1ed1f8ae487 ipv6: Don't increase IPSTATS_MIB_FRAGFAILS twice in ip6_fragment()
   499338964af8 packet: fix use-after-free in prb_retire_rx_blk_timer_expired()
   23f787ceebf8 openvswitch: fix potential out of bound access in parse_ct
   6d1e34ee278f mcs7780: Fix initialization when CONFIG_VMAP_STACK is enabled
   d0594690a9ee rtnetlink: allocate more memory for dev_set_mac_address()
   31afa8b5edf9 ipv4: initialize fib_trie prior to register_netdev_notifier call.
   f09db7559c1f ipv6: avoid overflow of offset in ip6_find_1stfragopt
   e9b2f4617a4e net: Zero terminate ifr_name in dev_ifname().
   c10e874bc3a5 ipv4: ipv6: initialize treq->txhash in cookie_v[46]_check()
   deae9956cfb4 saa7164: fix double fetch PCIe access condition
   e0f39019aa3f drm: rcar-du: fix backport bug
   76517ed2a7fe f2fs: sanity check checkpoint segno and blkoff
   c7c6f63dbc67 media: lirc: LIRC_GET_REC_RESOLUTION should return microseconds
   f1181047ff29 mm, mprotect: flush TLB if potentially racing with a parallel reclaim leaving stale TLB entries
   9745cbec9c1f iser-target: Avoid isert_conn->cm_id dereference in isert_login_recv_done
   ae059833646f iscsi-target: Fix delayed logout processing greater than SECONDS_FOR_LOGOUT_COMP
   bf54cf1ede97 iscsi-target: Fix initial login PDU asynchronous socket close OOPs
   cf4ab9d57cbe iscsi-target: Fix early sk_data_ready LOGIN_FLAGS_READY race
   119903dc36d3 iscsi-target: Always wait for kthread_should_stop() before kthread exit
   2bf7791c6a5e target: Avoid mappedlun symlink creation during lun shutdown
   fa95dfc750fb media: platform: davinci: return -EINVAL for VPFE_CMD_S_CCDC_RAW_PARAMS ioctl
   3c2bf2bd8829 ARM: dts: armada-38x: Fix irq type for pca955
   31cd127ca69a ext4: fix overflow caused by missing cast in ext4_resize_fs()
   bad9f6142ce1 ext4: fix SEEK_HOLE/SEEK_DATA for blocksize < pagesize
   12f60018f63b mm/page_alloc: Remove kernel address exposure in free_reserved_area()
   bbccdb1e442b KVM: async_pf: make rcu irq exit if not triggered from idle task
   7de8d0c06e56 ASoC: do not close shared backend dailink
   458c8be4e208 ALSA: hda - Fix speaker output from VAIO VPCL14M1R
   c59eec4dad4a workqueue: restore WQ_UNBOUND/max_active==1 to be ordered
   8ecd8cff92a8 libata: array underflow in ata_find_dev()
   09e69607e47c Linux 4.4.80
   2f8e6140bb6a ASoC: dpcm: Avoid putting stream state to STOP when FE stream is paused
   32b850a626c5 scsi: snic: Return error code on memory allocation failure
   27eb77b5544e scsi: fnic: Avoid sending reset to firmware when another reset is in progress
   0866aed4fa64 HID: ignore Petzl USB headlamp
   cab7c045f5fd ALSA: usb-audio: test EP_FLAG_RUNNING at urb completion
   8ced91a2e920 sh_eth: enable RX descriptor word 0 shift on SH7734
   fe1da3b785b3 nvmem: imx-ocotp: Fix wrong register size
   e76426857b3e arm64: mm: fix show_pte KERN_CONT fallout
   dc48ebe33063 vfio-pci: Handle error from pci_iomap
   93794239c6b9 video: fbdev: cobalt_lcdfb: Handle return NULL error from devm_ioremap
   1286e959a59a perf symbols: Robustify reading of build-id from sysfs
   cc8b62fce96b perf tools: Install tools/lib/traceevent plugins with install-bin
   ce9b76665ecd xfrm: Don't use sk_family for socket policy lookups
   4b8adea2e3cd tools lib traceevent: Fix prev/next_prio for deadline tasks
   786fd31f6001 Btrfs: adjust outstanding_extents counter properly when dio write is split
   7ea3cc440ec9 usb: gadget: Fix copy/pasted error message
   f4a42f8492bd ACPI / scan: Prefer devices without _HID/_CID for _ADR matching
   8c065e76fbc5 ARM: s3c2410_defconfig: Fix invalid values for NF_CT_PROTO_*
   fcee67d7d618 ARM64: zynqmp: Fix i2c node's compatible string
   4bd1d0b1a170 ARM64: zynqmp: Fix W=1 dtc 1.4 warnings
   a07d8c131898 dmaengine: ti-dma-crossbar: Add some 'of_node_put()' in error path.
   328a9cdcbab9 dmaengine: ioatdma: workaround SKX ioatdma version
   6c0d9f0212f8 dmaengine: ioatdma: Add Skylake PCI Dev ID
   65dab1d8af6c openrisc: Add _text symbol to fix ksym build error
   4c1ea6a51acd irqchip/mxs: Enable SKIP_SET_WAKE and MASK_ON_SUSPEND
   1a734b39857e ASoC: nau8825: fix invalid configuration in Pre-Scalar of FLL
   152684089ea3 spi: dw: Make debugfs name unique between instances
   dc19e98eb86e ASoC: tlv320aic3x: Mark the RESET register as volatile
   fc6c41f0b921 irqchip/keystone: Fix "scheduling while atomic" on rt
   1704a9695062 vfio-pci: use 32-bit comparisons for register address for gcc-4.5
   7de922c14e83 drm/msm: Verify that MSM_SUBMIT_BO_FLAGS are set
   b54e58ccceb7 drm/msm: Ensure that the hardware write pointer is valid
   cbc80312fd70 net/mlx4: Remove BUG_ON from ICM allocation routine
   386504004504 ipv6: Should use consistent conditional judgement for ip6 fragment between __ip6_append_data and ip6_finish_output
   ed3e4a435339 ARM: dts: n900: Mark eMMC slot with no-sdio and no-sd flags
   7cff0699f47e r8169: add support for RTL8168 series add-on card.
   6b99f1a84d5c x86/mce/AMD: Make the init code more robust
   f7e0f7f86ce0 tpm: Replace device number bitmap with IDR
   7e7892239327 tpm: fix a kernel memory leak in tpm-sysfs.c
   366f50133bb6 xen/blkback: don't use xen_blkif_get() in xen-blkback kthread
   53f577247738 xen/blkback: don't free be structure too early
   62208707b466 sched/cputime: Fix prev steal time accouting during CPU hotplug
   fa57125e8ec4 net: skb_needs_check() accepts CHECKSUM_NONE for tx
   fa7773191046 pstore: Use dynamic spinlock initializer
   9ece74e1006e pstore: Correctly initialize spinlock and flags
   aca5b1e3c5b7 pstore: Allow prz to control need for locking
   ff013a624258 vlan: Propagate MAC address to VLANs
   e8aff6037318 /proc/iomem: only expose physical resource addresses to privileged users
   14ae9c4b5ae2 Make file credentials available to the seqfile interfaces
   b3ddb091c77f v4l: s5c73m3: fix negation operator
   407669f2c9fe dentry name snapshots
   9909e61c1006 ipmi/watchdog: fix watchdog timeout set on reboot
   81845c2f61bf libnvdimm, btt: fix btt_rw_page not returning errors
   c4af40a7218e RDMA/uverbs: Fix the check for port number
   c7ca61734ba7 PM / Domains: defer dev_pm_domain_set() until genpd->attach_dev succeeds if present
   0e0967e26241 sched/cgroup: Move sched_online_group() back into css_online() to fix crash
   9402c6266704 kaweth: fix oops upon failed memory allocation
   19ba0e65d60b kaweth: fix firmware download
   658f9c65ee8c mpt3sas: Don't overreach ioc->reply_post[] during initialization
   63c9c49c04a1 mailbox: handle empty message in tx_tick
   21ab579fbae6 mailbox: skip complete wait event if timer expired
   686494443dd3 mailbox: always wait in mbox_send_message for blocking Tx mode
   461b44fdf02f wil6210: fix deadlock when using fw_no_recovery option
   91cc72969137 ath10k: fix null deref on wmi-tlv when trying spectral scan
   d4b159f14d61 isdn/i4l: fix buffer overflow
   633763ed93c4 isdn: Fix a sleep-in-atomic bug
   71a165f6397d net: phy: Do not perform software reset for Generic PHY
   8335b312c7cc nfc: fdp: fix NULL pointer dereference
   56548b6f505a xfs: don't BUG() on mixed direct and mapped I/O
   eb0760deee89 perf intel-pt: Ensure never to set 'last_ip' when packet 'count' is zero
   0ce32f8944c6 perf intel-pt: Use FUP always when scanning for an IP
   33f3bc42fc23 perf intel-pt: Fix last_ip usage
   01ac8afc6c8f perf intel-pt: Fix ip compression
   8255d26322a3 drm: rcar-du: Simplify and fix probe error handling
   5ec9d83b2b54 drm: rcar-du: Perform initialization/cleanup at probe/remove time
   0354df9578b4 drm/rcar: Nuke preclose hook
   b5a48676e7a2 Staging: comedi: comedi_fops: Avoid orphaned proc entry
   0c335d55cee6 Revert "powerpc/numa: Fix percpu allocations to be NUMA aware"
   fcd35f5a3f85 KVM: PPC: Book3S HV: Save/restore host values of debug registers
   17d381054b1d KVM: PPC: Book3S HV: Reload HTM registers explicitly
   f5b29db247d4 KVM: PPC: Book3S HV: Restore critical SPRs to host values on guest exit
   339fa4af4133 KVM: PPC: Book3S HV: Context-switch EBB registers properly
   29da136fbbd9 drm/nouveau/bar/gf100: fix access to upper half of BAR2
   fde885f19986 drm/vmwgfx: Fix gcc-7.1.1 warning
   376830c340ec md/raid5: add thread_group worker async_tx_issue_pending_all
   2148e9ab0cac crypto: authencesn - Fix digest_null crash
   c4efb7434a2a powerpc/pseries: Fix of_node_put() underflow during reconfig remove
   fdbcb81b5a31 net: reduce skb_warn_bad_offload() noise
   08408f7ae5cd pstore: Make spinlock per zone instead of global
   b627f6001948 af_key: Add lock to key dump
   e058f634852d Linux 4.4.79
   9c839d00dc1b alarmtimer: don't rate limit one-shot timers
   bb8109a9ca87 tracing: Fix kmemleak in instance_rmdir
   6dbd8f73a28e spmi: Include OF based modalias in device uevent
   29669d8e8f4c of: device: Export of_device_{get_modalias, uvent_modalias} to modules
   4ca0f3730e27 drm/mst: Avoid processing partially received up/down message transactions
   3d26e2ed7c8b drm/mst: Avoid dereferencing a NULL mstb in drm_dp_mst_handle_up_req()
   3383334a6cf3 drm/mst: Fix error handling during MST sideband message reception
   af7b187fe52f RDMA/core: Initialize port_num in qp_attr
   ba790013b514 ceph: fix race in concurrent readdir
   5af851adbeea staging: rtl8188eu: add TL-WN722N v2 support
   45c59e792ce6 Revert "perf/core: Drop kernel samples even though :u is specified"
   569da0be824b perf annotate: Fix broken arrow at row 0 connecting jmp instruction to its target
   8d832513726d target: Fix COMPARE_AND_WRITE caw_sem leak during se_cmd quiesce
   f57b4ae0b750 udf: Fix deadlock between writeback and udf_setsize()
   d2fa4057b11e NFS: only invalidate dentrys that are clearly invalid.
   bba6b69e1177 Input: i8042 - fix crash at boot time
   775e4dba9d07 MIPS: Fix a typo: s/preset/present/ in r2-to-r6 emulation error message
   f28e32a8e379 MIPS: Send SIGILL for linked branches in `__compute_return_epc_for_insn'
   d2220e7f285b MIPS: Rename `sigill_r6' to `sigill_r2r6' in `__compute_return_epc_for_insn'
   e5bf16f02945 MIPS: Send SIGILL for BPOSGE32 in `__compute_return_epc_for_insn'
   4c7d28c1e99d MIPS: math-emu: Prevent wrong ISA mode instruction emulation
   9dbca9e8a91a MIPS: Fix unaligned PC interpretation in `compute_return_epc'
   aebb79634ff1 MIPS: Actually decode JALX in `__compute_return_epc_for_insn'
   f87aa1203910 MIPS: Save static registers before sysmips
   a0ee41298926 MIPS: Fix MIPS I ISA /proc/cpuinfo reporting
   71de40fd4f64 x86/ioapic: Pass the correct data to unmask_ioapic_irq()
   fa7ddee3485f x86/acpi: Prevent out of bound access caused by broken ACPI tables
   62d131ec60cd MIPS: Negate error syscall return in trace
   4d9f109ff9ca MIPS: Fix mips_atomic_set() with EVA
   de34c0799d25 MIPS: Fix mips_atomic_set() retry condition
   75202d3ffca4 ftrace: Fix uninitialized variable in match_records()
   3457c0459496 vfio: New external user group/file match
   db42944cc63a vfio: Fix group release deadlock
   fca8859982fb f2fs: Don't clear SGID when inheriting ACLs
   fa696eea4d8d ipmi:ssif: Add missing unlock in error branch
   8878c53244f5 ipmi: use rcu lock around call to intf->handlers->sender()
   89308cb841c6 drm/radeon: Fix eDP for single-display iMac10,1 (v2)
   0157e2a8a719 drm/radeon/ci: disable mclk switching for high refresh rates (v2)
   ad2efae4613d drm/amd/amdgpu: Return error if initiating read out of range on vram
   a89b6e355dae s390/syscalls: Fix out of bounds arguments access
   098333918b4f Raid5 should update rdev->sectors after reshape
   78de920bae8a cx88: Fix regression in initial video standard setting
   5c7c179eb9e3 x86/xen: allow userspace access during hypercalls
   78dce99f5497 md: don't use flush_signals in userspace processes
   9b989b4d325b usb: renesas_usbhs: gadget: disable all eps when the driver stops
   abe87c1c0dff usb: renesas_usbhs: fix usbhsc_resume() for !USBHSF_RUNTIME_PWCTRL
   ff651e899073 USB: cdc-acm: add device-id for quirky printer
   ab8e00991809 usb: storage: return on error to avoid a null pointer dereference
   f883b509b48b xhci: Fix NULL pointer dereference when cleaning up streams for removed host
   09364c783c84 xhci: fix 20000ms port resume timeout
   82944485937a ipvs: SNAT packet replies only for NATed connections
   48a72b55502c PCI/PM: Restore the status of PCI devices across hibernation
   7ad6d36dc907 af_key: Fix sadb_x_ipsecrequest parsing
   b8c6a93837f0 powerpc/asm: Mark cr0 as clobbered in mftb()
   79afeb379cf4 powerpc: Fix emulation of mfocrf in emulate_step()
   397722322954 powerpc: Fix emulation of mcrf in emulate_step()
   3f888d1e40ad powerpc/64: Fix atomic64_inc_not_zero() to return an int
   c50e87ecca55 iscsi-target: Add login_keys_workaround attribute for non RFC initiators
   8045fe0a208c scsi: ses: do not add a device to an enclosure if enclosure_add_links() fails.
   e114c612e225 PM / Domains: Fix unsafe iteration over modified list of domain providers
   f422cfc38ecc PM / Domains: Fix unsafe iteration over modified list of device links
   50b40109fada ASoC: compress: Derive substream from stream based on direction
   c2d4d4fa320c wlcore: fix 64K page support
   1e3b56033e82 Bluetooth: use constant time memory comparison for secret values
   3762d7ed1a43 perf intel-pt: Clear FUP flag on error
   b559fa787c62 perf intel-pt: Ensure IP is zero when state is INTEL_PT_STATE_NO_IP
   2178b4aa56b7 perf intel-pt: Fix missing stack clear
   a4ebb58fd124 perf intel-pt: Improve sample timestamp
   5523884640e9 perf intel-pt: Move decoder error setting into one condition
   ac8f07408acd NFC: Add sockaddr length checks before accessing sa_family in bind handlers
   f71ce1c865cb nfc: Fix the sockaddr length sanitization in llcp_sock_connect
   ecb7abed0be9 nfc: Ensure presence of required attributes in the activate_target handler
   b57a72d5aaf8 NFC: nfcmrvl: fix firmware-management initialisation
   5288f3f80c4c NFC: nfcmrvl: use nfc-device for firmware download
   6e2b65dc2774 NFC: nfcmrvl: do not use device-managed resources
   4798e468b37b NFC: nfcmrvl_uart: add missing tty-device sanity check
   f4d41096f49e NFC: fix broken device allocation
   5c2828839909 ath9k: fix tx99 bus error
   a86c42f760ff ath9k: fix tx99 use after free
   2c1ac3721d4a thermal: cpu_cooling: Avoid accessing potentially freed structures
   f440ec864fd8 s5p-jpeg: don't return a random width/height
   0ff1117c08c2 ir-core: fix gcc-7 warning on bool arithmetic
   83863589806d disable new gcc-7.1.1 warnings for now
   ece78cd779f4 Linux 4.4.78
   3ed43caedf69 kvm: vmx: allow host to access guest MSR_IA32_BNDCFGS
   6ffa92ffaed8 kvm: vmx: Check value written to IA32_BNDCFGS
   a40f0ccd4f1c kvm: x86: Guest BNDCFGS requires guest MPX support
   be6f33a61f33 kvm: vmx: Do not disable intercepts for BNDCFGS
   c6f3576ed0f2 KVM: x86: disable MPX if host did not enable MPX XSAVE features
   999b96b4de81 tracing: Use SOFTIRQ_OFFSET for softirq dectection for more accurate results
   c17f6512463e PM / QoS: return -EINVAL for bogus strings
   275d4be9d39f PM / wakeirq: Convert to SRCU
   988067ec9606 sched/topology: Optimize build_group_mask()
   5c34f49776b8 sched/topology: Fix overlapping sched_group_mask
   4e3c1188521a crypto: caam - fix signals handling
   f1bf5d83a9c1 crypto: sha1-ssse3 - Disable avx2
   fc43f0935035 crypto: atmel - only treat EBUSY as transient if backlog
   d05fbdbe6d1c crypto: talitos - Extend max key length for SHA384/512-HMAC and AEAD
   8f93a9aa1d65 mm: fix overflow check in expand_upwards()
   0f4fa2138e83 tpm: Issue a TPM2_Shutdown for TPM2 devices.
   5c9a2972983f Add "shutdown" to "struct class".
   5ec5771bcb2b tpm: Provide strong locking for device removal
   5e07de5b5a4e tpm: Get rid of chip->pdev
   a2e0b1c18c09 selftests/capabilities: Fix the test_execve test
   f07288cfb0f7 mnt: Make propagate_umount less slow for overlapping mount propagation trees
   fdb8f1049992 mnt: In propgate_umount handle visiting mounts in any order
   7cbc3955ef3b mnt: In umount propagation reparent in a separate pass
   050b074e2285 vt: fix unchecked __put_user() in tioclinux ioctls
   86949eb96466 exec: Limit arg stack to at most 75% of _STK_LIM
   7888c0296c87 s390: reduce ELF_ET_DYN_BASE
   72a333a0468e powerpc: move ELF_ET_DYN_BASE to 4GB / 4MB
   43cf90f788ac arm64: move ELF_ET_DYN_BASE to 4GB / 4MB
   d2471b5e84f3 arm: move ELF_ET_DYN_BASE to 4MB
   7eb968cd04d4 binfmt_elf: use ELF_ET_DYN_BASE only for PIE
   4544e9ebef4c checkpatch: silence perl 5.26.0 unescaped left brace warnings
   68b0f5d85b3a fs/dcache.c: fix spin lockup issue on nlru->lock
   2d0db02d2e8f mm/list_lru.c: fix list_lru_count_node() to be race free
   717ce69e47f0 kernel/extable.c: mark core_kernel_text notrace
   0d6ee0bea866 tools/lib/lockdep: Reduce MAX_LOCK_DEPTH to avoid overflowing lock_chain/: Depth
   b29145746576 parisc/mm: Ensure IRQs are off in switch_mm()
   635a58225c36 parisc: DMA API: return error instead of BUG_ON for dma ops on non dma devs
   f265641dc874 parisc: use compat_sys_keyctl()
   e18ca17b9040 parisc: Report SIGSEGV instead of SIGBUS when running out of stack
   970616464f43 irqchip/gic-v3: Fix out-of-bound access in gic_set_affinity
   2d3c10e21571 cfg80211: Check if PMKID attribute is of expected size
   24d0410712b0 cfg80211: Validate frequencies nested in NL80211_ATTR_SCAN_FREQUENCIES
   05bf0b6ef9ce cfg80211: Define nla_policy for NL80211_ATTR_LOCAL_MESH_POWER_MODE
   4c7021c2fb74 brcmfmac: fix possible buffer overflow in brcmf_cfg80211_mgmt_tx()
   9618eb4af306 rds: tcp: use sock_create_lite() to create the accept socket
   89e7f17f8f64 vrf: fix bug_on triggered by rx when destroying a vrf
   eb7bef1db6f3 net: ipv6: Compare lwstate in detecting duplicate nexthops
   0c32b01ee49d ipv6: dad: don't remove dynamic addresses if link is down
   38ae32c9f13d net: handle NAPI_GRO_FREE_STOLEN_HEAD case also in napi_frags_finish()
   1a4f13e0a99a bpf: prevent leaking pointer via xadd on unpriviledged
   d598f7ff24db net: prevent sign extension in dev_get_stats()
   32a44f1ba7ed tcp: reset sk_rx_dst in tcp_disconnect()
   ccff2f4afbc1 net: dp83640: Avoid NULL pointer dereference.
   6a87cca39f29 ipv6: avoid unregistering inet6_dev for loopback
   f71e5140242a net/phy: micrel: configure intterupts after autoneg workaround
   c485792ed649 net: sched: Fix one possible panic when no destroy callback
   0be4c96e7c57 net_sched: fix error recovery at qdisc creation
   9e0499d7d30c Linux 4.4.77
   52b9815d37fc saa7134: fix warm Medion 7134 EEPROM read
   646b65808b0d x86/mm/pat: Don't report PAT on CPUs that don't support it
   ad5a88c54cd2 ext4: check return value of kstrtoull correctly in reserved_clusters_store
   cb2bc13d0b55 staging: comedi: fix clean-up of comedi_class in comedi_init()
   370d06c6b075 staging: vt6556: vnt_start Fix missing call to vnt_key_init_table.
   627f3abeeac1 tcp: fix tcp_mark_head_lost to check skb len before fragmenting
   ff62c63109d9 md: fix super_offset endianness in super_1_rdev_size_change
   e20894aad9e8 md: fix incorrect use of lexx_to_cpu in does_sb_need_changing
   2b4f81fb56cf perf tools: Use readdir() instead of deprecated readdir_r() again
   c04b8bbd64be perf tests: Remove wrong semicolon in while loop in CQM test
   1991cbd2c486 perf trace: Do not process PERF_RECORD_LOST twice
   5a25a08ad5e6 perf dwarf: Guard !x86_64 definitions under #ifdef else clause
   300d4fea8de0 perf pmu: Fix misleadingly indented assignment (whitespace)
   0ba2f070bf45 perf annotate browser: Fix behaviour of Shift-Tab with nothing focussed
   0717b5dfab93 perf tools: Remove duplicate const qualifier
   c7b8d98bff82 perf script: Use readdir() instead of deprecated readdir_r()
   56e75cee2af3 perf thread_map: Use readdir() instead of deprecated readdir_r()
   055ce585a864 perf tools: Use readdir() instead of deprecated readdir_r()
   144eb3e8e4d9 perf bench numa: Avoid possible truncation when using snprintf()
   fb3c230b7ec2 perf tests: Avoid possible truncation with dirent->d_name + snprintf
   071ca0bcf337 perf scripting perl: Fix compile error with some perl5 versions
   c9cf7ce0bbc4 perf thread_map: Correctly size buffer used with dirent->dt_name
   e5a9078a8e0e perf intel-pt: Use __fallthrough
   0586f5cd4195 perf top: Use __fallthrough
   1ca0a4098005 tools strfilter: Use __fallthrough
   57a4c2504b77 tools string: Use __fallthrough in perf_atoll()
   e1b7b00a1bd5 tools include: Add a __fallthrough statement
   034e10b4f834 mqueue: fix a use-after-free in sys_mq_notify()
   5fd2bba08c17 RDMA/uverbs: Check port number supplied by user verbs cmds
   92e90c20dc38 KEYS: Fix an error code in request_master_key()
   483b1c69655d ath10k: override CE5 config for QCA9377
   e47e71766640 x86/uaccess: Optimize copy_user_enhanced_fast_string() for short strings
   0214a8ca61e2 x86/tools: Fix gcc-7 warning in relocs.c
   e952c291df09 gfs2: Fix glock rhashtable rcu bug
   ac12d6abed6c USB: serial: qcserial: new Sierra Wireless EM7305 device ID
   1a04853de069 USB: serial: option: add two Longcheer device ids
   174ddbcc69e2 pinctrl: sh-pfc: Update info pointer after SoC-specific init
   45424528a184 pinctrl: mxs: atomically switch mux and drive strength config
   79565741fce0 pinctrl: sunxi: Fix SPDIF function name for A83T
   3c4720871bdd pinctrl: meson: meson8b: fix the NAND DQS pins
   5d030f597f47 pinctrl: sh-pfc: r8a7791: Fix SCIF2 pinmux data
   a2148222e375 sysctl: report EINVAL if value is larger than UINT_MAX for proc_douintvec
   e8505e6432c2 sysctl: don't print negative flag for proc_douintvec
   2e42225b85ee mac80211_hwsim: Replace bogus hrtimer clockid
   93f526ffe8ae usb: Fix typo in the definition of Endpoint[out]Request
   c6bf62a36175 usb: usbip: set buffer pointers to NULL after free
   ab96add78bfe Add USB quirk for HVR-950q to avoid intermittent device resets
   45c73d0c7a96 USB: serial: cp210x: add ID for CEL EM3588 USB ZigBee stick
   c8130087ff4d usb: dwc3: replace %p with %pK
   a080ec466c34 drm/virtio: don't leak bo on drm_gem_object_init failure
   fe0bb2ac167b tracing/kprobes: Allow to create probe with a module name starting with a digit
   78f20db86418 mm: fix classzone_idx underflow in shrink_zones()
   1f97e170cfc5 bgmac: reset & enable Ethernet core before using it
   c01ace719ebe driver core: platform: fix race condition with driver_override
   4043d5bca587 fs: completely ignore unknown open flags
   ccb973e681d8 fs: add a VALID_OPEN_FLAGS

(From OE-Core rev: 5a2cfba0a3343fe0095b04ae2444aac8b2316320)

(From OE-Core rev: 55a7787d86d087549a7a146a0485d4c9777d7ce7)

Signed-off-by: Bruce Ashfield <bruce.ashfield@windriver.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Signed-off-by: Armin Kuster <akuster808@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-09-11 22:15:59 +01:00
Bruce Ashfield
5d83d8d351 linux-yocto/4.9: update to v4.9.46
Integrating the korg -stable releases with the following commit summary:

   0eed54bdbd1b Linux 4.9.46
   5aa523a994d1 powerpc/mm: Ensure cpumask update is ordered
   5906715b93da ACPI: EC: Fix regression related to wrong ECDT initialization order
   3bc8e4f96fe9 ACPI / APEI: Add missing synchronize_rcu() on NOTIFY_SCI removal
   454cac5d0891 ACPI: ioapic: Clear on-stack resource before using it
   c1628774f0c8 ntb: transport shouldn't disable link due to bogus values in SPADs
   4d4f35473d8f ntb: ntb_test: ensure the link is up before trying to configure the mws
   7592db555524 ntb: no sleep in ntb_async_tx_submit
   bff04a462da3 NTB: ntb_test: fix bug printing ntb_perf results
   471954c313c5 ntb_transport: fix bug calculating num_qps_mw
   4743d1b37a38 ntb_transport: fix qp count bug
   b8fce38266db Clarify (and fix) MAX_LFS_FILESIZE macros
   ab4be3a64d06 staging: rtl8188eu: add RNX-N150NUB support
   23caaf2f216c iio: hid-sensor-trigger: Fix the race with user space powering up sensors
   b150ee066af7 iio: imu: adis16480: Fix acceleration scale factor for adis16480
   cbd854d99354 ANDROID: binder: fix proc->tsk check.
   8fb0b0ce288d binder: Use wake up hint for synchronous transactions.
   51050750181c binder: use group leader instead of open thread
   eda70a559187 Revert "android: binder: Sanity check at binder ioctl"
   242cea2d666f Bluetooth: bnep: fix possible might sleep error in bnep_session
   ffb7640acbc3 Bluetooth: cmtp: fix possible might sleep error in cmtp_session
   1b5fcb3b25f7 Bluetooth: hidp: fix possible might sleep error in hidp_session_thread
   5f81b1f51b9c netfilter: nat: fix src map lookup
   090911a22c7b Revert "leds: handle suspend/resume in heartbeat trigger"
   d4c5c26c5f09 net: sunrpc: svcsock: fix NULL-pointer exception
   3559de45c99a x86/mm: Fix use-after-free of ldt_struct
   70b3fd5ce2ce timers: Fix excessive granularity of new timers after a nohz idle
   3df3b2efc065 perf/x86/intel/rapl: Make package handling more robust
   bac83e5ce85e perf probe: Fix --funcs to show correct symbols for offline module
   bde6608dd638 perf/core: Fix group {cpu,task} validation
   741397d16a3d ftrace: Check for null ret_stack on profile function graph entry function
   fd8235e721ef nfsd: Limit end of page list when decoding NFSv4 WRITE
   5ed70f7db9af cifs: return ENAMETOOLONG for overlong names in cifs_open()/cifs_lookup()
   8b053290ee20 cifs: Fix df output for users with quota limits
   1fdee09116db kbuild: linker script do not match C names unless LD_DEAD_CODE_DATA_ELIMINATION is configured
   8838cd5c543f tracing: Fix freeing of filter in create_filter() when set_str is false
   2818a7659f0a tracing: Fix kmemleak in tracing_map_array_free()
   3170d9abc5d0 tracing: Call clear_boot_tracer() at lateinit_sync
   46cd0a3b93a5 drm: rcar-du: Fix H/V sync signal polarity configuration
   1fb8ff8b92bd drm: rcar-du: Fix display timing controller parameter
   35fd2b840b6c drm: rcar-du: Fix crash in encoder failure error path
   eed96e759533 drm/atomic: If the atomic check fails, return its value first
   ce66f629ad82 drm: Release driver tracking before making the object available again
   9d263321d7a2 mm/memblock.c: reversed logic in memblock_discard()
   b65b6ac52e0f fork: fix incorrect fput of ->exe_file causing use-after-free
   0f49b0519f11 mm/madvise.c: fix freeing of locked page with MADV_FREE
   036c100b58f7 i2c: designware: Fix system suspend
   5d8b3cc24688 mm, shmem: fix handling /sys/kernel/mm/transparent_hugepage/shmem_enabled
   8d362cb3bfbb ARCv2: PAE40: Explicitly set MSB counterpart of SLC region ops addresses
   6cba07468521 ALSA: firewire: fix NULL pointer dereference when releasing uninitialized data of iso-resource
   b52bce93db99 ALSA: hda - Add stereo mic quirk for Lenovo G50-70 (17aa:3978)
   8989c70d30b6 ALSA: core: Fix unexpected error at replacing user TLV
   9767a4567831 ALSA: usb-audio: Add delay quirk for H650e/Jabra 550a USB headsets
   275f3033ccf6 KVM: x86: block guest protection keys unless the host has them enabled
   cfb917a17d3d KVM: s390: sthyi: fix specification exception detection
   a745333fa924 KVM: s390: sthyi: fix sthyi inline assembly
   963068b1ff1c Input: ALPS - fix two-finger scroll breakage in right side on ALPS touchpad
   9ab605d2bb6f Input: elan_i2c - add ELAN0602 ACPI ID to support Lenovo Yoga310
   a00a9cd7daf9 Input: trackpoint - add new trackpoint firmware ID
   655da3da9bb3 bpf/verifier: fix min/max handling in BPF_SUB
   bf5b91b782e8 bpf: fix mixed signed/unsigned derived min/max value bounds
   8d674bee8f66 bpf, verifier: fix alu ops against map_value{, _adj} register types
   577aa83b2896 bpf: adjust verifier heuristics
   e37bdeee95a4 bpf, verifier: add additional patterns to evaluate_reg_imm_alu
   7fa2fdf9f19e net_sched: fix order of queue length updates in qdisc_replace()
   3e00bf91fefc net: sched: fix NULL pointer dereference when action calls some targets
   f3f5bf2755c7 irda: do not leak initialized list.dev to userspace
   19f433a9ce9d net/mlx4_core: Enable 4K UAR if SRIOV module parameter is not enabled
   aadbe1fe91e7 tcp: when rearming RTO, if RTO time is in past then fire RTO ASAP
   1c18f9367520 ipv6: repair fib6 tree in failure case
   62e9a28baa28 ipv6: reset fn->rr_ptr when replacing route
   7ad5fb9594ee tipc: fix use-after-free
   0f5ecc79194d sctp: fully initialize the IPv6 address in sctp_v6_to_addr()
   57406e737322 nfp: fix infinite loop on umapping cleanup
   f29c9f46af4a ipv4: better IP_MAX_MTU enforcement
   59af5b87695d ptr_ring: use kmalloc_array()
   3c7af814def8 openvswitch: fix skb_panic due to the incorrect actions attrlen
   d6a6b6b4c3ba bpf: fix bpf_trace_printk on 32 bit archs
   792c0707bd3f net_sched: remove warning from qdisc_hash_add
   38530f6e6dae net_sched/sfq: update hierarchical backlog when drop packet
   71501d9b6190 ipv4: fix NULL dereference in free_fib_info_rcu()
   236b0d939b05 dccp: defer ccid_hc_tx_delete() at dismantle time
   b31cbe2c3916 dccp: purge write queue in dccp_destroy_sock()
   2e3f17f81029 af_key: do not use GFP_KERNEL in atomic contexts
   d0526eef0bf7 sparc64: remove unnecessary log message
   4b904b22bc90 Linux 4.9.45
   083d423b1f8a usb: qmi_wwan: add D-Link DWM-222 device ID
   edfe57b2f44a usb: optimize acpi companion search for usb port devices
   322cd3262365 pids: make task_tgid_nr_ns() safe
   61332dc598c3 Sanitize 'move_pages()' permission checks
   f9497d51259f genirq/ipi: Fixup checks against nr_cpu_ids
   762ac49ccece genirq: Restore trigger settings in irq_modify_status()
   4691f1ca6fad irqchip/atmel-aic: Fix unbalanced refcount in aic_common_rtc_irq_fixup()
   665d2009a4af irqchip/atmel-aic: Fix unbalanced of_node_put() in aic_common_irq_fixup()
   10d5bf2f6928 x86/asm/64: Clear AC on NMI entries
   1581d704e97d xen-blkfront: use a right index when checking requests
   7672f1186047 powerpc: Fix VSX enabling/flushing to also test MSR_FP and MSR_VEC
   d8c20af00858 blk-mq-pci: add a fallback when pci_irq_get_affinity returns NULL
   6c7f3756d072 xen: fix bio vec merging
   1f2347a095ce mm: revert x86_64 and arm64 ELF_ET_DYN_BASE base changes
   91105f2c621e mm/mempolicy: fix use after free when calling get_mempolicy
   59ee25d09fd5 mm: fix double mmap_sem unlock on MMF_UNSTABLE enforced SIGBUS
   87395eeb28e5 mm: discard memblock data later
   d3e6e5956687 ALSA: usb-audio: Add mute TLV for playback volumes on C-Media devices
   f39f086d541f ALSA: usb-audio: Apply sample rate quirk to Sennheiser headset
   bafb25c5050c ALSA: seq: 2nd attempt at fixing race creating a queue
   3f7292106d0b Input: elan_i2c - Add antoher Lenovo ACPI ID for upcoming Lenovo NB
   5dd141e0e985 Input: elan_i2c - add ELAN0608 to the ACPI table
   c3e8a12e701c crypto: x86/sha1 - Fix reads beyond the number of blocks passed
   24e7f540245d crypto: ixp4xx - Fix error handling path in 'aead_perform()'
   93f5a0318aae parisc: pci memory bar assignment fails with 64bit kernels on dino/cujo
   adcfbb2d9e38 audit: Fix use after free in audit_remove_watch_rule()
   5170d210efe4 netfilter: nf_ct_ext: fix possible panic after nf_ct_extend_unregister
   a97a16f18c48 Linux 4.9.44
   eea1ec08f8a5 MIPS: DEC: Fix an int-handler.S CPU_DADDI_WORKAROUNDS regression
   5e5a51045532 pinctrl: meson-gxbb: Add missing GPIODV_18 pin entry
   8cbc0b49ca8d pinctrl: samsung: Remove bogus irq_[un]mask from resource management
   8495ab6ef94a pinctrl: uniphier: fix WARN_ON() of pingroups dump on LD20
   f642d29c2388 pinctrl: uniphier: fix WARN_ON() of pingroups dump on LD11
   877fe62863d0 pinctrl: intel: merrifield: Correct UART pin lists
   7b6fff65ecf9 pinctrl: sunxi: add a missing function of A10/A20 pinctrl driver
   a68978bb949a pnfs/blocklayout: require 64-bit sector_t
   eda1b3d42fad iio: adc: vf610_adc: Fix VALT selection value for REFSEL bits
   4cae4a23d9a4 usb:xhci:Add quirk for Certain failing HP keyboard on reset after resume
   f4bbed570aef usb: quirks: Add no-lpm quirk for Moshi USB to Ethernet Adapter
   42d65cc89a23 usb: core: unlink urbs from the tail of the endpoint's urb_list
   7c2beb1c4432 USB: Check for dropped connection before switching to full speed
   7f737f10c1ee usb: renesas_usbhs: Fix UGCTRL2 value for R-Car Gen3
   2db03a7fa0dd usb: gadget: udc: renesas_usb3: Fix usb_gadget_giveback_request() calling
   a09ecc9345b6 uas: Add US_FL_IGNORE_RESIDUE for Initio Corporation INIC-3069
   b189f8eb2715 staging: comedi: comedi_fops: do not call blocking ops when !TASK_RUNNING
   bbae08213e6e iio: light: tsl2563: use correct event code
   1ca3869234d3 iio: accel: bmc150: Always restore device to normal mode after suspend-resume
   c5347390e57a staging:iio:resolver:ad2s1210 fix negative IIO_ANGL_VEL read
   199a3f26e9d8 USB: hcd: Mark secondary HCD as dead if the primary one died
   821ccbe2937e usb: musb: fix tx fifo flush handling again
   4fd8c366acac USB: serial: pl2303: add new ATEN device id
   566516401501 USB: serial: cp210x: add support for Qivicon USB ZigBee dongle
   e27f58cd130b USB: serial: option: add D-Link DWM-222 device ID
   2b3bf207b2a2 drm/i915: Fix out-of-bounds array access in bdw_load_gamma_lut
   4381e2c30008 drm/etnaviv: Fix off-by-one error in reloc checking
   00f3c2a253f7 nfs/flexfiles: fix leak of nfs4_ff_ds_version arrays
   0a205d8145c2 mmc: mmc: correct the logic for setting HS400ES signal voltage
   160c365b5879 nand: fix wrong default oob layout for small pages using soft ecc
   227559e6233c fuse: initialize the flock flag in fuse_file on allocation
   1da30c23b63b target: Fix node_acl demo-mode + uncached dynamic shutdown regression
   b51a71635576 iscsi-target: Fix iscsi_np reset hung task during parallel delete
   e6a0599b7464 iscsi-target: fix memory leak in iscsit_setup_text_cmd()
   ced271b814e4 mtd: nand: Fix timing setup for NANDs that do not support SET FEATURES
   a311810903c7 xtensa: don't limit csum_partial export by CONFIG_NET
   a3ab0f069f46 xtensa: mm/cache: add missing EXPORT_SYMBOLs
   03973c57e1a2 xtensa: fix cache aliasing handling code for WT cache
   0041042de554 futex: Remove unnecessary warning from get_futex_key
   e2286916ac07 mm: fix list corruptions on shmem shrinklist
   b56cd77c1205 mm: ratelimit PFNs busy info message
   6da35f43acde Linux 4.9.43
   1166e3e03342 Revert "ARM: dts: sun8i: Support DTB build for NanoPi M1"
   3f0075cdbdd8 KVM: arm/arm64: Handle hva aging while destroying the vm
   6309eb77d823 sparc64: Prevent perf from running during super critical sections
   33dc6a6a85f1 udp: consistently apply ufo or fragmentation
   4688f042599f revert "ipv4: Should use consistent conditional judgement for ip fragment in __ip_append_data and ip_finish_output"
   53eed8aadc58 revert "net: account for current skb length when deciding about UFO"
   e58413550613 packet: fix tp_reserve race in packet_set_ring
   f628c9df047b igmp: Fix regression caused by igmp sysctl namespace code.
   69ffc9644ffe net: avoid skb_warn_bad_offload false positives on UFO
   87fdcfe21195 tcp: fastopen: tcp_connect() must refresh the route
   e392e305af01 net: sched: set xt_tgchk_param par.nft_compat as 0 in ipt_init_target
   35d90144e2ce net/mlx4_en: don't set CHECKSUM_COMPLETE on SCTP packets
   1b582a2c366d bpf, s390: fix jit branch offset related to ldimm64
   05046af36302 net: fix keepalive code vs TCP_FASTOPEN_CONNECT
   3914a7eccbc7 tcp: avoid setting cwnd to invalid ssthresh after cwnd reduction states
   6ec6ec3bbb87 ppp: fix xmit recursion detection on ppp channels
   3b25bfc11cf9 ppp: Fix false xmit recursion detect with two ppp devices
   4c666b0d9070 Linux 4.9.42
   f9636c9bdd58 workqueue: implicit ordered attribute should be overridable
   c3c94716855a net: phy: Fix PHY unbind crash
   ef09c9ff3431 net: account for current skb length when deciding about UFO
   f102bb7164c9 ipv4: Should use consistent conditional judgement for ip fragment in __ip_append_data and ip_finish_output
   a69f0d54fdc9 net/mlx5: E-Switch, Re-enable RoCE on mode change only after FDB destroy
   22cccef1fc70 mm: don't dereference struct page fields of invalid pages
   916a05b90d83 signal: protect SIGNAL_UNKILLABLE from unintentional clearing.
   d12824c897a2 lib/Kconfig.debug: fix frv build failure
   c736011052cf mm, slab: make sure that KMALLOC_MAX_SIZE will fit into MAX_ORDER
   bebbe845cb50 ARM: 8632/1: ftrace: fix syscall name matching
   e6d53f5f8c03 virtio_blk: fix panic in initialization error path
   952d07ac1e6e nbd: blk_mq_init_queue returns an error code on failure, not NULL
   44d52834efb3 iw_cxgb4: do not send RX_DATA_ACK CPLs after close/abort
   984922f2c897 ARM: dts: sunxi: Change node name for pwrseq pin on Olinuxino-lime2-emmc
   1e9e71782f34 ARM: dts: sun8i: Support DTB build for NanoPi M1
   61cf0afe12eb drm/virtio: fix framebuffer sparse warning
   2a60965a0ef7 scsi: qla2xxx: Get mutex lock before checking optrom_state
   99eb27d6182d clk/samsung: exynos542x: mark some clocks as critical
   ee96797b78ca ipv4: make tcp_notsent_lowat sysctl knob behave as true unsigned int
   0bbbbaef6aa0 phy state machine: failsafe leave invalid RUNNING state
   9acfb313849e netfilter: use fwmark_reflect in nf_send_reset
   2e2a390b7f67 ASoC: rt5645: set sel_i2s_pre_div1 to 2
   c77512d67102 spi: spi-axi: Free resources on error path
   f897e9ae07c4 x86/boot: Add missing declaration of string functions
   1042bd47ddfb tg3: Fix race condition in tg3_get_stats64().
   5f7eeee7940e net: phy: dp83867: fix irq generation
   bfe384ed452a sh_eth: R8A7740 supports packet shecksumming
   2d4fef7f4102 sh_eth: fix EESIPR values for SH77{34|63}
   b87145215abe wext: handle NULL extra data in iwe_stream_add_point better
   b9d68cdce72d sparc64: Fix exception handling in UltraSPARC-III memcpy.
   bfafa56e6c67 sparc64: Measure receiver forward progress to avoid send mondo timeout
   816843a257c7 xen-netback: correctly schedule rate-limited queues
   38e71eabb8f7 net: phy: Correctly process PHY_HALTED in phy_stop_machine()
   33e25b2168dd net/mlx5e: Schedule overflow check work to mlx5e workqueue
   862ade9a4383 net/mlx5e: Fix wrong delay calculation for overflow check scheduling
   d7049799668a net/mlx5e: Fix outer_header_zero() check size
   d19d0ac684e5 net/mlx5: Fix command bad flow on command entry allocation failure
   fca84d617f77 net/mlx5: Consider tx_enabled in all modes on remap
   df32d08293ea sctp: fix the check for _sctp_walk_params and _sctp_walk_errors
   cc6f1486f2cb sctp: don't dereference ptr before leaving _sctp_walk_{params, errors}()
   bb21d2e75378 dccp: fix a memleak for dccp_feat_init err process
   4d938b6fcb90 dccp: fix a memleak that dccp_ipv4 doesn't put reqsk properly
   9ffa6727f571 dccp: fix a memleak that dccp_ipv6 doesn't put reqsk properly
   c0c8688f0deb net: ethernet: nb8800: Handle all 4 RGMII modes identically
   23a91c8ab682 ipv6: Don't increase IPSTATS_MIB_FRAGFAILS twice in ip6_fragment()
   47f3bf6e3116 packet: fix use-after-free in prb_retire_rx_blk_timer_expired()
   d53ff3816d94 openvswitch: fix potential out of bound access in parse_ct
   59e76ed17981 mcs7780: Fix initialization when CONFIG_VMAP_STACK is enabled
   cda2bc91baf7 rtnetlink: allocate more memory for dev_set_mac_address()
   0c47f11bc4a5 ipv4: initialize fib_trie prior to register_netdev_notifier call.
   5a2d511a95cc net: dsa: b53: Add missing ARL entries for BCM53125
   4a2ffe1707e3 ipv6: avoid overflow of offset in ip6_find_1stfragopt
   0b83249a57ad net: Zero terminate ifr_name in dev_ifname().
   a62bc8d336e3 ipv4: ipv6: initialize treq->txhash in cookie_v[46]_check()
   0cd73c42b7a2 tcp_bbr: init pacing rate on first RTT sample
   2e6b237dc03b tcp_bbr: remove sk_pacing_rate=0 transient during init
   0c0ede36b9e0 tcp_bbr: introduce bbr_init_pacing_rate_from_rtt() helper
   ec789686d79b tcp_bbr: introduce bbr_bw_to_pacing_rate() helper
   73520d3814b6 tcp_bbr: cut pacing rate only if filled pipe
   12d17d78e3f7 saa7164: fix double fetch PCIe access condition
   3a63729427ac Btrfs: fix early ENOSPC due to delalloc
   0f442c5b2e4a f2fs: sanity check checkpoint segno and blkoff
   c14e327bee70 media: lirc: LIRC_GET_REC_RESOLUTION should return microseconds
   e92add299fee mmc: core: Use device_property_read instead of of_property_read
   baf4ad0e5162 mmc: dw_mmc: Use device_property_read instead of of_property_read
   bdabf097f05b iscsi-target: Fix initial login PDU asynchronous socket close OOPs
   733d7ab6c5bc media: platform: davinci: return -EINVAL for VPFE_CMD_S_CCDC_RAW_PARAMS ioctl
   4f3544816937 ARM: dts: tango4: Request RGMII RX and TX clock delays
   ff603e017bee ARM: dts: armada-38x: Fix irq type for pca955
   12353a00df25 ext4: fix overflow caused by missing cast in ext4_resize_fs()
   0814c3a9447b ext4: fix SEEK_HOLE/SEEK_DATA for blocksize < pagesize
   b680e22fca76 gpiolib: skip unwanted events, don't convert them to opposite edge
   be5c6efc996e iommu/amd: Enable ga_log_intr when enabling guest_mode
   03ebdd1eb95a powerpc/64: Fix __check_irq_replay missing decrementer interrupt
   8164692a2f66 powerpc/tm: Fix saving of TM SPRs in core dump
   9ef8b23b94b9 timers: Fix overflow in get_next_timer_interrupt
   7b95b7456362 mm/page_alloc: Remove kernel address exposure in free_reserved_area()
   0c609d3e1fbd KVM: async_pf: make rcu irq exit if not triggered from idle task
   650c763ea5ea ASoC: do not close shared backend dailink
   69f15fff03e8 drm/amdgpu: Fix undue fallthroughs in golden registers initialization
   c531a24057ac ALSA: hda - Fix speaker output from VAIO VPCL14M1R
   45a636ec1849 cpuset: fix a deadlock due to incomplete patching of cpusets_enabled()
   5a1eef71aa2a mm, mprotect: flush TLB if potentially racing with a parallel reclaim leaving stale TLB entries
   943281eb4ecf mmc: core: Fix access to HS400-ES devices
   1f32e67adac4 device property: Make dev_fwnode() public
   347be00b56f7 mmc: sdhci-of-at91: force card detect value for non removable devices
   f7d3e54fb40c NFSv4: Fix EXCHANGE_ID corrupt verifier issue
   f5214eb4baf8 brcmfmac: fix memleak due to calling brcmf_sdiod_sgtable_alloc() twice
   de8c33290f1c iwlwifi: dvm: prevent an out of bounds access
   61a0adbfaad7 workqueue: restore WQ_UNBOUND/max_active==1 to be ordered
   804b1a9f0aea libata: array underflow in ata_find_dev()
   445ee6cdd91e cgroup: fix error return value from cgroup_subtree_control()
   4a99eac8d2b3 cgroup: create dfl_root files on subsys registration
   5d23e4f3a333 parisc: Handle vma's whose context is not current in flush_cache_range
   db397d9c6e66 Linux 4.9.41
   007dffc661cf ASoC: dpcm: Avoid putting stream state to STOP when FE stream is paused
   27ef0283b60e ASoC: Intel: Skylake: Release FW ctx in cleanup
   23ab274ddf83 scsi: bfa: Increase requested firmware version to 3.2.5.1
   5f7040719202 scsi: snic: Return error code on memory allocation failure
   2803ea76366a scsi: fnic: Avoid sending reset to firmware when another reset is in progress
   3b6f4e292cbd HID: ignore Petzl USB headlamp
   3f0dfa11cc0d ASoC: Intel: bytcr-rt5640: fix settings in internal clock mode
   b899142ce21d perf/x86: Set pmu->module in Intel PMU modules
   efa225254a4a x86/platform/intel-mid: Rename 'spidev' to 'mrfld_spidev'
   12dac5fcf5ec ALSA: usb-audio: test EP_FLAG_RUNNING at urb completion
   301681d60003 ARCv2: IRQ: Call entry/exit functions for chained handlers in MCIP
   f10e2065ce76 sh_eth: enable RX descriptor word 0 shift on SH7734
   2909c9c2d713 ASoC: fsl_ssi: set fifo watermark to more reliable value
   2548d893a542 net: usb: asix_devices: add .reset_resume for USB PM
   a7526723b7fc nvmem: imx-ocotp: Fix wrong register size
   e95ec3582a29 arm64: mm: fix show_pte KERN_CONT fallout
   812a7df6556f vfio-pci: Handle error from pci_iomap
   a417ea5b9d22 video: fbdev: cobalt_lcdfb: Handle return NULL error from devm_ioremap
   ddc0ec3be807 perf symbols: Robustify reading of build-id from sysfs
   d8086c3bd3a5 perf tools: Install tools/lib/traceevent plugins with install-bin
   0b8656414e29 xfrm: Don't use sk_family for socket policy lookups
   ab5e7df9e064 tools lib traceevent: Fix prev/next_prio for deadline tasks
   704a6d719d4c Xen: ARM: Zero reserved fields of xatp before making hypervisor call
   f76ddff6c521 Btrfs: adjust outstanding_extents counter properly when dio write is split
   49fc90b443c7 benet: stricter vxlan offloading check in be_features_check
   673121283605 Btrfs: fix lockdep warning about log_mutex
   78418b867334 Btrfs: use down_read_nested to make lockdep silent
   92d6a813b03a usb: gadget: Fix copy/pasted error message
   a15a3d92eca8 ACPI / scan: Prefer devices without _HID/_CID for _ADR matching
   ebd4642ee412 ARM: s3c2410_defconfig: Fix invalid values for NF_CT_PROTO_*
   69f3df1fd013 perf probe: Fix to get correct modname from elf header
   3209f3f69eeb ARM64: zynqmp: Fix i2c node's compatible string
   e3603533ae63 ARM64: zynqmp: Fix W=1 dtc 1.4 warnings
   8af0937aee50 usb: dwc3: omap: fix race of pm runtime with irq handler in probe
   29e0adf8bacd dmaengine: ti-dma-crossbar: Add some 'of_node_put()' in error path.
   000224c1106c l2tp: consider '::' as wildcard address in l2tp_ip6 socket lookup
   c2804b21f2e7 dmaengine: ioatdma: workaround SKX ioatdma version
   2987ce159fb9 dmaengine: ioatdma: Add Skylake PCI Dev ID
   88a86f8dfaad openrisc: Add _text symbol to fix ksym build error
   033d5ce4ad8d irqchip/mxs: Enable SKIP_SET_WAKE and MASK_ON_SUSPEND
   c612bba54b8c ASoC: nau8825: fix invalid configuration in Pre-Scalar of FLL
   14e5c8c61791 spi: dw: Make debugfs name unique between instances
   ed788dc6fa65 ASoC: tlv320aic3x: Mark the RESET register as volatile
   ca40b2d039dc irqchip/keystone: Fix "scheduling while atomic" on rt
   c7d0c0d84808 vfio-pci: use 32-bit comparisons for register address for gcc-4.5
   7d33b41d34f5 drm/msm: Verify that MSM_SUBMIT_BO_FLAGS are set
   50e3950d77ba drm/msm: Put back the vaddr in submit_reloc()
   e0d5bb92c07b drm/msm: Ensure that the hardware write pointer is valid
   237652fae500 net/mlx4_core: Fix raw qp flow steering rules under SRIOV
   7e150f79134e net/mlx4: Remove BUG_ON from ICM allocation routine
   a8820678afe1 net/mlx4_core: Use-after-free causes a resource leak in flow-steering detach
   aeb230318ddb ipv6: Should use consistent conditional judgement for ip6 fragment between __ip6_append_data and ip6_finish_output
   ea703cb0140b net/mlx5: Disable RoCE on the e-switch management port under switchdev mode
   a0a4dd446904 ARM: dts: n900: Mark eMMC slot with no-sdio and no-sd flags
   0ce84ef6a296 ARM: dts: am57xx-idk: Put USB2 port in peripheral mode
   2bc4d1c95784 dt-bindings: input: Specify the interrupt number of TPS65217 power button
   b1164693f770 dt-bindings: power/supply: Update TPS65217 properties
   0686a9bc42ad ARM: omap2+: fixing wrong strcat for Non-NULL terminated string
   82338e9ffba5 r8169: add support for RTL8168 series add-on card.
   34fae9c906ec x86/mce/AMD: Make the init code more robust
   a3ff46097a1d device-dax: fix sysfs duplicate warnings
   48a70be0de9e net: skb_needs_check() accepts CHECKSUM_NONE for tx
   e10f7bd6a6b8 pstore: Use dynamic spinlock initializer
   a0840275e3eb pstore: Correctly initialize spinlock and flags
   4693080316e6 pstore: Allow prz to control need for locking
   5463a3dccf10 v4l: s5c73m3: fix negation operator
   ad25f11ed216 dentry name snapshots
   d933777b1b1b ipmi/watchdog: fix watchdog timeout set on reboot
   196553666dce RDMA/uverbs: Fix the check for port number
   62b5776c8c86 sched/cgroup: Move sched_online_group() back into css_online() to fix crash
   016a638a518c mailbox: handle empty message in tx_tick
   abe9090ac07b mailbox: skip complete wait event if timer expired
   a23fba818203 mailbox: always wait in mbox_send_message for blocking Tx mode
   2f16bcd4dba9 wil6210: fix deadlock when using fw_no_recovery option
   59153e658936 ath10k: fix null deref on wmi-tlv when trying spectral scan
   7b3a66739ff0 isdn/i4l: fix buffer overflow
   b756862459d2 isdn: Fix a sleep-in-atomic bug
   6c78197e4a69 net: phy: Do not perform software reset for Generic PHY
   57154f0302cd nfc: fdp: fix NULL pointer dereference
   35bdf9a61dc9 nfc: Fix hangup of RC-S380* in port100_send_ack()
   6b3d13fe67da smp/hotplug: Replace BUG_ON and react useful
   7b4e4b18ea64 smp/hotplug: Move unparking of percpu threads to the control CPU
   755f65501f70 drm: rcar-du: Simplify and fix probe error handling
   9bf0d78bf640 Staging: comedi: comedi_fops: Avoid orphaned proc entry
   0f31691508c6 Revert "powerpc/numa: Fix percpu allocations to be NUMA aware"
   c39c3aeb2b41 KVM: PPC: Book3S HV: Save/restore host values of debug registers
   e5cd34d10459 KVM: PPC: Book3S HV: Restore critical SPRs to host values on guest exit
   ae8faca6e2e7 drm/nouveau/bar/gf100: fix access to upper half of BAR2
   34da5f74eb5c drm/nouveau/disp/nv50-: bump max chans to 21
   e41779886b90 drm/vmwgfx: Fix gcc-7.1.1 warning
   fabc7dffe9e1 md/raid5: add thread_group worker async_tx_issue_pending_all
   d745f0f67b70 KVM: PPC: Book3S HV: Enable TM before accessing TM registers
   9eb088e57edd crypto: authencesn - Fix digest_null crash
   7d2a354861e9 NFSv4.1: Fix a race where CB_NOTIFY_LOCK fails to wake a waiter
   b087b8b11e52 NFS: invalidate file size when taking a lock.
   6d3d93ca2ef8 powerpc/pseries: Fix of_node_put() underflow during reconfig remove
   fa2aa76efe7d parisc: Suspend lockup detectors before system halt
   f0d23fa63243 parisc: Extend disabled preemption in copy_user_page
   afe9fc012bc1 parisc: Prevent TLB speculation on flushed pages on CPUs that only support equivalent aliases
   5f8bdd5edc82 ALSA: hda - Add missing NVIDIA GPU codec IDs to patch table
   3d955095c597 ALSA: fm801: Initialize chip after IRQ handler is registered
   3a79e1c8e709 jfs: Don't clear SGID when inheriting ACLs
   26d01aa8a110 net: reduce skb_warn_bad_offload() noise
   d97aff4f9770 pstore: Make spinlock per zone instead of global
   0f94b36de37c af_key: Add lock to key dump
   efcfbfb1d8bf Linux 4.9.40
   91af5f04cd5b alarmtimer: don't rate limit one-shot timers
   919e481152ce tracing: Fix kmemleak in instance_rmdir
   7bd804a05eb0 PM / Domains: defer dev_pm_domain_set() until genpd->attach_dev succeeds if present
   69fbb442144a reiserfs: Don't clear SGID when inheriting ACLs
   1c7e5ca092c0 spmi: Include OF based modalias in device uevent
   a18935b45e97 of: device: Export of_device_{get_modalias, uvent_modalias} to modules
   6b50bca7cdb0 acpi/nfit: Fix memory corruption/Unregister mce decoder on failure
   97de6f34b42b ovl: fix random return value on mount
   5cf84432b422 hfsplus: Don't clear SGID when inheriting ACLs
   b33da556255c mlx5: Avoid that mlx5_ib_sg_to_klms() overflows the klms[] array
   a44042519469 drm/mst: Avoid processing partially received up/down message transactions
   48376e6b71a6 drm/mst: Avoid dereferencing a NULL mstb in drm_dp_mst_handle_up_req()
   bc3bd649ebb4 drm/mst: Fix error handling during MST sideband message reception
   db2975396090 RDMA/core: Initialize port_num in qp_attr
   acccf01a807a ceph: fix race in concurrent readdir
   d42f9c7435c0 staging: lustre: ko2iblnd: check copy_from_iter/copy_to_iter return code
   85643f6f5028 staging: sm750fb: avoid conflicting vesafb
   2bc52403da8a staging: comedi: ni_mio_common: fix AO timer off-by-one regression
   964a21a1300c staging: rtl8188eu: add TL-WN722N v2 support
   a76a032300e2 Revert "perf/core: Drop kernel samples even though :u is specified"
   61415418cdba perf annotate: Fix broken arrow at row 0 connecting jmp instruction to its target
   d5f9cd081c66 iser-target: Avoid isert_conn->cm_id dereference in isert_login_recv_done
   672145dfae84 target: Fix COMPARE_AND_WRITE caw_sem leak during se_cmd quiesce
   fa67ac18eff4 udf: Fix deadlock between writeback and udf_setsize()
   9ebfb4fa3ab7 NFS: only invalidate dentrys that are clearly invalid.
   4dd0aa9ae6d0 sunrpc: use constant time memory comparison for mac
   dd0d6509cbf4 IB/core: Namespace is mandatory input for address resolution
   5c2717f41545 IB/iser: Fix connection teardown race condition
   5b50e0e74e2e Input: i8042 - fix crash at boot time
   6d77ac4bc514 MIPS: Fix a typo: s/preset/present/ in r2-to-r6 emulation error message
   3330a05c5c6e MIPS: Send SIGILL for R6 branches in `__compute_return_epc_for_insn'
   d4bd6a1df2c8 MIPS: Send SIGILL for linked branches in `__compute_return_epc_for_insn'
   99ce76144dee MIPS: Rename `sigill_r6' to `sigill_r2r6' in `__compute_return_epc_for_insn'
   86dd4aa30790 MIPS: Send SIGILL for BPOSGE32 in `__compute_return_epc_for_insn'
   d79354cc1bc9 MIPS: math-emu: Prevent wrong ISA mode instruction emulation
   040078ad0fe8 MIPS: Fix unaligned PC interpretation in `compute_return_epc'
   434c9f2e3b46 MIPS: Actually decode JALX in `__compute_return_epc_for_insn'
   f8c331cbc937 MIPS: Save static registers before sysmips
   a9db2f4f887c MIPS: Fix MIPS I ISA /proc/cpuinfo reporting
   c69280e9018e x86/ioapic: Pass the correct data to unmask_ioapic_irq()
   036d59f40ac9 x86/acpi: Prevent out of bound access caused by broken ACPI tables
   456a997498cb Revert "ACPI / EC: Enable event freeze mode..." to fix a regression
   b2966b109b1a ACPI / EC: Drop EC noirq hooks to fix a regression
   ec469b5e2aaf ubifs: Don't leak kernel memory to the MTD
   02131aea6bd4 MIPS: Negate error syscall return in trace
   f39f3b5d8260 MIPS: Fix mips_atomic_set() with EVA
   dd2f83263dd8 MIPS: Fix mips_atomic_set() retry condition
   198bd494cebf ftrace: Fix uninitialized variable in match_records()
   d17cc7b7a752 nvme-rdma: remove race conditions from IB signalling
   8f9dec0c2dbb vfio: New external user group/file match
   e91a55790ddf vfio: Fix group release deadlock
   fee760fc6c79 ovl: drop CAP_SYS_RESOURCE from saved mounter's credentials
   0fb615f9cad7 drm/ttm: Fix use-after-free in ttm_bo_clean_mm
   f97f9e94f666 f2fs: Don't clear SGID when inheriting ACLs
   19e117a50135 f2fs: sanity check size of nat and sit cache
   58d2eacd3b0e xfs: Don't clear SGID when inheriting ACLs
   1b9008cdae94 ipmi:ssif: Add missing unlock in error branch
   685e124ebc7f ipmi: use rcu lock around call to intf->handlers->sender()
   6e7b1eff91aa drm/radeon: Fix eDP for single-display iMac10,1 (v2)
   a844f8d2a564 drm/radeon/ci: disable mclk switching for high refresh rates (v2)
   b85007c9114a drm/amd/amdgpu: Return error if initiating read out of range on vram
   8302e9d2f50b s390/syscalls: Fix out of bounds arguments access
   1e95148551f3 Raid5 should update rdev->sectors after reshape
   4d1f97eb59a4 ext2: Don't clear SGID when inheriting ACLs
   0fa705dc61ee libnvdimm: fix badblock range handling of ARS range
   891c31e16cb7 libnvdimm, btt: fix btt_rw_page not returning errors
   e82672f45ea3 cx88: Fix regression in initial video standard setting
   4d3d3a1690c2 x86/xen: allow userspace access during hypercalls
   03c1d9d45582 md: don't use flush_signals in userspace processes
   dbc969ca944f usb: renesas_usbhs: gadget: disable all eps when the driver stops
   5433bfcc8527 usb: renesas_usbhs: fix usbhsc_resume() for !USBHSF_RUNTIME_PWCTRL
   a74779d8e172 USB: cdc-acm: add device-id for quirky printer
   8665f40a06a0 usb: storage: return on error to avoid a null pointer dereference
   8bc51b4f2a42 mxl111sf: Fix driver to use heap allocate buffers for USB messages
   24a950e16eb5 xhci: Bad Ethernet performance plugged in ASM1042A host
   01845a8347b7 xhci: Fix NULL pointer dereference when cleaning up streams for removed host
   bf0440882ea9 xhci: fix 20000ms port resume timeout
   445ea10969aa ipvs: SNAT packet replies only for NATed connections
   33780512d9fe PCI/PM: Restore the status of PCI devices across hibernation
   f257f4bf6f07 PCI: rockchip: Use normal register bank for config accessors
   13b2f9f9b8aa PCI: Work around poweroff & suspend-to-RAM issue on Macbook Pro 11
   3c17d418afb0 af_key: Fix sadb_x_ipsecrequest parsing
   3b7babc6be0a powerpc/mm/radix: Properly clear process table entry
   88481a2c40e4 powerpc/asm: Mark cr0 as clobbered in mftb()
   5e35ee249e26 powerpc: Fix emulation of mfocrf in emulate_step()
   53a282161317 powerpc: Fix emulation of mcrf in emulate_step()
   99fc5a2254ef powerpc/64: Fix atomic64_inc_not_zero() to return an int
   d638c8584462 powerpc/pseries: Fix passing of pp0 in updatepp() and updateboltedpp()
   71b1caea95a8 xen/scsiback: Fix a TMR related use-after-free
   732e3c76cf97 iscsi-target: Add login_keys_workaround attribute for non RFC initiators
   fc866b296a46 scsi: Add STARGET_CREATED_REMOVE state to scsi_target_state
   542c097f1cb6 scsi: ses: do not add a device to an enclosure if enclosure_add_links() fails.
   d2bb0af4463d PM / Domains: Fix unsafe iteration over modified list of domains
   178aa241fc07 PM / Domains: Fix unsafe iteration over modified list of domain providers
   b87a32175a22 PM / Domains: Fix unsafe iteration over modified list of device links
   4d94276155f8 ASoC: compress: Derive substream from stream based on direction
   9a81c136f486 igb: Explicitly select page 0 at initialization
   157302f97aaa btrfs: Don't clear SGID when inheriting ACLs
   754f4e05e999 wlcore: fix 64K page support
   3da27a9d9827 Bluetooth: use constant time memory comparison for secret values
   fe5cdbcdafaa perf intel-pt: Clear FUP flag on error
   94c38cd0aff2 perf intel-pt: Use FUP always when scanning for an IP
   5a16bd39c501 perf intel-pt: Ensure never to set 'last_ip' when packet 'count' is zero
   daa637832dd2 perf intel-pt: Fix last_ip usage
   dc0401375f7a perf intel-pt: Ensure IP is zero when state is INTEL_PT_STATE_NO_IP
   b338b87f2277 perf intel-pt: Fix missing stack clear
   3e6837f1f414 perf intel-pt: Improve sample timestamp
   d3503ef1a614 perf intel-pt: Move decoder error setting into one condition
   244a7db0e9d5 NFC: Add sockaddr length checks before accessing sa_family in bind handlers
   4a142251a315 nfc: Fix the sockaddr length sanitization in llcp_sock_connect
   d1ac8a98f312 nfc: Ensure presence of required attributes in the activate_target handler
   06be8e2767da NFC: nfcmrvl: fix firmware-management initialisation
   10f03f0f7ef0 NFC: nfcmrvl: use nfc-device for firmware download
   4b4f74d6c4f8 NFC: nfcmrvl: do not use device-managed resources
   7de6ff402dd0 NFC: nfcmrvl_uart: add missing tty-device sanity check
   f73de3f9915c NFC: fix broken device allocation
   48879676a8c3 ath9k: fix an invalid pointer dereference in ath9k_rng_stop()
   99f96831083b ath9k: fix tx99 bus error
   b729a1aea14d ath9k: fix tx99 use after free
   7cd7b56037ae thermal: cpu_cooling: Avoid accessing potentially freed structures
   76572609e458 thermal: max77620: fix device-node reference imbalance
   60813b6a2ab4 s5p-jpeg: don't return a random width/height
   63d32e8af0dd dm mpath: cleanup -Wbool-operation warning in choose_pgpath()
   70ec6b3635d9 ir-core: fix gcc-7 warning on bool arithmetic
   78fbe21d83e3 disable new gcc-7.1.1 warnings for now
   c03917de04aa 4.9.39
   cce8d2ee4571 kvm: vmx: allow host to access guest MSR_IA32_BNDCFGS
   07592d622536 kvm: vmx: Check value written to IA32_BNDCFGS
   fab777e70ca4 kvm: x86: Guest BNDCFGS requires guest MPX support
   bf7c21535617 kvm: vmx: Do not disable intercepts for BNDCFGS
   04e002a5f681 tracing: Use SOFTIRQ_OFFSET for softirq dectection for more accurate results
   cc7d3b7dd1ac PM / QoS: return -EINVAL for bogus strings
   5480437f7963 PM / wakeirq: Convert to SRCU
   758dc6a8dabc sched/topology: Fix overlapping sched_group_mask
   3e165b2322c6 sched/topology: Optimize build_group_mask()
   7c3f08eadcfd sched/topology: Fix building of overlapping sched-groups
   542ebc96c200 sched/fair, cpumask: Export for_each_cpu_wrap()
   a0a93e3e6e1e Revert "sched/core: Optimize SCHED_SMT"
   80495c708490 crypto: caam - fix signals handling
   48a9dff21398 crypto: caam - properly set IV after {en,de}crypt
   db923288f37f crypto: sha1-ssse3 - Disable avx2
   81cc2ef2677b crypto: atmel - only treat EBUSY as transient if backlog
   2ff2cc768eb7 crypto: talitos - Extend max key length for SHA384/512-HMAC and AEAD
   38dfd2e3a673 mm: fix overflow check in expand_upwards()
   1e6f1af808c1 selftests/capabilities: Fix the test_execve test
   54fcb2303ef4 mnt: Make propagate_umount less slow for overlapping mount propagation trees
   bb4fbf094b44 mnt: In propgate_umount handle visiting mounts in any order
   e260db757676 mnt: In umount propagation reparent in a separate pass
   7d976da04345 nvmem: core: fix leaks on registration errors
   ac5e9e801f47 rcu: Add memory barriers for NOCB leader wakeup
   63c634cf9547 vt: fix unchecked __put_user() in tioclinux ioctls
   445a945ad67b ARM64: dts: marvell: armada37xx: Fix timer interrupt specifiers
   f31c4f65dd09 exec: Limit arg stack to at most 75% of _STK_LIM
   fbc877cd08e5 s390: reduce ELF_ET_DYN_BASE
   90fb0f7aefc9 powerpc: move ELF_ET_DYN_BASE to 4GB / 4MB
   70779e0ebb37 arm64: move ELF_ET_DYN_BASE to 4GB / 4MB
   abb79a56898e arm: move ELF_ET_DYN_BASE to 4MB
   63c2f8f8c41b binfmt_elf: use ELF_ET_DYN_BASE only for PIE
   93eae954050d checkpatch: silence perl 5.26.0 unescaped left brace warnings
   a9aa6522a1a5 fs/dcache.c: fix spin lockup issue on nlru->lock
   a48542e8b4ec mm/list_lru.c: fix list_lru_count_node() to be race free
   8c6f19c25086 kernel/extable.c: mark core_kernel_text notrace
   d2b64687b37f thp, mm: fix crash due race in MADV_FREE handling
   68ea25f00ffe tools/lib/lockdep: Reduce MAX_LOCK_DEPTH to avoid overflowing lock_chain/: Depth
   e3d2adaaf927 parisc/mm: Ensure IRQs are off in switch_mm()
   8ed89cfc8692 parisc: DMA API: return error instead of BUG_ON for dma ops on non dma devs
   bf1e4dc3b4fb parisc: use compat_sys_keyctl()
   008a1f270748 parisc: Report SIGSEGV instead of SIGBUS when running out of stack
   59613f80ec67 irqchip/gic-v3: Fix out-of-bound access in gic_set_affinity
   6a90f81ab639 cfg80211: Check if NAN service ID is of expected size
   7e9e9638afdf cfg80211: Check if PMKID attribute is of expected size
   e471290603ee cfg80211: Validate frequencies nested in NL80211_ATTR_SCAN_FREQUENCIES
   b68aa7dff96e cfg80211: Define nla_policy for NL80211_ATTR_LOCAL_MESH_POWER_MODE
   6ae9dd281965 sfc: don't read beyond unicast address list
   5f69bb1d18c5 brcmfmac: Fix glom_skb leak in brcmf_sdiod_recv_chain
   fd325ddd5884 brcmfmac: Fix a memory leak in error handling path in 'brcmf_cfg80211_attach'
   414848bba6ab brcmfmac: fix possible buffer overflow in brcmf_cfg80211_mgmt_tx()
   181dda46a314 rds: tcp: use sock_create_lite() to create the accept socket
   e6577f1ef3f8 vrf: fix bug_on triggered by rx when destroying a vrf
   0bc26d1ca38d net: ipv6: Compare lwstate in detecting duplicate nexthops
   05e165e9bc45 net: core: Fix slab-out-of-bounds in netdev_stats_to_stats64
   beabc6032772 vxlan: fix hlist corruption
   d2c951208578 ipv6: dad: don't remove dynamic addresses if link is down
   743564306ee6 net/mlx5e: Fix TX carrier errors report in get stats ndo
   a80a70a4822c liquidio: fix bug in soft reset failure detection
   e20204dc2c74 net/mlx5: Cancel delayed recovery work when unloading the driver
   067328078d14 net: handle NAPI_GRO_FREE_STOLEN_HEAD case also in napi_frags_finish()
   cd5de9cb858d bpf: prevent leaking pointer via xadd on unpriviledged
   bee807054892 rocker: move dereference before free
   e5e5c0ec39dd bridge: mdb: fix leak on complete_info ptr on fail path
   3f04c32bf47a net: prevent sign extension in dev_get_stats()
   ef13840028c8 tcp: reset sk_rx_dst in tcp_disconnect()
   cf81b4abe7ac net: dp83640: Avoid NULL pointer dereference.
   0526ff300304 ipv6: avoid unregistering inet6_dev for loopback
   3f7e07c37ade net/phy: micrel: configure intterupts after autoneg workaround
   dc491cdd2c81 net: sched: Fix one possible panic when no destroy callback
   13550ffc9515 net_sched: fix error recovery at qdisc creation
   21f79ae43fd2 xen-netfront: Rework the fix for Rx stall during OOM and network stress
   f0cd77ded512 Linux 4.9.38
   fb2dc28cf20a saa7134: fix warm Medion 7134 EEPROM read
   81ba752aa476 x86/mm/pat: Don't report PAT on CPUs that don't support it
   c0d3a7bdc7c2 ext4: check return value of kstrtoull correctly in reserved_clusters_store
   716986547f1f crypto: rsa-pkcs1pad - use constant time memory comparison for MACs
   0d6758f74a46 crypto: caam - fix gfp allocation flags (part I)
   090661e4073d staging: comedi: fix clean-up of comedi_class in comedi_init()
   80c965cbd280 staging: vt6556: vnt_start Fix missing call to vnt_key_init_table.
   5497d74e75f8 locking/rwsem-spinlock: Fix EINTR branch in __down_write_common()
   3953403ca660 md: fix super_offset endianness in super_1_rdev_size_change
   9a37d02c497c md: fix incorrect use of lexx_to_cpu in does_sb_need_changing
   ce02effed0ec perf probe: Add error checks to offline probe post-processing
   364973599e2e perf probe: Fix to probe on gcc generated symbols for offline kernel
   cd206153672a perf scripting perl: Fix compile error with some perl5 versions
   b9175b3fa90c perf header: Fix handling of PERF_EVENT_UPDATE__SCALE
   15c249c85d57 perf bench numa: Avoid possible truncation when using snprintf()
   b246fc09a223 perf tests: Avoid possible truncation with dirent->d_name + snprintf
   93a3c47d033a perf intel-pt: Use __fallthrough
   055237857974 perf thread_map: Correctly size buffer used with dirent->dt_name
   a814c7d1d8f4 perf top: Use __fallthrough
   94218786b3ba tools strfilter: Use __fallthrough
   76efd703014f tools string: Use __fallthrough in perf_atoll()
   dae518419a42 tools include: Add a __fallthrough statement
   b635182b4f41 tpm: Issue a TPM2_Shutdown for TPM2 devices.
   5a1e1c62f37e Add "shutdown" to "struct class".
   e6952841ade0 mqueue: fix a use-after-free in sys_mq_notify()
   c48f76d680ad Linux 4.9.37
   3468d4ffa8ef rt286: add Thinkpad Helix 2 to force_combo_jack_table
   84b00cd90f4d RDMA/uverbs: Check port number supplied by user verbs cmds
   1803bec709f8 crypto: drbg - Fixes panic in wait_for_completion call
   73a0a68779e4 KEYS: Fix an error code in request_master_key()
   f986d63d788c ath10k: override CE5 config for QCA9377
   afbf56592092 x86/uaccess: Optimize copy_user_enhanced_fast_string() for short strings
   e353bfb63754 x86/tools: Fix gcc-7 warning in relocs.c
   525ea5950e1c tpm: fix a kernel memory leak in tpm-sysfs.c
   25b2ee6f9d9d gfs2: Fix glock rhashtable rcu bug
   f59d04e34282 xhci: Limit USB2 port wake support for AMD Promontory hosts
   07379c41aeaf USB: serial: qcserial: new Sierra Wireless EM7305 device ID
   7b7d5a4d9f57 USB: serial: option: add two Longcheer device ids
   369bbf4b44ac pinctrl: sh-pfc: Update info pointer after SoC-specific init
   828bd8441de0 pinctrl: sh-pfc: r8a7791: Add missing HSCIF1 pinmux data
   485b0f1194ea pinctrl: mxs: atomically switch mux and drive strength config
   dee763a4d37d pinctrl: cherryview: Add terminate entry for dmi_system_id tables
   b9970dd7c155 pinctrl: sunxi: Fix SPDIF function name for A83T
   8240981690f3 pinctrl: stm32: Fix bad function call
   a3f2e309f654 pinctrl: meson: meson8b: fix the NAND DQS pins
   f24dee484be9 pinctrl: sh-pfc: r8a7795: Fix hscif2_clk_b and hscif4_ctrl
   c5db45ef9e86 pinctrl: sh-pfc: r8a7791: Add missing DVC_MUTE signal
   37705843587b pinctrl: sh-pfc: r8a7791: Fix SCIF2 pinmux data
   275f905f1232 pinctrl: sh-pfc: r8a7794: Swap ATA signals
   2bd57fa2558c pinctrl: cherryview: Add a quirk to make Acer Chromebook keyboard work again
   aaaaa5b1881b pinctrl: qcom: ipq4019: add missing pingroups for pins > 70
   7bdacd3d9f4e sysctl: report EINVAL if value is larger than UINT_MAX for proc_douintvec
   3a20c57b4332 sysctl: don't print negative flag for proc_douintvec
   4e84b9c79003 mac80211_hwsim: Replace bogus hrtimer clockid
   d84e328c0243 USB: core: fix device node leak
   18b3abb54305 usb: Fix typo in the definition of Endpoint[out]Request
   19adf93ccd55 usb: usbip: set buffer pointers to NULL after free
   3d1056874295 Add USB quirk for HVR-950q to avoid intermittent device resets
   da8990d3c141 USB: serial: cp210x: add ID for CEL EM3588 USB ZigBee stick
   3272bad0c2aa usb: dwc3: replace %p with %pK
   366d9207d9e0 drm/virtio: don't leak bo on drm_gem_object_init failure
   b96976c1a87b media: entity: Fix stream count check
   3693042f1c9f tracing/kprobes: Allow to create probe with a module name starting with a digit
   9403514ba1a2 ceph: choose readdir frag based on previous readdir reply
   c4c592b2c137 driver core: platform: fix race condition with driver_override
   26ff065b8401 fs: completely ignore unknown open flags
   6efb1b0b6c82 fs: add a VALID_OPEN_FLAGS

(From OE-Core rev: 47b68405468c31e62b096ddfc66f3814bf53b468)

(From OE-Core rev: 6da24ad2d2c843455fb8ce0faf5254462ca85c3b)

Signed-off-by: Bruce Ashfield <bruce.ashfield@windriver.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Signed-off-by: Armin Kuster <akuster808@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-09-11 22:15:59 +01:00
Bruce Ashfield
519942c592 linux-yocto/4.10/4.9: fix BRCMFMAC_PROTO_MSGBUF warning
The 4.10 and 4.9 kernels need a fix applied to 4.12 to deal with
a configuration warning:

  Author: Bruce Ashfield <bruce.ashfield@windriver.com>
  Date:   Fri Aug 18 17:03:27 2017 -0400

    wifi: drop BRCMFMAC_PROTO_MSGBUF, since it is selected

(From OE-Core rev: 288f3ce9bfe0c2964137bfc98e033466fbf418be)

(From OE-Core rev: 74826c639d06ff19737602841333bd9235a142e3)

Signed-off-by: Bruce Ashfield <bruce.ashfield@windriver.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Signed-off-by: Armin Kuster <akuster808@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-09-11 22:15:59 +01:00
Bruce Ashfield
c18e8747f0 linux-yocto/4.10: fix aufs build
The aufs patches were out of sync with the latest upstream and hence
didn't build against 4.10.

With this update, we are once again building and up to date with the
upstream repo.

(From OE-Core rev: b8b7aa0f64e46e7e8134a8bc33948e2bbe63380f)

(From OE-Core rev: 35eebe3cf2c6190e1c13d5b828e3550fe798ba02)

Signed-off-by: Bruce Ashfield <bruce.ashfield@windriver.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Signed-off-by: Armin Kuster <akuster808@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-09-11 22:15:59 +01:00
Bruce Ashfield
2e740c4583 linux-yocto/4.10: CVE & misc fixes
Updating the 4.10 SRCREVs to import the following changes:

  65370fa249e2 drm/vmwgfx: limit the number of mip levels in vmw_gb_surface_define_ioctl()
  530ec12a0cb0 ACPICA: Namespace: fix operand cache leak
  b1098b5bbded char: lp: fix possible integer overflow in lp_setup()
  56ee0c7811e5 dccp/tcp: do not inherit mc_list from parent
  9f6cbd022bba nfsd: encoders mustn't use unitialized values in error cases
  084036ebc243 nfsd: fix undefined behavior in nfsd4_layout_verify
  973f780eeaa6 xen-blkback: don't leak stack data via response ring
  20c4b5015fea brcmfmac: fix possible buffer overflow in brcmf_cfg80211_mgmt_tx()
  1dff0f28b490 ipx: call ipxitf_put() in ioctl error path
  d666a8e60a45 mm: fix new crash in unmapped_area_topdown()
  73d059ba1a17 mm: larger stack guard gap, between vmas

Which address the following CVEs:

  CVE-2017-8890
  CVE-2017-1000363
  CVE-2017-11472
  CVE-2017-7346
  CVE-2017-1000380
  CVE-2017-7541
  CVE-2017-10911

(From OE-Core rev: 6cfd520ea050aa449f0ac7ee0b2c647d14d588ad)

(From OE-Core rev: 10ade11241a52b490fbadc4f51988307b2b1ba24)

Signed-off-by: Bruce Ashfield <bruce.ashfield@windriver.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Signed-off-by: Armin Kuster <akuster808@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-09-11 22:15:59 +01:00
Bruce Ashfield
288c2ff81b kernel-yocto: configuration updates: x86 features
Integrating the following kernel configuration changes:

 f7fbd4185e5 features/qat: additional configurations, CONFIG_CRYPTO_RSA and CONFIG_CRYPTO_DH
 50c62581d283 features/netfilter: additional configurations
 d67e4ed89556 features/x2apic: add X2APIC feature
 7889b28c5300 features/vfio: add VFIO feature
 dc4ec998757e features/numa: Add NUMA feature
 c88c18de4ca8 features/mtd: add MTD feature
 9035571d32ee features/iommu: add IOMMU feature
 6f3b16136f55 features/intel-txt: add intel-txt feature
 4936a5f508f0 common-pc-wifi: Enable SDIO for BroadCom BRCMFMAC

(From OE-Core rev: 59d294f119dc91d9ec47b0a8381d3addc86a6e3a)

(From OE-Core rev: a2fbe75d029c389e03c9775f4e82e8de233f4ddb)

Signed-off-by: Bruce Ashfield <bruce.ashfield@windriver.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Signed-off-by: Armin Kuster <akuster808@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-09-11 22:15:59 +01:00
Bruce Ashfield
3490db6a4c linux-yocto/4.1: fix fsl-ls10xx sdhci
mmc: sdhci: fix two compile errors

    | CC drivers/mmc/host/sdhci.o
    | drivers/mmc/host/sdhci.c: In function 'sdhci_execute_tuning':
    | drivers/mmc/host/sdhci.c:1990:4: error: implicit
    | declaration of function 'sdhci_do_reset'
    | [-Werror=implicit-function-declaration]
    | sdhci_do_reset(host, SDHCI_RESET_CMD);
    | ^
    | drivers/mmc/host/sdhci.c:2006:7: error: 'struct
    | mmc_command' has no member named 'busy_timeout'
    | cmd.busy_timeout = 50;
    |        ^

    In function sdhci_execute_tuning, replace sdhci_do_reset
    with sdhci_reset, replace busy_timeout with cmd_timeout_ms.

    Commit a629a90ba0 adds eMMC DDR mode support for t2080qds and
    modified some data structures and function name. Later
    commit a2080cc280 just backport upstream commit 61e53bd004
    without aligning the current source tree thus cause
    these build errors. Fix them.

    Signed-off-by: Zhang Xiao <xiao.zhang@windriver.com>

(From OE-Core rev: 538d2f0857f09ca86026d5771ea7c3fb74c0f857)

(From OE-Core rev: 68f353d8a82a3b345e6e635258a606bf1c3991fb)

Signed-off-by: Bruce Ashfield <bruce.ashfield@windriver.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Signed-off-by: Armin Kuster <akuster808@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-09-11 22:15:59 +01:00
Bruce Ashfield
2d6eb6904d linux-yocto/4.9: update to v4.9.36
Integrating the -stable release with the following commits:

   9f86f302ec0e Linux 4.9.36
   a29fd27ca268 KVM: nVMX: Fix exception injection
   d1d3756f07da KVM: x86: zero base3 of unusable segments
   f3c3ec96e5fb KVM: x86/vPMU: fix undefined shift in intel_pmu_refresh()
   1eeb79426332 KVM: x86: fix emulation of RSM and IRET instructions
   982d8d92f256 arm64: fix NULL dereference in have_cpu_die()
   a4bfcab30928 mtd: nand: brcmnand: Check flash #WP pin status before nand erase/program
   de5862335ed7 i2c: brcmstb: Fix START and STOP conditions
   8ee785016d5a brcmfmac: avoid writing channel out of allocated array
   65fc82cea84f infiniband: hns: avoid gcc-7.0.1 warning for uninitialized data
   3e51ccbadd15 objtool: Fix another GCC jump table detection issue
   92e66676523a clk: scpi: don't add cpufreq device if the scpi dvfs node is disabled
   8a6f400a374c cpufreq: s3c2416: double free on driver init error path
   1781a29b31fa iommu/amd: Fix interrupt remapping when disable guest_mode
   0e55856b8f29 iommu/amd: Fix incorrect error handling in amd_iommu_bind_pasid()
   f0c31c674abd iommu/dma: Don't reserve PCI I/O windows
   d7fcb303d1ee iommu: Handle default domain attach failure
   c19bfc6765d4 iommu/vt-d: Don't over-free page table directories
   d5c5e8ba5d9d ocfs2: o2hb: revert hb threshold to keep compatible
   8af88a950b42 x86/mm: Fix flush_tlb_page() on Xen
   3667dafd6c04 x86/mpx: Correctly report do_mpx_bt_fault() failures to user-space
   b287ade87c91 x86/boot/KASLR: Fix kexec crash due to 'virt_addr' calculation bug
   15541e64163c tools arch: Sync arch/x86/lib/memcpy_64.S with the kernel
   a2c222bef08f ARM: 8685/1: ensure memblock-limit is pmd-aligned
   7661b19687b2 ARM64/ACPI: Fix BAD_MADT_GICC_ENTRY() macro implementation
   4efe34b500a7 ARM: dts: OMAP3: Fix MFG ID EEPROM
   07bb2c7e7ea3 ARM: OMAP2+: omap_device: Sync omap_device and pm_runtime after probe defer
   e57aa416ca4c regulator: tps65086: Fix DT node referencing in of_parse_cb
   88baad2e7159 regulator: tps65086: Fix expected switch DT node names
   9846c67974d6 spi: fix device-node leaks
   c52829f60f5f spi: When no dma_chan map buffers with spi_master's parent
   478273e11521 sched/loadavg: Avoid loadavg spikes caused by delayed NO_HZ accounting
   eea0261db8ef watchdog: bcm281xx: Fix use of uninitialized spinlock.
   4211442b2088 netfilter: use skb_to_full_sk in ip_route_me_harder
   ac2730234cc1 xfrm: Oops on error in pfkey_msg2xfrm_state()
   c460f2beb6f0 xfrm: NULL dereference on allocation failure
   1e1666257cb6 xfrm: fix stack access out of bounds with CONFIG_XFRM_SUB_POLICY
   647f605276c0 mm/vmalloc.c: huge-vmap: fail gracefully on unexpected huge vmap mappings
   f9f73c58feef ravb: Fix use-after-free on `ifconfig eth0 down`
   adfe95fe5b42 ip6_tunnel, ip6_gre: fix setting of DSCP on encapsulated packets
   168bd51ec5ef sctp: check af before verify address in sctp_addr_id2transport
   399566f8a4fb net/mlx4_core: Eliminate warning messages for SRQ_LIMIT under SRIOV
   b6f75b986a7f perf probe: Fix to probe on gcc generated functions in modules
   9f8ffe4e0952 tipc: allocate user memory with GFP_KERNEL flag
   18b200e0c8ee net: phy: dp83867: allow RGMII_TXID/RGMII_RXID interface types
   e1eac347d971 perf probe: Fix to show correct locations for events on modules
   cc439964fab1 be2net: fix MAC addr setting on privileged BE3 VFs
   02434def6fd0 be2net: don't delete MAC on close on unprivileged BE3 VFs
   fa1dbf505aef be2net: fix status check in be_cmd_pmac_add()
   5f54c4e1e2af usb: dwc2: gadget: Fix GUSBCFG.USBTRDTIM value
   0e9867b7113c s390/ctl_reg: make __ctl_load a full memory barrier
   9d00195bc0af swiotlb: ensure that page-sized mappings are page-aligned
   68a5dc385735 coredump: Ensure proper size of sparse core files
   d21816c24591 aio: fix lock dep warning
   82835fb33ce5 perf/x86: Reject non sampling events with precise_ip
   1c68633329d2 perf/core: Fix sys_perf_event_open() vs. hotplug
   48131dd0f2b1 x86/mpx: Use compatible types in comparison to fix sparse error
   283994074501 x86/tsc: Add the Intel Denverton Processor to native_calibrate_tsc()
   6baa8c92dab9 mac80211: initialize SMPS field in HT capabilities
   8eaaf66d41ad pmem: return EIO on read_pmem() failure
   25319ae8e8a7 drm/amd/powerplay: refine vce dpm update code on Cz.
   f275ac7fc5d2 drm/amd/powerplay: fix vce cg logic error on CZ/St.
   77e82094a3c9 drm/radeon/si: load special ucode for certain MC configs
   4ae8dc6acb71 net: thunderx: acpi: fix LMAC initialization
   f88f06e18318 arm64: assembler: make adr_l work in modules under KASLR
   aabb797b4c12 spi: davinci: use dma_mapping_error()
   c32462d0b523 scsi: lpfc: avoid double free of resource identifiers
   582c1ca0ea1d HID: i2c-hid: Add sleep between POWER ON and RESET
   c78b8de5c05c perf/x86/intel: Use ULL constant to prevent undefined shift behaviour
   6130fac99481 mac80211: recalculate min channel width on VHT opmode changes
   d48cb21fd50b net: phy: marvell: fix Marvell 88E1512 used in SGMII mode
   849f2d0665e0 pinctrl: intel: Set pin direction properly
   3a6edbc95ba0 perf/x86/intel/uncore: Fix hardcoded socket 0 assumption in the Haswell init code
   b8c5e7b12413 drm/etnaviv: trick drm_mm into giving out a low IOVA
   2bc8fcd633d8 Documentation: devicetree: change the mediatek ethernet compatible string
   c5c8743642ae kernel/panic.c: add missing \n
   00f468f51dd5 ibmveth: Add a proper check for the availability of the checksum features
   32bd4d2ed9d8 vxlan: do not age static remote mac entries
   b07bf2364605 ip6_tunnel: must reload ipv6h in ip6ip6_tnl_xmit()
   7fdc81f6e1a9 virtio_net: fix PAGE_SIZE > 64k
   a6c3e01bf32e mlxsw: spectrum_router: Correctly reallocate adjacency entries
   ff3b1dd026bb vfio/spapr: fail tce_iommu_attach_group() when iommu_data is null
   8895ef4e5357 drm/amdgpu: check ring being ready before using
   e5a2ba9af818 net: dsa: Check return value of phy_connect_direct()
   c6f284899e01 amd-xgbe: Check xgbe_init() return code
   e99d86d76eed platform/x86: ideapad-laptop: handle ACPI event 1
   e9a87e0f5bbb iwlwifi: fix kernel crash when unregistering thermal zone
   322baf72eed5 scsi: virtio_scsi: Reject commands when virtqueue is broken
   5d5c293af834 xen-netfront: Fix Rx stall during network stress and OOM
   72191c7d82e7 swiotlb-xen: update dev_addr after swapping pages
   884baf2abf6d virtio_console: fix a crash in config_work_handler
   c3eab85ff11a Btrfs: fix truncate down when no_holes feature is enabled
   e8b5068b64d0 Btrfs: Fix deadlock between direct IO and fast fsync
   83571e9ef7c9 gianfar: Do not reuse pages from emergency reserve
   c48a862c47d4 objtool: Fix IRET's opcode
   251d00bf1309 bpf: don't trigger OOM killer under pressure with map alloc
   a7a2a6d34fe7 bnxt_en: Fix "uninitialized variable" bug in TPA code path.
   da805bc788b0 xen-netback: protect resource cleaning on XenBus disconnect
   7bdccaa5da12 xen-netback: fix memory leaks on XenBus disconnect
   5dcd08594276 net: ethtool: Initialize buffer when querying device channel settings
   6e315b2b10b6 powerpc/eeh: Enable IO path on permanent error
   ea7b808165a5 net: korina: Fix NAPI versus resources freeing
   fded17be01ab perf/x86/intel: Handle exclusive threadid correctly on CPU hotplug
   3eeb3459b7e6 net: phy: dp83848: add DP83620 PHY support
   10c24e89b2b8 drm/amdgpu: add support for new hainan variants
   9f2a36a7504c drm/amdgpu: fix program vce instance logic error.
   0c9626619777 qla2xxx: Fix erroneous invalid handle message
   8cfcaa2899f3 qla2xxx: Terminate exchange if corrupted
   42a1d5b47594 scsi: lpfc: Set elsiocb contexts to NULL after freeing it
   7782ab228f64 stmmac: add missing of_node_put
   ee4494c6bda8 scsi: sd: Fix wrong DPOFUA disable in sd_read_cache_type
   80b1a1180e4e KVM: x86: fix fixing of hypercalls
   afaee3ef5136 xen/blkback: don't free be structure too early
   13fa36f9fbc8 ARM64: dts: meson-gxbb-odroidc2: fix GbE tx link breakage
   8bface142a8d dt: bindings: net: use boolean dt properties for eee broken modes
   3897ae12b706 net: phy: use boolean dt properties for eee broken modes
   40373d91a0f7 net: phy: fix sign type error in genphy_config_eee_advert
   752ba680eb70 dt-bindings: net: add EEE capability constants
   97ace183074d net: phy: add an option to disable EEE advertisement
   0e8eca987e27 net: ethtool: add support for 2500BaseT and 5000BaseT link modes
   8886196a7320 sparc64: Zero pages on allocation for mondo and error queues.
   41172b772da4 sparc64: Handle PIO & MEM non-resumable errors.
   2aa6d036b716 mm: numa: avoid waiting on freed migrated pages
   08cb8e5f83fd l2tp: take a reference on sessions used in genetlink handlers
   599e6f038777 l2tp: hold session while sending creation notifications
   d9face6fc62a l2tp: fix duplicate session creation
   806e98835683 l2tp: ensure session can't get removed during pppol2tp_session_ioctl()
   6539c4f991c2 l2tp: fix race in l2tp_recv_common()
   d2da8d394147 usb: gadget: f_fs: Fix possibe deadlock
   ed96148d7f8e x86/mm: Fix boot crash caused by incorrect loop count calculation in sync_global_pgds()
   1c0fa383b339 dm thin: do not queue freed thin mapping for next stage processing
   466877f2d257 drm/vmwgfx: Free hash table allocated by cmdbuf managed res mgr
   78c4244f8bdb gpiolib: fix filtering out unwanted events
   cb2c6fdf620f NFSv4.1: Fix a race in nfs4_proc_layoutget
   7d0e27fe24c5 ALSA: hda - set input_path bitmap to zero after moving it to new place
   093750c3dec4 ALSA: hda - Fix endless loop of codec configure
   dad3135e762b MIPS: Fix IRQ tracing & lockdep when rescheduling
   e9e24faf823e MIPS: pm-cps: Drop manual cache-line alignment of ready_count
   f7d3d40ea124 MIPS: Avoid accidental raw backtrace
   3d4ac49a9538 MIPS: head: Reorder instructions missing a delay slot
   b1355226a64e mm, swap_cgroup: reschedule when neeed in swap_cgroup_swapoff()
   dbc808362b6c drm/ast: Handle configuration without P2A bridge
   8dc9f9dede5b xen/blkback: don't use xen_blkif_get() in xen-blkback kthread
   4ebe28d23d35 NFSv4.x/callback: Create the callback service through svc_create_pooled
   955f270b6f5d NFSv4: fix a reference leak caused WARNING messages
   b89bd0c715c1 netfilter: synproxy: fix conntrackd interaction
   ced7689be60d netfilter: xt_TCPMSS: add more sanity tests on tcph->doff
   8e2316399b8f rtnetlink: add IFLA_GROUP to ifla_policy
   b9ca9b0f5510 ipv6: Do not leak throw route references
   e4089baa08c4 sfc: provide dummy definitions of vswitch functions
   08058c258afb net: 8021q: Fix one possible panic caused by BUG_ON in free_netdev
   f1a0e7d172b0 decnet: always not take dst->__refcnt when inserting dst into hash table
   c7d422d68fe9 net/mlx5e: Fix timestamping capabilities reporting
   25ff35074e27 net/mlx5: Wait for FW readiness before initializing command interface
   176b9874a203 net/mlx5e: Avoid doing a cleanup call if the profile doesn't have it
   4c246863e7b4 sctp: return next obj by passing pos + 1 into sctp_transport_get_idx
   fded2d74a350 ipv6: fix calling in6_ifa_hold incorrectly for dad work
   cac2a9bb4034 igmp: add a missing spin_lock_init()
   ecd6627f48bd igmp: acquire pmc lock for ip_mc_clear_src()
   059686754c18 proc: snmp6: Use correct type in memset
   78b24ab695ab net/mlx5e: Fix wrong indications in DIM due to counter wraparound
   9854e5865990 net/mlx5e: Added BW check for DIM decision mechanism
   57360bc3c7a6 net: tipc: Fix a sleep-in-atomic bug in tipc_msg_reverse
   bb566ce3a60e net: caif: Fix a sleep-in-atomic bug in cfpkt_create_pfx
   8cda426a7cfa sctp: disable BH in sctp_for_each_endpoint
   c6d4ff85722b Fix an intermittent pr_emerg warning about lo becoming free.
   bb84290cd296 af_unix: Add sockaddr length checks before accessing sa_family in bind and connect handlers
   386ed38f0f28 net: vrf: Make add_fib_rules per network namespace flag
   b5cc68e0c190 net: Zero ifla_vf_info in rtnl_fill_vfinfo()
   fd9b13e6c175 decnet: dn_rtmsg: Improve input length sanitization in dnrmg_receive_user_skb
   d2f459e3feb0 net: don't call strlen on non-terminated string in dev_set_alias()
   98184bbb8dae ipv6: release dst on error in ip6_dst_lookup_tail
   92905e331aea Linux 4.9.35
   855b08e57777 brcmfmac: fix uninitialized warning in brcmf_usb_probe_phase2()
   21eaaa76b701 jump label: fix passing kbuild_cflags when checking for asm goto support
   ffa96c1a6afe net: phy: fix marvell phy status reading
   5da6415e427b spi: double time out tolerance
   25c7794ed046 dmaengine: bcm2835: Fix cyclic DMA period splitting
   81135c71bde3 net: phy: Initialize mdio clock at probe function
   948c4f17ab7e rt2x00: avoid introducing a USB dependency in the rt2x00lib module
   225969acc0f1 usb: gadget: f_fs: avoid out of bounds access on comp_desc
   5306119473b2 mtd: spi-nor: fix spansion quad enable
   dcd015f733a7 of: Add check to of_scan_flat_dt() before accessing initial_boot_params
   f20603874211 rxrpc: Fix several cases where a padded len isn't checked in ticket decode
   581659a87820 drm/amdgpu: adjust default display clock
   217e035d5120 drm/amdgpu/atom: fix ps allocation size for EnableDispPowerGating
   e4b8d1e84410 drm/radeon: add a quirk for Toshiba Satellite L20-183
   61ea7c2817bd drm/radeon: add a PX quirk for another K53TK variant
   3900f24aa6fa iscsi-target: Reject immediate data underflow larger than SCSI transfer length
   463440e6de4a iscsi-target: Fix delayed logout processing greater than SECONDS_FOR_LOGOUT_COMP
   1f576d53d854 target: Fix kref->refcount underflow in transport_cmd_finish_abort
   99f66b5182a4 arm64/vdso: Fix nsec handling for CLOCK_MONOTONIC_RAW
   a53bfdda06ac time: Fix CLOCK_MONOTONIC_RAW sub-nanosecond accounting
   02a37ccd6347 time: Fix clock->read(clock) race around clocksource changes
   c81d034bd09a brcmfmac: unbind all devices upon failure in firmware callback
   ba2d8d67875c brcmfmac: use firmware callback upon failure to load
   1dd15bd62221 brcmfmac: add parameter to pass error code in firmware callback
   20d8f785f974 Input: i8042 - add Fujitsu Lifebook AH544 to notimeout list
   8eaa481dfb4c powerpc/64s: Handle data breakpoints in Radix mode
   414f51ceb6ff powerpc/kprobes: Pause function_graph tracing during jprobes handling
   f719f20abe2a signal: Only reschedule timers on signals timers have sent
   99afebe8fef9 HID: Add quirk for Dell PIXART OEM mouse
   cdf300d6105d cxgb4: notify uP to route ctrlq compl to rdma rspq
   fb6dc831b5cf CIFS: Improve readdir verbosity
   2f1527e359f4 KVM: PPC: Book3S HV: Context-switch EBB registers properly
   468aa930c0a2 KVM: PPC: Book3S HV: Preserve userspace HTM state properly
   df3a787b3a71 KVM: s390: gaccess: fix real-space designation asce handling for gmap shadows
   5220378bd91c perf/x86/intel: Add 1G DTLB load/store miss support for SKL
   7c679fe729c2 lib/cmdline.c: fix get_options() overflow while parsing ranges
   bc6eecff3d95 autofs: sanity check status reported with AUTOFS_DEV_IOCTL_FAIL
   4b660fcbc64e powerpc/perf: Fix oops when kthread execs user process
   3d6848e491df fs/exec.c: account for argv/envp pointers
   552a14a572a2 ALSA: pcm: Don't treat NULL chmap as a fatal error
   8c9c55a0f576 ALSA: firewire-lib: Fix stall of process context at packet error
   4ae2cb91a636 xen-blkback: don't leak stack data via response ring
   e5c49c1703ae xen/blkback: fix disconnect while I/Os in flight
   0e051f17bd04 clk: sunxi-ng: a31: Correct lcd1-ch1 clock register offset
   493ecd5cd73e Linux 4.9.34
   ce7fe8595902 mm: fix new crash in unmapped_area_topdown()
   5d10ad629726 Allow stack to grow up to address space limit
   cfc0eb403816 mm: larger stack guard gap, between vmas
   04651048c79a alarmtimer: Rate limit periodic intervals
   b355b899c74a crypto: Work around deallocated stack frame reference gcc bug on sparc.
   7dfe7ca9ec12 vTPM: Fix missing NULL check
   ecae47331a43 MIPS: .its targets depend on vmlinux
   6b706cbb16e9 MIPS: Fix bnezc/jialc return address calculation
   22921a9e232a usb: dwc3: exynos fix axius clock error path to do cleanup
   f0ee203c864f usb: gadget: composite: Fix function used to free memory
   8ee7f06f4dca alarmtimer: Prevent overflow of relative timers
   766283254b67 genirq: Release resources in __setup_irq() error path
   8a48b7eace4d sched/core: Idle_task_exit() shouldn't use switch_mm_irqs_off()
   cf6ac3abb323 iio: imu: inv_mpu6050: add accel lpf setting for chip >= MPU6500
   f7ae7d2229d2 swap: cond_resched in swap_cgroup_prepare()
   1419b8752153 mm/memory-failure.c: use compound_head() flags for huge pages
   0c0d3d8730db USB: gadgetfs, dummy-hcd, net2280: fix locking for callbacks
   3ff5f4f6a8a7 USB: gadget: fix GPF in gadgetfs
   06178662474c usb: xhci: ASMedia ASM1042A chipset need shorts TX quirk
   4581d7dd44f3 usb: xhci: Fix USB 3.1 supported protocol parsing
   2abac4084fb9 drivers/misc/c2port/c2port-duramar2150.c: checking for NULL instead of IS_ERR()
   f28ba80c6a3e misc: mic: double free on ioctl error path
   02d009e865a8 ath10k: fix napi crash during rmmod when probe firmware fails
   07612c1227e8 usb: r8a66597-hcd: decrease timeout
   f75f4d196ab5 usb: r8a66597-hcd: select a different endpoint on timeout
   c8091f0e8549 USB: gadget: dummy_hcd: fix hub-descriptor removable fields
   374aceef5912 pvrusb2: reduce stack usage pvr2_eeprom_analyze()
   9ae5dac225e2 USB: usbip: fix nonconforming hub descriptor
   7b5bce3a5128 usb: core: fix potential memory leak in error path during hcd creation
   12bfbe157d06 USB: hub: fix SS max number of ports
   cb53a4e03b2f usb: gadget: udc: renesas_usb3: lock for PN_ registers access
   dd65c0958b77 usb: gadget: udc: renesas_usb3: fix deadlock by spinlock
   723bd3b9f83f usb: gadget: udc: renesas_usb3: fix pm_runtime functions calling
   b51e4b0ac661 IB/mlx5: Fix kernel to user leak prevention logic
   dca02651cee7 iio: adc: ti_am335x_adc: allocating too much in probe
   cf308c15103e iio: proximity: as3935: recalibrate RCO after resume
   56251d138570 iio: st_pressure: Fix data sign
   a1d51f7abf71 staging: iio: tsl2x7x_core: Fix standard deviation calculation
   773fdcdc0957 staging: rtl8188eu: prevent an underflow in rtw_check_beacon_data()
   ed13a9c6464b mfd: omap-usb-tll: Fix inverted bit use for USB TLL mode
   caa6f1c7bcbe x86/mm/32: Set the '__vmalloc_start_set' flag in initmem_init()
   ad3faea03fdf serial: sh-sci: Fix late enablement of AUTORTS
   a50aacf5de52 serial: efm32: Fix parity management in 'efm32_uart_console_get_options()'
   879d61f218a9 drm/vc4: Fix OOPSes from trying to cache a partially constructed BO.
   5899b635ecc7 drm/mediatek: fix mtk_hdmi_setup_vendor_specific_infoframe mistake
   5b754c994f38 mac80211: don't send SMPS action frame in AP mode when not needed
   3e8c503d0a16 mac80211: fix dropped counter in multiqueue RX
   6568f8f70152 mac80211: strictly check mesh address extension mode
   c8143269c9c4 mac80211: fix IBSS presp allocation size
   841e4e775bb1 mac80211: fix packet statistics for fast-RX
   f79d740f3289 mac80211: fix CSA in IBSS mode
   bd3f89002e52 usb: musb: dsps: keep VBUS on for host-only mode
   a317afc0c1ce drm/i915: Fix GVT-g PVINFO version compatibility check
   7f7bb1173db8 drm/amdgpu: Fix overflow of watermark calcs at > 4k resolutions.
   f6e99a2efc03 mac80211/wpa: use constant time memory comparison for MACs
   2ec5b68bf62e mac80211: don't look at the PM bit of BAR frames
   63d34ea7042a vb2: Fix an off by one error in 'vb2_plane_vaddr'
   5d5605cc5833 cpufreq: conservative: Allow down_threshold to take values from 1 to 10
   47537bceb7b7 ila_xlat: add missing hash secret initialization
   95f47cd7d7d8 can: gs_usb: fix memory leak in gs_cmd_reset()
   a6d6282040b7 configfs: Fix race between create_link and configfs_rmdir
   222aa34e5d79 fs: pass on flags in compat_writev
   050639ef5810 Linux 4.9.33
   bdc9a03fd9ce sparc64: make string buffers large enough
   933b9b11f7ca drm/i915: Always recompute watermarks when distrust_bios_wm is set, v2.
   4f59a7a895c4 drm/i915: Workaround VLV/CHV DSI scanline counter hardware fail
   8e1a4006ff92 s390/kvm: do not rely on the ILC on kvm host protection fauls
   a2f68276822c xtensa: don't use linux IRQ #0
   57211e84dda0 RDMA/qedr: Return max inline data in QP query result
   c5ea7aa57e24 RDMA/qedr: Don't spam dmesg if QP is in error state
   13a87589af5f RDMA/qedr: Don't reset QP when queues aren't flushed
   bbf61096e42c RDMA/qedr: Fix and simplify memory leak in PD alloc
   a4fa249385b6 RDMA/qedr: Dispatch port active event from qedr_add
   c47538f61016 netfilter: nft_log: restrict the log prefix length to 127
   fefdd79403e8 netfilter: nf_tables: fix set->nelems counting with no NLM_F_EXCL
   f68a45776a62 tipc: fix nametbl_lock soft lockup at node/link events
   1d6e36d730ed tipc: add subscription refcount to avoid invalid delete
   9f8df4f86a3f tipc: fix connection refcount error
   c7a552e771cc tipc: ignore requests when the connection state is not CONNECTED
   2552e2c11575 ARCv2: smp-boot: wake_flag polling by non-Masters needs to be uncached
   8cb6045ec40d ARC: smp-boot: Decouple Non masters waiting API from jump to entry point
   ae36f6a65af6 vhost/vsock: handle vhost_vq_init_access() error
   b13b3b706a9d kernel/watchdog: prevent false hardlockup on overloaded system
   0ce66ee6aec1 kernel/watchdog.c: move shared definitions to nmi.h
   b969a240448b kernel/watchdog.c: move hardlockup detector to separate file
   dbd9eee1aaaf userfaultfd: fix SIGBUS resulting from false rwsem wakeups
   9618fba26499 proc: add a schedule point in proc_pid_readdir()
   e23b1c05a50f frv: add missing atomic64 operations
   918684681dc2 frv: add atomic64_add_unless()
   013bbbc3e902 romfs: use different way to generate fsid for BLOCK or MTD
   093d494c6d1d mn10300: fix build error of missing fpu_save()
   5e4cafca06bf usb: musb: Fix external abort on non-linefetch for musb_irq_work()
   fb72eca1333c sctp: sctp_addr_id2transport should verify the addr before looking up assoc
   bf812fe92683 sctp: sctp gso should set feature with NETIF_F_SG when calling skb_segment
   12a583ddf02a bnxt_en: Fix RTNL lock usage on bnxt_get_port_module_status().
   66deb409251c bnxt_en: Fix RTNL lock usage on bnxt_update_link().
   e89ffe41e9a6 bnxt_en: Enhance autoneg support.
   710ea9b028de bnxt_en: Fix bnxt_reset() in the slow path task.
   cb7188295d18 net-next: ethernet: mediatek: change the compatible string
   e9ace99c4bb0 r8152: avoid start_xmit to schedule napi when napi is disabled
   c1a7106b3b01 r8152: fix rtl8152_post_reset function
   9507910ca46d r8152: re-schedule napi for tx
   4242f0bce47e r8152: check rx after napi is enabled
   993ba7ffcf6e r8152: avoid start_xmit to call napi_schedule during autosuspend
   6149abe7f404 nvmet-rdma: Fix missing dma sync to nvme data structures
   5a0d41409b4d nfs: Fix "Don't increment lock sequence ID after NFS4ERR_MOVED"
   d16268259683 ravb: unmap descriptors when freeing rings
   47c362f147aa drm/ast: Fixed system hanged if disable P2A
   bfa4d2e461da drm/nouveau: Fix drm poll_helper handling
   c94e2edacea7 drm/nouveau: Don't enabling polling twice on runtime resume
   c7a29cf6c34a drm/nouveau: Handle fbcon suspend/resume in seperate worker
   d2beb1a9dd82 drm/nouveau: Rename acpi_work to hpd_work
   ef66745a1bd2 drm/nouveau: Intercept ACPI_VIDEO_NOTIFY_PROBE
   eb846414674c gtp: add genl family modules alias
   7dddbfcd96e2 net: phy: micrel: add support for KSZ8795
   2f970b437e86 parisc, parport_gsc: Fixes for printk continuation lines
   4038524f7fef net/mlx5: Return EOPNOTSUPP when failing to get steering name-space
   b445ecbdff83 net/mlx5: E-Switch, Err when retrieving steering name-space fails
   2bcbe747629e drm/i915: Check for NULL i915_vma in intel_unpin_fb_obj()
   e6549f36278c net: adaptec: starfire: add checks for dma mapping errors
   a15bbf44ab2f pinctrl: berlin-bg4ct: fix the value for "sd1a" of pin SCRD0_CRD_PRES
   326fdffd7078 drm: Don't race connector registration
   82b6693bd415 drm: prevent double-(un)registration for connectors
   d934fe02ba17 cec: fix wrong last_la determination
   62614714e30a pinctrl: baytrail: Rectify debounce support (part 2)
   3564d41e5c84 gianfar: synchronize DMA API usage by free_skb_rx_queue w/ gfar_new_page
   581e4003bf12 net/mlx4_core: Avoid command timeouts during VF driver device shutdown
   c33f1bd7f289 drm/nouveau/fence/g84-: protect against concurrent access to semaphore buffers
   cf336eea809d drm/nouveau: prevent userspace from deleting client object
   16f733d8db52 ipv6: fix flow labels when the traffic class is non-0
   0542f9791246 FS-Cache: Initialise stores_lock in netfs cookie
   34f1a4626bad fscache: Clear outstanding writes when disabling a cookie
   11696dcea282 fscache: Fix dead object requeue
   f4d2d05ffb8b net: fix ndo_features_check/ndo_fix_features comment ordering
   3a6ebd3f963c net: phy: Fix PHY module checks and NULL deref in phy_attach_direct()
   ea14fabd43a5 net: phy: Fix lack of reference count on PHY driver
   2fba4f5b70f3 ethtool: do not vzalloc(0) on registers dump
   8de6ea44af5c log2: make order_base_2() behave correctly on const input value zero
   5331baaeb7e6 kasan: respect /proc/sys/kernel/traceoff_on_warning
   8936b74fd339 shmem: fix sleeping from atomic context
   3ec4141c68de jump label: pass kbuild_cflags when checking for asm goto support
   36d9659cde0d PM / runtime: Avoid false-positive warnings from might_sleep_if()
   40f6d71c0a09 ARM: defconfigs: make NF_CT_PROTO_SCTP and NF_CT_PROTO_UDPLITE built-in
   1cadd394bbf9 ipv6: Fix IPv6 packet loss in scenarios involving roaming + snooping switches
   d536202202ee vfio/spapr_tce: Set window when adding additional groups to container
   d385ed7ad307 ipv6: addrconf: fix generation of new temporary addresses
   d7b2b380c08d net: thunderx: Fix PHY autoneg for SGMII QLM mode
   baaa84b43608 kernel/ucount.c: mark user_header with kmemleak_ignore()
   c419fe260b54 powerpc/powernv: Properly set "host-ipi" on IPIs
   47a5aabc3424 i2c: piix4: Fix request_region size
   c1a4306f24a0 i2c: piix4: Request the SMBUS semaphore inside the mutex
   7a6fcf38fabb sierra_net: Add support for IPv6 and Dual-Stack Link Sense Indications
   9217eeefee15 sierra_net: Skip validating irrelevant fields for IDLE LSIs
   bed8b8627a33 net: hns: Fix the device being used for dma mapping during TX
   008798746e6e NET: mkiss: Fix panic
   ae0b63eb344e ibmvnic: Initialize completion variables before starting work
   4544ba3173b7 ibmvnic: Call napi_disable instead of napi_enable in failure path
   74e24d1ea1a4 NET: Fix /proc/net/arp for AX.25
   2557969fb4f7 gfs2: Use rhashtable walk interface in glock_hash_walk
   44bc7cae6031 tipc: Fix tipc_sk_reinit race conditions
   cb351da6f2ba ipv6: Inhibit IPv4-mapped src address on the wire.
   12ec2560d467 ipv6: Handle IPv4-mapped src to in6addr_any dst.
   116589a5a7e0 tcp: tcp_probe: use spin_lock_bh()
   a2901d01a6c7 net: xilinx_emaclite: fix receive buffer overflow
   bff3001afae7 net: xilinx_emaclite: fix freezes due to unordered I/O
   65e72723add0 ibmvnic: Fix endian error when requesting device capabilities
   b5a1aa812a16 ibmvnic: Fix endian errors in error reporting output
   d864e675c789 netfilter: nf_conntrack_sip: fix wrong memory initialisation
   220b67a16fde partitions/msdos: FreeBSD UFS2 file systems are not recognized
   7a7b2d5f65a7 drm/i915: Prevent the system suspend complete optimization
   b372d35a5226 PCI/PM: Add needs_resume flag to avoid suspend complete optimization
   05afd4c0af6a Linux 4.9.32
   3eb235a1af14 netfilter: nft_set_rbtree: handle element re-addition after deletion
   a8fc3159ee2c cpufreq: schedutil: Fix per-CPU structure initialization in sugov_start()
   afe8d4a51c76 cpufreq: schedutil: move cached_raw_freq to struct sugov_policy
   09fcb3561d9e drm/i915/vbt: split out defaults that are set when there is no VBT
   555c443a1ab9 drm/i915/vbt: don't propagate errors from intel_bios_init()
   a6a7d8ade88c usercopy: Adjust tests to deal with SMAP/PAN
   eefa5e13dff9 ARM: 8637/1: Adjust memory boundaries after reservations
   1df21f45fd55 ARM: 8636/1: Cleanup sanity_check_meminfo
   9e09d90ac5ac arm64: entry: improve data abort handling of tagged pointers
   1d61ccb5ac27 arm64: hw_breakpoint: fix watchpoint matching for tagged pointers
   791d94ef40f6 arm64: traps: fix userspace cache maintenance emulation on a tagged pointer
   d95202487334 serial: sh-sci: Fix panic when serial console and DMA are enabled
   9ff4a1a36a58 drivers: char: mem: Fix wraparound check to allow mappings up to the end
   106c77e82572 cpu/hotplug: Drop the device lock on error
   eb8fa317cb01 ASoC: Fix use-after-free at card unregistration
   82ecd2f054bd ALSA: timer: Fix missing queue indices reset at SNDRV_TIMER_IOCTL_SELECT
   66e982d8f1a1 ALSA: timer: Fix race between read and ioctl
   aae14f569f5d drm/nouveau/tmr: fully separate alarm execution/pending lists
   7860d0e5e2bf drm/vmwgfx: Make sure backup_handle is always valid
   a76ff847013a drm/vmwgfx: limit the number of mip levels in vmw_gb_surface_define_ioctl()
   64c21af51d71 drm/vmwgfx: Handle vmalloc() failure in vmw_local_fifo_reserve()
   3743c0e1276d perf/core: Drop kernel samples even though :u is specified
   6e6d89e18e53 powerpc/kernel: Initialize load_tm on task creation
   2cfdf4fd3292 powerpc/kernel: Fix FP and vector register restoration
   cbf687acc1e1 powerpc/hotplug-mem: Fix missing endian conversion of aa_index
   b4624ff952ec powerpc/numa: Fix percpu allocations to be NUMA aware
   bb0a300f18ce powerpc/sysdev/simple_gpio: Fix oops in gpio save_regs function
   59d9a40b5839 scsi: qla2xxx: Fix mailbox pointer error in fwdump capture
   64dc431432ec scsi: qla2xxx: Set bit 15 for DIAG_ECHO_TEST MBC
   ab2b484e8038 scsi: qla2xxx: Modify T262 FW dump template to specify same start/end to debug customer issues
   fe42472e53eb scsi: qla2xxx: don't disable a not previously enabled PCI device
   f75e09ebd3e4 KVM: arm/arm64: Handle possible NULL stage2 pud when ageing pages
   66d6448475c6 btrfs: fix memory leak in update_space_info failure path
   4d15ab90ec2b btrfs: use correct types for page indices in btrfs_page_exists_in_range
   3fd1233dabd5 cxl: Avoid double free_irq() for psl,slice interrupts
   172c70d1cd82 cxl: Fix error path on bad ioctl
   84bef90a454f ufs_getfrag_block(): we only grab ->truncate_mutex on block creation path
   3d4922b5bb5b ufs_extend_tail(): fix the braino in calling conventions of ufs_new_fragments()
   55a00f816bd7 ufs: set correct ->s_maxsize
   aed005fb7956 ufs: restore maintaining ->i_blocks
   bf7bfef3eee3 fix ufs_isblockset()
   4896c87d2464 ufs: restore proper tail allocation
   61604a2626a3 fs: add i_blocksize()
   829a1cab22c4 cpuset: consider dying css as offline
   5aa8f833ca78 Input: elantech - add Fujitsu Lifebook E546/E557 to force crc_enabled
   dff4c8bb1397 cgroup: Prevent kill_css() from being called more than once
   b59ec7072c84 ahci: Acer SA5-271 SSD Not Detected Fix
   b3a42bb630bd drm/msm: Expose our reservation object when exporting a dmabuf.
   974a4eb16e84 target: Re-add check to reject control WRITEs with overflow data
   96d7b43b42ba cpufreq: cpufreq_register_driver() should return -ENODEV if init fails
   acd8f9173960 mei: make sysfs modalias format similar as uevent modalias
   716dd37398ad iio: proximity: as3935: fix iio_trigger_poll issue
   bad3b49b01aa iio: proximity: as3935: fix AS3935_INT mask
   8067c911c5e9 iio: light: ltr501 Fix interchanged als/ps register field
   e33679f994db iio: adc: bcm_iproc_adc: swap primary and secondary isr handler's
   c5a8004434f0 staging/lustre/lov: remove set_fs() call from lov_getstripe()
   5404b0c0ea85 usb: chipidea: debug: check before accessing ci_role
   59db536f5812 usb: chipidea: udc: fix NULL pointer dereference if udc_start failed
   405ac24a0aec usb: gadget: f_mass_storage: Serialize wake and sleep execution
   1308eeec2fc5 drm: Fix oops + Xserver hang when unplugging USB drm devices
   c404f0dee7a8 ext4: fix fdatasync(2) after extent manipulation operations
   2e16921d1743 ext4: fix data corruption with EXT4_GET_BLOCKS_ZERO
   9890b9cb75c9 ext4: keep existing extra fields when inode expands
   9850844e0a0e ext4: fix SEEK_HOLE
   9636c086532b xen/privcmd: Support correctly 64KB page granularity when mapping memory
   08229c119c42 cfq-iosched: fix the delay of cfq_group's vdisktime under iops mode
   1f67d28d2707 dmaengine: mv_xor_v2: set DMA mask to 40 bits
   eb5afaba6177 dmaengine: mv_xor_v2: remove interrupt coalescing
   b2c8bb06bc83 dmaengine: mv_xor_v2: fix tx_submit() implementation
   0d0918504a96 dmaengine: mv_xor_v2: enable XOR engine after its configuration
   e2a092eab8a5 dmaengine: mv_xor_v2: do not use descriptors not acked by async_tx
   67b1684c4a5e dmaengine: mv_xor_v2: properly handle wrapping in the array of HW descriptors
   f08c84d4c745 dmaengine: mv_xor_v2: handle mv_xor_v2_prep_sw_desc() error properly
   f2e9d10bf1a2 dmaengine: ep93xx: Don't drain the transfers in terminate_all()
   b7e7a4d52a95 dmaengine: ep93xx: Always start from BASE0
   cd0ef520aa70 dmaengine: usb-dmac: Fix DMAOR AE bit definition
   3e7a76b290f1 KVM: arm/arm64: vgic-v2: Do not use Active+Pending state for a HW interrupt
   2a5c08a4d3fe KVM: arm/arm64: vgic-v3: Do not use Active+Pending state for a HW interrupt
   81555e45852a KVM: async_pf: avoid async pf injection when in guest mode
   85c19308cb37 arm: KVM: Allow unaligned accesses at HYP
   8abce1e49c82 arm64: KVM: Allow unaligned accesses at EL2
   b9824dd75fcf arm64: KVM: Preserve RES1 bits in SCTLR_EL2
   19c9a115085e KVM: cpuid: Fix read/write out-of-bounds vulnerability in cpuid emulation
   78f87ce2a17f kvm: async_pf: fix rcu_irq_enter() with irqs enabled
   4809f0e56d98 efi: Don't issue error message when booted under Xen
   e273ed246617 nfsd: Fix up the "supattr_exclcreat" attributes
   bfeac838043f nfsd4: fix null dereference on replay
   34bae9b3ba98 drm/amdgpu/ci: disable mclk switching for high refresh rates (v2)
   d4783eb9f082 crypto: gcm - wait for crypto op not signal safe
   2d0280070e6c crypto: drbg - wait for crypto op not signal safe
   d24c1c1977d8 KEYS: encrypted: avoid encrypting/decrypting stack buffers
   24369761029a KEYS: fix freeing uninitialized memory in key_update()
   1b253e023f8f KEYS: fix dereferencing NULL payload with nonzero length
   0e479742e8d1 crypto: asymmetric_keys - handle EBUSY due to backlog correctly
   7c24a70c70b7 ptrace: Properly initialize ptracer_cred on fork
   3802abc6e0df serial: ifx6x60: fix use-after-free on module unload
   04ac452dadbf arch/sparc: support NR_CPUS = 4096
   433a50e681df sparc64: delete old wrap code
   b6bb22de0c9e sparc64: new context wrap
   975f3cdc3915 sparc64: add per-cpu mm of secondary contexts
   7932bfad0e82 sparc64: redefine first version
   65e3443b61a8 sparc64: combine activate_mm and switch_mm
   e7590a1b15c8 sparc64: reset mm cpumask after wrap
   b3ad7a3e57b3 sparc: Machine description indices can vary
   8d665e039e66 sparc64: mm: fix copy_tsb to correctly copy huge page TSBs
   4b684e6474d0 sparc64: Add __multi3 for gcc 7.x and later.
   0255284edddc net: bridge: start hello timer only if device is up
   3dd4daf112fd net: stmmac: fix completely hung TX when using TSO
   a83564d12863 net: ethoc: enable NAPI before poll may be scheduled
   a97f807363d4 net/ipv6: Fix CALIPSO causing GPF with datagram support
   0aa89f1b07de net: ping: do not abuse udp_poll()
   599a4478d8cb ipv6: Fix leak in ipv6_gso_segment().
   c242e1a8140e vxlan: fix use-after-free on deletion
   3ee35b96825e tcp: disallow cwnd undo when switching congestion control
   61c92d5a533c cxgb4: avoid enabling napi twice to the same queue
   abbcb731d69c ipv6: xfrm: Handle errors reported by xfrm6_find_1stfragopt()
   b5e9b7ad0dd4 vxlan: eliminate cached dst leak
   96d145216b58 bnx2x: Fix Multi-Cos

(From OE-Core rev: d9d950bd48566e5a2e92ad4a2fd943ad828fb8df)

(From OE-Core rev: 0a8c61d2351de7536c817242b0844e36dfe8b334)

Signed-off-by: Bruce Ashfield <bruce.ashfield@windriver.com>
Signed-off-by: Ross Burton <ross.burton@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>

Minor fixup for kernal-cache hash
Signed-off-by: Armin Kuster <akuster808@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-09-11 22:15:59 +01:00
Bruce Ashfield
5ec4c63573 linux-yocto/4.1: update to v4.1.42
Integrating the korg -stable update that comprises the following
commits:

   2ac51e21d8c5 Linux 4.1.42
   dcda279dede7 mm: fix new crash in unmapped_area_topdown()
   8b18c6b2a0dd mm: larger stack guard gap, between vmas
   55e6060ddd5f alarmtimer: Rate limit periodic intervals
   cedbfb3dc38c MIPS: Fix bnezc/jialc return address calculation
   d490b0caf87f usb: dwc3: exynos fix axius clock error path to do cleanup
   61e04a644bd8 genirq: Release resources in __setup_irq() error path
   ec8376b633c9 swap: cond_resched in swap_cgroup_prepare()
   331720703ebb mm/memory-failure.c: use compound_head() flags for huge pages
   e28840566853 USB: gadgetfs, dummy-hcd, net2280: fix locking for callbacks
   7ed474c302c1 usb: xhci: ASMedia ASM1042A chipset need shorts TX quirk
   235efbf2e58c drivers/misc/c2port/c2port-duramar2150.c: checking for NULL instead of IS_ERR()
   d5db08763ef2 usb: r8a66597-hcd: decrease timeout
   152c8dcf311c usb: r8a66597-hcd: select a different endpoint on timeout
   08e1f9869489 USB: gadget: dummy_hcd: fix hub-descriptor removable fields
   0758e6a95a00 [media] pvrusb2: reduce stack usage pvr2_eeprom_analyze()
   bdc69cc86e01 usb: core: fix potential memory leak in error path during hcd creation
   11f00c7e1194 USB: hub: fix SS max number of ports
   e507356624f1 iio: proximity: as3935: recalibrate RCO after resume
   fe9474901810 staging: rtl8188eu: prevent an underflow in rtw_check_beacon_data()
   94bfe4f31f46 mfd: omap-usb-tll: Fix inverted bit use for USB TLL mode
   49919278f4ce x86/mm/32: Set the '__vmalloc_start_set' flag in initmem_init()
   daccc774edf2 serial: efm32: Fix parity management in 'efm32_uart_console_get_options()'
   394dc0f7c2ae mac80211: don't send SMPS action frame in AP mode when not needed
   8373afb6cb12 mac80211: fix IBSS presp allocation size
   26e7f9d274cf mac80211: fix CSA in IBSS mode
   5125e4a41299 mac80211/wpa: use constant time memory comparison for MACs
   1a8dacfbbbe7 mac80211: don't look at the PM bit of BAR frames
   61df07cce8eb [media] vb2: Fix an off by one error in 'vb2_plane_vaddr'
   6ea9210c046f can: gs_usb: fix memory leak in gs_cmd_reset()
   d30248c41364 configfs: Fix race between create_link and configfs_rmdir
   9307fb9f34e1 sparc64: make string buffers large enough
   b865f707d7c6 xtensa: don't use linux IRQ #0
   ddda59580e10 tipc: ignore requests when the connection state is not CONNECTED
   1b98bab153c7 proc: add a schedule point in proc_pid_readdir()
   a20b7cab8735 romfs: use different way to generate fsid for BLOCK or MTD
   3e335922279b mn10300: fix build error of missing fpu_save()
   86e9b2ee9cc6 sctp: sctp_addr_id2transport should verify the addr before looking up assoc
   5fbc861ad7eb r8152: re-schedule napi for tx
   41e0083c7ddb drm/ast: Fixed system hanged if disable P2A
   9b50bb2bc343 drm/nouveau: Don't enabling polling twice on runtime resume
   c29b8f7d2d1e parisc, parport_gsc: Fixes for printk continuation lines
   8cc579971086 net: adaptec: starfire: add checks for dma mapping errors
   6d43352435ba net/mlx4_core: Avoid command timeouts during VF driver device shutdown
   295a19f594e8 drm/nouveau/fence/g84-: protect against concurrent access to semaphore buffers
   510c29634e35 fscache: Clear outstanding writes when disabling a cookie
   42c32ac3cec6 ethtool: do not vzalloc(0) on registers dump
   eaabe4b74095 log2: make order_base_2() behave correctly on const input value zero
   8bc30cf03ca1 kasan: respect /proc/sys/kernel/traceoff_on_warning
   acd666657821 jump label: pass kbuild_cflags when checking for asm goto support
   cb2098ab876e PM / runtime: Avoid false-positive warnings from might_sleep_if()
   d3121ad14562 ARM: defconfigs: make NF_CT_PROTO_SCTP and NF_CT_PROTO_UDPLITE built-in
   4c8eb6278488 ipv6: Fix IPv6 packet loss in scenarios involving roaming + snooping switches
   0def8e45d25f sierra_net: Add support for IPv6 and Dual-Stack Link Sense Indications
   0c2950fa861d sierra_net: Skip validating irrelevant fields for IDLE LSIs
   a9cbb7cd1868 NET: mkiss: Fix panic
   d914dc3b811d NET: Fix /proc/net/arp for AX.25
   68978d69ea6f ipv6: Inhibit IPv4-mapped src address on the wire.
   197082364320 ipv6: Handle IPv4-mapped src to in6addr_any dst.
   dd4d061cf1f6 net: xilinx_emaclite: fix receive buffer overflow
   742e7978eaba net: xilinx_emaclite: fix freezes due to unordered I/O
   afae1d9da32e partitions/msdos: FreeBSD UFS2 file systems are not recognized
   7f6abe4c0560 PCI/PM: Add needs_resume flag to avoid suspend complete optimization
   cd1c4f855f68 usercopy: Adjust tests to deal with SMAP/PAN
   9da808668b58 arm64: entry: improve data abort handling of tagged pointers
   47e49f2d1eda drivers: char: mem: Fix wraparound check to allow mappings up to the end
   bb3556c1d155 ASoC: Fix use-after-free at card unregistration
   88c41586db86 ALSA: timer: Fix missing queue indices reset at SNDRV_TIMER_IOCTL_SELECT
   5d28ba6eecde ALSA: timer: Fix race between read and ioctl
   29837be8e922 drm/vmwgfx: Handle vmalloc() failure in vmw_local_fifo_reserve()
   d6f90404eaa0 perf/core: Drop kernel samples even though :u is specified
   f44556278b79 powerpc/hotplug-mem: Fix missing endian conversion of aa_index
   7ee9689e6b68 powerpc/numa: Fix percpu allocations to be NUMA aware
   eecbbd835e2e scsi: qla2xxx: don't disable a not previously enabled PCI device
   4a213a0fe0b3 KVM: arm/arm64: Handle possible NULL stage2 pud when ageing pages
   951269f95603 btrfs: fix memory leak in update_space_info failure path
   d42014c8d4ce btrfs: use correct types for page indices in btrfs_page_exists_in_range
   cc558c203ce1 cxl: Fix error path on bad ioctl
   c58e11d1da35 ufs: set correct ->s_maxsize
   7ba100d53ebc fix ufs_isblockset()
   7f8053503ed2 cpuset: consider dying css as offline
   51037ec2ee8e iio: proximity: as3935: fix AS3935_INT mask
   60e9d774dc8e staging/lustre/lov: remove set_fs() call from lov_getstripe()
   6f4f7e81b18e usb: chipidea: debug: check before accessing ci_role
   9738b3df00b1 usb: chipidea: udc: fix NULL pointer dereference if udc_start failed
   db87e41d61aa usb: gadget: f_mass_storage: Serialize wake and sleep execution
   926295793364 ext4: keep existing extra fields when inode expands
   4d1adc2ada19 ext4: fix SEEK_HOLE
   8406f302e985 KVM: async_pf: avoid async pf injection when in guest mode
   fdb67b2a3a16 arm: KVM: Allow unaligned accesses at HYP
   1e8dabb6aa14 KVM: cpuid: Fix read/write out-of-bounds vulnerability in cpuid emulation
   702eb8d270f2 kvm: async_pf: fix rcu_irq_enter() with irqs enabled
   4b1bf4b008ca nfsd4: fix null dereference on replay
   026ed759f4f4 crypto: gcm - wait for crypto op not signal safe
   e02ed52dd2d3 KEYS: fix freeing uninitialized memory in key_update()
   a38f69cb4a22 ptrace: Properly initialize ptracer_cred on fork
   94d53c5028a3 arch/sparc: support NR_CPUS = 4096
   252bf31f5d91 sparc64: delete old wrap code
   0837a0481106 sparc64: new context wrap
   169dc5fd241d sparc64: add per-cpu mm of secondary contexts
   ccadb4e680e9 sparc64: redefine first version
   5203c6c92724 sparc64: combine activate_mm and switch_mm
   317a444875fd sparc64: reset mm cpumask after wrap
   a2334e23c296 sparc: Machine description indices can vary
   8ee93884863e sparc64: mm: fix copy_tsb to correctly copy huge page TSBs
   246fa51013e3 net: ethoc: enable NAPI before poll may be scheduled
   169a7e245c7f net: ping: do not abuse udp_poll()
   59dc08f8f5e7 ipv6: Fix leak in ipv6_gso_segment().
   f257e5d318a5 tcp: disallow cwnd undo when switching congestion control
   fa95ca65fb86 cxgb4: avoid enabling napi twice to the same queue
   cd276bb4fe54 ipv6: xfrm: Handle errors reported by xfrm6_find_1stfragopt()
   e616f6da095e bnx2x: Fix Multi-Cos
   d600ccd7fd21 xfs: fix unaligned access in xfs_btree_visit_blocks
   20d07bb1567a xfs: bad assertion for delalloc an extent that start at i_size
   45ed7e2f2f82 xfs: fix indlen accounting error on partial delalloc conversion
   1a229fd5ae97 xfs: wait on new inodes during quotaoff dquot release
   b822f03516c9 xfs: update ag iterator to support wait on new inodes
   821afaaed81d xfs: support ability to wait on new inodes
   9b1260c216af xfs: fix up quotacheck buffer list error handling
   022e9b0e554b xfs: prevent multi-fsb dir readahead from reading random blocks
   641967d1f903 xfs: handle array index overrun in xfs_dir2_leaf_readbuf()
   17d031b4add7 xfs: fix over-copying of getbmap parameters from userspace
   74d27999c51e xfs: use dedicated log worker wq to avoid deadlock with cil wq
   ddf2f45b3344 xfs: fix kernel memory exposure problems
   9bf638a08ad2 mm/migrate: fix refcount handling when !hugepage_migration_supported()
   c7dbf874d6b5 drm/radeon/ci: disable mclk switching for high refresh rates (v2)
   9fcaaa87e08c fs/ufs: Set UFS default maximum bytes per file
   b36188f229d6 sparc: Fix -Wstringop-overflow warning
   80f68f7daeb3 sctp: fix ICMP processing if skb is non-linear
   01426eb3503d tcp: avoid fastopen API to be used on AF_UNSPEC
   a10f1d6ad744 virtio-net: enable TSO/checksum offloads for Q-in-Q vlans
   a05aec67cd6b be2net: Fix offload features for Q-in-Q packets
   b7b05a3b40e8 vlan: Fix tcp checksum offloads in Q-in-Q vlans
   d78ddec4e7fb ipv6: fix out of bound writes in __ip6_append_data()
   acf388f77791 qmi_wwan: add another Lenovo EM74xx device ID
   7144c12e891d ipv6: Check ip6_find_1stfragopt() return value properly.
   e7f05ff30b0c ipv6: Prevent overrun when parsing v6 header options
   3e674773cb5e tcp: eliminate negative reordering in tcp_clean_rtx_queue
   e7b4f3d39f46 sctp: do not inherit ipv6_{mc|ac|fl}_list from parent
   61d62ee79cec tcp: avoid fragmenting peculiar skbs in SACK
   93dcd4929d18 net: fix compile error in skb_orphan_partial()
   7a230cfdf208 netem: fix skb_orphan_partial()
   8404b686a33c s390/qeth: avoid null pointer dereference on OSN
   89b9ca1dd7d0 s390/qeth: unbreak OSM and OSN support
   0b651772fed7 s390/qeth: handle sysfs error during initialization
   4e0ecb773276 dccp/tcp: do not inherit mc_list from parent
   4bd4cfc5210e Linux 4.1.41
   c1dd3f51ad77 mm/huge_memory.c: respect FOLL_FORCE/FOLL_COW for thp
   afeb39160249 xc2028: Fix use-after-free bug properly
   5eef36af5974 iio: proximity: as3935: fix as3935_write
   e8701e0f6768 ipx: call ipxitf_put() in ioctl error path
   709dcf11a353 sched/fair: Initialize throttle_count for new task-groups lazily
   0f665ed5581f sched/fair: Do not announce throttled next buddy in dequeue_task_fair()
   953334de0819 iio: dac: ad7303: fix channel description
   60e2e499e37d mwifiex: pcie: fix cmd_buf use-after-free in remove/reset
   036ab4111761 rtlwifi: rtl8821ae: setup 8812ae RFE according to device type
   df8198865a0f ARM: tegra: paz00: Mark panel regulator as enabled on boot
   fda7c899dd76 fs/xattr.c: zero out memory copied to userspace in getxattr
   273225634fef vfio/type1: Remove locked page accounting workqueue
   358fa411ba9a crypto: algif_aead - Require setkey before accept(2)
   e0b7d5eae185 staging: gdm724x: gdm_mux: fix use-after-free on module unload
   47655216cdf4 drm/ttm: fix use-after-free races in vm fault handling
   46527f8d11fa f2fs: sanity check segment count
   2b674f4ecce8 ipv6: reorder ip6_route_dev_notifier after ipv6_dev_notf
   4aaeda7f5c4f ipv6: initialize route null entry in addrconf_init()
   1d9afaa5c0a8 rtnetlink: NUL-terminate IFLA_PHYS_PORT_NAME string
   226d200531f4 ipv4, ipv6: ensure raw socket message is big enough to hold an IP header
   14e82f4ce5bb tcp: fix wraparound issue in tcp_lp
   38853e5c3775 tcp: do not underestimate skb->truesize in tcp_trim_head()
   918d8536e126 ALSA: hda - Fix deadlock of controller device lock at unbinding
   1c370084c6f3 staging: emxx_udc: remove incorrect __init annotations
   8602853345b7 staging: wlan-ng: add missing byte order conversion
   bd253cf63929 brcmfmac: Make skb header writable before use
   c4efbc9ce69d brcmfmac: Ensure pointer correctly set if skb data location changes
   62494116045e MIPS: R2-on-R6 MULTU/MADDU/MSUBU emulation bugfix
   48ea252abd40 scsi: mac_scsi: Fix MAC_SCSI=m option when SCSI=m
   ddfc6a095d10 serial: 8250_omap: Fix probe and remove for PM runtime
   2c7105e86e3d USB: serial: io_edgeport: fix descriptor error handling
   00f244650faf USB: serial: mct_u232: fix modem-status error handling
   0379d54281fc USB: serial: quatech2: fix control-message error handling
   e2eaebce9d20 USB: serial: ftdi_sio: fix latency-timer error handling
   e7ccc604153b USB: serial: ark3116: fix open error handling
   b5b985c3a0bd USB: serial: ti_usb_3410_5052: fix control-message error handling
   dc7697bad3f6 USB: serial: io_edgeport: fix epic-descriptor handling
   4e78688b4cb3 USB: serial: ssu100: fix control-message error handling
   0f5e27457f1a USB: serial: digi_acceleport: fix incomplete rx sanity check
   5d7985765271 USB: serial: keyspan_pda: fix receive sanity checks
   9de980a19940 usb: host: ohci-exynos: Decrese node refcount on exynos_ehci_get_phy() error paths
   08fd577b4b0f usb: host: ehci-exynos: Decrese node refcount on exynos_ehci_get_phy() error paths
   0a9f0af48e3f KVM: nVMX: initialize PML fields in vmcs02
   4736ccc83dfc Revert "KVM: nested VMX: disable perf cpuid reporting"
   7a07dbb8c25c x86/platform/intel-mid: Correct MSI IRQ line for watchdog device
   92e01bd47512 kprobes/x86: Fix kernel panic when certain exception-handling addresses are probed
   19d416eaccbb x86/pci-calgary: Fix iommu_free() comparison of unsigned expression >= 0
   ae0f7bd8e226 mwifiex: Avoid skipping WEP key deletion for AP
   34390bea46f7 mwifiex: remove redundant dma padding in AMSDU
   a5a09b34dab1 mwifiex: debugfs: Fix (sometimes) off-by-1 SSID print
   039747b6ef2d power: supply: bq24190_charger: Install irq_handler_thread() at end of probe()
   f3b0fe6bfcbf power: supply: bq24190_charger: Call set_mode_host() on pm_resume()
   0ba15a289c67 power: supply: bq24190_charger: Fix irq trigger to IRQF_TRIGGER_FALLING
   ab1b642339b3 powerpc/powernv: Fix opal_exit tracepoint opcode
   5d1767ceff1f cpupower: Fix turbo frequency reporting for pre-Sandy Bridge cores
   16968228efa5 9p: fix a potential acl leak
   c41e1ba87961 net: tg3: avoid uninitialized variable warning
   95660aa2822d mtd: avoid stack overflow in MTD CFI code
   b9e4b97eb9a0 drbd: avoid redefinition of BITS_PER_PAGE
   1de253cbd35b ALSA: ppc/awacs: shut up maybe-uninitialized warning
   db14464180fa timerfd: Protect the might cancel mechanism proper
   11d54db42149 ftrace/x86: Fix triple fault with graph tracing and suspend-to-ram
   77ded373242b ipv6: check raw payload size correctly in ioctl
   0c8f1722d1d6 ip6mr: fix notification device destruction
   7f4ab2ced0a7 netpoll: Check for skb->queue_mapping
   74c4460b6482 sctp: listen on the sock only when it's state is listening or closed
   7d1a0fdd41f8 net: ipv4: fix multipath RTM_GETROUTE behavior when iif is given
   6824dcd302fd l2tp: take reference on sessions being dumped
   cc09115fb0b9 net/packet: fix overflow in check for tp_reserve
   fed853407cc2 net/packet: fix overflow in check for tp_frame_nr
   9ba240219c96 l2tp: purge socket queues in the .destruct() callback
   28bad8a652e9 net: phy: handle state correctly in phy_stop_machine
   b39245e33e95 net: neigh: guard against NULL solicit() method
   9ffb20a69946 sparc64: Fix kernel panic due to erroneous #ifdef surrounding pmd_write()
   1acc886c425e sparc64: kern_addr_valid regression
   5023f12103b9 xen/x86: don't lose event interrupts
   b64d082304fe usb: gadget: f_midi: Fixed a bug when buflen was smaller than wMaxPacketSize
   e7211d1ff579 RDS: Fix the atomicity for congestion map update
   92bf6b466b99 MIPS: Fix crash registers on non-crashing CPUs
   d0388c0e2556 md:raid1: fix a dead loop when read from a WriteMostly disk
   f364181f7aa2 crypto: testmgr - fix out of bound read in __test_aead()
   9800a9a4b17a [media] xc2028: unlock on error in xc2028_set_config()
   c5ef0e9f70d1 f2fs: do more integrity verification for superblock
   5f1cef9e823a ping: implement proper locking
   9c90c093b98f staging/android/ion : fix a race condition in the ion driver
   073e9973d48b vfio/pci: Fix integer overflows, bitmask check
   e21b00fe6cc7 [media] xc2028: avoid use after free
   c8580e3dcd00 tipc: fix random link resets while adding a second bearer
   5eb668f8442e gfs2: avoid uninitialized variable warning
   6013c31fb7e1 hostap: avoid uninitialized variable use in hfa384x_get_rid
   56c3cd096747 tty: nozomi: avoid a harmless gcc warning
   39a978c3e192 tipc: re-enable compensation for socket receive buffer double counting
   0c28e96f0fec block: fix del_gendisk() vs blkdev_ioctl crash
   0c4670d5a6a4 Drivers: hv: balloon: account for gaps in hot add regions
   2cbbeec3e5a7 Drivers: hv: balloon: keep track of where ha_region starts
   5b9ab933c369 x86/mce/AMD: Give a name to MCA bank 3 when accessed with legacy MSRs
   749cab856042 Drivers: hv: vmbus: Reduce the delay between retries in vmbus_post_msg()
   38f9c4b9176a Drivers: hv: don't leak memory in vmbus_establish_gpadl()
   9f4a8ebb750b net: ipv6: check route protocol when deleting routes
   5ce729a895b0 tty/serial: atmel: RS485 half duplex w/DMA: enable RX after TX is done
   9d86a569dbd7 catc: Use heap buffer for memory size test
   4d7726afea37 catc: Combine failure cleanup code in catc_probe()
   61bd90b31be7 rtl8150: Use heap buffers for all register access
   7b69bee71416 pegasus: Use heap buffers for all register access
   0dd8a4702cbc virtio-console: avoid DMA from stack
   eb618d2eb22b mm: Tighten x86 /dev/mem with zeroing reads
   187887b3dbae rtc: tegra: Implement clock handling
   ea215d798bc2 platform/x86: acer-wmi: setup accelerometer when machine has appropriate notify event
   4473dc376c48 [media] dvb-usb-v2: avoid use-after-free
   68e9c254f662 kvm: fix page struct leak in handle_vmon
   f800bcede54d char: lack of bool string made CONFIG_DEVPORT always on
   d1cdf638cde8 char: Drop bogus dependency of DEVPORT on !M68K
   6d1174d8ff9d net/mlx4_core: Fix when to save some qp context flags for dynamic VST to VGT transitions
   8a8878b16056 net/mlx4_en: Fix bad WQE issue
   037948b4f092 usb: hub: Wait for connection to be reestablished after port reset
   dd07486ceba4 net/packet: fix overflow in check for priv area size
   c9d0eb33ba82 MIPS: Select HAVE_IRQ_EXIT_ON_IRQ_STACK
   cd7de3163c8c MIPS: Only change $28 to thread_info if coming from user mode
   aa7ae7fee5d6 mtd: bcm47xxpart: fix parsing first block after aligned TRX
   1669925abfce usb: dwc3: gadget: delay unmap of bounced requests
   aa612d59c08f mm/mempolicy.c: fix error handling in set_mempolicy and mbind.
   00fc586ea741 mlock: fix mlock count can not decrease in race condition
   001360714b85 mm/memory-failure: introduce get_hwpoison_page() for consistent refcount handling
   da7cbd0c660c mm/memory-failure: split thp earlier in memory error handling
   aeb3435b4987 slub/memcg: cure the brainless abuse of sysfs attributes
   afc6ec14b863 blkcg: use blkg_free() in blkcg_init_queue() failure path
   f9fac98fc753 blkcg: always create the blkcg_gq for the root blkcg
   712b6a6dceb2 iscsi-target: Use shash and ahash
   1bd31de39e62 target/iscsi: Use proper SGL accessors for digest computation
   89ff28d0d690 iscsi-target: Fix initial login PDU asynchronous socket close OOPs
   09cb399b6219 target/iscsi: Fix indentation in iscsi_target_start_negotiation()
   68185cb17f7e iscsi-target: Fix early sk_data_ready LOGIN_FLAGS_READY race
   5df474e63ca5 cpufreq: cpufreq_register_driver() should return -ENODEV if init fails
   7e144ca4d77a drm/msm: Expose our reservation object when exporting a dmabuf.
   7e185e0063bc xfs: Fix missed holes in SEEK_HOLE implementation
   59acce815cd6 xfs: fix off-by-one on max nr_pages in xfs_find_get_desired_pgoff()
   b96e5f18eb81 drm/radeon: Unbreak HPD handling for r600+
   81402e4033a7 dmaengine: ep93xx: Don't drain the transfers in terminate_all()
   1a45b842de71 dmaengine: ep93xx: Always start from BASE0
   72a5ed836013 drm/gma500/psb: Actually use VBT mode when it is found
   4f268a106e88 PCI / PM: Avoid resuming more devices during system suspend
   b060ae49eb94 PCI: Add quirk for Intel DH895xCC VF PCI config erratum
   e0bda32c5bc5 ALSA: hda - apply STAC_9200_DELL_M22 quirk for Dell Latitude D430
   9dbe42c5ae46 mmc: sdhci-iproc: suppress spurious interrupt with Multiblock read
   0210333e202b i2c: i2c-tiny-usb: fix buffer not being DMA capable
   8852d28b3f06 x86/mce: Don't use percpu workqueues
   94d42e8811f4 osf_wait4(): fix infoleak
   156c18c7d9ed KVM: X86: Fix read out-of-bounds vulnerability in kvm pio emulation
   e8b80de6d76e watchdog: pcwd_usb: fix NULL-deref at probe
   9ef27e6ccbe0 drivers: char: mem: Check for address space wraparound with mmap()
   682182e924ea serial: core: fix crash in uart_suspend_port
   b614900e0650 tty: Fix GPF in flush_to_ldisc()
   2e279b7d786c tty: fix data race in flush_to_ldisc
   3e984ccc90f8 serial: ifx6x60: fix use-after-free on module unload
   191c13c554e5 serial: ifx6x60: Remove dangerous spi_driver casts
   95a639d15067 Revert "tty_port: register tty ports with serdev bus"
   1520f7e76d45 tty_port: register tty ports with serdev bus
   0095625438b2 usb: musb: tusb6010_omap: Do not reset the other direction's packet size
   d7cc01aa1796 usb: host: xhci-plat: propagate return value of platform_get_irq()
   1458bfaae6c8 USB: xhci: fix lock-inversion problem
   a0334d0ba6ad usb: host: xhci: simplify irq handler return
   8732affeaf37 usb: host: xhci-mem: allocate zeroed Scratchpad Buffer
   2f68fe68ad96 xhci: apply PME_STUCK_QUIRK and MISSING_CAS quirk for Denverton
   e17762c03b3e tracing/kprobes: Enforce kprobes teardown after testing
   78de28c67c8f of: fdt: add missing allocation-failure check
   ac38837324c2 USB: serial: qcserial: add more Lenovo EM74xx device IDs
   2a3835ffa5ed USB: hub: fix non-SS hub-descriptor handling
   c5922c99f193 USB: hub: fix SS hub-descriptor handling
   de90980c52da USB: iowarrior: fix info ioctl on big-endian hosts
   46b3a375a926 uwb: fix device quirk on big-endian hosts
   8ace7b038603 USB: core: replace %p with %pK
   083112faaf11 USB: ene_usb6250: fix DMA to the stack
   a3670852d2fb USB: serial: ftdi_sio: add Olimex ARM-USB-TINY(H) PIDs
   d0e929a4e63f char: lp: fix possible integer overflow in lp_setup()
   da6d8dbb5da7 dm bufio: make the parameter "retain_bytes" unsigned long
   b9805634c6de genirq: Introduce struct irq_common_data to host shared irq data
   073bc325fdc4 usb: dwc3: make dwc3_debugfs_init return value be void
   83204fd38a02 kvm arm: Move fake PGD handling to arch specific files
   060e39373d8a ARM: KVM: Remove pointless void pointer cast
   0bef2bd6fa64 dmaengine: usb-dmac: Fix DMAOR AE bit definition
   873bdf5cd492 dm space map disk: fix some book keeping in the disk space map
   a42b975f484e dm thin metadata: call precommit before saving the roots
   2cd394cd1046 USB: serial: io_ti: fix div-by-zero in set_termios
   a1dfb5701675 USB: serial: mct_u232: fix big-endian baud-rate handling
   391f2e944624 USB: serial: ftdi_sio: fix setting latency for unprivileged users
   048a9813c3e5 usb: serial: option: add Telit ME910 support
   092c6f1e1630 ARM: dts: imx6sx-sdb: Remove OPP override
   ba640473d7c9 ARM: dts: imx6sx-sdb: Add 198MHz operational point
   4bb916c171fa cgroup: use bitmask to filter for_each_subsys
   034dd596324d sched, cgroup: reorganize threadgroup locking
   0e521eabd7a3 pid_ns: Sleep in TASK_INTERRUPTIBLE in zap_pid_ns_processes
   57cd95a5dcbc net: irda: irda-usb: fix firmware name on big-endian hosts
   38f915577c6e s390/cputime: fix incorrect system time
   98442999b967 dccp: fix freeing skb too early for IPV6_RECVPKTINFO
   56d847e3ef94 Linux 4.1.40
   5c564705d3f0 udp: properly support MSG_PEEK with truncated buffers
   f97e5ec81364 nfsd: encoders mustn't use unitialized values in error cases
   a7b4cdeb22f5 arm64: uaccess: ensure extension of access_ok() addr
   ed3ffd7c7fb9 arm64: documentation: document tagged pointer stack constraints
   f8a4b26e261d target/fileio: Fix zero-length READ and WRITE handling
   9d68722df885 CIFS: add misssing SFM mapping for doublequote
   14f24a466cd1 iscsi-target: Set session_fall_back_to_erl0 when forcing reinstatement
   3aa99b61c099 target: Fix compare_and_write_callback handling for non GOOD status
   0c5623052d48 of: fix sparse warning in of_pci_range_parser_one
   3e9e9c708f10 ceph: fix memory leak in __ceph_setxattr()
   009a83913e29 SMB3: Work around mount failure when using SMB3 dialect to Macs
   ffd28faab493 CIFS: fix mapping of SFM_SPACE and SFM_PERIOD
   ae5175c8dba4 fs/block_dev: always invalidate cleancache in invalidate_bdev()
   e895a1054e25 um: Fix PTRACE_POKEUSER on x86_64
   327d78550aea metag/uaccess: Check access_ok in strncpy_from_user
   31390049dfd2 Set unicode flag on cifs echo request to avoid Mac error
   3ea80afb2dce metag/uaccess: Fix access_ok()
   17535d260b75 target: Fix VERIFY and WRITE VERIFY command parsing
   edd3ad16ead4 dm bufio: check new buffer allocation watermark every 30 seconds
   bbe86592f9c3 dm bufio: avoid a possible ABBA deadlock
   9575253a91e6 Bluetooth: Fix user channel for 32bit userspace on 64bit kernel
   ca38d087f1b0 ext4: evict inline data when writing to memory map
   3a9700b0709e proc: Fix unbalanced hard link numbers
   2279c8b917f7 dm ioctl: prevent stack leak in dm ioctl call
   5afff19d82af nfsd: stricter decoding of write-like NFSv2/v3 ops
   24c3569dd195 nfsd4: minor NFSv2/v3 write decoding cleanup
   c9bb9f02b048 nfsd: check for oversized NFSv2/v3 arguments
   6a5e61496c48 usb: Make sure usb/phy/of gets built-in
   372323131cd0 ASoC: intel: Fix PM and non-atomic crash in bytcr drivers
   b583cc935477 Input: i8042 - add Clevo P650RS to the i8042 reset list
   56e191701252 dm era: save spacemap metadata root after the pre-commit
   6a887571cad2 dm btree: fix for dm_btree_find_lowest_key()
   2ad7696baa06 powerpc/pseries: Fix of_node_put() underflow during DLPAR remove
   e756dc9e7bfb IB/mlx4: Fix ib device initialization error flow
   50f63ac752b8 x86/boot: Fix BSS corruption/overwrite bug in early x86 kernel startup
   51cad4572c02 ring-buffer: Have ring_buffer_iter_empty() return true when empty
   2933c0ba9193 ACPI / power: Avoid maybe-uninitialized warning
   f7f44f588722 tracing: Allocate the snapshot buffer before enabling probe
   73270592d94b usb: host: xhci: print correct command ring address
   5ba52c08d1d1 [media] ttusb2: limit messages to buffer size
   e1dfe98dda6a USB: serial: ftdi_sio: add device ID for Microsemi/Arrow SF2PLUS Dev Kit
   00461b9f4817 PCI: Freeze PME scan before suspending devices
   57b8e3a6524b regulator: tps65023: Fix inverted core enable logic.
   1ff629068e6e [media] zr364xx: enforce minimum size when reading header
   a0f82864854a KEYS: fix keyctl_set_reqkey_keyring() to not leak thread keyrings
   86d961e25888 KEYS: Change the name of the dead type to ".dead" to prevent user access
   4ef48e49b1c5 KEYS: Disallow keyrings beginning with '.' to be joined as session keyrings
   369cd3933506 powerpc/kprobe: Fix oops when kprobed on 'stdu' instruction
   199ea04d7d01 cifs: Do not send echoes before Negotiate is complete
   b291f2ed870a p9_client_readdir() fix
   98ae917fd128 ARM: dts: at91: sama5d3_xplained: not all ADC channels are available
   429957317eac ARM: dts: at91: sama5d3_xplained: fix ADC vref
   c7f3669caa0b zram: do not use copy_page with non-page aligned address
   ac87ea2ff7d7 zram: fix operator precedence to get offset
   7bee1c58a629 ALSA: seq: Don't break snd_use_lock_sync() loop by timeout
   93dfafeefbb6 MIPS: KGDB: Use kernel context for sleeping threads
   22afb4fc42e4 PCI: Fix pci_mmap_fits() for HAVE_PCI_RESOURCE_TO_USER platforms
   1ecc90c7e6b4 MIPS: Avoid BUG warning in arch_check_elf
   396f0fe4cc1b s390/mm: fix CMMA vs KSM vs others
   fab0b034bd91 serial: omap: suspend device on probe errors
   0ea0b8f3adbe serial: omap: fix runtime-pm handling on unbind
   113cc52cf9fe CIFS: store results of cifs_reopen_file to avoid infinite wait
   5c6d0e841556 CIFS: remove bad_network_name flag
   417dc40ebaf2 Input: xpad - add support for Razer Wildcat gamepad
   3a5df486f2e1 x86/vdso: Plug race between mapping and ELF header setup
   7ec71e0bb16d md: update slab_cache before releasing new stripes when stripes resizing
   2da764d4c67b padata: free correct variable
   ce0e21e44f97 crypto: ahash - Fix EINPROGRESS notification callback
   4ee5f3baad19 [media] cx231xx-audio: fix NULL-deref at probe
   8b6c66045c33 [media] cx231xx-audio: fix init error path
   5a4e9221b31b [media] cx231xx-cards: fix NULL-deref at probe
   a44bcf6b4c54 [media] usbvision: fix NULL-deref at probe
   c7bcf82e59ea [media] dib0700: fix NULL-deref at probe
   27a0c2317453 serial: samsung: Use right device for DMA-mapping calls
   5eb0c97fc835 sysfs: be careful of error returns from ops->show()
   dad2a28d46e7 staging: android: ashmem: lseek failed due to no FMODE_LSEEK.
   4ac302f8832f usb: misc: add missing continue in switch
   34a2eb59fc13 ptrace: fix PTRACE_LISTEN race corrupting task->state
   8624aeaec37d scsi: sd: Fix capacity calculation with 32-bit sector_t
   9535300dd7e2 scsi: sr: Sanity check returned mode data
   21ebc869930a ipmi: Fix kernel panic at ipmi_ssif_thread()
   82bfc1d9bc5d xen, fbfront: fix connecting to backend
   8dd5c1281e98 Reset TreeId to zero on SMB2 TREE_CONNECT
   3707e32c8fcc [media] s5p-mfc: Fix unbalanced call to clock management
   01ea8f2396af [media] gspca: konica: add missing endpoint sanity check
   206374212c28 IB/IPoIB: ibX: failed to create mcg debug file
   f585e26312b5 metag/usercopy: Add missing fixups
   c31ac9be1dc2 metag/usercopy: Fix src fixup in from user rapf loops
   09e3cca03b29 metag/usercopy: Set flags before ADDZ
   7c3a804c24cc metag/usercopy: Zero rest of buffer from copy_from_user
   f58b27f0ce36 metag/usercopy: Add early abort to copy_to_user
   fde1ed807fc6 metag/usercopy: Fix alignment error checking
   59465f2b425d metag/usercopy: Drop unused macros
   8da28861bfab ring-buffer: Fix return value check in test_ringbuffer()
   4cc0a6f14611 crypto: caam - fix RNG deinstantiation error checking
   c94b3a0d7a27 powerpc/mm: Add missing global TLB invalidate if cxl is active
   ca4f5edccb94 ath9k_htc: fix NULL-deref at probe
   783494a2cf45 powerpc: Don't try to fix up misaligned load-with-reservation instructions
   ea42f85ce0a6 kvm: arm/arm64: Fix locking for kvm_free_stage2_pgd
   407526d5f5cc tpm: add sleep only for retry in i2c_nuvoton_write_status()
   779a96681b4b tpm_crb: check for bad response size
   331f718a9746 tpm: msleep() delays - replace with usleep_range() in i2c nuvoton driver
   e43c2447f8ed iscsi-target: Drop work-around for legacy GlobalSAN initiator
   d2762e9848bb cdc-acm: fix possible invalid access when processing notification
   4d8a7de65c82 mm, hugetlb: use pte_present() instead of pmd_present() in follow_huge_pmd()
   5c9eddc3db73 ALSA: hda - fix a problem for lineout on a Dell AIO machine
   d91a91d8f6ba drm/vmwgfx: fix integer overflow in vmw_surface_define_ioctl()
   6431059d9e0f drm/vmwgfx: Remove getparam error message
   b31c507e2c3b drm/vmwgfx: avoid calling vzalloc with a 0 size in vmw_get_cap_3d_ioctl()
   13b52a46a677 drm/vmwgfx: NULL pointer dereference in vmw_surface_define_ioctl()
   55f1d24ac1ab drm/vmwgfx: Type-check lookups of fence objects
   18bcea4e8d2e iscsi-target: Fix TMR reference leak during session shutdown
   bfa5d70414f2 ubi/upd: Always flush after prepared for an update
   c127ce428b73 s390/uaccess: get_user() should zero on failure (again)
   0d2f98e74d4f USB: Proper handling of Race Condition when two USB class drivers try to call init_usb_class simultaneously
   6842ff6056ea ACPI: Fix incompatibility with mcount-based function graph tracing
   e5dcf4e37e91 ACPI: Do not create a platform_device for IOAPIC/IOxAPIC
   e2b3e7de14ba virtio_balloon: init 1st buffer in stats vq
   a205b2e5a2a0 powerpc: Disable HFSCR[TM] if TM is not supported
   f8889a244545 drm/radeon: Override fpfn for all VRAM placements in radeon_evict_flags
   848f94592710 USB: fix linked-list corruption in rh_call_control()
   3492352e1f34 ALSA: seq: Fix race during FIFO resize
   55e9d9474816 [media] mceusb: fix NULL-deref at probe
   91848cdb7ae7 xen/acpi: upload PM state from init-domain to Xen
   970a7a72b32d pinctrl: qcom: Don't clear status bit on irq_unmask
   fbb9dd5123de mmc: sdhci: Do not disable interrupts while waiting for clock
   a2f7beb42427 usb: hub: Do not attempt to autosuspend disconnected devices
   041fad219db7 usb: gadget: f_uvc: Fix SuperSpeed companion descriptor's wBytesPerInterval
   d4cbbe1460c4 s390/decompressor: fix initrd corruption caused by bss clear
   f1c9472e3dce ALSA: seq: Fix racy cell insertions during snd_seq_pool_done()
   d57b1afab5a8 scsi: libsas: fix ata xfer length
   972d4b4f2c7b arm/arm64: KVM: Take mmap_sem in kvm_arch_prepare_memory_region
   474d78d49b8b arm/arm64: KVM: Take mmap_sem in stage2_unmap_vm
   d59cf3fa94db USB: serial: qcserial: add Dell DW5811e
   6338e370099a x86/perf: Fix CR4.PCE propagation to use active_mm instead of mm
   1b9537d72610 tty: pty: Fix ldisc flush after userspace become aware of the data already
   44705deddafe usb: hub: Fix crash after failure to read BOS descriptor
   09b3048b2880 ACM gadget: fix endianness in notifications
   861b5c18bb14 scsi: sg: check length passed to SG_NEXT_CMD_LEN
   7268eabd5b5f Input: sur40 - validate number of endpoints before using them
   84a91ce02105 Input: kbtab - validate number of endpoints before using them
   f1ba9cf02776 Input: hanwang - validate number of endpoints before using them
   36d425fcc164 Input: yealink - validate number of endpoints before using them
   79cae616c940 Input: ims-pcu - validate number of endpoints before using them
   6585effe7d22 Input: cm109 - validate number of endpoints before using them
   76d981017361 Input: iforce - validate number of endpoints before using them
   edf3bd9562a9 mmc: ushc: fix NULL-deref at probe
   93d21fdc17e5 drm/radeon: reinstate oland workaround for sclk
   71a1c9d004ed perf/core: Fix event inheritance on fork()
   4da3251aac57 cpufreq: Fix and clean up show_cpuinfo_cur_freq()
   85fa60732c80 drm/radeon/si: add dpm quirk for Oland
   772653bea403 ext4: mark inode dirty after converting inline directory
   e8959ed1fd07 futex: Add missing error handling to FUTEX_REQUEUE_PI
   33fcd6ecaf0f futex: Fix potential use-after-free in FUTEX_REQUEUE_PI
   56d75a164c87 ARM: at91: pm: cpu_idle: switch DDR to power-down mode
   ce6df3d36d07 usb: musb: cppi41: don't check early-TX-interrupt for Isoch transfer
   ed4b286d254b usb-core: Add LINEAR_FRAME_INTR_BINTERVAL USB quirk
   599dc7743f74 uwb: i1480-dfu: fix NULL-deref at probe
   50c372bd694d uwb: hwa-rc: fix NULL-deref at probe
   7896de4f8b00 USB: wusbcore: fix NULL-deref at probe
   0b3718017641 USB: uss720: fix NULL-deref at probe
   aee563c5ffb5 USB: lvtest: fix NULL-deref at probe
   a2574cf7887d USB: idmouse: fix NULL-deref at probe
   13cd0c011e73 isdn/gigaset: fix NULL-deref at probe
   027a48c195e1 fat: fix using uninitialized fields of fat_inode/fsinfo_inode
   c4743e805d43 md/raid1/10: fix potential deadlock
   6eea126f9d6d usb: host: xhci-plat: Fix timeout on removal of hot pluggable xhci controllers
   92b280212adf USB: iowarrior: fix NULL-deref in write
   c4b516612312 USB: iowarrior: fix NULL-deref at probe
   4db7a852b417 ath9k_htc: Add support of AirTies 1eda:2315 AR9271 device
   394e5f4a60c1 USB: serial: safe_serial: fix information leak in completion handler
   e0f57e1a406c USB: serial: io_ti: fix information leak in completion handler
   5dfb04937689 USB: serial: omninet: fix reference leaks at open
   6aed13b2c40e USB: serial: io_ti: fix NULL-deref in interrupt callback
   92fbcbfe994f MIPS: ralink: Fix typos in rt3883 pinctrl
   7ba49ba6dd09 MIPS: End spinlocks with .insn
   d7f84ae03ff3 MIPS: Force o32 fp64 support on 32bit MIPS64r6 kernels
   248e94265dd0 target: Fix VERIFY_16 handling in sbc_parse_cdb
   452c3c927325 target/pscsi: Fix TYPE_TAPE + TYPE_MEDIMUM_CHANGER export
   076df4623c10 scsi: lpfc: Add shutdown method for kexec
   e04d8b65f412 powerpc/boot: Fix zImage TOC alignment
   5c8f767c657b serial: samsung: Continue to work if DMA request fails
   46df5258a521 Input: i8042 - add noloop quirk for Dell Embedded Box PC 3000
   9d3698c9b85c ima: accept previously set IMA_NEW_FILE
   86525f9f4474 percpu: acquire pcpu_lock when updating pcpu_nr_empty_pop_pages
   42ece5f50098 usb: gadget: dummy_hcd: clear usb_gadget region before registration
   7ccd5568eab8 USB: serial: digi_acceleport: fix OOB-event processing
   6842c8457292 staging: comedi: jr3_pci: cope with jiffies wraparound
   29e34e47fadf staging: comedi: jr3_pci: fix possible null pointer dereference
   c48408dff998 usb: gadget: function: f_fs: pass companion descriptor along
   757895c336d6 usb: dwc3: gadget: make Set Endpoint Configuration macros safe
   2e9d3a921000 tracing: Add #undef to fix compile error
   bd38086c6b2a can: usb_8dev: Fix memory leak of priv->cmd_msg_buffer
   99d3d49197e1 powerpc: Emulation support for load/store instructions on LE
   381785176cc1 KVM: s390: Fix guest migration for huge guests resulting in panic
   7caf29dc038c xtensa: move parse_tag_fdt out of #ifdef CONFIG_BLK_DEV_INITRD
   14abcbaa3f0d scsi: libiscsi: add lock around task lists to fix list corruption regression
   28d5d8b2db22 ALSA: seq: Fix link corruption by event error handling
   b78e49c3057a ALSA: hda - Add subwoofer support for Dell Inspiron 17 7000 Gaming
   d19f6529f1c1 ALSA: timer: Reject user params with too small ticks
   3d35f4422582 drm/ast: Call open_key before enable_mmio in POST code
   2188c2b367c6 drm/ast: Fix test for VGA enabled
   e8b120e25fbc drm/ast: Fix AST2400 POST failure without BMC FW or VBIOS
   c9cf983337a0 ipc/shm: Fix shmat mmap nil-page protection
   1827f7e6062b mac80211: flush delayed work when entering suspend
   0dad072cfc1d ALSA: hda - Fix micmute hotkey problem for a lenovo AIO machine
   e5ee49ad28a0 mm: do not access page->mapping directly on page_endio
   21a6489deda1 mm: vmpressure: fix sending wrong events on underflow
   091e3373d97f mm/page_alloc: fix nodes for reclaim in fast path
   7ec8bd575e7b s390: TASK_SIZE for kernel threads
   01592a4b8ba8 NFSv4: fix getacl ERANGE for some ACL buffer sizes
   bb9e115a5e85 NFSv4: fix getacl head length estimation
   05365e1fdea9 scsi: aacraid: Reorder Adapter status check
   f90e6f9a26ba rdma_cm: fail iwarp accepts w/o connection params
   a60c9ff335a1 IB/srp: Avoid that duplicate responses trigger a kernel bug
   3cac36b0423b MIPS: BCM47XX: Fix button inversion for Asus WL-500W
   512cbc94607b MIPS: OCTEON: Fix copy_from_user fault handling for large buffers
   9b4ed3674858 MIPS: Fix special case in 64 bit IP checksumming.
   85050844c0b9 dm cache: fix corruption seen when using cache > 2TB
   c0601ca14e10 Bluetooth: Add another AR3012 04ca:3018 device
   da1324e7080d regulator: Fix regulator_summary for deviceless consumers
   01f9734353be ALSA: hda - fix Lewisburg audio issue
   b57d6c457569 goldfish: Sanitize the broken interrupt handler
   c1dbd97d8a2a x86/platform/goldfish: Prevent unconditional loading
   58cec2bdba91 ath9k: use correct OTP register offsets for the AR9340 and AR9550
   9aabd8dbacd8 powerpc/xmon: Fix data-breakpoint
   c2fd678ea234 nlm: Ensure callback code also checks that the files match
   e53554da9daf drivers: hv: Turn off write permission on the hypercall page
   5fdf59513019 USB: serial: mos7840: fix another NULL-deref at open
   61f3d2296678 NFSv4: Fix memory and state leak in _nfs4_open_and_get_state
   95f495896ad8 drm/atomic: fix an error code in mode_fixup()
   04df6689f870 ktest: Fix child exit code processing
   a52f3859b78c ath9k: fix race condition in enabling/disabling IRQs
   db5051f86016 rtlwifi: rtl8192c-common: Fix "BUG: KASAN:
   f59f883503b7 USB: serial: ftdi_sio: fix line-status over-reporting
   4a34581ed021 KVM: s390: Disable dirty log retrieval for UCONTROL guests
   6631e70a42ff USB: serial: cp210x: add new IDs for GE Bx50v3 boards
   31ac2f17fd85 serial: 8250_pci: Add MKS Tenta SCOM-0800 and SCOM-0801 cards
   4c47ad359cc8 jbd2: don't leak modified metadata buffers on an aborted journal
   2b24a8367068 s390/qdio: clear DSCI prior to scanning multiple input queues
   36e4f568b8f1 s390/dcssblk: fix device size calculation in dcssblk_direct_access()
   5e6ef5ef6eaf mnt: Tuck mounts under others instead of creating shadow/side mounts.
   54195f1a32ee rtc: sun6i: Switch to the external oscillator
   cdb2a7f22913 rtc: sun6i: Add some locking
   af1af02352ee USB: serial: digi_acceleport: fix OOB data sanity check
   adb1da2a98a2 [media] media: fix dm1105.c build error
   c845c73b8396 bcma: use (get|put)_device when probing/removing device driver
   e1d467993c45 [media] am437x-vpfe: always assign bpp variable
   c53e17083e91 arm/arm64: KVM: Enforce unconditional flush to PoC when mapping to stage-2
   75f37dab088e ext4: trim allocation requests to group size
   07b79ed1e82c drm/radeon: handle vfct with multiple vbios images
   1efa8e2ac68b drm/ttm: Make sure BOs being swapped out are cacheable
   a99df0713f43 usb: gadget: udc: fsl: Add missing complete function.
   8c06df5655c7 USB: serial: ftdi_sio: fix extreme low-latency setting
   de143f74af3e w1: don't leak refcount on slave attach failure in w1_attach_slave_device()
   271ce5038fbc w1: ds2490: USB transfer buffers need to be DMAable
   57389faf841f ARM: dts: at91: Enable DMA on sama5d4_xplained console
   61b067fb433a staging: rtl: fix possible NULL pointer dereference
   434c09afa6c9 USB: serial: opticon: fix CTS retrieval at open
   700b2315c254 USB: serial: spcp8x5: fix modem-status handling
   da3a3becb7a8 USB: serial: ftdi_sio: fix modem-status error handling
   270ffbd14d81 USB: serial: ark3116: fix register-accessor error handling
   131d81690f18 IB/ipoib: Fix deadlock between rmmod and set_mode
   24104f6ae3b4 RDMA/core: Fix incorrect structure packing for booleans
   fc47912f44a7 ath5k: drop bogus warning on drv_set_key with unsupported cipher
   c2e65cde1bd7 tty: serial: msm: Fix module autoload
   ccb2e5cdaffa hv: init percpu_list in hv_synic_alloc()
   fbb6950ea08a samples/seccomp: fix 64-bit comparison macros
   33b9ac915dba scsi: storvsc: properly handle SRB_ERROR when sense message is present
   f0cd3119dcd0 scsi: storvsc: use tagged SRB requests if supported by the device
   88e4685b51d3 MIPS: Handle microMIPS jumps in the same way as MIPS32/MIPS64 jumps
   a6c4b18bdb3a MIPS: Calculate microMIPS ra properly when unwinding the stack
   339da589697a MIPS: Fix is_jump_ins() handling of 16b microMIPS instructions
   4556bdd21af3 MIPS: Fix get_frame_info() handling of microMIPS function size
   7c6a61c004ad MIPS: Prevent unaligned accesses during stack unwinding
   39fffbc9b371 MIPS: Clear ISA bit correctly in get_frame_info()
   e9ef2a32a2ec drm/i915/dsi: Do not clear DPOUNIT_CLOCK_GATE_DISABLE from vlv_init_display_clock_gating

(From OE-Core rev: 976c260bfd61e1346c1ef842567eee80a7b7ffca)

(From OE-Core rev: 9699ffe52d65ba426c01fd27697ab2789e29e19c)

Signed-off-by: Bruce Ashfield <bruce.ashfield@windriver.com>
Signed-off-by: Ross Burton <ross.burton@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Signed-off-by: Armin Kuster <akuster808@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-09-11 22:15:59 +01:00
Bruce Ashfield
197a32fd1b kernel-yocto: configuration updates: x86 features
Integrating the following kernel configuration changes:

 f7fbd4185e5 features/qat: additional configurations, CONFIG_CRYPTO_RSA and CONFIG_CRYPTO_DH
 50c62581d283 features/netfilter: additional configurations
 d67e4ed89556 features/x2apic: add X2APIC feature
 7889b28c5300 features/vfio: add VFIO feature
 dc4ec998757e features/numa: Add NUMA feature
 c88c18de4ca8 features/mtd: add MTD feature
 9035571d32ee features/iommu: add IOMMU feature
 6f3b16136f55 features/intel-txt: add intel-txt feature
 4936a5f508f0 common-pc-wifi: Enable SDIO for BroadCom BRCMFMAC

(From OE-Core rev: 59d294f119dc91d9ec47b0a8381d3addc86a6e3a)

(From OE-Core rev: 5d92cf0618e863472dc3ac54c89dd2f469733a2b)

Signed-off-by: Bruce Ashfield <bruce.ashfield@windriver.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Signed-off-by: Armin Kuster <akuster808@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-09-11 22:15:59 +01:00
Andre McCurdy
b1ffdf653c terminal.py: fix devshell with mate-terminal
Without the --disable-factory option, mate-terminal fails to start
with the error:

 | There was an error creating the child process for this terminal
 | Failed to execute child process "oe-gnome-terminal-phonehome" (No such file or directory)

The --disable-factory option was removed by:

  http://git.openembedded.org/openembedded-core/commit/?id=e8dca725ed8211a874472300a3ed50e494039ab9

apparently based on an assuption that mate-terminal continues to
track gnome-terminal since forking from it. However, based on the
mate-terminal man page in the upstream master branch, the option is
still supported:

  https://github.com/mate-desktop/mate-terminal

(From OE-Core rev: c7f769bd400756d180abf80dbfdf4ed2703fab60)

(From OE-Core rev: 764159600a202d1f0c2f0217c7bf7b55348a2f5d)

Signed-off-by: Andre McCurdy <armccurdy@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Signed-off-by: Armin Kuster <akuster808@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-09-11 22:15:59 +01:00
Andre McCurdy
452164e7d6 terminal.py: avoid 100% cpu while waiting for phonehome pid file
Some of the less common terminal types haven't been tested with the
recent phonehome pid file changes and there may be error cases where
the pid file is never created.

(From OE-Core rev: 6b0cf568e9fbe28fb6e7b17f4ad92348d33e2bf4)

(From OE-Core rev: 9aa06b3116c095a512be1d1f5da84ffaedf845dc)

Signed-off-by: Andre McCurdy <armccurdy@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Signed-off-by: Armin Kuster <akuster808@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-09-11 22:15:59 +01:00
Leonardo Sandoval
0f81fcb600 terminal: wait for terminal task to finish before procedding
This commit generalizes the work done in [1] and [2], both fixing
issues on several areas (the former with -c patch and gnome-terminal and
the latter with -c menuconfig and several terminals, including
gnome-terminal and tmux). The main idea is to get the PID
from the new spawned terminal and loop there until finished.

[1] 76e8ab47c9: terminal: Fix gnome-terminal to work with recent versions
[2] 7d02ea283b: cml1.bbclass: wait until menuconfig terminal finishes

(From OE-Core rev: 55707401d5bfb1f7686c273fc2d0db89df206395)

(From OE-Core rev: 3987dddff58410f1b2535ceb1f48aebbbd987889)

Signed-off-by: Leonardo Sandoval <leonardo.sandoval.gonzalez@linux.intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Signed-off-by: Armin Kuster <akuster808@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-09-11 22:15:59 +01:00
Zhang Xiao
08f8bf817b bash: memleak bug fix for builtin command read
Built in command "read" with "-e" use Readline to obtain the line
in an interactive shell. In this process, a string "rlbuf" is
just allocated without free operation thus cause memory leak.

This patch had been submitted to upstream:
http://lists.gnu.org/archive/html/bug-bash/2017-02/msg00061.html

(From OE-Core rev: a2b278a6eaa9e9b48d858e3be6712267c0122598)

(From OE-Core rev: 571e53024b4f924e50cf6a478ccc8d6f097816bb)

Signed-off-by: Zhang Xiao <xiao.zhang@windriver.com>
Signed-off-by: Yi Zhao <yi.zhao@windriver.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
fixup for 4.3
Signed-off-by: Armin Kuster <akuster808@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-09-11 22:15:59 +01:00
Hongxu Jia
d2b60efe20 libxml2: Fix CVE-2017-8872
fix global-buffer-overflow in htmlParseTryOrFinish (HTMLparser.c:5403)

https://bugzilla.gnome.org/show_bug.cgi?id=775200

Here is the reproduce steps on ubuntu 16.04, use clang with "-fsanitize=address"
...
export CC="clang"
export CFLAGS="-fsanitize=address"

./configure --disable-shared

make clean all -j

wget https://bugzilla.gnome.org/attachment.cgi?id=340871 -O poc

./xmllint --html --push poc
==2785==ERROR: AddressSanitizer: global-buffer-overflow on address
0x000000a0de21 at pc 0x0000006a7f6e bp 0x7ffdfe940c10 sp 0x7ffdfe940c08
READ of size 1 at 0x000000a0de21 thread T0    #0 0x6a7f6d
(/home/jiahongxu/Downloads/libxml2-2.9.4/xmllint+0x6a7f6d)    #1 0x6a7356
(/home/jiahongxu/Downloads/libxml2-2.9.4/xmllint+0x6a7356)    #2 0x4f4504
(/home/jiahongxu/Downloads/libxml2-2.9.4/xmllint+0x4f4504)    #3 0x4f045e
(/home/jiahongxu/Downloads/libxml2-2.9.4/xmllint+0x4f045e)    #4 0x7f81977d682f
(/lib/x86_64-linux-gnu/libc.so.6+0x2082f)    #5 0x419ad8
(/home/jiahongxu/Downloads/libxml2-2.9.4/xmllint+0x419ad8)
...

(From OE-Core rev: a615b0825927a09a0aa8312d131c9acbaef8956d)

(From OE-Core rev: 1c9d891886f35e6cc4485f244180d7d0ffa82cd3)

Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Signed-off-by: Armin Kuster <akuster808@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-09-11 22:15:58 +01:00
Andrej Valek
6c657b8441 libxml2: Revert "Add an XML_PARSE_NOXXE flag to block all entities loading even local"
The new flag doesn't work and the change even broke the XML_PARSE_NONET option.

(From OE-Core rev: 8b586f60778579ee2c9adae429128a07e8437553)

(From OE-Core rev: d2b1486bf8773d3eef36c5e77b82e70c88d9c682)

Signed-off-by: Andrej Valek <andrej.valek@siemens.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Signed-off-by: Armin Kuster <akuster808@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-09-11 22:15:58 +01:00
Yi Zhao
a602b9f748 taglib: Security fix CVE-2017-12678
CVE-2017-12678: In TagLib 1.11.1, the rebuildAggregateFrames function in
id3v2framefactory.cpp has a pointer to cast vulnerability, which allows
remote attackers to cause a denial of service or possibly have
unspecified other impact via a crafted audio file.

Reference:
https://nvd.nist.gov/vuln/detail/CVE-2017-12678

Patch from:
eb9ded1206

(From OE-Core rev: 24ac12ecb19efc7c131c9711ba32e298ba860eb7)

(From OE-Core rev: bb90e08fbcbc7c60731aacdc4b82163507d9afdc)

Signed-off-by: Yi Zhao <yi.zhao@windriver.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Signed-off-by: Armin Kuster <akuster808@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-09-11 22:15:58 +01:00
Yi Zhao
02b1cc0aef e2fsprogs: fix ptest script
* Fix hardcoded path for ptest script which would cause failure on
  mulitilib:
  ls: cannot access '/usr/lib/e2fsprogs/ptest/test/[a-zA-Z]_*': No such file or directory
  ./test_script: line 54: /usr/lib/e2fsprogs/ptest/test/test_post: No such file or directory

* Add missing '$' for shell variable reference

(From OE-Core rev: 82d244a9225bd1fa512e696aae917febe051fcf9)

(From OE-Core rev: d2fc87e074ed41d265667383827c36ceb0302693)

Signed-off-by: Yi Zhao <yi.zhao@windriver.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Signed-off-by: Armin Kuster <akuster808@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-09-11 22:15:58 +01:00
Joe Slater
e6533d1d9e ghostscript: CVE-2017-9727, -9835, -11714
CVE-2017-9727: make bounds check in gx_ttfReader__Read more robust
CVE-2017-9835: bounds check the array allocations methods
CVE-2017-11714: prevent trying to reloc a freed object

(From OE-Core rev: 2eae91f9fa1cfdd3f0e6111956c8f193fd0db69f)

(From OE-Core rev: 1c9e3318791e36d6bc851192a7640ee639f61f23)

Signed-off-by: Joe Slater <jslater@windriver.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Signed-off-by: Armin Kuster <akuster808@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-09-11 22:15:58 +01:00
Joe Slater
bbb081544c ghostscript: fix several CVEs by adding bounds checking
CVE-2017-9611
CVE-2017-9612
CVE-2017-9739
CVE-2017-9726

(From OE-Core rev: 3e5d80c84f4c141bc3f3193d1db899b0e56993cf)

(From OE-Core rev: 7fe1e9d46954f082af4debfa63cd982558dbf965)

Signed-off-by: Joe Slater <jslater@windriver.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Signed-off-by: Armin Kuster <akuster808@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-09-11 22:15:58 +01:00
Yi Zhao
f77fdc9f9f tiff: Security fixes
Fix CVE-2017-9147, CVE-2017-9936, CVE-2017-10668, CVE-2017-11335

References:
https://nvd.nist.gov/vuln/detail/CVE-2017-9147
https://nvd.nist.gov/vuln/detail/CVE-2017-9936
https://nvd.nist.gov/vuln/detail/CVE-2017-10668
https://nvd.nist.gov/vuln/detail/CVE-2017-11335

Patches from:
CVE-2017-9147:
4d4fa0b68a
CVE-2017-9936:
fe8d716595
CVE-2017-10688:
6173a57d39
CVE-2017-11355:
69bfeec247

(From OE-Core rev: 5c89539edb17d01ffe82a1b2e7d092816003ecf3)

(From OE-Core rev: eaf72d105bed54e332e2e5c0c5c0a0087ecd91dd)

Signed-off-by: Yi Zhao <yi.zhao@windriver.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>

minor fixes to get to apply

Signed-off-by: Armin Kuster <akuster808@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-09-11 22:15:58 +01:00
Yue Tao
cb4fd41504 libtasn1: CVE-2017-10790
The _asn1_check_identifier function in GNU Libtasn1 through 4.12 causes
a NULL pointer dereference and crash when reading crafted input that
triggers assignment of a NULL value within an asn1_node structure. It
may lead to a remote denial of service attack.

References:
https://nvd.nist.gov/vuln/detail/CVE-2017-10790
http://git.savannah.gnu.org/gitweb/?p=libtasn1.git;a=commit;
h=d8d805e1f2e6799bb2dff4871a8598dc83088a39

(From OE-Core rev: 6176151625c971de031e14c97601ffd75a29772f)

(From OE-Core rev: 649f78102222ec156d490968c13d3222379a1956)

Signed-off-by: Yue Tao <Yue.Tao@windriver.com>
Signed-off-by: Wenzong Fan <wenzong.fan@windriver.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Signed-off-by: Armin Kuster <akuster808@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-09-11 22:15:58 +01:00
Jackie Huang
df8c138772 libsndfile1: Fix CVE-2017-8363
Backport the patch to fix CVE-2017-8363:

The flac_buffer_copy function in flac.c in libsndfile 1.0.28 allows
remote attackers to cause a denial of service (heap-based buffer
over-read and application crash) via a crafted audio file.

Reference:
https://nvd.nist.gov/vuln/detail/CVE-2017-8363

(From OE-Core rev: 9cc9956c5ed09f9016cb23bd763652e5ab55f3cd)

(From OE-Core rev: 201fa8f6a10469886db6d48c3a3e91712382e561)

Signed-off-by: Jackie Huang <jackie.huang@windriver.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Signed-off-by: Armin Kuster <akuster808@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-09-11 22:15:58 +01:00
Jackie Huang
2cc6f0ba68 libsndfile1: Fix CVE-2017-8362
Backport the patch to fix CVE-2017-8362:

The flac_buffer_copy function in flac.c in libsndfile 1.0.28 allows
remote attackers to cause a denial of service (invalid read and
application crash) via a crafted audio file.

Reference:
https://nvd.nist.gov/vuln/detail/CVE-2017-8362

(From OE-Core rev: 0c8da3f6f85962196f2ad54fffd839239f5c2274)

(From OE-Core rev: eec5e5ce04cfbd1e41e54be31afee72ecc9ec5dd)

Signed-off-by: Jackie Huang <jackie.huang@windriver.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
with minor changes

Signed-off-by: Armin Kuster <akuster808@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-09-11 22:15:58 +01:00
Jackie Huang
7ec1ed5c80 libsndfile1: Fix CVE-2017-8361 and CVE-2017-8365
Backport the patch to fix two CVEs:

CVE-2017-8361:
The flac_buffer_copy function in flac.c in libsndfile 1.0.28 allows
remote attackers to cause a denial of service (buffer overflow and
application crash) or possibly have unspecified other impact via a
crafted audio file.

CVE-2017-8365:
The i2les_array function in pcm.c in libsndfile 1.0.28 allows remote
attackers to cause a denial of service (buffer over-read and application
crash) via a crafted audio file.

Reference:
https://nvd.nist.gov/vuln/detail/CVE-2017-8361
https://nvd.nist.gov/vuln/detail/CVE-2017-8365

(From OE-Core rev: d92877ade8fd4dd9b548c6b664bf4357a1f9428a)

(From OE-Core rev: a23241c1e10c706754c19d7f69fe7c6cbac3732e)

Signed-off-by: Jackie Huang <jackie.huang@windriver.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Signed-off-by: Armin Kuster <akuster808@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-09-11 22:15:58 +01:00
Fan Xin
ce45b35a67 libsndfile1: Fix CVE-2017-6892
Backport upstream patch to fix CVE-2017-6892.

CVE: CVE-2017-6892

(From OE-Core rev: cc9b8d0afe64b83f585843f3aff1c077f69fd656)

(From OE-Core rev: eed7d052dc053732e2d485dcc7e551b6754c4576)

Signed-off-by: Fan Xin <fan.xin@jp.fujitsu.com>
Signed-off-by: Ross Burton <ross.burton@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Signed-off-by: Armin Kuster <akuster808@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-09-11 22:15:58 +01:00
Yi Zhao
108f9a2666 wget: Security fix CVE-2017-6508
CVE-2017-6508: CRLF injection vulnerability in the url_parse function in
url.c in Wget through 1.19.1 allows remote attackers to inject arbitrary
HTTP headers via CRLF sequences in the host subcomponent of a URL.

External References:
https://nvd.nist.gov/vuln/detail/CVE-2017-6508

Patch from:
http://git.savannah.gnu.org/cgit/wget.git/commit/?id=4d729e322fae359a1aefaafec1144764a54e8ad4

(From OE-Core rev: 28404157e07a915d1445166df566c8838f2cce57)

(From OE-Core rev: 03fbdba18b767be95c5fa13d72b52c16f8a77b52)

Signed-off-by: Yi Zhao <yi.zhao@windriver.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Signed-off-by: Armin Kuster <akuster808@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-09-11 22:15:58 +01:00
Jackie Huang
e99089ce24 xserver-xorg: Fix CVE-2017-10971
Backport 3 patches to fix CVE-2017-10971:

In the X.Org X server before 2017-06-19, a user authenticated to an X
Session could crash or execute code in the context of the X Server by
exploiting a stack overflow in the endianness conversion of X Events.

Reference:
https://nvd.nist.gov/vuln/detail/CVE-2017-10971

(From OE-Core rev: 20428f660f2c046c63bbf63c4e4af95dac9f2b3d)

(From OE-Core rev: 8c42a9508bded870d1ac018e2cfa129772983c52)

Signed-off-by: Jackie Huang <jackie.huang@windriver.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Signed-off-by: Armin Kuster <akuster808@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-09-11 22:15:58 +01:00
Joe Slater
c63480c960 ruby: fix CVE-2017-922{6-9}
CVE-2017-9226 : check too big code point value for single byte
CVE-2017-9227 : access to invalid address by reg->dmin value
CVE-2017-9228 : invalid state(CCS_VALUE) in parse_char_class()
CVE-2017-9229 : access to invalid address by reg->dmax value

(From OE-Core rev: f15f01edbaa431829a50053d07ed6d6b333584c7)

(From OE-Core rev: 4077e088b6e750c4143a59c5d89258ab682ed96b)

Signed-off-by: Joe Slater <jslater@windriver.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Signed-off-by: Armin Kuster <akuster808@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-09-11 22:15:58 +01:00
Joe Slater
62e244d713 ruby: fix CVE-2017-9224
Use DATA_ENSURE(1) before access.

(From OE-Core rev: 9db907a0bd331c47c4882b82f9f1d2a7ef1f6d1f)

(From OE-Core rev: 7ba25f0d8d95ece5f5d56ace5b1e9c8c797efbc0)

Signed-off-by: Joe Slater <jslater@windriver.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>

Fixed up to get to apply

Signed-off-by: Armin Kuster <akuster808@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-09-11 22:15:58 +01:00
Richard Purdie
960a653e0c expat: Don't use getrandom() in the -native case
getrandom() is only available in glibc 2.25+ and uninative may relocate
binaries onto systems that don't have this function. For now, force
the code to the older codepath until we can come up with a better solution
for this kind of issue.

(From OE-Core rev: da9ac8092497c3f2c246d3534f47e42cb2d9e4e8)

(From OE-Core rev: 450942db7f4638eba7ec262901fe1d7e1b1f6070)

Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-09-11 22:15:58 +01:00
Khem Raj
3f97cd3514 nspr: Fix build error due to missing stdint.h> include
(From OE-Core rev: 2f95c71ba17a6d68d3805efe82097c10b6740244)

Signed-off-by: Khem Raj <raj.khem@gmail.com>
Signed-off-by: Ross Burton <ross.burton@intel.com>
Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-09-06 17:13:19 +01:00
Khem Raj
58f7950896 icu: Fix build with glibc 2.26
(From OE-Core rev: 564209df3d0fd87742ffccb7475b8908c4a7efa4)

Signed-off-by: Khem Raj <raj.khem@gmail.com>
Signed-off-by: Ross Burton <ross.burton@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-09-06 17:13:19 +01:00
Richard Purdie
b8eb4b65cd python-numpy: Fix issues with recent glibc versions
Fix issues building on recent glibc versions (for python*-numpy-native).

(From OE-Core rev: 08a46b2477c1ea0e76695b51b59dc1bb46b1b521)

(From OE-Core rev: d17b2f44f69a160c227cbd808a2cf62c994ed92e)

Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-09-06 17:07:39 +01:00
Richard Purdie
364f6b5fac qemu: Backport a patch for recent glibc versions
This fixes compile failures of qemu-native with new versions of glibc. Patch
is taken from upstream.

(From OE-Core rev: 9c54510632d22c12850962572ce7276170ce5488)

Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-09-06 17:07:39 +01:00
Richard Purdie
ffb1aa67a4 python3-native: Avoid use of getentropy/getrandom
getentropy/random() is only available in glibc 2.25+ and uninative may relocate
binaries onto systems that don't have this function. For now, force the code to
the older codepaths until we can come up with a better solution for this kind of
issue.

(From OE-Core rev: 92bda0024d85ae78345665cc2f9646c9881ed61b)

(From OE-Core rev: ee006aac0a52709cf5524aeb17a92b8c5c44be34)

Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-09-06 17:01:12 +01:00
Scott Rifenbark
d9b63154aa ref-manual: Fixed broken link.
(From yocto-docs rev: b0ee7cf9ab8cb8f9beb490b9aac128c48b13af66)

Signed-off-by: Scott Rifenbark <srifenbark@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-09-02 00:52:57 +01:00
Scott Rifenbark
e40d58a879 ref-manual: Removed duplicate section id.
(From yocto-docs rev: b49b1d2219bf18f6581cbdd1f7277d65e697c1f8)

Signed-off-by: Scott Rifenbark <srifenbark@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-09-02 00:52:57 +01:00
Kristi Rifenbark
dcd287d546 ref-manual: Added a cross-reference link to "tmp/sysroots-components"
(From yocto-docs rev: 4cd0c8404e581e33194649a716c84100fddab00c)

Signed-off-by: Kristi Rifenbark <kristi.rifenbark@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-09-02 00:52:56 +01:00
Kristi Rifenbark
89e6119a8b ref-manual: Updated SSTATE_SCAN_FILES variable description
(From yocto-docs rev: f20240fda71a19a7bf78a8366270998d6c708076)

Signed-off-by: Kristi Rifenbark <kristi.rifenbark@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-09-02 00:52:56 +01:00
Kristi Rifenbark
0f1ea9ff44 ref-manual: Added tmp/sysroots-components task
(From yocto-docs rev: b723fc6d05ad4db48dfda2aece797c7cbab06cf3)

Signed-off-by: Kristi Rifenbark <kristi.rifenbark@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-09-02 00:52:56 +01:00
Kristi Rifenbark
fed307f58b ref-manual: Corrected spelling errors
Updated two instances of "sysroot-components" to
"sysroots-components".

(From yocto-docs rev: 8f95d9ccd958c46ce5f3f4c7eb95424bee958a9e)

Signed-off-by: Kristi Rifenbark <kristi.rifenbark@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-09-02 00:52:56 +01:00
Scott Rifenbark
d05391a7d4 documentation: Preparation for 2.3.2 release
poky.ent -> Changed variables
mega-manual.sed -> replaced 2.3.1 with 2.3.2
*.xml files -> Updated manual revision tables for 2.3.2 and
               September 2017

(From yocto-docs rev: ce5bc517148f872e49d617fbfda7ae81c56efa04)

Signed-off-by: Scott Rifenbark <srifenbark@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-09-02 00:52:56 +01:00
Scott Rifenbark
3e9605bd98 ref-manual: Fixed YP Term problem with botched earlier commit
I was cherry-picking in commits from master to pyro and had a
conflict that I did not go far enough to the bottom of the
file to see the true nature, which was duplication of the
"Yocto Project Terms" section.  When I resolved the conflit
I just took out the top couple lines and actually left the
duplicated terms section in.  Then I pushed everthing.  I should
have made the manuals first and I would have discovered the
error.

This commit fixes it.

(From yocto-docs rev: 0a9a7303fc048b59e5328a9855f8615a042ab411)

Signed-off-by: Scott Rifenbark <srifenbark@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-09-02 00:52:56 +01:00
Kristi Rifenbark
543337e849 ref-manual: Added new variable
Added SYSROOT_DESTDIR to the variable glossary.

(From yocto-docs rev: abb83993ade1200fb99b2c9ee65ea835773c950b)

Signed-off-by: Kristi Rifenbark <kristi.rifenbark@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-09-02 00:52:56 +01:00
Scott Rifenbark
5af18d3753 kernel-dev: Updated "Creating and Preparing a Layer" section
This section failed to mention the "yocto-layer create" script,
which is a simple way to create a layer.  I have added this info
into the section by way of a "Tip" box.

(From yocto-docs rev: 0bda177090ef624890e94a13e622e05923185fa9)

Signed-off-by: Scott Rifenbark <srifenbark@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-09-02 00:52:56 +01:00
Kristi Rifenbark
f80223eb50 ref-manual: Fixed links in do_prepare_recipe_sysroot task
(From yocto-docs rev: 369038fa0fa2055bf39583aa1c707d889dd5db07)

Signed-off-by: Kristi Rifenbark <kristi.rifenbark@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-09-02 00:52:56 +01:00
Kristi Rifenbark
1f625b2dae ref-manual: Edited Migration section
Edited OpenEmbedded reference in "Recipe-specific
Sysroots" secion. Edited bullet title in
"Recipe-specific Sysroots" section.

(From yocto-docs rev: a7a909a17e69d7961e0c0d82e77b325e87399e32)

Signed-off-by: Kristi Rifenbark <kristi.rifenbark@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-09-02 00:52:56 +01:00
Kristi Rifenbark
573368bc90 ref-manual: Edits to staging.bbclass
Added a missing closing parenthesis. Edited Note for
for file clarification.

(From yocto-docs rev: c3cd491bf6949bce1546caa4be250ea05a8a564b)

Signed-off-by: Kristi Rifenbark <kristi.rifenbark@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-09-02 00:52:56 +01:00
Kristi Rifenbark
7bc2ff7018 ref-manual: Updated build/tmp/work/tunearch/recipename/version
Replaced "recipe_work_directory" with "${WORKDIR}"
throughout the section.

(From yocto-docs rev: 79911f48d469f95ec026fe60585d1b4983e9c1c6)

Signed-off-by: Kristi Rifenbark <kristi.rifenbark@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-09-02 00:52:56 +01:00
Kristi Rifenbark
a2712c3752 dev-manual: Updated "Sharing Files Between Recipes"
Updated text for sysroot terminology, and clarity.
Fixed a capitalization error.

(From yocto-docs rev: 2ee92ccf677135ea47d621d3583a16649e5a9f13)

Signed-off-by: Kristi Rifenbark <kristi.rifenbark@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-09-02 00:52:56 +01:00
Kristi Rifenbark
5826fabe6f ref-manual: Updated Documentation required packages
Removed xsltproc package in Fedora, CentOS, and
openSUSE Documentation required packages. Removed fop package in
openSUSE Documentation required packages.

(From yocto-docs rev: f7ba4c02c0157a8210b0e145a7cbc1ba51f3795b)

Signed-off-by: Kristi Rifenbark <kristi.rifenbark@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-09-02 00:52:56 +01:00
Scott Rifenbark
d0c89b6d59 dev-manual: Updates to "Using .bbappend Files in Your Layer"
I did some rewriting for clarity in the "Using .bbappend Files
in Your Layer" section.  The section needed to be retitled so
focus on the layer aspect of .bbappend files.  Also, while I
was in there, I did more work on the prose in general.

Also had to fix some links in the bsp, kernel, and ref manuals
that linked into the section whose name I changes.

(From yocto-docs rev: 27003c525a05ffa2f810a038c7c8f96bb7535986)

Signed-off-by: Scott Rifenbark <srifenbark@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-09-02 00:52:56 +01:00
Scott Rifenbark
4712ba38e5 dev-manual: Changed wording that intros layer creation steps
I updated the wording to note that the steps are how to create
a layer without the aid of steps (i.e. by hand).

(From yocto-docs rev: 71956e7a2ef383c72baf3a12d2067ff04bb58ead)

Signed-off-by: Scott Rifenbark <srifenbark@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-09-02 00:52:56 +01:00
Peter Kjellerstedt
7ea76684cb package.bbclass: Restore functionality to detect RPM dependencies
During the transition to dnf and rpm4, the functionality to
automatically make RPM determine dependencies was lost.

Before the transition, an OE specific tool called rpmdeps-oecore had
been added to the rpm suit. It was based on the rpmdeps tool that is
part of rpm. For each file specified on its command line, it would
output the provides and requires that RPM could determine.

During the transition to rpm4, rpmdeps-oecore was replaced with the
standard rpmdeps. However, what no one noticed was that unless rpmdeps
is given options, e.g., -P or -R, to tell it what it should output, it
will not output anything. Thus, it would do all the work to determine
the requirements, but would keep silent about it. And since no output
from rpmdeps is expected unless there are requirements, there were no
warnings indicating that everything was not working as expected.

Porting the old rpmdeps-oecore to work with rpm4 is not really
possible since it relied on being able to access internals of RPM that
are no longer available. However, it turned out that rpmdeps had a
debug option, --rpmfcdebug, that would output exactly the information
that we need, albeit in a different format and to stderr. To make this
usable, rpmdeps has now received a new option, --alldeps, which sends
the information we need to stdout.

Since enabling this may cause packages to break, it is required that
ENABLE_RPM_FILEDEPS_FOR_PYRO is set to "1" to activate it for Pyro.
The name of this variable has been chosen as to indicate that it only
affects Pyro (since releases before and after Pyro has it enabled by
default).

(From OE-Core rev: 1009498f23ad319825c00ba60a4693d15aada553)

Signed-off-by: Peter Kjellerstedt <peter.kjellerstedt@axis.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-08-31 17:57:12 +01:00
Martin Jansa
00b1e7d38b libcheck: fix file-rdeps QA issue
* Fixes:
  ERROR: nativesdk-libcheck-0.10.0-r0 do_package_qa: QA Issue:
  /usr/local/oecore-x86_64/sysroots/x86_64-oesdk-linux/usr/bin/checkmk
  contained in package nativesdk-libcheck requires
  /usr/local/oecore-x86_64/sysroots/x86_64-oesdk-linux/usr/bin/gawk,
  but no providers found in RDEPENDS_nativesdk-libcheck? [file-rdeps]

(From OE-Core rev: 04e11808e6a22adfa367dd2565b20cb9ecdd6439)

Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Signed-off-by: Peter Kjellerstedt <peter.kjellerstedt@axis.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-08-31 17:57:12 +01:00
Mark Hatle
09471f0593 rpm: Disable perl dependency generation
When rpmdeps files a perl script, it attempts to determine what it provides
and what it requires.  Often the requires are incorrect, within the context
of Wind River Linux.  This results in an error that DNF is unable to install
a package due to one or more unresolved dependencies.

In RPM5 we had disabled this behavior, the alternative is to require that all
perl scripts be 'complete', in that they only require things they absolutely
need and that OE provides.  If we ever enforce that, this commit can be
reverted.  Until they fall back to prior behavior (which also matches ipkg
and deb style packages.)

(From OE-Core rev: bd8e5dc3ebabb3d88169e2f848219ca201fa5fdb)

Signed-off-by: Mark Hatle <mark.hatle@windriver.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-08-31 17:57:12 +01:00
Mark Hatle
371f480aeb ltp: Skip the filedependency scan
Since LTP includes a set of test cases, we need to skip file dependency
generation, as there will be dependencies that can not be satisfied.  In this
case a csh and ksh dependency come from two tests.

The alternative would be to depend on csh/ksh (a bad idea as they're not
available in oe-core) or remove the tests (but this eliminates the tests if
someone DOES have csh/ksh in their configurations.)

(From OE-Core rev: 873ad32191816f89d085906635297eb17d9fc0f6)

Signed-off-by: Mark Hatle <mark.hatle@windriver.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Signed-off-by: Peter Kjellerstedt <peter.kjellerstedt@axis.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-08-31 17:57:12 +01:00
Richard Purdie
3afca26b11 bind: Use correct python interpreter path
The scripts currently reference "python33", fix this so they reference
python3. The move the python3 likely broke these.

(From OE-Core rev: 37a40fead443e211f0947d9d9bf2180d95630485)

Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Signed-off-by: Peter Kjellerstedt <peter.kjellerstedt@axis.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-08-31 17:57:12 +01:00
Peter Kjellerstedt
2d3908ae4c package_rpm.bbclass: Filter out unwanted file deps for nativesdk packages
Filter out any file dependencies on absolute paths and any
dependencies on Perl modules for nativesdk packages. It is assumed
that they will be provided by the native host if needed, and they mess
up the dependency handling if they are present.

(From OE-Core rev: 37f2d4df507c760ea4c12b67526db8277e5684eb)

Signed-off-by: Peter Kjellerstedt <peter.kjellerstedt@axis.com>
Signed-off-by: Mark Hatle <mark.hatle@windriver.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-08-31 17:57:12 +01:00
Peter Kjellerstedt
abc1771306 git: Do not install git cvsserver and git svn by default
These git commands require Perl modules that do not exist in OE-Core.
Add PACKAGECONFIGs to enable them. Be aware though that if you enable
them you must also provide the missing dependencies.

(From OE-Core rev: a803938407ee5a55fb40a6940bb6680ba21909b0)

Signed-off-by: Peter Kjellerstedt <peter.kjellerstedt@axis.com>
Signed-off-by: Mark Hatle <mark.hatle@windriver.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-08-31 17:57:12 +01:00
Peter Kjellerstedt
6f5b49ba22 rpm: Add dependencies on bash, perl and python3-core
Also modify a Python script (pythondistdeps.py) to use Python 3.

(From OE-Core rev: 18116c1490e6ef09ad5046db7f90dbcbe4caf595)

Signed-off-by: Peter Kjellerstedt <peter.kjellerstedt@axis.com>
Signed-off-by: Mark Hatle <mark.hatle@windriver.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-08-31 17:57:12 +01:00
Peter Kjellerstedt
58884341dc perl: Do not generate file dependencies for perl-ptest
The perl-ptest package contains Perl internal modules and generating
file dependencies for it causes problems.

(From OE-Core rev: a36cf8e53122c32ef8a91759cd49d294483c6bde)

Signed-off-by: Peter Kjellerstedt <peter.kjellerstedt@axis.com>
Signed-off-by: Ross Burton <ross.burton@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-08-31 17:57:12 +01:00
Peter Kjellerstedt
6c17b29db1 insane.bbclass: Ignore perl as dependency for nativesdk packages
(From OE-Core rev: 33d79cb5d35274e2925d8acb0f30530013e37545)

Signed-off-by: Peter Kjellerstedt <peter.kjellerstedt@axis.com>
Signed-off-by: Ross Burton <ross.burton@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-08-31 17:57:12 +01:00
Peter Kjellerstedt
abbd0abe1a rpm: Add a new option --alldeps to rpmdeps
This will send the output from rpmfcPrint() to stdout. This is an
alternative to using the --rpmfcdebug option, which will send the same
output to stderr. The two options have totally different use cases
though. While --alldeps is used when the output from rpmfcPrint() is
what is wanted, --rpmfcdebug can be used together with the other
output options, e.g., --requires, without affecting their output.

(From OE-Core rev: 7a4794534bb2e67c61262361f907eced18ec69cc)

Signed-off-by: Peter Kjellerstedt <peter.kjellerstedt@axis.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-08-31 17:57:12 +01:00
Peter Kjellerstedt
6c9ad26db0 rpm: Use conditional to access %{_docdir} in macros.in
This avoids the following warning:

warning: Ignoring invalid regex %{_docdir}

when runing `rpmdeps -R <file>`, since %{_docdir} is only defined when
parsing a spec file.

(From OE-Core rev: c128e19d25f2015ce1bed13b423ac0d6e619ef5e)

Signed-off-by: Peter Kjellerstedt <peter.kjellerstedt@axis.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-08-31 17:57:12 +01:00
Peter Kjellerstedt
ada48bbe8c rpm: Do not require that ELF binaries are executable to be identifiable
There is nothing that requires, e.g., a DSO to be executable, but it
is still an ELF binary and should be identified as such.

(From OE-Core rev: 8d9cca4956ba1d8438e185af8baa2b64809d7c86)

Signed-off-by: Peter Kjellerstedt <peter.kjellerstedt@axis.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-08-31 17:57:12 +01:00
Peter Kjellerstedt
269bea560c rpm: Create a wrapper for the native rpmdeps tool
Rather than trying to call rpmdeps with the correct arguments to work
with the sysroot as was done in package.bbclass, create a wrapper for
it like all the other native tools already had.

(From OE-Core rev: 8279881fb0a65b238c6d484a45a71b6c4dd433e2)

Signed-off-by: Peter Kjellerstedt <peter.kjellerstedt@axis.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-08-31 17:57:12 +01:00
Peter Kjellerstedt
e6aa58d0b0 rpm: Simplify the creation of wrappers for the native tools
Use a loop rather than calling create_wrapper for each individual
tool.

(From OE-Core rev: d052c534c5099b9927ec84b23e01341f0aa3ce7d)

Signed-off-by: Peter Kjellerstedt <peter.kjellerstedt@axis.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-08-31 17:57:12 +01:00
Peter Kjellerstedt
14effcc3d6 toaster.bbclass: Ignore some dependencies in toaster_buildhistory_dump()
When using RPM, depends.dot may contain dependencies such as
"/bin/sh", which will confuse _toaster_load_pkgdatafile(). Ignore
them. While at it, also ignore dependencies that contain parentheses,
e.g., "libc.so.6(GLIBC_2.7)".

(From OE-Core rev: 80c117f46442ef442e34b7681ed3688789f505ac)

Signed-off-by: Peter Kjellerstedt <peter.kjellerstedt@axis.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-08-31 17:57:11 +01:00
Peter Kjellerstedt
986de4b7f0 toaster.bbclass: Simplify parsing of depends.dot
By using a single regular expression, the parsing of the depends.dot
file can be simplified a lot. This should also make it less
susceptible to formatting changes in that file.

(From OE-Core rev: 20684149bb659b34d3bcac8f202cb95d607567c1)

Signed-off-by: Peter Kjellerstedt <peter.kjellerstedt@axis.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-08-31 17:57:11 +01:00
Peter Kjellerstedt
e56ff20931 buildhistory.bbclass: Improve the generated depends.dot file
* Convert incorrectly formatted dependencies such as:
    "bar -> "foo" ">=" "1.2.3"
  into dependencies with edge labels:
    "bar -> "foo" [label=">= 1.2.3"]
* Remove rpmlib() and config() dependencies such as:
    "foo" -> "rpmlib(CompressedFileNames)" [label="<= 3.0.4-1"]
  and:
    "base-files" -> "config(base-files)" [label="= 3.0.14-r89.49"]
* Remove the trailing semicolon that was added to each line. It fills
  no purpose.

(From OE-Core rev: 99ef2f26cf498e1693a947bb44e40c31c20ec525)

Signed-off-by: Peter Kjellerstedt <peter.kjellerstedt@axis.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-08-31 17:57:11 +01:00
Peter Kjellerstedt
b539afa655 insane.bbclass: Improve the handling of runtime file dependencies
This makes the file-rdeps test support:
* versioned dependencies, e.g., "perl (>= 5.000)", and
* package dependencies among the file dependencies, e.g., "perl".

It also ignores all "perl(...)" dependencies since it is expected that
these are generated and handled by rpm itself and there is no reason
to second guess what it is doing.

(From OE-Core rev: 6d64b110ed0c22f2bcd10cde437a13e03c15b23e)

Signed-off-by: Peter Kjellerstedt <peter.kjellerstedt@axis.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-08-31 17:57:11 +01:00
Peter Kjellerstedt
9d33b246ca insane.bbclass: Report all file-rdeps errors, not just the first
(From OE-Core rev: ee6f208a780062365e53fb9546eef55749e1c654)

Signed-off-by: Peter Kjellerstedt <peter.kjellerstedt@axis.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-08-31 17:57:11 +01:00
Peter Kjellerstedt
7defdff41f libxml2: Make ptest run the Python tests if Python support is enabled
Since we go through the trouble of copying the Python tests, we may as
well actually run them...

This also avoids the following QA issue:

  ERROR: libxml2-2.9.4-r0 do_package_qa: QA Issue:
  /usr/lib/libxml2/ptest/python/tests/push.py contained in package
  libxml2-ptest requires /usr/bin/python, but no providers found in
  RDEPENDS_libxml2-ptest? [file-rdeps]

(From OE-Core rev: 2b9470678d8df152af54899adb4774fb0d481cf3)

Signed-off-by: Peter Kjellerstedt <peter.kjellerstedt@axis.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-08-31 17:57:11 +01:00
Alexander Kanavin
26260d76b7 libxml2: move python module to Python 3
(From OE-Core rev: 30417429cea525e6eb6c3cfbe760ebe7b13f0980)

Signed-off-by: Alexander Kanavin <alexander.kanavin@linux.intel.com>
Signed-off-by: Ross Burton <ross.burton@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Signed-off-by: Peter Kjellerstedt <peter.kjellerstedt@axis.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-08-31 17:57:11 +01:00
Peter Kjellerstedt
01406f8bf6 package_manager.py: Generate correct RPM package names again
During the transition to RPM4, the package names returned by
RpmPM.list_installed() changed from the expected names of the packages
that were installed into the image to some fictitious source RPM
names.

This restores the original functionality so that the
installed-packages.txt files produced by inheriting buildhistory yet
again contains a list of the names of the installed packages.

(From OE-Core rev: cd982d5b8944fe231c7dd38c9a563d0fc0737b88)

Signed-off-by: Peter Kjellerstedt <peter.kjellerstedt@axis.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-08-31 17:57:11 +01:00
Peter Kjellerstedt
80d0ce002e gtk+3: Update the patches to work with old versions of patch
The patch "0003-Add-disable-opengl-configure-option.patch" used Git
rename syntax, which is not supported by patch 2.6.x and older.

(From OE-Core rev: 43e640ddcf32c718b3e0bb3f3654ed60eb497058)

(From OE-Core rev: 49343f8bada08f6c04359c002004c3eabb959375)

Signed-off-by: Peter Kjellerstedt <peter.kjellerstedt@axis.com>
Signed-off-by: Ross Burton <ross.burton@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-08-31 17:57:11 +01:00
Sona Sarmadi
5fd01704b9 connman: Fix for CVE-2017-12865
dnsproxy: Fix crash on malformed DNS response
If the response query string is malformed, we might access memory
pass the end of "name" variable in parse_response().

[YOCTO #11959]

(From OE-Core rev: fb3e30e45eea2042fdb0b667cbc2c79ae3f5a1a9)

(From OE-Core rev: cf1099babe7291d6f3f4d30eb503e1736437cfe0)

Signed-off-by: Sona Sarmadi <sona.sarmadi@enea.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Signed-off-by: Sona Sarmadi <sona.sarmadi@enea.com>

Conflicts:
	meta/recipes-connectivity/connman/connman_1.33.bb
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-08-30 11:12:30 +01:00
Mike Looijmans
9842f64154 rootfs-postcommands.bbclass: Prevent linking testdata to itself
testdata and testdata_link may point to the same file, in particular
when IMAGE_LINK_NAME and IMAGE_NAME are equal.

Check if this is the case before creating a symlink that points to
itself and makes the next build fail.

(From OE-Core rev: f8ceec50af68650d6548738e5b5582e2b25424d7)

Signed-off-by: Mike Looijmans <mike.looijmans@topic.nl>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-08-29 12:22:06 +01:00
Khem Raj
87b52832e8 gnu-efi: Fix build with gcc7
(From OE-Core rev: a253743f3e3badadb0afe90a277dd4d252b32c6c)

Signed-off-by: Khem Raj <raj.khem@gmail.com>
Signed-off-by: Ross Burton <ross.burton@intel.com>
Signed-off-by: Armin Kuster <akuster808@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-08-29 11:57:29 +01:00
Ross Burton
2ded079276 chrpath: use https for SRC_URI
Alioth always redirects, so we might as well save time by looking in the right
place.

(From OE-Core rev: 906ba241b76c79b2298c48bb915b2ef1bd820491)

Signed-off-by: Ross Burton <ross.burton@intel.com>
(cherry picked from commit e681e25fb8fb97a8592df69180d2fd85d136352c)
Signed-off-by: Armin Kuster <akuster808@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-08-29 11:57:29 +01:00
Saul Wold
86277e9408 systemtap: ensure systemtap-native is available
Since we are adding the addto_sysroot that that is specific to the
native recipe, we must split this into a seperate -native .bb recipe.

When systemtap-native is built, the intention is that it's usable
from the native sysroot when done, ensure it's there with a forced
addto_recipe_sysroot task, we also don't want to clean the sysroot
when RM_WORK is enabled otherwise we loose the binaries.

[YOCTO #11403]

(From OE-Core rev: 4d965cdb451f87ee7f9364d71e2eea94cf04d3ed)

Signed-off-by: Saul Wold <sgw@linux.intel.com>
(cherry picked from commit 2fdb59741b4fdeaa4aee10812c4a409cdc11a02d)
Signed-off-by: Saul Wold <sgw@linux.intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
(cherry picked from commit 98fba18e93abe8efce0a5b40d51e178c9de4d1e5)
Signed-off-by: Armin Kuster <akuster808@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-08-29 11:57:29 +01:00
Jackie Huang
6bc0d5069f ncurses: add SYSROOT_DESTDIR for siteconfig_gencache
After switching to Recipe Specific Sysroots, ncurses
will not be populated in its own sysroots, then
siteconfig_gencache fails to find some headers,
so add ${SYSROOT_DESTDIR}/${includedir} into the
search list to fix the issue.

(From OE-Core rev: 421850875a5dafa1deed0647b7b30b76df9b25cf)

Signed-off-by: Jackie Huang <jackie.huang@windriver.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
(cherry picked from commit 2ef34f7fb60ecdff29aae1d54a90a2e765c15e1e)
Signed-off-by: Armin Kuster <akuster808@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-08-29 11:57:29 +01:00
Andre McCurdy
85c41bfcf2 mirrors.bbclass: provide git repo fallbacks using the https protocol
Use MIRRORS to provide git repo fallbacks using the https protocol,
for cases where git native protocol fetches may fail due to local
firewall rules, etc.

These rules should cover all git native repos used by recipes within
oe-core, with the exception of mtd-utils, for which there's currently
no upstream alternative to the git native protocol for anonymous
access ( see http://git.infradead.org/mtd-utils.git ).

(From OE-Core rev: fe71cf3ded7109e0fa1812475479941c89873e4e)

Signed-off-by: Andre McCurdy <armccurdy@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
(cherry picked from commit abb8895d5b42a5dc171360a261a2652acd14ee7e)
Signed-off-by: Armin Kuster <akuster808@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-08-29 11:57:29 +01:00
Andre McCurdy
6da2983692 gnu-config: update SRC_URI to new savannah.gnu.org hostname
http://sv.gnu.org/ now redirects to http://savannah.gnu.org/

(From OE-Core rev: e5aa3325949e2db9ba22ed06d2b7709cd3415d69)

Signed-off-by: Andre McCurdy <armccurdy@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
(cherry picked from commit cf21f45fc7fa7a70df48e9eb6bdf38d0aa902f9b)
Signed-off-by: Armin Kuster <akuster808@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-08-29 11:57:29 +01:00
Tom Rini
43435bc2e4 image: Fix "metadata is not deterministic" when chaining 2+ CONVERSION_CMDs
When we have more than one CONVERSION_CMD being used, for example
ext4.gz.sha256sum we will see errors about "metadata is not
deterministic".  This is because we do not have a stable order of
intermediate files that will be removed in the generated shell command.
We fix this by calling sorted() on the set of rm_tmp_images so that we
will have a stable hash again.

Cc: Patrick Ohly <patrick.ohly@intel.com>
(From OE-Core rev: 26feb0580642ef8934206ea73cdce9e1f73d14ef)

Signed-off-by: Tom Rini <trini@konsulko.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
(cherry picked from commit 98a2afeb3a53bec7a72a4a9846e1dba636cc6f3d)
Signed-off-by: Armin Kuster <akuster808@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-08-29 11:57:29 +01:00
Tom Rini
88eec32150 image.bbclass: Correct chaining compression support
When chaining of compression/conversion types was added, we had a new
way to handle doing things like "ext4.bz2.sha256sum" or
"ext2.gz.u-boot".  However, because the U-Boot image class isn't
included normally, it wasn't properly converted at the time.  After the
support was added the "clean" argument that the .u-boot code uses no
longer functions.  The fix for this inadvertently broke chaining
compression/conversion.  First, correct the u-boot conversion code.

Fixes: 46bc438374de ("image.bbclass: do exact match for rootfs type")
Cc: Zhenhua Luo <zhenhua.luo@nxp.com>
Cc: Richard Purdie <richard.purdie@linuxfoundation.org>
Cc: Patrick Ohly <patrick.ohly@intel.com>
(From OE-Core rev: ad22f73519292f53d2ea6eaae99f8a919c4f2c26)

Signed-off-by: Tom Rini <trini@konsulko.com>
Signed-off-by: Ross Burton <ross.burton@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
(cherry picked from commit 0a7ce0b971a208956cb895ba5a869ec8c5d94703)
Signed-off-by: Armin Kuster <akuster808@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-08-29 11:57:29 +01:00
Martin Jansa
5a20323f20 mesa.inc: drop wrong path in --with-llvm-prefix and export LLVM_CONFIG
* this was added in oe-core/pyro but breaks all builds with llvm from
  meta-oe as reported in:
  http://lists.openembedded.org/pipermail/openembedded-core/2017-April/135050.html

* fix it by partial backport from master:
  http://git.openembedded.org/openembedded-core/commit/?id=da29bc17e4dd748f50b054c5e3afaf8d41bf4077
  but with different path as llvm-3.3 from meta-oe installs llvm-config in:
  ${STAGING_BINDIR_CROSS}/llvm-config
  while llvm-5.0 from oe-core master (rocko) in:
  ${STAGING_LIBDIR}/llvm${MESA_LLVM_RELEASE}/llvm-config-host"

(From OE-Core rev: 24f66a4e7a7fff915742d6cea26d2686f3147b19)

Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
Signed-off-by: Armin Kuster <akuster808@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-08-29 11:57:29 +01:00
Gan Yau Wai
b4ea7bfad6 insane.bbclass: fix override handling in RDEPENDS QA
The package_qa_check_rdepends() in insane.bbclass has
incorrectly replace its localdata OVERRIDES value with
the package name. Fixing it by appending the package name
to the existing OVERRIDES value. This resolves RDEPENDS QA
error when setting PACKAGECONFIG using a pn- override at
local.conf.

Cherry picked from master 60d28dd72daee235150ab6605cbf953f1ea691df

[YOCTO #11374]

(From OE-Core rev: ca84390b7894adb32a89ccfbd83fbb3fb7e808fc)

Signed-off-by: Gan Yau Wai <yau.wai.gan@intel.com>
Signed-off-by: Ross Burton <ross.burton@intel.com>
Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
Signed-off-by: Armin Kuster <akuster808@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-08-29 11:57:29 +01:00
Martin Jansa
4ec0cbceec icecc.bbclass: prevent nativesdk builds depending on target specific KERNEL_CC
* without this we cause nativesdk-linux-libc-headers to depend
  on target specific KERNEL_CC (through icecc_get_tool ->
  icecc_is_kernel -> KERNEL_CC -> HOST_CC_KERNEL_ARCH ->
  TARGET_CC_KERNEL_ARCH -> TUNE_FEATURES(thumb) as shown by
  bitbake-diffsigs:

  OE qemux86@ ~/build/oe-core $ ls /OE/build/oe-core/tmp-glibc/sstate-diff/1499859497/qemu*/*sdk*/*/*do_configure.sigdata*
  /OE/build/oe-core/tmp-glibc/sstate-diff/1499859497/qemuarm/x86_64-nativesdk-oesdk-linux/nativesdk-linux-libc-headers/4.10-r0.do_configure.sigdata.3a9a423878d56524e0ee8e42eba1804f
  /OE/build/oe-core/tmp-glibc/sstate-diff/1499859497/qemux86/x86_64-nativesdk-oesdk-linux/nativesdk-linux-libc-headers/4.10-r0.do_configure.sigdata.401071dbaa88903ece37d35a47965ff2

  OE qemux86@ ~/build/oe-core $ bitbake-diffsigs /OE/build/oe-core/tmp-glibc/sstate-diff/1499859497/qemu*/*sdk*/*/*do_configure.sigdata*
  basehash changed from 39774238b66763c598153132e87a2c1a to aa2d66e770bf533e312536eb0a401c4c
  Variable TARGET_CC_KERNEL_ARCH value changed from '${@bb.utils.contains('TUNE_FEATURES', 'thumb', '-mno-thumb-interwork-marm', '', d)} TUNE_FEATURES{thumb} = Set' to ''

(From OE-Core rev: b07bcfa3e4400f7763e2276f9be3dc702bb58c2e)

Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
Signed-off-by: Armin Kuster <akuster808@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-08-29 11:57:29 +01:00
Martin Jansa
f2a65bd268 v86d, qemuboot-x86.inc: use KERNEL_MODULE_AUTOLOAD+KERNEL_MODULE_PROBECONF for uvesafb instead of fbsetup init script
* also add UVESA_MODE variable for easier change of resolution and respect it in QB_KERNEL_CMDLINE_APPEND
  as well
* don't use init script just to call modprobe
* I wasn't able to test this all the way with runqemu, because runqemu
  doesn't work on my system, but I've verified that the right params
  appear there and that I can easily change UVESA_MODE from
  conf/local.conf, the modules.d and modprobe.d files look OK:
  OE qemux86@ ~/build/oe-core/tmp-glibc/deploy/images/qemux86/core-image-sato-qemux86-20170427212613.rootfs
  $ cat etc/modules-load.d/uvesafb.conf
  uvesafb

  OE qemux86@ ~/build/oe-core/tmp-glibc/deploy/images/qemux86/core-image-sato-qemux86-20170427212613.rootfs
  $ cat etc/modprobe.d/uvesafb.conf
  options uvesafb mode_option=1600x1200-32

  so I'll be able to drop this KERNEL_MODULE_AUTOLOAD +
  KERNEL_MODULE_PROBECONF from my DISTRO conf.

(From OE-Core rev: 3a8613a101aebf4f2a75ea95dac72202bbda8238)

Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
Signed-off-by: Armin Kuster <akuster808@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-08-29 11:57:28 +01:00
André Draszik
6f6a73f7ad linux-libc-headers: fix duplicate IFF_LOWER_UP DORMANT ECHO on musl
musl _does_ define IFF_LOWER_UP DORMANT ECHO so we should
prevent redefinition of these when on musl.

As per the included patch, this can be triggered by
(from connman 6to4.c):
    include <errno.h>
    include <stdio.h>
    include <stdlib.h>
    include <string.h>
    include <sys/socket.h>
    include <netinet/in.h>
    include <arpa/inet.h>
    include <net/if.h>
    include <linux/ip.h>
    include <linux/if_tunnel.h>
    include <linux/netlink.h>
    include <linux/rtnetlink.h>
    include <sys/ioctl.h>
    include <unistd.h>

In file included from ../git/src/6to4.c:34:0:
.../usr/include/linux/if.h:97:2: error: expected identifier before numeric constant
  IFF_LOWER_UP   = 1<<16, /* __volatile__ */
  ^

This is because at that time, IFF_LOWER_UP has been converted
to 0x10000 already:
enum net_device_flags {
 0x10000 = 1<<16,
 0x20000 = 1<<17,
 0x40000 = 1<<18,

};

Backport a patch that addresses this.

(From OE-Core rev: 24dc2200047bae5d32c168d2625d96ac08a93d3d)

(From OE-Core rev: 3683fdd01e76bc54121bb8421f908c183e8d66fc)

Signed-off-by: André Draszik <adraszik@tycoint.com>
Signed-off-by: Ross Burton <ross.burton@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Signed-off-by: Armin Kuster <akuster808@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-08-29 11:57:28 +01:00
Richard Röjfors
2002de4eae package_manager: Fix support for NO_RECOMMENDATONS
When support for dnf was introduced the check of the
no NO_RECOMMENDATIONS variable got broken.

This fixes the issue by compairing to the string "1"
rather than the number 1.

(From OE-Core rev: 5f9ea84d304a519acb0504516b86f2683a43f9e9)

Signed-off-by: Richard Röjfors <richard@puffinpack.se>
Signed-off-by: Ross Burton <ross.burton@intel.com>
(cherry picked from commit 1849ce3bd7c0af055f3e849a6508e746b6a0dca5)
Signed-off-by: Armin Kuster <akuster808@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-08-29 11:57:28 +01:00
Nicolas Dechesne
05f7969366 kernel.bbclass: fix KERNEL_IMAGETYPE(S) for Image.gz
KERNEL_IMAGETYPES lists all the kernel images that we want to build. in
cb17b6c2a7 (kernel.bbclass: support kernel image type of vmlinux.gz), some logic
was added to support vmlinux.gz which is not a target built by kernel
makefiles (only vmlinux). It is clear that the goal of this logic is only to
support vmlinux.gz and not others compressed format (such as Image.gz) which are
valid target for kernel makefiles.

For Image.gz we should rely on the kernel makefiles and not do the compression
in kernel class.

This patch updates the logic used to filter out non supported kernel target from
KERNEL_IMAGETYPES, and make vmlinux.gz a 'special case', instead of *.gz. If
more special cases are needed in the future, we could add them in a similar way.

This patch should be a no-op for anyone using vmlinux or vmlinux.gz, and on top
of that it is fixing the build for Image.gz which was not working until now.

(From OE-Core rev: d3a89450ae918f467a99ac1c33502fc9a5eb4162)

Signed-off-by: Nicolas Dechesne <nicolas.dechesne@linaro.org>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
(cherry picked from commit cfc0c897656fe67e81a6a5dcd936dff785529f41)
Signed-off-by: Nicolas Dechesne <nicolas.dechesne@linaro.org>
Signed-off-by: Armin Kuster <akuster808@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-08-29 11:57:28 +01:00
Andre McCurdy
ddb3a2f485 lsof: update SRC_URI
Upstream lsof releases are hosted on an ftp server which times out
download attempts from hosts for which it can not perform a DNS
reverse-lookup. See:

  https://people.freebsd.org/~abe/

http://www.mirrorservice.org seems to be the most commonly used
alternative (and using it for SRC_URI allows the custom
UPSTREAM_CHECK_URI to be removed).

(From OE-Core rev: bb14b19f2c63f88f5da372a6ad4a153da1fc0232)

Signed-off-by: Andre McCurdy <armccurdy@gmail.com>
Signed-off-by: Ross Burton <ross.burton@intel.com>
(cherry picked from commit 4e718242c1554021689a7946add055b22b81ec42)
Signed-off-by: Armin Kuster <akuster808@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-08-29 11:57:28 +01:00
Andre McCurdy
01429e2a64 lsof: minor recipe cleanup
- Add HOMEPAGE
  - Remove ${S} from LIC_FILES_CHKSUM path
  - Use tabs consistently to indent do_configure()
  - Re-order LIC_FILES_CHKSUM definition to follow OE style guide

(From OE-Core rev: 29f02bca78d7ded464e10d414a111c074d3de242)

Signed-off-by: Andre McCurdy <armccurdy@gmail.com>
Signed-off-by: Ross Burton <ross.burton@intel.com>
(cherry picked from commit 78701c5b873605240226c502de3b940097433596)
Signed-off-by: Armin Kuster <akuster808@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-08-29 11:57:28 +01:00
Kai Kang
a58b021b75 lsof: clear setuid
Having 'lsof' as a +s (setuid) binary could lead to security issues if
a compromise in the binary is found.  It is better that it be -s by
default as a precaution.

(From OE-Core rev: 6cf2891fe1526570c4e3eb8d78dc4d914d2d2079)

Signed-off-by: Kai Kang <kai.kang@windriver.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
(cherry picked from commit 346c65dd6855106069d1861ca965d3121eb084d1)
Signed-off-by: Armin Kuster <akuster808@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-08-29 11:57:28 +01:00
Mikko Rapeli
279e22c16b kernel.bbclass: set CVE_PRODUCT to linux_kernel if not set by recipe
It is used by NVD database CVE's like:

https://nvd.nist.gov/vuln/detail/CVE-2017-7273

Setting this in kernel.bbclass fixes CVE reporting for all users of
the class.

(From OE-Core rev: 9b27be77980fdd51423576712dfd6f4a031c3372)

Signed-off-by: Mikko Rapeli <mikko.rapeli@bmw.de>
Signed-off-by: Ross Burton <ross.burton@intel.com>
(cherry picked from commit 2e3d325440a50265c73f7d2e782530a02458bc33)
Signed-off-by: Armin Kuster <akuster808@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-08-29 11:57:28 +01:00
Ross Burton
24b0fa7324 elfutils: use HTTP instead of FTP to fetch
FTP is inferiour to HTTP is all respects, so use the HTTP URL for the tarball.

(From OE-Core rev: c190e5a884d85cb8d8783e78ad1a0489e56fac58)

Signed-off-by: Ross Burton <ross.burton@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
(cherry picked from commit 6a9e38be6e9dcbeff033944f9a3a18e3838af10d)
Signed-off-by: Armin Kuster <akuster808@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-08-29 11:57:28 +01:00
Mikko Rapeli
39e40d2490 cve-check.bbclass: use weak assignment for default CVE_PRODUCT
This way also bbclasses can override it. For example kernel.bbclass
could set CVE_PRODUCT to linux_kernel for all users of the class
which compile Linux kernels.

(From OE-Core rev: 478b90369c48351193e2bc5e2eb2b5308d55bb2e)

Signed-off-by: Mikko Rapeli <mikko.rapeli@bmw.de>
Signed-off-by: Ross Burton <ross.burton@intel.com>
(cherry picked from commit 74672a7de5ada45ab8e25b89cbdea3ec33b63b7f)
Signed-off-by: Armin Kuster <akuster808@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-08-29 11:57:28 +01:00
Mikko Rapeli
90acac9f21 wpa-supplicant_2.6.bb: set CVE_PRODUCT to wpa_supplicant
It is used in NVD database CVE's like:

https://nvd.nist.gov/vuln/detail/CVE-2015-1863

(From OE-Core rev: cabacf6ad5a2511f6eb93259a81ab14279fd96bb)

Signed-off-by: Mikko Rapeli <mikko.rapeli@bmw.de>
Signed-off-by: Ross Burton <ross.burton@intel.com>
(cherry picked from commit cc3882ca2fea2c5a8830311eeb7840ae98da9b3c)
Signed-off-by: Armin Kuster <akuster808@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-08-29 11:57:28 +01:00
Mikko Rapeli
77d6595116 sqlite3.inc: set CVE_PRODUCT to sqlite
It is used in NVD for CVE's like:

https://nvd.nist.gov/vuln/detail/CVE-2016-6153

(From OE-Core rev: 2dcd0f87bc8754afba09f6a1ed68eab19228c261)

Signed-off-by: Mikko Rapeli <mikko.rapeli@bmw.de>
Signed-off-by: Ross Burton <ross.burton@intel.com>
(cherry picked from commit cec6f26f4d2f16c9a58fac5a6344e3d43b36ed09)
Signed-off-by: Armin Kuster <akuster808@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-08-29 11:57:28 +01:00
Mikko Rapeli
be8fbfb22e quota_4.03.bb: set CVE_PRODUCT to linux_diskquota
It is used in NVD for CVE's like:

https://nvd.nist.gov/vuln/detail/CVE-2012-3417

(From OE-Core rev: cc9cca186fd1d4a7f2cb02484303ebb9f889c130)

Signed-off-by: Mikko Rapeli <mikko.rapeli@bmw.de>
Signed-off-by: Ross Burton <ross.burton@intel.com>
(cherry picked from commit 07be7cb9405e4a6289edad8afb3a50c1f8651620)
Signed-off-by: Armin Kuster <akuster808@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-08-29 11:57:28 +01:00
Mikko Rapeli
908e666fcb lttng-ust_2.9.1.bb: set CVE_PRODUCT to ust
It is used in NVD for CVE's like:

https://nvd.nist.gov/vuln/detail/CVE-2010-3386

(From OE-Core rev: 847124c9cc09922155c4238571257833c49262df)

Signed-off-by: Mikko Rapeli <mikko.rapeli@bmw.de>
Signed-off-by: Ross Burton <ross.burton@intel.com>
(cherry picked from commit 1c6643f139911ab27618d20f9d4ca609235a680b)
Signed-off-by: Armin Kuster <akuster808@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-08-29 11:57:28 +01:00
Mikko Rapeli
5b56c220e6 python.inc: set CVE_PRODUCT to python
All python versions are just python in NVD like this CVE
for python 3.4.4:

https://nvd.nist.gov/vuln/detail/CVE-2016-5699

(From OE-Core rev: b5a5a8368629f8176d8a340e3f8b1cc6734460e5)

Signed-off-by: Mikko Rapeli <mikko.rapeli@bmw.de>
Signed-off-by: Ross Burton <ross.burton@intel.com>
(cherry picked from commit 848e1be494e8ea10c729f95f02acb366e1843d75)
Signed-off-by: Armin Kuster <akuster808@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-08-29 11:57:28 +01:00
Mikko Rapeli
335d3cc262 nspr_4.14.bb: set CVE_PRODUCT to netscape_portable_runtime
This is used in NVD database entries like CVE:

https://nvd.nist.gov/vuln/detail/CVE-2016-1951

(From OE-Core rev: 183c3b4455a6c358000a775e3e5806467726b730)

Signed-off-by: Mikko Rapeli <mikko.rapeli@bmw.de>
Signed-off-by: Ross Burton <ross.burton@intel.com>
(cherry picked from commit c75e5d3f4b9293cf2f2ebdd3a23743b3df7aa3df)
Signed-off-by: Armin Kuster <akuster808@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-08-29 11:57:27 +01:00
Mikko Rapeli
96e31260d4 libsndfile1_1.0.28.bb: set CVE_PRODUCT to libsndfile
It is used in NVD to CVE's like:

https://nvd.nist.gov/vuln/detail/CVE-2017-6892

(From OE-Core rev: 0ee67de1028ea3275b6dfe398235e71c4bdbb704)

Signed-off-by: Mikko Rapeli <mikko.rapeli@bmw.de>
Signed-off-by: Ross Burton <ross.burton@intel.com>
(cherry picked from commit adfb1c7fe28a6ef2bcf698f7415fd86b01bdc489)
Signed-off-by: Armin Kuster <akuster808@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-08-29 11:57:27 +01:00
Mikko Rapeli
b0655ebcbb libsamplerate0_0.1.9.bb: set CVE_PRODUCT to libsamplerate
It is used in NVD for CVE's like:

https://nvd.nist.gov/vuln/detail/CVE-2017-7697

(From OE-Core rev: fca2207f67a51de616f297ee015b9bd22eb3a3a1)

Signed-off-by: Mikko Rapeli <mikko.rapeli@bmw.de>
Signed-off-by: Ross Burton <ross.burton@intel.com>
(cherry picked from commit baafa21919082a8b61af3345c35922d205b254c6)
Signed-off-by: Armin Kuster <akuster808@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-08-29 11:57:27 +01:00
Mikko Rapeli
156c033a3b libpcre2_10.23.bb: set CVE_PRODUCT to pcre2
It is used in NVD as product name for CVE's like:

https://nvd.nist.gov/vuln/detail/CVE-2017-8786

(From OE-Core rev: 594a729950272b6596567dca1d4aa6f147ba3085)

Signed-off-by: Mikko Rapeli <mikko.rapeli@bmw.de>
Signed-off-by: Ross Burton <ross.burton@intel.com>
(cherry picked from commit ce32c5b8ee77012b36c74323f298dc561741aebd)
Signed-off-by: Armin Kuster <akuster808@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-08-29 11:57:27 +01:00
Mikko Rapeli
9b81f32906 libpcre_8.40.bb: set CVE_PRODUCT to prce
It is used in NVD for CVE's like:

https://nvd.nist.gov/vuln/detail/CVE-2017-7246

(From OE-Core rev: a561cc581ae9d9a7ae3eb90ee0563f3b47ba843c)

Signed-off-by: Mikko Rapeli <mikko.rapeli@bmw.de>
Signed-off-by: Ross Burton <ross.burton@intel.com>
(cherry picked from commit 523e823988f08679a384a14c4e768b2819f8a6bf)
Signed-off-by: Armin Kuster <akuster808@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-08-29 11:57:27 +01:00
Mikko Rapeli
7657c7f5e8 icu.inc: set CVE_PRODUCT to international_components_for_unicode
NVD uses it for CVE's like:

https://nvd.nist.gov/vuln/detail/CVE-2014-8146

(From OE-Core rev: d1a603972e2809e655d79f8dc366a161b8759a77)

Signed-off-by: Mikko Rapeli <mikko.rapeli@bmw.de>
Signed-off-by: Ross Burton <ross.burton@intel.com>
(cherry picked from commit eaac39100cadc81c89e6eb5ab389cd684699aa90)
Signed-off-by: Armin Kuster <akuster808@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-08-29 11:57:27 +01:00
Mikko Rapeli
b7754933b7 glibc-common.inc: set CVE_PRODUCT to glibc
All recipes which include this .inc map to glibc NVD component.

(From OE-Core rev: 5e11fa22f0b9ee18878b49389603ddf5533cbbc4)

Signed-off-by: Mikko Rapeli <mikko.rapeli@bmw.de>
Signed-off-by: Ross Burton <ross.burton@intel.com>
(cherry picked from commit 613a13725db4e05539974cc7c66584a287d7b4bd)
Signed-off-by: Armin Kuster <akuster808@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-08-29 11:57:27 +01:00
Mikko Rapeli
db8f4f24ce glib.inc: set CVE_PRODUCT to glib
NVD uses product glib and vendor gnome for CVE's like:

https://nvd.nist.gov/vuln/detail/CVE-2016-6855

(From OE-Core rev: 9621f46bde37e27dd323305d0c1e987a7cca37aa)

Signed-off-by: Mikko Rapeli <mikko.rapeli@bmw.de>
Signed-off-by: Ross Burton <ross.burton@intel.com>
(cherry picked from commit 69d6342d45316389afb4b062088919689db0a6dd)
Signed-off-by: Armin Kuster <akuster808@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-08-29 11:57:27 +01:00
Mikko Rapeli
fe3f704f10 gcc-common.inc: set CVE_PRODUCT to gcc
All recipes which include this are using gcc as product name in NVD like

https://nvd.nist.gov/vuln/detail/CVE-2015-5276

(From OE-Core rev: 8e1b34aab4bd390f53945789c91a69883613d778)

Signed-off-by: Mikko Rapeli <mikko.rapeli@bmw.de>
Signed-off-by: Ross Burton <ross.burton@intel.com>
(cherry picked from commit bd6f1430334412588c143d8029be39fe814672cd)
Signed-off-by: Armin Kuster <akuster808@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-08-29 11:57:27 +01:00
Mikko Rapeli
8142d69111 flac_1.3.1.bb: set CVE_PRODUCT to libflac
NVD uses product name libflac for CVE's like:

https://nvd.nist.gov/vuln/detail/CVE-2014-8962

(From OE-Core rev: 4fb024450b8f2b7de01969c32e8a6fbcc8f50019)

Signed-off-by: Mikko Rapeli <mikko.rapeli@bmw.de>
Signed-off-by: Ross Burton <ross.burton@intel.com>
(cherry picked from commit e09bd27059b26affddf466f4e55a7f4c719c3b17)
Signed-off-by: Armin Kuster <akuster808@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-08-29 11:57:27 +01:00
Mikko Rapeli
300fb6df80 eglinfo.inc: set CVE_PRODUCT to eglinfo
Upstream is called eglinfo no matter how the recipes are named.
There are no existing CVE's for eglinfo in NVD yet.

(From OE-Core rev: a7273020c29a5ecd074618daa5e68b55ee6f7451)

Signed-off-by: Mikko Rapeli <mikko.rapeli@bmw.de>
Signed-off-by: Ross Burton <ross.burton@intel.com>
(cherry picked from commit 0b8e2a017e117810c83039a316a11da66fe148b1)
Signed-off-by: Armin Kuster <akuster808@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-08-29 11:57:27 +01:00
Mikko Rapeli
c645465839 bluez5.inc: set CVE_PRODUCT to bluez
bluez is the product name in NVD database for CVE's like:

https://nvd.nist.gov/vuln/detail/CVE-2016-7837

(From OE-Core rev: 07b5c85808a2346823de80f5e36474ca40d41cb0)

Signed-off-by: Mikko Rapeli <mikko.rapeli@bmw.de>
Signed-off-by: Ross Burton <ross.burton@intel.com>
(cherry picked from commit aade84aa54bb2f958572623ed6464184efd19862)
Signed-off-by: Armin Kuster <akuster808@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-08-29 11:57:27 +01:00
Mikko Rapeli
b2cc8e045e acpid.inc: set CVE_PRODUCT to acpid2
It is used in NVD database for CVE's like:

https://nvd.nist.gov/vuln/detail/CVE-2011-4578

(From OE-Core rev: ce9bcefc0289b0e976af31145b41ece7a3ae7799)

Signed-off-by: Mikko Rapeli <mikko.rapeli@bmw.de>
Signed-off-by: Ross Burton <ross.burton@intel.com>
(cherry picked from commit 966052df79df0f68565ebc40887170322d3f85b8)
Signed-off-by: Armin Kuster <akuster808@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-08-29 11:57:27 +01:00
Richard Purdie
98dcaa9d2c uninative: Update to 1.7 uninative release
This updates to a newer glibc and updates patchelf to include a bugfix
to work with gold.

(From OE-Core rev: a2ab288bd002ebb6e64d46e941fb122e1157ff49)

(From OE-Core rev: bc22fe6cc000283cb3bf088f15ef63fdb3cb0449)

Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-08-29 11:57:27 +01:00
Kristi Rifenbark
4a39979c8d poky.ent: Updated CentOS required package
Replaced "python34-pip" package with "python3-pip"
in the list of required packages for CentOS' variable.

(From yocto-docs rev: b4527e8b4272ae2d2716c7cb480f58e7c26031d7)

Signed-off-by: Kristi Rifenbark <kristi.rifenbark@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-07-30 16:23:45 +01:00
Kristi Rifenbark
08d3bdf25e poky.ent: Corrected package duplication
Removed duplicated package, "which" in list of
required packages for Fedora's variable.

(From yocto-docs rev: 58f47d63eee695adaaed7261a9fc3ce46e3ca291)

Signed-off-by: Kristi Rifenbark <kristi.rifenbark@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-07-30 16:23:45 +01:00
David Reyna
9d7c958940 bitbake: toaster: noweb should init database
When the 'noweb' option for Toaster is used, perform the database
check/create if the Toaster database does not yet exist.

This will allow Toaster to not fail if the first use is with 'noweb'.
This avoids potentially clashing database updates if there are
multiple overlaping 'noweb' sessions (for example with a CI system).

If the user wished to update the database, they can either use the
explicit "lsupdate" command or (re)start a web hosted Toaster session
(which is gated by the webserver's PID).

[YOCTO #11378]

(Bitbake rev: 4966a56bea7e404c574c197bdaaeb12ead895021)

Signed-off-by: David Reyna <David.Reyna@windriver.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-07-27 22:36:46 +01:00
David Reyna
4b35d0a012 bitbake: toaster: get_last_build_id not called correctly
The method "get_last_build_id" missing the "()" in several calls. This
has been failing silently with Django 1.8 but intermittently crash with
Django 1.9.

[YOCTO #11570]

(Bitbake rev: 98e424c2cd3ce8bc7df247263e44a6d6d9ede3e6)

Signed-off-by: David Reyna <David.Reyna@windriver.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-07-27 22:36:46 +01:00
David Reyna
b161cb0c35 bitbake: toaster: add getMessage to MockEvent
The MockEvent needs to not only stand in for Toaster and Bitbake quick events,
it also needs to stand in for LogRecord, and for that it needs to provide
the new getMessage method.

[YOCTO #11440]

(Bitbake rev: e95ed33726b2a6d03382e07c6efe2ab574f84ee8)

Signed-off-by: David Reyna <David.Reyna@windriver.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-07-27 22:36:46 +01:00
David Reyna
55f8db0246 bitbake: toaster: fail on layers with sub-layer
For layers directories with sub-layers (for example meta-intel),
Toaster breaks when trying to exact match a dependency event for
that sub-layer against the top level layer directory paths.

Given that top the level layer directory paths are unique, adding
a test to see if the dependency path is a subset of a top level
path is also unique.

Also, since a warning was issued the processing should not fail
on the assert but instead should continue and gather the recipes
and tasks.

[YOCTO #11149]

(Bitbake rev: e1c769eed2258bb2697e9558f484dd62a3da7399)

Signed-off-by: David Reyna <David.Reyna@windriver.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-07-27 22:36:46 +01:00
David Reyna
f505d9fad9 bitbake: toaster: add ID's to build menu links
Add IDs to the build page menu lines, for example "Tasks", "Recipes",
"Time", "CPU Time", "Disk I/O", and so forth. This will support test
automation.

[YOCTO #11337]

(Bitbake rev: 0bd1fcdbfa6b9bf4642f1a2b1d46767c7c15a5d1)

Signed-off-by: David Reyna <David.Reyna@windriver.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-07-27 22:36:46 +01:00
David Reyna
1a8d911989 bitbake: toaster: add ID's to navigation links
Add IDs to the navigation bar links "All builds", "All projects",
and "Documentation. This will support test automation.

[YOCTO #11335]

(Bitbake rev: 4734001672cb35789be5a8d5c8b91ca57821bdba)

Signed-off-by: David Reyna <David.Reyna@windriver.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-07-27 22:36:45 +01:00
Paul Eggleton
a19c27b807 classes/staging: change fixme debug message from note to debug
These messages were added for debugging during the recipe specific
sysroot work. They may still be useful but they don't need to be notes -
if they are they show up in recipetool / devtool output when fetching
source.

(From OE-Core rev: a0e93d5c5dcf59d1898a3db727a5ab2d75e3d20e)

(From OE-Core rev: 81246ed59215b8f62800cfb20d8b71d8e528c0ec)

Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
(cherry picked from commit bc1a4af950a2600028d89b7dcb4ff8f409b52739)
Signed-off-by: Armin Kuster <akuster808@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-07-27 22:36:45 +01:00
Bruce Ashfield
6886e958df linux-yocto/4.9: update to v4.9.36
Integrating the -stable release with the following commits:

   9f86f302ec0e Linux 4.9.36
   a29fd27ca268 KVM: nVMX: Fix exception injection
   d1d3756f07da KVM: x86: zero base3 of unusable segments
   f3c3ec96e5fb KVM: x86/vPMU: fix undefined shift in intel_pmu_refresh()
   1eeb79426332 KVM: x86: fix emulation of RSM and IRET instructions
   982d8d92f256 arm64: fix NULL dereference in have_cpu_die()
   a4bfcab30928 mtd: nand: brcmnand: Check flash #WP pin status before nand erase/program
   de5862335ed7 i2c: brcmstb: Fix START and STOP conditions
   8ee785016d5a brcmfmac: avoid writing channel out of allocated array
   65fc82cea84f infiniband: hns: avoid gcc-7.0.1 warning for uninitialized data
   3e51ccbadd15 objtool: Fix another GCC jump table detection issue
   92e66676523a clk: scpi: don't add cpufreq device if the scpi dvfs node is disabled
   8a6f400a374c cpufreq: s3c2416: double free on driver init error path
   1781a29b31fa iommu/amd: Fix interrupt remapping when disable guest_mode
   0e55856b8f29 iommu/amd: Fix incorrect error handling in amd_iommu_bind_pasid()
   f0c31c674abd iommu/dma: Don't reserve PCI I/O windows
   d7fcb303d1ee iommu: Handle default domain attach failure
   c19bfc6765d4 iommu/vt-d: Don't over-free page table directories
   d5c5e8ba5d9d ocfs2: o2hb: revert hb threshold to keep compatible
   8af88a950b42 x86/mm: Fix flush_tlb_page() on Xen
   3667dafd6c04 x86/mpx: Correctly report do_mpx_bt_fault() failures to user-space
   b287ade87c91 x86/boot/KASLR: Fix kexec crash due to 'virt_addr' calculation bug
   15541e64163c tools arch: Sync arch/x86/lib/memcpy_64.S with the kernel
   a2c222bef08f ARM: 8685/1: ensure memblock-limit is pmd-aligned
   7661b19687b2 ARM64/ACPI: Fix BAD_MADT_GICC_ENTRY() macro implementation
   4efe34b500a7 ARM: dts: OMAP3: Fix MFG ID EEPROM
   07bb2c7e7ea3 ARM: OMAP2+: omap_device: Sync omap_device and pm_runtime after probe defer
   e57aa416ca4c regulator: tps65086: Fix DT node referencing in of_parse_cb
   88baad2e7159 regulator: tps65086: Fix expected switch DT node names
   9846c67974d6 spi: fix device-node leaks
   c52829f60f5f spi: When no dma_chan map buffers with spi_master's parent
   478273e11521 sched/loadavg: Avoid loadavg spikes caused by delayed NO_HZ accounting
   eea0261db8ef watchdog: bcm281xx: Fix use of uninitialized spinlock.
   4211442b2088 netfilter: use skb_to_full_sk in ip_route_me_harder
   ac2730234cc1 xfrm: Oops on error in pfkey_msg2xfrm_state()
   c460f2beb6f0 xfrm: NULL dereference on allocation failure
   1e1666257cb6 xfrm: fix stack access out of bounds with CONFIG_XFRM_SUB_POLICY
   647f605276c0 mm/vmalloc.c: huge-vmap: fail gracefully on unexpected huge vmap mappings
   f9f73c58feef ravb: Fix use-after-free on `ifconfig eth0 down`
   adfe95fe5b42 ip6_tunnel, ip6_gre: fix setting of DSCP on encapsulated packets
   168bd51ec5ef sctp: check af before verify address in sctp_addr_id2transport
   399566f8a4fb net/mlx4_core: Eliminate warning messages for SRQ_LIMIT under SRIOV
   b6f75b986a7f perf probe: Fix to probe on gcc generated functions in modules
   9f8ffe4e0952 tipc: allocate user memory with GFP_KERNEL flag
   18b200e0c8ee net: phy: dp83867: allow RGMII_TXID/RGMII_RXID interface types
   e1eac347d971 perf probe: Fix to show correct locations for events on modules
   cc439964fab1 be2net: fix MAC addr setting on privileged BE3 VFs
   02434def6fd0 be2net: don't delete MAC on close on unprivileged BE3 VFs
   fa1dbf505aef be2net: fix status check in be_cmd_pmac_add()
   5f54c4e1e2af usb: dwc2: gadget: Fix GUSBCFG.USBTRDTIM value
   0e9867b7113c s390/ctl_reg: make __ctl_load a full memory barrier
   9d00195bc0af swiotlb: ensure that page-sized mappings are page-aligned
   68a5dc385735 coredump: Ensure proper size of sparse core files
   d21816c24591 aio: fix lock dep warning
   82835fb33ce5 perf/x86: Reject non sampling events with precise_ip
   1c68633329d2 perf/core: Fix sys_perf_event_open() vs. hotplug
   48131dd0f2b1 x86/mpx: Use compatible types in comparison to fix sparse error
   283994074501 x86/tsc: Add the Intel Denverton Processor to native_calibrate_tsc()
   6baa8c92dab9 mac80211: initialize SMPS field in HT capabilities
   8eaaf66d41ad pmem: return EIO on read_pmem() failure
   25319ae8e8a7 drm/amd/powerplay: refine vce dpm update code on Cz.
   f275ac7fc5d2 drm/amd/powerplay: fix vce cg logic error on CZ/St.
   77e82094a3c9 drm/radeon/si: load special ucode for certain MC configs
   4ae8dc6acb71 net: thunderx: acpi: fix LMAC initialization
   f88f06e18318 arm64: assembler: make adr_l work in modules under KASLR
   aabb797b4c12 spi: davinci: use dma_mapping_error()
   c32462d0b523 scsi: lpfc: avoid double free of resource identifiers
   582c1ca0ea1d HID: i2c-hid: Add sleep between POWER ON and RESET
   c78b8de5c05c perf/x86/intel: Use ULL constant to prevent undefined shift behaviour
   6130fac99481 mac80211: recalculate min channel width on VHT opmode changes
   d48cb21fd50b net: phy: marvell: fix Marvell 88E1512 used in SGMII mode
   849f2d0665e0 pinctrl: intel: Set pin direction properly
   3a6edbc95ba0 perf/x86/intel/uncore: Fix hardcoded socket 0 assumption in the Haswell init code
   b8c5e7b12413 drm/etnaviv: trick drm_mm into giving out a low IOVA
   2bc8fcd633d8 Documentation: devicetree: change the mediatek ethernet compatible string
   c5c8743642ae kernel/panic.c: add missing \n
   00f468f51dd5 ibmveth: Add a proper check for the availability of the checksum features
   32bd4d2ed9d8 vxlan: do not age static remote mac entries
   b07bf2364605 ip6_tunnel: must reload ipv6h in ip6ip6_tnl_xmit()
   7fdc81f6e1a9 virtio_net: fix PAGE_SIZE > 64k
   a6c3e01bf32e mlxsw: spectrum_router: Correctly reallocate adjacency entries
   ff3b1dd026bb vfio/spapr: fail tce_iommu_attach_group() when iommu_data is null
   8895ef4e5357 drm/amdgpu: check ring being ready before using
   e5a2ba9af818 net: dsa: Check return value of phy_connect_direct()
   c6f284899e01 amd-xgbe: Check xgbe_init() return code
   e99d86d76eed platform/x86: ideapad-laptop: handle ACPI event 1
   e9a87e0f5bbb iwlwifi: fix kernel crash when unregistering thermal zone
   322baf72eed5 scsi: virtio_scsi: Reject commands when virtqueue is broken
   5d5c293af834 xen-netfront: Fix Rx stall during network stress and OOM
   72191c7d82e7 swiotlb-xen: update dev_addr after swapping pages
   884baf2abf6d virtio_console: fix a crash in config_work_handler
   c3eab85ff11a Btrfs: fix truncate down when no_holes feature is enabled
   e8b5068b64d0 Btrfs: Fix deadlock between direct IO and fast fsync
   83571e9ef7c9 gianfar: Do not reuse pages from emergency reserve
   c48a862c47d4 objtool: Fix IRET's opcode
   251d00bf1309 bpf: don't trigger OOM killer under pressure with map alloc
   a7a2a6d34fe7 bnxt_en: Fix "uninitialized variable" bug in TPA code path.
   da805bc788b0 xen-netback: protect resource cleaning on XenBus disconnect
   7bdccaa5da12 xen-netback: fix memory leaks on XenBus disconnect
   5dcd08594276 net: ethtool: Initialize buffer when querying device channel settings
   6e315b2b10b6 powerpc/eeh: Enable IO path on permanent error
   ea7b808165a5 net: korina: Fix NAPI versus resources freeing
   fded17be01ab perf/x86/intel: Handle exclusive threadid correctly on CPU hotplug
   3eeb3459b7e6 net: phy: dp83848: add DP83620 PHY support
   10c24e89b2b8 drm/amdgpu: add support for new hainan variants
   9f2a36a7504c drm/amdgpu: fix program vce instance logic error.
   0c9626619777 qla2xxx: Fix erroneous invalid handle message
   8cfcaa2899f3 qla2xxx: Terminate exchange if corrupted
   42a1d5b47594 scsi: lpfc: Set elsiocb contexts to NULL after freeing it
   7782ab228f64 stmmac: add missing of_node_put
   ee4494c6bda8 scsi: sd: Fix wrong DPOFUA disable in sd_read_cache_type
   80b1a1180e4e KVM: x86: fix fixing of hypercalls
   afaee3ef5136 xen/blkback: don't free be structure too early
   13fa36f9fbc8 ARM64: dts: meson-gxbb-odroidc2: fix GbE tx link breakage
   8bface142a8d dt: bindings: net: use boolean dt properties for eee broken modes
   3897ae12b706 net: phy: use boolean dt properties for eee broken modes
   40373d91a0f7 net: phy: fix sign type error in genphy_config_eee_advert
   752ba680eb70 dt-bindings: net: add EEE capability constants
   97ace183074d net: phy: add an option to disable EEE advertisement
   0e8eca987e27 net: ethtool: add support for 2500BaseT and 5000BaseT link modes
   8886196a7320 sparc64: Zero pages on allocation for mondo and error queues.
   41172b772da4 sparc64: Handle PIO & MEM non-resumable errors.
   2aa6d036b716 mm: numa: avoid waiting on freed migrated pages
   08cb8e5f83fd l2tp: take a reference on sessions used in genetlink handlers
   599e6f038777 l2tp: hold session while sending creation notifications
   d9face6fc62a l2tp: fix duplicate session creation
   806e98835683 l2tp: ensure session can't get removed during pppol2tp_session_ioctl()
   6539c4f991c2 l2tp: fix race in l2tp_recv_common()
   d2da8d394147 usb: gadget: f_fs: Fix possibe deadlock
   ed96148d7f8e x86/mm: Fix boot crash caused by incorrect loop count calculation in sync_global_pgds()
   1c0fa383b339 dm thin: do not queue freed thin mapping for next stage processing
   466877f2d257 drm/vmwgfx: Free hash table allocated by cmdbuf managed res mgr
   78c4244f8bdb gpiolib: fix filtering out unwanted events
   cb2c6fdf620f NFSv4.1: Fix a race in nfs4_proc_layoutget
   7d0e27fe24c5 ALSA: hda - set input_path bitmap to zero after moving it to new place
   093750c3dec4 ALSA: hda - Fix endless loop of codec configure
   dad3135e762b MIPS: Fix IRQ tracing & lockdep when rescheduling
   e9e24faf823e MIPS: pm-cps: Drop manual cache-line alignment of ready_count
   f7d3d40ea124 MIPS: Avoid accidental raw backtrace
   3d4ac49a9538 MIPS: head: Reorder instructions missing a delay slot
   b1355226a64e mm, swap_cgroup: reschedule when neeed in swap_cgroup_swapoff()
   dbc808362b6c drm/ast: Handle configuration without P2A bridge
   8dc9f9dede5b xen/blkback: don't use xen_blkif_get() in xen-blkback kthread
   4ebe28d23d35 NFSv4.x/callback: Create the callback service through svc_create_pooled
   955f270b6f5d NFSv4: fix a reference leak caused WARNING messages
   b89bd0c715c1 netfilter: synproxy: fix conntrackd interaction
   ced7689be60d netfilter: xt_TCPMSS: add more sanity tests on tcph->doff
   8e2316399b8f rtnetlink: add IFLA_GROUP to ifla_policy
   b9ca9b0f5510 ipv6: Do not leak throw route references
   e4089baa08c4 sfc: provide dummy definitions of vswitch functions
   08058c258afb net: 8021q: Fix one possible panic caused by BUG_ON in free_netdev
   f1a0e7d172b0 decnet: always not take dst->__refcnt when inserting dst into hash table
   c7d422d68fe9 net/mlx5e: Fix timestamping capabilities reporting
   25ff35074e27 net/mlx5: Wait for FW readiness before initializing command interface
   176b9874a203 net/mlx5e: Avoid doing a cleanup call if the profile doesn't have it
   4c246863e7b4 sctp: return next obj by passing pos + 1 into sctp_transport_get_idx
   fded2d74a350 ipv6: fix calling in6_ifa_hold incorrectly for dad work
   cac2a9bb4034 igmp: add a missing spin_lock_init()
   ecd6627f48bd igmp: acquire pmc lock for ip_mc_clear_src()
   059686754c18 proc: snmp6: Use correct type in memset
   78b24ab695ab net/mlx5e: Fix wrong indications in DIM due to counter wraparound
   9854e5865990 net/mlx5e: Added BW check for DIM decision mechanism
   57360bc3c7a6 net: tipc: Fix a sleep-in-atomic bug in tipc_msg_reverse
   bb566ce3a60e net: caif: Fix a sleep-in-atomic bug in cfpkt_create_pfx
   8cda426a7cfa sctp: disable BH in sctp_for_each_endpoint
   c6d4ff85722b Fix an intermittent pr_emerg warning about lo becoming free.
   bb84290cd296 af_unix: Add sockaddr length checks before accessing sa_family in bind and connect handlers
   386ed38f0f28 net: vrf: Make add_fib_rules per network namespace flag
   b5cc68e0c190 net: Zero ifla_vf_info in rtnl_fill_vfinfo()
   fd9b13e6c175 decnet: dn_rtmsg: Improve input length sanitization in dnrmg_receive_user_skb
   d2f459e3feb0 net: don't call strlen on non-terminated string in dev_set_alias()
   98184bbb8dae ipv6: release dst on error in ip6_dst_lookup_tail
   92905e331aea Linux 4.9.35
   855b08e57777 brcmfmac: fix uninitialized warning in brcmf_usb_probe_phase2()
   21eaaa76b701 jump label: fix passing kbuild_cflags when checking for asm goto support
   ffa96c1a6afe net: phy: fix marvell phy status reading
   5da6415e427b spi: double time out tolerance
   25c7794ed046 dmaengine: bcm2835: Fix cyclic DMA period splitting
   81135c71bde3 net: phy: Initialize mdio clock at probe function
   948c4f17ab7e rt2x00: avoid introducing a USB dependency in the rt2x00lib module
   225969acc0f1 usb: gadget: f_fs: avoid out of bounds access on comp_desc
   5306119473b2 mtd: spi-nor: fix spansion quad enable
   dcd015f733a7 of: Add check to of_scan_flat_dt() before accessing initial_boot_params
   f20603874211 rxrpc: Fix several cases where a padded len isn't checked in ticket decode
   581659a87820 drm/amdgpu: adjust default display clock
   217e035d5120 drm/amdgpu/atom: fix ps allocation size for EnableDispPowerGating
   e4b8d1e84410 drm/radeon: add a quirk for Toshiba Satellite L20-183
   61ea7c2817bd drm/radeon: add a PX quirk for another K53TK variant
   3900f24aa6fa iscsi-target: Reject immediate data underflow larger than SCSI transfer length
   463440e6de4a iscsi-target: Fix delayed logout processing greater than SECONDS_FOR_LOGOUT_COMP
   1f576d53d854 target: Fix kref->refcount underflow in transport_cmd_finish_abort
   99f66b5182a4 arm64/vdso: Fix nsec handling for CLOCK_MONOTONIC_RAW
   a53bfdda06ac time: Fix CLOCK_MONOTONIC_RAW sub-nanosecond accounting
   02a37ccd6347 time: Fix clock->read(clock) race around clocksource changes
   c81d034bd09a brcmfmac: unbind all devices upon failure in firmware callback
   ba2d8d67875c brcmfmac: use firmware callback upon failure to load
   1dd15bd62221 brcmfmac: add parameter to pass error code in firmware callback
   20d8f785f974 Input: i8042 - add Fujitsu Lifebook AH544 to notimeout list
   8eaa481dfb4c powerpc/64s: Handle data breakpoints in Radix mode
   414f51ceb6ff powerpc/kprobes: Pause function_graph tracing during jprobes handling
   f719f20abe2a signal: Only reschedule timers on signals timers have sent
   99afebe8fef9 HID: Add quirk for Dell PIXART OEM mouse
   cdf300d6105d cxgb4: notify uP to route ctrlq compl to rdma rspq
   fb6dc831b5cf CIFS: Improve readdir verbosity
   2f1527e359f4 KVM: PPC: Book3S HV: Context-switch EBB registers properly
   468aa930c0a2 KVM: PPC: Book3S HV: Preserve userspace HTM state properly
   df3a787b3a71 KVM: s390: gaccess: fix real-space designation asce handling for gmap shadows
   5220378bd91c perf/x86/intel: Add 1G DTLB load/store miss support for SKL
   7c679fe729c2 lib/cmdline.c: fix get_options() overflow while parsing ranges
   bc6eecff3d95 autofs: sanity check status reported with AUTOFS_DEV_IOCTL_FAIL
   4b660fcbc64e powerpc/perf: Fix oops when kthread execs user process
   3d6848e491df fs/exec.c: account for argv/envp pointers
   552a14a572a2 ALSA: pcm: Don't treat NULL chmap as a fatal error
   8c9c55a0f576 ALSA: firewire-lib: Fix stall of process context at packet error
   4ae2cb91a636 xen-blkback: don't leak stack data via response ring
   e5c49c1703ae xen/blkback: fix disconnect while I/Os in flight
   0e051f17bd04 clk: sunxi-ng: a31: Correct lcd1-ch1 clock register offset
   493ecd5cd73e Linux 4.9.34
   ce7fe8595902 mm: fix new crash in unmapped_area_topdown()
   5d10ad629726 Allow stack to grow up to address space limit
   cfc0eb403816 mm: larger stack guard gap, between vmas
   04651048c79a alarmtimer: Rate limit periodic intervals
   b355b899c74a crypto: Work around deallocated stack frame reference gcc bug on sparc.
   7dfe7ca9ec12 vTPM: Fix missing NULL check
   ecae47331a43 MIPS: .its targets depend on vmlinux
   6b706cbb16e9 MIPS: Fix bnezc/jialc return address calculation
   22921a9e232a usb: dwc3: exynos fix axius clock error path to do cleanup
   f0ee203c864f usb: gadget: composite: Fix function used to free memory
   8ee7f06f4dca alarmtimer: Prevent overflow of relative timers
   766283254b67 genirq: Release resources in __setup_irq() error path
   8a48b7eace4d sched/core: Idle_task_exit() shouldn't use switch_mm_irqs_off()
   cf6ac3abb323 iio: imu: inv_mpu6050: add accel lpf setting for chip >= MPU6500
   f7ae7d2229d2 swap: cond_resched in swap_cgroup_prepare()
   1419b8752153 mm/memory-failure.c: use compound_head() flags for huge pages
   0c0d3d8730db USB: gadgetfs, dummy-hcd, net2280: fix locking for callbacks
   3ff5f4f6a8a7 USB: gadget: fix GPF in gadgetfs
   06178662474c usb: xhci: ASMedia ASM1042A chipset need shorts TX quirk
   4581d7dd44f3 usb: xhci: Fix USB 3.1 supported protocol parsing
   2abac4084fb9 drivers/misc/c2port/c2port-duramar2150.c: checking for NULL instead of IS_ERR()
   f28ba80c6a3e misc: mic: double free on ioctl error path
   02d009e865a8 ath10k: fix napi crash during rmmod when probe firmware fails
   07612c1227e8 usb: r8a66597-hcd: decrease timeout
   f75f4d196ab5 usb: r8a66597-hcd: select a different endpoint on timeout
   c8091f0e8549 USB: gadget: dummy_hcd: fix hub-descriptor removable fields
   374aceef5912 pvrusb2: reduce stack usage pvr2_eeprom_analyze()
   9ae5dac225e2 USB: usbip: fix nonconforming hub descriptor
   7b5bce3a5128 usb: core: fix potential memory leak in error path during hcd creation
   12bfbe157d06 USB: hub: fix SS max number of ports
   cb53a4e03b2f usb: gadget: udc: renesas_usb3: lock for PN_ registers access
   dd65c0958b77 usb: gadget: udc: renesas_usb3: fix deadlock by spinlock
   723bd3b9f83f usb: gadget: udc: renesas_usb3: fix pm_runtime functions calling
   b51e4b0ac661 IB/mlx5: Fix kernel to user leak prevention logic
   dca02651cee7 iio: adc: ti_am335x_adc: allocating too much in probe
   cf308c15103e iio: proximity: as3935: recalibrate RCO after resume
   56251d138570 iio: st_pressure: Fix data sign
   a1d51f7abf71 staging: iio: tsl2x7x_core: Fix standard deviation calculation
   773fdcdc0957 staging: rtl8188eu: prevent an underflow in rtw_check_beacon_data()
   ed13a9c6464b mfd: omap-usb-tll: Fix inverted bit use for USB TLL mode
   caa6f1c7bcbe x86/mm/32: Set the '__vmalloc_start_set' flag in initmem_init()
   ad3faea03fdf serial: sh-sci: Fix late enablement of AUTORTS
   a50aacf5de52 serial: efm32: Fix parity management in 'efm32_uart_console_get_options()'
   879d61f218a9 drm/vc4: Fix OOPSes from trying to cache a partially constructed BO.
   5899b635ecc7 drm/mediatek: fix mtk_hdmi_setup_vendor_specific_infoframe mistake
   5b754c994f38 mac80211: don't send SMPS action frame in AP mode when not needed
   3e8c503d0a16 mac80211: fix dropped counter in multiqueue RX
   6568f8f70152 mac80211: strictly check mesh address extension mode
   c8143269c9c4 mac80211: fix IBSS presp allocation size
   841e4e775bb1 mac80211: fix packet statistics for fast-RX
   f79d740f3289 mac80211: fix CSA in IBSS mode
   bd3f89002e52 usb: musb: dsps: keep VBUS on for host-only mode
   a317afc0c1ce drm/i915: Fix GVT-g PVINFO version compatibility check
   7f7bb1173db8 drm/amdgpu: Fix overflow of watermark calcs at > 4k resolutions.
   f6e99a2efc03 mac80211/wpa: use constant time memory comparison for MACs
   2ec5b68bf62e mac80211: don't look at the PM bit of BAR frames
   63d34ea7042a vb2: Fix an off by one error in 'vb2_plane_vaddr'
   5d5605cc5833 cpufreq: conservative: Allow down_threshold to take values from 1 to 10
   47537bceb7b7 ila_xlat: add missing hash secret initialization
   95f47cd7d7d8 can: gs_usb: fix memory leak in gs_cmd_reset()
   a6d6282040b7 configfs: Fix race between create_link and configfs_rmdir
   222aa34e5d79 fs: pass on flags in compat_writev
   050639ef5810 Linux 4.9.33
   bdc9a03fd9ce sparc64: make string buffers large enough
   933b9b11f7ca drm/i915: Always recompute watermarks when distrust_bios_wm is set, v2.
   4f59a7a895c4 drm/i915: Workaround VLV/CHV DSI scanline counter hardware fail
   8e1a4006ff92 s390/kvm: do not rely on the ILC on kvm host protection fauls
   a2f68276822c xtensa: don't use linux IRQ #0
   57211e84dda0 RDMA/qedr: Return max inline data in QP query result
   c5ea7aa57e24 RDMA/qedr: Don't spam dmesg if QP is in error state
   13a87589af5f RDMA/qedr: Don't reset QP when queues aren't flushed
   bbf61096e42c RDMA/qedr: Fix and simplify memory leak in PD alloc
   a4fa249385b6 RDMA/qedr: Dispatch port active event from qedr_add
   c47538f61016 netfilter: nft_log: restrict the log prefix length to 127
   fefdd79403e8 netfilter: nf_tables: fix set->nelems counting with no NLM_F_EXCL
   f68a45776a62 tipc: fix nametbl_lock soft lockup at node/link events
   1d6e36d730ed tipc: add subscription refcount to avoid invalid delete
   9f8df4f86a3f tipc: fix connection refcount error
   c7a552e771cc tipc: ignore requests when the connection state is not CONNECTED
   2552e2c11575 ARCv2: smp-boot: wake_flag polling by non-Masters needs to be uncached
   8cb6045ec40d ARC: smp-boot: Decouple Non masters waiting API from jump to entry point
   ae36f6a65af6 vhost/vsock: handle vhost_vq_init_access() error
   b13b3b706a9d kernel/watchdog: prevent false hardlockup on overloaded system
   0ce66ee6aec1 kernel/watchdog.c: move shared definitions to nmi.h
   b969a240448b kernel/watchdog.c: move hardlockup detector to separate file
   dbd9eee1aaaf userfaultfd: fix SIGBUS resulting from false rwsem wakeups
   9618fba26499 proc: add a schedule point in proc_pid_readdir()
   e23b1c05a50f frv: add missing atomic64 operations
   918684681dc2 frv: add atomic64_add_unless()
   013bbbc3e902 romfs: use different way to generate fsid for BLOCK or MTD
   093d494c6d1d mn10300: fix build error of missing fpu_save()
   5e4cafca06bf usb: musb: Fix external abort on non-linefetch for musb_irq_work()
   fb72eca1333c sctp: sctp_addr_id2transport should verify the addr before looking up assoc
   bf812fe92683 sctp: sctp gso should set feature with NETIF_F_SG when calling skb_segment
   12a583ddf02a bnxt_en: Fix RTNL lock usage on bnxt_get_port_module_status().
   66deb409251c bnxt_en: Fix RTNL lock usage on bnxt_update_link().
   e89ffe41e9a6 bnxt_en: Enhance autoneg support.
   710ea9b028de bnxt_en: Fix bnxt_reset() in the slow path task.
   cb7188295d18 net-next: ethernet: mediatek: change the compatible string
   e9ace99c4bb0 r8152: avoid start_xmit to schedule napi when napi is disabled
   c1a7106b3b01 r8152: fix rtl8152_post_reset function
   9507910ca46d r8152: re-schedule napi for tx
   4242f0bce47e r8152: check rx after napi is enabled
   993ba7ffcf6e r8152: avoid start_xmit to call napi_schedule during autosuspend
   6149abe7f404 nvmet-rdma: Fix missing dma sync to nvme data structures
   5a0d41409b4d nfs: Fix "Don't increment lock sequence ID after NFS4ERR_MOVED"
   d16268259683 ravb: unmap descriptors when freeing rings
   47c362f147aa drm/ast: Fixed system hanged if disable P2A
   bfa4d2e461da drm/nouveau: Fix drm poll_helper handling
   c94e2edacea7 drm/nouveau: Don't enabling polling twice on runtime resume
   c7a29cf6c34a drm/nouveau: Handle fbcon suspend/resume in seperate worker
   d2beb1a9dd82 drm/nouveau: Rename acpi_work to hpd_work
   ef66745a1bd2 drm/nouveau: Intercept ACPI_VIDEO_NOTIFY_PROBE
   eb846414674c gtp: add genl family modules alias
   7dddbfcd96e2 net: phy: micrel: add support for KSZ8795
   2f970b437e86 parisc, parport_gsc: Fixes for printk continuation lines
   4038524f7fef net/mlx5: Return EOPNOTSUPP when failing to get steering name-space
   b445ecbdff83 net/mlx5: E-Switch, Err when retrieving steering name-space fails
   2bcbe747629e drm/i915: Check for NULL i915_vma in intel_unpin_fb_obj()
   e6549f36278c net: adaptec: starfire: add checks for dma mapping errors
   a15bbf44ab2f pinctrl: berlin-bg4ct: fix the value for "sd1a" of pin SCRD0_CRD_PRES
   326fdffd7078 drm: Don't race connector registration
   82b6693bd415 drm: prevent double-(un)registration for connectors
   d934fe02ba17 cec: fix wrong last_la determination
   62614714e30a pinctrl: baytrail: Rectify debounce support (part 2)
   3564d41e5c84 gianfar: synchronize DMA API usage by free_skb_rx_queue w/ gfar_new_page
   581e4003bf12 net/mlx4_core: Avoid command timeouts during VF driver device shutdown
   c33f1bd7f289 drm/nouveau/fence/g84-: protect against concurrent access to semaphore buffers
   cf336eea809d drm/nouveau: prevent userspace from deleting client object
   16f733d8db52 ipv6: fix flow labels when the traffic class is non-0
   0542f9791246 FS-Cache: Initialise stores_lock in netfs cookie
   34f1a4626bad fscache: Clear outstanding writes when disabling a cookie
   11696dcea282 fscache: Fix dead object requeue
   f4d2d05ffb8b net: fix ndo_features_check/ndo_fix_features comment ordering
   3a6ebd3f963c net: phy: Fix PHY module checks and NULL deref in phy_attach_direct()
   ea14fabd43a5 net: phy: Fix lack of reference count on PHY driver
   2fba4f5b70f3 ethtool: do not vzalloc(0) on registers dump
   8de6ea44af5c log2: make order_base_2() behave correctly on const input value zero
   5331baaeb7e6 kasan: respect /proc/sys/kernel/traceoff_on_warning
   8936b74fd339 shmem: fix sleeping from atomic context
   3ec4141c68de jump label: pass kbuild_cflags when checking for asm goto support
   36d9659cde0d PM / runtime: Avoid false-positive warnings from might_sleep_if()
   40f6d71c0a09 ARM: defconfigs: make NF_CT_PROTO_SCTP and NF_CT_PROTO_UDPLITE built-in
   1cadd394bbf9 ipv6: Fix IPv6 packet loss in scenarios involving roaming + snooping switches
   d536202202ee vfio/spapr_tce: Set window when adding additional groups to container
   d385ed7ad307 ipv6: addrconf: fix generation of new temporary addresses
   d7b2b380c08d net: thunderx: Fix PHY autoneg for SGMII QLM mode
   baaa84b43608 kernel/ucount.c: mark user_header with kmemleak_ignore()
   c419fe260b54 powerpc/powernv: Properly set "host-ipi" on IPIs
   47a5aabc3424 i2c: piix4: Fix request_region size
   c1a4306f24a0 i2c: piix4: Request the SMBUS semaphore inside the mutex
   7a6fcf38fabb sierra_net: Add support for IPv6 and Dual-Stack Link Sense Indications
   9217eeefee15 sierra_net: Skip validating irrelevant fields for IDLE LSIs
   bed8b8627a33 net: hns: Fix the device being used for dma mapping during TX
   008798746e6e NET: mkiss: Fix panic
   ae0b63eb344e ibmvnic: Initialize completion variables before starting work
   4544ba3173b7 ibmvnic: Call napi_disable instead of napi_enable in failure path
   74e24d1ea1a4 NET: Fix /proc/net/arp for AX.25
   2557969fb4f7 gfs2: Use rhashtable walk interface in glock_hash_walk
   44bc7cae6031 tipc: Fix tipc_sk_reinit race conditions
   cb351da6f2ba ipv6: Inhibit IPv4-mapped src address on the wire.
   12ec2560d467 ipv6: Handle IPv4-mapped src to in6addr_any dst.
   116589a5a7e0 tcp: tcp_probe: use spin_lock_bh()
   a2901d01a6c7 net: xilinx_emaclite: fix receive buffer overflow
   bff3001afae7 net: xilinx_emaclite: fix freezes due to unordered I/O
   65e72723add0 ibmvnic: Fix endian error when requesting device capabilities
   b5a1aa812a16 ibmvnic: Fix endian errors in error reporting output
   d864e675c789 netfilter: nf_conntrack_sip: fix wrong memory initialisation
   220b67a16fde partitions/msdos: FreeBSD UFS2 file systems are not recognized
   7a7b2d5f65a7 drm/i915: Prevent the system suspend complete optimization
   b372d35a5226 PCI/PM: Add needs_resume flag to avoid suspend complete optimization
   05afd4c0af6a Linux 4.9.32
   3eb235a1af14 netfilter: nft_set_rbtree: handle element re-addition after deletion
   a8fc3159ee2c cpufreq: schedutil: Fix per-CPU structure initialization in sugov_start()
   afe8d4a51c76 cpufreq: schedutil: move cached_raw_freq to struct sugov_policy
   09fcb3561d9e drm/i915/vbt: split out defaults that are set when there is no VBT
   555c443a1ab9 drm/i915/vbt: don't propagate errors from intel_bios_init()
   a6a7d8ade88c usercopy: Adjust tests to deal with SMAP/PAN
   eefa5e13dff9 ARM: 8637/1: Adjust memory boundaries after reservations
   1df21f45fd55 ARM: 8636/1: Cleanup sanity_check_meminfo
   9e09d90ac5ac arm64: entry: improve data abort handling of tagged pointers
   1d61ccb5ac27 arm64: hw_breakpoint: fix watchpoint matching for tagged pointers
   791d94ef40f6 arm64: traps: fix userspace cache maintenance emulation on a tagged pointer
   d95202487334 serial: sh-sci: Fix panic when serial console and DMA are enabled
   9ff4a1a36a58 drivers: char: mem: Fix wraparound check to allow mappings up to the end
   106c77e82572 cpu/hotplug: Drop the device lock on error
   eb8fa317cb01 ASoC: Fix use-after-free at card unregistration
   82ecd2f054bd ALSA: timer: Fix missing queue indices reset at SNDRV_TIMER_IOCTL_SELECT
   66e982d8f1a1 ALSA: timer: Fix race between read and ioctl
   aae14f569f5d drm/nouveau/tmr: fully separate alarm execution/pending lists
   7860d0e5e2bf drm/vmwgfx: Make sure backup_handle is always valid
   a76ff847013a drm/vmwgfx: limit the number of mip levels in vmw_gb_surface_define_ioctl()
   64c21af51d71 drm/vmwgfx: Handle vmalloc() failure in vmw_local_fifo_reserve()
   3743c0e1276d perf/core: Drop kernel samples even though :u is specified
   6e6d89e18e53 powerpc/kernel: Initialize load_tm on task creation
   2cfdf4fd3292 powerpc/kernel: Fix FP and vector register restoration
   cbf687acc1e1 powerpc/hotplug-mem: Fix missing endian conversion of aa_index
   b4624ff952ec powerpc/numa: Fix percpu allocations to be NUMA aware
   bb0a300f18ce powerpc/sysdev/simple_gpio: Fix oops in gpio save_regs function
   59d9a40b5839 scsi: qla2xxx: Fix mailbox pointer error in fwdump capture
   64dc431432ec scsi: qla2xxx: Set bit 15 for DIAG_ECHO_TEST MBC
   ab2b484e8038 scsi: qla2xxx: Modify T262 FW dump template to specify same start/end to debug customer issues
   fe42472e53eb scsi: qla2xxx: don't disable a not previously enabled PCI device
   f75e09ebd3e4 KVM: arm/arm64: Handle possible NULL stage2 pud when ageing pages
   66d6448475c6 btrfs: fix memory leak in update_space_info failure path
   4d15ab90ec2b btrfs: use correct types for page indices in btrfs_page_exists_in_range
   3fd1233dabd5 cxl: Avoid double free_irq() for psl,slice interrupts
   172c70d1cd82 cxl: Fix error path on bad ioctl
   84bef90a454f ufs_getfrag_block(): we only grab ->truncate_mutex on block creation path
   3d4922b5bb5b ufs_extend_tail(): fix the braino in calling conventions of ufs_new_fragments()
   55a00f816bd7 ufs: set correct ->s_maxsize
   aed005fb7956 ufs: restore maintaining ->i_blocks
   bf7bfef3eee3 fix ufs_isblockset()
   4896c87d2464 ufs: restore proper tail allocation
   61604a2626a3 fs: add i_blocksize()
   829a1cab22c4 cpuset: consider dying css as offline
   5aa8f833ca78 Input: elantech - add Fujitsu Lifebook E546/E557 to force crc_enabled
   dff4c8bb1397 cgroup: Prevent kill_css() from being called more than once
   b59ec7072c84 ahci: Acer SA5-271 SSD Not Detected Fix
   b3a42bb630bd drm/msm: Expose our reservation object when exporting a dmabuf.
   974a4eb16e84 target: Re-add check to reject control WRITEs with overflow data
   96d7b43b42ba cpufreq: cpufreq_register_driver() should return -ENODEV if init fails
   acd8f9173960 mei: make sysfs modalias format similar as uevent modalias
   716dd37398ad iio: proximity: as3935: fix iio_trigger_poll issue
   bad3b49b01aa iio: proximity: as3935: fix AS3935_INT mask
   8067c911c5e9 iio: light: ltr501 Fix interchanged als/ps register field
   e33679f994db iio: adc: bcm_iproc_adc: swap primary and secondary isr handler's
   c5a8004434f0 staging/lustre/lov: remove set_fs() call from lov_getstripe()
   5404b0c0ea85 usb: chipidea: debug: check before accessing ci_role
   59db536f5812 usb: chipidea: udc: fix NULL pointer dereference if udc_start failed
   405ac24a0aec usb: gadget: f_mass_storage: Serialize wake and sleep execution
   1308eeec2fc5 drm: Fix oops + Xserver hang when unplugging USB drm devices
   c404f0dee7a8 ext4: fix fdatasync(2) after extent manipulation operations
   2e16921d1743 ext4: fix data corruption with EXT4_GET_BLOCKS_ZERO
   9890b9cb75c9 ext4: keep existing extra fields when inode expands
   9850844e0a0e ext4: fix SEEK_HOLE
   9636c086532b xen/privcmd: Support correctly 64KB page granularity when mapping memory
   08229c119c42 cfq-iosched: fix the delay of cfq_group's vdisktime under iops mode
   1f67d28d2707 dmaengine: mv_xor_v2: set DMA mask to 40 bits
   eb5afaba6177 dmaengine: mv_xor_v2: remove interrupt coalescing
   b2c8bb06bc83 dmaengine: mv_xor_v2: fix tx_submit() implementation
   0d0918504a96 dmaengine: mv_xor_v2: enable XOR engine after its configuration
   e2a092eab8a5 dmaengine: mv_xor_v2: do not use descriptors not acked by async_tx
   67b1684c4a5e dmaengine: mv_xor_v2: properly handle wrapping in the array of HW descriptors
   f08c84d4c745 dmaengine: mv_xor_v2: handle mv_xor_v2_prep_sw_desc() error properly
   f2e9d10bf1a2 dmaengine: ep93xx: Don't drain the transfers in terminate_all()
   b7e7a4d52a95 dmaengine: ep93xx: Always start from BASE0
   cd0ef520aa70 dmaengine: usb-dmac: Fix DMAOR AE bit definition
   3e7a76b290f1 KVM: arm/arm64: vgic-v2: Do not use Active+Pending state for a HW interrupt
   2a5c08a4d3fe KVM: arm/arm64: vgic-v3: Do not use Active+Pending state for a HW interrupt
   81555e45852a KVM: async_pf: avoid async pf injection when in guest mode
   85c19308cb37 arm: KVM: Allow unaligned accesses at HYP
   8abce1e49c82 arm64: KVM: Allow unaligned accesses at EL2
   b9824dd75fcf arm64: KVM: Preserve RES1 bits in SCTLR_EL2
   19c9a115085e KVM: cpuid: Fix read/write out-of-bounds vulnerability in cpuid emulation
   78f87ce2a17f kvm: async_pf: fix rcu_irq_enter() with irqs enabled
   4809f0e56d98 efi: Don't issue error message when booted under Xen
   e273ed246617 nfsd: Fix up the "supattr_exclcreat" attributes
   bfeac838043f nfsd4: fix null dereference on replay
   34bae9b3ba98 drm/amdgpu/ci: disable mclk switching for high refresh rates (v2)
   d4783eb9f082 crypto: gcm - wait for crypto op not signal safe
   2d0280070e6c crypto: drbg - wait for crypto op not signal safe
   d24c1c1977d8 KEYS: encrypted: avoid encrypting/decrypting stack buffers
   24369761029a KEYS: fix freeing uninitialized memory in key_update()
   1b253e023f8f KEYS: fix dereferencing NULL payload with nonzero length
   0e479742e8d1 crypto: asymmetric_keys - handle EBUSY due to backlog correctly
   7c24a70c70b7 ptrace: Properly initialize ptracer_cred on fork
   3802abc6e0df serial: ifx6x60: fix use-after-free on module unload
   04ac452dadbf arch/sparc: support NR_CPUS = 4096
   433a50e681df sparc64: delete old wrap code
   b6bb22de0c9e sparc64: new context wrap
   975f3cdc3915 sparc64: add per-cpu mm of secondary contexts
   7932bfad0e82 sparc64: redefine first version
   65e3443b61a8 sparc64: combine activate_mm and switch_mm
   e7590a1b15c8 sparc64: reset mm cpumask after wrap
   b3ad7a3e57b3 sparc: Machine description indices can vary
   8d665e039e66 sparc64: mm: fix copy_tsb to correctly copy huge page TSBs
   4b684e6474d0 sparc64: Add __multi3 for gcc 7.x and later.
   0255284edddc net: bridge: start hello timer only if device is up
   3dd4daf112fd net: stmmac: fix completely hung TX when using TSO
   a83564d12863 net: ethoc: enable NAPI before poll may be scheduled
   a97f807363d4 net/ipv6: Fix CALIPSO causing GPF with datagram support
   0aa89f1b07de net: ping: do not abuse udp_poll()
   599a4478d8cb ipv6: Fix leak in ipv6_gso_segment().
   c242e1a8140e vxlan: fix use-after-free on deletion
   3ee35b96825e tcp: disallow cwnd undo when switching congestion control
   61c92d5a533c cxgb4: avoid enabling napi twice to the same queue
   abbcb731d69c ipv6: xfrm: Handle errors reported by xfrm6_find_1stfragopt()
   b5e9b7ad0dd4 vxlan: eliminate cached dst leak
   96d145216b58 bnx2x: Fix Multi-Cos

(From OE-Core rev: d16cf5d390a04d8135e51314fc704b8d19eefa03)

Signed-off-by: Bruce Ashfield <bruce.ashfield@windriver.com>
Signed-off-by: Ross Burton <ross.burton@intel.com>
(cherry picked from commit d9d950bd48566e5a2e92ad4a2fd943ad828fb8df)
Signed-off-by: Armin Kuster <akuster808@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-07-27 22:36:45 +01:00
Bruce Ashfield
9ec87ef11c linux-yocto/4.4: update to v4.4.76
Integrating the -stable commit with the following changes:

   4282d39575bf Linux 4.4.76
   be8c39b47061 KVM: nVMX: Fix exception injection
   77d977dd78b3 KVM: x86: zero base3 of unusable segments
   3b1609f6c436 KVM: x86/vPMU: fix undefined shift in intel_pmu_refresh()
   b9b3eb5c774e KVM: x86: fix emulation of RSM and IRET instructions
   3491a0b59fcd cpufreq: s3c2416: double free on driver init error path
   aad7041e721e iommu/amd: Fix incorrect error handling in amd_iommu_bind_pasid()
   48952c6d517a iommu: Handle default domain attach failure
   3de9630abe3b iommu/vt-d: Don't over-free page table directories
   404ef3b4bf62 ocfs2: o2hb: revert hb threshold to keep compatible
   5d650fcef901 x86/mm: Fix flush_tlb_page() on Xen
   6fb3b322307e x86/mpx: Correctly report do_mpx_bt_fault() failures to user-space
   7cd8c4903171 ARM: 8685/1: ensure memblock-limit is pmd-aligned
   d4960d58158b ARM64/ACPI: Fix BAD_MADT_GICC_ENTRY() macro implementation
   6ca11db55f62 sched/loadavg: Avoid loadavg spikes caused by delayed NO_HZ accounting
   f6115ec09225 watchdog: bcm281xx: Fix use of uninitialized spinlock.
   f99737ce2e56 xfrm: Oops on error in pfkey_msg2xfrm_state()
   ac78351c96e8 xfrm: NULL dereference on allocation failure
   398ac7a19f17 xfrm: fix stack access out of bounds with CONFIG_XFRM_SUB_POLICY
   736b342cc9b4 jump label: fix passing kbuild_cflags when checking for asm goto support
   53ae0c2ffef7 ravb: Fix use-after-free on `ifconfig eth0 down`
   db1323b77c2b sctp: check af before verify address in sctp_addr_id2transport
   d521e9c384f9 net/mlx4_core: Eliminate warning messages for SRQ_LIMIT under SRIOV
   9837392c2b3e perf probe: Fix to show correct locations for events on modules
   0593fa8f34a2 be2net: fix status check in be_cmd_pmac_add()
   5416a88c2fef s390/ctl_reg: make __ctl_load a full memory barrier
   9a536d587246 swiotlb: ensure that page-sized mappings are page-aligned
   878f37efac3e coredump: Ensure proper size of sparse core files
   c20bdc08af9b x86/mpx: Use compatible types in comparison to fix sparse error
   14339b018bc2 mac80211: initialize SMPS field in HT capabilities
   11dd9e2c4803 spi: davinci: use dma_mapping_error()
   be91b09750bf scsi: lpfc: avoid double free of resource identifiers
   4ac60b20f703 HID: i2c-hid: Add sleep between POWER ON and RESET
   70f41003b9d1 kernel/panic.c: add missing \n
   e4272ebefc83 ibmveth: Add a proper check for the availability of the checksum features
   8fa301abb31a vxlan: do not age static remote mac entries
   00e83abf8e62 virtio_net: fix PAGE_SIZE > 64k
   c64f4194a65b vfio/spapr: fail tce_iommu_attach_group() when iommu_data is null
   d3be5e0471ab drm/amdgpu: check ring being ready before using
   58a766c460b1 net: dsa: Check return value of phy_connect_direct()
   3d2cbbcbde3d amd-xgbe: Check xgbe_init() return code
   dac30e3dbd72 platform/x86: ideapad-laptop: handle ACPI event 1
   666c821b0ae3 scsi: virtio_scsi: Reject commands when virtqueue is broken
   230fe9c7d814 xen-netfront: Fix Rx stall during network stress and OOM
   8df98ff6c394 swiotlb-xen: update dev_addr after swapping pages
   23c7f01691a1 virtio_console: fix a crash in config_work_handler
   6e1116a0b3e2 Btrfs: fix truncate down when no_holes feature is enabled
   961efcd54e5b gianfar: Do not reuse pages from emergency reserve
   477a2359c881 powerpc/eeh: Enable IO path on permanent error
   e1db592de735 net: bgmac: Remove superflous netif_carrier_on()
   e66647f0e1ff net: bgmac: Start transmit queue in bgmac_open
   f01babed64e6 net: bgmac: Fix SOF bit checking
   992048f8ae84 bgmac: Fix reversed test of build_skb() return value.
   ebfa83ab5a53 mtd: bcm47xxpart: don't fail because of bit-flips
   1124701061d8 bgmac: fix a missing check for build_skb
   11e4bb957f1a mtd: bcm47xxpart: limit scanned flash area on BCM47XX (MIPS) only
   e025a30dd8b0 MIPS: ralink: fix MT7628 wled_an pinmux gpio
   cd1fe5c31e91 MIPS: ralink: fix MT7628 pinmux typos
   c9336bbdd924 MIPS: ralink: Fix invalid assignment of SoC type
   ad310161f513 MIPS: ralink: fix USB frequency scaling
   9a23a35a4fc6 MIPS: ralink: MT7688 pinmux fixes
   e1688f1677e6 net: korina: Fix NAPI versus resources freeing
   ef0cb4c9d496 MIPS: ath79: fix regression in PCI window initialization
   753be27f77eb net: mvneta: Fix for_each_present_cpu usage
   0012ba253767 ARM: dts: BCM5301X: Correct GIC_PPI interrupt flags
   50e18570d8ea qla2xxx: Fix erroneous invalid handle message
   8c721e38055a scsi: lpfc: Set elsiocb contexts to NULL after freeing it
   5c982bac211c scsi: sd: Fix wrong DPOFUA disable in sd_read_cache_type
   b92f9f6a2c09 KVM: x86: fix fixing of hypercalls
   cdbf92675fad mm: numa: avoid waiting on freed migrated pages
   21d7c733251a block: fix module reference leak on put_disk() call for cgroups throttle
   2449a71eb982 sysctl: enable strict writes
   1e0f216195a6 usb: gadget: f_fs: Fix possibe deadlock
   04686ab28a35 drm/vmwgfx: Free hash table allocated by cmdbuf managed res mgr
   c70e2006d06a ALSA: hda - set input_path bitmap to zero after moving it to new place
   11327be3570e ALSA: hda - Fix endless loop of codec configure
   db60a2ec9acc MIPS: Fix IRQ tracing & lockdep when rescheduling
   93206654a0b2 MIPS: pm-cps: Drop manual cache-line alignment of ready_count
   cb611ead80a2 MIPS: Avoid accidental raw backtrace
   74de12dbfa7c mm, swap_cgroup: reschedule when neeed in swap_cgroup_swapoff()
   a9e5044b6804 drm/ast: Handle configuration without P2A bridge
   542442710021 NFSv4: fix a reference leak caused WARNING messages
   e052be55a598 netfilter: synproxy: fix conntrackd interaction
   234e649840d1 netfilter: xt_TCPMSS: add more sanity tests on tcph->doff
   095a41128cb6 rtnetlink: add IFLA_GROUP to ifla_policy
   640a09c64ec6 ipv6: Do not leak throw route references
   9de17701a3bc sfc: provide dummy definitions of vswitch functions
   1f8bb6053249 net: 8021q: Fix one possible panic caused by BUG_ON in free_netdev
   f50f2e0cb1a3 decnet: always not take dst->__refcnt when inserting dst into hash table
   93911697a9f2 net/mlx5: Wait for FW readiness before initializing command interface
   0d1effe95ebe ipv6: fix calling in6_ifa_hold incorrectly for dad work
   4feb6121aa5e igmp: add a missing spin_lock_init()
   ee8d5f9fd17e igmp: acquire pmc lock for ip_mc_clear_src()
   7de53eed6fda net: caif: Fix a sleep-in-atomic bug in cfpkt_create_pfx
   030a77d2f904 Fix an intermittent pr_emerg warning about lo becoming free.
   0fc0fad07722 af_unix: Add sockaddr length checks before accessing sa_family in bind and connect handlers
   e2c3ee003280 net: Zero ifla_vf_info in rtnl_fill_vfinfo()
   dedb088a1d18 decnet: dn_rtmsg: Improve input length sanitization in dnrmg_receive_user_skb
   e79948e2d90b net: don't call strlen on non-terminated string in dev_set_alias()
   d68a4e380ff5 ipv6: release dst on error in ip6_dst_lookup_tail
   6ee496d7218a Linux 4.4.75
   cb7be08dee4e nvme: apply DELAY_BEFORE_CHK_RDY quirk at probe time too
   bddc80274a12 nvme/quirk: Add a delay before checking for adapter readiness
   e5f87c733842 net: phy: fix marvell phy status reading
   9b54821d5184 net: phy: Initialize mdio clock at probe function
   889caad4fbe4 usb: gadget: f_fs: avoid out of bounds access on comp_desc
   db7130d63fd8 powerpc/slb: Force a full SLB flush when we insert for a bad EA
   8fcb215c5426 mtd: spi-nor: fix spansion quad enable
   7dfea167fc1d of: Add check to of_scan_flat_dt() before accessing initial_boot_params
   eab38dfd66d7 rxrpc: Fix several cases where a padded len isn't checked in ticket decode
   800d7454e50f USB: usbip: fix nonconforming hub descriptor
   525e496a9722 drm/amdgpu: adjust default display clock
   526527847355 drm/amdgpu/atom: fix ps allocation size for EnableDispPowerGating
   4f3d0f468552 drm/radeon: add a quirk for Toshiba Satellite L20-183
   f8242fa8119b drm/radeon: add a PX quirk for another K53TK variant
   fe8003da6113 iscsi-target: Reject immediate data underflow larger than SCSI transfer length
   d374be75f4c7 target: Fix kref->refcount underflow in transport_cmd_finish_abort
   1fecf3977def time: Fix clock->read(clock) race around clocksource changes
   255ad85b5ecc Input: i8042 - add Fujitsu Lifebook AH544 to notimeout list
   3ee9033e228d powerpc/kprobes: Pause function_graph tracing during jprobes handling
   bc7b3e9984a8 signal: Only reschedule timers on signals timers have sent
   005253ffe4ad HID: Add quirk for Dell PIXART OEM mouse
   63ba840a53d6 CIFS: Improve readdir verbosity
   824b9506e4f2 KVM: PPC: Book3S HV: Preserve userspace HTM state properly
   7b88f761929e lib/cmdline.c: fix get_options() overflow while parsing ranges
   b95aa98e77d7 autofs: sanity check status reported with AUTOFS_DEV_IOCTL_FAIL
   1d3d0f8b7cf7 fs/exec.c: account for argv/envp pointers
   22da7ca81a3a Linux 4.4.74
   1f2284fac218 mm: fix new crash in unmapped_area_topdown()
   f41512c6acb7 Allow stack to grow up to address space limit
   4b359430674c mm: larger stack guard gap, between vmas
   26605a06dd92 alarmtimer: Rate limit periodic intervals
   c24159adf222 MIPS: Fix bnezc/jialc return address calculation
   94695386c79c usb: dwc3: exynos fix axius clock error path to do cleanup
   aac7fa215e8f alarmtimer: Prevent overflow of relative timers
   4d4d501cd707 genirq: Release resources in __setup_irq() error path
   6af90091b610 swap: cond_resched in swap_cgroup_prepare()
   bfbd244c5f18 mm/memory-failure.c: use compound_head() flags for huge pages
   f5dc61753d0e USB: gadgetfs, dummy-hcd, net2280: fix locking for callbacks
   89c15994a06d usb: xhci: ASMedia ASM1042A chipset need shorts TX quirk
   5efd37fe7218 drivers/misc/c2port/c2port-duramar2150.c: checking for NULL instead of IS_ERR()
   ab29b21a47ae usb: r8a66597-hcd: decrease timeout
   4c7a6dd205cc usb: r8a66597-hcd: select a different endpoint on timeout
   42c8b4b5fdca USB: gadget: dummy_hcd: fix hub-descriptor removable fields
   dc6ecba3f6c1 pvrusb2: reduce stack usage pvr2_eeprom_analyze()
   e33e866d1593 usb: core: fix potential memory leak in error path during hcd creation
   ec443ee0c2aa USB: hub: fix SS max number of ports
   7e2ad8b207f2 iio: proximity: as3935: recalibrate RCO after resume
   0c967139e832 staging: rtl8188eu: prevent an underflow in rtw_check_beacon_data()
   e59d91144545 mfd: omap-usb-tll: Fix inverted bit use for USB TLL mode
   93d022e25642 x86/mm/32: Set the '__vmalloc_start_set' flag in initmem_init()
   c79aab7007d8 serial: efm32: Fix parity management in 'efm32_uart_console_get_options()'
   daebcf9871eb mac80211: fix IBSS presp allocation size
   bb8428f4c954 mac80211: fix CSA in IBSS mode
   5f1f39023c2a mac80211/wpa: use constant time memory comparison for MACs
   156f00663af6 mac80211: don't look at the PM bit of BAR frames
   a8686c968fe3 vb2: Fix an off by one error in 'vb2_plane_vaddr'
   fa90f02d511d cpufreq: conservative: Allow down_threshold to take values from 1 to 10
   58ab7a86cdc2 can: gs_usb: fix memory leak in gs_cmd_reset()
   0ad134d81c07 configfs: Fix race between create_link and configfs_rmdir
   1bd30958ec55 Linux 4.4.73
   39e84dcd7876 sparc64: make string buffers large enough
   d80aa84235ff s390/kvm: do not rely on the ILC on kvm host protection fauls
   afb415f72daa xtensa: don't use linux IRQ #0
   8b1aa2679812 tipc: ignore requests when the connection state is not CONNECTED
   77d2b8dc9597 proc: add a schedule point in proc_pid_readdir()
   202776694c2a romfs: use different way to generate fsid for BLOCK or MTD
   50ef0e2e9abe sctp: sctp_addr_id2transport should verify the addr before looking up assoc
   70752628521d r8152: avoid start_xmit to schedule napi when napi is disabled
   5270bf63719c r8152: fix rtl8152_post_reset function
   a4877e5564a5 r8152: re-schedule napi for tx
   10bfb4c76c94 nfs: Fix "Don't increment lock sequence ID after NFS4ERR_MOVED"
   82ce18b09bf1 ravb: unmap descriptors when freeing rings
   3987a40362b7 drm/ast: Fixed system hanged if disable P2A
   ff20cc9a6086 drm/nouveau: Don't enabling polling twice on runtime resume
   711f4797a339 parisc, parport_gsc: Fixes for printk continuation lines
   9343894a8b3d net: adaptec: starfire: add checks for dma mapping errors
   3926d04ddec2 pinctrl: berlin-bg4ct: fix the value for "sd1a" of pin SCRD0_CRD_PRES
   6e3ea31dfb01 gianfar: synchronize DMA API usage by free_skb_rx_queue w/ gfar_new_page
   2b9f84ef46d8 net/mlx4_core: Avoid command timeouts during VF driver device shutdown
   6f0a81edb918 drm/nouveau/fence/g84-: protect against concurrent access to semaphore buffers
   9c7a11e6f994 drm/nouveau: prevent userspace from deleting client object
   1507ea6df42e ipv6: fix flow labels when the traffic class is non-0
   95a4659ee8d0 FS-Cache: Initialise stores_lock in netfs cookie
   38481d7d43dd fscache: Clear outstanding writes when disabling a cookie
   b421d230dfa1 fscache: Fix dead object requeue
   e6b15f0fc7a6 ethtool: do not vzalloc(0) on registers dump
   980660760aa7 log2: make order_base_2() behave correctly on const input value zero
   55d0f89a1a0c kasan: respect /proc/sys/kernel/traceoff_on_warning
   1948d0afe43e jump label: pass kbuild_cflags when checking for asm goto support
   266e02bc69a2 PM / runtime: Avoid false-positive warnings from might_sleep_if()
   8d228758f90f ipv6: Fix IPv6 packet loss in scenarios involving roaming + snooping switches
   ee0cd47799dd i2c: piix4: Fix request_region size
   68cac0741246 sierra_net: Add support for IPv6 and Dual-Stack Link Sense Indications
   d95ffdd39566 sierra_net: Skip validating irrelevant fields for IDLE LSIs
   716cca0a67ec net: hns: Fix the device being used for dma mapping during TX
   aacf9de1e239 NET: mkiss: Fix panic
   b9e9045d5e6b NET: Fix /proc/net/arp for AX.25
   23287661af3e ipv6: Inhibit IPv4-mapped src address on the wire.
   8faccb2b9442 ipv6: Handle IPv4-mapped src to in6addr_any dst.
   10a762977267 net: xilinx_emaclite: fix receive buffer overflow
   7f71f22a116f net: xilinx_emaclite: fix freezes due to unordered I/O
   2ba464a4b748 Call echo service immediately after socket reconnect
   691fe5610d58 staging: rtl8192e: rtl92e_fill_tx_desc fix write to mapped out memory.
   3fc4d70453ee ARM: dts: imx6dl: Fix the VDD_ARM_CAP voltage for 396MHz operation
   b28c21baf28a partitions/msdos: FreeBSD UFS2 file systems are not recognized
   0fb2a1fe6155 s390/vmem: fix identity mapping
   30c9187fa8ed Linux 4.4.72
   4e528eb9160b arm64: ensure extension of smp_store_release value
   01ce16f40c97 arm64: armv8_deprecated: ensure extension of addr
   51ff10e72fc2 usercopy: Adjust tests to deal with SMAP/PAN
   746d48934f51 RDMA/qib,hfi1: Fix MR reference count leak on write with immediate
   3ccf69562ac2 arm64: entry: improve data abort handling of tagged pointers
   4eaef3651815 arm64: hw_breakpoint: fix watchpoint matching for tagged pointers
   bc5f31d34eab Make __xfs_xattr_put_listen preperly report errors.
   e8a1086ae191 NFSv4: Don't perform cached access checks before we've OPENed the file
   533020828366 NFS: Ensure we revalidate attributes before using execute_ok()
   cb1fb15c8355 mm: consider memblock reservations for deferred memory initialization sizing
   52d8b8ad2b4b net: better skb->sender_cpu and skb->napi_id cohabitation
   3c0fcb52674a serial: sh-sci: Fix panic when serial console and DMA are enabled
   cc04a1433843 tty: Drop krefs for interrupted tty lock
   983c09ebdbc2 drivers: char: mem: Fix wraparound check to allow mappings up to the end
   9a9388953bdc ASoC: Fix use-after-free at card unregistration
   54d12fbf54d4 ALSA: timer: Fix missing queue indices reset at SNDRV_TIMER_IOCTL_SELECT
   f5bc918760c8 ALSA: timer: Fix race between read and ioctl
   5dffc1be6552 drm/nouveau/tmr: fully separate alarm execution/pending lists
   74276868b455 drm/vmwgfx: Make sure backup_handle is always valid
   619cc02fd85d drm/vmwgfx: limit the number of mip levels in vmw_gb_surface_define_ioctl()
   e4c05b3a751a drm/vmwgfx: Handle vmalloc() failure in vmw_local_fifo_reserve()
   e582b82c160a perf/core: Drop kernel samples even though :u is specified
   1cfe1e9da629 powerpc/hotplug-mem: Fix missing endian conversion of aa_index
   8c92870bdbf2 powerpc/numa: Fix percpu allocations to be NUMA aware
   fc7fb9430d70 powerpc/eeh: Avoid use after free in eeh_handle_special_event()
   93d03807f395 scsi: qla2xxx: don't disable a not previously enabled PCI device
   f267b064a6e9 KVM: arm/arm64: Handle possible NULL stage2 pud when ageing pages
   5c7955c8726c btrfs: fix memory leak in update_space_info failure path
   cc8c67cadc27 btrfs: use correct types for page indices in btrfs_page_exists_in_range
   8fe4345d6a1d cxl: Fix error path on bad ioctl
   f0d2e153147e ufs_getfrag_block(): we only grab ->truncate_mutex on block creation path
   34aa71cbd408 ufs_extend_tail(): fix the braino in calling conventions of ufs_new_fragments()
   d6bd1e7ec7d8 ufs: set correct ->s_maxsize
   4c516dff07d7 ufs: restore maintaining ->i_blocks
   1df45bb64396 fix ufs_isblockset()
   db9aafaf90b6 ufs: restore proper tail allocation
   044470266a50 fs: add i_blocksize()
   c8acec90d9dd cpuset: consider dying css as offline
   fff08d245263 Input: elantech - add Fujitsu Lifebook E546/E557 to force crc_enabled
   ba9fe2e8072f drm/msm: Expose our reservation object when exporting a dmabuf.
   934d0a9f9c65 target: Re-add check to reject control WRITEs with overflow data
   94d3dafe96f3 cpufreq: cpufreq_register_driver() should return -ENODEV if init fails
   2ff1edbbb29b stackprotector: Increase the per-task stack canary's random range from 32 bits to 64 bits on 64-bit platforms
   1025503bcee9 random: properly align get_random_int_hash
   baae8c3c2e2a drivers: char: random: add get_random_long()
   ff7739a28719 iio: proximity: as3935: fix AS3935_INT mask
   64276cdbd418 iio: light: ltr501 Fix interchanged als/ps register field
   a365c707d2ee staging/lustre/lov: remove set_fs() call from lov_getstripe()
   bd2e8f0a72c5 usb: chipidea: debug: check before accessing ci_role
   942dcb0ffa9d usb: chipidea: udc: fix NULL pointer dereference if udc_start failed
   6ff96a61bb20 usb: gadget: f_mass_storage: Serialize wake and sleep execution
   daa1357ff346 ext4: fix fdatasync(2) after extent manipulation operations
   7b9694cb7bf2 ext4: keep existing extra fields when inode expands
   08dc390b2745 ext4: fix SEEK_HOLE
   e9560c2df474 xen-netfront: cast grant table reference first to type int
   17a58bdf3d63 xen-netfront: do not cast grant table reference to signed short
   4467b3a14557 xen/privcmd: Support correctly 64KB page granularity when mapping memory
   3340c0e11086 dmaengine: ep93xx: Always start from BASE0
   3ff231a0d399 dmaengine: usb-dmac: Fix DMAOR AE bit definition
   445d08a6be93 KVM: async_pf: avoid async pf injection when in guest mode
   7b69d79732eb arm: KVM: Allow unaligned accesses at HYP
   c7740cbcc2c4 KVM: cpuid: Fix read/write out-of-bounds vulnerability in cpuid emulation
   a8bbdf1921fd kvm: async_pf: fix rcu_irq_enter() with irqs enabled
   e21ad4a956d4 nfsd: Fix up the "supattr_exclcreat" attributes
   6a9b72248814 nfsd4: fix null dereference on replay
   1f6791d4f208 drm/amdgpu/ci: disable mclk switching for high refresh rates (v2)
   a3a3a1cf538c crypto: gcm - wait for crypto op not signal safe
   8096a6748a92 KEYS: fix freeing uninitialized memory in key_update()
   bc6be3433e69 KEYS: fix dereferencing NULL payload with nonzero length
   c94bea2e4bf5 ptrace: Properly initialize ptracer_cred on fork
   dd6a4b53d026 serial: ifx6x60: fix use-after-free on module unload
   7816928f3435 arch/sparc: support NR_CPUS = 4096
   8554f96c1656 sparc64: delete old wrap code
   c9215ca71390 sparc64: new context wrap
   3e557fd99a22 sparc64: add per-cpu mm of secondary contexts
   7e5551fbb864 sparc64: redefine first version
   e72963317bf1 sparc64: combine activate_mm and switch_mm
   4c0cae481fae sparc64: reset mm cpumask after wrap
   7047c2009be9 sparc: Machine description indices can vary
   54e23c087f36 sparc64: mm: fix copy_tsb to correctly copy huge page TSBs
   0774a35802e9 net: bridge: start hello timer only if device is up
   9cbc6cbd9170 net: ethoc: enable NAPI before poll may be scheduled
   45202cd2199c net: ping: do not abuse udp_poll()
   406752726afc ipv6: Fix leak in ipv6_gso_segment().
   92d88e8a7adc vxlan: fix use-after-free on deletion
   f4c645f67e72 tcp: disallow cwnd undo when switching congestion control
   03994b4b858f cxgb4: avoid enabling napi twice to the same queue
   491809d0f8d8 ipv6: xfrm: Handle errors reported by xfrm6_find_1stfragopt()
   d02f4c962d35 bnx2x: Fix Multi-Cos

(From OE-Core rev: 32df1b2db46f6cf53a59eeca07a2c442f71bab55)

Signed-off-by: Bruce Ashfield <bruce.ashfield@windriver.com>
Signed-off-by: Ross Burton <ross.burton@intel.com>
(cherry picked from commit ab2721fca72ed28f865b1ee3b7e33d9d09515d87)
Signed-off-by: Armin Kuster <akuster808@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-07-27 22:36:45 +01:00
Bruce Ashfield
5d5d7c2f05 kernel-yocto/meta: smp configuration changes
Integrating the following kernel configuration changes to
clean up the SMP configuration fragments and fix a configuration
audit warning.

  d0e5ea0e199b smp: Separate smp into 32 and 64 bit versions to avoid kernel warnings
  f1369c1d817e bsp/mohonpeak: smp gets added by default, remove unnecessary include
  6fc22aa1200b bsp/rangeley: smp gets added by default, remove unnecessary include

[YOCTO #11743]

(From OE-Core rev: e418a0652ef021d84db46ccee106ec91658b3e61)

Signed-off-by: Alejandro Hernandez <alejandro.hernandez@linux.intel.com>
Signed-off-by: Bruce Ashfield <bruce.ashfield@windriver.com>
Signed-off-by: Ross Burton <ross.burton@intel.com>
(cherry picked from commit 6bd4f855cfc95c82d6bf5b00531f1aad752002ee)
Signed-off-by: Armin Kuster <akuster808@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-07-27 22:36:45 +01:00
Bruce Ashfield
2fd84d63a5 linux-yocto/4.4: update to v4.4.71
Updating the the latest 4.4 -stable release which comprises the
following commits:

4bbbc7696405 Linux 4.4.71
9d65be36a7cc xfs: only return -errno or success from attr ->put_listent
1b03d85a4f37 xfs: in _attrlist_by_handle, copy the cursor back to userspace
c56605c69ba6 xfs: fix unaligned access in xfs_btree_visit_blocks
9f7b5da0570f xfs: bad assertion for delalloc an extent that start at i_size
3ba13d7f5b2b xfs: fix indlen accounting error on partial delalloc conversion
1d41dd5c1fd6 xfs: wait on new inodes during quotaoff dquot release
9d97d6a15265 xfs: update ag iterator to support wait on new inodes
8e25af0dc5ad xfs: support ability to wait on new inodes
cf55c35974e1 xfs: fix up quotacheck buffer list error handling
a76647a71c8e xfs: prevent multi-fsb dir readahead from reading random blocks
8caa9a54b32b xfs: handle array index overrun in xfs_dir2_leaf_readbuf()
0ace12c11401 xfs: fix over-copying of getbmap parameters from userspace
fe705621b9b4 xfs: fix off-by-one on max nr_pages in xfs_find_get_desired_pgoff()
b9a7816997a3 xfs: Fix missed holes in SEEK_HOLE implementation
03489bfc7830 mlock: fix mlock count can not decrease in race condition
7e13bab109ea mm/migrate: fix refcount handling when !hugepage_migration_supported()
4e4b72c0ee3d drm/gma500/psb: Actually use VBT mode when it is found
14bfe118dd7d slub/memcg: cure the brainless abuse of sysfs attributes
023a8b0925be ALSA: hda - apply STAC_9200_DELL_M22 quirk for Dell Latitude D430
85ddc41a6c4a pcmcia: remove left-over %Z format
69877793e23d drm/radeon: Unbreak HPD handling for r600+
15de2e4c90b7 drm/radeon/ci: disable mclk switching for high refresh rates (v2)
3529600b1601 scsi: mpt3sas: Force request partial completion alignment
58b7cb10f6e2 HID: wacom: Have wacom_tpc_irq guard against possible NULL dereference
c0fd730b678d mmc: sdhci-iproc: suppress spurious interrupt with Multiblock read
2ca57fc82436 i2c: i2c-tiny-usb: fix buffer not being DMA capable
1b5286ba9f13 vlan: Fix tcp checksum offloads in Q-in-Q vlans
e989f9bf2a9d net: phy: marvell: Limit errata to 88m1101
605b6b2b4d8a netem: fix skb_orphan_partial()
338f665acb4b ipv4: add reference counting to metrics
97f54575ff57 sctp: fix ICMP processing if skb is non-linear
fe22b6005538 tcp: avoid fastopen API to be used on AF_UNSPEC
d7ed7fcecf20 virtio-net: enable TSO/checksum offloads for Q-in-Q vlans
8380f16d0702 be2net: Fix offload features for Q-in-Q packets
38f02f2ce0ca ipv6: fix out of bound writes in __ip6_append_data()
3a854210f9a5 bridge: start hello_timer when enabling KERNEL_STP in br_stp_start
b543ccc4f627 qmi_wwan: add another Lenovo EM74xx device ID
94c0bf3cbb99 bridge: netlink: check vlan_default_pvid range
f76d54a8882e ipv6: Check ip6_find_1stfragopt() return value properly.
017fabead5c2 ipv6: Prevent overrun when parsing v6 header options
640bfcf232a9 net: Improve handling of failures on link and route dumps
7ede5c90fcdd tcp: eliminate negative reordering in tcp_clean_rtx_queue
ffa551def59c sctp: do not inherit ipv6_{mc|ac|fl}_list from parent
704e6c6b8651 sctp: fix src address selection if using secondary addresses for ipv6
90e3f8a55871 tcp: avoid fragmenting peculiar skbs in SACK
182abc4e74a1 s390/qeth: avoid null pointer dereference on OSN
21b871582375 s390/qeth: unbreak OSM and OSN support
2ac37098ee3d s390/qeth: handle sysfs error during initialization
d1428ee54073 ipv6/dccp: do not inherit ipv6_mc_list from parent
5f67a1663c03 dccp/tcp: do not inherit mc_list from parent
b9978c27454c sparc: Fix -Wstringop-overflow warning
b409ba3b0535 Linux 4.4.70
837bfdb41337 drivers: char: mem: Check for address space wraparound with mmap()
52cf24769487 nfsd: encoders mustn't use unitialized values in error cases
da922dc48dcf drm/edid: Add 10 bpc quirk for LGD 764 panel in HP zBook 17 G2
bc428e94070e PCI: Freeze PME scan before suspending devices
5f36c8b4e4a3 PCI: Fix pci_mmap_fits() for HAVE_PCI_RESOURCE_TO_USER platforms
6384f782a69c tracing/kprobes: Enforce kprobes teardown after testing
d5fb96b955ff osf_wait4(): fix infoleak
e07db0d720d3 genirq: Fix chained interrupt data ordering
1736f2b3de62 uwb: fix device quirk on big-endian hosts
ca19dd15e7bb metag/uaccess: Check access_ok in strncpy_from_user
2d9b2e780832 metag/uaccess: Fix access_ok()
98d5e84363ea iommu/vt-d: Flush the IOTLB to get rid of the initial kdump mappings
cb89b1f9dff9 staging: rtl8192e: rtl92e_get_eeprom_size Fix read size of EPROM_CMD.
427907e599fa staging: rtl8192e: fix 2 byte alignment of register BSSIDR.
8b26f53bf026 mm/huge_memory.c: respect FOLL_FORCE/FOLL_COW for thp
f03484fd5a3a xc2028: Fix use-after-free bug properly
e0188a556da6 arm64: documentation: document tagged pointer stack constraints
06dd8281a7d3 arm64: uaccess: ensure extension of access_ok() addr
c23fee69f5b5 arm64: xchg: hazard against entire exchange variable
acbab784a9b6 ARM: dts: at91: sama5d3_xplained: not all ADC channels are available
6ae3be7167b7 ARM: dts: at91: sama5d3_xplained: fix ADC vref
1ab43a598996 powerpc/64e: Fix hang when debugging programs with relocated kernel
33c0c0f8edb9 powerpc/pseries: Fix of_node_put() underflow during DLPAR remove
a86b9ecf1158 powerpc/book3s/mce: Move add_taint() later in virtual mode
f3ffc64bf3dd cx231xx-cards: fix NULL-deref at probe
3208e455284b cx231xx-audio: fix NULL-deref at probe
bd14c18861c7 cx231xx-audio: fix init error path
f7c778fa707d dvb-frontends/cxd2841er: define symbol_rate_min/max in T/C fe-ops
e5a9ebb4387a zr364xx: enforce minimum size when reading header
a6e0caa34715 dib0700: fix NULL-deref at probe
a896652f6ad3 s5p-mfc: Fix unbalanced call to clock management
fc9753aa6ce9 gspca: konica: add missing endpoint sanity check
04f522476a26 ceph: fix recursion between ceph_set_acl() and __ceph_setattr()
0e9e19a66530 iio: proximity: as3935: fix as3935_write
8a5b15e198f1 ipx: call ipxitf_put() in ioctl error path
4ae1efc7cc98 USB: hub: fix non-SS hub-descriptor handling
af4e23402409 USB: hub: fix SS hub-descriptor handling
1e6e9c4c36f9 USB: serial: io_ti: fix div-by-zero in set_termios
4be0ae3d314c USB: serial: mct_u232: fix big-endian baud-rate handling
704f23f20c5e USB: serial: qcserial: add more Lenovo EM74xx device IDs
1c7f99aa2979 usb: serial: option: add Telit ME910 support
319be2ab4731 USB: iowarrior: fix info ioctl on big-endian hosts
1beae7405705 usb: musb: tusb6010_omap: Do not reset the other direction's packet size
5cbfae4ad360 ttusb2: limit messages to buffer size
9737909ff9d4 mceusb: fix NULL-deref at probe
f05c0dfd394f usbvision: fix NULL-deref at probe
14d0cafd3f95 net: irda: irda-usb: fix firmware name on big-endian hosts
ec0b553bd8df usb: host: xhci-mem: allocate zeroed Scratchpad Buffer
c0791b605fac xhci: apply PME_STUCK_QUIRK and MISSING_CAS quirk for Denverton
65ba07489dcd usb: host: xhci-plat: propagate return value of platform_get_irq()
ada79b5ecda7 sched/fair: Initialize throttle_count for new task-groups lazily
f01ae9cb0de2 sched/fair: Do not announce throttled next buddy in dequeue_task_fair()
ae3d7b8931eb fscrypt: avoid collisions when presenting long encrypted filenames
129a883b0191 f2fs: check entire encrypted bigname when finding a dentry
269d8211c400 fscrypt: fix context consistency check when key(s) unavailable
0aa3b8ef6975 net: qmi_wwan: Add SIMCom 7230E
22823e95193a ext4 crypto: fix some error handling
0a76f023e6f2 ext4 crypto: don't let data integrity writebacks fail with ENOMEM
f0486aa7bc80 USB: serial: ftdi_sio: add Olimex ARM-USB-TINY(H) PIDs
16ac61cf707c USB: serial: ftdi_sio: fix setting latency for unprivileged users
6a70a5833ecc pid_ns: Fix race between setns'ed fork() and zap_pid_ns_processes()
ddf9b92f12dd pid_ns: Sleep in TASK_INTERRUPTIBLE in zap_pid_ns_processes
060d2642682e iio: dac: ad7303: fix channel description
14323b731072 of: fix sparse warning in of_pci_range_parser_one
000959316365 proc: Fix unbalanced hard link numbers
d22b933fb8eb cdc-acm: fix possible invalid access when processing notification
e4add1cf6b41 drm/nouveau/tmr: handle races with hw when updating the next alarm time
9d78e40f5f41 drm/nouveau/tmr: avoid processing completed alarms when adding a new one
5e07724c28f4 drm/nouveau/tmr: fix corruption of the pending list when rescheduling an alarm
27f82df2f026 drm/nouveau/tmr: ack interrupt before processing alarms
3819271d8a5f drm/nouveau/therm: remove ineffective workarounds for alarm bugs
7d2d6022807a drm/amdgpu: Make display watermark calculations more accurate
349666cfbe76 drm/amdgpu: Avoid overflows/divide-by-zero in latency_watermark calculations.
670a7c5db22e ath9k_htc: fix NULL-deref at probe
8431037ba10b ath9k_htc: Add support of AirTies 1eda:2315 AR9271 device
c26190b5378d s390/cputime: fix incorrect system time
d1f8ea3bd095 s390/kdump: Add final note
de74aedd71c0 regulator: tps65023: Fix inverted core enable logic.
6d380f50113c KVM: X86: Fix read out-of-bounds vulnerability in kvm pio emulation
e9c9e7588ef5 KVM: x86: Fix load damaged SSEx MXCSR register
08e589a97d38 ima: accept previously set IMA_NEW_FILE
0c99c8a22cc4 mwifiex: pcie: fix cmd_buf use-after-free in remove/reset
e367d1b00f81 rtlwifi: rtl8821ae: setup 8812ae RFE according to device type
c5ff397f075e md: update slab_cache before releasing new stripes when stripes resizing
d3df9403c075 dm space map disk: fix some book keeping in the disk space map
1dc9fb3cc12e dm thin metadata: call precommit before saving the roots
ea4889d6f39d dm bufio: make the parameter "retain_bytes" unsigned long
4a9631ffe520 dm cache metadata: fail operations if fail_io mode has been established
8d8fb01a62f2 dm bufio: check new buffer allocation watermark every 30 seconds
5d1df36c9d2c dm bufio: avoid a possible ABBA deadlock
4df4bf1df916 dm raid: select the Kconfig option CONFIG_MD_RAID0
fa499b361bd4 dm btree: fix for dm_btree_find_lowest_key()
c04397351fe5 infiniband: call ipv6 route lookup via the stub interface
63450e38efe3 tpm_crb: check for bad response size
025e33ee387a ARM: tegra: paz00: Mark panel regulator as enabled on boot
b171ce6c5e41 USB: core: replace %p with %pK
cda5c7e625ce char: lp: fix possible integer overflow in lp_setup()
ea99c2248495 watchdog: pcwd_usb: fix NULL-deref at probe
ca157f64dc9c USB: ene_usb6250: fix DMA to the stack
b572de59915e usb: misc: legousbtower: Fix memory leak
8a7f9dfbd4ae usb: misc: legousbtower: Fix buffers on stack
bb56ca291305 Linux 4.4.69
35df2085ec02 ipmi: Fix kernel panic at ipmi_ssif_thread()
d4392269f7ce wlcore: Add RX_BA_WIN_SIZE_CHANGE_EVENT event
4b86b46ef410 wlcore: Pass win_size taken from ieee80211_sta to FW
8ef67e0078b3 mac80211: RX BA support for sta max_rx_aggregation_subframes
d13333edbcc7 mac80211: pass block ack session timeout to to driver
0fe94dd915fd mac80211: pass RX aggregation window size to driver
f85e0c5f592c Bluetooth: hci_intel: add missing tty-device sanity check
bf3feec82ce3 Bluetooth: hci_bcm: add missing tty-device sanity check
ff1c4cf24642 Bluetooth: Fix user channel for 32bit userspace on 64bit kernel
9bd2cc56a089 tty: pty: Fix ldisc flush after userspace become aware of the data already
814c2bac9032 serial: omap: suspend device on probe errors
a52e1012585f serial: omap: fix runtime-pm handling on unbind
605fa1a2aa03 serial: samsung: Use right device for DMA-mapping calls
db467fee7ffb arm64: KVM: Fix decoding of Rt/Rt2 when trapping AArch32 CP accesses
f08bc4d63377 padata: free correct variable
9f4ba9062c2c CIFS: add misssing SFM mapping for doublequote
9a4050669919 cifs: fix CIFS_IOC_GET_MNT_INFO oops
a8900a64eabf CIFS: fix mapping of SFM_SPACE and SFM_PERIOD
b85fa4129e7a SMB3: Work around mount failure when using SMB3 dialect to Macs
89d23005fd63 Set unicode flag on cifs echo request to avoid Mac error
7aad381af8c3 fs/block_dev: always invalidate cleancache in invalidate_bdev()
bb7031c7e50f ceph: fix memory leak in __ceph_setxattr()
eb04a7344c83 fs/xattr.c: zero out memory copied to userspace in getxattr
a3e6be0e9447 ext4: evict inline data when writing to memory map
ab7ebca418bb IB/mlx4: Reduce SRIOV multicast cleanup warning message to debug level
1ad689bdc12d IB/mlx4: Fix ib device initialization error flow
1360f4301c78 IB/IPoIB: ibX: failed to create mcg debug file
1549c883d39b IB/core: Fix sysfs registration error flow
d96bb545d6ff vfio/type1: Remove locked page accounting workqueue
341adf516842 dm era: save spacemap metadata root after the pre-commit
dcd4004ae521 crypto: algif_aead - Require setkey before accept(2)
21cb4dc57b3c block: fix blk_integrity_register to use template's interval_exp if not 0
cbaeca8251bb KVM: arm/arm64: fix races in kvm_psci_vcpu_on
7b268351860c KVM: x86: fix user triggerable warning in kvm_apic_accept_events()
a2d5dcf338ea um: Fix PTRACE_POKEUSER on x86_64
b8cd9dd513bf x86, pmem: Fix cache flushing for iovec write < 8 bytes
d34ecdc9712c selftests/x86/ldt_gdt_32: Work around a glibc sigaction() bug
e89233f53e3d x86/boot: Fix BSS corruption/overwrite bug in early x86 kernel startup
3d3ca81d5e35 usb: hub: Do not attempt to autosuspend disconnected devices
0b4dad7c2cf4 usb: hub: Fix error loop seen after hub communication errors
7cad8a47ca94 usb: Make sure usb/phy/of gets built-in
6c3785cca656 usb: misc: add missing continue in switch
d3c04901f750 staging: comedi: jr3_pci: cope with jiffies wraparound
7fc6659b19a2 staging: comedi: jr3_pci: fix possible null pointer dereference
5ac489a80ffb staging: gdm724x: gdm_mux: fix use-after-free on module unload
265500bf9802 staging: vt6656: use off stack for out buffer USB transfers.
9d3c45786f27 staging: vt6656: use off stack for in buffer USB transfers.
de9d2d297ebe USB: Proper handling of Race Condition when two USB class drivers try to call init_usb_class simultaneously
fcd9a083cd22 USB: serial: ftdi_sio: add device ID for Microsemi/Arrow SF2PLUS Dev Kit
af3c8bf0e06b usb: host: xhci: print correct command ring address
8e1a740a5d66 iscsi-target: Set session_fall_back_to_erl0 when forcing reinstatement
6cd0200a9554 target: Convert ACL change queue_depth se_session reference usage
de41b0e12d6e target/fileio: Fix zero-length READ and WRITE handling
a1c2b01c310a target: Fix compare_and_write_callback handling for non GOOD status
8e209a07b106 xen: adjust early dom0 p2m handling to xen hypervisor behavior

(From OE-Core rev: e49b3ca1633db277de1e30e8ccfae23c3babf863)

Signed-off-by: Bruce Ashfield <bruce.ashfield@windriver.com>
Signed-off-by: Ross Burton <ross.burton@intel.com>
(cherry picked from commit 2e7d1a42b14de6f47543186f7855658a2ec36397)
Signed-off-by: Armin Kuster <akuster808@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-07-27 22:36:45 +01:00
Bruce Ashfield
c78d6743db linux-yocto/4.9: update to 4.9.31
Updating to the latest 4.9 -stable which comprises the following
commits:

   f1aa865ae5d4 Linux 4.9.31
   11214bd292ec xfs: Fix off-by-in in loop termination in xfs_find_get_desired_pgoff()
   75c5afd58d46 xfs: fix unaligned access in xfs_btree_visit_blocks
   7fb8ab8f0a38 xfs: avoid mount-time deadlock in CoW extent recovery
   e40c145c023d xfs: xfs_trans_alloc_empty
   0e542792a046 xfs: bad assertion for delalloc an extent that start at i_size
   f60d76efa91a xfs: BMAPX shouldn't barf on inline-format directories
   53c44c236f21 xfs: fix indlen accounting error on partial delalloc conversion
   54894ea3c542 xfs: fix use-after-free in xfs_finish_page_writeback
   d457f822817f xfs: reserve enough blocks to handle btree splits when remapping
   0ba833fe73d2 xfs: wait on new inodes during quotaoff dquot release
   2ea882d8ebc7 xfs: update ag iterator to support wait on new inodes
   e86b616b5b9e xfs: support ability to wait on new inodes
   10f0b2c3c225 xfs: fix up quotacheck buffer list error handling
   95487d4be1e9 xfs: prevent multi-fsb dir readahead from reading random blocks
   93bd169845e5 xfs: handle array index overrun in xfs_dir2_leaf_readbuf()
   99226b890d63 xfs: fix integer truncation in xfs_bmap_remap_alloc
   4e2762878a59 xfs: drop iolock from reclaim context to appease lockdep
   4e8163fc8159 xfs: actually report xattr extents via iomap
   de417ea6b0a6 xfs: fix over-copying of getbmap parameters from userspace
   c2ad2dc3d264 xfs: use dedicated log worker wq to avoid deadlock with cil wq
   3890d83805fe xfs: fix kernel memory exposure problems
   ca659e086fb7 xfs: rework the inline directory verifiers
   815414e7648b xfs: verify inline directory data forks
   11b485477285 xfs: fix off-by-one on max nr_pages in xfs_find_get_desired_pgoff()
   9c795fff53f9 xfs: use ->b_state to fix buffer I/O accounting release race
   c9eab63b9e62 xfs: Fix missed holes in SEEK_HOLE implementation
   670821b9482d drm/gma500/psb: Actually use VBT mode when it is found
   74b416367b4e mm/slub.c: trace free objects at KERN_INFO
   c1bb2a899b5f slub/memcg: cure the brainless abuse of sysfs attributes
   873f3b0ebbfe ksm: prevent crash after write_protect_page fails
   d5ecb4ca0da7 x86/boot: Use CROSS_COMPILE prefix for readelf
   d1cff2222071 RDMA/qib,hfi1: Fix MR reference count leak on write with immediate
   292f70cd9649 mm: consider memblock reservations for deferred memory initialization sizing
   1163e785b150 mlock: fix mlock count can not decrease in race condition
   d494cab70697 mm/migrate: fix refcount handling when !hugepage_migration_supported()
   7d8ef0e0bc1e ALSA: hda - apply STAC_9200_DELL_M22 quirk for Dell Latitude D430
   da856d05645c pcmcia: remove left-over %Z format
   ebd4c110fd0b drm/radeon: Fix vram_size/visible values in DRM_RADEON_GEM_INFO ioctl
   acc771fdaec7 drm/radeon: Unbreak HPD handling for r600+
   c8d25fcb5980 drm/radeon/ci: disable mclk switching for high refresh rates (v2)
   9869fb485cc6 scsi: mpt3sas: Force request partial completion alignment
   21f33b157721 nvme: avoid to use blk_mq_abort_requeue_list()
   510b0ec7f60f nvme: use blk_mq_start_hw_queues() in nvme_kill_queues()
   ae0578089242 nvme-rdma: support devices with queue size < 32
   34808d76dd77 HID: wacom: Have wacom_tpc_irq guard against possible NULL dereference
   69b1d90e6a0f ibmvscsis: Fix the incorrect req_lim_delta
   80569d0e09ad ibmvscsis: Clear left-over abort_cmd pointers
   49d33fd10070 iscsi-target: Always wait for kthread_should_stop() before kthread exit
   ecbf0f48d65e mmc: sdhci-iproc: suppress spurious interrupt with Multiblock read
   8735cf2291cd Revert "ACPI / button: Change default behavior to lid_init_state=open"
   32d8077f1e9b acpi, nfit: Fix the memory error check in nfit_handle_mce()
   68c83a379106 x86/MCE: Export memory_error()
   4472887cbd13 crypto: skcipher - Add missing API setkey checks
   63399974effb i2c: i2c-tiny-usb: fix buffer not being DMA capable
   d3b2d9ca90c2 drivers/tty: 8250: only call fintek_8250_probe when doing port I/O
   1d74fc36f3ec powerpc/spufs: Fix hash faults for kernel regions
   68a056175512 fs/ufs: Set UFS default maximum bytes per file
   1a658771d5e1 sparc/ftrace: Fix ftrace graph time measurement
   45ceb845ef34 sparc: Fix -Wstringop-overflow warning
   c1133c671a04 bpf: add bpf_clone_redirect to bpf_helper_changes_pkt_data
   988b9792b856 ipv4: add reference counting to metrics
   1de51502a025 sctp: fix ICMP processing if skb is non-linear
   4b81271ed1c3 tcp: avoid fastopen API to be used on AF_UNSPEC
   9e056584770b virtio-net: enable TSO/checksum offloads for Q-in-Q vlans
   9c6cfd5811bd be2net: Fix offload features for Q-in-Q packets
   5f595d529796 vlan: Fix tcp checksum offloads in Q-in-Q vlans
   cc6773b51bf3 net: phy: marvell: Limit errata to 88m1101
   4fb5fd27dec0 net/mlx5: Avoid using pending command interface slots
   1730a2b9e5b5 bonding: fix accounting of active ports in 3ad
   304b41014acb ipv6: fix out of bound writes in __ip6_append_data()
   ee72e7e5c2b4 bridge: start hello_timer when enabling KERNEL_STP in br_stp_start
   0d10ebbc835f qmi_wwan: add another Lenovo EM74xx device ID
   2ea4221eb4ae bridge: netlink: check vlan_default_pvid range
   3fa202ef74c8 ipv6: Check ip6_find_1stfragopt() return value properly.
   a2c845e51a82 ipv6: Prevent overrun when parsing v6 header options
   68647616fd53 net: Improve handling of failures on link and route dumps
   0174b07408f2 tcp: eliminate negative reordering in tcp_clean_rtx_queue
   ac3735bf97f0 net/mlx5e: Fix ethtool pause support and advertise reporting
   1594973b8e07 net/mlx5e: Use the correct pause values for ethtool advertising
   f79d3307c035 net/packet: fix missing net_device reference release
   5e7d9f0b3f72 sctp: do not inherit ipv6_{mc|ac|fl}_list from parent
   eb7f6d6989ad sctp: fix src address selection if using secondary addresses for ipv6
   8d625242e86b tcp: avoid fragmenting peculiar skbs in SACK
   a5db124dc2a4 net: fix compile error in skb_orphan_partial()
   5d165daafc44 netem: fix skb_orphan_partial()
   21e3113298f9 bpf, arm64: fix faulty emission of map access in tail calls
   c1f3f197d650 s390/qeth: add missing hash table initializations
   96a81eb6ad5a s390/qeth: avoid null pointer dereference on OSN
   b68c2e387a23 s390/qeth: unbreak OSM and OSN support
   25c1a1e4d891 s390/qeth: handle sysfs error during initialization
   4bd8f5e38e5a ipv6/dccp: do not inherit ipv6_mc_list from parent
   8f1f08be3974 driver: vrf: Fix one possible use-after-free issue
   4eed44029507 dccp/tcp: do not inherit mc_list from parent
   db3fd4527ed3 Linux 4.9.30
   5a597b225d48 drm/i915/gvt: Disable access to stolen memory as a guest
   1489183c2005 drivers: char: mem: Check for address space wraparound with mmap()
   51d9c51523ec nfsd: encoders mustn't use unitialized values in error cases
   ea465551af30 nfsd: fix undefined behavior in nfsd4_layout_verify
   f2b6f508c541 NFS: Use GFP_NOIO for two allocations in writeback
   a8c35e5c88de NFS: Fix use after free in write error path
   88ac6b7e0c82 NFSv4: Fix a hang in OPEN related to server reboot
   5438f8952906 drm/edid: Add 10 bpc quirk for LGD 764 panel in HP zBook 17 G2
   5956b2815f90 mtd: nand: add ooblayout for old hamming layout
   6639b27f5a4c mtd: nand: omap2: Fix partition creation via cmdline mtdparts
   e437af936a49 mtd: nand: orion: fix clk handling
   db6636416195 PCI: Freeze PME scan before suspending devices
   9ad81ecb28d6 PCI: Only allow WC mmap on prefetchable resources
   6bec009a2f69 PCI: Fix another sanity check bug in /proc/pci mmap
   fa3bbb1c7f06 PCI: Fix pci_mmap_fits() for HAVE_PCI_RESOURCE_TO_USER platforms
   87e7dc97c8a0 PCI: hv: Specify CPU_AFFINITY_ALL for MSI affinity when >= 32 CPUs
   d1d63f97dd76 PCI: hv: Allocate interrupt descriptors with GFP_ATOMIC
   dd0023d7105c tracing/kprobes: Enforce kprobes teardown after testing
   cc0aa21de47c um: Fix to call read_initrd after init_bootmem
   541c67844198 osf_wait4(): fix infoleak
   07d8aabff490 MIPS: Loongson-3: Select MIPS_L1_CACHE_SHIFT_6
   6d6a43a08611 nvme: unmap CMB and remove sysfs file in reset path
   423f1752a028 genirq: Fix chained interrupt data ordering
   3fe116563d5d uwb: fix device quirk on big-endian hosts
   f157261b55a4 stackprotector: Increase the per-task stack canary's random range from 32 bits to 64 bits on 64-bit platforms
   e8a8a6972c50 metag/uaccess: Check access_ok in strncpy_from_user
   9fefcb947ec2 metag/uaccess: Fix access_ok()
   21f2950f91ff iommu/vt-d: Flush the IOTLB to get rid of the initial kdump mappings
   58e36d6f7f11 staging: rtl8192e: GetTs Fix invalid TID 7 warning.
   93a46fe4eb41 staging: rtl8192e: rtl92e_get_eeprom_size Fix read size of EPROM_CMD.
   d0226f9adaf8 staging: rtl8192e: fix 2 byte alignment of register BSSIDR.
   f4205502948b staging: rtl8192e: rtl92e_fill_tx_desc fix write to mapped out memory.
   e6b8f5ade305 arm64: documentation: document tagged pointer stack constraints
   e817a7fb2f31 arm64: uaccess: ensure extension of access_ok() addr
   4775fbcc92d7 arm64: armv8_deprecated: ensure extension of addr
   f2e4f4e538f0 arm64: ensure extension of smp_store_release value
   88675139a81d arm64: xchg: hazard against entire exchange variable
   31a331c8cf26 arm64: dts: hi6220: Reset the mmc hosts
   5ee1c675ab92 ARM: dts: imx6sx-sdb: Remove OPP override
   03d8b264bcb9 ARM: dts: at91: sama5d3_xplained: not all ADC channels are available
   086ea4b9510c ARM: dts: at91: sama5d3_xplained: fix ADC vref
   9f6cea2e3bbd ARM: 8670/1: V7M: Do not corrupt vector table around v7m_invalidate_l1 call
   3304f5a1cb87 ARM: 8662/1: module: split core and init PLT sections
   ee773459557d KVM: arm: plug potential guest hardware debug leakage
   0ba7e8e34193 arm: KVM: Do not use stack-protector to compile HYP code
   d0fb4b7d00bb arm64: KVM: Do not use stack-protector to compile EL2 code
   a685601f8533 powerpc/tm: Fix FP and VMX register corruption
   018b91870856 powerpc/64e: Fix hang when debugging programs with relocated kernel
   3915c566ea94 powerpc/iommu: Do not call PageTransHuge() on tail pages
   5ba5685a26b1 powerpc/pseries: Fix of_node_put() underflow during DLPAR remove
   a0da3e00df38 powerpc/book3s/mce: Move add_taint() later in virtual mode
   222f1d668d00 powerpc/eeh: Avoid use after free in eeh_handle_special_event()
   690f09eb52bc powerpc/mm: Ensure IRQs are off in switch_mm()
   2338de43e234 cx231xx-cards: fix NULL-deref at probe
   8ebb884009b6 cx231xx-audio: fix NULL-deref at probe
   1b24b8c07023 cx231xx-audio: fix init error path
   40616929f87e dw2102: limit messages to buffer size
   e42a6715d26b digitv: limit messages to buffer size
   28590f1bb601 dvb-frontends/cxd2841er: define symbol_rate_min/max in T/C fe-ops
   64579fcc57fd zr364xx: enforce minimum size when reading header
   466b45af50fd dib0700: fix NULL-deref at probe
   074912daab55 s5p-mfc: Fix unbalanced call to clock management
   4a9c54250492 gspca: konica: add missing endpoint sanity check
   e2f95f88106f s5p-mfc: Fix race between interrupt routine and device functions
   6bee0b1fe4ed iio: hid-sensor: Store restore poll and hysteresis on S3
   a99462b13dff iio: proximity: as3935: fix as3935_write
   820adccd0e3b ipx: call ipxitf_put() in ioctl error path
   c67e87a22dd8 USB: hub: fix non-SS hub-descriptor handling
   3e4a4e68df08 USB: hub: fix SS hub-descriptor handling
   f9cd79e0ad1f USB: serial: io_ti: fix div-by-zero in set_termios
   c3e024ff9180 USB: serial: mct_u232: fix big-endian baud-rate handling
   d8fc44d67488 USB: serial: qcserial: add more Lenovo EM74xx device IDs
   7e5407600663 usb: serial: option: add Telit ME910 support
   ee0f3a89842e USB: iowarrior: fix info ioctl on big-endian hosts
   dbb127332abf usb: musb: Fix trying to suspend while active for OTG configurations
   08c735a15d5b usb: musb: tusb6010_omap: Do not reset the other direction's packet size
   ff9177b158c3 usb: dwc3: gadget: Prevent losing events in event cache
   653cd31a2ca5 dvb-usb-dibusb-mc-common: Add MODULE_LICENSE
   4f93054d9b45 ttusb2: limit messages to buffer size
   c71b5040632f mceusb: fix NULL-deref at probe
   736f41a47442 usbvision: fix NULL-deref at probe
   a3adb4721ae2 net: irda: irda-usb: fix firmware name on big-endian hosts
   1046d6a51f57 usb: host: xhci-mem: allocate zeroed Scratchpad Buffer
   219628bb0c05 xhci: apply PME_STUCK_QUIRK and MISSING_CAS quirk for Denverton
   1a926919364f usb: host: xhci-plat: propagate return value of platform_get_irq()
   374a3fb5c3b0 xhci: remove GFP_DMA flag from allocation
   fa313fd6673e libnvdimm: fix clear length of nvdimm_forget_poison()
   af9bd5218855 fscrypt: avoid collisions when presenting long encrypted filenames
   8daed21dbce1 f2fs: check entire encrypted bigname when finding a dentry
   b9c0da6219e1 USB: chaoskey: fix Alea quirk on big-endian hosts
   545a3171d37f USB: serial: ftdi_sio: add Olimex ARM-USB-TINY(H) PIDs
   038ccaa5d50e USB: serial: ftdi_sio: fix setting latency for unprivileged users
   2ea2f891fa85 pid_ns: Fix race between setns'ed fork() and zap_pid_ns_processes()
   6dc6a2700b6a pid_ns: Sleep in TASK_INTERRUPTIBLE in zap_pid_ns_processes
   5e40ac3fbd0d IB/hfi1: Fix a subcontext memory leak
   b894ea8263ca IB/hfi1: Return an error on memory allocation failure
   dfb450b2b66e IIO: bmp280-core.c: fix error in humidity calculation
   a03176f92a02 iio: dac: ad7303: fix channel description
   05a36277a195 ibmvscsis: Do not send aborted task response
   9907c838fc07 of: fdt: add missing allocation-failure check
   80cdf2065bf0 of: fix "/cpus" reference leak in of_numa_parse_cpu_nodes()
   ae5074ba9ef8 of: fix sparse warning in of_pci_range_parser_one
   d10b21d6e562 proc: Fix unbalanced hard link numbers
   168b2bfaa235 cxl: Route eeh events to all drivers in cxl_pci_error_detected()
   393531299547 cxl: Force context lock during EEH flow
   fc6b678ab1d4 ohci-pci: add qemu quirk
   809ae061d998 cdc-acm: fix possible invalid access when processing notification
   198ab4031873 gpio: omap: return error if requested debounce time is not possible
   b77adf29b856 drm/nouveau/tmr: handle races with hw when updating the next alarm time
   1ec3c712e231 drm/nouveau/tmr: avoid processing completed alarms when adding a new one
   6445a49a8c59 drm/nouveau/tmr: fix corruption of the pending list when rescheduling an alarm
   16e10490d260 drm/nouveau/tmr: ack interrupt before processing alarms
   e8ee63059196 drm/nouveau/therm: remove ineffective workarounds for alarm bugs
   d1f006efde1f drm/amdgpu: Add missing lb_vblank_lead_lines setup to DCE-6 path.
   b334b3492888 drm/amdgpu: Avoid overflows/divide-by-zero in latency_watermark calculations.
   ebf3cf5b9a67 drm/amdgpu: Make display watermark calculations more accurate
   adc6647c4f0f ath9k_htc: fix NULL-deref at probe
   c39bafb9ee7a ath9k_htc: Add support of AirTies 1eda:2315 AR9271 device
   768ae64b2ab2 s390/cputime: fix incorrect system time
   8c5157c1967e s390/kdump: Add final note
   c849b4fa8e10 regulator: tps65023: Fix inverted core enable logic.
   5b00d6c85a92 regulator: rk808: Fix RK818 LDO2
   ae382caa96f7 x86: fix 32-bit case of __get_user_asm_u64()
   54e385430e12 KVM: X86: Fix read out-of-bounds vulnerability in kvm pio emulation
   c996ad7568c0 KVM: x86: Fix potential preemption when get the current kvmclock timestamp
   b64ecb25b1d5 KVM: x86: Fix load damaged SSEx MXCSR register
   91034255e42f ima: accept previously set IMA_NEW_FILE
   ce7146cf9bdf mwifiex: pcie: fix cmd_buf use-after-free in remove/reset
   385eb9b33e1d mwifiex: MAC randomization should not be persistent
   444df795edf4 rtlwifi: rtl8821ae: setup 8812ae RFE according to device type
   7e7897878783 md: MD_CLOSING needs to be cleared after called md_set_readonly or do_md_stop
   fa9a4a9c6d6f md: update slab_cache before releasing new stripes when stripes resizing
   f2bb8bcbc09d dm space map disk: fix some book keeping in the disk space map
   cc681811a92c dm thin metadata: call precommit before saving the roots
   eeaf13394d32 dm bufio: make the parameter "retain_bytes" unsigned long
   e69242436b6b dm cache metadata: fail operations if fail_io mode has been established
   042d8dbf69c6 dm mpath: split and rename activate_path() to prepare for its expanded use
   e08047c90c8a dm bufio: check new buffer allocation watermark every 30 seconds
   98e7b9d45bf4 dm bufio: avoid a possible ABBA deadlock
   c5066c4c1b7e dm raid: select the Kconfig option CONFIG_MD_RAID0
   4de8eceefbea dm btree: fix for dm_btree_find_lowest_key()
   5db8f42b62da infiniband: call ipv6 route lookup via the stub interface
   cb5cf8aaba2e mlx5: Fix mlx5_ib_map_mr_sg mr length
   ece453e8b0ca ASoC: cs4271: configure reset GPIO as output
   cc15d340ec6a tpm_crb: check for bad response size
   0c150305212b tpm: add sleep only for retry in i2c_nuvoton_write_status()
   40ca1fd38e11 tpm: msleep() delays - replace with usleep_range() in i2c nuvoton driver
   568ea0dcc27e tpm_tis_spi: Add small delay after last transfer
   c4b3779c9783 tpm_tis_spi: Remove limitation of transfers to MAX_SPI_FRAMESIZE bytes
   d513cf24e240 tpm_tis_spi: Check correct byte for wait state indicator
   daa432c1a65a tpm_tis_spi: Abort transfer when too many wait states are signaled
   aad1e5c81cbb tpm_tis_spi: Use single function to transfer data
   cc0f994c205d fanotify: don't expose EOPENSTALE to userspace
   e8b6d43ce3ea ARM: tegra: paz00: Mark panel regulator as enabled on boot
   0251f6affb11 ALSA: hda: Fix cpu lockup when stopping the cmd dmas
   5c1bd0cb4992 tpm_tis_core: Choose appropriate timeout for reading burstcount
   3888f62943bb USB: core: replace %p with %pK
   5d263d94a870 char: lp: fix possible integer overflow in lp_setup()
   7a2b8471ab12 watchdog: pcwd_usb: fix NULL-deref at probe
   6e2078c10092 USB: ene_usb6250: fix DMA to the stack
   7d96e4a404c1 usb: misc: legousbtower: Fix memory leak
   810b7c559954 usb: misc: legousbtower: Fix buffers on stack
   f5eea276d8de Linux 4.9.29
   9ee8502bd2cc pstore: Shut down worker when unregistering
   a4de93008625 pstore: Fix flags to enable dumps on powerpc
   1a1029507258 libnvdimm, pfn: fix 'npfns' vs section alignment
   c171b24fe508 libnvdimm, pmem: fix a NULL pointer BUG in nd_pmem_notify
   5b6e7f353290 libnvdimm, region: fix flush hint detection crash
   46ba11b007c1 ipmi: Fix kernel panic at ipmi_ssif_thread()
   6e7de39ef9a4 Bluetooth: hci_intel: add missing tty-device sanity check
   f2f6d77fabe2 Bluetooth: hci_bcm: add missing tty-device sanity check
   518ca84479d7 Bluetooth: Fix user channel for 32bit userspace on 64bit kernel
   89c91ea37581 tty: pty: Fix ldisc flush after userspace become aware of the data already
   e38a4c3b0b4a serial: omap: suspend device on probe errors
   f8d2751b0012 serial: omap: fix runtime-pm handling on unbind
   c5689e0ab6e1 serial: samsung: Use right device for DMA-mapping calls
   64a599ac5dcc fscrypt: fix context consistency check when key(s) unavailable
   8dd114ef78c8 device-dax: fix cdev leak
   6240377c574b padata: free correct variable
   1c5d8b377e58 CIFS: add misssing SFM mapping for doublequote
   6f3b2eed8c9a cifs: fix CIFS_IOC_GET_MNT_INFO oops
   f13d96bf98c2 CIFS: fix oplock break deadlocks
   411346640ccd cifs: fix CIFS_ENUMERATE_SNAPSHOTS oops
   449a74439d15 cifs: fix leak in FSCTL_ENUM_SNAPS response handling
   87c0604d860f CIFS: fix mapping of SFM_SPACE and SFM_PERIOD
   8dd4e3ff1bfb SMB3: Work around mount failure when using SMB3 dialect to Macs
   2ac2ad9fb045 Set unicode flag on cifs echo request to avoid Mac error
   4f5e1c48e80b Fix match_prepath()
   4e434d4fe28a mm: prevent potential recursive reclaim due to clearing PF_MEMALLOC
   945d0ecdd9bd fs/block_dev: always invalidate cleancache in invalidate_bdev()
   091784ae9738 ceph: fix memory leak in __ceph_setxattr()
   9a6bb7b5637e fs/xattr.c: zero out memory copied to userspace in getxattr
   1777e888bd40 orangefs: do not check possibly stale size on truncate
   63907bb781e7 orangefs: do not set getattr_time on orangefs_lookup
   59f496104112 orangefs: clean up oversize xattr validation
   127adc188c62 orangefs: fix bounds check for listxattr
   b2764f851db6 ext4: evict inline data when writing to memory map
   7929b50dedd1 perf auxtrace: Fix no_size logic in addr_filter__resolve_kernel_syms()
   e3cea38357ea IB/hfi1: Prevent kernel QP post send hard lockups
   43c54927f6f4 IB/mlx4: Reduce SRIOV multicast cleanup warning message to debug level
   9ae6b33dcbb4 IB/mlx4: Fix ib device initialization error flow
   d20bfe223d3e IB/IPoIB: ibX: failed to create mcg debug file
   7a227630ab89 IB/core: For multicast functions, verify that LIDs are multicast LIDs
   ecb0ab0f89c7 IB/core: Fix sysfs registration error flow
   377178321690 iov_iter: don't revert iov buffer if csum error
   9f43f70dcc56 vfio/type1: Remove locked page accounting workqueue
   1773131ec4b9 dm thin: fix a memory leak when passing discard bio down
   f32e35bc3d54 dm rq: check blk_mq_register_dev() return value in dm_mq_init_request_queue()
   f6ec18eb7425 dm era: save spacemap metadata root after the pre-commit
   f8d05099ec72 crypto: ccp - Change ISR handler method for a v5 CCP
   a0a232489c0f crypto: ccp - Change ISR handler method for a v3 CCP
   93424b2b63e0 crypto: ccp - Disable interrupts early on unload
   36dffff240d9 crypto: ccp - Use only the relevant interrupt bits
   bcc70358396a crypto: algif_aead - Require setkey before accept(2)
   9b2fb8ad5ba1 block: fix blk_integrity_register to use template's interval_exp if not 0
   884ba252f3f1 arm64: KVM: Fix decoding of Rt/Rt2 when trapping AArch32 CP accesses
   7b0d4391d0f4 KVM: arm/arm64: fix races in kvm_psci_vcpu_on
   bdf1d5b4c129 KVM: x86: fix user triggerable warning in kvm_apic_accept_events()
   f99985cdee64 perf/x86: Fix Broadwell-EP DRAM RAPL events
   0750e8b865ee um: Fix PTRACE_POKEUSER on x86_64
   e0c871792cc6 x86, pmem: Fix cache flushing for iovec write < 8 bytes
   e65c6aa10860 selftests/x86/ldt_gdt_32: Work around a glibc sigaction() bug
   acb6dc6aa744 x86/boot: Fix BSS corruption/overwrite bug in early x86 kernel startup
   219a99dd2198 usb: hub: Do not attempt to autosuspend disconnected devices
   181b0de7f7cc usb: hub: Fix error loop seen after hub communication errors
   5a001a687f7c usb: Make sure usb/phy/of gets built-in
   5c51e4b65fca usb: gadget: legacy gadgets are optional
   af534bf9540e usb: misc: add missing continue in switch
   a54ab7420ac7 staging: comedi: jr3_pci: cope with jiffies wraparound
   2bdc2e8c29e9 staging: comedi: jr3_pci: fix possible null pointer dereference
   55f9811b98f2 staging: gdm724x: gdm_mux: fix use-after-free on module unload
   83f66c9a6026 staging: vt6656: use off stack for out buffer USB transfers.
   3eff228fdd43 staging: vt6656: use off stack for in buffer USB transfers.
   6312a84dc8b5 USB: Revert "cdc-wdm: fix "out-of-sync" due to missing notifications"
   5ffe717f351d USB: Proper handling of Race Condition when two USB class drivers try to call init_usb_class simultaneously
   c31ff3ceb326 USB: serial: ftdi_sio: add device ID for Microsemi/Arrow SF2PLUS Dev Kit
   91cd8f900c75 usb: host: xhci: print correct command ring address
   853469d53e86 usb: xhci: bInterval quirk for TI TUSB73x0
   bb1f06f53bcb iscsi-target: Set session_fall_back_to_erl0 when forcing reinstatement
   f788fa43d87a target/fileio: Fix zero-length READ and WRITE handling
   a4e52cc7d81b target: Fix compare_and_write_callback handling for non GOOD status
   f2b8de98f737 xen: adjust early dom0 p2m handling to xen hypervisor behavior
   58cd97ff374b Linux 4.9.28
   6a7620744e89 block: get rid of blk_integrity_revalidate()
   48d9fa1ece5e drm/ttm: fix use-after-free races in vm fault handling
   347d07bf3add wlcore: Add RX_BA_WIN_SIZE_CHANGE_EVENT event
   bbd839a40dde wlcore: Pass win_size taken from ieee80211_sta to FW
   5d7ab8339a9a xen: Revert commits da72ff5bfcb0 and 72a9b186292d
   93862955cbf4 f2fs: sanity check segment count
   265d382cc8db net: mdio-mux: bcm-iproc: call mdiobus_free() in error path
   ced0a31e667f bpf: don't let ldimm64 leak map addresses on unprivileged
   e37aab9c63b8 bnxt_en: allocate enough space for ->ntp_fltr_bmap
   8795ee7bed24 ipv6: reorder ip6_route_dev_notifier after ipv6_dev_notf
   ecbd3ed2ddfe ipv6: initialize route null entry in addrconf_init()
   5d8e07740c69 rtnetlink: NUL-terminate IFLA_PHYS_PORT_NAME string
   f19065308601 ipv4, ipv6: ensure raw socket message is big enough to hold an IP header
   747a00193f26 tcp: do not inherit fastopen_req from parent
   78f032b071c1 net: usb: qmi_wwan: add Telit ME910 support
   0f4ac291a768 net: ipv6: Do not duplicate DAD on link up
   91260baa9d67 tcp: fix wraparound issue in tcp_lp
   493d0a7be31c bpf, arm64: fix jit branch offset related to ldimm64
   7bca0a9702ed bpf: enhance verifier to understand stack pointer arithmetic
   f3235cbd5be1 tcp: do not underestimate skb->truesize in tcp_trim_head()
   3b0129d4111e macsec: dynamically allocate space for sglist
   22d6b013ffcf sparc64: fix fault handling in NGbzero.S and GENbzero.S
   7aa0e14336d9 ALSA: hda - Fix deadlock of controller device lock at unbinding
   170e0abd886b staging: emxx_udc: remove incorrect __init annotations
   d8e94d091376 staging: wlan-ng: add missing byte order conversion
   47b7257fc20f staging/lustre/llite: move root_squash from sysfs to debugfs
   0b77c687d4e0 brcmfmac: Make skb header writable before use
   f73dfc29afa6 brcmfmac: Ensure pointer correctly set if skb data location changes
   b0e2e3acfe8e MIPS: R2-on-R6 MULTU/MADDU/MSUBU emulation bugfix
   2d652d0abd3c scsi: smartpqi: fix time handling
   a46d03e35179 scsi: mac_scsi: Fix MAC_SCSI=m option when SCSI=m
   76aa65a2c0fd scsi: qla2xxx: Fix crash in qla2xxx_eh_abort on bad ptr
   71fd9a94bd3f serial: 8250_omap: Fix probe and remove for PM runtime
   115fb7ec22b5 phy: qcom-usb-hs: Add depends on EXTCON
   52dd14d76812 clk: rockchip: add "," to mux_pll_src_apll_dpll_gpll_usb480m_p on rk3036
   6fa44d4ba212 USB: serial: io_edgeport: fix descriptor error handling
   62b8b773ebde USB: serial: mct_u232: fix modem-status error handling
   e17c48c3280e USB: serial: quatech2: fix control-message error handling
   594c9b4b0acb USB: serial: ftdi_sio: fix latency-timer error handling
   ca4e6525df05 USB: serial: ark3116: fix open error handling
   94bbbfe21b5a USB: serial: ti_usb_3410_5052: fix control-message error handling
   b07e930d1f49 USB: serial: io_edgeport: fix epic-descriptor handling
   4d32e36d6262 USB: serial: ssu100: fix control-message error handling
   9ca301067502 USB: serial: digi_acceleport: fix incomplete rx sanity check
   84443215cf54 USB: serial: keyspan_pda: fix receive sanity checks
   b6c17077e056 usb: chipidea: Handle extcon events properly
   8eb8c9b16fdd usb: chipidea: Only read/write OTGSC from one place
   4a36b6a7ee88 usb: host: ohci-exynos: Decrese node refcount on exynos_ehci_get_phy() error paths
   8f50cb88d862 usb: host: ehci-exynos: Decrese node refcount on exynos_ehci_get_phy() error paths
   30643b5ac754 usb: dwc2: host: use msleep() for long delay
   d0ee36354f77 KVM: nVMX: do not leak PML full vmexit to L1
   560a979735f4 KVM: nVMX: initialize PML fields in vmcs02
   39058adebbb1 Revert "KVM: nested VMX: disable perf cpuid reporting"
   b6cd52a0eeaf x86/platform/intel-mid: Correct MSI IRQ line for watchdog device
   1eae95d4bc03 kprobes/x86: Fix kernel panic when certain exception-handling addresses are probed
   c9f617223904 clk: Make x86/ conditional on CONFIG_COMMON_CLK
   1f0c69cfb2ad x86/mpx: Re-add MPX to selftests Makefile
   56e524a8c305 x86/pci-calgary: Fix iommu_free() comparison of unsigned expression >= 0
   5ed26fad2d08 x86/ioapic: Restore IO-APIC irq_chip retrigger callback
   3b141e2965a7 iwlwifi: mvm: writing zero bytes to debugfs causes a crash
   1fb264cf7d54 iwlwifi: mvm: synchronize firmware DMA paging memory
   495f91630205 iwlwifi: mvm: fix references to first_agg_queue in DQA mode
   4d6f2ac95bc5 iwlwifi: mvm: fix pending frame counter calculation
   48aa5ec292f3 iwlwifi: mvm/pcie: adjust A-MSDU tx_cmd length in PCIe
   04dd401a5145 iwlwifi: mvm: Use aux queue for offchannel frames in dqa
   a6fe39262c51 iwlwifi: mvm: fix reorder timer re-arming
   20a9de99a0da iwlwifi: pcie: fix the set of DMA memory mask
   562c868d94a8 iwlwifi: pcie: trans: Remove unused 'shift_param'
   9c8655c0a860 iwlwifi: pcie: don't increment / decrement a bool
   948634492b40 iwlwifi: mvm: overwrite skb info later
   45dad03aca55 iwlwifi: mvm: don't restart HW if suspend fails with unified image
   d0a8075ffe05 iwlwifi: fix MODULE_FIRMWARE for 6030
   9291cabe094b mwifiex: Avoid skipping WEP key deletion for AP
   dcdeaa743342 mwifiex: remove redundant dma padding in AMSDU
   525fda9221a8 mwifiex: debugfs: Fix (sometimes) off-by-1 SSID print
   1d61da618969 ARM: dts: sun7i: lamobo-r1: Fix CPU port RGMII settings
   ebae7681697d ARM: OMAP5 / DRA7: Fix HYP mode boot for thumb2 build
   f4bff2c44dc9 ARM: dts: NSP: GPIO reboot open-source
   329607b4864d leds: ktd2692: avoid harmless maybe-uninitialized warning
   f46fdb8a2611 arm64: Improve detection of user/non-user mappings in set_pte(_at)
   aadb7e073e81 arm: dts: qcom: Fix ipq board clock rates
   e33fb57428a1 arm64: dts: r8a7795: Mark EthernetAVB device node disabled
   e7b34f4a74f6 power: supply: bq24190_charger: Handle fault before status on interrupt
   7f2b4ad9c07a power: supply: bq24190_charger: Don't read fault register outside irq_handle_thread()
   4b7dac0a23b7 power: supply: bq24190_charger: Call power_supply_changed() for relevant component
   63e1acc84d28 power: supply: bq24190_charger: Install irq_handler_thread() at end of probe()
   20e448f2251c power: supply: bq24190_charger: Call set_mode_host() on pm_resume()
   d8d6aedd54ce power: supply: bq24190_charger: Fix irq trigger to IRQF_TRIGGER_FALLING
   89e8bd3add69 perf/x86/intel/pt: Add format strings for PTWRITE and power event tracing
   1641bb14e8be powerpc: Correctly disable latent entropy GCC plugin on prom_init.o
   b47a6b40655b powerpc/ftrace: Fix confusing help text for DISABLE_MPROFILE_KERNEL
   50e027728915 powerpc/powernv: Fix opal_exit tracepoint opcode
   754a2bcfd8b1 powerpc/mm: Fixup wrong LPCR_VRMASD value
   a19718bd0b19 cpupower: Fix turbo frequency reporting for pre-Sandy Bridge cores
   4f39fcce99d7 power: supply: lp8788: prevent out of bounds array access
   ccef31d22e80 crypto: caam - fix error path for ctx_dma mapping failure
   819e3601d3c5 tmp: use pdev for parent device in tpm_chip_alloc
   326f9b0a39d3 tpm: fix RC value check in tpm2_seal_trusted
   a941f261c8f1 hwmon: (it87) Fix pwm4 detection for IT8620 and IT8628
   898c6bbfc88d drm/sti: fix GDP size to support up to UHD resolution
   f5ca890f138d 9p: fix a potential acl leak

(From OE-Core rev: 527f77e3c3c8fcb6b8dc7c88ecbf87d1b450bc2b)

Signed-off-by: Bruce Ashfield <bruce.ashfield@windriver.com>
Signed-off-by: Ross Burton <ross.burton@intel.com>
(cherry picked from commit d26a362b6bcee7e5e745b76bd6fb5ef94697bf22)
Signed-off-by: Armin Kuster <akuster808@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-07-27 22:36:45 +01:00
Bruce Ashfield
23dd1b79bf linux-yocto/4.10: update to v4.10.17
Updating to the latest 4.10 -stable releases, which comprise the
following changes:

   17a4d4803381 Linux 4.10.17
   291e716bb382 pstore: Shut down worker when unregistering
   e5590e3d9275 pstore: Fix flags to enable dumps on powerpc
   e3d4daa7f6d4 libnvdimm, pfn: fix 'npfns' vs section alignment
   116ada1a98ab libnvdimm: fix nvdimm_bus_lock() vs device_lock() ordering
   f92a2fe7cdb1 libnvdimm, pmem: fix a NULL pointer BUG in nd_pmem_notify
   72393c00f00a libnvdimm, region: fix flush hint detection crash
   b821a605977e ipmi: Fix kernel panic at ipmi_ssif_thread()
   c8e4805dd634 Bluetooth: hci_intel: add missing tty-device sanity check
   a8620f066675 Bluetooth: hci_bcm: add missing tty-device sanity check
   9a3054df3cf6 Bluetooth: Fix user channel for 32bit userspace on 64bit kernel
   58d479441029 tty: pty: Fix ldisc flush after userspace become aware of the data already
   9e3b9909bce3 serial: omap: suspend device on probe errors
   c1ce1f427e0a serial: omap: fix runtime-pm handling on unbind
   2578dd75ad12 serial: samsung: Use right device for DMA-mapping calls
   a78ddcd2a858 fscrypt: fix context consistency check when key(s) unavailable
   659ccd97668a f2fs: fix fs corruption due to zero inode page
   717946b469cf mm: fix data corruption due to stale mmap reads
   35223d76e2cf dax: prevent invalidation of mapped DAX entries
   fa7043b3a2e0 device-dax: fix sysfs attribute deadlock
   e1a19ef52919 device-dax: fix cdev leak
   81845f520179 md/raid1: avoid reusing a resync bio after error handling.
   23ebf6aa650d padata: free correct variable
   586aa5a6537f ovl: do not set overlay.opaque on non-dir create
   cf95696518f5 CIFS: add misssing SFM mapping for doublequote
   582fb96084c3 cifs: fix CIFS_IOC_GET_MNT_INFO oops
   4452b80eaef8 CIFS: fix oplock break deadlocks
   cd01b999953b cifs: fix CIFS_ENUMERATE_SNAPSHOTS oops
   6ec05086dca9 cifs: fix leak in FSCTL_ENUM_SNAPS response handling
   b1b295efad9f CIFS: fix mapping of SFM_SPACE and SFM_PERIOD
   ae6c2182b853 SMB3: Work around mount failure when using SMB3 dialect to Macs
   6716949b0029 Set unicode flag on cifs echo request to avoid Mac error
   b7174f403828 Fix match_prepath()
   93697e1e5099 mm: prevent potential recursive reclaim due to clearing PF_MEMALLOC
   3302d94ab6f9 fs/block_dev: always invalidate cleancache in invalidate_bdev()
   f174092ec373 ceph: fix memory leak in __ceph_setxattr()
   594d4eca1c49 fs/xattr.c: zero out memory copied to userspace in getxattr
   49302d531325 orangefs: do not check possibly stale size on truncate
   42d86d92af64 orangefs: do not set getattr_time on orangefs_lookup
   d2c326c7ff6d orangefs: clean up oversize xattr validation
   4af222e1d681 orangefs: fix bounds check for listxattr
   e3e77f8ba5f6 ext4: evict inline data when writing to memory map
   fd469456ad6d jbd2: fix dbench4 performance regression for 'nobarrier' mounts
   e2e596f2888c perf annotate s390: Implement jump types for perf annotate
   d122da54d33e perf annotate s390: Fix perf annotate error -95 (4.10 regression)
   ba6006004353 perf auxtrace: Fix no_size logic in addr_filter__resolve_kernel_syms()
   d187c9e135d3 IB/hfi1: Prevent kernel QP post send hard lockups
   04692adb3aac IB/mlx4: Reduce SRIOV multicast cleanup warning message to debug level
   e4e17bce1672 IB/mlx4: Fix ib device initialization error flow
   5d691b80ca4d IB/IPoIB: ibX: failed to create mcg debug file
   53bd2ccebd51 IB/core: For multicast functions, verify that LIDs are multicast LIDs
   b40c7a502b1e IB/core: Fix sysfs registration error flow
   f269df7bad86 iov_iter: don't revert iov buffer if csum error
   fc483680829a vfio/type1: Remove locked page accounting workqueue
   c85990cf511d dm thin: fix a memory leak when passing discard bio down
   bd0db3b70b59 dm rq: check blk_mq_register_dev() return value in dm_mq_init_request_queue()
   5d953aa1cd2e dm era: save spacemap metadata root after the pre-commit
   4c1dad842bfc dm crypt: rewrite (wipe) key in crypto layer using random data
   bce0767157c3 crypto: ccp - Change ISR handler method for a v5 CCP
   f106cd8575c4 crypto: ccp - Change ISR handler method for a v3 CCP
   595c7ad3c64b crypto: ccp - Disable interrupts early on unload
   e1adc5e04af5 crypto: ccp - Use only the relevant interrupt bits
   7ae1df9048db crypto: algif_aead - Require setkey before accept(2)
   fe51605c9512 crypto: s5p-sss - Close possible race for completed requests
   635aff41e59a block: fix blk_integrity_register to use template's interval_exp if not 0
   5c5d86be4f3f arm64: KVM: Fix decoding of Rt/Rt2 when trapping AArch32 CP accesses
   8348ffba88e5 KVM: arm/arm64: fix races in kvm_psci_vcpu_on
   74cbcb5afa75 KVM: x86: fix user triggerable warning in kvm_apic_accept_events()
   f22d13c45f2d perf/x86: Fix Broadwell-EP DRAM RAPL events
   29d07bb20ee5 um: Fix PTRACE_POKEUSER on x86_64
   efbd8cc8f6f8 x86, pmem: Fix cache flushing for iovec write < 8 bytes
   f0896a0d1e6d selftests/x86/ldt_gdt_32: Work around a glibc sigaction() bug
   c4b0426385ea x86/boot: Fix BSS corruption/overwrite bug in early x86 kernel startup
   b1a8c141c88c usb: hub: Do not attempt to autosuspend disconnected devices
   5830c376e3af usb: hub: Fix error loop seen after hub communication errors
   19c9dacddf7d usb: Make sure usb/phy/of gets built-in
   934c4e338e7e usb: gadget: legacy gadgets are optional
   7f7a4b58e257 usb: misc: add missing continue in switch
   34006e9621c7 staging: comedi: jr3_pci: cope with jiffies wraparound
   acb79180c55e staging: comedi: jr3_pci: fix possible null pointer dereference
   7a6b4c372118 staging: wilc1000: Fix problem with wrong vif index
   4097eda73b4c staging: gdm724x: gdm_mux: fix use-after-free on module unload
   808dc8810896 staging: vt6656: use off stack for out buffer USB transfers.
   4f19197ce58d staging: vt6656: use off stack for in buffer USB transfers.
   5b92090a53eb USB: Revert "cdc-wdm: fix "out-of-sync" due to missing notifications"
   32dd9987fbd9 USB: Proper handling of Race Condition when two USB class drivers try to call init_usb_class simultaneously
   e349a5723322 USB: serial: ftdi_sio: add device ID for Microsemi/Arrow SF2PLUS Dev Kit
   dffe5d4b0511 usb: host: xhci: print correct command ring address
   a561f35aeaa9 usb: xhci: bInterval quirk for TI TUSB73x0
   b3e01cd15d17 iscsi-target: Set session_fall_back_to_erl0 when forcing reinstatement
   d39ebfe9a1b7 target/fileio: Fix zero-length READ and WRITE handling
   f78392c0160c target: Fix compare_and_write_callback handling for non GOOD status
   8fe6ee0b6e69 xen: adjust early dom0 p2m handling to xen hypervisor behavior
   6e8e99586919 Linux 4.10.16
   2262a51b515a block: get rid of blk_integrity_revalidate()
   f89d35abea21 drm/ttm: fix use-after-free races in vm fault handling
   2f6aeeae43bb drm: mxsfb: drm_dev_alloc() returns error pointers
   9302f2b14af1 drm/hisilicon/hibmc: Fix wrong pointer passed to PTR_ERR()
   4a66b610a821 xen: Revert commits da72ff5bfcb0 and 72a9b186292d
   6442a7f5d793 f2fs: sanity check segment count
   853151191ef2 openvswitch: Set internal device max mtu to ETH_MAX_MTU.
   8656ebcc28bc net: mdio-mux: bcm-iproc: call mdiobus_free() in error path
   c35107a3bec2 bpf: don't let ldimm64 leak map addresses on unprivileged
   ddbb020a01ec bnxt_en: allocate enough space for ->ntp_fltr_bmap
   912bec79fb2a ipv6: reorder ip6_route_dev_notifier after ipv6_dev_notf
   062e49d89f68 ipv6: initialize route null entry in addrconf_init()
   d3081680506f rtnetlink: NUL-terminate IFLA_PHYS_PORT_NAME string
   df6f3bcd6667 ipv4, ipv6: ensure raw socket message is big enough to hold an IP header
   929575fd0dfd tcp: do not inherit fastopen_req from parent
   3006794169a1 net: usb: qmi_wwan: add Telit ME910 support
   0735252265e5 net: ipv6: Do not duplicate DAD on link up
   ae2f8e28b40e tcp: fix wraparound issue in tcp_lp
   38904075d9bc bpf, arm64: fix jit branch offset related to ldimm64
   b3468d7ea8c9 bpf: enhance verifier to understand stack pointer arithmetic
   ec2f9263d6a5 geneve: fix incorrect setting of UDP checksum flag
   9cd3670409a9 net: macb: fix phy interrupt parsing
   99975dd43461 net: adjust skb->truesize in ___pskb_trim()
   748838198f1e tcp: do not underestimate skb->truesize in tcp_trim_head()
   8743096ed3f0 macsec: dynamically allocate space for sglist
   e288821b3842 sparc64: fix fault handling in NGbzero.S and GENbzero.S
   01995a54c747 ALSA: hda - Fix deadlock of controller device lock at unbinding
   9576fcd1d931 staging: lustre: ptlrpc: avoid warning on missing return
   e7d743d68744 staging: emxx_udc: remove incorrect __init annotations
   e368150f2942 staging: wlan-ng: add missing byte order conversion
   debb50cbeda5 staging/lustre/llite: move root_squash from sysfs to debugfs
   9663ece4a734 brcmfmac: Make skb header writable before use
   d67be3c4b852 brcmfmac: Ensure pointer correctly set if skb data location changes
   cbd7c3465eec MIPS: R2-on-R6 MULTU/MADDU/MSUBU emulation bugfix
   2523b0855c42 scsi: smartpqi: fix time handling
   a538d5f72454 scsi: mac_scsi: Fix MAC_SCSI=m option when SCSI=m
   7f3f10d2150f scsi: qla2xxx: Fix crash in qla2xxx_eh_abort on bad ptr
   463232f51f91 scsi: qedi: fix build error without DEBUG_FS
   5102b4022080 scsi: qedi: Fix possible memory leak in qedi_iscsi_update_conn()
   eb1ef03d9033 serial: 8250_omap: Fix probe and remove for PM runtime
   8b62d12c1a53 phy: qcom-usb-hs: Add depends on EXTCON
   c6a6118496c8 clk: rockchip: add "," to mux_pll_src_apll_dpll_gpll_usb480m_p on rk3036
   bc6e823fdcf2 USB: serial: io_edgeport: fix descriptor error handling
   1077176a2456 USB: serial: ch341: fix modem-status handling
   e40bbb397074 USB: serial: mct_u232: fix modem-status error handling
   f665109e63c1 USB: serial: quatech2: fix control-message error handling
   aa0b4b2ff04e USB: serial: ftdi_sio: fix latency-timer error handling
   44d7d23192fe USB: serial: ark3116: fix open error handling
   39581ca08fb9 USB: serial: ti_usb_3410_5052: fix control-message error handling
   c5cd729ca100 USB: serial: io_edgeport: fix epic-descriptor handling
   d75ac2f21f53 USB: serial: ssu100: fix control-message error handling
   7db2c56df28a USB: serial: digi_acceleport: fix incomplete rx sanity check
   cfbe048303d2 USB: serial: keyspan_pda: fix receive sanity checks
   7916a663940b usb: chipidea: Handle extcon events properly
   7a93680fe259 usb: chipidea: Only read/write OTGSC from one place
   cc771fa1d711 usb: host: ohci-exynos: Decrese node refcount on exynos_ehci_get_phy() error paths
   d286acdd40ed usb: host: ehci-exynos: Decrese node refcount on exynos_ehci_get_phy() error paths
   5605e5c50f34 usb: dwc2: host: use msleep() for long delay
   69a09d73e8bd KVM: nVMX: do not leak PML full vmexit to L1
   22e025bc1af9 KVM: nVMX: initialize PML fields in vmcs02
   4897ec5ece6c Revert "KVM: nested VMX: disable perf cpuid reporting"
   78a43e2c2c98 KVM: PPC: Book3S HV: Don't try to signal cpu -1
   f82a54b53ca2 x86/platform/intel-mid: Correct MSI IRQ line for watchdog device
   743cfeb7bcdd kprobes/x86: Fix kernel panic when certain exception-handling addresses are probed
   d696d9cfea73 platform/x86: intel_pmc_core: fix out-of-bounds accesses on stack
   5e10d8dc0003 clk: Make x86/ conditional on CONFIG_COMMON_CLK
   4a8fa15cec03 x86/mpx: Re-add MPX to selftests Makefile
   d4462702edd1 x86/pci-calgary: Fix iommu_free() comparison of unsigned expression >= 0
   679dd20cc34e x86/ioapic: Restore IO-APIC irq_chip retrigger callback
   6e4623e517db iwlwifi: mvm: fix accessing fw_id_to_mac_id
   bcb28cb39930 iwlwifi: mvm: writing zero bytes to debugfs causes a crash
   bd78746f3225 iwlwifi: mvm: synchronize firmware DMA paging memory
   39e4ab1d46fa iwlwifi: mvm: fix references to first_agg_queue in DQA mode
   82e158e12443 iwlwifi: mvm: fix pending frame counter calculation
   fa251bac1869 iwlwifi: mvm/pcie: adjust A-MSDU tx_cmd length in PCIe
   441f52f19435 iwlwifi: mvm: Use aux queue for offchannel frames in dqa
   ab735bec18d4 iwlwifi: mvm: fix reorder timer re-arming
   7478a09f262c iwlwifi: pcie: fix the set of DMA memory mask
   0633d3269a69 iwlwifi: pcie: trans: Remove unused 'shift_param'
   e864e9686442 iwlwifi: pcie: don't increment / decrement a bool
   7e375d6d6056 iwlwifi: mvm: overwrite skb info later
   827181091199 iwlwifi: mvm: don't restart HW if suspend fails with unified image
   3aff5ebef0b4 iwlwifi: fix MODULE_FIRMWARE for 6030
   e9a20a152598 iwlwifi: mvm: properly check for transport data in dump
   47b8d37b4c62 mwifiex: set adapter->dev before starting to use mwifiex_dbg()
   219083c89725 mwifiex: don't enable/disable IRQ 0 during suspend/resume
   33d8a1d4086e mwifiex: Avoid skipping WEP key deletion for AP
   6a9d22e988c3 mwifiex: remove redundant dma padding in AMSDU
   4b8badac6525 mwifiex: debugfs: Fix (sometimes) off-by-1 SSID print
   ed65aff890b9 ARM: dts: sun7i: lamobo-r1: Fix CPU port RGMII settings
   c78c87249cd6 ARM: dts: am57xx-idk: tpic2810 is on I2C bus, not SPI
   8848163aa114 ARM: OMAP3: Fix smartreflex platform data regression
   097336fc693d ARM: OMAP5 / DRA7: Fix HYP mode boot for thumb2 build
   98fa203aa7cd ARM: dts: imx6sx-udoo-neo: Fix reboot hang
   32b0a3d44419 ARM: dts: NSP: GPIO reboot open-source
   96b61a1bad47 ARM: pxa: ezx: fix a910 camera data
   baebaada5f01 leds: ktd2692: avoid harmless maybe-uninitialized warning
   359ccd6e3667 spi: armada-3700: Remove spi_master_put in a3700_spi_remove()
   0136fa36c8af arm64: Improve detection of user/non-user mappings in set_pte(_at)
   a0435d6cdccc arm64: remove wrong CONFIG_PROC_SYSCTL ifdef
   e60a59f80b96 arm: dts: qcom: Fix ipq board clock rates
   3e1418c687ac arm64: dts: r8a7795: Mark EthernetAVB device node disabled
   12f072e19606 power: supply: bq24190_charger: Handle fault before status on interrupt
   c963edc736f7 power: supply: bq24190_charger: Don't read fault register outside irq_handle_thread()
   9e9cd6500d2c power: supply: bq24190_charger: Call power_supply_changed() for relevant component
   34ba5925c01e power: supply: bq24190_charger: Install irq_handler_thread() at end of probe()
   8c94da036756 power: supply: bq24190_charger: Call set_mode_host() on pm_resume()
   d6ea2f1dd259 power: supply: bq24190_charger: Fix irq trigger to IRQF_TRIGGER_FALLING
   b7634bdbb695 perf/x86/intel/pt: Add format strings for PTWRITE and power event tracing
   ce6f9a237a6c powerpc: Correctly disable latent entropy GCC plugin on prom_init.o
   803969dd92f1 powerpc/ftrace: Fix confusing help text for DISABLE_MPROFILE_KERNEL
   d0addb34980a powerpc/mm: Fix build break when CMA=n && SPAPR_TCE_IOMMU=y
   690bba9d641a powerpc/powernv: Fix opal_exit tracepoint opcode
   3ead745aef02 powerpc/mm: Fixup wrong LPCR_VRMASD value
   72cd64df59f3 powerpc/perf: Avoid FAB_*_MATCH checks for power9
   8c34e65205b7 powerpc/perf: Handle sdar_mode for marked event in power9
   d2264474c9c2 powerpc/perf: Fix perf_get_data_addr() for power9 DD1
   0587b73378b2 cpupower: Fix turbo frequency reporting for pre-Sandy Bridge cores
   bfa87eca09ce power: supply: lp8788: prevent out of bounds array access
   8a4963a05118 crypto: caam - don't dma_map key for hash algorithms
   3e871381811a crypto: caam - fix error path for ctx_dma mapping failure
   93bb6661baf0 tmp: use pdev for parent device in tpm_chip_alloc
   c61315284309 tpm: fix RC value check in tpm2_seal_trusted
   c5f7ba5f5911 mtd: nand: Add OX820 NAND hardware dependency
   2586f8f02455 hwmon: (it87) Fix pwm4 detection for IT8620 and IT8628
   5e7b84228b51 drm/sti: fix GDP size to support up to UHD resolution
   206472df12f1 9p: fix a potential acl leak

(From OE-Core rev: a64e8c09f975c8457e7743a61ee35fb561ffd430)

Signed-off-by: Bruce Ashfield <bruce.ashfield@windriver.com>
Signed-off-by: Ross Burton <ross.burton@intel.com>
(cherry picked from commit de5b0d918f49733f902797d41da05681d17d8db0)
Signed-off-by: Armin Kuster <akuster808@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-07-27 22:36:45 +01:00
Bruce Ashfield
835265b65b linux-yocto-rt: 4.9-rt18
Integrating the 4.9-rt18 port that Paul Gortmaker has prepared:

 f458d12de7f1 v4.9.27-rt18
 82fcbd9f7e1f futex/rtmutex: Cure RT double blocking issue
 b4352b9fb961 futex: backported patches
 0874a0a35318 random: avoid preempt_disable()ed section
 07481e7a0e04 v4.9.27-rt17
 76c86c0787fe v4.9.20-rt16
 d394d677d188 rwsem/rt: Lift single reader restriction
 ad7b0ccf9f1f rtmutex: Provide locked slowpath
 f363d238326d rtmutex: Provide rt_mutex_lock_state()
 b3b4c3aa793e rtmutex: Make lock_killable work
 e3fa9e78c860 v4.9.20-rt15
 1e458a1a876d v4.9.18-rt14
 f57fd2fcd3e2 Add the rtmutex rework
 3829b7532ca9 lockdep: Fix per-cpu static objects
 bc1065b64955 v4.9.18-rt13
 095698fd99b4 Merge branch 'standard/base' into standard/preempt-rt/base

(From OE-Core rev: 68e9381210875588b7f28cff5ed90a2817427d08)

Signed-off-by: Bruce Ashfield <bruce.ashfield@windriver.com>
Signed-off-by: Ross Burton <ross.burton@intel.com>
(cherry picked from commit 9d400224f7bba64470a0e68c53e2469b70ca1e05)
Signed-off-by: Armin Kuster <akuster808@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-07-27 22:36:45 +01:00
Bruce Ashfield
3d10ba1b30 linux-yocto/meta: configuration changes (wifi, kexec and nft)
Making the following kernel configuration fragment changes available:

  c9f07d79f01d nftables: add more configuration options.
  8d3cf0ad6c0c common-pc-wifi.cfg: add CONFIG_MT7601U module
  55c9bf749c6d ktypes/developer: Enable CONFIG_KEXEC in config

(From OE-Core rev: 6ddb062c5b434446c7c5140ab01b970ad501f1d1)

Signed-off-by: Bruce Ashfield <bruce.ashfield@windriver.com>
Signed-off-by: Ross Burton <ross.burton@intel.com>
(cherry picked from commit a0d24f69425716ffd2439b1fb9170c343eaca453)
Signed-off-by: Armin Kuster <akuster808@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-07-27 22:36:45 +01:00
Bruce Ashfield
07a9b6a4fb kernel/meta: add virtualbox configuration fragment
As suggested by Khem, we can create a virtualbox configuration
fragment that helps to run XFCE under virtualization.

This can be enabled via KERNEL_FEATURES for targest that
require it, and may be enabled by default in the future.

(From OE-Core rev: a5b42c0702a216e1a75c89aaa918c5e166a9e13e)

Signed-off-by: Bruce Ashfield <bruce.ashfield@windriver.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
(cherry picked from commit a256addb330ec7b781c381894cc72cbd4a5005dd)
Signed-off-by: Armin Kuster <akuster808@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-07-27 22:36:45 +01:00
Bruce Ashfield
47321834f1 linux-yocto/meta: smp: Add config X86_BIGSMP since its needed when NR_CPUS > 8
Updating the kernel meta data with the following configuration change:

  When we set NR_CPUS to something > than 8, we also need to set
  X86_BIGSMP
  according to Kconfig:

  config X86_BIGSMP
        bool "Support for big SMP systems with more than 8 CPUs"

  otherwise NR_CPU will end up being reset to 8

[YOCTO #10362]

(From OE-Core rev: 36b594160c6ca12f0a0d06a2809e4dbea1fa53ca)

Signed-off-by: Alejandro Hernandez <alejandro.hernandez@linux.intel.com>
Signed-off-by: Bruce Ashfield <bruce.ashfield@windriver.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
(cherry picked from commit 98278549d960a84605f01fec73aefe5d8792d4bb)
Signed-off-by: Armin Kuster <akuster808@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-07-27 22:36:45 +01:00
Bruce Ashfield
728038c3a6 linux-yocto/meta: bluetooth: Adds BT_BREDR and BT_LE, which are needed as dependencies
Updating the kernel meta-data to pick up a bluetooth configuration change:

  BT_LE is nedded by BT_6LOWPAN

  BT_BREDR is needed by:
  BT_RFCOMM, BT_RFCOMM_TTY (secondary),
  BT_BNEP, BT_BNEP_MC_FILTER (secondary), BNEP_PROTO_FILTER (secondary),
  BT_CMTP, BT_HIDP

[YOCTO #10425]

(From OE-Core rev: 6c2e2afe9dbc43554e552e5a293ca7ffeb669f35)

Signed-off-by: Alejandro Hernandez <alejandro.hernandez@linux.intel.com>
Signed-off-by: Bruce Ashfield <bruce.ashfield@windriver.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
(cherry picked from commit 0457f08cce73ab8646f8a44e88884371e09f35b4)
Signed-off-by: Armin Kuster <akuster808@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-07-27 22:36:45 +01:00
Bruce Ashfield
ffe109c38b linux-yocto/4.1: fix gcc7 compilation and v4.1.39
Porting the mainline commit, to fix gcc7 builds:

  474c90156c [give up on gcc ilog2() constant optimizations]

We also integrate the 4.1.39 -stable update to pick up additional
fixes.

(From OE-Core rev: 774e0d3f429d383c55e9f54ab095f13694e1d8e6)

Signed-off-by: Bruce Ashfield <bruce.ashfield@windriver.com>
Signed-off-by: Ross Burton <ross.burton@intel.com>
(cherry picked from commit f0effea8716faae749a7d15003647d68fa0cabf7)
Signed-off-by: Armin Kuster <akuster808@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-07-27 22:36:45 +01:00
Bruce Ashfield
e2633fecbf linux-yocto/4.9: update to v4.9.27
Integrating the korg v4.9.22 -> .27 releases with the following shortlog
summary:

   89f3b8d5f264 Linux 4.9.27
   a0d50c80a29e dm ioctl: prevent stack leak in dm ioctl call
   7ad6de43deda cpu/hotplug: Serialize callback invocations proper
   e99b0ea39354 ceph: try getting buffer capability for readahead/fadvise
   1bf9bc481338 8250_pci: Fix potential use-after-free in error path
   3fbd2ba1da3f hwmon: (it87) Avoid registering the same chip on both SIO addresses
   d24261e567e1 scsi: storvsc: Workaround for virtual DVD SCSI version
   1b7f385e049c tpm_tis: use default timeout value if chip reports it as zero
   d8fd99d4721d Handle mismatched open calls
   00cca9768ebe timerfd: Protect the might cancel mechanism proper
   d071951e08ee Linux 4.9.26
   6d10a6cfe85e ftrace/x86: Fix triple fault with graph tracing and suspend-to-ram
   9cbf4337a51d ARCv2: save r30 on kernel entry as gcc uses it for code-gen
   4684be169a67 net: can: usb: gs_usb: Fix buffer on stack
   07389a140f48 macsec: avoid heap overflow in skb_to_sgvec
   36e0be3187c2 ceph: fix recursion between ceph_set_acl() and __ceph_setattr()
   d7809b9e99bb nfsd: stricter decoding of write-like NFSv2/v3 ops
   8ed0797966fd nfsd4: minor NFSv2/v3 write decoding cleanup
   fc6445df466f nfsd: check for oversized NFSv2/v3 arguments
   b88e4113250d Input: i8042 - add Clevo P650RS to the i8042 reset list
   990afef90e08 ASoC: intel: Fix PM and non-atomic crash in bytcr drivers
   b2b93bbeec2d p9_client_readdir() fix
   92f0ddece7da MIPS: Avoid BUG warning in arch_check_elf
   6fbb6c02df30 MIPS: cevt-r4k: Fix out-of-bounds array access
   4805f8a8a2f6 MIPS: KGDB: Use kernel context for sleeping threads
   563300b9ff7f ARC: [plat-eznps] Fix build error
   59f83369d44c ALSA: seq: Don't break snd_use_lock_sync() loop by timeout
   26b9b1565baf ALSA: firewire-lib: fix inappropriate assignment between signed/unsigned type
   827faa2e4ef7 ALSA: oxfw: fix regression to handle Stanton SCS.1m/1d
   b1fc1b057b8e ipv6: check raw payload size correctly in ioctl
   1dc1b7b50866 tcp: memset ca_priv data to 0 properly
   df1926123f0c ipv6: check skb->protocol before lookup for nexthop
   ae6a762dcdf0 net: phy: fix auto-negotiation stall due to unavailable interrupt
   62817c314af3 net: ipv6: regenerate host route if moved to gc list
   ae88c43c019f macvlan: Fix device ref leak when purging bc_queue
   7bf657201c21 net/mlx5e: Fix ETHTOOL_GRXCLSRLALL handling
   c3215c31ef5c net/mlx5e: Fix small packet threshold
   03641c4ded85 net/mlx5: Fix driver load bad flow when having fw initializing timeout
   b2440a5d3e25 ip6mr: fix notification device destruction
   291e60458ddf netpoll: Check for skb->queue_mapping
   94e5670c933d net: ipv6: RTF_PCPU should not be settable from userspace
   7ab89b176b7a gso: Validate assumption of frag_list segementation
   fcbf5a71a646 dp83640: don't recieve time stamps twice
   e344e97fb359 sh_eth: unmap DMA buffers when freeing rings
   b4580d6f10a3 net: vrf: Fix setting NLM_F_EXCL flag when adding l3mdev rule
   8c04e2acd537 net-timestamp: avoid use-after-free in ip_recv_error
   c86872a43400 ipv6: Fix idev->addr_list corruption
   479beb4c6554 tcp: clear saved_syn in tcp_disconnect()
   02f04309673e sctp: listen on the sock only when it's state is listening or closed
   dbaaa5890df7 net: ipv4: fix multipath RTM_GETROUTE behavior when iif is given
   425cc775d18a l2tp: fix PPP pseudo-wire auto-loading
   b7902607693f l2tp: take reference on sessions being dumped
   1f49c8cd2c9a net/packet: fix overflow in check for tp_reserve
   10452124bac3 net/packet: fix overflow in check for tp_frame_nr
   3ae0fc950603 l2tp: purge socket queues in the .destruct() callback
   59bc404b3829 l2tp: hold tunnel socket when handling control frames in l2tp_ip and l2tp_ip6
   501299e64381 net/mlx5: Avoid dereferencing uninitialized pointer
   0ea3c235779a bpf: improve verifier packet range checks
   d60d4e8c1b73 kcm: return immediately after copy_from_user() failure
   c63d6180076b net: phy: handle state correctly in phy_stop_machine
   4f99161f2ec5 net: neigh: guard against NULL solicit() method
   512d211207df sparc64: Fix kernel panic due to erroneous #ifdef surrounding pmd_write()
   24870a79dad6 sparc64: kern_addr_valid regression
   e88a8e0a23c2 ping: implement proper locking
   7c80a91b8877 Revert "mmc: sdhci-msm: Enable few quirks"
   a8c90ef62281 Linux 4.9.25
   c36eaa6ca346 device-dax: switch to srcu, fix rcu_read_lock() vs pte allocation
   f8bc0881fe95 x86/mce: Make the MCE notifier a blocking one
   6966a6579e1b x86/mce/AMD: Give a name to MCA bank 3 when accessed with legacy MSRs
   1bd55ab13039 powerpc/kprobe: Fix oops when kprobed on 'stdu' instruction
   790b2b5a01ce ubi/upd: Always flush after prepared for an update
   87cfeaa5e5a1 mac80211: fix MU-MIMO follow-MAC mode
   e0411f1eb549 mac80211: reject ToDS broadcast data frames
   b93858556fd1 ubifs: Fix O_TMPFILE corner case in ubifs_link()
   a260ff509b4d ubifs: Fix RENAME_WHITEOUT support
   9fc131428536 mmc: sdhci-esdhc-imx: increase the pad I/O drive strength for DDR50 card
   4420e5f323c4 ACPI / power: Avoid maybe-uninitialized warning
   11ba522d7929 Input: elantech - add Fujitsu Lifebook E547 to force crc_enabled
   3d42ca46f47a s390/mm: fix CMMA vs KSM vs others
   f79ef57911ee CIFS: remove bad_network_name flag
   0b7c97066341 cifs: Do not send echoes before Negotiate is complete
   c0a602ad31ee mm: prevent NR_ISOLATE_* stats from going negative
   d80e90712a50 ring-buffer: Have ring_buffer_iter_empty() return true when empty
   d4decac1edaa tracing: Allocate the snapshot buffer before enabling probe
   174a74dbca2d KEYS: fix keyctl_set_reqkey_keyring() to not leak thread keyrings
   b2dd90e812f3 KEYS: Change the name of the dead type to ".dead" to prevent user access
   a5c6e0a76817 KEYS: Disallow keyrings beginning with '.' to be joined as session keyrings
   2f5e58ec793f Linux 4.9.24
   35b9d61ea910 sctp: deny peeloff operation on asocs with threads sleeping on it
   c67c2be735b1 net: ipv6: check route protocol when deleting routes
   86c6667f6a5f virtio-console: avoid DMA from stack
   fb00319317c1 cxusb: Use a dma capable buffer also for reading
   28d1e8b7ef81 dvb-usb-firmware: don't do DMA on stack
   36b62c08e72b dvb-usb: don't use stack for firmware load
   2c0ad235ac77 mm: Tighten x86 /dev/mem with zeroing reads
   ef793e6e1134 rtc: tegra: Implement clock handling
   0dd962118a20 ACPI / EC: Use busy polling mode when GPE is not enabled
   c07479f4b10a x86/xen: Fix APIC id mismatch warning on Intel
   03470ba96a96 platform/x86: acer-wmi: setup accelerometer when machine has appropriate notify event
   a6ca4946676b ASoC: Intel: select DW_DMAC_CORE since it's mandatory
   25640e792f1a nbd: fix 64-bit division
   7599166d7855 nbd: use loff_t for blocksize and nbd_set_size args
   9c0c43527263 drm/nouveau/disp/mcp7x: disable dptmds workaround
   754ae7efb383 mm: memcontrol: use special workqueue for creating per-memcg caches
   b1574caf9664 ext4: fix inode checksum calculation problem if i_extra_size is small
   1992564156b5 dvb-usb-v2: avoid use-after-free
   de75264ee112 ath9k: fix NULL pointer dereference
   a28acecbaf25 parisc: Fix get_user() for 64-bit value on 32-bit kernel
   c10479591869 crypto: ahash - Fix EINPROGRESS notification callback
   64ba06dc8a1d crypto: algif_aead - Fix bogus request dereference in completion function
   7da0f8e547c2 ftrace: Fix function pid filter on instances
   e3c7258bb4fe zram: do not use copy_page with non-page aligned address
   75465e71ec31 kvm: fix page struct leak in handle_vmon
   5a4c0738998a Revert "MIPS: Lantiq: Fix cascaded IRQ setup"
   a9da1ac37ccf char: lack of bool string made CONFIG_DEVPORT always on
   666452ffdbf7 ftrace: Fix removing of second function probe
   fdaa36c75c5a irqchip/irq-imx-gpcv2: Fix spinlock initialization
   5dda157006bc cpufreq: Bring CPUs up even if cpufreq_online() failed
   5f48cacaa72c pwm: rockchip: State of PWM clock should synchronize with PWM enabled state
   088e5800500e can: ifi: use correct register to read rx status
   5ac50e714f60 libnvdimm: fix reconfig_mutex, mmap_sem, and jbd2_handle lockdep splat
   5f377c4ad271 libnvdimm: fix blk free space accounting
   0c6172ccbb59 make skb_copy_datagram_msg() et.al. preserve ->msg_iter on error
   ff76ab9e03a5 new privimitive: iov_iter_revert()
   e485875dff38 xen, fbfront: fix connecting to backend
   92f8aa7bb825 target: Avoid mappedlun symlink creation during lun shutdown
   08383b004426 scsi: sd: Fix capacity calculation with 32-bit sector_t
   64e746983c4c scsi: qla2xxx: Add fix to read correct register value for ISP82xx.
   82d181d7540f scsi: sd: Consider max_xfer_blocks if opt_xfer_blocks is unusable
   c80c158bfe61 scsi: sr: Sanity check returned mode data
   281e36cbaf43 iscsi-target: Drop work-around for legacy GlobalSAN initiator
   0ae3c95e3a31 iscsi-target: Fix TMR reference leak during session shutdown
   eff58f9084a0 efi/fb: Avoid reconfiguration of BAR that covers the framebuffer
   60174fb3eaa6 efi/libstub: Skip GOP with PIXEL_BLT_ONLY format
   1681bab7c450 parisc: fix bugs in pa_memcpy
   6ef2f0178649 ACPI / scan: Set the visited flag for all enumerated devices
   0b914aa8cdc6 acpi, nfit, libnvdimm: fix interleave set cookie calculation (64-bit comparison)
   5e29a45f1ef0 x86/vdso: Plug race between mapping and ELF header setup
   ec980b6f7dcc x86/vdso: Ensure vdso32_enabled gets set to valid values only
   a9826aa4860a x86, pmem: fix broken __copy_user_nocache cache-bypass assumptions
   59bf23088953 x86/signals: Fix lower/upper bound reporting in compat siginfo
   41d8b02f6448 x86/efi: Don't try to reserve runtime regions
   085656dad4b0 perf/x86: Avoid exposing wrong/stale data in intel_pmu_lbr_read_32()
   0ea2dcf1f9e6 Input: xpad - add support for Razer Wildcat gamepad
   730fecb3401f CIFS: store results of cifs_reopen_file to avoid infinite wait
   3d8d2f234476 CIFS: reconnect thread reschedule itself
   fd3be7eaff14 drm/etnaviv: fix missing unlock on error in etnaviv_gpu_submit()
   e6bcbdc59356 drm/nouveau/mmu/nv4a: use nv04 mmu rather than the nv44 one
   b29a17524bc1 drm/nouveau/mpeg: mthd returns true on success now
   975a7ea950c6 orangefs: free superblock when mount fails
   d19f745ea3a9 zsmalloc: expand class bit
   5c9d08320229 thp: fix MADV_DONTNEED vs clear soft dirty race
   f584803c4942 thp: fix MADV_DONTNEED vs. MADV_FREE race
   5ef6f4dec559 tcmu: Skip Data-Out blocks before gathering Data-In buffer for BIDI case
   890aec8eae09 tcmu: Fix wrongly calculating of the base_command_size
   ef599fa52429 tcmu: Fix possible overwrite of t_data_sg's last iov[]
   f44236a1b05b cgroup, kthread: close race window where new kthreads can be migrated to non-root cgroups
   c3582cc56eac Linux 4.9.23
   0ade21a2ed74 dma-buf: add support for compat ioctl
   27dedde6895c net/mlx4_core: Fix when to save some qp context flags for dynamic VST to VGT transitions
   48b2f1dd5787 net/mlx4_core: Fix racy CQ (Completion Queue) free
   cee26997a604 net/mlx4_en: Fix bad WQE issue
   ec0c5f06dba4 usb: hub: Wait for connection to be reestablished after port reset
   d7045cbf4a06 blk-mq: Avoid memory reclaim when remapping queues
   16fc98c2479f net/packet: fix overflow in check for priv area size
   0ee72d8f9b8e Revert "drm/i915/execlists: Reset RING registers upon resume"
   69fbc505c87b crypto: caam - fix invalid dereference in caam_rsa_init_tfm()
   75964d0f1914 crypto: caam - fix RNG deinstantiation error checking
   91f9f51b1836 MIPS: IRQ Stack: Fix erroneous jal to plat_irq_dispatch
   aa05503149b3 MIPS: Select HAVE_IRQ_EXIT_ON_IRQ_STACK
   e8fa51d31aee MIPS: Switch to the irq_stack in interrupts
   aa6b1dac465e MIPS: Only change $28 to thread_info if coming from user mode
   86b54e48c468 MIPS: Stack unwinding while on IRQ stack
   742817bb77f9 MIPS: Introduce irq_stack
   760327cb080b mtd: bcm47xxpart: fix parsing first block after aligned TRX
   31c576a5fe50 rt2x00: Fix incorrect usage of CONFIG_RT2X00_LIB_USB
   f0df317b2bb3 rt2x00usb: do not anchor rx and tx urb's
   cb794d57931b rt2x00usb: fix anchor initialization
   938f8e856064 i2c: bcm2835: Fix hang for writing messages larger than 16 bytes
   f7513c9165bf orangefs: fix buffer size mis-match between kernel space and user space.
   1b9921866dc5 orangefs: Dan Carpenter influenced cleanups...
   dcac0d18e7e1 orangefs: fix memory leak of string 'new' on exit path
   17fda94d181c drm/i915: Avoid rcu_barrier() from reclaim paths (shrinker)
   82dafcb93b0f drm/i915: Stop using RP_DOWN_EI on Baytrail
   954ce087072c drm/i915: Drop support for I915_EXEC_CONSTANTS_* execbuf parameters.
   1cbf6296fb35 drm/i915: Only enable hotplug interrupts if the display interrupts are enabled
   1435e12e4af9 drm/i915: Avoid tweaking evaluation thresholds on Baytrail v3
   988028e55b88 drm/i915: Nuke debug messages from the pipe update critical section
   8ac9915c3f86 drm/i915/gen9: Increase PCODE request timeout to 50ms
   cf2586e60ede Linux 4.9.22
   7eae64f9195c x86/reboot/quirks: Fix typo in ASUS EeeBook X205TA reboot quirk
   af11789a0548 usb-storage: Add ignore-residue quirk for Initio INIC-3619
   e5525c7419f1 x86/reboot/quirks: Add ASUS EeeBook X205TA/W reboot quirk
   0605fff95d33 x86/reboot/quirks: Add ASUS EeeBook X205TA reboot quirk
   7c6b1ad9deb5 platform/x86: asus-wmi: Detect quirk_no_rfkill from the DSDT
   71f38c11cdb8 platform/x86: asus-wmi: Set specified XUSB2PR value for X550LB
   4dc1eb47fbea watchdog: s3c2410: Fix infinite interrupt in soft mode
   b18877ff66cf PCI: Add ACS quirk for Qualcomm QDF2400 and QDF2432
   5feac34f670c PCI: Sort the list of devices with D3 delay quirk by ID
   6b69d1f64499 mmc: sdhci-of-esdhc: remove default broken-cd for ARM
   0ddf07d2a130 PCI: Disable MSI for HiSilicon Hip06/Hip07 Root Ports
   28dd2313a6e4 PCI: Add Broadcom Northstar2 PAXC quirk for device class and MPSS
   35b366d584da ARM: smccc: Update HVC comment to describe new quirk parameter
   25bdb190ade0 drm/msm/adreno: move function declarations to header file
   bec9918bb4da firmware: qcom: scm: Fix interrupted SCM calls
   007f0a2f2c0f arm: kernel: Add SMC structure parameter
   703f48a1c302 HID: wacom: don't apply generic settings to old devices
   abb640893830 ASoC: sun4i-i2s: Add quirks to handle a31 compatible
   3d2f06d8d180 ACPI: save NVS memory for Lenovo G50-45
   09f78f116c03 ASoC: Intel: cht_bsw_rt5645: add Baytrail MCLK support
   584f4318f923 ASoC: Intel: cht_bsw_rt5645: harden ACPI device detection
   4060a32e9d24 ASoC: Intel: Baytrail: add quirk for Lenovo Thinkpad 10
   d572cfb66264 ASoC: codecs: rt5670: add quirk for Lenovo Thinkpad 10
   58153cca226f ASoC: rt5670: Add missing 10EC5072 ACPI ID
   e4ae51e44b89 ACPI / button: Change default behavior to lid_init_state=open
   b369fd719fa4 sata: ahci-da850: implement a workaround for the softreset quirk
   f36d3f1fe79e PCI: Add ACS quirk for Intel Union Point
   a452e4eb6ee2 ARM: dts: STiH407-family: set snps,dis_u3_susphy_quirk
   9ec57c921b9d drm/mga: remove device_is_agp callback
   ae3a3e209ef1 usb: dwc3: host: pass quirk-broken-port-ped property for known broken revisions
   7bdf7bebbbed usb: host: xhci-plat: enable BROKEN_PED quirk if platform requested
   15159247d25b usb: xhci: add quirk flag for broken PED bits
   660b38eab885 ARM: davinci: PM: support da8xx DT platforms
   db7c1706fa6d Input: gpio_keys - add support for GPIO descriptors
   80b0d7e623d1 serial: 8250_omap: Add OMAP_DMA_TX_KICK quirk for AM437x
   6b8deb108273 usb: chipidea: msm: Rely on core to override AHBBURST
   c5fc946a15dc scsi: ufs: issue link starup 2 times if device isn't active
   a17bddc4a781 scsi: ufs: introduce a new ufshcd_statea UFSHCD_STATE_EH_SCHEDULED
   e94ed347105d ASoC: Intel: bytcr_rt5640: quirks for Insyde devices
   0ed0810b8b02 drm/i915: actually drive the BDW reserved IDs
   70797929ee36 drm/i915: more .is_mobile cleanups for BDW
   0b348464eea0 drm/i915: fix INTEL_BDW_IDS definition
   14ec1cf414cf drm/edid: constify edid quirk list
   f188ee38d4cb HID: usbhid: Add quirk for Mayflash/Dragonrise DolphinBar.
   7fd75759ba07 HID: usbhid: Add quirk for the Futaba TOSD-5711BB VFD
   c1e94148f93c ACPI / sysfs: Provide quirk mechanism to prevent GPE flooding
   43cfff65c989 nvme: simplify stripe quirk
   8d620dff40ba platform/x86: acer-wmi: Only supports AMW0_GUID1 on acer family
   2bd6cc1cce47 ALSA: usb-audio: Add native DSD support for TEAC 501/503 DAC
   8ae7242fea54 PCI: Expand "VPD access disabled" quirk message
   c0aac1bbb5d8 ALSA: usb-audio: add implicit fb quirk for Axe-Fx II
   bedc629494cd scsi: ufs: add quirk to increase host PA_SaveConfigTime
   5c6b8ad1ab25 PCI: thunder-pem: Factor out resource lookup
   5582c1980eac arm64: PCI: Add local struct device pointers
   cc49b39f3f2d arm64: PCI: Manage controller-specific data on per-controller basis
   625fd9d1af70 x86/intel_idle: Add CPU model 0x4a (Atom Z34xx series)
   607ca1dccbbd svcauth_gss: Close connection when dropping an incoming message
   3a87bcdebf6e scsi: ufs: ensure that host pa_tactivate is higher than device
   d84be51d1c1d mmc: sdhci-msm: Enable few quirks
   c6e3c6628dfb HID: multitouch: do not retrieve all reports for all devices
   68a83be38135 HID: multitouch: enable the Surface 3 Type Cover to report multitouch data
   c5fcc6332ddb HID: sensor-hub: add quirk for Microchip MM7150
   39f3c9291d69 HID: sensor-hub add quirk for Microsoft Surface 3
   9b41ed79ec78 scsi: ufs: introduce UFSHCD_QUIRK_PRDT_BYTE_GRAN quirk
   26cbe162df3d clocksource/drivers/arm_arch_timer: Don't assume clock runs in suspend
   d2f1000c3ae3 net/mlx4_core: Use device ID defines
   dcc4c6758100 arm64: dts: hisi: fix hip06 sas am-max-trans quirk
   b340c9648c2f ASoC: Intel: bytct_rt5640: change default capture settings
   d9a97dcdf5c2 usb: dwc3: gadget: delay unmap of bounced requests
   ee670af5feed HID: i2c-hid: add a simple quirk to fix device defects
   d640c41bced6 HID: usbhid: Add quirks for Mayflash/Dragonrise GameCube and PS3 adapters
   e02a5d1d5a05 clk: lpc32xx: add a quirk for PWM and MS clock dividers
   666d5f34d897 drm/sun4i: Add compatible string for A31/A31s TCON (timing controller)
   6af7e1cae445 drm/sun4i: Add compatible strings for A31/A31s display pipelines
   06a2bb472f71 drm/sun4i: tcon: Move SoC specific quirks to a DT matched data structure
   7c0361334466 random: use chacha20 for get_random_int/long
   cddab768d134 mm/mempolicy.c: fix error handling in set_mempolicy and mbind.
   24317cb6b400 Documentation: stable-kernel-rules: fix stable-tag format
   be56f92cc0a9 MIPS: c-r4k: Fix Loongson-3's vcache/scache waysize calculation
   59b8725f2b1e MIPS: Flush wrong invalid FTLB entry for huge page
   186fb3c52e39 MIPS: Add MIPS_CPU_FTLB for Loongson-3A R2
   3d5e13d891b0 MIPS: Check TLB before handle_ri_rdhwr() for Loongson-3
   c7f6633f7657 MIPS: Lantiq: fix missing xbar kernel panic
   1e7deb9da033 MIPS: End spinlocks with .insn
   19aa26f5be49 MIPS: ralink: Fix typos in rt3883 pinctrl
   9dcb21e63b2e MIPS: Force o32 fp64 support on 32bit MIPS64r6 kernels
   7b68273f79e8 s390/uaccess: get_user() should zero on failure (again)
   f4938792af38 s390/decompressor: fix initrd corruption caused by bss clear
   6a776f6ae3f8 xtensa: make __pa work with uncached KSEG addresses
   c1dcea123655 nios2: reserve boot memory for device tree
   27d382fb6afe dm raid: fix NULL pointer dereference for raid1 without bitmap
   abbf0fd436a9 powerpc/crypto/crc32c-vpmsum: Fix missing preempt_disable()
   45c2ed941c08 powerpc: Don't try to fix up misaligned load-with-reservation instructions
   fba7546bbe65 powerpc/64: Fix flush_(d|i)cache_range() called from modules
   24d945d4791f powerpc/mm: Add missing global TLB invalidate if cxl is active
   6fbf84b5da23 powerpc: Disable HFSCR[TM] if TM is not supported
   a1db9b2c1b12 metag/usercopy: Add missing fixups
   ce154d517ae4 metag/usercopy: Fix src fixup in from user rapf loops
   4f3f0dd2a75b metag/usercopy: Set flags before ADDZ
   3dc0fe517a9f metag/usercopy: Zero rest of buffer from copy_from_user
   4a93ac814ddc metag/usercopy: Add early abort to copy_to_user
   49a292dcd86b metag/usercopy: Fix alignment error checking
   2bb52b47e7f4 metag/usercopy: Drop unused macros
   9afc076d2812 brcmfmac: use local iftype avoiding use-after-free of virtual interface
   c0321505df2e mac80211: unconditionally start new netdev queues with iTXQ support
   703cebf6e978 ring-buffer: Fix return value check in test_ringbuffer()
   f7db18998e9c xfs: Honor FALLOC_FL_KEEP_SIZE when punching ends of files
   dc62935ce0fb orangefs: move features validation to fix filesystem hang
   c4fe79a44a5d Kbuild: use cc-disable-warning consistently for maybe-uninitialized
   e4a62348935e ACPI / gpio: do not fall back to parsing _CRS when we get a deferral
   ab83597b9d40 dm verity fec: fix bufio leaks
   2ff087642643 dm verity fec: limit error correction recursion
   d9fa4351037b ptrace: fix PTRACE_LISTEN race corrupting task->state
   e3b08ebe4773 mm/page_alloc.c: fix print order in show_free_areas()
   8446cb1adf95 Reset TreeId to zero on SMB2 TREE_CONNECT
   57e1e90dda74 cfg80211: check rdev resume callback only for registered wiphy
   3715dbf77f3b arm64: mm: unaligned access by user-land should be received as SIGBUS
   71b44ef83d2a iio: bmg160: reset chip when probing
   ac303c64cdb8 kvm: arm/arm64: Fix locking for kvm_free_stage2_pgd
   a1ea31893684 arm/arm64: KVM: Take mmap_sem in kvm_arch_prepare_memory_region
   48f2825abc65 arm/arm64: KVM: Take mmap_sem in stage2_unmap_vm
   8f8de8d2bf6c staging: android: ashmem: lseek failed due to no FMODE_LSEEK.
   d9eedab38395 sysfs: be careful of error returns from ops->show()
   4ddd24d54fed drm/vmwgfx: fix integer overflow in vmw_surface_define_ioctl()
   28c84df739e3 drm/vmwgfx: Remove getparam error message
   b116797b81e5 drm/ttm, drm/vmwgfx: Relax permission checking when opening surfaces
   604d2eac67cb drm/vmwgfx: avoid calling vzalloc with a 0 size in vmw_get_cap_3d_ioctl()
   73ab72517b61 drm/vmwgfx: NULL pointer dereference in vmw_surface_define_ioctl()
   92cc48166e49 drm/vmwgfx: Type-check lookups of fence objects
   9c2b46e720d5 ppdev: fix registering same device name
   bf5202b58f61 ppdev: check before attaching port

(From OE-Core rev: dcaa696022f8891d4db8733272eabf40f595b89b)

Signed-off-by: Bruce Ashfield <bruce.ashfield@windriver.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
(cherry picked from commit 4af605ae6f5ca763c65b3dca10b7ffb60f5ffa2e)
Signed-off-by: Armin Kuster <akuster808@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-07-27 22:36:45 +01:00
Bruce Ashfield
8aaf737d8b linux-yocto/4.4: update to v4.4.67
Integrating the korg v4.4.61 -> 4.4.67 releases with the following
commit summary:

   dec1dc2a0ee8 Linux 4.4.67
   3b9983bb354e dm ioctl: prevent stack leak in dm ioctl call
   da1ce38aaac7 nfsd: stricter decoding of write-like NFSv2/v3 ops
   35e13333c217 nfsd4: minor NFSv2/v3 write decoding cleanup
   16fb859f9b2b ext4/fscrypto: avoid RCU lookup in d_revalidate
   41948f88a521 ext4 crypto: use dget_parent() in ext4_d_revalidate()
   2faff9d1dfc5 ext4 crypto: revalidate dentry after adding or removing the key
   e2968fb8e798 ext4: require encryption feature for EXT4_IOC_SET_ENCRYPTION_POLICY
   fee1f42b961e IB/ehca: fix maybe-uninitialized warnings
   56cd2ed3e25a IB/qib: rename BITS_PER_PAGE to RVT_BITS_PER_PAGE
   a8d47b4b3cb6 netlink: Allow direct reclaim for fallback allocation
   35c9bfa51154 8250_pci: Fix potential use-after-free in error path
   6f81dea4037c scsi: cxlflash: Improve EEH recovery time
   24d17d7853fa scsi: cxlflash: Fix to avoid EEH and host reset collisions
   69a9e016f0cc scsi: cxlflash: Scan host only after the port is ready for I/O
   ec2170f98f9a net: tg3: avoid uninitialized variable warning
   fd79e4363258 mtd: avoid stack overflow in MTD CFI code
   ee6b88767e87 drbd: avoid redefinition of BITS_PER_PAGE
   938206b8d798 ALSA: ppc/awacs: shut up maybe-uninitialized warning
   a2b3b19acfde ASoC: intel: Fix PM and non-atomic crash in bytcr drivers
   6c106b55eb47 Handle mismatched open calls
   911bd54922cd timerfd: Protect the might cancel mechanism proper
   0c49a2c16ca9 Linux 4.4.66
   9c4a4755d9c5 ftrace/x86: Fix triple fault with graph tracing and suspend-to-ram
   1aefe328a68d ARCv2: save r30 on kernel entry as gcc uses it for code-gen
   82a0d8aabe04 nfsd: check for oversized NFSv2/v3 arguments
   2032eebe2384 Input: i8042 - add Clevo P650RS to the i8042 reset list
   91ce8d13faeb p9_client_readdir() fix
   3bf0809930b8 MIPS: Avoid BUG warning in arch_check_elf
   1c26c382c9e7 MIPS: KGDB: Use kernel context for sleeping threads
   555f77106f77 ALSA: seq: Don't break snd_use_lock_sync() loop by timeout
   8cbaf11c5026 ALSA: firewire-lib: fix inappropriate assignment between signed/unsigned type
   5e52fffbb11c ipv6: check raw payload size correctly in ioctl
   befb92542439 ipv6: check skb->protocol before lookup for nexthop
   114f0c66dab4 macvlan: Fix device ref leak when purging bc_queue
   bdeb026dfd9f ip6mr: fix notification device destruction
   25c104023372 netpoll: Check for skb->queue_mapping
   f6b94906b414 net: ipv6: RTF_PCPU should not be settable from userspace
   f6b34b1709ac dp83640: don't recieve time stamps twice
   78c4e3d4848d tcp: clear saved_syn in tcp_disconnect()
   52e33b4e505d sctp: listen on the sock only when it's state is listening or closed
   cc5a5c09d32b net: ipv4: fix multipath RTM_GETROUTE behavior when iif is given
   593e185eaade l2tp: fix PPP pseudo-wire auto-loading
   f710dbd92b27 l2tp: take reference on sessions being dumped
   25adf4e32a89 net/packet: fix overflow in check for tp_reserve
   cf71bd41f809 net/packet: fix overflow in check for tp_frame_nr
   8625dfcfd338 l2tp: purge socket queues in the .destruct() callback
   0e9eeb4676a7 net: phy: handle state correctly in phy_stop_machine
   428b3cefab22 net: neigh: guard against NULL solicit() method
   592d0e60a2b7 sparc64: Fix kernel panic due to erroneous #ifdef surrounding pmd_write()
   80ec183214e8 sparc64: kern_addr_valid regression
   c583862e95d2 xen/x86: don't lose event interrupts
   5709321fd962 usb: gadget: f_midi: Fixed a bug when buflen was smaller than wMaxPacketSize
   3e19487b9bf5 regulator: core: Clear the supply pointer if enabling fails
   804605eae410 RDS: Fix the atomicity for congestion map update
   b9baa0aa66ce net_sched: close another race condition in tcf_mirred_release()
   1d1cb762524f net: cavium: liquidio: Avoid dma_unmap_single on uninitialized ndata
   2907c91c9f9a MIPS: Fix crash registers on non-crashing CPUs
   49b2fe4b0207 md:raid1: fix a dead loop when read from a WriteMostly disk
   28320756e78b ext4: check if in-inode xattr is corrupted in ext4_expand_extra_isize_ea()
   99e96ce5e315 drm/amdgpu: fix array out of bounds
   10fc325c03d2 crypto: testmgr - fix out of bound read in __test_aead()
   40a55e4f9401 clk: sunxi: Add apb0 gates for H3
   531be60fc580 ARM: OMAP2+: timer: add probe for clocksources
   bd2d6cb00d1a xc2028: unlock on error in xc2028_set_config()
   716bcfeb12b8 f2fs: do more integrity verification for superblock
   418b99042b87 Linux 4.4.65
   416bd4a366f3 perf/core: Fix concurrent sys_perf_event_open() vs. 'move_group' race
   b7f47c794bc4 ping: implement proper locking
   a7544fdd1626 staging/android/ion : fix a race condition in the ion driver
   d23ef85b123d vfio/pci: Fix integer overflows, bitmask check
   65d30f7545ff tipc: check minimum bearer MTU
   9540baadb61b netfilter: nfnetlink: correctly validate length of batch messages
   0d9dac5d7cc3 xc2028: avoid use after free
   c50fd34e1089 mnt: Add a per mount namespace limit on the number of mounts
   59e0cd110fb9 tipc: fix socket timer deadlock
   abc025d1e88a tipc: fix random link resets while adding a second bearer
   d39cb4a59729 gfs2: avoid uninitialized variable warning
   9a35bc2ae545 hostap: avoid uninitialized variable use in hfa384x_get_rid
   58f80ccf09c4 tty: nozomi: avoid a harmless gcc warning
   2847736f563d tipc: correct error in node fsm
   76ca3053f32c tipc: re-enable compensation for socket receive buffer double counting
   3f3155904308 tipc: make dist queue pernet
   44b3b7e06887 tipc: make sure IPv6 header fits in skb headroom
   12f4e1f54a13 Linux 4.4.64
   6862fa9077de tipc: fix crash during node removal
   6ddbac9aa800 block: fix del_gendisk() vs blkdev_ioctl crash
   d1cc3cdd39e9 x86, pmem: fix broken __copy_user_nocache cache-bypass assumptions
   5693f3fb5a66 hv: don't reset hv_context.tsc_page on crash
   03e2fb9b5ce8 Drivers: hv: balloon: account for gaps in hot add regions
   8e7a6dbc3b71 Drivers: hv: balloon: keep track of where ha_region starts
   397488e09bf2 Tools: hv: kvp: ensure kvp device fd is closed on exec
   2a60bb635236 kvm: arm/arm64: Fix locking for kvm_free_stage2_pgd
   e2587fba9911 x86/mce/AMD: Give a name to MCA bank 3 when accessed with legacy MSRs
   6c107bba66dc powerpc/kprobe: Fix oops when kprobed on 'stdu' instruction
   38be91ce7ea8 ubi/upd: Always flush after prepared for an update
   b812c69019e4 mac80211: reject ToDS broadcast data frames
   b74ba9dd91e5 mmc: sdhci-esdhc-imx: increase the pad I/O drive strength for DDR50 card
   6986d0d29f3c ACPI / power: Avoid maybe-uninitialized warning
   cdede60d6a30 Input: elantech - add Fujitsu Lifebook E547 to force crc_enabled
   8d5ed79fb2d7 VSOCK: Detach QP check should filter out non matching QPs.
   f803416632b5 Drivers: hv: vmbus: Reduce the delay between retries in vmbus_post_msg()
   567dd48c4e71 Drivers: hv: get rid of timeout in vmbus_open()
   5ab982a01201 Drivers: hv: don't leak memory in vmbus_establish_gpadl()
   702db976b857 s390/mm: fix CMMA vs KSM vs others
   859d615b5be1 CIFS: remove bad_network_name flag
   f8fe51c86583 cifs: Do not send echoes before Negotiate is complete
   a2a67e53f92f ring-buffer: Have ring_buffer_iter_empty() return true when empty
   1dfb1c7bd63f tracing: Allocate the snapshot buffer before enabling probe
   c9460fbceb2f KEYS: fix keyctl_set_reqkey_keyring() to not leak thread keyrings
   eb78d9877579 KEYS: Change the name of the dead type to ".dead" to prevent user access
   b5737b92560e KEYS: Disallow keyrings beginning with '.' to be joined as session keyrings
   81af21fe95ba Linux 4.4.63
   d00557976676 MIPS: fix Select HAVE_IRQ_EXIT_ON_IRQ_STACK patch.
   e2f5fb9207a6 sctp: deny peeloff operation on asocs with threads sleeping on it
   f00f18ebb3b2 net: ipv6: check route protocol when deleting routes
   990a142ee0d3 tty/serial: atmel: RS485 half duplex w/DMA: enable RX after TX is done
   8dc821b9f67d SUNRPC: fix refcounting problems with auth_gss messages.
   403a728d1a35 ibmveth: calculate gso_segs for large packets
   65596042c3af catc: Use heap buffer for memory size test
   40531b26bade catc: Combine failure cleanup code in catc_probe()
   a90604be51de rtl8150: Use heap buffers for all register access
   be570e556dee pegasus: Use heap buffers for all register access
   eb5267657d85 virtio-console: avoid DMA from stack
   6be431f91632 dvb-usb-firmware: don't do DMA on stack
   502157457f52 dvb-usb: don't use stack for firmware load
   6739cc12f3db mm: Tighten x86 /dev/mem with zeroing reads
   ba02781392fa rtc: tegra: Implement clock handling
   ccf0904c49b1 platform/x86: acer-wmi: setup accelerometer when machine has appropriate notify event
   51f8d95c89b4 ext4: fix inode checksum calculation problem if i_extra_size is small
   0cb03b6e7086 dvb-usb-v2: avoid use-after-free
   ea6d8d67001a ath9k: fix NULL pointer dereference
   2673d1c5122e crypto: ahash - Fix EINPROGRESS notification callback
   70e55aaf9f8c powerpc: Disable HFSCR[TM] if TM is not supported
   9286385a3452 zram: do not use copy_page with non-page aligned address
   c1fc1d2f214e kvm: fix page struct leak in handle_vmon
   98c953a0a51f Revert "MIPS: Lantiq: Fix cascaded IRQ setup"
   a32c5331b462 char: lack of bool string made CONFIG_DEVPORT always on
   0a6aa0d1cf27 char: Drop bogus dependency of DEVPORT on !M68K
   7fe57118a7c0 ftrace: Fix removing of second function probe
   c51451e43bf1 irqchip/irq-imx-gpcv2: Fix spinlock initialization
   66b531d3ff11 libnvdimm: fix reconfig_mutex, mmap_sem, and jbd2_handle lockdep splat
   6058cf9929d9 xen, fbfront: fix connecting to backend
   b689dfbed8c8 scsi: sd: Fix capacity calculation with 32-bit sector_t
   448961955592 scsi: sd: Consider max_xfer_blocks if opt_xfer_blocks is unusable
   925adae6664c scsi: sr: Sanity check returned mode data
   1e1de2e841e1 iscsi-target: Drop work-around for legacy GlobalSAN initiator
   05c5dd75d77c iscsi-target: Fix TMR reference leak during session shutdown
   074bcc1302fd acpi, nfit, libnvdimm: fix interleave set cookie calculation (64-bit comparison)
   ec3978e10ecc x86/vdso: Plug race between mapping and ELF header setup
   f1c5d0163586 x86/vdso: Ensure vdso32_enabled gets set to valid values only
   f42be33fe976 perf/x86: Avoid exposing wrong/stale data in intel_pmu_lbr_read_32()
   a5e2f803b891 Input: xpad - add support for Razer Wildcat gamepad
   f0899d0e1e9e CIFS: store results of cifs_reopen_file to avoid infinite wait
   a11ab9dd4b78 drm/nouveau/mmu/nv4a: use nv04 mmu rather than the nv44 one
   a737abe4d09a drm/nouveau/mpeg: mthd returns true on success now
   ef4c962825c0 thp: fix MADV_DONTNEED vs clear soft dirty race
   3144d81a7735 cgroup, kthread: close race window where new kthreads can be migrated to non-root cgroups
   a80c068fbf43 Linux 4.4.62
   7d170f270a95 ibmveth: set correct gso_size and gso_type
   ac0cbfbb1e4b net/mlx4_core: Fix when to save some qp context flags for dynamic VST to VGT transitions
   710f793a15de net/mlx4_core: Fix racy CQ (Completion Queue) free
   f1e6b1149e49 net/mlx4_en: Fix bad WQE issue
   0a007f74b826 usb: hub: Wait for connection to be reestablished after port reset
   f4522e36edaa blk-mq: Avoid memory reclaim when remapping queues
   d35f8fa0b93e net/packet: fix overflow in check for priv area size
   fd8bae310684 crypto: caam - fix RNG deinstantiation error checking
   ba7681e4eee6 MIPS: IRQ Stack: Fix erroneous jal to plat_irq_dispatch
   f017e58da4ab MIPS: Select HAVE_IRQ_EXIT_ON_IRQ_STACK
   b39b26381668 MIPS: Switch to the irq_stack in interrupts
   93a82f8dbef8 MIPS: Only change $28 to thread_info if coming from user mode
   336365351285 MIPS: Stack unwinding while on IRQ stack
   d8b8b5528ea5 MIPS: Introduce irq_stack
   5a527d80836e mtd: bcm47xxpart: fix parsing first block after aligned TRX
   297f55bcb62a usb: dwc3: gadget: delay unmap of bounced requests
   8cfaf0ae1f56 drm/i915: Stop using RP_DOWN_EI on Baytrail
   cb0a2cba62d5 drm/i915: Avoid tweaking evaluation thresholds on Baytrail v3

(From OE-Core rev: 2a427e642027cdd2e222ded8df252d74a7427159)

Signed-off-by: Bruce Ashfield <bruce.ashfield@windriver.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
(cherry picked from commit 34e53af8ed9d27ab010e57bcc08dee6f333da9fd)
Signed-off-by: Armin Kuster <akuster808@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-07-27 22:36:45 +01:00
Bruce Ashfield
49495c60c5 linux-yocto/4.10: update to v4.10.15
Merging the korg stable releases 4.10.10 -> 4.10.15 with the following
shortlog summary:

    b1cff0b2ed20 Linux 4.10.15
    de7b7a35c99e dm ioctl: prevent stack leak in dm ioctl call
    8dee04de5def hwmon: (it87) Avoid registering the same chip on both SIO addresses
    ad66b968a0e5 scsi: storvsc: Workaround for virtual DVD SCSI version
    fc08ba650a2b Handle mismatched open calls
    43c1696e5e91 timerfd: Protect the might cancel mechanism proper
    d08276658dee Linux 4.10.14
    3adeab312a65 ftrace/x86: Fix triple fault with graph tracing and suspend-to-ram
    13d970940217 cpu/hotplug: Serialize callback invocations proper
    bd7c4f5e1d25 net: can: usb: gs_usb: Fix buffer on stack
    43a35e671f8f macsec: avoid heap overflow in skb_to_sgvec
    e4720b009def ceph: fix recursion between ceph_set_acl() and __ceph_setattr()
    43e360377b09 nfsd: stricter decoding of write-like NFSv2/v3 ops
    144180dc4736 nfsd4: minor NFSv2/v3 write decoding cleanup
    86eb1d0aab0d nfsd: check for oversized NFSv2/v3 arguments
    b98d12a15ed1 Input: i8042 - add Clevo P650RS to the i8042 reset list
    2f680d46a0b5 ASoC: intel: Fix PM and non-atomic crash in bytcr drivers
    bec0749254e7 p9_client_readdir() fix
    67355b67b41c MIPS: Avoid BUG warning in arch_check_elf
    7cb5877dc20e MIPS: cevt-r4k: Fix out-of-bounds array access
    09c953f73ff0 MIPS: KGDB: Use kernel context for sleeping threads
    4a71345ea6f8 ARC: [plat-eznps] Fix build error
    47dbabb85ef7 scsi: return correct blkprep status code in case scsi_init_io() fails.
    dcb730f79d33 ALSA: seq: Don't break snd_use_lock_sync() loop by timeout
    7b2b791c65d2 ALSA: firewire-lib: fix inappropriate assignment between signed/unsigned type
    a33e886d3f19 ALSA: oxfw: fix regression to handle Stanton SCS.1m/1d
    f62c45868079 ipv6: check raw payload size correctly in ioctl
    466dfcd1d81a tcp: memset ca_priv data to 0 properly
    04630e2ed834 ipv6: check skb->protocol before lookup for nexthop
    683f8d60761c net: phy: fix auto-negotiation stall due to unavailable interrupt
    f9a8970e9eee net: ipv6: regenerate host route if moved to gc list
    e2ae71739253 macvlan: Fix device ref leak when purging bc_queue
    b073c2c3d40c tcp: mark skbs with SCM_TIMESTAMPING_OPT_STATS
    cdaf15b43bd3 tcp: fix SCM_TIMESTAMPING_OPT_STATS for normal skbs
    df4c4820a0b0 net/mlx5e: Fix ETHTOOL_GRXCLSRLALL handling
    cce19108367e net/mlx5e: Fix small packet threshold
    3faae16bf93e net/mlx5: E-Switch, Correctly deal with inline mode on ConnectX-5
    82aa6b2c1f19 net/mlx5: Fix driver load bad flow when having fw initializing timeout
    ff247bdf248a ip6mr: fix notification device destruction
    9db670f71b6a netpoll: Check for skb->queue_mapping
    5e54291edfb9 net: ipv6: RTF_PCPU should not be settable from userspace
    ee1f368e99ba gso: Validate assumption of frag_list segementation
    03940f08b972 ipv6: fix source routing
    c52ac0687247 ipv6: sr: fix double free of skb after handling invalid SRH
    3b600a30d126 dp83640: don't recieve time stamps twice
    a024074740e7 ipv6: sr: fix out-of-bounds access in SRH validation
    7e793ce3b3e1 sh_eth: unmap DMA buffers when freeing rings
    c526d0869a3a net: vrf: Fix setting NLM_F_EXCL flag when adding l3mdev rule
    9ca5d7e426dd net-timestamp: avoid use-after-free in ip_recv_error
    0d8ef98cefae ipv6: Fix idev->addr_list corruption
    29dc163a721e tcp: clear saved_syn in tcp_disconnect()
    1ebfe5cf3727 sctp: listen on the sock only when it's state is listening or closed
    280a7e34a987 net: ipv4: fix multipath RTM_GETROUTE behavior when iif is given
    c747d66b6c6f l2tp: fix PPP pseudo-wire auto-loading
    2ba7cfd4f6a9 l2tp: take reference on sessions being dumped
    0fbdeb789013 openvswitch: Fix ovs_flow_key_update()
    f9bd6b937de6 net/packet: fix overflow in check for tp_reserve
    57a88382a969 net/packet: fix overflow in check for tp_frame_nr
    5894337297ad l2tp: purge socket queues in the .destruct() callback
    7d5eb39c0d8c l2tp: hold tunnel socket when handling control frames in l2tp_ip and l2tp_ip6
    63ae30d5caa7 net/mlx5: Avoid dereferencing uninitialized pointer
    4f45e887a632 bpf: improve verifier packet range checks
    443fac9f2618 secure_seq: downgrade to per-host timestamp offsets
    a35c14672325 kcm: return immediately after copy_from_user() failure
    c79db30fd1b0 net: phy: handle state correctly in phy_stop_machine
    693d7da388c2 net: neigh: guard against NULL solicit() method
    2ec8024c5672 sparc64: Fix kernel panic due to erroneous #ifdef surrounding pmd_write()
    1797e172bf10 sparc64: kern_addr_valid regression
    7cf480444103 ping: implement proper locking
    b957be36d793 Linux 4.10.13
    9254ada03382 device-dax: switch to srcu, fix rcu_read_lock() vs pte allocation
    7d1c1be6c8d3 x86/mce/AMD: Give a name to MCA bank 3 when accessed with legacy MSRs
    1136723a6cf0 powerpc/kprobe: Fix oops when kprobed on 'stdu' instruction
    a6db433483db ubi/upd: Always flush after prepared for an update
    a32ff3f07f9b x86/mce: Make the MCE notifier a blocking one
    c77e7d37ac50 mac80211: fix MU-MIMO follow-MAC mode
    ee9b489925a0 mac80211: reject ToDS broadcast data frames
    71a3e3679e30 ubifs: Fix O_TMPFILE corner case in ubifs_link()
    c1cadf6af8b7 ubifs: Fix RENAME_WHITEOUT support
    2745665258c3 mmc: sdhci-esdhc-imx: increase the pad I/O drive strength for DDR50 card
    b478c19f3de4 mmc: dw_mmc: Don't allow Runtime PM for SDIO cards
    9b02ecd10cff ACPI / power: Avoid maybe-uninitialized warning
    7010e15d1d22 Input: elantech - add Fujitsu Lifebook E547 to force crc_enabled
    0cb760dfc75b s390/mm: fix CMMA vs KSM vs others
    71766b913996 mmc: dw_mmc: silent verbose log when calling from PM context
    9f8296778b61 CIFS: remove bad_network_name flag
    5cd77ebf2254 cifs: Do not send echoes before Negotiate is complete
    63ad4051e89c mm: prevent NR_ISOLATE_* stats from going negative
    64d253367ae0 ring-buffer: Have ring_buffer_iter_empty() return true when empty
    eff248618a59 HID: wacom: Treat HID_DG_TOOLSERIALNUMBER as unsigned
    838a281c4a17 tracing: Allocate the snapshot buffer before enabling probe
    523ae2e9e39a KEYS: fix keyctl_set_reqkey_keyring() to not leak thread keyrings
    cc4f98410688 KEYS: Change the name of the dead type to ".dead" to prevent user access
    4cbbfd6aafe1 KEYS: Disallow keyrings beginning with '.' to be joined as session keyrings
    055c0a94117c Linux 4.10.12
    e5349c13c7a8 virtio-console: avoid DMA from stack
    e0116f4d9a9a cxusb: Use a dma capable buffer also for reading
    b1bfb5083bfa mm: Tighten x86 /dev/mem with zeroing reads
    2c4d8f20cc29 rtc: tegra: Implement clock handling
    a16534a33305 ACPI / EC: Use busy polling mode when GPE is not enabled
    8a73a223fb70 x86/xen: Fix APIC id mismatch warning on Intel
    e765ef79fdf3 platform/x86: acer-wmi: setup accelerometer when machine has appropriate notify event
    35549ee08285 ASoC: Intel: select DW_DMAC_CORE since it's mandatory
    765c74b9cc27 dvb-usb-v2: avoid use-after-free
    ce5fe5a547d8 parisc: Fix get_user() for 64-bit value on 32-bit kernel
    aa7ca04fb26c crypto: lrw - Fix use-after-free on EINPROGRESS
    cb0567fc5114 crypto: ahash - Fix EINPROGRESS notification callback
    102da3a73f9a crypto: xts - Fix use-after-free on EINPROGRESS
    25308983eda6 crypto: algif_aead - Fix bogus request dereference in completion function
    a0a1e90f5057 ftrace: Fix function pid filter on instances
    58bc856c41fb zram: do not use copy_page with non-page aligned address
    9bf69094c2ad Revert "MIPS: Lantiq: Fix cascaded IRQ setup"
    1cb293ab0236 char: lack of bool string made CONFIG_DEVPORT always on
    ebe4deab5c80 drm/i915/gvt: set the correct default value of CTX STATUS PTR
    4bf7df7b3bd7 ftrace: Fix removing of second function probe
    9b35ab51a0b4 irqchip/irq-imx-gpcv2: Fix spinlock initialization
    b648679070a9 cpufreq: Bring CPUs up even if cpufreq_online() failed
    26052e29d6a2 pwm: rockchip: State of PWM clock should synchronize with PWM enabled state
    96b121b50683 can: ifi: use correct register to read rx status
    5b750d3c56e3 libnvdimm: band aid btt vs clear poison locking
    f0f306710e24 libnvdimm: fix reconfig_mutex, mmap_sem, and jbd2_handle lockdep splat
    e0d47228949e libnvdimm: fix blk free space accounting
    66481ca0750d make skb_copy_datagram_msg() et.al. preserve ->msg_iter on error
    a99a9ff2374a new privimitive: iov_iter_revert()
    939707c50352 xen, fbfront: fix connecting to backend
    22113847cd11 target: Avoid mappedlun symlink creation during lun shutdown
    53204334cca0 scsi: sd: Fix capacity calculation with 32-bit sector_t
    24c01b369765 scsi: qla2xxx: Add fix to read correct register value for ISP82xx.
    8b30ed56fa89 scsi: sd: Consider max_xfer_blocks if opt_xfer_blocks is unusable
    01fb9440938a scsi: sr: Sanity check returned mode data
    c8270f29214c iscsi-target: Drop work-around for legacy GlobalSAN initiator
    510152205d41 iscsi-target: Fix TMR reference leak during session shutdown
    c100de410c1e efi/fb: Avoid reconfiguration of BAR that covers the framebuffer
    6b8a0080915d efi/libstub: Skip GOP with PIXEL_BLT_ONLY format
    ca3e0b6d6b25 parisc: fix bugs in pa_memcpy
    87ad80ecdb5c ACPI / scan: Set the visited flag for all enumerated devices
    122c16ccc71b acpi, nfit, libnvdimm: fix interleave set cookie calculation (64-bit comparison)
    083d30d61a1a x86/vdso: Plug race between mapping and ELF header setup
    90dc1120444f x86/vdso: Ensure vdso32_enabled gets set to valid values only
    b8cb11e01a7f x86, pmem: fix broken __copy_user_nocache cache-bypass assumptions
    1a99658f083d x86/intel_rdt: Fix locking in rdtgroup_schemata_write()
    565194a42052 x86/signals: Fix lower/upper bound reporting in compat siginfo
    c6be568a2f24 x86/efi: Don't try to reserve runtime regions
    4ff9e6c2d86b perf/x86: Avoid exposing wrong/stale data in intel_pmu_lbr_read_32()
    535adf24d1a7 perf annotate s390: Fix perf annotate error -95 (4.10 regression)
    7869b4078ba9 Input: xpad - add support for Razer Wildcat gamepad
    3f17ee38a808 CIFS: store results of cifs_reopen_file to avoid infinite wait
    6e9b6937a923 CIFS: reconnect thread reschedule itself
    d38b12ab7b05 drm/fb-helper: Allow var->x/yres(_virtual) < fb->width/height again
    e97e515b7448 drm/etnaviv: fix missing unlock on error in etnaviv_gpu_submit()
    3287a46c7829 drm/nouveau: initial support (display-only) for GP107
    2efa4bd3b644 drm/nouveau/kms/nv50: fix double dma_fence_put() when destroying plane state
    b6b2448efe64 drm/nouveau/kms/nv50: fix setting of HeadSetRasterVertBlankDmi method
    8418bb809e55 drm/nouveau/mmu/nv4a: use nv04 mmu rather than the nv44 one
    cc3c096855c6 drm/nouveau/mpeg: mthd returns true on success now
    5de87d225e08 orangefs: free superblock when mount fails
    5f8cde206712 zsmalloc: expand class bit
    5c7de4610825 thp: fix MADV_DONTNEED vs clear soft dirty race
    d7847a2203a1 thp: fix MADV_DONTNEED vs. MADV_FREE race
    e2083153996d tcmu: Skip Data-Out blocks before gathering Data-In buffer for BIDI case
    acbb93eb7447 tcmu: Fix wrongly calculating of the base_command_size
    1486f834e887 tcmu: Fix possible overwrite of t_data_sg's last iov[]
    e8339b9ddfe6 audit: make sure we don't let the retry queue grow without bounds
    668e2d892499 cgroup, kthread: close race window where new kthreads can be migrated to non-root cgroups
    4c031101dc08 Linux 4.10.11
    2ef9c8dd6ecd dma-buf: add support for compat ioctl
    10e13823b0a9 net/packet: fix overflow in check for priv area size
    50d60091d294 crypto: caam - fix invalid dereference in caam_rsa_init_tfm()
    41889ca0002a crypto: caam - fix RNG deinstantiation error checking
    8e94a6f43dff MIPS: IRQ Stack: Fix erroneous jal to plat_irq_dispatch
    4a1fe14b16c9 MIPS: Select HAVE_IRQ_EXIT_ON_IRQ_STACK
    2c7235dbdd51 MIPS: Switch to the irq_stack in interrupts
    b21e28eafd17 MIPS: Only change $28 to thread_info if coming from user mode
    ece65a60793c MIPS: Stack unwinding while on IRQ stack
    6b720ff376fd MIPS: Introduce irq_stack
    612973c55404 rt2x00usb: do not anchor rx and tx urb's
    244ff096a321 rt2x00usb: fix anchor initialization
    df741f77edfa nfs: flexfiles: fix kernel OOPS if MDS returns unsupported DS type
    f536c2058420 orangefs: fix buffer size mis-match between kernel space and user space.
    f20e76a469c1 orangefs: Dan Carpenter influenced cleanups...
    b01252079ec7 drm/i915: Do .init_clock_gating() earlier to avoid it clobbering watermarks
    d5b5a4d3f77f drm/i915: Avoid rcu_barrier() from reclaim paths (shrinker)
    de3571619eeb drm/i915: Stop using RP_DOWN_EI on Baytrail
    29abfd4ee598 drm/i915: Drop support for I915_EXEC_CONSTANTS_* execbuf parameters.
    b364cf79fc37 drm/i915: Only enable hotplug interrupts if the display interrupts are enabled
    56613bca0578 drm/i915: Reject HDMI 12bpc if the sink doesn't indicate support
    dba29c1139fc drm/i915: Avoid tweaking evaluation thresholds on Baytrail v3
    fccb5940cc17 drm/i915: Nuke debug messages from the pipe update critical section
    29a9a6a329d1 drm/i915: Store a permanent error in obj->mm.pages
    432ae45238b8 drm/i915/gen9: Increase PCODE request timeout to 50ms
    b93cb4cc2eab drm/i915: Squelch any ktime/jiffie rounding errors for wait-ioctl
    ec417098e18f drm/i915/fbdev: Stop repeating tile configuration on stagnation
    4f985d41bc5f drm/i915: Move updating color management to before vblank evasion
    a8a20aecc9c1 drm/i915: Fix forcewake active domain tracking
    e6925852d5b8 Linux 4.10.10
    e6c5fe2374cd x86/reboot/quirks: Fix typo in ASUS EeeBook X205TA reboot quirk
    a148ee8f7156 usb-storage: Add ignore-residue quirk for Initio INIC-3619
    118b1ef49a33 x86/reboot/quirks: Add ASUS EeeBook X205TA/W reboot quirk
    2b0766deb008 x86/reboot/quirks: Add ASUS EeeBook X205TA reboot quirk
    3db435d09bc3 platform/x86: asus-wmi: Detect quirk_no_rfkill from the DSDT
    d0331c21a1a6 watchdog: s3c2410: Fix infinite interrupt in soft mode
    07371cd9ef21 PCI: Add ACS quirk for Qualcomm QDF2400 and QDF2432
    e90d491bcf00 PCI: Sort the list of devices with D3 delay quirk by ID
    9fd0dee94856 mmc: sdhci-of-esdhc: remove default broken-cd for ARM
    8f24ffc2f9a0 PCI: Disable MSI for HiSilicon Hip06/Hip07 Root Ports
    f2d9c08fc9b2 PCI: Add Broadcom Northstar2 PAXC quirk for device class and MPSS
    0755d2b5fe92 ARM: smccc: Update HVC comment to describe new quirk parameter
    7dd05d366148 firmware: qcom: scm: Fix interrupted SCM calls
    cc9b9deb6197 arm: kernel: Add SMC structure parameter
    2dca786b85e2 HID: wacom: don't apply generic settings to old devices
    6ac0617424d4 ASoC: sun4i-i2s: Add quirks to handle a31 compatible
    ab0b1f481fa9 ACPI: save NVS memory for Lenovo G50-45
    36426b3a31dc ASoC: Intel: cht_bsw_rt5645: add Baytrail MCLK support
    bdbe9135ead6 ASoC: Intel: cht_bsw_rt5645: harden ACPI device detection
    88f1372e28b2 ASoC: Intel: Baytrail: add quirk for Lenovo Thinkpad 10
    770049fddd84 ASoC: codecs: rt5670: add quirk for Lenovo Thinkpad 10
    8d5dd97f5556 ACPI / button: Change default behavior to lid_init_state=open
    53a898c2dc3b sata: ahci-da850: implement a workaround for the softreset quirk
    fcfd2ac4abfb PCI: xgene: Fix double free on init error
    c259b9b74ebc PCI: Add ACS quirk for Intel Union Point
    8a4b2d4ba49c drm/mga: remove device_is_agp callback
    f08ae685954e usb: dwc3: host: pass quirk-broken-port-ped property for known broken revisions
    41d6d9750ba3 usb: host: xhci-plat: enable BROKEN_PED quirk if platform requested
    9763fee4c38d usb: xhci: add quirk flag for broken PED bits
    afdb6b99f54e serial: 8250_omap: Add OMAP_DMA_TX_KICK quirk for AM437x
    99b4f57bffe5 usb: chipidea: msm: Rely on core to override AHBBURST
    f576c28172a3 ASoC: Intel: bytcr_rt5640: quirks for Insyde devices
    24fdd3f90f4c drm/i915: actually drive the BDW reserved IDs
    0325b5e1b637 drm/i915: more .is_mobile cleanups for BDW
    bb4c89250bcc drm/i915: fix INTEL_BDW_IDS definition
    d7f19357fe65 drm/edid: constify edid quirk list
    b04940e26f10 kvm: fix page struct leak in handle_vmon
    af7291601501 random: use chacha20 for get_random_int/long
    d57c764a703b mm/mempolicy.c: fix error handling in set_mempolicy and mbind.
    596c2d180a96 Documentation: stable-kernel-rules: fix stable-tag format
    813e1ac7259b usb: dwc3: gadget: delay unmap of bounced requests
    5e87a005ff57 drm/i915/kvmgt: fix suspicious rcu dereference usage
    cccf8321af1c drm/i915/gvt: Fix gvt scheduler interval time
    fba7cfc66b25 MIPS: c-r4k: Fix Loongson-3's vcache/scache waysize calculation
    42ce8ecfd141 MIPS: Flush wrong invalid FTLB entry for huge page
    a854a7975ce0 MIPS: Add MIPS_CPU_FTLB for Loongson-3A R2
    5dc665924208 MIPS: Check TLB before handle_ri_rdhwr() for Loongson-3
    464d88e8a0ad MIPS: Lantiq: fix missing xbar kernel panic
    187b957634f0 MIPS: End spinlocks with .insn
    0c4b9fe70343 MIPS: ralink: Fix typos in rt3883 pinctrl
    e09e410969ef MIPS: Force o32 fp64 support on 32bit MIPS64r6 kernels
    94f3dd6b140a s390/uaccess: get_user() should zero on failure (again)
    5d4d57697aa1 s390/decompressor: fix initrd corruption caused by bss clear
    a66f5106e710 xtensa: make __pa work with uncached KSEG addresses
    36463a76abeb nios2: reserve boot memory for device tree
    be9fe9d48988 x86/mce: Don't print MCEs when mcelog is active
    fe96b265778a dm raid: fix NULL pointer dereference for raid1 without bitmap
    5c67d5410bbb powerpc/crypto/crc32c-vpmsum: Fix missing preempt_disable()
    d625e1a1530d powerpc: Don't try to fix up misaligned load-with-reservation instructions
    b129e418406b powerpc/64: Fix flush_(d|i)cache_range() called from modules
    12502ae4c9a1 powerpc/mm: Add missing global TLB invalidate if cxl is active
    2a3134e106d4 powerpc: Disable HFSCR[TM] if TM is not supported
    be5569719b5c drm/msm: adreno: fix build error without debugfs
    169b36bef88f metag/usercopy: Add missing fixups
    191e4c735549 metag/usercopy: Fix src fixup in from user rapf loops
    e6ca39ac0c0d metag/usercopy: Set flags before ADDZ
    b03dd10e4c58 metag/usercopy: Zero rest of buffer from copy_from_user
    60a0b56ea119 metag/usercopy: Add early abort to copy_to_user
    e61ffb12b6ac metag/usercopy: Fix alignment error checking
    804453ff0993 metag/usercopy: Drop unused macros
    6d855e027553 brcmfmac: use local iftype avoiding use-after-free of virtual interface
    96499191fe6d mac80211: unconditionally start new netdev queues with iTXQ support
    ab23a82a0176 ring-buffer: Fix return value check in test_ringbuffer()
    24d108e4dfec xfs: Honor FALLOC_FL_KEEP_SIZE when punching ends of files
    1d656a4d8e87 orangefs: move features validation to fix filesystem hang
    b92a638e002b jump label: fix passing kbuild_cflags when checking for asm goto support
    7b73b72fbf82 Kbuild: use cc-disable-warning consistently for maybe-uninitialized
    52b38ad09a6c ACPI / scan: Prefer devices without _HID for _ADR matching
    e56bb92202f7 ACPI / gpio: do not fall back to parsing _CRS when we get a deferral
    1c9925e63abb dm verity fec: fix bufio leaks
    88c358b1f453 dm verity fec: limit error correction recursion
    523a19324267 dax: fix radix tree insertion race
    8bdc69ccb9f8 ptrace: fix PTRACE_LISTEN race corrupting task->state
    0666cf6c9c18 mm/page_alloc.c: fix print order in show_free_areas()
    674850494e19 Reset TreeId to zero on SMB2 TREE_CONNECT
    c793e3374981 cfg80211: check rdev resume callback only for registered wiphy
    b48b63d5f583 arm64: mm: unaligned access by user-land should be received as SIGBUS
    3d44ecc1206e iio: bmg160: reset chip when probing
    2501a0af1734 iio: st_pressure: initialize lps22hb bootime
    a16d8c4e8f77 iio: core: Fix IIO_VAL_FRACTIONAL_LOG2 for negative values
    0d50669ca41f kvm: arm/arm64: Fix locking for kvm_free_stage2_pgd
    e8c3d6542edb arm/arm64: KVM: Take mmap_sem in kvm_arch_prepare_memory_region
    fc29073a15e8 arm/arm64: KVM: Take mmap_sem in stage2_unmap_vm
    fb3ce7a85213 staging: android: ashmem: lseek failed due to no FMODE_LSEEK.
    38b4b8a0969d sysfs: be careful of error returns from ops->show()
    a709613559d6 PCI: thunder-pem: Fix legacy firmware PEM-specific resources
    f8709a9ec8ae PCI: thunder-pem: Add legacy firmware support for Cavium ThunderX host controller
    44eed6f02491 drm/vmwgfx: fix integer overflow in vmw_surface_define_ioctl()
    a2d474ab560c drm/vmwgfx: Remove getparam error message
    009eb75f7fb0 drm/ttm, drm/vmwgfx: Relax permission checking when opening surfaces
    7a392c9a4563 drm/vmwgfx: avoid calling vzalloc with a 0 size in vmw_get_cap_3d_ioctl()
    0570c0cd987f drm/vmwgfx: NULL pointer dereference in vmw_surface_define_ioctl()
    3622a033c419 drm/vmwgfx: Type-check lookups of fence objects

(From OE-Core rev: 98bce9cfbdb1bc945eb9058b9a57696f639e149f)

Signed-off-by: Bruce Ashfield <bruce.ashfield@windriver.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
(cherry picked from commit 58063bcdb78c9434b4d36e3a73df977b64d1640f)
Signed-off-by: Armin Kuster <akuster808@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-07-27 22:36:45 +01:00
Bruce Ashfield
912d9f531e kernel-yocto: propagate configuration errors to bbclass
As pointed out by klapperichpaul@johndeere.com, missing configuration
fragments were being picked up twice, once by the tools and once by the
bbclass. Unfortunately, the tools error message was being detected as
configs, and hence no error was reported at all.

Rather than catching the output of the tools, we can instead check the
return code and propagate the error message from the tools directly to
the user.

[YOCTO #11649]

(From OE-Core rev: 3470a3839577b99322c10f830cdaa61128ef6b16)

Signed-off-by: Bruce Ashfield <bruce.ashfield@windriver.com>
Signed-off-by: Ross Burton <ross.burton@intel.com>
(cherry picked from commit 960652416e2390337df6d9734375d6829ceb6420)
Signed-off-by: Armin Kuster <akuster808@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-07-27 22:36:45 +01:00
Stanley Cheong Kwan, Phoong
0ffe27ffef recipetool: git reformat URI mangling & parameter stripped
recipetool seems to be mangling and stripping out the parameters for git
URI. This will fix this issue as well as resolve the conflict of
protocol parameter added by user. If a user adds their own protocol as
an argument, it'll be honored.

[YOCTO #11390]
[YOCTO #11391]

(From OE-Core rev: e3c832e49a9596537198a46075ed3d6794639953)

Signed-off-by: Stanley Cheong Kwan, Phoong <stanley.cheong.kwan.phoong@intel.com>
Signed-off-by: Ross Burton <ross.burton@intel.com>
(cherry picked from commit 0cd2fc8ca278ebaa76de95545eef26a07b350c8e)
Signed-off-by: Armin Kuster <akuster808@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-07-27 22:36:45 +01:00
Chen Qi
182e0a290d systemd: workaround login failure on qemumips64 when 'pam' is enabled
Append " -fno-tree-switch-conversion -fno-tree-tail-merge" to
FULL_OPTIMIZATION to workaround login problem on qemumips64. Otherwise,
user cannot login onto the target even username and password are
provided.

(From OE-Core rev: 89d53c742d3538744b892237698ffde2c9c60009)

Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
Signed-off-by: Ross Burton <ross.burton@intel.com>
(cherry picked from commit 35403ba3707c3c8dd94bcc557eef6f7c66696bc5)

Hand applied
Signed-off-by: Armin Kuster <akuster808@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-07-27 22:36:45 +01:00
Ross Burton
b7e7b5e294 systemd: refuse to load units with errors (CVE-2017-1000082)
If a unit has a statement such as User=0day where the username exists but is
strictly speaking invalid, the unit will be started as the root user instead.

Backport a patch from upstream to mitigate this by refusing to start units such
as this.

(From OE-Core rev: a6eaef0f179a341c0b96bb30aaec2d80862a11d6)

Signed-off-by: Ross Burton <ross.burton@intel.com>
Signed-off-by: Armin Kuster <akuster808@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-07-27 22:36:44 +01:00
Patrick Ohly
bc3fa28e93 yocto-compat-layer.py: make signature check code reusable
This moves the main content of test_signature into a helper
function. It can be reused by arbitrary tests that need to do
a before/after signature comparison. Long-term this might even
be useful in oeqa itself.

(From OE-Core rev: 23939d0acb563e27a1419d3f532a47c3d6a59a3e)

Signed-off-by: Patrick Ohly <patrick.ohly@intel.com>
Signed-off-by: Ross Burton <ross.burton@intel.com>
Signed-off-by: Armin Kuster <akuster808@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-07-27 22:36:44 +01:00
Patrick Ohly
026586965a yocto-compat-layer.py: allow README with suffix
It may be useful to append a suffix denoting the file format. For
example, README.rst is rendered differently when viewed on Github, and
also helps editors to switch to a mode more suitable for the format.

The tests uses a file pattern to find the README file(s) and treats
the one with the shortest name as the main one which must not be
empty.

(From OE-Core rev: 0abc29f135d7f870168d9676395f3a4bb77174b8)

Signed-off-by: Patrick Ohly <patrick.ohly@intel.com>
Signed-off-by: Ross Burton <ross.burton@intel.com>
Signed-off-by: Armin Kuster <akuster808@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-07-27 22:36:44 +01:00
Patrick Ohly
8f20c03dd6 yocto-compat-layer.py: add test_world
"test_signatures" ignores wold build breakage for the sake of
reporting differences also when a world build is broken. Therefore we
need a dedicated test that a world build at least theoretically can
proceed without obvious parse time problems (dependencies, parse
errors, dangling .bbappends, etc.).

This is similar to the BSP test_machine_world. The difference is
that test_world doesn't change the MACHINE.

(From OE-Core rev: da18bea6808aaddf3fa3fe72ac7e2d87d7e78b95)

Signed-off-by: Patrick Ohly <patrick.ohly@intel.com>
Signed-off-by: Ross Burton <ross.burton@intel.com>
Signed-off-by: Armin Kuster <akuster808@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-07-27 22:36:44 +01:00
Patrick Ohly
14d5932c20 yocto-compat-layer.py: apply test_signatures to all layers
Software layers were previously allowed to change signatures, but
that's not desired for those layers either. The rule that a layer
which is "Yocto Compatible 2.0" must not change signatures unless
explicitly requested holds for all kinds of layers.

However, as this is something that software layers might not be able
to do right away, testing for signature changes in software layers can
be disabled. It's on by default, as that was Richard's
recommendation. Whether that should change needs further discussion as
part of finalizing "Yocto Compatible 2.0".

As it might still change, the tool now has both a with/without
parameter so that users of the tool can choose the desired behavior
without being affected by future changes to the default.

(From OE-Core rev: e4dce65ce604a74da0f09ee2742cf8b13cf96c8e)

Signed-off-by: Patrick Ohly <patrick.ohly@intel.com>
Signed-off-by: Ross Burton <ross.burton@intel.com>
Signed-off-by: Armin Kuster <akuster808@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-07-27 22:36:44 +01:00
Patrick Ohly
6d7302b53c yocto-compat-layer.py: tolerate broken world builds during signature diff
The "test_signatures" test ignored a broken world build when getting
signatures, but the code which then tried to analyze a difference
found by the test didn't, which prevented printing the difference.

(From OE-Core rev: f2190e7e81f86735510c6ab10d3ac781146113f9)

Signed-off-by: Patrick Ohly <patrick.ohly@intel.com>
Signed-off-by: Ross Burton <ross.burton@intel.com>
Signed-off-by: Armin Kuster <akuster808@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-07-27 22:36:44 +01:00
Patrick Ohly
7546daec4f yocto-compat-layer.py: avoid adding layers more than once
add_layer_dependencies() might get called more than once, or one of
the layer dependencies might already be present. The function should
not add layers again because doing so can cause warnings like:

  WARNING: Duplicate inclusion for .../meta-openembedded/meta-oe/conf/distro/include/meta_oe_security_flags.inc in .../meta-openembedded/meta-oe/conf/layer.conf

(From OE-Core rev: 9821cec1ca52deee444ae3ff14dc548c8312ba3c)

Signed-off-by: Patrick Ohly <patrick.ohly@intel.com>
Signed-off-by: Ross Burton <ross.burton@intel.com>
Signed-off-by: Armin Kuster <akuster808@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-07-27 22:36:44 +01:00
Khem Raj
8a08f866fc iptables: Apply 0001-fix-build-with-musl.patch unconditionally
This patch is generic enough, That it can be applied universally
and makes maintainence easier

(From OE-Core rev: 2df99a0cddf60944ee9e5065d693cea03f5e93b3)

Signed-off-by: Khem Raj <raj.khem@gmail.com>
Signed-off-by: Ross Burton <ross.burton@intel.com>
(cherry picked from commit f769b8389091b4ffaff8f6f8fc7e53462ce176a5)
Signed-off-by: Armin Kuster <akuster808@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-07-27 22:36:44 +01:00
Enrico Scholz
0ee0a238fd tzcode-native: quote ${CC}
build fails else with

| + make -j 8 -l 6 cc=ccache gcc
| make: *** No rule to make target 'gcc'.  Stop.

(From OE-Core rev: fdd3479879f83fcb0e706b3b5b1abf0e9cb789a3)

Signed-off-by: Enrico Scholz <enrico.scholz@sigma-chemnitz.de>
Signed-off-by: Ross Burton <ross.burton@intel.com>
(cherry picked from commit 5729c1563359e12ebb4451bb1ce7ba3fff4ed2d4)
Signed-off-by: Armin Kuster <akuster808@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-07-27 22:36:44 +01:00
Martin Kelly
a839f11d5d qemuboot.conf: make cpus match built artifacts
Currently, the qemu CPUs for are specified as generic, but the built
artifacts are not. For example, we build x86-64 artifacts targeting
core2duo but run them in qemu with generic qemu/kvm CPUs. This causes
some packages that take advantage of the host architecture to crash
because they try to use CPU features not advertised by qemu. As an
example, Qt uses ssse3. When artifacts linked against Qt and built
targeting core2duo attempt to run on a generic qemu/kvm CPU, we get
the following crash:

Incompatible processor. This Qt build requires the following features:
     ssse3

We could fix this by making packages like Qt not take advantage of CPU
features. However, we will probably keep facing similar issues over
time, so it's better to resolve them in a more enduring way.

Fix this by making the qemu -cpu arguments match the built artifacts.

(From OE-Core rev: 20b3574749420a1fef2cb2e0579584453dd4c5c5)

(From OE-Core rev: d945678264ba31dccb5b1dec973e8f3a58403ea2)

Signed-off-by: Martin Kelly <mkelly@xevo.com>
Signed-off-by: Ross Burton <ross.burton@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Signed-off-by: Armin Kuster <akuster808@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-07-27 22:36:44 +01:00
Alexander Kanavin
d4c4708906 package_manager.py: set dnf's releasever setting from DISTRO_CODENAME
So that:

1) dnf does not complain anymore about releasever not being set and then fail
for the same reason;

2) it's possible to refer to $releasever in dnf package feed configuration
(repo paths in particular) without hardconding the release name (pyro, morty, etc.)

(From OE-Core rev: 789e3fc225adbb61f10aaa3bbc3677856f5f0238)

(From OE-Core rev: 5a97694767c76f3083e9ffeeaaa19d76ff424c83)

Signed-off-by: Alexander Kanavin <alexander.kanavin@linux.intel.com>
Signed-off-by: Ross Burton <ross.burton@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Signed-off-by: Armin Kuster <akuster808@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-07-27 22:36:44 +01:00
Khem Raj
4c78660fb4 zlib: Pass pre-calculate uname enable re-entrant flags
Fix ptest generation

(From OE-Core rev: 07f4b0f016225e2b211689a270e56b2923ecb434)

(From OE-Core rev: b99dd747eb8723010f37660de434dde329e7958b)

Signed-off-by: Khem Raj <raj.khem@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Signed-off-by: Armin Kuster <akuster808@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-07-27 22:36:44 +01:00
Peter Kjellerstedt
0e80156a99 git: Add a dependency on perl for gitweb
(From OE-Core rev: db31c837b579dc64bc86553cbc95736bfca97a90)

(From OE-Core rev: 76045a1d96380e3e0a339442f3e19501c4aae5bd)

Signed-off-by: Peter Kjellerstedt <peter.kjellerstedt@axis.com>
Signed-off-by: Ross Burton <ross.burton@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Signed-off-by: Armin Kuster <akuster808@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-07-27 22:36:44 +01:00
Peter Kjellerstedt
e099cb6c35 texi2html: Add a dependency on perl
(From OE-Core rev: c391547e95b1854960b90d93fd9f80f02f761e61)

(From OE-Core rev: dedba20c149798a6b45957b5abd29d18164581b2)

Signed-off-by: Peter Kjellerstedt <peter.kjellerstedt@axis.com>
Signed-off-by: Ross Burton <ross.burton@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Signed-off-by: Armin Kuster <akuster808@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-07-27 22:36:44 +01:00
Peter Kjellerstedt
0f271a5eb9 linux-firmware: Avoid a dependency on python-core
Remove the check_whence.py script since it is only needed to validate
the WHENCE file, and only if explicitly running `make check`.

(From OE-Core rev: 1fc4d5a31f05970d8d80b0106ea81d486f298e33)

(From OE-Core rev: a933bd65e7a02e1faa9dc83c04cefd8205f05421)

Signed-off-by: Peter Kjellerstedt <peter.kjellerstedt@axis.com>
Signed-off-by: Ross Burton <ross.burton@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Signed-off-by: Armin Kuster <akuster808@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-07-27 22:36:44 +01:00
Ross Burton
c89e7747aa libpcap: apply fix from upstream to fix build race
../libpcap-1.8.1/grammar.y:78:10:
fatal error: scanner.h: No such file or directory

(From OE-Core rev: aaed4e92d79919e40c896536fcb4ff6567c9a755)

(From OE-Core rev: d788d2649ec6b1bf3e72b3c8fcec11b6d68412cc)

Signed-off-by: Ross Burton <ross.burton@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Signed-off-by: Armin Kuster <akuster808@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-07-27 22:36:44 +01:00
Jan Kiszka
bed0997f11 tzdata: Install zone1970.tab
The modern version of zone.tab is required by tzselect e.g.

(From OE-Core rev: de467998ecfa5fa1d2e9dd43a4a3d828cf9ccade)

(From OE-Core rev: c92a783a2d42a6248fc0b982889a9cdc53e6ccd3)

Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
Signed-off-by: Ross Burton <ross.burton@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Signed-off-by: Armin Kuster <akuster808@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-07-27 22:36:44 +01:00
Andrej Valek
9dee4e5650 libxml2: Fix CVE-2017-0663
Fix type confusion in xmlValidateOneNamespace

Comment out code that casts xmlNsPtr to xmlAttrPtr. ID types
on namespace declarations make no practical sense anyway.

Fixes bug 780228

CVE: CVE-2017-0663
(From OE-Core rev: a965be7b6a1d730851b4a3bc8fd534b9b2334227)

(From OE-Core rev: e442e7105ba39ddaed0749614b5ee552f9df2d5a)

Signed-off-by: Andrej Valek <andrej.valek@siemens.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Signed-off-by: Armin Kuster <akuster808@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-07-27 22:36:44 +01:00
Andrej Valek
9d59e7d739 libxml2: Fix CVE-2017-5969
Fix NULL pointer deref in xmlDumpElementContent

Can only be triggered in recovery mode.

Fixes bug 758422

CVE: CVE-2017-5969
(From OE-Core rev: 0cae039cbe513b7998e067f4f3958af2ec65ed1a)

(From OE-Core rev: f0017a7b8b3fc4407e6596156b57aa1183937382)

Signed-off-by: Andrej Valek <andrej.valek@siemens.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Signed-off-by: Armin Kuster <akuster808@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-07-27 22:36:44 +01:00
Andrej Valek
93b0d29184 libxml2: Fix CVE-2017-9049 and CVE-2017-9050
Fix handling of parameter-entity references

There were two bugs where parameter-entity references could lead to an
unexpected change of the input buffer in xmlParseNameComplex and
xmlDictLookup being called with an invalid pointer.

Fixes bug 781205 and bug 781361

CVE: CVE-2017-9049 CVE-2017-9050
(From OE-Core rev: 2300762fef8fc8e3e56fb07fd4076c1deeba0a9b)

(From OE-Core rev: a409c50a09b12caa434b2b06bdcfb6beba43f67f)

Signed-off-by: Andrej Valek <andrej.valek@siemens.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Signed-off-by: Armin Kuster <akuster808@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-07-27 22:36:44 +01:00
Andrej Valek
b611c4c7c0 libxml2: Fix CVE-2017-9047 and CVE-2017-9048
xmlSnprintfElementContent failed to correctly check the available
buffer space in two locations.

Fixes bug 781333 and bug 781701

CVE: CVE-2017-9047 CVE-2017-9048
(From OE-Core rev: bb0af023e811907b4e641b39f654ca921ac8794a)

(From OE-Core rev: d549b8f3836b2ffda5c59a7ae4d955846c558646)

Signed-off-by: Andrej Valek <andrej.valek@siemens.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Signed-off-by: Armin Kuster <akuster808@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-07-27 22:36:44 +01:00
Andrej Valek
b5ea1132a6 libxml2: Avoid reparsing and simplify control flow in xmlParseStartTag2
(From OE-Core rev: 4651afdd457eca06da07331186bf28b98df2eeff)

(From OE-Core rev: 41a5ea683cca3e635565a7a289ba260addfe4b11)

Signed-off-by: Andrej Valek <andrej.valek@siemens.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Signed-off-by: Armin Kuster <akuster808@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-07-27 22:36:43 +01:00
Andrej Valek
3a52b52844 libxml2: Disable LeakSanitizer when running API tests
Makefile.am: Disable LeakSanitizer when running API tests

The autogenerated API tests leak memory.

Upstream-Status: Backported - [https://git.gnome.org/browse/libxml2/commit/?id=ac9a4560ee85b18811ff8ab7791ddfff7b144b0a]
(From OE-Core rev: e3985be0ddb40e8db44422092c875a4e373a6da3)

(From OE-Core rev: 008b4d1c80012dc69da2866a2d26bd1d2b736e6f)

Signed-off-by: Andrej Valek <andrej.valek@siemens.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Signed-off-by: Armin Kuster <akuster808@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-07-27 22:36:43 +01:00
Paul Eggleton
00a859afd0 classes/buildhistory: fix failures collecting output signatures
It's possible for tasks to stage symlinks that point to non-existent
files; an example is ncurses-native.do_populate_sysroot. There wasn't
any error checking here so this broke the build when "task" was included
in BUILDHISTORY_FEATURES. In any case we shouldn't be following symlinks
and getting the sha256sum of the link target - we need concern ourselves
only with the target path, so check if the file is a link and sha256 the
target path instead if it is. If it's neither a regular file nor a
symlink (perhaps a pipe or a device), just skip it.

(From OE-Core rev: f60520d97f53dafe783f61eb58fe249798a1e1be)

(From OE-Core rev: 66a0d184d8f55a8da03de9fedb18d166b80b198b)

Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Signed-off-by: Armin Kuster <akuster808@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-07-27 22:36:43 +01:00
Martin Kelly
5686f4e1fe tcf-agent: kill with USR2 in systemd stop
tcf-agent ignores SIGTERM, so upstream uses USR2 instead. This issue was noticed
by Jan Kiszka and Brian Avery around the same time:

https://patchwork.openembedded.org/patch/139546/
https://patchwork.openembedded.org/patch/139560/

However, these patches fixed only the init scripts, not the systemd service
file. This patch fixes the systemd file.

(From OE-Core rev: 4f8ed1b3bf676a58055ebe01184b3594459a4118)

(From OE-Core rev: a8d25315baf3226e2213e1cfba1d7023ec02a401)

Signed-off-by: Martin Kelly <mkelly@xevo.com>
Signed-off-by: Ross Burton <ross.burton@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-07-20 11:00:23 +01:00
Jan Kiszka
4ba7143744 tcf-agent: Fix daemon termination
The upstream init script uses SIGUSR2 to terminate that daemon because
SIGTERM is ignored. As the killproc function does not support specifying
a signal, switch to start-stop-daemon. Drop the retry loop because
SIGUSR2 is lethal for agent.

(From OE-Core rev: b27d804dd0cbce3e4ed43e7fdfcc4e12c141e78d)

Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
Signed-off-by: Ross Burton <ross.burton@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-07-20 11:00:23 +01:00
Ross Burton
0920b28c93 libgcrypt: fix CVE-2017-7526
Fixes CVE-2017-7526, 'flush+reload side-channel attack on RSA secret keys dubbed
"Sliding right into disaster"'.

(From OE-Core rev: 4442811291ff8b15d5562be0a68a11516183b502)

Signed-off-by: Ross Burton <ross.burton@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-07-19 11:30:22 +01:00
Ross Burton
74bfe85d5c libgcrypt: fix CVE-2017-9526
In libgcrypt before 1.7.7, an attacker who learns the EdDSA session key (from
side-channel observation during the signing process) can easily recover the
long-term secret key. 1.7.7 makes a cipher/ecc-eddsa.c change to store this
session key in secure memory, to ensure that constant-time point operations are
used in the MPI library.

(From OE-Core rev: 6039dbfd981830b5406c25a27ccfae0e5ed016e8)

Signed-off-by: Ross Burton <ross.burton@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-07-19 11:30:22 +01:00
Richard Purdie
6bd890d9e0 build-appliance-image: Update to pyro head revision
(From OE-Core rev: beab5b357cd46094b1c376c47d04e8d0de73e1e3)

Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-07-12 07:06:10 +01:00
Richard Purdie
405517b429 build-appliance: Set to pyro release branch
(From OE-Core rev: 48b61abac098f180c37e11facd32f3bfa007254e)

Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-07-12 07:05:56 +01:00
Richard Purdie
c2ef32ae58 build-appliance-image: Update to pyro head revision
(From OE-Core rev: 3a2b434ea95612ed52ec9edfd809d87cb5c086be)

Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-07-12 00:28:38 +01:00
Kristi Rifenbark
e3ba377698 yocto-project-qs: Updated exit QEMU instructions.
Removed "poweroff" command to exit and replaced
with "Ctrl-C".

(From yocto-docs rev: 9251f7ebaf4898acbf30e4b650393a62ad16cb9a)

Signed-off-by: Kristi Rifenbark <kristi.rifenbark@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-07-12 00:28:04 +01:00
Richard Purdie
16f14397a1 poky.conf: Bump version for 2.3.1 pyro release
(From meta-yocto rev: b26cac5c21b054b2ca6ab1ae2d678ec25f709d0a)

Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-07-12 00:27:46 +01:00
Saul Wold
1382d6ccce mkefidsk: fix bash/dash shell quoting problem
mkefidsk currently writes a startup.nsh with embedded control characters.
This happens because \b etc are control sequences to the shell echo
command when using dash. The resulting startup.nsh causes the bootup
to fail, and the user is dropped into the EFI shell to manually run
startup.nsh.

Patch originally provided by Troy D. Hanson <troy.hanson@jhuapl.edu>

[YOCTO #9665]

(From OE-Core rev: 359722a86580128aeccd05531eff0da4e6971721)

Signed-off-by: Saul Wold <sgw@linux.intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
(cherry picked from commit 008d6cb5bb4969f53a228893c502be8c9420ecb0)
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-07-12 00:26:27 +01:00
California Sullivan
7c27bf2dd8 systemd-boot.bbclass: Add configuration data to secondary EFI partition
The secondary EFI partition is used when booting in EFI mode, and
without the configuration data we don't get any boot targets.

Partial fix to [YOCTO #11503].

(From OE-Core master rev: 84aa7a00810e135fdad3f77bdb1da7d1f5fb8627)

(From OE-Core rev: 915b01258ef426392bb9052c345f952670db4450)

Signed-off-by: California Sullivan <california.l.sullivan@intel.com>
Signed-off-by: Ross Burton <ross.burton@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-07-07 09:19:08 +01:00
Martin Jansa
185f4e7e6e package_manager: flush installed_pkgs file before oe-pkgdata-util uses it
* since this commit:
  commit f5a1013ffa9815f22e13989e2bcb83f966e7ce2c
  Author: Ross Burton <ross.burton@intel.com>
  Date:   Tue Apr 18 16:19:12 2017 +0100

    package_manager: don't race on a file when installing complementary
    packages

  the file isn't closed before oe-pkgdata-util uses it and this
  temporary file might look empty to oe-pkgdata-util, because it
  wasn't flushed yet. Which resulted in almost empty debugfs tarballs
  and no locale packages in regular rootfs.
* without this change:
  124K May 30 07:41 core-image-full-cmdline-raspberrypi3-64-20170530054003-dbg.rootfs.tar.gz
* with this change:
  173M May 30 07:29 core-image-full-cmdline-raspberrypi3-64-20170530052715-dbg.rootfs.tar.gz

(From OE-Core rev: 9b34200048b3d2b477a19b7ddc8d447f873adbb2)

Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
Signed-off-by: Ross Burton <ross.burton@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
(cherry picked from commit 877d38db08aa7060d16405443cf70539c559fe82)
Signed-off-by: Anders Darander <anders@chargestorm.se>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-07-07 09:19:08 +01:00
Max Krummenacher
cc48789276 u-boot-mkimage: fix nativesdk build
If building for nativesdk the wrong rss sysroot is used leading the
following error message.

| ERROR: oe_runmake failed
| In file included from tools/imximage.c:13:0:
| include/image.h:1024:27: fatal error: openssl/evp.h: No such file or directory
|  # include  <openssl/evp.h>

Tools needed on the build host (script/basic/fixdep) and code compiled
for the SDK machine are both built with the build host's compiler,
leading to additinal errors.

Adding CROSS_COMPILE="${HOST_PREFIX}" and using the cross-compiler for
the SDK_ARCH fixes the build error.
The resulting binary in the SDK is working.

(From OE-Core rev: aab5311f3ad9fb9f9e26b18b5fe5e54d8ec14798)

Signed-off-by: Max Krummenacher <max.krummenacher@toradex.com>
Signed-off-by: Ross Burton <ross.burton@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-07-07 09:19:08 +01:00
Richard Purdie
f0d128ea0d Revert "bitbake.conf: Add sdl-config to HOSTTOOLS if using host SDL"
This clearly wasn't tested as the correct variable is ASSUME_PROVIDED.

This reverts commit 91cee06433.

Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-06-27 13:49:45 +01:00
Richard Purdie
c11f1ff584 bitbake: siggen: Make calc_taskhash match get_taskhash for file checksums
The code in these two functions is meant to be equivlanet in behaviour
but isn't. Add in code to ensure files that don't exist are handled
consistently by both functions. Users did report being able to generate
tracebacks otherwise.

(Bitbake rev: 1b66c57d0f8a9bd9f9feb2a85759e18d9a1d674b)

Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-06-27 13:46:50 +01:00
Joshua Lock
18341b9dc9 bitbake: fetch: fix handling of files with incorrect checksums from a premirror
Ensure that when an item fetched from a premirror has an invalid checksum the
fetcher falls back to the usual logic of trying the upstream and any configured
mirrors.

(Bitbake rev: cc52b9b12c60810142252b9cb5d4268e42371b8e)

Signed-off-by: Joshua Lock <joshua.g.lock@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-06-27 13:45:24 +01:00
Changhyeok Bae
9074fb46bc ref-manual: uClibc Replaced by musl from Yocto 2.2
(From yocto-docs rev: 859549a1dbc0b63bc04310a121600ea622509256)

Signed-off-by: Kristi Rifenbark <kristi.rifenbark@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-06-22 09:18:50 +01:00
Scott Rifenbark
9f3cde2467 dev-manual: Fixed a DocBook issue with formatting "bug-id"
I discovered a mis-placed block of DocBook text that was
causing the string "bug-id" to appear in a random spot in the
"Patch Submission Details" section.  Re-ording this block
fixed the problem.

(From yocto-docs rev: 92616f73ce31505e11f3193b1350acc875003649)

Signed-off-by: Scott Rifenbark <srifenbark@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-06-22 09:18:49 +01:00
Scott Rifenbark
ce2707487e sdk-manual: Updated the note for building SDK Installer
For development purposes, static libraries need to be
present only in the SDK. We do not need those static
libraries in the image for most scenarios. So, replace
IMAGE_INSTALL with TOOLCHAIN_TARGET_TASK in the documentation.

I updated the note to reflect this.

Suggested-by: Maxin B. John <maxin.john@intel.com>
(From yocto-docs rev: fd17ac96a44d08f7f2798e69cd923e0726a0754a)

Signed-off-by: Scott Rifenbark <srifenbark@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-06-22 09:18:49 +01:00
Scott Rifenbark
a1f1b7f111 ref-manual: Updated LAYERRECOMMENDS variable
Fixes [YOCTO #11579]

I made some corrections by taking out the fact that BitBake
issues a warning or error if any version mismatches are found.

(From yocto-docs rev: e037858b95a97699c110be3b091db06633c9c44a)

Signed-off-by: Scott Rifenbark <srifenbark@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-06-22 09:18:49 +01:00
Scott Rifenbark
484237aa97 documentation: Prepared 2.3.1 release variables and dates
poky.ent - updated variables for 2.3.1
mega-manual.sed - exchanged "2.3.1" for "2.3" for links
<manual>.xml - updated manual revision tables to use
               "June 2017" as the release date for 2.3.1

(From yocto-docs rev: 01d60d08a0c7371b8f7476f45fca89226caec680)

Signed-off-by: Scott Rifenbark <srifenbark@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-06-22 09:18:49 +01:00
Scott Rifenbark
6f8a652eeb ref-manual: Updated PACKAGECONFIG_CONFARGS variable
Fixes [YOCTO #11600]

Removed the example.  It was not needed.

(From yocto-docs rev: e3610147535c259c49c3dc08289c037ba49c48a1)

Signed-off-by: Scott Rifenbark <srifenbark@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-06-22 09:18:49 +01:00
Scott Rifenbark
bb71e194c5 ref-manual: Added warning to native.bbclass for naming convention
Fixes [YOCTO #11411]

Added a naming convention warning to the native.bbclass description
that is similar to the existing warning used in the description for
the nativesdk.bbclass.

(From yocto-docs rev: ece69399decb54045c974e9e537286eb820fde61)

Signed-off-by: Scott Rifenbark <srifenbark@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-06-22 09:18:49 +01:00
Scott Rifenbark
003d869116 ref-manual: Updated PACKAGECONFIG_CONFARGS variable description
Fixes [YOCTO #11600]

"configure" and "cmake" are not do_* tasks of BitBake.  I updated
the formatting of these programs and removed links that were to
the tasks in the reference manual.

(From yocto-docs rev: a53d766976ec77a2706014d114bef698d3b6f710)

Signed-off-by: Scott Rifenbark <srifenbark@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-06-22 09:18:49 +01:00
Scott Rifenbark
2bf0932d7b yocto-project-qs: Updated the YP Development Flow figure
The figure that Scott Garman used for an old video cast is
much more appealing to the eye than the giant, square beast
the current manual was using.  I have replaced the image.
The image is technically the same.

Because the mega-manual has to use a duplicate figure, I
put the new PNG files in the Figures directory for both the
yocto-project-qs and mega-manual books.

(From yocto-docs rev: 10985cadfecea0096412df049b3457bc0297c4bf)

Signed-off-by: Scott Rifenbark <srifenbark@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-06-22 09:18:49 +01:00
Scott Rifenbark
5d32c4604c dev-manual, sdk-manual: Fixed link to Eclipse section
The YP doc set was using a link to an out-dated video that
showed how to configure and run Eclipse.  The video was very
old and Jessica suggested just removing it.  So, I replaced
all occurrences of the link to the up-to-date appendix in the
SDK manual that provides information on the latest supported
version of the Eclipse IDE.

(From yocto-docs rev: a414addb427337dc76a05cf3f56bf8aeec1a7c1b)

Signed-off-by: Scott Rifenbark <srifenbark@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-06-22 09:18:49 +01:00
Scott Rifenbark
6edb524b26 dev-manual: Fixed broken link into the setting up Eclipse section
The link to the section on how to set up Eclipse had been broken
for a while.  I fixed the link so that it goes to the appropriate
section (appendix) in the SDK manual.

(From yocto-docs rev: ab2af9c0b237285c6989832db306a42957a6187d)

Signed-off-by: Scott Rifenbark <srifenbark@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-06-22 09:18:49 +01:00
Scott Rifenbark
3f4cddf4eb ref-manual: Added LAYERRECOMMENDS variable description
Fixes [YOCTO #11579]

Added a new description for the LAYERRECOMMENDS variable.

(From yocto-docs rev: 207c69e218507b384dbd017367dfe392fd45296e)

Signed-off-by: Scott Rifenbark <srifenbark@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-06-22 09:18:49 +01:00
Scott Rifenbark
e9a2e5ae36 ref-manual: Updated LAYERDEPENDS variable description
Fixes [YOCTO #11579]

The syntax for specifying a layer version was incorrect. I
have added an explanation for the correct syntax and provided
an example.

(From yocto-docs rev: 83c97473defbbac35ebca81f4ef69289f3dd8789)

Signed-off-by: Scott Rifenbark <srifenbark@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-06-22 09:18:49 +01:00
Scott Rifenbark
aade3895d4 ref-manual: Updated image-live.bbclass description
Fixes [YOCTO #9001]

Updated the image-live class description to specifically mention
creating *.iso and *.hddimg images as "live" images.  Provided more
explanation about usage through the NOISO and NOHDD variables.

Also, provided a cross-referencing link back to the updated
image-live class from the EFI_PROVIDERS variable.

(From yocto-docs rev: 10c81adc26bd0a7a8952eb362f958f92566d42db)

Signed-off-by: Scott Rifenbark <srifenbark@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-06-22 09:18:49 +01:00
Scott Rifenbark
4fe09a11ee ref-manual: Enhanced the glossary description for INHERIT
Fixes [YOCTO #11498]

I enhanced the description of the INHERIT variable's glossary
description to provide more detail.  I also included a link into the
section of the BB manual where INHERIT is described.

(From yocto-docs rev: ed44df6342ee20720aeee2dd8eae944db767023e)

Signed-off-by: Scott Rifenbark <srifenbark@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-06-22 09:18:49 +01:00
Joshua Lock
726e26ae5a ref-manual: Fixed typo for "Installation"
(From yocto-docs rev: 7abd2ff4948a25da7de85df102fb4e54920b3072)

Signed-off-by: Scott Rifenbark <srifenbark@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-06-22 09:18:49 +01:00
Richard Purdie
f01b909a26 package_ipk: Clean up Source entry in ipk packages
There is the potential for sensitive information to leak through the urls
there and removing it brings this into the behavior of the other package
backends since filtering it is likely error prone.

Since ipks don't appear to be generated at all if we don't set this, set
the field to the recipe name used (basename only, no paths). This avoids
information leaking. We may want to drop the field if opkg can allow that
at a future point but the recipe name is a suitable identifier for now.

Reported-by: Andrej Valek <andrej.valek@siemens.com>
(From OE-Core rev: 0b5e0d072f93a958e4211a8aeb2fd8cc3c25cc21)

Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-06-16 10:21:02 +01:00
Saul Wold
5bb92a3166 mkelfimage: Fix broken patch when building native
A change occured about a year ago that broke the native build, fix
that patch

[YOCTO #11590]

(From OE-Core rev: ccd8e2cf7157c941ebacc6be306c1dbe2ec31e86)

Signed-off-by: Saul Wold <sgw@linux.intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-06-14 11:57:47 +01:00
Marek Vasut
4ba0cc04af automake: Backport perl 5.22 fix
Backport 13f00eb4493c "automake: port to Perl 5.22 and later"
from automake upstream to fix build with perl 5.22 .

(From OE-Core rev: ab0e298ec2c155739565f1cde76639855ba7bba0)

Signed-off-by: Marek Vasut <marex@denx.de>
Signed-off-by: Ross Burton <ross.burton@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-06-14 11:56:49 +01:00
Jonathan Liu
91cee06433 bitbake.conf: Add sdl-config to HOSTTOOLS if using host SDL
If ASSUME_PROVIDES contains libsdl-native, we need to add sdl-config
to HOSTTOOLS to allow access to the host sdl-config.

(From OE-Core rev: ed5a602d3eb418beb2f9731fda96415ed16efff2)

Signed-off-by: Jonathan Liu <net147@gmail.com>
Signed-off-by: Ross Burton <ross.burton@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-06-14 11:50:12 +01:00
Daniel Díaz
c63903443b piglit: add patches for unbuildable surfaceless Mesa test
[Backported from master.]

Some EGL implementations do not actually ship all Khronos-
extensions. As it turns out, the Mali 450 driver does not
include any of the following symbols, used by the
egl_mesa_platform_surfaceless.c spec test:
* eglGetPlatformDisplay
* eglCreatePlatformPixmapSurface
* eglCreatePlatformWindowSurface

The Right Thing To Do was to obtain the implementation of
these functions (via eglGetProcAddress), as is provided
by their EXT counterparts. These are guaranteed to exist
since they are required by EGL_EXT_platform_base.

(From OE-Core rev: 903a051d47e550553aa9d6d9c38c43737f376cfe)

Signed-off-by: Daniel Díaz <daniel.diaz@linaro.org>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-06-12 17:03:17 +01:00
Daniel Díaz
262af7bf2d piglit: add patch for lack of gbm_bo_map
[Backported from master.]

[Piglit Bug #100978] -- https://bugs.freedesktop.org/show_bug.cgi?id=100978

When linking against Mali 450 r6, errors like the following
can be seen:
  ../../../../lib/libpiglitutil_gl.so.0: undefined reference to `gbm_bo_unmap'
  ../../../../lib/libpiglitutil_gl.so.0: undefined reference to `gbm_bo_map'
  collect2: error: ld returned 1 exit status
  make[2]: *** [bin/point-sprite] Error 1

This is due to gbm_bo_map() and gbm_bo_unmap() being recently
added but not yet implemented by all graphics drivers.

Instead of relying on GBM's version, actually try to link
against those symbols.

(From OE-Core rev: 484db109df742aafa8efc41dc3a8d31386d9b2a3)

Signed-off-by: Daniel Díaz <daniel.diaz@linaro.org>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-06-12 17:03:17 +01:00
Daniel Díaz
a99c56fb6d piglit: depend on virtual/egl
[Backported from master.]

While building for Hikey using Mali 450 driver (r6p0), an
error like the following appears while linking:

  [  1%] Linking C shared library ../../../../lib/libpiglitutil.so
  [...]
  [...]/aarch64-linaro-linux/gcc/aarch64-linaro-linux/6.3.1/ld: cannot find -lEGL
  collect2: error: ld returned 1 exit status
  make[2]: *** [lib/libpiglitutil.so.0] Error 1

Mesa generally provides virtual/egl (along with virtual/libgl,
which satisfies Piglit's current DEPENDS) but that is not the
implementation to use with Mali.

(From OE-Core rev: 5bfa4ccdba64d814cc480f22ccd8c493d87d36e7)

Signed-off-by: Daniel Díaz <daniel.diaz@linaro.org>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-06-12 17:03:17 +01:00
Jonathan Liu
bebb3d36f8 image-vm: Avoid use of fold, tac and paste commands for DISK_SIGNATURE
These commands are not whitelisted by the HOSTTOOLS variable which
silently prevents the MBR disk signature from being written to the
image.

Reported-by: Michael Davis <michael.davis@essvote.com>
(From OE-Core rev: 5527af688f6ccaacd7ec24d29425d0c007d5341c)

Signed-off-by: Jonathan Liu <net147@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-06-12 17:02:36 +01:00
Joshua Lock
607bd9ec39 kernel: predefine KBUILD_BUILD_USER and KBUILD_BUILD_HOST
By exporting KBUILD_BUILD_USER with a pre-defined value we improve the
reproducibility of the kernel and remove the requirement for whoami in the
HOSTTOOLS.
KBUILD_BUILD_HOST also helps improve the reproducibility of the kernel.

For more kernel reproducibility options see:
https://lwn.net/Articles/437864/

(From OE-Core rev: 357801a491efc067c6d4bd9a2bfa6fff460357aa)

Signed-off-by: Joshua Lock <joshua.g.lock@intel.com>
Signed-off-by: Ross Burton <ross.burton@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-06-11 23:00:58 +01:00
Yuanjie Huang
fa7a1f2115 binutils: fix CVE-2017-7210
CVE: CVE-2017-7210

[BZ 21157] -- https://sourceware.org/bugzilla/show_bug.cgi?id=21157

PR binutils/21157: Fix handling of corrupt STABS enum type strings.

(From OE-Core rev: d12a99cba6c9dc9e1f6bc3a7ca8057f07e9cb950)

(From OE-Core rev: 4ca4e781f1c62696f896d7027081f759798794aa)

Signed-off-by: Yuanjie Huang <yuanjie.huang@windriver.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-06-05 23:30:22 +01:00
Yuanjie Huang
e28778ee72 binutils: fix CVE-2017-7209 in readelf
CVE: CVE-2017-7209

[BZ 21135] -- https://sourceware.org/bugzilla/show_bug.cgi?id=21135

PR binutils/21135: Fix invalid read of section contents whilst processing
a corrupt binary.

(From OE-Core rev: 2df642ca0a1e4a4e6616729018cf32d2108cabb2)

(From OE-Core rev: b262000162cb4e18421dd85bf5216c9fa3bdbf15)

Signed-off-by: Yuanjie Huang <yuanjie.huang@windriver.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-06-05 23:30:22 +01:00
Fan Xin
7d7ac87831 libxslt: Fix CVE-2017-5029
Backport upstream patch to fix CVE-2017-5029.

(From OE-Core rev: 5266e74c990df1cf965d162d9695eb5a698883ae)

(From OE-Core rev: 172f76a1a43921d92a385d6d123dffaf27eb368f)

Signed-off-by: Fan Xin <fan.xin@jp.fujitsu.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-06-05 23:30:22 +01:00
Catalin Enache
30a1a8e448 ghostscript: CVE-2016-7977, CVE-2016-7978, CVE-2016-7979, CVE-2017-9216
Ghostscript before 9.21 might allow remote attackers to bypass the SAFER
mode protection mechanism and consequently read arbitrary files via the
use of the .libfile operator in a crafted postscript document.

Use-after-free vulnerability in Ghostscript 9.20 might allow remote
attackers to execute arbitrary code via vectors related to a reference
leak in .setdevice.

Ghostscript before 9.21 might allow remote attackers to bypass the SAFER
mode protection mechanism and consequently execute arbitrary code by
leveraging type confusion in .initialize_dsc_parser.

libjbig2dec.a in Artifex jbig2dec 0.13, as used in MuPDF and Ghostscript,
has a NULL pointer dereference in the jbig2_huffman_get function in
jbig2_huffman.c. For example, the jbig2dec utility will
crash (segmentation fault) when parsing an invalid file.

References:
https://nvd.nist.gov/vuln/detail/CVE-2016-7977
https://nvd.nist.gov/vuln/detail/CVE-2016-7978
https://nvd.nist.gov/vuln/detail/CVE-2016-7979
https://nvd.nist.gov/vuln/detail/CVE-2017-9216

Upstream patches:
http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=8abd22010eb4db0fb1b10e430d5f5d83e015ef70
http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=6f749c0c44e7b9e09737b9f29edf29925a34f0cf
http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=875a0095f37626a721c7ff57d606a0f95af03913
http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=3ebffb1d96ba0cacec23016eccb4047dab365853

(From OE-Core rev: 584dfa2f780d5785aaff01f84fbabc18b3478d76)

(From OE-Core rev: 6fed7cd6077c46ad2213226d4675fad9b10ab024)

Signed-off-by: Catalin Enache <catalin.enache@windriver.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-06-05 23:30:22 +01:00
Catalin Enache
31e9be1981 ghostscript: CVE-2016-8602, CVE-2017-7975
The .sethalftone5 function in psi/zht2.c in Ghostscript before 9.21 allows remote
attackers to cause a denial of service (application crash) or possibly execute
arbitrary code via a crafted Postscript document that calls .sethalftone5 with an
empty operand stack.

Artifex jbig2dec 0.13, as used in Ghostscript, allows out-of-bounds writes because
of an integer overflow in the jbig2_build_huffman_table function in jbig2_huffman.c
during operations on a crafted JBIG2 file, leading to a denial of service (application
crash) or possibly execution of arbitrary code.

References:
https://nvd.nist.gov/vuln/detail/CVE-2016-8602
https://nvd.nist.gov/vuln/detail/CVE-2017-7975

Upstream patches:
http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=f5c7555c303
http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=5e57e483298

(From OE-Core rev: 8f919c2df47ca93132f21160d919b6ee2207d9a6)

(From OE-Core rev: 6040b8735b79397bf49a2154f81e9aab34c15413)

Signed-off-by: Catalin Enache <catalin.enache@windriver.com>
Signed-off-by: Ross Burton <ross.burton@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-06-05 23:30:21 +01:00
Yuanjie Huang
829e2027b6 binutils: fix CVE-2017-6969 in readelf
CVE: CVE-2017-6969
[BZ 21156] -- https://sourceware.org/bugzilla/show_bug.cgi?id=21156

PR binutils/21156: Fix illegal memory accesses in readelf when
ing a corrupt binary.
PR binutils/21156: Fix another memory access error in readelf when
parsing a corrupt binary.

(From OE-Core rev: de04c9811f7ce5179ba261bd8eae921d7873d6cd)

(From OE-Core rev: ae0e01474623969dc193687d59fb5a65ab4d42bc)

Signed-off-by: Yuanjie Huang <yuanjie.huang@windriver.com>
Signed-off-by: Ross Burton <ross.burton@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-06-05 23:30:21 +01:00
Fan Xin
c2c48f2645 rpcbind: Fix CVE-2017-8779
This vulnerability is also called "rpcbomb".
Backport upstream patch to fix this vulnerability.

CVE: CVE-2017-8779

(From OE-Core rev: 7936c9451eb4c376a78a0ac7461d1b2430c7f1f3)

(From OE-Core rev: bab6667d44df185b4433bcd1c283105966383844)

Signed-off-by: Fan Xin<fan.xin@jp.fujitsu.com>
Signed-off-by: Ross Burton <ross.burton@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-06-05 23:30:21 +01:00
Fan Xin
13f7fc4655 binutils: Fix CVE-2017-8392
Backport upsream commit to fix CVE-2017-8392

CVE: CVE-2017-8392

[BZ 21409] -- https://sourceware.org/bugzilla/show_bug.cgi?id=21409

        PR 21409, segfault in _bfd_dwarf2_find_nearest_line

        PR 21409
        * dwarf2.c (_bfd_dwarf2_find_nearest_line): Don't segfault when
        no symbols.

(From OE-Core rev: dff01b827c87ae135a1d5511b1efbdad01c0eaee)

(From OE-Core rev: c5a5017ce710108c61dba0e0af72bb72a9419701)

Signed-off-by: Fan Xin <fan.xin@jp.fujitsu.com>
Signed-off-by: Ross Burton <ross.burton@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-06-05 23:30:21 +01:00
Chen Qi
d2586b6fde cve-check.bbclass: make warning contain CVE IDs
When warning users about unpatched CVE, we'd better put CVE IDs into
the warning message, so that it would be more straight forward for the
user to know which CVEs are not patched.

So instead of:
  WARNING: gnutls-3.5.9-r0 do_cve_check: Found unpatched CVE, for more information check /path/to/workdir/cve/cve.log.
We should have:
  WARNING: gnutls-3.5.9-r0 do_cve_check: Found unpatched CVE (CVE-2017-7869), for more information check /path/to/workdir/cve/cve.log.

(From OE-Core rev: ad46069e7b58f2fba373131716f28407816fa1a6)

(From OE-Core rev: e0e1414a4574d4165a8dc5d0d9d0d5b5a660355f)

Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
Signed-off-by: Ross Burton <ross.burton@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-06-05 23:30:21 +01:00
Chen Qi
bc45d3a86b cve-check-tool: backport a patch to make CVE checking work
CVE checking in OE didn't work as do_populate_cve_db failed with the following
error message.

  [snip]/downloads/CVE_CHECK/nvdcve-2.0-2002.xml is not consistent

Backport a patch to fix this error.

(From OE-Core rev: ee55b5685aaa4be92d6d51f8641a559d4e34ce64)

(From OE-Core rev: e0f0a7283c597e783b69aac2c8e8a7663b70262d)

Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
Signed-off-by: Ross Burton <ross.burton@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-06-05 23:30:21 +01:00
Ross Burton
f375c30a17 oeqa/selftest: lock down Meson git revision for reliability
The test_recipetool_create_github test fetches HEAD of the repository so
upstream changes can (and do) break the test.  Avoid these problems by passing
the rev= argument in the URL to lock the checkout to the same version that is
fetched in the github_tarball test.

Also pass the commands to runCmd() as a list instead of a string, the semicolon
in the URL needs more quotes if the shell is involved and passing a list
bypasses the shell entirely.

(From OE-Core rev: 5f02b4300fb2ed54270aede54d30317ba757f587)

Signed-off-by: Ross Burton <ross.burton@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-06-05 17:59:57 +01:00
Paul Eggleton
645467e03f scriptutils: fix fetch_uri() to work with RSS
Since recipe-specific sysroots were implemented, devtool add and devtool
upgrade operations that fetch from a URL that requires native sysroot
dependencies will fail to work as there is no recipe-specific sysroot
set up for them during fetching. An example was any URL pointing to a
tarball compressed with xz, e.g. devtool upgrade on gnutls.

The most expedient way to fix this is to set up a dummy recipe-specific
sysroot to use for the fetch/unpack operations. We do this in the same
manner as bitbake -b does, so we're just taking all of the sysroot
components available and creating a sysroot from those rather than
ensuring the correct dependencies are there - this means that we're
still going to have problems if e.g. xz-native hasn't been built yet,
but that issue will be trickier to solve and is tracked separately.

Fixes [YOCTO #11474].

(From OE-Core master rev: 559151e783759af78b5cdd76cdbb9ce325a391e6)

(From OE-Core rev: 9e7905c7bada1bafda661fc4a6177afeef0f5015)

Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com>
Signed-off-by: Ross Burton <ross.burton@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-05-30 00:26:17 +01:00
Chang Rebecca Swee Fun
31389f8b00 cryptodev-linux: update SRC_URI
Gna! project announced that the download site from gna.org HTTP server
will soon be closing down. We have verified that the site is no longer
accessible without network proxy cache. We need to update SRC_URI to
point to new alternative (nwl.cc HTTP server) in order to avoid fetcher
issues in future.

[YOCTO #11575]

(From OE-Core rev: 3195f7e68eb5cfb2af3506fe4b0dcb2f8cd9ee10)

Signed-off-by: Chang Rebecca Swee Fun <rebecca.swee.fun.chang@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-05-27 14:52:29 +01:00
Zhixiong Chi
e5aa1ac236 bash: CVE-2016-0634
A vulnerability was found in a way bash expands the $HOSTNAME.
Injecting the hostname with malicious code would cause it to run
each time bash expanded \h in the prompt string.

Porting patch from <https://ftp.gnu.org/gnu/bash/bash-4.3-patches/
bash43-047> to solve CVE-2016-0634

CVE: CVE-2016-0634

(From OE-Core rev: 7dd6aa1a4bf6e9fc8a1998cda6ac5397bb5cd5cb)

(From OE-Core rev: a4b37b05140b549960baef49237ce3316e84a041)

Signed-off-by: Zhixiong Chi <zhixiong.chi@windriver.com>
Signed-off-by: Ross Burton <ross.burton@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-05-18 13:17:44 +01:00
Richard Purdie
abae42362a staging: Allow BB_LIMITEDDEPS to avoid BB_TASKDEPDATA
In the limited dependency case we don't use any of the data from
BB_TASKDEPDATA. Restructure the code so this variable doesn't have
to be set. This allows the function to be called from other contexts
without creating artificial constructs. There should be no functional
change, behaviour remains unchanged.

(From OE-Core rev: 71e5243e3ebadb90b45fe418dac3eaa2c1b896bd)

(From OE-Core rev: e962e257f4c124869953d1fbb3da7dbf564f818a)

Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Signed-off-by: Ross Burton <ross.burton@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-05-18 13:17:44 +01:00
Richard Purdie
78747cc912 sstate: Ensure native/cross recipes have relocation of HOSTTOOLS_DIR
The previous change to relocate HOSTTOOLS wasn't complete as some files,
particularly in gcc stashed build directories were not being correctly
relocated. This patch addresses the issue.

(From OE-Core rev: 21dd36cc12a033b012544c5d15a6f8afd84dabc9)

(From OE-Core rev: 64c2f8acd02e0e5dca234b36a2a7097c0c16f7c2)

Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Signed-off-by: Ross Burton <ross.burton@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-05-18 13:17:44 +01:00
Richard Purdie
d31bee70dd python.inc: Fix python2/3 hosttools path references
Both native and target versions of this file reference mkdir and install
in hosttools paths. Use the version from PATH instead.

(From OE-Core rev: 080197bf3bdf612da8104c2ae7f0b2c8dea32a0b)

(From OE-Core rev: 8e3134953edfc88bf3d135b5dc00d361f84b5f37)

Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Signed-off-by: Ross Burton <ross.burton@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-05-18 13:17:43 +01:00
Richard Purdie
901d3880bf rpm: Ensure macros file doesn't reference HOSTTOOLS
Currently the file encodes full paths to various host tools in the
HOSTTOOLS directory which is bad in native and target cases. We can
simply use the versions from PATH quite safely in OE.

(From OE-Core rev: be901200d94beaa35e1d05eb502b117b3b523609)

(From OE-Core rev: 2a12c159aae9877a05e0ba023de278cdca59ac45)

Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Signed-off-by: Ross Burton <ross.burton@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-05-18 13:17:43 +01:00
5479 changed files with 658122 additions and 116 deletions

20
.gitignore vendored
View File

@@ -1,14 +1,12 @@
*.pyc
*.pyo
/*.patch
/.repo/
/build*/
pyshtables.py
pstage/
scripts/oe-git-proxy-socks
sources/
meta-*/
buildtools/
!meta-skeleton
!meta-selftest
hob-image-*.bb
@@ -20,20 +18,10 @@ hob-image-*.bb
!meta-yocto
!meta-yocto-bsp
!meta-yocto-imported
/documentation/*/eclipse/
/documentation/*/*.html
/documentation/*/*.pdf
/documentation/*/*.tgz
/bitbake/doc/bitbake-user-manual/bitbake-user-manual.html
/bitbake/doc/bitbake-user-manual/bitbake-user-manual.pdf
/bitbake/doc/bitbake-user-manual/bitbake-user-manual.tgz
documentation/user-manual/user-manual.html
documentation/user-manual/user-manual.pdf
documentation/user-manual/user-manual.tgz
pull-*/
bitbake/lib/toaster/contrib/tts/backlog.txt
bitbake/lib/toaster/contrib/tts/log/*
bitbake/lib/toaster/contrib/tts/.cache/*
bitbake/lib/bb/tests/runqueue-tests/bitbake-cookerdaemon.log
_toaster_clones/
downloads/
sstate-cache/
toaster.sqlite
.vscode/
bitbake/lib/toaster/contrib/tts/.cache/*

2
.templateconf Normal file
View File

@@ -0,0 +1,2 @@
# Template settings
TEMPLATECONF=${TEMPLATECONF:-meta-poky/conf}

14
LICENSE Normal file
View File

@@ -0,0 +1,14 @@
Different components of OpenEmbedded are under different licenses (a mix
of MIT and GPLv2). Please see:
meta/COPYING.GPLv2 (GPLv2)
meta/COPYING.MIT (MIT)
meta-selftest/COPYING.MIT (MIT)
meta-skeleton/COPYING.MIT (MIT)
All metadata is MIT licensed unless otherwise stated. Source code
included in tree for individual recipes is under the LICENSE stated in
the associated recipe (.bb file) unless otherwise stated.
License information for any other files is either explicitly stated
or defaults to GPL version 2.

144
README
View File

@@ -1,114 +1,58 @@
The poky repository master branch is no longer being updated.
Poky
====
You can either:
Poky is an integration of various components to form a complete prepackaged
build system and development environment. It features support for building
customised embedded device style images. There are reference demo images
featuring a X11/Matchbox/GTK themed UI called Sato. The system supports
cross-architecture application development using QEMU emulation and a
standalone toolchain and SDK with IDE integration.
a) switch to individual clones of bitbake, openembedded-core, meta-yocto and yocto-docs
Additional information on the specifics of hardware that Poky supports
is available in README.hardware. Further hardware support can easily be added
in the form of layers which extend the systems capabilities in a modular way.
https://docs.yoctoproject.org/dev/dev-manual/poky-manual-setup.html
As an integration layer Poky consists of several upstream projects such as
BitBake, OpenEmbedded-Core, Yocto documentation and various sources of information
e.g. for the hardware support. Poky is in turn a component of the Yocto Project.
b) use the new bitbake-setup
The Yocto Project has extensive documentation about the system including a
reference manual which can be found at:
http://yoctoproject.org/documentation
https://docs.yoctoproject.org/bitbake/dev/bitbake-user-manual/bitbake-user-manual-environment-setup.html
OpenEmbedded-Core is a layer containing the core metadata for current versions
of OpenEmbedded. It is distro-less (can build a functional image with
DISTRO = "nodistro") and contains only emulated machine support.
You can find more information in our documentation: https://docs.yoctoproject.org/
For information about OpenEmbedded, see the OpenEmbedded website:
http://www.openembedded.org/
Note that "poky" the distro setting is still available in meta-yocto as
before and we continue to use and maintain that.
Where to Send Patches
=====================
Long live Poky!
As Poky is an integration repository (built using a tool called combo-layer),
patches against the various components should be sent to their respective
upstreams:
bitbake:
Git repository: http://git.openembedded.org/bitbake/
Mailing list: bitbake-devel@lists.openembedded.org
documentation:
Git repository: http://git.yoctoproject.org/cgit/cgit.cgi/yocto-docs/
Mailing list: yocto@yoctoproject.org
meta-poky, meta-yocto-bsp:
Git repository: http://git.yoctoproject.org/cgit/cgit.cgi/meta-yocto(-bsp)
Mailing list: poky@yoctoproject.org
Some further information on the background of this change follows. The
details are taken from:
https://lists.openembedded.org/g/openembedded-architecture/message/2179
Everything else should be sent to the OpenEmbedded Core mailing list. If in
doubt, check the oe-core git repository for the content you intend to modify.
Before sending, be sure the patches apply cleanly to the current oe-core git
repository.
TLDR: People have complained about the combo-layer built poky
repository for years. It was meant to be a temporary thing, we now have
an alternative and I'm therefore doing what I promised I'd do. Change
is tough, things may break but this is the right point to at least try
it.
I'd like to note that:
* setting up builds with a separate oe-core and bitbake clone
works as it always has done
* you can change your CI just to use those two repos instead of poky
* bitbake-setup isn't mandatory, it will just be what the yocto-
docs presents to users
* we don't have to stop maintaining the poky repository
however nobody will test the new approach/code unless we do
* we are optionally exposing sstate mirrors in the new config
* we are also exposing config fragments to users
* poky as a DISTRO in meta-yocto remains
A bit more about the history and background for those who are
interested and then some FAQs:
Back around 2010 when we split up openembedded-classic and started
developing layers, we made the artificial "poky" repository construct
as a way to let people easily and quickly get started with the project.
without cloning and managing multiple repositories. Layers were a new
idea with lots of rough edges. kas didn't exist, I think repo was only
just created and it was a different world. For us, it meant hacking up
a quick tool, "combo-layer" and it was really a temporary solution to
fill a gap and it was at least as functional as repo of the era. It was
assumed we'd work it out properly in the future.
At developer meetings there are inevitable questions about why
poky/combo-layer exist and few seem to actually like/support it. There
are continual questions about why a tool doesn't exist or why we don't
adopt one too.
15 years later, a bit longer than we might have thought, we are finally
in a position where there may be a viable way forward to change.
It has taken us a bit of time to get to this point. I wrote the
original description of something like bitbake-setup about 7-8 years
ago. I shared it privately with a few people, the review feedback
stopped me pushing it further as I simply did not have the bandwidth.
We were fortunate to get funding from the Sovereign Tech Fund to start
the work and whilst I'd probably prefer to avoid the issue, the time
had come to start. Since then, Alexander Kanavin has put a lot of work
into getting it to the point where it would be possible to switch. A
huge thanks to him for getting this to the current point.
Why not use kas/submodules/repo?
This topic has been discussed in depth several times. Very roughly,
these are either difficult to focus on our use cases or have specific
designs and intent which we as a project would struggle to influence.
We are taking significant influence from some of them but also trying
to build something where we can benefit from tight direct integration
with bitbake and the metadata. For example fragment support is generic
and hopefully something other approaches can also benefit from. We want
to provide something we can switch the projects docs and autobuilder to
which we can control and develop as we need it to. We are not aiming to
force anyone to switch, you can use whichever tool you want.
Can we not keep poky [repository master branch] around?
If we do that, nobody will use the new tooling and it will be a
disaster as issues won't get resolved. We need our CI to use the same
thing we promote to our new and experienced users. We need this new
tooling to be usable by our experienced developers too. We have tried
for months to get people to try it and they simply don't. Making a
release with it won't change much either. It needs people using it and
for that, poky has to stop being updated.
What happens to poky [repository]?
The LTS branches continue their lifetime as planned. For master, I'll
probably put a final commit in changing to just a README which points
people at the bitbake-setup changes and explains what happened.
What are the timelines? Why now?
If we're going to make a change, we really want this in the next LTS
release, which is April 2026. We only have one release before that
which is now, October 2025. We therefore need to switch now, and then
give us time to update docs, fix issues that arise and so on and have
it in a release cycle. Whilst it means delaying the Oct 2025 release
slightly, that is the right thing to do in the context of the bigger
picture.
Git repository: http://git.openembedded.org/openembedded-core/
Mailing list: openembedded-core@lists.openembedded.org
Note: The scripts directory should be treated with extra care as it is a mix of
oe-core and poky-specific files.

429
README.hardware Normal file
View File

@@ -0,0 +1,429 @@
Poky Hardware README
====================
This file gives details about using Poky with the reference machines
supported out of the box. A full list of supported reference target machines
can be found by looking in the following directories:
meta/conf/machine/
meta-yocto-bsp/conf/machine/
If you are in doubt about using Poky/OpenEmbedded with your hardware, consult
the documentation for your board/device.
Support for additional devices is normally added by creating BSP layers - for
more information please see the Yocto Board Support Package (BSP) Developer's
Guide - documentation source is in documentation/bspguide or download the PDF
from:
http://yoctoproject.org/documentation
Support for physical reference hardware has now been split out into a
meta-yocto-bsp layer which can be removed separately from other layers if not
needed.
QEMU Emulation Targets
======================
To simplify development, the build system supports building images to
work with the QEMU emulator in system emulation mode. Several architectures
are currently supported:
* ARM (qemuarm)
* x86 (qemux86)
* x86-64 (qemux86-64)
* PowerPC (qemuppc)
* MIPS (qemumips)
Use of the QEMU images is covered in the Yocto Project Reference Manual.
The appropriate MACHINE variable value corresponding to the target is given
in brackets.
Hardware Reference Boards
=========================
The following boards are supported by the meta-yocto-bsp layer:
* Texas Instruments Beaglebone (beaglebone)
* Freescale MPC8315E-RDB (mpc8315e-rdb)
For more information see the board's section below. The appropriate MACHINE
variable value corresponding to the board is given in brackets.
Reference Board Maintenance
===========================
Send pull requests, patches, comments or questions about meta-yocto-bsps to poky@yoctoproject.org
Maintainers: Kevin Hao <kexin.hao@windriver.com>
Bruce Ashfield <bruce.ashfield@windriver.com>
Consumer Devices
================
The following consumer devices are supported by the meta-yocto-bsp layer:
* Intel x86 based PCs and devices (genericx86)
* Ubiquiti Networks EdgeRouter Lite (edgerouter)
For more information see the device's section below. The appropriate MACHINE
variable value corresponding to the device is given in brackets.
Specific Hardware Documentation
===============================
Intel x86 based PCs and devices (genericx86*)
=============================================
The genericx86 and genericx86-64 MACHINE are tested on the following platforms:
Intel Xeon/Core i-Series:
+ Intel NUC5 Series - ix-52xx Series SOC (Broadwell)
+ Intel NUC6 Series - ix-62xx Series SOC (Skylake)
+ Intel Shumway Xeon Server
Intel Atom platforms:
+ MinnowBoard MAX - E3825 SOC (Bay Trail)
+ MinnowBoard MAX - Turbot (ADI Engineering) - E3826 SOC (Bay Trail)
- These boards can be either 32bot or 64bit modes depending on firmware
- See minnowboard.org for details
+ Intel Braswell SOC
and is likely to work on many unlisted Atom/Core/Xeon based devices. The MACHINE
type supports ethernet, wifi, sound, and Intel/vesa graphics by default in
addition to common PC input devices, busses, and so on.
Depending on the device, it can boot from a traditional hard-disk, a USB device,
or over the network. Writing generated images to physical media is
straightforward with a caveat for USB devices. The following examples assume the
target boot device is /dev/sdb, be sure to verify this and use the correct
device as the following commands are run as root and are not reversable.
USB Device:
1. Build a live image. This image type consists of a simple filesystem
without a partition table, which is suitable for USB keys, and with the
default setup for the genericx86 machine, this image type is built
automatically for any image you build. For example:
$ bitbake core-image-minimal
2. Use the "dd" utility to write the image to the raw block device. For
example:
# dd if=core-image-minimal-genericx86.hddimg of=/dev/sdb
If the device fails to boot with "Boot error" displayed, or apparently
stops just after the SYSLINUX version banner, it is likely the BIOS cannot
understand the physical layout of the disk (or rather it expects a
particular layout and cannot handle anything else). There are two possible
solutions to this problem:
1. Change the BIOS USB Device setting to HDD mode. The label will vary by
device, but the idea is to force BIOS to read the Cylinder/Head/Sector
geometry from the device.
2. Use a ".wic" image with an EFI partition
a) With a default grub-efi bootloader:
# dd if=core-image-minimal-genericx86-64.wic of=/dev/sdb
b) Use systemd-boot instead
- Build an image with EFI_PROVIDER="systemd-boot" then use the above
dd command to write the image to a USB stick.
Texas Instruments Beaglebone (beaglebone)
=========================================
The Beaglebone is an ARM Cortex-A8 development board with USB, Ethernet, 2D/3D
accelerated graphics, audio, serial, JTAG, and SD/MMC. The Black adds a faster
CPU, more RAM, eMMC flash and a micro HDMI port. The beaglebone MACHINE is
tested on the following platforms:
o Beaglebone Black A6
o Beaglebone A6 (the original "White" model)
The Beaglebone Black has eMMC, while the White does not. Pressing the USER/BOOT
button when powering on will temporarily change the boot order. But for the sake
of simplicity, these instructions assume you have erased the eMMC on the Black,
so its boot behavior matches that of the White and boots off of SD card. To do
this, issue the following commands from the u-boot prompt:
# mmc dev 1
# mmc erase 0 512
To further tailor these instructions for your board, please refer to the
documentation at http://www.beagleboard.org/bone and http://www.beagleboard.org/black
From a Linux system with access to the image files perform the following steps:
1. Build an image. For example:
$ bitbake core-image-minimal
2. Use the "dd" utility to write the image to the SD card. For example:
# dd core-image-minimal-beaglebone.wic of=/dev/sdb
3. Insert the SD card into the Beaglebone and boot the board.
Freescale MPC8315E-RDB (mpc8315e-rdb)
=====================================
The MPC8315 PowerPC reference platform (MPC8315E-RDB) is aimed at hardware and
software development of network attached storage (NAS) and digital media server
applications. The MPC8315E-RDB features the PowerQUICC II Pro processor, which
includes a built-in security accelerator.
(Note: you may find it easier to order MPC8315E-RDBA; this appears to be the
same board in an enclosure with accessories. In any case it is fully
compatible with the instructions given here.)
Setup instructions
------------------
You will need the following:
* NFS root setup on your workstation
* TFTP server installed on your workstation
* Straight-thru 9-conductor serial cable (DB9, M/F) connected from your
PC to UART1
* Ethernet connected to the first ethernet port on the board
--- Preparation ---
Note: if you have altered your board's ethernet MAC address(es) from the
defaults, or you need to do so because you want multiple boards on the same
network, then you will need to change the values in the dts file (patch
linux/arch/powerpc/boot/dts/mpc8315erdb.dts within the kernel source). If
you have left them at the factory default then you shouldn't need to do
anything here.
Note: To boot from USB disk you need u-boot that supports 'ext2load usb'
command. You need to setup TFTP server, load u-boot from there and
flash it to NOR flash.
Beware! Flashing bootloader is potentially dangerous operation that can
brick your device if done incorrectly. Please, make sure you understand
what below commands mean before executing them.
Load the new u-boot.bin from TFTP server to memory address 200000
=> tftp 200000 u-boot.bin
Disable flash protection
=> protect off all
Erase the old u-boot from fe000000 to fe06ffff in NOR flash.
The size is 0x70000 (458752 bytes)
=> erase fe000000 fe06ffff
Copy the new u-boot from address 200000 to fe000000
the size is 0x70000. It has to be greater or equal to u-boot.bin size
=> cp.b 200000 fe000000 70000
Enable flash protection again
=> protect on all
Reset the board
=> reset
--- Booting from USB disk ---
1. Flash partitioned image to the USB disk
# dd if=core-image-minimal-mpc8315e-rdb.wic of=/dev/sdb
2. Plug USB disk into the MPC8315 board
3. Connect the board's first serial port to your workstation and then start up
your favourite serial terminal so that you will be able to interact with
the serial console. If you don't have a favourite, picocom is suggested:
$ picocom /dev/ttyUSB0 -b 115200
4. Power up or reset the board and press a key on the terminal when prompted
to get to the U-Boot command line
5. Optional. Load the u-boot.bin from the USB disk:
=> usb start
=> ext2load usb 0:1 200000 u-boot.bin
and flash it to NOR flash as described above.
6. Set fdtaddr and loadaddr. This is not necessary if you set them before.
=> setenv fdtaddr a00000
=> setenv loadaddr 1000000
7. Load the kernel and dtb from first partition of the USB disk:
=> usb start
=> ext2load usb 0:1 $loadaddr uImage
=> ext2load usb 0:1 $fdtaddr dtb
8. Set bootargs and boot up the device
=> setenv bootargs root=/dev/sdb2 rw rootwait console=ttyS0,115200
=> bootm $loadaddr - $fdtaddr
--- Booting from NFS root ---
Load the kernel and dtb (device tree blob), and boot the system as follows:
1. Get the kernel (uImage-mpc8315e-rdb.bin) and dtb (uImage-mpc8315e-rdb.dtb)
files from the tmp/deploy directory, and make them available on your TFTP
server.
2. Connect the board's first serial port to your workstation and then start up
your favourite serial terminal so that you will be able to interact with
the serial console. If you don't have a favourite, picocom is suggested:
$ picocom /dev/ttyUSB0 -b 115200
3. Power up or reset the board and press a key on the terminal when prompted
to get to the U-Boot command line
4. Set up the environment in U-Boot:
=> setenv ipaddr <board ip>
=> setenv serverip <tftp server ip>
=> setenv bootargs root=/dev/nfs rw nfsroot=<nfsroot ip>:<rootfs path> ip=<board ip>:<server ip>:<gateway ip>:255.255.255.0:mpc8315e:eth0:off console=ttyS0,115200
5. Download the kernel and dtb, and boot:
=> tftp 1000000 uImage-mpc8315e-rdb.bin
=> tftp 2000000 uImage-mpc8315e-rdb.dtb
=> bootm 1000000 - 2000000
--- Booting from JFFS2 root ---
1. First boot the board with NFS root.
2. Erase the MTD partition which will be used as root:
$ flash_eraseall /dev/mtd3
3. Copy the JFFS2 image to the MTD partition:
$ flashcp core-image-minimal-mpc8315e-rdb.jffs2 /dev/mtd3
4. Then reboot the board and set up the environment in U-Boot:
=> setenv bootargs root=/dev/mtdblock3 rootfstype=jffs2 console=ttyS0,115200
Ubiquiti Networks EdgeRouter Lite (edgerouter)
==============================================
The EdgeRouter Lite is part of the EdgeMax series. It is a MIPS64 router
(based on the Cavium Octeon processor) with 512MB of RAM, which uses an
internal USB pendrive for storage.
Setup instructions
------------------
You will need the following:
* RJ45 -> serial ("rollover") cable connected from your PC to the CONSOLE
port on the device
* Ethernet connected to the first ethernet port on the board
If using NFS as part of the setup process, you will also need:
* NFS root setup on your workstation
* TFTP server installed on your workstation (if fetching the kernel from
TFTP, see below).
--- Preparation ---
Build an image (e.g. core-image-minimal) using "edgerouter" as the MACHINE.
In the following instruction it is based on core-image-minimal. Another target
may be similiar with it.
--- Booting from NFS root / kernel via TFTP ---
Load the kernel, and boot the system as follows:
1. Get the kernel (vmlinux) file from the tmp/deploy/images/edgerouter
directory, and make them available on your TFTP server.
2. Connect the board's first serial port to your workstation and then start up
your favourite serial terminal so that you will be able to interact with
the serial console. If you don't have a favourite, picocom is suggested:
$ picocom /dev/ttyS0 -b 115200
3. Power up or reset the board and press a key on the terminal when prompted
to get to the U-Boot command line
4. Set up the environment in U-Boot:
=> setenv ipaddr <board ip>
=> setenv serverip <tftp server ip>
5. Download the kernel and boot:
=> tftp tftp $loadaddr vmlinux
=> bootoctlinux $loadaddr coremask=0x3 root=/dev/nfs rw nfsroot=<nfsroot ip>:<rootfs path> ip=<board ip>:<server ip>:<gateway ip>:<netmask>:edgerouter:eth0:off mtdparts=phys_mapped_flash:512k(boot0),512k(boot1),64k@3072k(eeprom)
--- Booting from USB disk ---
To boot from the USB disk, you either need to remove it from the edgerouter
box and populate it from another computer, or use a previously booted NFS
image and populate from the edgerouter itself.
Type 1: Use partitioned image
-----------------------------
Steps:
1. Remove the USB disk from the edgerouter and insert it into a computer
that has access to your build artifacts.
2. Flash the image.
# dd if=core-image-minimal-edgerouter.wic of=/dev/sdb
3. Insert USB disk into the edgerouter and boot it.
Type 2: NFS
-----------
Note: If you place the kernel on the ext3 partition, you must re-create the
ext3 filesystem, since the factory u-boot can only handle 128 byte inodes and
cannot read the partition otherwise.
These boot instructions assume that you have recreated the ext3 filesystem with
128 byte inodes, you have an updated uboot or you are running and image capable
of making the filesystem on the board itself.
1. Boot from NFS root
2. Mount the USB disk partition 2 and then extract the contents of
tmp/deploy/core-image-XXXX.tar.bz2 into it.
Before starting, copy core-image-minimal-xxx.tar.bz2 and vmlinux into
rootfs path on your workstation.
and then,
# mount /dev/sda2 /media/sda2
# tar -xvjpf core-image-minimal-XXX.tar.bz2 -C /media/sda2
# cp vmlinux /media/sda2/boot/vmlinux
# umount /media/sda2
# reboot
3. Reboot the board and press a key on the terminal when prompted to get to the U-Boot
command line:
# reboot
4. Load the kernel and boot:
=> ext2load usb 0:2 $loadaddr boot/vmlinux
=> bootoctlinux $loadaddr coremask=0x3 root=/dev/sda2 rw rootwait mtdparts=phys_mapped_flash:512k(boot0),512k(boot1),64k@3072k(eeprom)

10
bitbake/AUTHORS Normal file
View File

@@ -0,0 +1,10 @@
Tim Ansell <mithro@mithis.net>
Phil Blundell <pb@handhelds.org>
Seb Frankengul <seb@frankengul.org>
Holger Freyther <holger@moiji-mobile.com>
Marcin Juszkiewicz <marcin@juszkiewicz.com.pl>
Chris Larson <kergoth@handhelds.org>
Ulrich Luckas <luckas@musoft.de>
Mickey Lauer <mickey@Vanille.de>
Richard Purdie <rpurdie@rpsys.net>
Holger Schurig <holgerschurig@gmx.de>

339
bitbake/COPYING Normal file
View File

@@ -0,0 +1,339 @@
GNU GENERAL PUBLIC LICENSE
Version 2, June 1991
Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
Preamble
The licenses for most software are designed to take away your
freedom to share and change it. By contrast, the GNU General Public
License is intended to guarantee your freedom to share and change free
software--to make sure the software is free for all its users. This
General Public License applies to most of the Free Software
Foundation's software and to any other program whose authors commit to
using it. (Some other Free Software Foundation software is covered by
the GNU Lesser General Public License instead.) You can apply it to
your programs, too.
When we speak of free software, we are referring to freedom, not
price. Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
this service if you wish), that you receive source code or can get it
if you want it, that you can change the software or use pieces of it
in new free programs; and that you know you can do these things.
To protect your rights, we need to make restrictions that forbid
anyone to deny you these rights or to ask you to surrender the rights.
These restrictions translate to certain responsibilities for you if you
distribute copies of the software, or if you modify it.
For example, if you distribute copies of such a program, whether
gratis or for a fee, you must give the recipients all the rights that
you have. You must make sure that they, too, receive or can get the
source code. And you must show them these terms so they know their
rights.
We protect your rights with two steps: (1) copyright the software, and
(2) offer you this license which gives you legal permission to copy,
distribute and/or modify the software.
Also, for each author's protection and ours, we want to make certain
that everyone understands that there is no warranty for this free
software. If the software is modified by someone else and passed on, we
want its recipients to know that what they have is not the original, so
that any problems introduced by others will not reflect on the original
authors' reputations.
Finally, any free program is threatened constantly by software
patents. We wish to avoid the danger that redistributors of a free
program will individually obtain patent licenses, in effect making the
program proprietary. To prevent this, we have made it clear that any
patent must be licensed for everyone's free use or not licensed at all.
The precise terms and conditions for copying, distribution and
modification follow.
GNU GENERAL PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
0. This License applies to any program or other work which contains
a notice placed by the copyright holder saying it may be distributed
under the terms of this General Public License. The "Program", below,
refers to any such program or work, and a "work based on the Program"
means either the Program or any derivative work under copyright law:
that is to say, a work containing the Program or a portion of it,
either verbatim or with modifications and/or translated into another
language. (Hereinafter, translation is included without limitation in
the term "modification".) Each licensee is addressed as "you".
Activities other than copying, distribution and modification are not
covered by this License; they are outside its scope. The act of
running the Program is not restricted, and the output from the Program
is covered only if its contents constitute a work based on the
Program (independent of having been made by running the Program).
Whether that is true depends on what the Program does.
1. You may copy and distribute verbatim copies of the Program's
source code as you receive it, in any medium, provided that you
conspicuously and appropriately publish on each copy an appropriate
copyright notice and disclaimer of warranty; keep intact all the
notices that refer to this License and to the absence of any warranty;
and give any other recipients of the Program a copy of this License
along with the Program.
You may charge a fee for the physical act of transferring a copy, and
you may at your option offer warranty protection in exchange for a fee.
2. You may modify your copy or copies of the Program or any portion
of it, thus forming a work based on the Program, and copy and
distribute such modifications or work under the terms of Section 1
above, provided that you also meet all of these conditions:
a) You must cause the modified files to carry prominent notices
stating that you changed the files and the date of any change.
b) You must cause any work that you distribute or publish, that in
whole or in part contains or is derived from the Program or any
part thereof, to be licensed as a whole at no charge to all third
parties under the terms of this License.
c) If the modified program normally reads commands interactively
when run, you must cause it, when started running for such
interactive use in the most ordinary way, to print or display an
announcement including an appropriate copyright notice and a
notice that there is no warranty (or else, saying that you provide
a warranty) and that users may redistribute the program under
these conditions, and telling the user how to view a copy of this
License. (Exception: if the Program itself is interactive but
does not normally print such an announcement, your work based on
the Program is not required to print an announcement.)
These requirements apply to the modified work as a whole. If
identifiable sections of that work are not derived from the Program,
and can be reasonably considered independent and separate works in
themselves, then this License, and its terms, do not apply to those
sections when you distribute them as separate works. But when you
distribute the same sections as part of a whole which is a work based
on the Program, the distribution of the whole must be on the terms of
this License, whose permissions for other licensees extend to the
entire whole, and thus to each and every part regardless of who wrote it.
Thus, it is not the intent of this section to claim rights or contest
your rights to work written entirely by you; rather, the intent is to
exercise the right to control the distribution of derivative or
collective works based on the Program.
In addition, mere aggregation of another work not based on the Program
with the Program (or with a work based on the Program) on a volume of
a storage or distribution medium does not bring the other work under
the scope of this License.
3. You may copy and distribute the Program (or a work based on it,
under Section 2) in object code or executable form under the terms of
Sections 1 and 2 above provided that you also do one of the following:
a) Accompany it with the complete corresponding machine-readable
source code, which must be distributed under the terms of Sections
1 and 2 above on a medium customarily used for software interchange; or,
b) Accompany it with a written offer, valid for at least three
years, to give any third party, for a charge no more than your
cost of physically performing source distribution, a complete
machine-readable copy of the corresponding source code, to be
distributed under the terms of Sections 1 and 2 above on a medium
customarily used for software interchange; or,
c) Accompany it with the information you received as to the offer
to distribute corresponding source code. (This alternative is
allowed only for noncommercial distribution and only if you
received the program in object code or executable form with such
an offer, in accord with Subsection b above.)
The source code for a work means the preferred form of the work for
making modifications to it. For an executable work, complete source
code means all the source code for all modules it contains, plus any
associated interface definition files, plus the scripts used to
control compilation and installation of the executable. However, as a
special exception, the source code distributed need not include
anything that is normally distributed (in either source or binary
form) with the major components (compiler, kernel, and so on) of the
operating system on which the executable runs, unless that component
itself accompanies the executable.
If distribution of executable or object code is made by offering
access to copy from a designated place, then offering equivalent
access to copy the source code from the same place counts as
distribution of the source code, even though third parties are not
compelled to copy the source along with the object code.
4. You may not copy, modify, sublicense, or distribute the Program
except as expressly provided under this License. Any attempt
otherwise to copy, modify, sublicense or distribute the Program is
void, and will automatically terminate your rights under this License.
However, parties who have received copies, or rights, from you under
this License will not have their licenses terminated so long as such
parties remain in full compliance.
5. You are not required to accept this License, since you have not
signed it. However, nothing else grants you permission to modify or
distribute the Program or its derivative works. These actions are
prohibited by law if you do not accept this License. Therefore, by
modifying or distributing the Program (or any work based on the
Program), you indicate your acceptance of this License to do so, and
all its terms and conditions for copying, distributing or modifying
the Program or works based on it.
6. Each time you redistribute the Program (or any work based on the
Program), the recipient automatically receives a license from the
original licensor to copy, distribute or modify the Program subject to
these terms and conditions. You may not impose any further
restrictions on the recipients' exercise of the rights granted herein.
You are not responsible for enforcing compliance by third parties to
this License.
7. If, as a consequence of a court judgment or allegation of patent
infringement or for any other reason (not limited to patent issues),
conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot
distribute so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you
may not distribute the Program at all. For example, if a patent
license would not permit royalty-free redistribution of the Program by
all those who receive copies directly or indirectly through you, then
the only way you could satisfy both it and this License would be to
refrain entirely from distribution of the Program.
If any portion of this section is held invalid or unenforceable under
any particular circumstance, the balance of the section is intended to
apply and the section as a whole is intended to apply in other
circumstances.
It is not the purpose of this section to induce you to infringe any
patents or other property right claims or to contest validity of any
such claims; this section has the sole purpose of protecting the
integrity of the free software distribution system, which is
implemented by public license practices. Many people have made
generous contributions to the wide range of software distributed
through that system in reliance on consistent application of that
system; it is up to the author/donor to decide if he or she is willing
to distribute software through any other system and a licensee cannot
impose that choice.
This section is intended to make thoroughly clear what is believed to
be a consequence of the rest of this License.
8. If the distribution and/or use of the Program is restricted in
certain countries either by patents or by copyrighted interfaces, the
original copyright holder who places the Program under this License
may add an explicit geographical distribution limitation excluding
those countries, so that distribution is permitted only in or among
countries not thus excluded. In such case, this License incorporates
the limitation as if written in the body of this License.
9. The Free Software Foundation may publish revised and/or new versions
of the General Public License from time to time. Such new versions will
be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.
Each version is given a distinguishing version number. If the Program
specifies a version number of this License which applies to it and "any
later version", you have the option of following the terms and conditions
either of that version or of any later version published by the Free
Software Foundation. If the Program does not specify a version number of
this License, you may choose any version ever published by the Free Software
Foundation.
10. If you wish to incorporate parts of the Program into other free
programs whose distribution conditions are different, write to the author
to ask for permission. For software which is copyrighted by the Free
Software Foundation, write to the Free Software Foundation; we sometimes
make exceptions for this. Our decision will be guided by the two goals
of preserving the free status of all derivatives of our free software and
of promoting the sharing and reuse of software generally.
NO WARRANTY
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
REPAIR OR CORRECTION.
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
POSSIBILITY OF SUCH DAMAGES.
END OF TERMS AND CONDITIONS
How to Apply These Terms to Your New Programs
If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these terms.
To do so, attach the following notices to the program. It is safest
to attach them to the start of each source file to most effectively
convey the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found.
<one line to give the program's name and a brief idea of what it does.>
Copyright (C) <year> <name of author>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
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.
Also add information on how to contact you by electronic and paper mail.
If the program is interactive, make it output a short notice like this
when it starts in an interactive mode:
Gnomovision version 69, Copyright (C) year name of author
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
This is free software, and you are welcome to redistribute it
under certain conditions; type `show c' for details.
The hypothetical commands `show w' and `show c' should show the appropriate
parts of the General Public License. Of course, the commands you use may
be called something other than `show w' and `show c'; they could even be
mouse-clicks or menu items--whatever suits your program.
You should also get your employer (if you work as a programmer) or your
school, if any, to sign a "copyright disclaimer" for the program, if
necessary. Here is a sample; alter the names:
Yoyodyne, Inc., hereby disclaims all copyright interest in the program
`Gnomovision' (which makes passes at compilers) written by James Hacker.
<signature of Ty Coon>, 1 April 1989
Ty Coon, President of Vice
This General Public License does not permit incorporating your program into
proprietary programs. If your program is a subroutine library, you may
consider it more useful to permit linking proprietary applications with the
library. If this is what you want to do, use the GNU Lesser General
Public License instead of this License.

317
bitbake/ChangeLog Normal file
View File

@@ -0,0 +1,317 @@
Changes in Bitbake 1.9.x:
- Add PE (Package Epoch) support from Philipp Zabel (pH5)
- Treat python functions the same as shell functions for logging
- Use TMPDIR/anonfunc as a __anonfunc temp directory (T)
- Catch truncated cache file errors
- Allow operations other than assignment on flag variables
- Add code to handle inter-task dependencies
- Fix cache errors when generation dotGraphs
- Make sure __inherit_cache is updated before calling include() (from Michael Krelin)
- Fix bug when target was in ASSUME_PROVIDED (#2236)
- Raise ParseError for filenames with multiple underscores instead of infinitely looping (#2062)
- Fix invalid regexp in BBMASK error handling (missing import) (#1124)
- Promote certain warnings from debug to note 2 level
- Update manual
- Correctly redirect stdin when forking
- If parsing errors are found, exit, too many users miss the errors
- Remove supriours PREFERRED_PROVIDER warnings
- svn fetcher: Add _buildsvncommand function
- Improve certain error messages
- Rewrite svn fetcher to make adding extra operations easier
as part of future SRCDATE="now" fixes
(requires new FETCHCMD_svn definition in bitbake.conf)
- Change SVNDIR layout to be more unique (fixes #2644 and #2624)
- Add ConfigParsed Event after configuration parsing is complete
- Add SRCREV support for svn fetcher
- data.emit_var() - only call getVar if we need the variable
- Stop generating the A variable (seems to be legacy code)
- Make sure intertask depends get processed correcting in recursive depends
- Add pn-PN to overrides when evaluating PREFERRED_VERSION
- Improve the progress indicator by skipping tasks that have
already run before starting the build rather than during it
- Add profiling option (-P)
- Add BB_SRCREV_POLICY variable (clear or cache) to control SRCREV cache
- Add SRCREV_FORMAT support
- Fix local fetcher's localpath return values
- Apply OVERRIDES before performing immediate expansions
- Allow the -b -e option combination to take regular expressions
- Fix handling of variables with expansion in the name using _append/_prepend
e.g. RRECOMMENDS_${PN}_append_xyz = "abc"
- Add plain message function to bb.msg
- Sort the list of providers before processing so dependency problems are
reproducible rather than effectively random
- Fix/improve bitbake -s output
- Add locking for fetchers so only one tries to fetch a given file at a given time
- Fix int(0)/None confusion in runqueue.py which causes random gaps in dependency chains
- Expand data in addtasks
- Print the list of missing DEPENDS,RDEPENDS for the "No buildable providers available for required...."
error message.
- Rework add_task to be more efficient (6% speedup, 7% number of function calls reduction)
- Sort digraph output to make builds more reproducible
- Split expandKeys into two for loops to benefit from the expand_cache (12% speedup)
- runqueue.py: Fix idepends handling to avoid dependency errors
- Clear the terminal TOSTOP flag if set (and warn the user)
- Fix regression from r653 and make SRCDATE/CVSDATE work for packages again
- Fix a bug in bb.decodeurl where http://some.where.com/somefile.tgz decoded to host="" (#1530)
- Warn about malformed PREFERRED_PROVIDERS (#1072)
- Add support for BB_NICE_LEVEL option (#1627)
- Psyco is used only on x86 as there is no support for other architectures.
- Sort initial providers list by default preference (#1145, #2024)
- Improve provider sorting so prefered versions have preference over latest versions (#768)
- Detect builds of tasks with overlapping providers and warn (will become a fatal error) (#1359)
- Add MULTI_PROVIDER_WHITELIST variable to allow known safe multiple providers to be listed
- Handle paths in svn fetcher module parameter
- Support the syntax "export VARIABLE"
- Add bzr fetcher
- Add support for cleaning directories before a task in the form:
do_taskname[cleandirs] = "dir"
- bzr fetcher tweaks from Robert Schuster (#2913)
- Add mercurial (hg) fetcher from Robert Schuster (#2913)
- Don't add duplicates to BBPATH
- Fix preferred_version return values (providers.py)
- Fix 'depends' flag splitting
- Fix unexport handling (#3135)
- Add bb.copyfile function similar to bb.movefile (and improve movefile error reporting)
- Allow multiple options for deptask flag
- Use git-fetch instead of git-pull removing any need for merges when
fetching (we don't care about the index). Fixes fetch errors.
- Add BB_GENERATE_MIRROR_TARBALLS option, set to 0 to make git fetches
faster at the expense of not creating mirror tarballs.
- SRCREV handling updates, improvements and fixes from Poky
- Add bb.utils.lockfile() and bb.utils.unlockfile() from Poky
- Add support for task selfstamp and lockfiles flags
- Disable task number acceleration since it can allow the tasks to run
out of sequence
- Improve runqueue code comments
- Add task scheduler abstraction and some example schedulers
- Improve circular dependency chain debugging code and user feedback
- Don't give a stacktrace for invalid tasks, have a user friendly message (#3431)
- Add support for "-e target" (#3432)
- Fix shell showdata command (#3259)
- Fix shell data updating problems (#1880)
- Properly raise errors for invalid source URI protocols
- Change the wget fetcher failure handling to avoid lockfile problems
- Add support for branches in git fetcher (Otavio Salvador, Michael Lauer)
- Make taskdata and runqueue errors more user friendly
- Add norecurse and fullpath options to cvs fetcher
- Fix exit code for build failures in --continue mode
- Fix git branch tags fetching
- Change parseConfigurationFile so it works on real data, not a copy
- Handle 'base' inherit and all other INHERITs from parseConfigurationFile
instead of BBHandler
- Fix getVarFlags bug in data_smart
- Optmise cache handling by more quickly detecting an invalid cache, only
saving the cache when its changed, moving the cache validity check into
the parsing loop and factoring some getVar calls outside a for loop
- Cooker: Remove a debug message from the parsing loop to lower overhead
- Convert build.py exec_task to use getVarFlags
- Update shell to use cooker.buildFile
- Add StampUpdate event
- Convert -b option to use taskdata/runqueue
- Remove digraph and switch to new stamp checking code. exec_task no longer
honours dependencies
- Make fetcher timestamp updating non-fatal when permissions don't allow
updates
- Add BB_SCHEDULER variable/option ("completion" or "speed") controlling
the way bitbake schedules tasks
- Add BB_STAMP_POLICY variable/option ("perfile" or "full") controlling
how extensively stamps are looked at for validity
- When handling build target failures make sure idepends are checked and
failed where needed. Fixes --continue mode crashes.
- Fix -f (force) in conjunction with -b
- Fix problems with recrdeptask handling where some idepends weren't handled
correctly.
- Handle exit codes correctly (from pH5)
- Work around refs/HEAD issues with git over http (#3410)
- Add proxy support to the CVS fetcher (from Cyril Chemparathy)
- Improve runfetchcmd so errors are seen and various GIT variables are exported
- Add ability to fetchers to check URL validity without downloading
- Improve runtime PREFERRED_PROVIDERS warning message
- Add BB_STAMP_WHITELIST option which contains a list of stamps to ignore when
checking stamp dependencies and using a BB_STAMP_POLICY of "whitelist"
- No longer weight providers on the basis of a package being "already staged". This
leads to builds being non-deterministic.
- Flush stdout/stderr before forking to fix duplicate console output
- Make sure recrdeps tasks include all inter-task dependencies of a given fn
- Add bb.runqueue.check_stamp_fn() for use by packaged-staging
- Add PERSISTENT_DIR to store the PersistData in a persistent
directory != the cache dir.
- Add md5 and sha256 checksum generation functions to utils.py
- Correctly handle '-' characters in class names (#2958)
- Make sure expandKeys has been called on the data dictionary before running tasks
- Correctly add a task override in the form task-TASKNAME.
- Revert the '-' character fix in class names since it breaks things
- When a regexp fails to compile for PACKAGES_DYNAMIC, print a more useful error (#4444)
- Allow to checkout CVS by Date and Time. Just add HHmm to the SRCDATE.
- Move prunedir function to utils.py and add explode_dep_versions function
- Raise an exception if SRCREV == 'INVALID'
- Fix hg fetcher username/password handling and fix crash
- Fix PACKAGES_DYNAMIC handling of packages with '++' in the name
- Rename __depends to __base_depends after configuration parsing so we don't
recheck the validity of the config files time after time
- Add better environmental variable handling. By default it will now only pass certain
whitelisted variables into the data store. If BB_PRESERVE_ENV is set bitbake will use
all variable from the environment. If BB_ENV_WHITELIST is set, that whitelist will be
used instead of the internal bitbake one. Alternatively, BB_ENV_EXTRAWHITE can be used
to extend the internal whitelist.
- Perforce fetcher fix to use commandline options instead of being overriden by the environment
- bb.utils.prunedir can cope with symlinks to directoriees without exceptions
- use @rev when doing a svn checkout
- Add osc fetcher (from Joshua Lock in Poky)
- When SRCREV autorevisioning for a recipe is in use, don't cache the recipe
- Add tryaltconfigs option to control whether bitbake trys using alternative providers
to fulfil failed dependencies. It defaults to off, changing the default since this
behaviour confuses many users and isn't often useful.
- Improve lock file function error handling
- Add username handling to the git fetcher (Robert Bragg)
- Add support for HTTP_PROXY and HTTP_PROXY_IGNORE variables to the wget fetcher
- Export more variables to the fetcher commands to allow ssh checkouts and checkouts through
proxies to work better. (from Poky)
- Also allow user and pswd options in SRC_URIs globally (from Poky)
- Improve proxy handling when using mirrors (from Poky)
- Add bb.utils.prune_suffix function
- Fix hg checkouts of specific revisions (from Poky)
- Fix wget fetching of urls with parameters specified (from Poky)
- Add username handling to git fetcher (from Poky)
- Set HOME environmental variable when running fetcher commands (from Poky)
- Make sure allowed variables inherited from the environment are exported again (from Poky)
- When running a stage task in bbshell, run populate_staging, not the stage task (from Poky)
- Fix + character escaping from PACKAGES_DYNAMIC (thanks Otavio Salvador)
- Addition of BBCLASSEXTEND support for allowing one recipe to provide multiple targets (from Poky)
Changes in Bitbake 1.8.0:
- Release 1.7.x as a stable series
Changes in BitBake 1.7.x:
- Major updates of the dependency handling and execution
of tasks. Code from bin/bitbake replaced with runqueue.py
and taskdata.py
- New task execution code supports multithreading with a simplistic
threading algorithm controlled by BB_NUMBER_THREADS
- Change of the SVN Fetcher to keep the checkout around
courtsey of Paul Sokolovsky (#1367)
- PATH fix to bbimage (#1108)
- Allow debug domains to be specified on the commandline (-l)
- Allow 'interactive' tasks
- Logging message improvements
- Drop now uneeded BUILD_ALL_DEPS variable
- Add support for wildcards to -b option
- Major overhaul of the fetchers making a large amount of code common
including mirroring code
- Fetchers now touch md5 stamps upon access (to show activity)
- Fix -f force option when used without -b (long standing bug)
- Add expand_cache to data_cache.py, caching expanded data (speedup)
- Allow version field in DEPENDS (ignored for now)
- Add abort flag support to the shell
- Make inherit fail if the class doesn't exist (#1478)
- Fix data.emit_env() to expand keynames as well as values
- Add ssh fetcher
- Add perforce fetcher
- Make PREFERRED_PROVIDER_foobar defaults to foobar if available
- Share the parser's mtime_cache, reducing the number of stat syscalls
- Compile all anonfuncs at once!
*** Anonfuncs must now use common spacing format ***
- Memorise the list of handlers in __BBHANDLERS and tasks in __BBTASKS
This removes 2 million function calls resulting in a 5-10% speedup
- Add manpage
- Update generateDotGraph to use taskData/runQueue improving accuracy
and also adding a task dependency graph
- Fix/standardise on GPLv2 licence
- Move most functionality from bin/bitbake to cooker.py and split into
separate funcitons
- CVS fetcher: Added support for non-default port
- Add BBINCLUDELOGS_LINES, the number of lines to read from any logfile
- Drop shebangs from lib/bb scripts
Changes in Bitbake 1.6.0:
- Better msg handling
- COW dict implementation from Tim Ansell (mithro) leading
to better performance
- Speed up of -s
Changes in Bitbake 1.4.4:
- SRCDATE now handling courtsey Justin Patrin
- #1017 fix to work with rm_work
Changes in BitBake 1.4.2:
- Send logs to oe.pastebin.com instead of pastebin.com
fixes #856
- Copy the internal bitbake data before building the
dependency graph. This fixes nano not having a
virtual/libc dependency
- Allow multiple TARBALL_STASH entries
- Cache, check if the directory exists before changing
into it
- git speedup cloning by not doing a checkout
- allow to have spaces in filenames (.conf, .bb, .bbclass)
Changes in BitBake 1.4.0:
- Fix to check both RDEPENDS and RDEPENDS_${PN}
- Fix a RDEPENDS parsing bug in utils:explode_deps()
- Update git fetcher behaviour to match git changes
- ASSUME_PROVIDED allowed to include runtime packages
- git fetcher cleanup and efficency improvements
- Change the format of the cache
- Update usermanual to document the Fetchers
- Major changes to caching with a new strategy
giving a major performance increase when reparsing
with few data changes
Changes in BitBake 1.3.3:
- Create a new Fetcher module to ease the
development of new Fetchers.
Issue #438 fixed by rpurdie@openedhand.com
- Make the Subversion fetcher honor the SRC Date
(CVSDATE).
Issue #555 fixed by chris@openedhand.com
- Expand PREFERRED_PROVIDER properly
Issue #436 fixed by rprudie@openedhand.com
- Typo fix for Issue #531 by Philipp Zabel for the
BitBake Shell
- Introduce a new special variable SRCDATE as
a generic naming to replace CVSDATE.
- Introduce a new keyword 'required'. In contrast
to 'include' parsing will fail if a to be included
file can not be found.
- Remove hardcoding of the STAMP directory. Patch
courtsey pHilipp Zabel
- Track the RDEPENDS of each package (rpurdie@openedhand.com)
- Introduce BUILD_ALL_DEPS to build all RDEPENDS. E.g
this is used by the OpenEmbedded Meta Packages.
(rpurdie@openedhand.com).
Changes in BitBake 1.3.2:
- reintegration of make.py into BitBake
- bbread is gone, use bitbake -e
- lots of shell updates and bugfixes
- Introduction of the .= and =. operator
- Sort variables, keys and groups in bitdoc
- Fix regression in the handling of BBCOLLECTIONS
- Update the bitbake usermanual
Changes in BitBake 1.3.0:
- add bitbake interactive shell (bitbake -i)
- refactor bitbake utility in OO style
- kill default arguments in methods in the bb.data module
- kill default arguments in methods in the bb.fetch module
- the http/https/ftp fetcher will fail if the to be
downloaded file was not found in DL_DIR (this is needed
to avoid unpacking the sourceforge mirror page)
- Switch to a cow like data instance for persistent and non
persisting mode (called data_smart.py)
- Changed the callback of bb.make.collect_bbfiles to carry
additional parameters
- Drastically reduced the amount of needed RAM by not holding
each data instance in memory when using a cache/persistent
storage
Changes in BitBake 1.2.1:
The 1.2.1 release is meant as a intermediate release to lay the
ground for more radical changes. The most notable changes are:
- Do not hardcode {}, use bb.data.init() instead if you want to
get a instance of a data class
- bb.data.init() is a factory and the old bb.data methods are delegates
- Do not use deepcopy use bb.data.createCopy() instead.
- Removed default arguments in bb.fetch

19
bitbake/HEADER Normal file
View File

@@ -0,0 +1,19 @@
# ex:ts=4:sw=4:sts=4:et
# -*- tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*-
#
# <one line to give the program's name and a brief idea of what it does.>
# Copyright (C) <year> <name of author>
#
# 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.

19
bitbake/LICENSE Normal file
View File

@@ -0,0 +1,19 @@
BitBake is licensed under the GNU General Public License version 2.0. See COPYING for further details.
The following external components are distributed with this software:
* The Toaster Simple UI application is based upon the Django project template, the files of which are covered by the BSD license and are copyright (c) Django Software
Foundation and individual contributors.
* Twitter Bootstrap (including Glyphicons), redistributed under the MIT license
* jQuery is redistributed under the MIT license.
* Twitter typeahead.js redistributed under the MIT license. Note that the JS source has one small modification, so the full unminified file is currently included to make it obvious where this is.
* jsrender is redistributed under the MIT license.
* QUnit is redistributed under the MIT license.
* Font Awesome fonts redistributed under the SIL Open Font License 1.1
* simplediff is distributed under the zlib license.

56
bitbake/bin/bitbake Executable file
View File

@@ -0,0 +1,56 @@
#!/usr/bin/env python3
# ex:ts=4:sw=4:sts=4:et
# -*- tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*-
#
# Copyright (C) 2003, 2004 Chris Larson
# Copyright (C) 2003, 2004 Phil Blundell
# Copyright (C) 2003 - 2005 Michael 'Mickey' Lauer
# Copyright (C) 2005 Holger Hans Peter Freyther
# Copyright (C) 2005 ROAD GmbH
# Copyright (C) 2006 Richard Purdie
#
# 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
sys.path.insert(0, os.path.join(os.path.dirname(os.path.dirname(__file__)),
'lib'))
try:
import bb
except RuntimeError as exc:
sys.exit(str(exc))
from bb import cookerdata
from bb.main import bitbake_main, BitBakeConfigParameters, BBMainException
if sys.getfilesystemencoding() != "utf-8":
sys.exit("Please use a locale setting which supports utf-8.\nPython can't change the filesystem locale after loading so we need a utf-8 when python starts or things won't work.")
__version__ = "1.34.0"
if __name__ == "__main__":
if __version__ != bb.__version__:
sys.exit("Bitbake core version and program version mismatch!")
try:
sys.exit(bitbake_main(BitBakeConfigParameters(sys.argv),
cookerdata.CookerConfiguration()))
except BBMainException as err:
sys.exit(err)
except bb.BBHandledException:
sys.exit(1)
except Exception:
import traceback
traceback.print_exc()
sys.exit(1)

162
bitbake/bin/bitbake-diffsigs Executable file
View File

@@ -0,0 +1,162 @@
#!/usr/bin/env python3
# bitbake-diffsigs
# BitBake task signature data comparison utility
#
# Copyright (C) 2012-2013, 2017 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 fnmatch
import argparse
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-diffsigs')
def find_compare_task(bbhandler, pn, taskname, sig1=None, sig2=None, color=False):
""" Find the most recent signature files for the specified PN/task and compare them """
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
if sig1 and sig2:
sigfiles = bb.siggen.find_siginfo(pn, taskname, [sig1, sig2], bbhandler.config_data)
if len(sigfiles) == 0:
logger.error('No sigdata files found matching %s %s matching either %s or %s' % (pn, taskname, sig1, sig2))
sys.exit(1)
elif not sig1 in sigfiles:
logger.error('No sigdata files found matching %s %s with signature %s' % (pn, taskname, sig1))
sys.exit(1)
elif not sig2 in sigfiles:
logger.error('No sigdata files found matching %s %s with signature %s' % (pn, taskname, sig2))
sys.exit(1)
latestfiles = [sigfiles[sig1], sigfiles[sig2]]
else:
filedates = bb.siggen.find_siginfo(pn, taskname, None, bbhandler.config_data)
latestfiles = sorted(filedates.keys(), key=lambda f: filedates[f])[-3:]
if not latestfiles:
logger.error('No sigdata files found matching %s %s' % (pn, taskname))
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
def recursecb(key, hash1, hash2):
hashes = [hash1, hash2]
hashfiles = bb.siggen.find_siginfo(key, None, hashes, bbhandler.config_data)
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
# Recurse into signature comparison
logger.debug("Signature file (previous): %s" % latestfiles[-2])
logger.debug("Signature file (latest): %s" % latestfiles[-1])
output = bb.siggen.compare_sigfiles(latestfiles[-2], latestfiles[-1], recursecb, color=color)
if output:
print('\n'.join(output))
sys.exit(0)
parser = argparse.ArgumentParser(
description="Compares siginfo/sigdata files written out by BitBake")
parser.add_argument('-d', '--debug',
help='Enable debug output',
action='store_true')
parser.add_argument('--color',
help='Colorize output (where %(metavar)s is %(choices)s)',
choices=['auto', 'always', 'never'], default='auto', metavar='color')
parser.add_argument("-t", "--task",
help="find the signature data files for last two runs of the specified task and compare them",
action="store", dest="taskargs", nargs=2, metavar=('recipename', 'taskname'))
parser.add_argument("-s", "--signature",
help="With -t/--task, specify the signatures to look for instead of taking the last two",
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()
if options.debug:
logger.setLevel(logging.DEBUG)
color = (options.color == 'always' or (options.color == 'auto' and sys.stdout.isatty()))
if options.taskargs:
with bb.tinfoil.Tinfoil() as tinfoil:
tinfoil.prepare(config_only=True)
if options.sigargs:
find_compare_task(tinfoil, options.taskargs[0], options.taskargs[1], options.sigargs[0], options.sigargs[1], color=color)
else:
find_compare_task(tinfoil, options.taskargs[0], options.taskargs[1], color=color)
else:
if options.sigargs:
logger.error('-s/--signature can only be used together with -t/--task')
sys.exit(1)
try:
if options.sigdatafile1 and options.sigdatafile2:
output = bb.siggen.compare_sigfiles(options.sigdatafile1, options.sigdatafile2, color=color)
elif options.sigdatafile1:
output = bb.siggen.dump_sigfile(options.sigdatafile1)
else:
logger.error('Must specify signature file(s) or -t/--task')
parser.print_help()
sys.exit(1)
except IOError as e:
logger.error(str(e))
sys.exit(1)
except (pickle.UnpicklingError, EOFError):
logger.error('Invalid signature data - ensure you are specifying sigdata/siginfo files')
sys.exit(1)
if output:
print('\n'.join(output))

94
bitbake/bin/bitbake-dumpsig Executable file
View File

@@ -0,0 +1,94 @@
#!/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))

109
bitbake/bin/bitbake-layers Executable file
View File

@@ -0,0 +1,109 @@
#!/usr/bin/env python3
# This script has subcommands which operate against your bitbake layers, either
# displaying useful information, or acting against them.
# See the help output for details on available commands.
# Copyright (C) 2011 Mentor Graphics Corporation
# Copyright (C) 2011-2015 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 logging
import os
import sys
import argparse
import signal
bindir = os.path.dirname(__file__)
topdir = os.path.dirname(bindir)
sys.path[0:0] = [os.path.join(topdir, 'lib')]
import bb.tinfoil
import bb.msg
logger = bb.msg.logger_create('bitbake-layers', sys.stdout)
def main():
signal.signal(signal.SIGPIPE, signal.SIG_DFL)
parser = argparse.ArgumentParser(
description="BitBake layers utility",
epilog="Use %(prog)s <subcommand> --help to get help on a specific command",
add_help=False)
parser.add_argument('-d', '--debug', help='Enable debug output', action='store_true')
parser.add_argument('-q', '--quiet', help='Print only errors', action='store_true')
parser.add_argument('--color', choices=['auto', 'always', 'never'], default='auto', help='Colorize output (where %(metavar)s is %(choices)s)', metavar='COLOR')
global_args, unparsed_args = parser.parse_known_args()
# Help is added here rather than via add_help=True, as we don't want it to
# be handled by parse_known_args()
parser.add_argument('-h', '--help', action='help', default=argparse.SUPPRESS,
help='show this help message and exit')
subparsers = parser.add_subparsers(title='subcommands', metavar='<subcommand>')
subparsers.required = True
if global_args.debug:
logger.setLevel(logging.DEBUG)
elif global_args.quiet:
logger.setLevel(logging.ERROR)
# Need to re-run logger_create with color argument
# (will be the same logger since it has the same name)
bb.msg.logger_create('bitbake-layers', output=sys.stdout, color=global_args.color)
plugins = []
tinfoil = bb.tinfoil.Tinfoil(tracking=True)
tinfoil.logger.setLevel(logger.getEffectiveLevel())
try:
tinfoil.prepare(True)
for path in ([topdir] +
tinfoil.config_data.getVar('BBPATH').split(':')):
pluginpath = os.path.join(path, 'lib', 'bblayers')
bb.utils.load_plugins(logger, plugins, pluginpath)
registered = False
for plugin in plugins:
if hasattr(plugin, 'register_commands'):
registered = True
plugin.register_commands(subparsers)
if hasattr(plugin, 'tinfoil_init'):
plugin.tinfoil_init(tinfoil)
if not registered:
logger.error("No commands registered - missing plugins?")
sys.exit(1)
args = parser.parse_args(unparsed_args, namespace=global_args)
if getattr(args, 'parserecipes', False):
tinfoil.config_data.disableTracking()
tinfoil.parseRecipes()
tinfoil.config_data.enableTracking()
return args.func(args)
finally:
tinfoil.shutdown()
if __name__ == "__main__":
try:
ret = main()
except bb.BBHandledException:
ret = 1
except Exception:
ret = 1
import traceback
traceback.print_exc()
sys.exit(ret)

55
bitbake/bin/bitbake-prserv Executable file
View File

@@ -0,0 +1,55 @@
#!/usr/bin/env python3
import os
import sys,logging
import optparse
sys.path.insert(0, os.path.join(os.path.dirname(os.path.dirname(__file__)),'lib'))
import prserv
import prserv.serv
__version__="1.0.0"
PRHOST_DEFAULT='0.0.0.0'
PRPORT_DEFAULT=8585
def main():
parser = optparse.OptionParser(
version="Bitbake PR Service Core version %s, %%prog version %s" % (prserv.__version__, __version__),
usage = "%prog < --start | --stop > [options]")
parser.add_option("-f", "--file", help="database filename(default: prserv.sqlite3)", action="store",
dest="dbfile", type="string", default="prserv.sqlite3")
parser.add_option("-l", "--log", help="log filename(default: prserv.log)", action="store",
dest="logfile", type="string", default="prserv.log")
parser.add_option("--loglevel", help="logging level, i.e. CRITICAL, ERROR, WARNING, INFO, DEBUG",
action = "store", type="string", dest="loglevel", default = "INFO")
parser.add_option("--start", help="start daemon",
action="store_true", dest="start")
parser.add_option("--stop", help="stop daemon",
action="store_true", dest="stop")
parser.add_option("--host", help="ip address to bind", action="store",
dest="host", type="string", default=PRHOST_DEFAULT)
parser.add_option("--port", help="port number(default: 8585)", action="store",
dest="port", type="int", default=PRPORT_DEFAULT)
options, args = parser.parse_args(sys.argv)
prserv.init_logger(os.path.abspath(options.logfile),options.loglevel)
if options.start:
ret=prserv.serv.start_daemon(options.dbfile, options.host, options.port,os.path.abspath(options.logfile))
elif options.stop:
ret=prserv.serv.stop_daemon(options.host, options.port)
else:
ret=parser.print_help()
return ret
if __name__ == "__main__":
try:
ret = main()
except Exception:
ret = 1
import traceback
traceback.print_exc()
sys.exit(ret)

72
bitbake/bin/bitbake-selftest Executable file
View File

@@ -0,0 +1,72 @@
#!/usr/bin/env python3
#
# Copyright (C) 2012 Richard Purdie
#
# 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, logging
sys.path.insert(0, os.path.join(os.path.dirname(os.path.dirname(__file__)), 'lib'))
import unittest
try:
import bb
except RuntimeError as exc:
sys.exit(str(exc))
tests = ["bb.tests.codeparser",
"bb.tests.cow",
"bb.tests.data",
"bb.tests.fetch",
"bb.tests.parse",
"bb.tests.utils"]
for t in tests:
t = '.'.join(t.split('.')[:3])
__import__(t)
# Set-up logging
class StdoutStreamHandler(logging.StreamHandler):
"""Special handler so that unittest is able to capture stdout"""
def __init__(self):
# Override __init__() because we don't want to set self.stream here
logging.Handler.__init__(self)
@property
def stream(self):
# We want to dynamically write wherever sys.stdout is pointing to
return sys.stdout
handler = StdoutStreamHandler()
bb.logger.addHandler(handler)
bb.logger.setLevel(logging.DEBUG)
ENV_HELP = """\
Environment variables:
BB_SKIP_NETTESTS set to 'yes' in order to skip tests using network
connection
BB_TMPDIR_NOCLEAN set to 'yes' to preserve test tmp directories
"""
class main(unittest.main):
def _print_help(self, *args, **kwargs):
super(main, self)._print_help(*args, **kwargs)
print(ENV_HELP)
if __name__ == '__main__':
main(defaultTest=tests, buffer=True)

502
bitbake/bin/bitbake-worker Executable file
View File

@@ -0,0 +1,502 @@
#!/usr/bin/env python3
import os
import sys
import warnings
sys.path.insert(0, os.path.join(os.path.dirname(os.path.dirname(sys.argv[0])), 'lib'))
from bb import fetch2
import logging
import bb
import select
import errno
import signal
import pickle
import traceback
import queue
from multiprocessing import Lock
from threading import Thread
if sys.getfilesystemencoding() != "utf-8":
sys.exit("Please use a locale setting which supports utf-8.\nPython can't change the filesystem locale after loading so we need a utf-8 when python starts or things won't work.")
# Users shouldn't be running this code directly
if len(sys.argv) != 2 or not sys.argv[1].startswith("decafbad"):
print("bitbake-worker is meant for internal execution by bitbake itself, please don't use it standalone.")
sys.exit(1)
profiling = False
if sys.argv[1].startswith("decafbadbad"):
profiling = True
try:
import cProfile as profile
except:
import profile
# Unbuffer stdout to avoid log truncation in the event
# of an unorderly exit as well as to provide timely
# updates to log files for use with tail
try:
if sys.stdout.name == '<stdout>':
import fcntl
fl = fcntl.fcntl(sys.stdout.fileno(), fcntl.F_GETFL)
fl |= os.O_SYNC
fcntl.fcntl(sys.stdout.fileno(), fcntl.F_SETFL, fl)
#sys.stdout = os.fdopen(sys.stdout.fileno(), 'w', 0)
except:
pass
logger = logging.getLogger("BitBake")
worker_pipe = sys.stdout.fileno()
bb.utils.nonblockingfd(worker_pipe)
# Need to guard against multiprocessing being used in child processes
# and multiple processes trying to write to the parent at the same time
worker_pipe_lock = None
handler = bb.event.LogHandler()
logger.addHandler(handler)
if 0:
# Code to write out a log file of all events passing through the worker
logfilename = "/tmp/workerlogfile"
format_str = "%(levelname)s: %(message)s"
conlogformat = bb.msg.BBLogFormatter(format_str)
consolelog = logging.FileHandler(logfilename)
bb.msg.addDefaultlogFilter(consolelog)
consolelog.setFormatter(conlogformat)
logger.addHandler(consolelog)
worker_queue = queue.Queue()
def worker_fire(event, d):
data = b"<event>" + pickle.dumps(event) + b"</event>"
worker_fire_prepickled(data)
def worker_fire_prepickled(event):
global worker_queue
worker_queue.put(event)
#
# We can end up with write contention with the cooker, it can be trying to send commands
# and we can be trying to send event data back. Therefore use a separate thread for writing
# back data to cooker.
#
worker_thread_exit = False
def worker_flush(worker_queue):
worker_queue_int = b""
global worker_pipe, worker_thread_exit
while True:
try:
worker_queue_int = worker_queue_int + worker_queue.get(True, 1)
except queue.Empty:
pass
while (worker_queue_int or not worker_queue.empty()):
try:
(_, ready, _) = select.select([], [worker_pipe], [], 1)
if not worker_queue.empty():
worker_queue_int = worker_queue_int + worker_queue.get()
written = os.write(worker_pipe, worker_queue_int)
worker_queue_int = worker_queue_int[written:]
except (IOError, OSError) as e:
if e.errno != errno.EAGAIN and e.errno != errno.EPIPE:
raise
if worker_thread_exit and worker_queue.empty() and not worker_queue_int:
return
worker_thread = Thread(target=worker_flush, args=(worker_queue,))
worker_thread.start()
def worker_child_fire(event, d):
global worker_pipe
global worker_pipe_lock
data = b"<event>" + pickle.dumps(event) + b"</event>"
try:
worker_pipe_lock.acquire()
worker_pipe.write(data)
worker_pipe_lock.release()
except IOError:
sigterm_handler(None, None)
raise
bb.event.worker_fire = worker_fire
lf = None
#lf = open("/tmp/workercommandlog", "w+")
def workerlog_write(msg):
if lf:
lf.write(msg)
lf.flush()
def sigterm_handler(signum, frame):
signal.signal(signal.SIGTERM, signal.SIG_DFL)
os.killpg(0, signal.SIGTERM)
sys.exit()
def fork_off_task(cfg, data, databuilder, workerdata, fn, task, taskname, appends, taskdepdata, extraconfigdata, quieterrors=False, dry_run_exec=False):
# We need to setup the environment BEFORE the fork, since
# a fork() or exec*() activates PSEUDO...
envbackup = {}
fakeenv = {}
umask = None
taskdep = workerdata["taskdeps"][fn]
if 'umask' in taskdep and taskname in taskdep['umask']:
# umask might come in as a number or text string..
try:
umask = int(taskdep['umask'][taskname],8)
except TypeError:
umask = taskdep['umask'][taskname]
dry_run = cfg.dry_run or dry_run_exec
# We can't use the fakeroot environment in a dry run as it possibly hasn't been built
if 'fakeroot' in taskdep and taskname in taskdep['fakeroot'] and not dry_run:
envvars = (workerdata["fakerootenv"][fn] or "").split()
for key, value in (var.split('=') for var in envvars):
envbackup[key] = os.environ.get(key)
os.environ[key] = value
fakeenv[key] = value
fakedirs = (workerdata["fakerootdirs"][fn] or "").split()
for p in fakedirs:
bb.utils.mkdirhier(p)
logger.debug(2, 'Running %s:%s under fakeroot, fakedirs: %s' %
(fn, taskname, ', '.join(fakedirs)))
else:
envvars = (workerdata["fakerootnoenv"][fn] or "").split()
for key, value in (var.split('=') for var in envvars):
envbackup[key] = os.environ.get(key)
os.environ[key] = value
fakeenv[key] = value
sys.stdout.flush()
sys.stderr.flush()
try:
pipein, pipeout = os.pipe()
pipein = os.fdopen(pipein, 'rb', 4096)
pipeout = os.fdopen(pipeout, 'wb', 0)
pid = os.fork()
except OSError as e:
logger.critical("fork failed: %d (%s)" % (e.errno, e.strerror))
sys.exit(1)
if pid == 0:
def child():
global worker_pipe
global worker_pipe_lock
pipein.close()
signal.signal(signal.SIGTERM, sigterm_handler)
# Let SIGHUP exit as SIGTERM
signal.signal(signal.SIGHUP, sigterm_handler)
bb.utils.signal_on_parent_exit("SIGTERM")
# Save out the PID so that the event can include it the
# events
bb.event.worker_pid = os.getpid()
bb.event.worker_fire = worker_child_fire
worker_pipe = pipeout
worker_pipe_lock = Lock()
# Make the child the process group leader and ensure no
# child process will be controlled by the current terminal
# This ensures signals sent to the controlling terminal like Ctrl+C
# don't stop the child processes.
os.setsid()
# No stdin
newsi = os.open(os.devnull, os.O_RDWR)
os.dup2(newsi, sys.stdin.fileno())
if umask:
os.umask(umask)
try:
bb_cache = bb.cache.NoCache(databuilder)
(realfn, virtual, mc) = bb.cache.virtualfn2realfn(fn)
the_data = databuilder.mcdata[mc]
the_data.setVar("BB_WORKERCONTEXT", "1")
the_data.setVar("BB_TASKDEPDATA", taskdepdata)
if cfg.limited_deps:
the_data.setVar("BB_LIMITEDDEPS", "1")
the_data.setVar("BUILDNAME", workerdata["buildname"])
the_data.setVar("DATE", workerdata["date"])
the_data.setVar("TIME", workerdata["time"])
for varname, value in extraconfigdata.items():
the_data.setVar(varname, value)
bb.parse.siggen.set_taskdata(workerdata["sigdata"])
ret = 0
the_data = bb_cache.loadDataFull(fn, appends)
the_data.setVar('BB_TASKHASH', workerdata["runq_hash"][task])
bb.utils.set_process_name("%s:%s" % (the_data.getVar("PN"), taskname.replace("do_", "")))
# exported_vars() returns a generator which *cannot* be passed to os.environ.update()
# successfully. We also need to unset anything from the environment which shouldn't be there
exports = bb.data.exported_vars(the_data)
bb.utils.empty_environment()
for e, v in exports:
os.environ[e] = v
for e in fakeenv:
os.environ[e] = fakeenv[e]
the_data.setVar(e, fakeenv[e])
the_data.setVarFlag(e, 'export', "1")
task_exports = the_data.getVarFlag(taskname, 'exports')
if task_exports:
for e in task_exports.split():
the_data.setVarFlag(e, 'export', '1')
v = the_data.getVar(e)
if v is not None:
os.environ[e] = v
if quieterrors:
the_data.setVarFlag(taskname, "quieterrors", "1")
except Exception:
if not quieterrors:
logger.critical(traceback.format_exc())
os._exit(1)
try:
if dry_run:
return 0
return bb.build.exec_task(fn, taskname, the_data, cfg.profile)
except:
os._exit(1)
if not profiling:
os._exit(child())
else:
profname = "profile-%s.log" % (fn.replace("/", "-") + "-" + taskname)
prof = profile.Profile()
try:
ret = profile.Profile.runcall(prof, child)
finally:
prof.dump_stats(profname)
bb.utils.process_profilelog(profname)
os._exit(ret)
else:
for key, value in iter(envbackup.items()):
if value is None:
del os.environ[key]
else:
os.environ[key] = value
return pid, pipein, pipeout
class runQueueWorkerPipe():
"""
Abstraction for a pipe between a worker thread and the worker server
"""
def __init__(self, pipein, pipeout):
self.input = pipein
if pipeout:
pipeout.close()
bb.utils.nonblockingfd(self.input)
self.queue = b""
def read(self):
start = len(self.queue)
try:
self.queue = self.queue + (self.input.read(102400) or b"")
except (OSError, IOError) as e:
if e.errno != errno.EAGAIN:
raise
end = len(self.queue)
index = self.queue.find(b"</event>")
while index != -1:
worker_fire_prepickled(self.queue[:index+8])
self.queue = self.queue[index+8:]
index = self.queue.find(b"</event>")
return (end > start)
def close(self):
while self.read():
continue
if len(self.queue) > 0:
print("Warning, worker child left partial message: %s" % self.queue)
self.input.close()
normalexit = False
class BitbakeWorker(object):
def __init__(self, din):
self.input = din
bb.utils.nonblockingfd(self.input)
self.queue = b""
self.cookercfg = None
self.databuilder = None
self.data = None
self.extraconfigdata = None
self.build_pids = {}
self.build_pipes = {}
signal.signal(signal.SIGTERM, self.sigterm_exception)
# Let SIGHUP exit as SIGTERM
signal.signal(signal.SIGHUP, self.sigterm_exception)
if "beef" in sys.argv[1]:
bb.utils.set_process_name("Worker (Fakeroot)")
else:
bb.utils.set_process_name("Worker")
def sigterm_exception(self, signum, stackframe):
if signum == signal.SIGTERM:
bb.warn("Worker received SIGTERM, shutting down...")
elif signum == signal.SIGHUP:
bb.warn("Worker received SIGHUP, shutting down...")
self.handle_finishnow(None)
signal.signal(signal.SIGTERM, signal.SIG_DFL)
os.kill(os.getpid(), signal.SIGTERM)
def serve(self):
while True:
(ready, _, _) = select.select([self.input] + [i.input for i in self.build_pipes.values()], [] , [], 1)
if self.input in ready:
try:
r = self.input.read()
if len(r) == 0:
# EOF on pipe, server must have terminated
self.sigterm_exception(signal.SIGTERM, None)
self.queue = self.queue + r
except (OSError, IOError):
pass
if len(self.queue):
self.handle_item(b"cookerconfig", self.handle_cookercfg)
self.handle_item(b"extraconfigdata", self.handle_extraconfigdata)
self.handle_item(b"workerdata", self.handle_workerdata)
self.handle_item(b"runtask", self.handle_runtask)
self.handle_item(b"finishnow", self.handle_finishnow)
self.handle_item(b"ping", self.handle_ping)
self.handle_item(b"quit", self.handle_quit)
for pipe in self.build_pipes:
if self.build_pipes[pipe].input in ready:
self.build_pipes[pipe].read()
if len(self.build_pids):
while self.process_waitpid():
continue
def handle_item(self, item, func):
if self.queue.startswith(b"<" + item + b">"):
index = self.queue.find(b"</" + item + b">")
while index != -1:
func(self.queue[(len(item) + 2):index])
self.queue = self.queue[(index + len(item) + 3):]
index = self.queue.find(b"</" + item + b">")
def handle_cookercfg(self, data):
self.cookercfg = pickle.loads(data)
self.databuilder = bb.cookerdata.CookerDataBuilder(self.cookercfg, worker=True)
self.databuilder.parseBaseConfiguration()
self.data = self.databuilder.data
def handle_extraconfigdata(self, data):
self.extraconfigdata = pickle.loads(data)
def handle_workerdata(self, data):
self.workerdata = pickle.loads(data)
bb.msg.loggerDefaultDebugLevel = self.workerdata["logdefaultdebug"]
bb.msg.loggerDefaultVerbose = self.workerdata["logdefaultverbose"]
bb.msg.loggerVerboseLogs = self.workerdata["logdefaultverboselogs"]
bb.msg.loggerDefaultDomains = self.workerdata["logdefaultdomain"]
for mc in self.databuilder.mcdata:
self.databuilder.mcdata[mc].setVar("PRSERV_HOST", self.workerdata["prhost"])
def handle_ping(self, _):
workerlog_write("Handling ping\n")
logger.warning("Pong from bitbake-worker!")
def handle_quit(self, data):
workerlog_write("Handling quit\n")
global normalexit
normalexit = True
sys.exit(0)
def handle_runtask(self, data):
fn, task, taskname, quieterrors, appends, taskdepdata, dry_run_exec = pickle.loads(data)
workerlog_write("Handling runtask %s %s %s\n" % (task, fn, taskname))
pid, pipein, pipeout = fork_off_task(self.cookercfg, self.data, self.databuilder, self.workerdata, fn, task, taskname, appends, taskdepdata, self.extraconfigdata, quieterrors, dry_run_exec)
self.build_pids[pid] = task
self.build_pipes[pid] = runQueueWorkerPipe(pipein, pipeout)
def process_waitpid(self):
"""
Return none is there are no processes awaiting result collection, otherwise
collect the process exit codes and close the information pipe.
"""
try:
pid, status = os.waitpid(-1, os.WNOHANG)
if pid == 0 or os.WIFSTOPPED(status):
return False
except OSError:
return False
workerlog_write("Exit code of %s for pid %s\n" % (status, pid))
if os.WIFEXITED(status):
status = os.WEXITSTATUS(status)
elif os.WIFSIGNALED(status):
# Per shell conventions for $?, when a process exits due to
# a signal, we return an exit code of 128 + SIGNUM
status = 128 + os.WTERMSIG(status)
task = self.build_pids[pid]
del self.build_pids[pid]
self.build_pipes[pid].close()
del self.build_pipes[pid]
worker_fire_prepickled(b"<exitcode>" + pickle.dumps((task, status)) + b"</exitcode>")
return True
def handle_finishnow(self, _):
if self.build_pids:
logger.info("Sending SIGTERM to remaining %s tasks", len(self.build_pids))
for k, v in iter(self.build_pids.items()):
try:
os.kill(-k, signal.SIGTERM)
os.waitpid(-1, 0)
except:
pass
for pipe in self.build_pipes:
self.build_pipes[pipe].read()
try:
worker = BitbakeWorker(os.fdopen(sys.stdin.fileno(), 'rb'))
if not profiling:
worker.serve()
else:
profname = "profile-worker.log"
prof = profile.Profile()
try:
profile.Profile.runcall(prof, worker.serve)
finally:
prof.dump_stats(profname)
bb.utils.process_profilelog(profname)
except BaseException as e:
if not normalexit:
import traceback
sys.stderr.write(traceback.format_exc())
sys.stderr.write(str(e))
worker_thread_exit = True
worker_thread.join()
workerlog_write("exitting")
sys.exit(0)

531
bitbake/bin/bitdoc Executable file
View File

@@ -0,0 +1,531 @@
#!/usr/bin/env python3
# ex:ts=4:sw=4:sts=4:et
# -*- tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*-
#
# Copyright (C) 2005 Holger Hans Peter Freyther
#
# 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 optparse, os, sys
# bitbake
sys.path.append(os.path.join(os.path.dirname(os.path.dirname(__file__), 'lib'))
import bb
import bb.parse
from string import split, join
__version__ = "0.0.2"
class HTMLFormatter:
"""
Simple class to help to generate some sort of HTML files. It is
quite inferior solution compared to docbook, gtkdoc, doxygen but it
should work for now.
We've a global introduction site (index.html) and then one site for
the list of keys (alphabetical sorted) and one for the list of groups,
one site for each key with links to the relations and groups.
index.html
all_keys.html
all_groups.html
groupNAME.html
keyNAME.html
"""
def replace(self, text, *pairs):
"""
From pydoc... almost identical at least
"""
while pairs:
(a, b) = pairs[0]
text = join(split(text, a), b)
pairs = pairs[1:]
return text
def escape(self, text):
"""
Escape string to be conform HTML
"""
return self.replace(text,
('&', '&amp;'),
('<', '&lt;' ),
('>', '&gt;' ) )
def createNavigator(self):
"""
Create the navgiator
"""
return """<table class="navigation" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2">
<tr valign="middle">
<td><a accesskey="g" href="index.html">Home</a></td>
<td><a accesskey="n" href="all_groups.html">Groups</a></td>
<td><a accesskey="u" href="all_keys.html">Keys</a></td>
</tr></table>
"""
def relatedKeys(self, item):
"""
Create HTML to link to foreign keys
"""
if len(item.related()) == 0:
return ""
txt = "<p><b>See also:</b><br>"
txts = []
for it in item.related():
txts.append("""<a href="key%(it)s.html">%(it)s</a>""" % vars() )
return txt + ",".join(txts)
def groups(self, item):
"""
Create HTML to link to related groups
"""
if len(item.groups()) == 0:
return ""
txt = "<p><b>See also:</b><br>"
txts = []
for group in item.groups():
txts.append( """<a href="group%s.html">%s</a> """ % (group, group) )
return txt + ",".join(txts)
def createKeySite(self, item):
"""
Create a site for a key. It contains the header/navigator, a heading,
the description, links to related keys and to the groups.
"""
return """<!doctype html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html><head><title>Key %s</title></head>
<link rel="stylesheet" href="style.css" type="text/css">
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
%s
<h2><span class="refentrytitle">%s</span></h2>
<div class="refsynopsisdiv">
<h2>Synopsis</h2>
<p>
%s
</p>
</div>
<div class="refsynopsisdiv">
<h2>Related Keys</h2>
<p>
%s
</p>
</div>
<div class="refsynopsisdiv">
<h2>Groups</h2>
<p>
%s
</p>
</div>
</body>
""" % (item.name(), self.createNavigator(), item.name(),
self.escape(item.description()), self.relatedKeys(item), self.groups(item))
def createGroupsSite(self, doc):
"""
Create the Group Overview site
"""
groups = ""
sorted_groups = sorted(doc.groups())
for group in sorted_groups:
groups += """<a href="group%s.html">%s</a><br>""" % (group, group)
return """<!doctype html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html><head><title>Group overview</title></head>
<link rel="stylesheet" href="style.css" type="text/css">
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
%s
<h2>Available Groups</h2>
%s
</body>
""" % (self.createNavigator(), groups)
def createIndex(self):
"""
Create the index file
"""
return """<!doctype html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html><head><title>Bitbake Documentation</title></head>
<link rel="stylesheet" href="style.css" type="text/css">
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
%s
<h2>Documentation Entrance</h2>
<a href="all_groups.html">All available groups</a><br>
<a href="all_keys.html">All available keys</a><br>
</body>
""" % self.createNavigator()
def createKeysSite(self, doc):
"""
Create Overview of all avilable keys
"""
keys = ""
sorted_keys = sorted(doc.doc_keys())
for key in sorted_keys:
keys += """<a href="key%s.html">%s</a><br>""" % (key, key)
return """<!doctype html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html><head><title>Key overview</title></head>
<link rel="stylesheet" href="style.css" type="text/css">
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
%s
<h2>Available Keys</h2>
%s
</body>
""" % (self.createNavigator(), keys)
def createGroupSite(self, gr, items, _description = None):
"""
Create a site for a group:
Group the name of the group, items contain the name of the keys
inside this group
"""
groups = ""
description = ""
# create a section with the group descriptions
if _description:
description += "<h2 Description of Grozp %s</h2>" % gr
description += _description
items.sort(lambda x, y:cmp(x.name(), y.name()))
for group in items:
groups += """<a href="key%s.html">%s</a><br>""" % (group.name(), group.name())
return """<!doctype html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html><head><title>Group %s</title></head>
<link rel="stylesheet" href="style.css" type="text/css">
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
%s
%s
<div class="refsynopsisdiv">
<h2>Keys in Group %s</h2>
<pre class="synopsis">
%s
</pre>
</div>
</body>
""" % (gr, self.createNavigator(), description, gr, groups)
def createCSS(self):
"""
Create the CSS file
"""
return """.synopsis, .classsynopsis
{
background: #eeeeee;
border: solid 1px #aaaaaa;
padding: 0.5em;
}
.programlisting
{
background: #eeeeff;
border: solid 1px #aaaaff;
padding: 0.5em;
}
.variablelist
{
padding: 4px;
margin-left: 3em;
}
.variablelist td:first-child
{
vertical-align: top;
}
table.navigation
{
background: #ffeeee;
border: solid 1px #ffaaaa;
margin-top: 0.5em;
margin-bottom: 0.5em;
}
.navigation a
{
color: #770000;
}
.navigation a:visited
{
color: #550000;
}
.navigation .title
{
font-size: 200%;
}
div.refnamediv
{
margin-top: 2em;
}
div.gallery-float
{
float: left;
padding: 10px;
}
div.gallery-float img
{
border-style: none;
}
div.gallery-spacer
{
clear: both;
}
a
{
text-decoration: none;
}
a:hover
{
text-decoration: underline;
color: #FF0000;
}
"""
class DocumentationItem:
"""
A class to hold information about a configuration
item. It contains the key name, description, a list of related names,
and the group this item is contained in.
"""
def __init__(self):
self._groups = []
self._related = []
self._name = ""
self._desc = ""
def groups(self):
return self._groups
def name(self):
return self._name
def description(self):
return self._desc
def related(self):
return self._related
def setName(self, name):
self._name = name
def setDescription(self, desc):
self._desc = desc
def addGroup(self, group):
self._groups.append(group)
def addRelation(self, relation):
self._related.append(relation)
def sort(self):
self._related.sort()
self._groups.sort()
class Documentation:
"""
Holds the documentation... with mappings from key to items...
"""
def __init__(self):
self.__keys = {}
self.__groups = {}
def insert_doc_item(self, item):
"""
Insert the Doc Item into the internal list
of representation
"""
item.sort()
self.__keys[item.name()] = item
for group in item.groups():
if not group in self.__groups:
self.__groups[group] = []
self.__groups[group].append(item)
self.__groups[group].sort()
def doc_item(self, key):
"""
Return the DocumentationInstance describing the key
"""
try:
return self.__keys[key]
except KeyError:
return None
def doc_keys(self):
"""
Return the documented KEYS (names)
"""
return self.__keys.keys()
def groups(self):
"""
Return the names of available groups
"""
return self.__groups.keys()
def group_content(self, group_name):
"""
Return a list of keys/names that are in a specefic
group or the empty list
"""
try:
return self.__groups[group_name]
except KeyError:
return []
def parse_cmdline(args):
"""
Parse the CMD line and return the result as a n-tuple
"""
parser = optparse.OptionParser( version = "Bitbake Documentation Tool Core version %s, %%prog version %s" % (bb.__version__, __version__))
usage = """%prog [options]
Create a set of html pages (documentation) for a bitbake.conf....
"""
# Add the needed options
parser.add_option( "-c", "--config", help = "Use the specified configuration file as source",
action = "store", dest = "config", default = os.path.join("conf", "documentation.conf") )
parser.add_option( "-o", "--output", help = "Output directory for html files",
action = "store", dest = "output", default = "html/" )
parser.add_option( "-D", "--debug", help = "Increase the debug level",
action = "count", dest = "debug", default = 0 )
parser.add_option( "-v", "--verbose", help = "output more chit-char to the terminal",
action = "store_true", dest = "verbose", default = False )
options, args = parser.parse_args( sys.argv )
bb.msg.init_msgconfig(options.verbose, options.debug)
return options.config, options.output
def main():
"""
The main Method
"""
(config_file, output_dir) = parse_cmdline( sys.argv )
# right to let us load the file now
try:
documentation = bb.parse.handle( config_file, bb.data.init() )
except IOError:
bb.fatal( "Unable to open %s" % config_file )
except bb.parse.ParseError:
bb.fatal( "Unable to parse %s" % config_file )
if isinstance(documentation, dict):
documentation = documentation[""]
# Assuming we've the file loaded now, we will initialize the 'tree'
doc = Documentation()
# defined states
state_begin = 0
state_see = 1
state_group = 2
for key in bb.data.keys(documentation):
data = documentation.getVarFlag(key, "doc", False)
if not data:
continue
# The Documentation now starts
doc_ins = DocumentationItem()
doc_ins.setName(key)
tokens = data.split(' ')
state = state_begin
string= ""
for token in tokens:
token = token.strip(',')
if not state == state_see and token == "@see":
state = state_see
continue
elif not state == state_group and token == "@group":
state = state_group
continue
if state == state_begin:
string += " %s" % token
elif state == state_see:
doc_ins.addRelation(token)
elif state == state_group:
doc_ins.addGroup(token)
# set the description
doc_ins.setDescription(string)
doc.insert_doc_item(doc_ins)
# let us create the HTML now
bb.utils.mkdirhier(output_dir)
os.chdir(output_dir)
# Let us create the sites now. We do it in the following order
# Start with the index.html. It will point to sites explaining all
# keys and groups
html_slave = HTMLFormatter()
f = file('style.css', 'w')
print >> f, html_slave.createCSS()
f = file('index.html', 'w')
print >> f, html_slave.createIndex()
f = file('all_groups.html', 'w')
print >> f, html_slave.createGroupsSite(doc)
f = file('all_keys.html', 'w')
print >> f, html_slave.createKeysSite(doc)
# now for each group create the site
for group in doc.groups():
f = file('group%s.html' % group, 'w')
print >> f, html_slave.createGroupSite(group, doc.group_content(group))
# now for the keys
for key in doc.doc_keys():
f = file('key%s.html' % doc.doc_item(key).name(), 'w')
print >> f, html_slave.createKeySite(doc.doc_item(key))
if __name__ == "__main__":
main()

281
bitbake/bin/toaster Executable file
View File

@@ -0,0 +1,281 @@
#!/bin/echo ERROR: This script needs to be sourced. Please run as .
# toaster - shell script to start Toaster
# Copyright (C) 2013-2015 Intel Corp.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# 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, see http://www.gnu.org/licenses/.
HELP="
Usage: source toaster start|stop [webport=<address:port>] [noweb]
Optional arguments:
[noweb] Setup the environment for building with toaster but don't start the development server
[webport] Set the development server (default: localhost:8000)
"
databaseCheck()
{
retval=0
# you can always add a superuser later via
# ../bitbake/lib/toaster/manage.py createsuperuser --username=<ME>
$MANAGE migrate --noinput || retval=1
if [ $retval -eq 1 ]; then
echo "Failed migrations, aborting system start" 1>&2
return $retval
fi
# Make sure that checksettings can pick up any value for TEMPLATECONF
export TEMPLATECONF
$MANAGE checksettings --traceback || retval=1
if [ $retval -eq 1 ]; then
printf "\nError while checking settings; aborting\n"
return $retval
fi
return $retval
}
webserverKillAll()
{
local pidfile
for pidfile in ${BUILDDIR}/.toastermain.pid ${BUILDDIR}/.runbuilds.pid; do
if [ -f ${pidfile} ]; then
pid=`cat ${pidfile}`
while kill -0 $pid 2>/dev/null; do
kill -SIGTERM -$pid 2>/dev/null
sleep 1
done
rm ${pidfile}
fi
done
}
webserverStartAll()
{
# do not start if toastermain points to a valid process
if ! cat "${BUILDDIR}/.toastermain.pid" 2>/dev/null | xargs -I{} kill -0 {} ; then
retval=1
rm "${BUILDDIR}/.toastermain.pid"
fi
retval=0
# check the database
databaseCheck || return 1
echo "Starting webserver..."
$MANAGE runserver "$ADDR_PORT" \
</dev/null >>${BUILDDIR}/toaster_web.log 2>&1 \
& echo $! >${BUILDDIR}/.toastermain.pid
sleep 1
if ! cat "${BUILDDIR}/.toastermain.pid" | xargs -I{} kill -0 {} ; then
retval=1
rm "${BUILDDIR}/.toastermain.pid"
else
echo "Toaster development webserver started at http://$ADDR_PORT"
echo -e "\nYou can now run 'bitbake <target>' on the command line and monitor your build in Toaster.\nYou can also use a Toaster project to configure and run a build.\n"
fi
return $retval
}
INSTOPSYSTEM=0
# define the stop command
stop_system()
{
# prevent reentry
if [ $INSTOPSYSTEM -eq 1 ]; then return; fi
INSTOPSYSTEM=1
webserverKillAll
# unset exported variables
unset TOASTER_DIR
unset BITBAKE_UI
unset BBBASEDIR
trap - SIGHUP
#trap - SIGCHLD
INSTOPSYSTEM=0
}
verify_prereq() {
# Verify Django version
reqfile=$(python3 -c "import os; print(os.path.realpath('$BBBASEDIR/toaster-requirements.txt'))")
exp='s/Django\([><=]\+\)\([^,]\+\),\([><=]\+\)\(.\+\)/'
exp=$exp'import sys,django;version=django.get_version().split(".");'
exp=$exp'sys.exit(not (version \1 "\2".split(".") and version \3 "\4".split(".")))/p'
if ! sed -n "$exp" $reqfile | python3 - ; then
req=`grep ^Django $reqfile`
echo "This program needs $req"
echo "Please install with pip3 install -r $reqfile"
return 2
fi
return 0
}
# read command line parameters
if [ -n "$BASH_SOURCE" ] ; then
TOASTER=${BASH_SOURCE}
elif [ -n "$ZSH_NAME" ] ; then
TOASTER=${(%):-%x}
else
TOASTER=$0
fi
export BBBASEDIR=`dirname $TOASTER`/..
MANAGE="python3 $BBBASEDIR/lib/toaster/manage.py"
OE_ROOT=`dirname $TOASTER`/../..
# this is the configuraton file we are using for toaster
# we are using the same logic that oe-setup-builddir uses
# (based on TEMPLATECONF and .templateconf) to determine
# which toasterconf.json to use.
# note: There are a number of relative path assumptions
# in the local layers that currently make using an arbitrary
# toasterconf.json difficult.
. $OE_ROOT/.templateconf
if [ -n "$TEMPLATECONF" ]; then
if [ ! -d "$TEMPLATECONF" ]; then
# Allow TEMPLATECONF=meta-xyz/conf as a shortcut
if [ -d "$OE_ROOT/$TEMPLATECONF" ]; then
TEMPLATECONF="$OE_ROOT/$TEMPLATECONF"
fi
fi
fi
unset OE_ROOT
WEBSERVER=1
ADDR_PORT="localhost:8000"
unset CMD
for param in $*; do
case $param in
noweb )
WEBSERVER=0
;;
start )
CMD=$param
;;
stop )
CMD=$param
;;
webport=*)
ADDR_PORT="${param#*=}"
# Split the addr:port string
ADDR=`echo $ADDR_PORT | cut -f 1 -d ':'`
PORT=`echo $ADDR_PORT | cut -f 2 -d ':'`
# If only a port has been speified then set address to localhost.
if [ $ADDR = $PORT ] ; then
ADDR_PORT="localhost:$PORT"
fi
;;
--help)
echo "$HELP"
return 0
;;
*)
echo "$HELP"
return 1
;;
esac
done
if [ `basename \"$0\"` = `basename \"${TOASTER}\"` ]; then
echo "Error: This script needs to be sourced. Please run as . $TOASTER"
return 1
fi
verify_prereq || return 1
# We make sure we're running in the current shell and in a good environment
if [ -z "$BUILDDIR" ] || ! which bitbake >/dev/null 2>&1 ; then
echo "Error: Build environment is not setup or bitbake is not in path." 1>&2
return 2
fi
# this defines the dir toaster will use for
# 1) clones of layers (in _toaster_clones )
# 2) the build dir (in build)
# 3) the sqlite db if that is being used.
# 4) pid's we need to clean up on exit/shutdown
export TOASTER_DIR=`dirname $BUILDDIR`
export BB_ENV_EXTRAWHITE="$BB_ENV_EXTRAWHITE TOASTER_DIR"
# Determine the action. If specified by arguments, fine, if not, toggle it
if [ "$CMD" = "start" ] ; then
if [ -n "$BBSERVER" ]; then
echo " Toaster is already running. Exiting..."
return 1
fi
elif [ "$CMD" = "" ]; then
echo "No command specified"
echo "$HELP"
return 1
fi
echo "The system will $CMD."
# Execute the commands
case $CMD in
start )
# check if addr:port is not in use
if [ "$CMD" == 'start' ]; then
if [ $WEBSERVER -gt 0 ]; then
$MANAGE checksocket "$ADDR_PORT" || return 1
fi
fi
# Create configuration file
conf=${BUILDDIR}/conf/local.conf
line='INHERIT+="toaster buildhistory"'
grep -q "$line" $conf || echo $line >> $conf
if [ $WEBSERVER -eq 0 ] ; then
# Do not update the database for "noweb" unless
# it does not yet exist
if [ ! -f "$TOASTER_DIR/toaster.sqlite" ] ; then
if ! databaseCheck; then
echo "Failed ${CMD}."
return 4
fi
fi
fi
if [ $WEBSERVER -gt 0 ] && ! webserverStartAll; then
echo "Failed ${CMD}."
return 4
fi
export BITBAKE_UI='toasterui'
$MANAGE runbuilds \
</dev/null >>${BUILDDIR}/toaster_runbuilds.log 2>&1 \
& echo $! >${BUILDDIR}/.runbuilds.pid
# set fail safe stop system on terminal exit
trap stop_system SIGHUP
echo "Successful ${CMD}."
return 0
;;
stop )
stop_system
echo "Successful ${CMD}."
;;
esac

126
bitbake/bin/toaster-eventreplay Executable file
View File

@@ -0,0 +1,126 @@
#!/usr/bin/env python3
# ex:ts=4:sw=4:sts=4:et
# -*- tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*-
#
# Copyright (C) 2014 Alex Damian
#
# This file re-uses code spread throughout other Bitbake source files.
# As such, all other copyrights belong to their own right holders.
#
#
# 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.
"""
This command takes a filename as a single parameter. The filename is read
as a build eventlog, and the ToasterUI is used to process events in the file
and log data in the database
"""
import os
import sys
import json
import pickle
import codecs
from collections import namedtuple
# mangle syspath to allow easy import of modules
from os.path import join, dirname, abspath
sys.path.insert(0, join(dirname(dirname(abspath(__file__))), 'lib'))
import bb.cooker
from bb.ui import toasterui
class EventPlayer:
"""Emulate a connection to a bitbake server."""
def __init__(self, eventfile, variables):
self.eventfile = eventfile
self.variables = variables
self.eventmask = []
def waitEvent(self, _timeout):
"""Read event from the file."""
line = self.eventfile.readline().strip()
if not line:
return
try:
event_str = json.loads(line)['vars'].encode('utf-8')
event = pickle.loads(codecs.decode(event_str, 'base64'))
event_name = "%s.%s" % (event.__module__, event.__class__.__name__)
if event_name not in self.eventmask:
return
return event
except ValueError as err:
print("Failed loading ", line)
raise err
def runCommand(self, command_line):
"""Emulate running a command on the server."""
name = command_line[0]
if name == "getVariable":
var_name = command_line[1]
variable = self.variables.get(var_name)
if variable:
return variable['v'], None
return None, "Missing variable %s" % var_name
elif name == "getAllKeysWithFlags":
dump = {}
flaglist = command_line[1]
for key, val in self.variables.items():
try:
if not key.startswith("__"):
dump[key] = {
'v': val['v'],
'history' : val['history'],
}
for flag in flaglist:
dump[key][flag] = val[flag]
except Exception as err:
print(err)
return (dump, None)
elif name == 'setEventMask':
self.eventmask = command_line[-1]
return True, None
else:
raise Exception("Command %s not implemented" % command_line[0])
def getEventHandle(self):
"""
This method is called by toasterui.
The return value is passed to self.runCommand but not used there.
"""
pass
def main(argv):
with open(argv[-1]) as eventfile:
# load variables from the first line
variables = json.loads(eventfile.readline().strip())['allvariables']
params = namedtuple('ConfigParams', ['observe_only'])(True)
player = EventPlayer(eventfile, variables)
return toasterui.main(player, player, params)
# run toaster ui on our mock bitbake class
if __name__ == "__main__":
if len(sys.argv) != 2:
print("Usage: %s <event file>" % os.path.basename(sys.argv[0]))
sys.exit(1)
sys.exit(main(sys.argv))

1
bitbake/contrib/README Normal file
View File

@@ -0,0 +1 @@
This directory is for additional contributed files which may be useful.

31
bitbake/contrib/bbdev.sh Normal file
View File

@@ -0,0 +1,31 @@
# This is a shell function to be sourced into your shell or placed in your .profile,
# which makes setting things up for BitBake a bit easier.
#
# The author disclaims copyright to the contents of this file and places it in the
# public domain.
bbdev () {
local BBDIR PKGDIR BUILDDIR
if test x"$1" = "x--help"; then echo >&2 "syntax: bbdev [bbdir [pkgdir [builddir]]]"; return 1; fi
if test x"$1" = x; then BBDIR=`pwd`; else BBDIR=$1; fi
if test x"$2" = x; then PKGDIR=`pwd`; else PKGDIR=$2; fi
if test x"$3" = x; then BUILDDIR=`pwd`; else BUILDDIR=$3; fi
BBDIR=`readlink -f $BBDIR`
PKGDIR=`readlink -f $PKGDIR`
BUILDDIR=`readlink -f $BUILDDIR`
if ! (test -d $BBDIR && test -d $PKGDIR && test -d $BUILDDIR); then
echo >&2 "syntax: bbdev [bbdir [pkgdir [builddir]]]"
return 1
fi
PATH=$BBDIR/bin:$PATH
BBPATH=$BBDIR
if test x"$BBDIR" != x"$PKGDIR"; then
BBPATH=$PKGDIR:$BBPATH
fi
if test x"$PKGDIR" != x"$BUILDDIR"; then
BBPATH=$BUILDDIR:$BBPATH
fi
export BBPATH
}

68
bitbake/contrib/dump_cache.py Executable file
View File

@@ -0,0 +1,68 @@
#!/usr/bin/env python3
# ex:ts=4:sw=4:sts=4:et
# -*- tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*-
#
# Copyright (C) 2012 Wind River Systems, Inc.
#
# 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.
#
# This is used for dumping the bb_cache.dat, the output format is:
# recipe_path PN PV PACKAGES
#
import os
import sys
import warnings
# For importing bb.cache
sys.path.insert(0, os.path.join(os.path.abspath(os.path.dirname(sys.argv[0])), '../lib'))
from bb.cache import CoreRecipeInfo
import pickle as pickle
def main(argv=None):
"""
Get the mapping for the target recipe.
"""
if len(argv) != 1:
print("Error, need one argument!", file=sys.stderr)
return 2
cachefile = argv[0]
with open(cachefile, "rb") as cachefile:
pickled = pickle.Unpickler(cachefile)
while cachefile:
try:
key = pickled.load()
val = pickled.load()
except Exception:
break
if isinstance(val, CoreRecipeInfo) and (not val.skipped):
pn = val.pn
# Filter out the native recipes.
if key.startswith('virtual:native:') or pn.endswith("-native"):
continue
# 1.0 is the default version for a no PV recipe.
if "pv" in val.__dict__:
pv = val.pv
else:
pv = "1.0"
print("%s %s %s %s" % (key, pn, pv, ' '.join(val.packages)))
if __name__ == "__main__":
sys.exit(main(sys.argv[1:]))

View File

@@ -0,0 +1,24 @@
" Vim filetype detection file
" Language: BitBake
" Author: Ricardo Salveti <rsalveti@rsalveti.net>
" Copyright: Copyright (C) 2008 Ricardo Salveti <rsalveti@rsalveti.net>
" Licence: You may redistribute this under the same terms as Vim itself
"
" This sets up the syntax highlighting for BitBake files, like .bb, .bbclass and .inc
if &compatible || version < 600
finish
endif
" .bb, .bbappend and .bbclass
au BufNewFile,BufRead *.{bb,bbappend,bbclass} set filetype=bitbake
" .inc
au BufNewFile,BufRead *.inc set filetype=bitbake
" .conf
au BufNewFile,BufRead *.conf
\ if (match(expand("%:p:h"), "conf") > 0) |
\ set filetype=bitbake |
\ endif

View File

@@ -0,0 +1,2 @@
set sts=4 sw=4 et
set cms=#%s

View File

@@ -0,0 +1,84 @@
" Vim plugin file
" Purpose: Create a template for new bb files
" Author: Ricardo Salveti <rsalveti@gmail.com>
" Copyright: Copyright (C) 2008 Ricardo Salveti <rsalveti@gmail.com>
"
" This file is licensed under the MIT license, see COPYING.MIT in
" this source distribution for the terms.
"
" Based on the gentoo-syntax package
"
" Will try to use git to find the user name and email
if &compatible || v:version < 600
finish
endif
fun! <SID>GetUserName()
let l:user_name = system("git config --get user.name")
if v:shell_error
return "Unknown User"
else
return substitute(l:user_name, "\n", "", "")
endfun
fun! <SID>GetUserEmail()
let l:user_email = system("git config --get user.email")
if v:shell_error
return "unknow@user.org"
else
return substitute(l:user_email, "\n", "", "")
endfun
fun! BBHeader()
let l:current_year = strftime("%Y")
let l:user_name = <SID>GetUserName()
let l:user_email = <SID>GetUserEmail()
0 put ='# Copyright (C) ' . l:current_year .
\ ' ' . l:user_name . ' <' . l:user_email . '>'
put ='# Released under the MIT license (see COPYING.MIT for the terms)'
$
endfun
fun! NewBBTemplate()
let l:paste = &paste
set nopaste
" Get the header
call BBHeader()
" New the bb template
put ='DESCRIPTION = \"\"'
put ='HOMEPAGE = \"\"'
put ='LICENSE = \"\"'
put ='SECTION = \"\"'
put ='DEPENDS = \"\"'
put =''
put ='SRC_URI = \"\"'
" Go to the first place to edit
0
/^DESCRIPTION =/
exec "normal 2f\""
if paste == 1
set paste
endif
endfun
if !exists("g:bb_create_on_empty")
let g:bb_create_on_empty = 1
endif
" disable in case of vimdiff
if v:progname =~ "vimdiff"
let g:bb_create_on_empty = 0
endif
augroup NewBB
au BufNewFile *.bb
\ if g:bb_create_on_empty |
\ call NewBBTemplate() |
\ endif
augroup END

View File

@@ -0,0 +1,126 @@
" Vim syntax file
" Language: BitBake bb/bbclasses/inc
" Author: Chris Larson <kergoth@handhelds.org>
" Ricardo Salveti <rsalveti@rsalveti.net>
" Copyright: Copyright (C) 2004 Chris Larson <kergoth@handhelds.org>
" Copyright (C) 2008 Ricardo Salveti <rsalveti@rsalveti.net>
"
" This file is licensed under the MIT license, see COPYING.MIT in
" this source distribution for the terms.
"
" Syntax highlighting for bb, bbclasses and inc files.
"
" It's an entirely new type, just has specific syntax in shell and python code
if &compatible || v:version < 600
finish
endif
if exists("b:current_syntax")
finish
endif
syn include @python syntax/python.vim
if exists("b:current_syntax")
unlet b:current_syntax
endif
" BitBake syntax
" Matching case
syn case match
" Indicates the error when nothing is matched
syn match bbUnmatched "."
" Comments
syn cluster bbCommentGroup contains=bbTodo,@Spell
syn keyword bbTodo COMBAK FIXME TODO XXX contained
syn match bbComment "#.*$" contains=@bbCommentGroup
" String helpers
syn match bbQuote +['"]+ contained
syn match bbDelimiter "[(){}=]" contained
syn match bbArrayBrackets "[\[\]]" contained
" BitBake strings
syn match bbContinue "\\$"
syn region bbString matchgroup=bbQuote start=+"+ skip=+\\$+ end=+"+ contained contains=bbTodo,bbContinue,bbVarDeref,bbVarPyValue,@Spell
syn region bbString matchgroup=bbQuote start=+'+ skip=+\\$+ end=+'+ contained contains=bbTodo,bbContinue,bbVarDeref,bbVarPyValue,@Spell
" Vars definition
syn match bbExport "^export" nextgroup=bbIdentifier skipwhite
syn keyword bbExportFlag export contained nextgroup=bbIdentifier skipwhite
syn match bbIdentifier "[a-zA-Z0-9\-_\.\/\+]\+" display contained
syn match bbVarDeref "${[a-zA-Z0-9\-_\.\/\+]\+}" contained
syn match bbVarEq "\(:=\|+=\|=+\|\.=\|=\.\|?=\|??=\|=\)" contained nextgroup=bbVarValue
syn match bbVarDef "^\(export\s*\)\?\([a-zA-Z0-9\-_\.\/\+]\+\(_[${}a-zA-Z0-9\-_\.\/\+]\+\)\?\)\s*\(:=\|+=\|=+\|\.=\|=\.\|?=\|??=\|=\)\@=" contains=bbExportFlag,bbIdentifier,bbVarDeref nextgroup=bbVarEq
syn match bbVarValue ".*$" contained contains=bbString,bbVarDeref,bbVarPyValue
syn region bbVarPyValue start=+${@+ skip=+\\$+ end=+}+ contained contains=@python
" Vars metadata flags
syn match bbVarFlagDef "^\([a-zA-Z0-9\-_\.]\+\)\(\[[a-zA-Z0-9\-_\.]\+\]\)\@=" contains=bbIdentifier nextgroup=bbVarFlagFlag
syn region bbVarFlagFlag matchgroup=bbArrayBrackets start="\[" end="\]\s*\(=\|+=\|=+\|?=\)\@=" contained contains=bbIdentifier nextgroup=bbVarEq
" Includes and requires
syn keyword bbInclude inherit include require contained
syn match bbIncludeRest ".*$" contained contains=bbString,bbVarDeref
syn match bbIncludeLine "^\(inherit\|include\|require\)\s\+" contains=bbInclude nextgroup=bbIncludeRest
" Add taks and similar
syn keyword bbStatement addtask addhandler after before EXPORT_FUNCTIONS contained
syn match bbStatementRest ".*$" skipwhite contained contains=bbStatement
syn match bbStatementLine "^\(addtask\|addhandler\|after\|before\|EXPORT_FUNCTIONS\)\s\+" contains=bbStatement nextgroup=bbStatementRest
" OE Important Functions
syn keyword bbOEFunctions do_fetch do_unpack do_patch do_configure do_compile do_stage do_install do_package contained
" Generic Functions
syn match bbFunction "\h[0-9A-Za-z_-]*" display contained contains=bbOEFunctions
" BitBake shell metadata
syn include @shell syntax/sh.vim
if exists("b:current_syntax")
unlet b:current_syntax
endif
syn keyword bbShFakeRootFlag fakeroot contained
syn match bbShFuncDef "^\(fakeroot\s*\)\?\([0-9A-Za-z_${}-]\+\)\(python\)\@<!\(\s*()\s*\)\({\)\@=" contains=bbShFakeRootFlag,bbFunction,bbVarDeref,bbDelimiter nextgroup=bbShFuncRegion skipwhite
syn region bbShFuncRegion matchgroup=bbDelimiter start="{\s*$" end="^}\s*$" contained contains=@shell
" Python value inside shell functions
syn region shDeref start=+${@+ skip=+\\$+ excludenl end=+}+ contained contains=@python
" BitBake python metadata
syn keyword bbPyFlag python contained
syn match bbPyFuncDef "^\(python\s\+\)\([0-9A-Za-z_${}-]\+\)\?\(\s*()\s*\)\({\)\@=" contains=bbPyFlag,bbFunction,bbVarDeref,bbDelimiter nextgroup=bbPyFuncRegion skipwhite
syn region bbPyFuncRegion matchgroup=bbDelimiter start="{\s*$" end="^}\s*$" contained contains=@python
" BitBake 'def'd python functions
syn keyword bbPyDef def contained
syn region bbPyDefRegion start='^\(def\s\+\)\([0-9A-Za-z_-]\+\)\(\s*(.*)\s*\):\s*$' end='^\(\s\|$\)\@!' contains=@python
" Highlighting Definitions
hi def link bbUnmatched Error
hi def link bbInclude Include
hi def link bbTodo Todo
hi def link bbComment Comment
hi def link bbQuote String
hi def link bbString String
hi def link bbDelimiter Keyword
hi def link bbArrayBrackets Statement
hi def link bbContinue Special
hi def link bbExport Type
hi def link bbExportFlag Type
hi def link bbIdentifier Identifier
hi def link bbVarDeref PreProc
hi def link bbVarDef Identifier
hi def link bbVarValue String
hi def link bbShFakeRootFlag Type
hi def link bbFunction Function
hi def link bbPyFlag Type
hi def link bbPyDef Statement
hi def link bbStatement Statement
hi def link bbStatementRest Identifier
hi def link bbOEFunctions Special
hi def link bbVarPyValue PreProc
let b:current_syntax = "bb"

339
bitbake/doc/COPYING.GPL Normal file
View File

@@ -0,0 +1,339 @@
GNU GENERAL PUBLIC LICENSE
Version 2, June 1991
Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
Preamble
The licenses for most software are designed to take away your
freedom to share and change it. By contrast, the GNU General Public
License is intended to guarantee your freedom to share and change free
software--to make sure the software is free for all its users. This
General Public License applies to most of the Free Software
Foundation's software and to any other program whose authors commit to
using it. (Some other Free Software Foundation software is covered by
the GNU Lesser General Public License instead.) You can apply it to
your programs, too.
When we speak of free software, we are referring to freedom, not
price. Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
this service if you wish), that you receive source code or can get it
if you want it, that you can change the software or use pieces of it
in new free programs; and that you know you can do these things.
To protect your rights, we need to make restrictions that forbid
anyone to deny you these rights or to ask you to surrender the rights.
These restrictions translate to certain responsibilities for you if you
distribute copies of the software, or if you modify it.
For example, if you distribute copies of such a program, whether
gratis or for a fee, you must give the recipients all the rights that
you have. You must make sure that they, too, receive or can get the
source code. And you must show them these terms so they know their
rights.
We protect your rights with two steps: (1) copyright the software, and
(2) offer you this license which gives you legal permission to copy,
distribute and/or modify the software.
Also, for each author's protection and ours, we want to make certain
that everyone understands that there is no warranty for this free
software. If the software is modified by someone else and passed on, we
want its recipients to know that what they have is not the original, so
that any problems introduced by others will not reflect on the original
authors' reputations.
Finally, any free program is threatened constantly by software
patents. We wish to avoid the danger that redistributors of a free
program will individually obtain patent licenses, in effect making the
program proprietary. To prevent this, we have made it clear that any
patent must be licensed for everyone's free use or not licensed at all.
The precise terms and conditions for copying, distribution and
modification follow.
GNU GENERAL PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
0. This License applies to any program or other work which contains
a notice placed by the copyright holder saying it may be distributed
under the terms of this General Public License. The "Program", below,
refers to any such program or work, and a "work based on the Program"
means either the Program or any derivative work under copyright law:
that is to say, a work containing the Program or a portion of it,
either verbatim or with modifications and/or translated into another
language. (Hereinafter, translation is included without limitation in
the term "modification".) Each licensee is addressed as "you".
Activities other than copying, distribution and modification are not
covered by this License; they are outside its scope. The act of
running the Program is not restricted, and the output from the Program
is covered only if its contents constitute a work based on the
Program (independent of having been made by running the Program).
Whether that is true depends on what the Program does.
1. You may copy and distribute verbatim copies of the Program's
source code as you receive it, in any medium, provided that you
conspicuously and appropriately publish on each copy an appropriate
copyright notice and disclaimer of warranty; keep intact all the
notices that refer to this License and to the absence of any warranty;
and give any other recipients of the Program a copy of this License
along with the Program.
You may charge a fee for the physical act of transferring a copy, and
you may at your option offer warranty protection in exchange for a fee.
2. You may modify your copy or copies of the Program or any portion
of it, thus forming a work based on the Program, and copy and
distribute such modifications or work under the terms of Section 1
above, provided that you also meet all of these conditions:
a) You must cause the modified files to carry prominent notices
stating that you changed the files and the date of any change.
b) You must cause any work that you distribute or publish, that in
whole or in part contains or is derived from the Program or any
part thereof, to be licensed as a whole at no charge to all third
parties under the terms of this License.
c) If the modified program normally reads commands interactively
when run, you must cause it, when started running for such
interactive use in the most ordinary way, to print or display an
announcement including an appropriate copyright notice and a
notice that there is no warranty (or else, saying that you provide
a warranty) and that users may redistribute the program under
these conditions, and telling the user how to view a copy of this
License. (Exception: if the Program itself is interactive but
does not normally print such an announcement, your work based on
the Program is not required to print an announcement.)
These requirements apply to the modified work as a whole. If
identifiable sections of that work are not derived from the Program,
and can be reasonably considered independent and separate works in
themselves, then this License, and its terms, do not apply to those
sections when you distribute them as separate works. But when you
distribute the same sections as part of a whole which is a work based
on the Program, the distribution of the whole must be on the terms of
this License, whose permissions for other licensees extend to the
entire whole, and thus to each and every part regardless of who wrote it.
Thus, it is not the intent of this section to claim rights or contest
your rights to work written entirely by you; rather, the intent is to
exercise the right to control the distribution of derivative or
collective works based on the Program.
In addition, mere aggregation of another work not based on the Program
with the Program (or with a work based on the Program) on a volume of
a storage or distribution medium does not bring the other work under
the scope of this License.
3. You may copy and distribute the Program (or a work based on it,
under Section 2) in object code or executable form under the terms of
Sections 1 and 2 above provided that you also do one of the following:
a) Accompany it with the complete corresponding machine-readable
source code, which must be distributed under the terms of Sections
1 and 2 above on a medium customarily used for software interchange; or,
b) Accompany it with a written offer, valid for at least three
years, to give any third party, for a charge no more than your
cost of physically performing source distribution, a complete
machine-readable copy of the corresponding source code, to be
distributed under the terms of Sections 1 and 2 above on a medium
customarily used for software interchange; or,
c) Accompany it with the information you received as to the offer
to distribute corresponding source code. (This alternative is
allowed only for noncommercial distribution and only if you
received the program in object code or executable form with such
an offer, in accord with Subsection b above.)
The source code for a work means the preferred form of the work for
making modifications to it. For an executable work, complete source
code means all the source code for all modules it contains, plus any
associated interface definition files, plus the scripts used to
control compilation and installation of the executable. However, as a
special exception, the source code distributed need not include
anything that is normally distributed (in either source or binary
form) with the major components (compiler, kernel, and so on) of the
operating system on which the executable runs, unless that component
itself accompanies the executable.
If distribution of executable or object code is made by offering
access to copy from a designated place, then offering equivalent
access to copy the source code from the same place counts as
distribution of the source code, even though third parties are not
compelled to copy the source along with the object code.
4. You may not copy, modify, sublicense, or distribute the Program
except as expressly provided under this License. Any attempt
otherwise to copy, modify, sublicense or distribute the Program is
void, and will automatically terminate your rights under this License.
However, parties who have received copies, or rights, from you under
this License will not have their licenses terminated so long as such
parties remain in full compliance.
5. You are not required to accept this License, since you have not
signed it. However, nothing else grants you permission to modify or
distribute the Program or its derivative works. These actions are
prohibited by law if you do not accept this License. Therefore, by
modifying or distributing the Program (or any work based on the
Program), you indicate your acceptance of this License to do so, and
all its terms and conditions for copying, distributing or modifying
the Program or works based on it.
6. Each time you redistribute the Program (or any work based on the
Program), the recipient automatically receives a license from the
original licensor to copy, distribute or modify the Program subject to
these terms and conditions. You may not impose any further
restrictions on the recipients' exercise of the rights granted herein.
You are not responsible for enforcing compliance by third parties to
this License.
7. If, as a consequence of a court judgment or allegation of patent
infringement or for any other reason (not limited to patent issues),
conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot
distribute so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you
may not distribute the Program at all. For example, if a patent
license would not permit royalty-free redistribution of the Program by
all those who receive copies directly or indirectly through you, then
the only way you could satisfy both it and this License would be to
refrain entirely from distribution of the Program.
If any portion of this section is held invalid or unenforceable under
any particular circumstance, the balance of the section is intended to
apply and the section as a whole is intended to apply in other
circumstances.
It is not the purpose of this section to induce you to infringe any
patents or other property right claims or to contest validity of any
such claims; this section has the sole purpose of protecting the
integrity of the free software distribution system, which is
implemented by public license practices. Many people have made
generous contributions to the wide range of software distributed
through that system in reliance on consistent application of that
system; it is up to the author/donor to decide if he or she is willing
to distribute software through any other system and a licensee cannot
impose that choice.
This section is intended to make thoroughly clear what is believed to
be a consequence of the rest of this License.
8. If the distribution and/or use of the Program is restricted in
certain countries either by patents or by copyrighted interfaces, the
original copyright holder who places the Program under this License
may add an explicit geographical distribution limitation excluding
those countries, so that distribution is permitted only in or among
countries not thus excluded. In such case, this License incorporates
the limitation as if written in the body of this License.
9. The Free Software Foundation may publish revised and/or new versions
of the General Public License from time to time. Such new versions will
be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.
Each version is given a distinguishing version number. If the Program
specifies a version number of this License which applies to it and "any
later version", you have the option of following the terms and conditions
either of that version or of any later version published by the Free
Software Foundation. If the Program does not specify a version number of
this License, you may choose any version ever published by the Free Software
Foundation.
10. If you wish to incorporate parts of the Program into other free
programs whose distribution conditions are different, write to the author
to ask for permission. For software which is copyrighted by the Free
Software Foundation, write to the Free Software Foundation; we sometimes
make exceptions for this. Our decision will be guided by the two goals
of preserving the free status of all derivatives of our free software and
of promoting the sharing and reuse of software generally.
NO WARRANTY
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
REPAIR OR CORRECTION.
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
POSSIBILITY OF SUCH DAMAGES.
END OF TERMS AND CONDITIONS
How to Apply These Terms to Your New Programs
If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these terms.
To do so, attach the following notices to the program. It is safest
to attach them to the start of each source file to most effectively
convey the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found.
<one line to give the program's name and a brief idea of what it does.>
Copyright (C) <year> <name of author>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
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.
Also add information on how to contact you by electronic and paper mail.
If the program is interactive, make it output a short notice like this
when it starts in an interactive mode:
Gnomovision version 69, Copyright (C) year name of author
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
This is free software, and you are welcome to redistribute it
under certain conditions; type `show c' for details.
The hypothetical commands `show w' and `show c' should show the appropriate
parts of the General Public License. Of course, the commands you use may
be called something other than `show w' and `show c'; they could even be
mouse-clicks or menu items--whatever suits your program.
You should also get your employer (if you work as a programmer) or your
school, if any, to sign a "copyright disclaimer" for the program, if
necessary. Here is a sample; alter the names:
Yoyodyne, Inc., hereby disclaims all copyright interest in the program
`Gnomovision' (which makes passes at compilers) written by James Hacker.
<signature of Ty Coon>, 1 April 1989
Ty Coon, President of Vice
This General Public License does not permit incorporating your program into
proprietary programs. If your program is a subroutine library, you may
consider it more useful to permit linking proprietary applications with the
library. If this is what you want to do, use the GNU Lesser General
Public License instead of this License.

17
bitbake/doc/COPYING.MIT Normal file
View File

@@ -0,0 +1,17 @@
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT
SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR
THE USE OR OTHER DEALINGS IN THE SOFTWARE.

91
bitbake/doc/Makefile Normal file
View File

@@ -0,0 +1,91 @@
# This is a single Makefile to handle all generated BitBake documents.
# The Makefile needs to live in the documentation directory and all figures used
# in any manuals must be .PNG files and live in the individual book's figures
# directory.
#
# The Makefile has these targets:
#
# pdf: generates a PDF version of a manual.
# html: generates an HTML version of a manual.
# tarball: creates a tarball for the doc files.
# validate: validates
# clean: removes files
#
# The Makefile generates an HTML version of every document. The
# variable DOC indicates the folder name for a given manual.
#
# To build a manual, you must invoke 'make' with the DOC argument.
#
# Examples:
#
# make DOC=bitbake-user-manual
# make pdf DOC=bitbake-user-manual
#
# The first example generates the HTML version of the User Manual.
# The second example generates the PDF version of the User Manual.
#
ifeq ($(DOC),bitbake-user-manual)
XSLTOPTS = --stringparam html.stylesheet bitbake-user-manual-style.css \
--stringparam chapter.autolabel 1 \
--stringparam section.autolabel 1 \
--stringparam section.label.includes.component.label 1 \
--xinclude
ALLPREQ = html tarball
TARFILES = bitbake-user-manual-style.css bitbake-user-manual.html figures/bitbake-title.png
MANUALS = $(DOC)/$(DOC).html
FIGURES = figures
STYLESHEET = $(DOC)/*.css
endif
##
# These URI should be rewritten by your distribution's xml catalog to
# match your localy installed XSL stylesheets.
XSL_BASE_URI = http://docbook.sourceforge.net/release/xsl/current
XSL_XHTML_URI = $(XSL_BASE_URI)/xhtml/docbook.xsl
all: $(ALLPREQ)
pdf:
ifeq ($(DOC),bitbake-user-manual)
@echo " "
@echo "********** Building."$(DOC)
@echo " "
cd $(DOC); ../tools/docbook-to-pdf $(DOC).xml ../template; cd ..
endif
html:
ifeq ($(DOC),bitbake-user-manual)
# See http://www.sagehill.net/docbookxsl/HtmlOutput.html
@echo " "
@echo "******** Building "$(DOC)
@echo " "
cd $(DOC); xsltproc $(XSLTOPTS) -o $(DOC).html $(DOC)-customization.xsl $(DOC).xml; cd ..
endif
tarball: html
@echo " "
@echo "******** Creating Tarball of document files"
@echo " "
cd $(DOC); tar -cvzf $(DOC).tgz $(TARFILES); cd ..
validate:
cd $(DOC); xmllint --postvalid --xinclude --noout $(DOC).xml; cd ..
publish:
@if test -f $(DOC)/$(DOC).html; \
then \
echo " "; \
echo "******** Publishing "$(DOC)".html"; \
echo " "; \
scp -r $(MANUALS) $(STYLESHEET) docs.yp:/var/www/www.yoctoproject.org-docs/$(VER)/$(DOC); \
cd $(DOC); scp -r $(FIGURES) docs.yp:/var/www/www.yoctoproject.org-docs/$(VER)/$(DOC); \
else \
echo " "; \
echo $(DOC)".html missing. Generate the file first then try again."; \
echo " "; \
fi
clean:
rm -rf $(MANUALS); rm $(DOC)/$(DOC).tgz;

39
bitbake/doc/README Normal file
View File

@@ -0,0 +1,39 @@
Documentation
=============
This is the directory that contains the BitBake documentation.
Manual Organization
===================
Folders exist for individual manuals as follows:
* bitbake-user-manual - The BitBake User Manual
Each folder is self-contained regarding content and figures.
If you want to find HTML versions of the BitBake manuals on the web,
go to http://www.openembedded.org/wiki/Documentation.
Makefile
========
The Makefile processes manual directories to create HTML, PDF,
tarballs, etc. Details on how the Makefile work are documented
inside the Makefile. See that file for more information.
To build a manual, you run the make command and pass it the name
of the folder containing the manual's contents.
For example, the following command run from the documentation directory
creates an HTML and a PDF version of the BitBake User Manual.
The DOC variable specifies the manual you are making:
$ make DOC=bitbake-user-manual
template
========
Contains various templates, fonts, and some old PNG files.
tools
=====
Contains a tool to convert the DocBook files to PDF format.

View File

@@ -0,0 +1,29 @@
<?xml version='1.0'?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns="http://www.w3.org/1999/xhtml" xmlns:fo="http://www.w3.org/1999/XSL/Format" version="1.0">
<xsl:import href="http://downloads.yoctoproject.org/mirror/docbook-mirror/docbook-xsl-1.76.1/xhtml/docbook.xsl" />
<!--
<xsl:import href="../template/1.76.1/docbook-xsl-1.76.1/xhtml/docbook.xsl" />
<xsl:import href="http://docbook.sourceforge.net/release/xsl/1.76.1/xhtml/docbook.xsl" />
-->
<xsl:include href="../template/permalinks.xsl"/>
<xsl:include href="../template/section.title.xsl"/>
<xsl:include href="../template/component.title.xsl"/>
<xsl:include href="../template/division.title.xsl"/>
<xsl:include href="../template/formal.object.heading.xsl"/>
<xsl:include href="../template/gloss-permalinks.xsl"/>
<xsl:param name="html.stylesheet" select="'user-manual-style.css'" />
<xsl:param name="chapter.autolabel" select="1" />
<xsl:param name="section.autolabel" select="1" />
<xsl:param name="section.label.includes.component.label" select="1" />
<xsl:param name="appendix.autolabel">A</xsl:param>
<!-- <xsl:param name="generate.toc" select="'article nop'"></xsl:param> -->
</xsl:stylesheet>

View File

@@ -0,0 +1,932 @@
<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
"http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd">
<chapter id="bitbake-user-manual-execution">
<title>Execution</title>
<para>
The primary purpose for running BitBake is to produce some kind
of output such as a single installable package, a kernel, a software
development kit, or even a full, board-specific bootable Linux image,
complete with bootloader, kernel, and root filesystem.
Of course, you can execute the <filename>bitbake</filename>
command with options that cause it to execute single tasks,
compile single recipe files, capture or clear data, or simply
return information about the execution environment.
</para>
<para>
This chapter describes BitBake's execution process from start
to finish when you use it to create an image.
The execution process is launched using the following command
form:
<literallayout class='monospaced'>
$ bitbake <replaceable>target</replaceable>
</literallayout>
For information on the BitBake command and its options,
see
"<link linkend='bitbake-user-manual-command'>The BitBake Command</link>"
section.
<note>
<para>
Prior to executing BitBake, you should take advantage of available
parallel thread execution on your build host by setting the
<link linkend='var-BB_NUMBER_THREADS'><filename>BB_NUMBER_THREADS</filename></link>
variable in your project's <filename>local.conf</filename>
configuration file.
</para>
<para>
A common method to determine this value for your build host is to run
the following:
<literallayout class='monospaced'>
$ grep processor /proc/cpuinfo
</literallayout>
This command returns the number of processors, which takes into
account hyper-threading.
Thus, a quad-core build host with hyper-threading most likely
shows eight processors, which is the value you would then assign to
<filename>BB_NUMBER_THREADS</filename>.
</para>
<para>
A possibly simpler solution is that some Linux distributions
(e.g. Debian and Ubuntu) provide the <filename>ncpus</filename> command.
</para>
</note>
</para>
<section id='parsing-the-base-configuration-metadata'>
<title>Parsing the Base Configuration Metadata</title>
<para>
The first thing BitBake does is parse base configuration
metadata.
Base configuration metadata consists of your project's
<filename>bblayers.conf</filename> file to determine what
layers BitBake needs to recognize, all necessary
<filename>layer.conf</filename> files (one from each layer),
and <filename>bitbake.conf</filename>.
The data itself is of various types:
<itemizedlist>
<listitem><para><emphasis>Recipes:</emphasis>
Details about particular pieces of software.
</para></listitem>
<listitem><para><emphasis>Class Data:</emphasis>
An abstraction of common build information
(e.g. how to build a Linux kernel).
</para></listitem>
<listitem><para><emphasis>Configuration Data:</emphasis>
Machine-specific settings, policy decisions,
and so forth.
Configuration data acts as the glue to bind everything
together.</para></listitem>
</itemizedlist>
</para>
<para>
The <filename>layer.conf</filename> files are used to
construct key variables such as
<link linkend='var-BBPATH'><filename>BBPATH</filename></link>
and
<link linkend='var-BBFILES'><filename>BBFILES</filename></link>.
<filename>BBPATH</filename> is used to search for
configuration and class files under the
<filename>conf</filename> and <filename>classes</filename>
directories, respectively.
<filename>BBFILES</filename> is used to locate both recipe
and recipe append files
(<filename>.bb</filename> and <filename>.bbappend</filename>).
If there is no <filename>bblayers.conf</filename> file,
it is assumed the user has set the <filename>BBPATH</filename>
and <filename>BBFILES</filename> directly in the environment.
</para>
<para>
Next, the <filename>bitbake.conf</filename> file is located
using the <filename>BBPATH</filename> variable that was
just constructed.
The <filename>bitbake.conf</filename> file may also include other
configuration files using the
<filename>include</filename> or
<filename>require</filename> directives.
</para>
<para>
Prior to parsing configuration files, Bitbake looks
at certain variables, including:
<itemizedlist>
<listitem><para>
<link linkend='var-BB_ENV_WHITELIST'><filename>BB_ENV_WHITELIST</filename></link>
</para></listitem>
<listitem><para>
<link linkend='var-BB_ENV_EXTRAWHITE'><filename>BB_ENV_EXTRAWHITE</filename></link>
</para></listitem>
<listitem><para>
<link linkend='var-BB_PRESERVE_ENV'><filename>BB_PRESERVE_ENV</filename></link>
</para></listitem>
<listitem><para>
<link linkend='var-BB_ORIGENV'><filename>BB_ORIGENV</filename></link>
</para></listitem>
<listitem><para>
<link linkend='var-BITBAKE_UI'><filename>BITBAKE_UI</filename></link>
</para></listitem>
</itemizedlist>
The first four variables in this list relate to how BitBake treats shell
environment variables during task execution.
By default, BitBake cleans the environment variables and provides tight
control over the shell execution environment.
However, through the use of these first four variables, you can
apply your control regarding the
environment variables allowed to be used by BitBake in the shell
during execution of tasks.
See the
"<link linkend='passing-information-into-the-build-task-environment'>Passing Information Into the Build Task Environment</link>"
section and the information about these variables in the
variable glossary for more information on how they work and
on how to use them.
</para>
<para>
The base configuration metadata is global
and therefore affects all recipes and tasks that are executed.
</para>
<para>
BitBake first searches the current working directory for an
optional <filename>conf/bblayers.conf</filename> configuration file.
This file is expected to contain a
<link linkend='var-BBLAYERS'><filename>BBLAYERS</filename></link>
variable that is a space-delimited list of 'layer' directories.
Recall that if BitBake cannot find a <filename>bblayers.conf</filename>
file, then it is assumed the user has set the <filename>BBPATH</filename>
and <filename>BBFILES</filename> variables directly in the environment.
</para>
<para>
For each directory (layer) in this list, a <filename>conf/layer.conf</filename>
file is located and parsed with the
<link linkend='var-LAYERDIR'><filename>LAYERDIR</filename></link>
variable being set to the directory where the layer was found.
The idea is these files automatically set up
<link linkend='var-BBPATH'><filename>BBPATH</filename></link>
and other variables correctly for a given build directory.
</para>
<para>
BitBake then expects to find the <filename>conf/bitbake.conf</filename>
file somewhere in the user-specified <filename>BBPATH</filename>.
That configuration file generally has include directives to pull
in any other metadata such as files specific to the architecture,
the machine, the local environment, and so forth.
</para>
<para>
Only variable definitions and include directives are allowed
in BitBake <filename>.conf</filename> files.
Some variables directly influence BitBake's behavior.
These variables might have been set from the environment
depending on the environment variables previously
mentioned or set in the configuration files.
The
"<link linkend='ref-variables-glos'>Variables Glossary</link>"
chapter presents a full list of variables.
</para>
<para>
After parsing configuration files, BitBake uses its rudimentary
inheritance mechanism, which is through class files, to inherit
some standard classes.
BitBake parses a class when the inherit directive responsible
for getting that class is encountered.
</para>
<para>
The <filename>base.bbclass</filename> file is always included.
Other classes that are specified in the configuration using the
<link linkend='var-INHERIT'><filename>INHERIT</filename></link>
variable are also included.
BitBake searches for class files in a
<filename>classes</filename> subdirectory under
the paths in <filename>BBPATH</filename> in the same way as
configuration files.
</para>
<para>
A good way to get an idea of the configuration files and
the class files used in your execution environment is to
run the following BitBake command:
<literallayout class='monospaced'>
$ bitbake -e > mybb.log
</literallayout>
Examining the top of the <filename>mybb.log</filename>
shows you the many configuration files and class files
used in your execution environment.
</para>
<note>
<para>
You need to be aware of how BitBake parses curly braces.
If a recipe uses a closing curly brace within the function and
the character has no leading spaces, BitBake produces a parsing
error.
If you use a pair of curly braces in a shell function, the
closing curly brace must not be located at the start of the line
without leading spaces.
</para>
<para>
Here is an example that causes BitBake to produce a parsing
error:
<literallayout class='monospaced'>
fakeroot create_shar() {
cat &lt;&lt; "EOF" &gt; ${SDK_DEPLOY}/${TOOLCHAIN_OUTPUTNAME}.sh
usage()
{
echo "test"
###### The following "}" at the start of the line causes a parsing error ######
}
EOF
}
</literallayout>
Writing the recipe this way avoids the error:
<literallayout class='monospaced'>
fakeroot create_shar() {
cat &lt;&lt; "EOF" &gt; ${SDK_DEPLOY}/${TOOLCHAIN_OUTPUTNAME}.sh
usage()
{
echo "test"
######The following "}" with a leading space at the start of the line avoids the error ######
}
EOF
}
</literallayout>
</para>
</note>
</section>
<section id='locating-and-parsing-recipes'>
<title>Locating and Parsing Recipes</title>
<para>
During the configuration phase, BitBake will have set
<link linkend='var-BBFILES'><filename>BBFILES</filename></link>.
BitBake now uses it to construct a list of recipes to parse,
along with any append files (<filename>.bbappend</filename>)
to apply.
<filename>BBFILES</filename> is a space-separated list of
available files and supports wildcards.
An example would be:
<literallayout class='monospaced'>
BBFILES = "/path/to/bbfiles/*.bb /path/to/appends/*.bbappend"
</literallayout>
BitBake parses each recipe and append file located
with <filename>BBFILES</filename> and stores the values of
various variables into the datastore.
<note>
Append files are applied in the order they are encountered in
<filename>BBFILES</filename>.
</note>
For each file, a fresh copy of the base configuration is
made, then the recipe is parsed line by line.
Any inherit statements cause BitBake to find and
then parse class files (<filename>.bbclass</filename>)
using
<link linkend='var-BBPATH'><filename>BBPATH</filename></link>
as the search path.
Finally, BitBake parses in order any append files found in
<filename>BBFILES</filename>.
</para>
<para>
One common convention is to use the recipe filename to define
pieces of metadata.
For example, in <filename>bitbake.conf</filename> the recipe
name and version are used to set the variables
<link linkend='var-PN'><filename>PN</filename></link> and
<link linkend='var-PV'><filename>PV</filename></link>:
<literallayout class='monospaced'>
PN = "${@bb.parse.BBHandler.vars_from_file(d.getVar('FILE', False),d)[0] or 'defaultpkgname'}"
PV = "${@bb.parse.BBHandler.vars_from_file(d.getVar('FILE', False),d)[1] or '1.0'}"
</literallayout>
In this example, a recipe called "something_1.2.3.bb" would set
<filename>PN</filename> to "something" and
<filename>PV</filename> to "1.2.3".
</para>
<para>
By the time parsing is complete for a recipe, BitBake
has a list of tasks that the recipe defines and a set of
data consisting of keys and values as well as
dependency information about the tasks.
</para>
<para>
BitBake does not need all of this information.
It only needs a small subset of the information to make
decisions about the recipe.
Consequently, BitBake caches the values in which it is
interested and does not store the rest of the information.
Experience has shown it is faster to re-parse the metadata than to
try and write it out to the disk and then reload it.
</para>
<para>
Where possible, subsequent BitBake commands reuse this cache of
recipe information.
The validity of this cache is determined by first computing a
checksum of the base configuration data (see
<link linkend='var-BB_HASHCONFIG_WHITELIST'><filename>BB_HASHCONFIG_WHITELIST</filename></link>)
and then checking if the checksum matches.
If that checksum matches what is in the cache and the recipe
and class files have not changed, Bitbake is able to use
the cache.
BitBake then reloads the cached information about the recipe
instead of reparsing it from scratch.
</para>
<para>
Recipe file collections exist to allow the user to
have multiple repositories of
<filename>.bb</filename> files that contain the same
exact package.
For example, one could easily use them to make one's
own local copy of an upstream repository, but with
custom modifications that one does not want upstream.
Here is an example:
<literallayout class='monospaced'>
BBFILES = "/stuff/openembedded/*/*.bb /stuff/openembedded.modified/*/*.bb"
BBFILE_COLLECTIONS = "upstream local"
BBFILE_PATTERN_upstream = "^/stuff/openembedded/"
BBFILE_PATTERN_local = "^/stuff/openembedded.modified/"
BBFILE_PRIORITY_upstream = "5"
BBFILE_PRIORITY_local = "10"
</literallayout>
<note>
The layers mechanism is now the preferred method of collecting
code.
While the collections code remains, its main use is to set layer
priorities and to deal with overlap (conflicts) between layers.
</note>
</para>
</section>
<section id='bb-bitbake-providers'>
<title>Providers</title>
<para>
Assuming BitBake has been instructed to execute a target
and that all the recipe files have been parsed, BitBake
starts to figure out how to build the target.
BitBake looks through the <filename>PROVIDES</filename> list
for each of the recipes.
A <filename>PROVIDES</filename> list is the list of names by which
the recipe can be known.
Each recipe's <filename>PROVIDES</filename> list is created
implicitly through the recipe's
<link linkend='var-PN'><filename>PN</filename></link> variable
and explicitly through the recipe's
<link linkend='var-PROVIDES'><filename>PROVIDES</filename></link>
variable, which is optional.
</para>
<para>
When a recipe uses <filename>PROVIDES</filename>, that recipe's
functionality can be found under an alternative name or names other
than the implicit <filename>PN</filename> name.
As an example, suppose a recipe named <filename>keyboard_1.0.bb</filename>
contained the following:
<literallayout class='monospaced'>
PROVIDES += "fullkeyboard"
</literallayout>
The <filename>PROVIDES</filename> list for this recipe becomes
"keyboard", which is implicit, and "fullkeyboard", which is explicit.
Consequently, the functionality found in
<filename>keyboard_1.0.bb</filename> can be found under two
different names.
</para>
</section>
<section id='bb-bitbake-preferences'>
<title>Preferences</title>
<para>
The <filename>PROVIDES</filename> list is only part of the solution
for figuring out a target's recipes.
Because targets might have multiple providers, BitBake needs
to prioritize providers by determining provider preferences.
</para>
<para>
A common example in which a target has multiple providers
is "virtual/kernel", which is on the
<filename>PROVIDES</filename> list for each kernel recipe.
Each machine often selects the best kernel provider by using a
line similar to the following in the machine configuration file:
<literallayout class='monospaced'>
PREFERRED_PROVIDER_virtual/kernel = "linux-yocto"
</literallayout>
The default
<link linkend='var-PREFERRED_PROVIDER'><filename>PREFERRED_PROVIDER</filename></link>
is the provider with the same name as the target.
Bitbake iterates through each target it needs to build and
resolves them and their dependencies using this process.
</para>
<para>
Understanding how providers are chosen is made complicated by the fact
that multiple versions might exist for a given provider.
BitBake defaults to the highest version of a provider.
Version comparisons are made using the same method as Debian.
You can use the
<link linkend='var-PREFERRED_VERSION'><filename>PREFERRED_VERSION</filename></link>
variable to specify a particular version.
You can influence the order by using the
<link linkend='var-DEFAULT_PREFERENCE'><filename>DEFAULT_PREFERENCE</filename></link>
variable.
</para>
<para>
By default, files have a preference of "0".
Setting <filename>DEFAULT_PREFERENCE</filename> to "-1" makes the
recipe unlikely to be used unless it is explicitly referenced.
Setting <filename>DEFAULT_PREFERENCE</filename> to "1" makes it
likely the recipe is used.
<filename>PREFERRED_VERSION</filename> overrides any
<filename>DEFAULT_PREFERENCE</filename> setting.
<filename>DEFAULT_PREFERENCE</filename> is often used to mark newer
and more experimental recipe versions until they have undergone
sufficient testing to be considered stable.
</para>
<para>
When there are multiple “versions” of a given recipe,
BitBake defaults to selecting the most recent
version, unless otherwise specified.
If the recipe in question has a
<link linkend='var-DEFAULT_PREFERENCE'><filename>DEFAULT_PREFERENCE</filename></link>
set lower than the other recipes (default is 0), then
it will not be selected.
This allows the person or persons maintaining
the repository of recipe files to specify
their preference for the default selected version.
Additionally, the user can specify their preferred version.
</para>
<para>
If the first recipe is named <filename>a_1.1.bb</filename>, then the
<link linkend='var-PN'><filename>PN</filename></link> variable
will be set to “a”, and the
<link linkend='var-PV'><filename>PV</filename></link>
variable will be set to 1.1.
</para>
<para>
Thus, if a recipe named <filename>a_1.2.bb</filename> exists, BitBake
will choose 1.2 by default.
However, if you define the following variable in a
<filename>.conf</filename> file that BitBake parses, you
can change that preference:
<literallayout class='monospaced'>
PREFERRED_VERSION_a = "1.1"
</literallayout>
</para>
<note>
<para>
It is common for a recipe to provide two versions -- a stable,
numbered (and preferred) version, and a version that is
automatically checked out from a source code repository that
is considered more "bleeding edge" but can be selected only
explicitly.
</para>
<para>
For example, in the OpenEmbedded codebase, there is a standard,
versioned recipe file for BusyBox,
<filename>busybox_1.22.1.bb</filename>,
but there is also a Git-based version,
<filename>busybox_git.bb</filename>, which explicitly contains the line
<literallayout class='monospaced'>
DEFAULT_PREFERENCE = "-1"
</literallayout>
to ensure that the numbered, stable version is always preferred
unless the developer selects otherwise.
</para>
</note>
</section>
<section id='bb-bitbake-dependencies'>
<title>Dependencies</title>
<para>
Each target BitBake builds consists of multiple tasks such as
<filename>fetch</filename>, <filename>unpack</filename>,
<filename>patch</filename>, <filename>configure</filename>,
and <filename>compile</filename>.
For best performance on multi-core systems, BitBake considers each
task as an independent
entity with its own set of dependencies.
</para>
<para>
Dependencies are defined through several variables.
You can find information about variables BitBake uses in
the <link linkend='ref-variables-glos'>Variables Glossary</link>
near the end of this manual.
At a basic level, it is sufficient to know that BitBake uses the
<link linkend='var-DEPENDS'><filename>DEPENDS</filename></link> and
<link linkend='var-RDEPENDS'><filename>RDEPENDS</filename></link> variables when
calculating dependencies.
</para>
<para>
For more information on how BitBake handles dependencies, see the
"<link linkend='dependencies'>Dependencies</link>" section.
</para>
</section>
<section id='ref-bitbake-tasklist'>
<title>The Task List</title>
<para>
Based on the generated list of providers and the dependency information,
BitBake can now calculate exactly what tasks it needs to run and in what
order it needs to run them.
The
"<link linkend='executing-tasks'>Executing Tasks</link>" section has more
information on how BitBake chooses which task to execute next.
</para>
<para>
The build now starts with BitBake forking off threads up to the limit set in the
<link linkend='var-BB_NUMBER_THREADS'><filename>BB_NUMBER_THREADS</filename></link>
variable.
BitBake continues to fork threads as long as there are tasks ready to run,
those tasks have all their dependencies met, and the thread threshold has not been
exceeded.
</para>
<para>
It is worth noting that you can greatly speed up the build time by properly setting
the <filename>BB_NUMBER_THREADS</filename> variable.
</para>
<para>
As each task completes, a timestamp is written to the directory specified by the
<link linkend='var-STAMP'><filename>STAMP</filename></link> variable.
On subsequent runs, BitBake looks in the build directory within
<filename>tmp/stamps</filename> and does not rerun
tasks that are already completed unless a timestamp is found to be invalid.
Currently, invalid timestamps are only considered on a per
recipe file basis.
So, for example, if the configure stamp has a timestamp greater than the
compile timestamp for a given target, then the compile task would rerun.
Running the compile task again, however, has no effect on other providers
that depend on that target.
</para>
<para>
The exact format of the stamps is partly configurable.
In modern versions of BitBake, a hash is appended to the
stamp so that if the configuration changes, the stamp becomes
invalid and the task is automatically rerun.
This hash, or signature used, is governed by the signature policy
that is configured (see the
"<link linkend='checksums'>Checksums (Signatures)</link>"
section for information).
It is also possible to append extra metadata to the stamp using
the <filename>[stamp-extra-info]</filename> task flag.
For example, OpenEmbedded uses this flag to make some tasks machine-specific.
</para>
<note>
Some tasks are marked as "nostamp" tasks.
No timestamp file is created when these tasks are run.
Consequently, "nostamp" tasks are always rerun.
</note>
<para>
For more information on tasks, see the
"<link linkend='tasks'>Tasks</link>" section.
</para>
</section>
<section id='executing-tasks'>
<title>Executing Tasks</title>
<para>
Tasks can be either a shell task or a Python task.
For shell tasks, BitBake writes a shell script to
<filename>${</filename><link linkend='var-T'><filename>T</filename></link><filename>}/run.do_taskname.pid</filename>
and then executes the script.
The generated shell script contains all the exported variables,
and the shell functions with all variables expanded.
Output from the shell script goes to the file
<filename>${T}/log.do_taskname.pid</filename>.
Looking at the expanded shell functions in the run file and
the output in the log files is a useful debugging technique.
</para>
<para>
For Python tasks, BitBake executes the task internally and logs
information to the controlling terminal.
Future versions of BitBake will write the functions to files
similar to the way shell tasks are handled.
Logging will be handled in a way similar to shell tasks as well.
</para>
<para>
The order in which BitBake runs the tasks is controlled by its
task scheduler.
It is possible to configure the scheduler and define custom
implementations for specific use cases.
For more information, see these variables that control the
behavior:
<itemizedlist>
<listitem><para>
<link linkend='var-BB_SCHEDULER'><filename>BB_SCHEDULER</filename></link>
</para></listitem>
<listitem><para>
<link linkend='var-BB_SCHEDULERS'><filename>BB_SCHEDULERS</filename></link>
</para></listitem>
</itemizedlist>
It is possible to have functions run before and after a task's main
function.
This is done using the <filename>[prefuncs]</filename>
and <filename>[postfuncs]</filename> flags of the task
that lists the functions to run.
</para>
</section>
<section id='checksums'>
<title>Checksums (Signatures)</title>
<para>
A checksum is a unique signature of a task's inputs.
The signature of a task can be used to determine if a task
needs to be run.
Because it is a change in a task's inputs that triggers running
the task, BitBake needs to detect all the inputs to a given task.
For shell tasks, this turns out to be fairly easy because
BitBake generates a "run" shell script for each task and
it is possible to create a checksum that gives you a good idea of when
the task's data changes.
</para>
<para>
To complicate the problem, some things should not be included in
the checksum.
First, there is the actual specific build path of a given task -
the working directory.
It does not matter if the working directory changes because it should not
affect the output for target packages.
The simplistic approach for excluding the working directory is to set
it to some fixed value and create the checksum for the "run" script.
BitBake goes one step better and uses the
<link linkend='var-BB_HASHBASE_WHITELIST'><filename>BB_HASHBASE_WHITELIST</filename></link>
variable to define a list of variables that should never be included
when generating the signatures.
</para>
<para>
Another problem results from the "run" scripts containing functions that
might or might not get called.
The incremental build solution contains code that figures out dependencies
between shell functions.
This code is used to prune the "run" scripts down to the minimum set,
thereby alleviating this problem and making the "run" scripts much more
readable as a bonus.
</para>
<para>
So far we have solutions for shell scripts.
What about Python tasks?
The same approach applies even though these tasks are more difficult.
The process needs to figure out what variables a Python function accesses
and what functions it calls.
Again, the incremental build solution contains code that first figures out
the variable and function dependencies, and then creates a checksum for the data
used as the input to the task.
</para>
<para>
Like the working directory case, situations exist where dependencies
should be ignored.
For these cases, you can instruct the build process to ignore a dependency
by using a line like the following:
<literallayout class='monospaced'>
PACKAGE_ARCHS[vardepsexclude] = "MACHINE"
</literallayout>
This example ensures that the <filename>PACKAGE_ARCHS</filename> variable does not
depend on the value of <filename>MACHINE</filename>, even if it does reference it.
</para>
<para>
Equally, there are cases where we need to add dependencies BitBake
is not able to find.
You can accomplish this by using a line like the following:
<literallayout class='monospaced'>
PACKAGE_ARCHS[vardeps] = "MACHINE"
</literallayout>
This example explicitly adds the <filename>MACHINE</filename> variable as a
dependency for <filename>PACKAGE_ARCHS</filename>.
</para>
<para>
Consider a case with in-line Python, for example, where BitBake is not
able to figure out dependencies.
When running in debug mode (i.e. using <filename>-DDD</filename>), BitBake
produces output when it discovers something for which it cannot figure out
dependencies.
</para>
<para>
Thus far, this section has limited discussion to the direct inputs into a task.
Information based on direct inputs is referred to as the "basehash" in the
code.
However, there is still the question of a task's indirect inputs - the
things that were already built and present in the build directory.
The checksum (or signature) for a particular task needs to add the hashes
of all the tasks on which the particular task depends.
Choosing which dependencies to add is a policy decision.
However, the effect is to generate a master checksum that combines the basehash
and the hashes of the task's dependencies.
</para>
<para>
At the code level, there are a variety of ways both the basehash and the
dependent task hashes can be influenced.
Within the BitBake configuration file, we can give BitBake some extra information
to help it construct the basehash.
The following statement effectively results in a list of global variable
dependency excludes - variables never included in any checksum.
This example uses variables from OpenEmbedded to help illustrate
the concept:
<literallayout class='monospaced'>
BB_HASHBASE_WHITELIST ?= "TMPDIR FILE PATH PWD BB_TASKHASH BBPATH DL_DIR \
SSTATE_DIR THISDIR FILESEXTRAPATHS FILE_DIRNAME HOME LOGNAME SHELL TERM \
USER FILESPATH STAGING_DIR_HOST STAGING_DIR_TARGET COREBASE PRSERV_HOST \
PRSERV_DUMPDIR PRSERV_DUMPFILE PRSERV_LOCKDOWN PARALLEL_MAKE \
CCACHE_DIR EXTERNAL_TOOLCHAIN CCACHE CCACHE_DISABLE LICENSE_PATH SDKPKGSUFFIX"
</literallayout>
The previous example excludes the work directory, which is part of
<filename>TMPDIR</filename>.
</para>
<para>
The rules for deciding which hashes of dependent tasks to include through
dependency chains are more complex and are generally accomplished with a
Python function.
The code in <filename>meta/lib/oe/sstatesig.py</filename> shows two examples
of this and also illustrates how you can insert your own policy into the system
if so desired.
This file defines the two basic signature generators OpenEmbedded Core
uses: "OEBasic" and "OEBasicHash".
By default, there is a dummy "noop" signature handler enabled in BitBake.
This means that behavior is unchanged from previous versions.
<filename>OE-Core</filename> uses the "OEBasicHash" signature handler by default
through this setting in the <filename>bitbake.conf</filename> file:
<literallayout class='monospaced'>
BB_SIGNATURE_HANDLER ?= "OEBasicHash"
</literallayout>
The "OEBasicHash" <filename>BB_SIGNATURE_HANDLER</filename> is the same as the
"OEBasic" version but adds the task hash to the stamp files.
This results in any metadata change that changes the task hash, automatically
causing the task to be run again.
This removes the need to bump
<link linkend='var-PR'><filename>PR</filename></link>
values, and changes to metadata automatically ripple across the build.
</para>
<para>
It is also worth noting that the end result of these signature generators is to
make some dependency and hash information available to the build.
This information includes:
<itemizedlist>
<listitem><para><filename>BB_BASEHASH_task-</filename><replaceable>taskname</replaceable>:
The base hashes for each task in the recipe.
</para></listitem>
<listitem><para><filename>BB_BASEHASH_</filename><replaceable>filename</replaceable><filename>:</filename><replaceable>taskname</replaceable>:
The base hashes for each dependent task.
</para></listitem>
<listitem><para><filename>BBHASHDEPS_</filename><replaceable>filename</replaceable><filename>:</filename><replaceable>taskname</replaceable>:
The task dependencies for each task.
</para></listitem>
<listitem><para><filename>BB_TASKHASH</filename>:
The hash of the currently running task.
</para></listitem>
</itemizedlist>
</para>
<para>
It is worth noting that BitBake's "-S" option lets you
debug Bitbake's processing of signatures.
The options passed to -S allow different debugging modes
to be used, either using BitBake's own debug functions
or possibly those defined in the metadata/signature handler
itself.
The simplest parameter to pass is "none", which causes a
set of signature information to be written out into
<filename>STAMPS_DIR</filename>
corresponding to the targets specified.
The other currently available parameter is "printdiff",
which causes BitBake to try to establish the closest
signature match it can (e.g. in the sstate cache) and then
run <filename>bitbake-diffsigs</filename> over the matches
to determine the stamps and delta where these two
stamp trees diverge.
<note>
It is likely that future versions of BitBake will
provide other signature handlers triggered through
additional "-S" parameters.
</note>
</para>
<para>
You can find more information on checksum metadata in the
"<link linkend='task-checksums-and-setscene'>Task Checksums and Setscene</link>"
section.
</para>
</section>
<section id='setscene'>
<title>Setscene</title>
<para>
The setscene process enables BitBake to handle "pre-built" artifacts.
The ability to handle and reuse these artifacts allows BitBake
the luxury of not having to build something from scratch every time.
Instead, BitBake can use, when possible, existing build artifacts.
</para>
<para>
BitBake needs to have reliable data indicating whether or not an
artifact is compatible.
Signatures, described in the previous section, provide an ideal
way of representing whether an artifact is compatible.
If a signature is the same, an object can be reused.
</para>
<para>
If an object can be reused, the problem then becomes how to
replace a given task or set of tasks with the pre-built artifact.
BitBake solves the problem with the "setscene" process.
</para>
<para>
When BitBake is asked to build a given target, before building anything,
it first asks whether cached information is available for any of the
targets it's building, or any of the intermediate targets.
If cached information is available, BitBake uses this information instead of
running the main tasks.
</para>
<para>
BitBake first calls the function defined by the
<link linkend='var-BB_HASHCHECK_FUNCTION'><filename>BB_HASHCHECK_FUNCTION</filename></link>
variable with a list of tasks and corresponding
hashes it wants to build.
This function is designed to be fast and returns a list
of the tasks for which it believes in can obtain artifacts.
</para>
<para>
Next, for each of the tasks that were returned as possibilities,
BitBake executes a setscene version of the task that the possible
artifact covers.
Setscene versions of a task have the string "_setscene" appended to the
task name.
So, for example, the task with the name <filename>xxx</filename> has
a setscene task named <filename>xxx_setscene</filename>.
The setscene version of the task executes and provides the necessary
artifacts returning either success or failure.
</para>
<para>
As previously mentioned, an artifact can cover more than one task.
For example, it is pointless to obtain a compiler if you
already have the compiled binary.
To handle this, BitBake calls the
<link linkend='var-BB_SETSCENE_DEPVALID'><filename>BB_SETSCENE_DEPVALID</filename></link>
function for each successful setscene task to know whether or not it needs
to obtain the dependencies of that task.
</para>
<para>
Finally, after all the setscene tasks have executed, BitBake calls the
function listed in
<link linkend='var-BB_SETSCENE_VERIFY_FUNCTION2'><filename>BB_SETSCENE_VERIFY_FUNCTION2</filename></link>
with the list of tasks BitBake thinks has been "covered".
The metadata can then ensure that this list is correct and can
inform BitBake that it wants specific tasks to be run regardless
of the setscene result.
</para>
<para>
You can find more information on setscene metadata in the
"<link linkend='task-checksums-and-setscene'>Task Checksums and Setscene</link>"
section.
</para>
</section>
</chapter>

View File

@@ -0,0 +1,821 @@
<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
"http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd">
<chapter>
<title>File Download Support</title>
<para>
BitBake's fetch module is a standalone piece of library code
that deals with the intricacies of downloading source code
and files from remote systems.
Fetching source code is one of the cornerstones of building software.
As such, this module forms an important part of BitBake.
</para>
<para>
The current fetch module is called "fetch2" and refers to the
fact that it is the second major version of the API.
The original version is obsolete and has been removed from the codebase.
Thus, in all cases, "fetch" refers to "fetch2" in this
manual.
</para>
<section id='the-download-fetch'>
<title>The Download (Fetch)</title>
<para>
BitBake takes several steps when fetching source code or files.
The fetcher codebase deals with two distinct processes in order:
obtaining the files from somewhere (cached or otherwise)
and then unpacking those files into a specific location and
perhaps in a specific way.
Getting and unpacking the files is often optionally followed
by patching.
Patching, however, is not covered by this module.
</para>
<para>
The code to execute the first part of this process, a fetch,
looks something like the following:
<literallayout class='monospaced'>
src_uri = (d.getVar('SRC_URI') or "").split()
fetcher = bb.fetch2.Fetch(src_uri, d)
fetcher.download()
</literallayout>
This code sets up an instance of the fetch class.
The instance uses a space-separated list of URLs from the
<link linkend='var-SRC_URI'><filename>SRC_URI</filename></link>
variable and then calls the <filename>download</filename>
method to download the files.
</para>
<para>
The instantiation of the fetch class is usually followed by:
<literallayout class='monospaced'>
rootdir = l.getVar('WORKDIR')
fetcher.unpack(rootdir)
</literallayout>
This code unpacks the downloaded files to the
specified by <filename>WORKDIR</filename>.
<note>
For convenience, the naming in these examples matches
the variables used by OpenEmbedded.
If you want to see the above code in action, examine
the OpenEmbedded class file <filename>base.bbclass</filename>.
</note>
The <filename>SRC_URI</filename> and <filename>WORKDIR</filename>
variables are not hardcoded into the fetcher, since those fetcher
methods can be (and are) called with different variable names.
In OpenEmbedded for example, the shared state (sstate) code uses
the fetch module to fetch the sstate files.
</para>
<para>
When the <filename>download()</filename> method is called,
BitBake tries to resolve the URLs by looking for source files
in a specific search order:
<itemizedlist>
<listitem><para><emphasis>Pre-mirror Sites:</emphasis>
BitBake first uses pre-mirrors to try and find source files.
These locations are defined using the
<link linkend='var-PREMIRRORS'><filename>PREMIRRORS</filename></link>
variable.
</para></listitem>
<listitem><para><emphasis>Source URI:</emphasis>
If pre-mirrors fail, BitBake uses the original URL (e.g from
<filename>SRC_URI</filename>).
</para></listitem>
<listitem><para><emphasis>Mirror Sites:</emphasis>
If fetch failures occur, BitBake next uses mirror locations as
defined by the
<link linkend='var-MIRRORS'><filename>MIRRORS</filename></link>
variable.
</para></listitem>
</itemizedlist>
</para>
<para>
For each URL passed to the fetcher, the fetcher
calls the submodule that handles that particular URL type.
This behavior can be the source of some confusion when you
are providing URLs for the <filename>SRC_URI</filename>
variable.
Consider the following two URLs:
<literallayout class='monospaced'>
http://git.yoctoproject.org/git/poky;protocol=git
git://git.yoctoproject.org/git/poky;protocol=http
</literallayout>
In the former case, the URL is passed to the
<filename>wget</filename> fetcher, which does not
understand "git".
Therefore, the latter case is the correct form since the
Git fetcher does know how to use HTTP as a transport.
</para>
<para>
Here are some examples that show commonly used mirror
definitions:
<literallayout class='monospaced'>
PREMIRRORS ?= "\
bzr://.*/.* http://somemirror.org/sources/ \n \
cvs://.*/.* http://somemirror.org/sources/ \n \
git://.*/.* http://somemirror.org/sources/ \n \
hg://.*/.* http://somemirror.org/sources/ \n \
osc://.*/.* http://somemirror.org/sources/ \n \
p4://.*/.* http://somemirror.org/sources/ \n \
svn://.*/.* http://somemirror.org/sources/ \n"
MIRRORS =+ "\
ftp://.*/.* http://somemirror.org/sources/ \n \
http://.*/.* http://somemirror.org/sources/ \n \
https://.*/.* http://somemirror.org/sources/ \n"
</literallayout>
It is useful to note that BitBake supports
cross-URLs.
It is possible to mirror a Git repository on an HTTP
server as a tarball.
This is what the <filename>git://</filename> mapping in
the previous example does.
</para>
<para>
Since network accesses are slow, Bitbake maintains a
cache of files downloaded from the network.
Any source files that are not local (i.e.
downloaded from the Internet) are placed into the download
directory, which is specified by the
<link linkend='var-DL_DIR'><filename>DL_DIR</filename></link>
variable.
</para>
<para>
File integrity is of key importance for reproducing builds.
For non-local archive downloads, the fetcher code can verify
SHA-256 and MD5 checksums to ensure the archives have been
downloaded correctly.
You can specify these checksums by using the
<filename>SRC_URI</filename> variable with the appropriate
varflags as follows:
<literallayout class='monospaced'>
SRC_URI[md5sum] = "<replaceable>value</replaceable>"
SRC_URI[sha256sum] = "<replaceable>value</replaceable>"
</literallayout>
You can also specify the checksums as parameters on the
<filename>SRC_URI</filename> as shown below:
<literallayout class='monospaced'>
SRC_URI = "http://example.com/foobar.tar.bz2;md5sum=4a8e0f237e961fd7785d19d07fdb994d"
</literallayout>
If multiple URIs exist, you can specify the checksums either
directly as in the previous example, or you can name the URLs.
The following syntax shows how you name the URIs:
<literallayout class='monospaced'>
SRC_URI = "http://example.com/foobar.tar.bz2;name=foo"
SRC_URI[foo.md5sum] = 4a8e0f237e961fd7785d19d07fdb994d
</literallayout>
After a file has been downloaded and has had its checksum checked,
a ".done" stamp is placed in <filename>DL_DIR</filename>.
BitBake uses this stamp during subsequent builds to avoid
downloading or comparing a checksum for the file again.
<note>
It is assumed that local storage is safe from data corruption.
If this were not the case, there would be bigger issues to worry about.
</note>
</para>
<para>
If
<link linkend='var-BB_STRICT_CHECKSUM'><filename>BB_STRICT_CHECKSUM</filename></link>
is set, any download without a checksum triggers an
error message.
The
<link linkend='var-BB_NO_NETWORK'><filename>BB_NO_NETWORK</filename></link>
variable can be used to make any attempted network access a fatal
error, which is useful for checking that mirrors are complete
as well as other things.
</para>
</section>
<section id='bb-the-unpack'>
<title>The Unpack</title>
<para>
The unpack process usually immediately follows the download.
For all URLs except Git URLs, BitBake uses the common
<filename>unpack</filename> method.
</para>
<para>
A number of parameters exist that you can specify within the
URL to govern the behavior of the unpack stage:
<itemizedlist>
<listitem><para><emphasis>unpack:</emphasis>
Controls whether the URL components are unpacked.
If set to "1", which is the default, the components
are unpacked.
If set to "0", the unpack stage leaves the file alone.
This parameter is useful when you want an archive to be
copied in and not be unpacked.
</para></listitem>
<listitem><para><emphasis>dos:</emphasis>
Applies to <filename>.zip</filename> and
<filename>.jar</filename> files and specifies whether to
use DOS line ending conversion on text files.
</para></listitem>
<listitem><para><emphasis>basepath:</emphasis>
Instructs the unpack stage to strip the specified
directories from the source path when unpacking.
</para></listitem>
<listitem><para><emphasis>subdir:</emphasis>
Unpacks the specific URL to the specified subdirectory
within the root directory.
</para></listitem>
</itemizedlist>
The unpack call automatically decompresses and extracts files
with ".Z", ".z", ".gz", ".xz", ".zip", ".jar", ".ipk", ".rpm".
".srpm", ".deb" and ".bz2" extensions as well as various combinations
of tarball extensions.
</para>
<para>
As mentioned, the Git fetcher has its own unpack method that
is optimized to work with Git trees.
Basically, this method works by cloning the tree into the final
directory.
The process is completed using references so that there is
only one central copy of the Git metadata needed.
</para>
</section>
<section id='bb-fetchers'>
<title>Fetchers</title>
<para>
As mentioned earlier, the URL prefix determines which
fetcher submodule BitBake uses.
Each submodule can support different URL parameters,
which are described in the following sections.
</para>
<section id='local-file-fetcher'>
<title>Local file fetcher (<filename>file://</filename>)</title>
<para>
This submodule handles URLs that begin with
<filename>file://</filename>.
The filename you specify within the URL can be
either an absolute or relative path to a file.
If the filename is relative, the contents of the
<link linkend='var-FILESPATH'><filename>FILESPATH</filename></link>
variable is used in the same way
<filename>PATH</filename> is used to find executables.
If the file cannot be found, it is assumed that it is available in
<link linkend='var-DL_DIR'><filename>DL_DIR</filename></link>
by the time the <filename>download()</filename> method is called.
</para>
<para>
If you specify a directory, the entire directory is
unpacked.
</para>
<para>
Here are a couple of example URLs, the first relative and
the second absolute:
<literallayout class='monospaced'>
SRC_URI = "file://relativefile.patch"
SRC_URI = "file:///Users/ich/very_important_software"
</literallayout>
</para>
</section>
<section id='http-ftp-fetcher'>
<title>HTTP/FTP wget fetcher (<filename>http://</filename>, <filename>ftp://</filename>, <filename>https://</filename>)</title>
<para>
This fetcher obtains files from web and FTP servers.
Internally, the fetcher uses the wget utility.
</para>
<para>
The executable and parameters used are specified by the
<filename>FETCHCMD_wget</filename> variable, which defaults
to sensible values.
The fetcher supports a parameter "downloadfilename" that
allows the name of the downloaded file to be specified.
Specifying the name of the downloaded file is useful
for avoiding collisions in
<link linkend='var-DL_DIR'><filename>DL_DIR</filename></link>
when dealing with multiple files that have the same name.
</para>
<para>
Some example URLs are as follows:
<literallayout class='monospaced'>
SRC_URI = "http://oe.handhelds.org/not_there.aac"
SRC_URI = "ftp://oe.handhelds.org/not_there_as_well.aac"
SRC_URI = "ftp://you@oe.handhelds.org/home/you/secret.plan"
</literallayout>
</para>
<note>
Because URL parameters are delimited by semi-colons, this can
introduce ambiguity when parsing URLs that also contain semi-colons,
for example:
<literallayout class='monospaced'>
SRC_URI = "http://abc123.org/git/?p=gcc/gcc.git;a=snapshot;h=a5dd47"
</literallayout>
Such URLs should should be modified by replacing semi-colons with '&amp;' characters:
<literallayout class='monospaced'>
SRC_URI = "http://abc123.org/git/?p=gcc/gcc.git&amp;a=snapshot&amp;h=a5dd47"
</literallayout>
In most cases this should work. Treating semi-colons and '&amp;' in queries
identically is recommended by the World Wide Web Consortium (W3C).
Note that due to the nature of the URL, you may have to specify the name
of the downloaded file as well:
<literallayout class='monospaced'>
SRC_URI = "http://abc123.org/git/?p=gcc/gcc.git&amp;a=snapshot&amp;h=a5dd47;downloadfilename=myfile.bz2"
</literallayout>
</note>
</section>
<section id='cvs-fetcher'>
<title>CVS fetcher (<filename>(cvs://</filename>)</title>
<para>
This submodule handles checking out files from the
CVS version control system.
You can configure it using a number of different variables:
<itemizedlist>
<listitem><para><emphasis><filename>FETCHCMD_cvs</filename>:</emphasis>
The name of the executable to use when running
the <filename>cvs</filename> command.
This name is usually "cvs".
</para></listitem>
<listitem><para><emphasis><filename>SRCDATE</filename>:</emphasis>
The date to use when fetching the CVS source code.
A special value of "now" causes the checkout to
be updated on every build.
</para></listitem>
<listitem><para><emphasis><link linkend='var-CVSDIR'><filename>CVSDIR</filename></link>:</emphasis>
Specifies where a temporary checkout is saved.
The location is often <filename>DL_DIR/cvs</filename>.
</para></listitem>
<listitem><para><emphasis><filename>CVS_PROXY_HOST</filename>:</emphasis>
The name to use as a "proxy=" parameter to the
<filename>cvs</filename> command.
</para></listitem>
<listitem><para><emphasis><filename>CVS_PROXY_PORT</filename>:</emphasis>
The port number to use as a "proxyport=" parameter to
the <filename>cvs</filename> command.
</para></listitem>
</itemizedlist>
As well as the standard username and password URL syntax,
you can also configure the fetcher with various URL parameters:
</para>
<para>
The supported parameters are as follows:
<itemizedlist>
<listitem><para><emphasis>"method":</emphasis>
The protocol over which to communicate with the CVS
server.
By default, this protocol is "pserver".
If "method" is set to "ext", BitBake examines the
"rsh" parameter and sets <filename>CVS_RSH</filename>.
You can use "dir" for local directories.
</para></listitem>
<listitem><para><emphasis>"module":</emphasis>
Specifies the module to check out.
You must supply this parameter.
</para></listitem>
<listitem><para><emphasis>"tag":</emphasis>
Describes which CVS TAG should be used for
the checkout.
By default, the TAG is empty.
</para></listitem>
<listitem><para><emphasis>"date":</emphasis>
Specifies a date.
If no "date" is specified, the
<link linkend='var-SRCDATE'><filename>SRCDATE</filename></link>
of the configuration is used to checkout a specific date.
The special value of "now" causes the checkout to be
updated on every build.
</para></listitem>
<listitem><para><emphasis>"localdir":</emphasis>
Used to rename the module.
Effectively, you are renaming the output directory
to which the module is unpacked.
You are forcing the module into a special
directory relative to
<link linkend='var-CVSDIR'><filename>CVSDIR</filename></link>.
</para></listitem>
<listitem><para><emphasis>"rsh"</emphasis>
Used in conjunction with the "method" parameter.
</para></listitem>
<listitem><para><emphasis>"scmdata":</emphasis>
Causes the CVS metadata to be maintained in the tarball
the fetcher creates when set to "keep".
The tarball is expanded into the work directory.
By default, the CVS metadata is removed.
</para></listitem>
<listitem><para><emphasis>"fullpath":</emphasis>
Controls whether the resulting checkout is at the
module level, which is the default, or is at deeper
paths.
</para></listitem>
<listitem><para><emphasis>"norecurse":</emphasis>
Causes the fetcher to only checkout the specified
directory with no recurse into any subdirectories.
</para></listitem>
<listitem><para><emphasis>"port":</emphasis>
The port to which the CVS server connects.
</para></listitem>
</itemizedlist>
Some example URLs are as follows:
<literallayout class='monospaced'>
SRC_URI = "cvs://CVSROOT;module=mymodule;tag=some-version;method=ext"
SRC_URI = "cvs://CVSROOT;module=mymodule;date=20060126;localdir=usethat"
</literallayout>
</para>
</section>
<section id='svn-fetcher'>
<title>Subversion (SVN) Fetcher (<filename>svn://</filename>)</title>
<para>
This fetcher submodule fetches code from the
Subversion source control system.
The executable used is specified by
<filename>FETCHCMD_svn</filename>, which defaults
to "svn".
The fetcher's temporary working directory is set by
<link linkend='var-SVNDIR'><filename>SVNDIR</filename></link>,
which is usually <filename>DL_DIR/svn</filename>.
</para>
<para>
The supported parameters are as follows:
<itemizedlist>
<listitem><para><emphasis>"module":</emphasis>
The name of the svn module to checkout.
You must provide this parameter.
You can think of this parameter as the top-level
directory of the repository data you want.
</para></listitem>
<listitem><para><emphasis>"path_spec":</emphasis>
A specific directory in which to checkout the
specified svn module.
</para></listitem>
<listitem><para><emphasis>"protocol":</emphasis>
The protocol to use, which defaults to "svn".
If "protocol" is set to "svn+ssh", the "ssh"
parameter is also used.
</para></listitem>
<listitem><para><emphasis>"rev":</emphasis>
The revision of the source code to checkout.
</para></listitem>
<listitem><para><emphasis>"scmdata":</emphasis>
Causes the “.svn” directories to be available during
compile-time when set to "keep".
By default, these directories are removed.
</para></listitem>
<listitem><para><emphasis>"ssh":</emphasis>
An optional parameter used when "protocol" is set
to "svn+ssh".
You can use this parameter to specify the ssh
program used by svn.
</para></listitem>
<listitem><para><emphasis>"transportuser":</emphasis>
When required, sets the username for the transport.
By default, this parameter is empty.
The transport username is different than the username
used in the main URL, which is passed to the subversion
command.
</para></listitem>
</itemizedlist>
Following are three examples using svn:
<literallayout class='monospaced'>
SRC_URI = "svn://myrepos/proj1;module=vip;protocol=http;rev=667"
SRC_URI = "svn://myrepos/proj1;module=opie;protocol=svn+ssh"
SRC_URI = "svn://myrepos/proj1;module=trunk;protocol=http;path_spec=${MY_DIR}/proj1"
</literallayout>
</para>
</section>
<section id='git-fetcher'>
<title>Git Fetcher (<filename>git://</filename>)</title>
<para>
This fetcher submodule fetches code from the Git
source control system.
The fetcher works by creating a bare clone of the
remote into
<link linkend='var-GITDIR'><filename>GITDIR</filename></link>,
which is usually <filename>DL_DIR/git2</filename>.
This bare clone is then cloned into the work directory during the
unpack stage when a specific tree is checked out.
This is done using alternates and by reference to
minimize the amount of duplicate data on the disk and
make the unpack process fast.
The executable used can be set with
<filename>FETCHCMD_git</filename>.
</para>
<para>
This fetcher supports the following parameters:
<itemizedlist>
<listitem><para><emphasis>"protocol":</emphasis>
The protocol used to fetch the files.
The default is "git" when a hostname is set.
If a hostname is not set, the Git protocol is "file".
You can also use "http", "https", "ssh" and "rsync".
</para></listitem>
<listitem><para><emphasis>"nocheckout":</emphasis>
Tells the fetcher to not checkout source code when
unpacking when set to "1".
Set this option for the URL where there is a custom
routine to checkout code.
The default is "0".
</para></listitem>
<listitem><para><emphasis>"rebaseable":</emphasis>
Indicates that the upstream Git repository can be rebased.
You should set this parameter to "1" if
revisions can become detached from branches.
In this case, the source mirror tarball is done per
revision, which has a loss of efficiency.
Rebasing the upstream Git repository could cause the
current revision to disappear from the upstream repository.
This option reminds the fetcher to preserve the local cache
carefully for future use.
The default value for this parameter is "0".
</para></listitem>
<listitem><para><emphasis>"nobranch":</emphasis>
Tells the fetcher to not check the SHA validation
for the branch when set to "1".
The default is "0".
Set this option for the recipe that refers to
the commit that is valid for a tag instead of
the branch.
</para></listitem>
<listitem><para><emphasis>"bareclone":</emphasis>
Tells the fetcher to clone a bare clone into the
destination directory without checking out a working tree.
Only the raw Git metadata is provided.
This parameter implies the "nocheckout" parameter as well.
</para></listitem>
<listitem><para><emphasis>"branch":</emphasis>
The branch(es) of the Git tree to clone.
If unset, this is assumed to be "master".
The number of branch parameters much match the number of
name parameters.
</para></listitem>
<listitem><para><emphasis>"rev":</emphasis>
The revision to use for the checkout.
The default is "master".
</para></listitem>
<listitem><para><emphasis>"tag":</emphasis>
Specifies a tag to use for the checkout.
To correctly resolve tags, BitBake must access the
network.
For that reason, tags are often not used.
As far as Git is concerned, the "tag" parameter behaves
effectively the same as the "rev" parameter.
</para></listitem>
<listitem><para><emphasis>"subpath":</emphasis>
Limits the checkout to a specific subpath of the tree.
By default, the whole tree is checked out.
</para></listitem>
<listitem><para><emphasis>"destsuffix":</emphasis>
The name of the path in which to place the checkout.
By default, the path is <filename>git/</filename>.
</para></listitem>
</itemizedlist>
Here are some example URLs:
<literallayout class='monospaced'>
SRC_URI = "git://git.oe.handhelds.org/git/vip.git;tag=version-1"
SRC_URI = "git://git.oe.handhelds.org/git/vip.git;protocol=http"
</literallayout>
</para>
</section>
<section id='gitsm-fetcher'>
<title>Git Submodule Fetcher (<filename>gitsm://</filename>)</title>
<para>
This fetcher submodule inherits from the
<link linkend='git-fetcher'>Git fetcher</link> and extends
that fetcher's behavior by fetching a repository's submodules.
<link linkend='var-SRC_URI'><filename>SRC_URI</filename></link>
is passed to the Git fetcher as described in the
"<link linkend='git-fetcher'>Git Fetcher (<filename>git://</filename>)</link>"
section.
<note>
<title>Notes and Warnings</title>
<para>
You must clean a recipe when switching between
'<filename>git://</filename>' and
'<filename>gitsm://</filename>' URLs.
</para>
<para>
The Git Submodules fetcher is not a complete fetcher
implementation.
The fetcher has known issues where it does not use the
normal source mirroring infrastructure properly.
</para>
</note>
</para>
</section>
<section id='clearcase-fetcher'>
<title>ClearCase Fetcher (<filename>ccrc://</filename>)</title>
<para>
This fetcher submodule fetches code from a
<ulink url='http://en.wikipedia.org/wiki/Rational_ClearCase'>ClearCase</ulink>
repository.
</para>
<para>
To use this fetcher, make sure your recipe has proper
<link linkend='var-SRC_URI'><filename>SRC_URI</filename></link>,
<link linkend='var-SRCREV'><filename>SRCREV</filename></link>, and
<link linkend='var-PV'><filename>PV</filename></link> settings.
Here is an example:
<literallayout class='monospaced'>
SRC_URI = "ccrc://cc.example.org/ccrc;vob=/example_vob;module=/example_module"
SRCREV = "EXAMPLE_CLEARCASE_TAG"
PV = "${@d.getVar("SRCREV", False).replace("/", "+")}"
</literallayout>
The fetcher uses the <filename>rcleartool</filename> or
<filename>cleartool</filename> remote client, depending on
which one is available.
</para>
<para>
Following are options for the <filename>SRC_URI</filename>
statement:
<itemizedlist>
<listitem><para><emphasis><filename>vob</filename></emphasis>:
The name, which must include the
prepending "/" character, of the ClearCase VOB.
This option is required.
</para></listitem>
<listitem><para><emphasis><filename>module</filename></emphasis>:
The module, which must include the
prepending "/" character, in the selected VOB.
<note>
The <filename>module</filename> and <filename>vob</filename>
options are combined to create the <filename>load</filename> rule in
the view config spec.
As an example, consider the <filename>vob</filename> and
<filename>module</filename> values from the
<filename>SRC_URI</filename> statement at the start of this section.
Combining those values results in the following:
<literallayout class='monospaced'>
load /example_vob/example_module
</literallayout>
</note>
</para></listitem>
<listitem><para><emphasis><filename>proto</filename></emphasis>:
The protocol, which can be either <filename>http</filename> or
<filename>https</filename>.
</para></listitem>
</itemizedlist>
</para>
<para>
By default, the fetcher creates a configuration specification.
If you want this specification written to an area other than the default,
use the <filename>CCASE_CUSTOM_CONFIG_SPEC</filename> variable
in your recipe to define where the specification is written.
<note>
the <filename>SRCREV</filename> loses its functionality if you
specify this variable.
However, <filename>SRCREV</filename> is still used to label the
archive after a fetch even though it does not define what is
fetched.
</note>
</para>
<para>
Here are a couple of other behaviors worth mentioning:
<itemizedlist>
<listitem><para>
When using <filename>cleartool</filename>, the login of
<filename>cleartool</filename> is handled by the system.
The login require no special steps.
</para></listitem>
<listitem><para>
In order to use <filename>rcleartool</filename> with authenticated
users, an "rcleartool login" is necessary before using the fetcher.
</para></listitem>
</itemizedlist>
</para>
</section>
<section id='perforce-fetcher'>
<title>Perforce Fetcher (<filename>p4://</filename>)</title>
<para>
This fetcher submodule fetches code from the
<ulink url='https://www.perforce.com/'>Perforce</ulink>
source control system.
The executable used is specified by
<filename>FETCHCMD_p4</filename>, which defaults
to "p4".
The fetcher's temporary working directory is set by
<link linkend='var-P4DIR'><filename>P4DIR</filename></link>,
which defaults to "DL_DIR/p4".
</para>
<para>
To use this fetcher, make sure your recipe has proper
<link linkend='var-SRC_URI'><filename>SRC_URI</filename></link>,
<link linkend='var-SRCREV'><filename>SRCREV</filename></link>, and
<link linkend='var-PV'><filename>PV</filename></link> values.
The p4 executable is able to use the config file defined by your
system's <filename>P4CONFIG</filename> environment variable in
order to define the Perforce server URL and port, username, and
password if you do not wish to keep those values in a recipe
itself.
If you choose not to use <filename>P4CONFIG</filename>,
or to explicitly set variables that <filename>P4CONFIG</filename>
can contain, you can specify the <filename>P4PORT</filename> value,
which is the server's URL and port number, and you can
specify a username and password directly in your recipe within
<filename>SRC_URI</filename>.
</para>
<para>
Here is an example that relies on <filename>P4CONFIG</filename>
to specify the server URL and port, username, and password, and
fetches the Head Revision:
<literallayout class='monospaced'>
SRC_URI = "p4://example-depot/main/source/..."
SRCREV = "${AUTOREV}"
PV = "p4-${SRCPV}"
S = "${WORKDIR}/p4"
</literallayout>
</para>
<para>
Here is an example that specifies the server URL and port,
username, and password, and fetches a Revision based on a Label:
<literallayout class='monospaced'>
P4PORT = "tcp:p4server.example.net:1666"
SRC_URI = "p4://user:passwd@example-depot/main/source/..."
SRCREV = "release-1.0"
PV = "p4-${SRCPV}"
S = "${WORKDIR}/p4"
</literallayout>
<note>
You should always set <filename>S</filename>
to <filename>"${WORKDIR}/p4"</filename> in your recipe.
</note>
</para>
</section>
<section id='other-fetchers'>
<title>Other Fetchers</title>
<para>
Fetch submodules also exist for the following:
<itemizedlist>
<listitem><para>
Bazaar (<filename>bzr://</filename>)
</para></listitem>
<listitem><para>
Trees using Git Annex (<filename>gitannex://</filename>)
</para></listitem>
<listitem><para>
Secure FTP (<filename>sftp://</filename>)
</para></listitem>
<listitem><para>
Secure Shell (<filename>ssh://</filename>)
</para></listitem>
<listitem><para>
Repo (<filename>repo://</filename>)
</para></listitem>
<listitem><para>
OSC (<filename>osc://</filename>)
</para></listitem>
<listitem><para>
Mercurial (<filename>hg://</filename>)
</para></listitem>
</itemizedlist>
No documentation currently exists for these lesser used
fetcher submodules.
However, you might find the code helpful and readable.
</para>
</section>
</section>
<section id='auto-revisions'>
<title>Auto Revisions</title>
<para>
We need to document <filename>AUTOREV</filename> and
<filename>SRCREV_FORMAT</filename> here.
</para>
</section>
</chapter>

View File

@@ -0,0 +1,505 @@
<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
"http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd">
<appendix id='hello-world-example'>
<title>Hello World Example</title>
<section id='bitbake-hello-world'>
<title>BitBake Hello World</title>
<para>
The simplest example commonly used to demonstrate any new
programming language or tool is the
"<ulink url="http://en.wikipedia.org/wiki/Hello_world_program">Hello World</ulink>"
example.
This appendix demonstrates, in tutorial form, Hello
World within the context of BitBake.
The tutorial describes how to create a new project
and the applicable metadata files necessary to allow
BitBake to build it.
</para>
</section>
<section id='example-obtaining-bitbake'>
<title>Obtaining BitBake</title>
<para>
See the
"<link linkend='obtaining-bitbake'>Obtaining BitBake</link>"
section for information on how to obtain BitBake.
Once you have the source code on your machine, the BitBake directory
appears as follows:
<literallayout class='monospaced'>
$ ls -al
total 100
drwxrwxr-x. 9 wmat wmat 4096 Jan 31 13:44 .
drwxrwxr-x. 3 wmat wmat 4096 Feb 4 10:45 ..
-rw-rw-r--. 1 wmat wmat 365 Nov 26 04:55 AUTHORS
drwxrwxr-x. 2 wmat wmat 4096 Nov 26 04:55 bin
drwxrwxr-x. 4 wmat wmat 4096 Jan 31 13:44 build
-rw-rw-r--. 1 wmat wmat 16501 Nov 26 04:55 ChangeLog
drwxrwxr-x. 2 wmat wmat 4096 Nov 26 04:55 classes
drwxrwxr-x. 2 wmat wmat 4096 Nov 26 04:55 conf
drwxrwxr-x. 3 wmat wmat 4096 Nov 26 04:55 contrib
-rw-rw-r--. 1 wmat wmat 17987 Nov 26 04:55 COPYING
drwxrwxr-x. 3 wmat wmat 4096 Nov 26 04:55 doc
-rw-rw-r--. 1 wmat wmat 69 Nov 26 04:55 .gitignore
-rw-rw-r--. 1 wmat wmat 849 Nov 26 04:55 HEADER
drwxrwxr-x. 5 wmat wmat 4096 Jan 31 13:44 lib
-rw-rw-r--. 1 wmat wmat 195 Nov 26 04:55 MANIFEST.in
-rw-rw-r--. 1 wmat wmat 2887 Nov 26 04:55 TODO
</literallayout>
</para>
<para>
At this point, you should have BitBake cloned to
a directory that matches the previous listing except for
dates and user names.
</para>
</section>
<section id='setting-up-the-bitbake-environment'>
<title>Setting Up the BitBake Environment</title>
<para>
First, you need to be sure that you can run BitBake.
Set your working directory to where your local BitBake
files are and run the following command:
<literallayout class='monospaced'>
$ ./bin/bitbake --version
BitBake Build Tool Core version 1.23.0, bitbake version 1.23.0
</literallayout>
The console output tells you what version you are running.
</para>
<para>
The recommended method to run BitBake is from a directory of your
choice.
To be able to run BitBake from any directory, you need to add the
executable binary to your binary to your shell's environment
<filename>PATH</filename> variable.
First, look at your current <filename>PATH</filename> variable
by entering the following:
<literallayout class='monospaced'>
$ echo $PATH
</literallayout>
Next, add the directory location for the BitBake binary to the
<filename>PATH</filename>.
Here is an example that adds the
<filename>/home/scott-lenovo/bitbake/bin</filename> directory
to the front of the <filename>PATH</filename> variable:
<literallayout class='monospaced'>
$ export PATH=/home/scott-lenovo/bitbake/bin:$PATH
</literallayout>
You should now be able to enter the <filename>bitbake</filename>
command from the command line while working from any directory.
</para>
</section>
<section id='the-hello-world-example'>
<title>The Hello World Example</title>
<para>
The overall goal of this exercise is to build a
complete "Hello World" example utilizing task and layer
concepts.
Because this is how modern projects such as OpenEmbedded and
the Yocto Project utilize BitBake, the example
provides an excellent starting point for understanding
BitBake.
</para>
<para>
To help you understand how to use BitBake to build targets,
the example starts with nothing but the <filename>bitbake</filename>
command, which causes BitBake to fail and report problems.
The example progresses by adding pieces to the build to
eventually conclude with a working, minimal "Hello World"
example.
</para>
<para>
While every attempt is made to explain what is happening during
the example, the descriptions cannot cover everything.
You can find further information throughout this manual.
Also, you can actively participate in the
<ulink url='http://lists.openembedded.org/mailman/listinfo/bitbake-devel'></ulink>
discussion mailing list about the BitBake build tool.
</para>
<note>
This example was inspired by and drew heavily from these sources:
<itemizedlist>
<listitem><para>
<ulink url="http://www.mail-archive.com/yocto@yoctoproject.org/msg09379.html">Mailing List post - The BitBake equivalent of "Hello, World!"</ulink>
</para></listitem>
<listitem><para>
<ulink url="http://hambedded.org/blog/2012/11/24/from-bitbake-hello-world-to-an-image/">Hambedded Linux blog post - From Bitbake Hello World to an Image</ulink>
</para></listitem>
</itemizedlist>
</note>
<para>
As stated earlier, the goal of this example
is to eventually compile "Hello World".
However, it is unknown what BitBake needs and what you have
to provide in order to achieve that goal.
Recall that BitBake utilizes three types of metadata files:
<link linkend='configuration-files'>Configuration Files</link>,
<link linkend='classes'>Classes</link>, and
<link linkend='recipes'>Recipes</link>.
But where do they go?
How does BitBake find them?
BitBake's error messaging helps you answer these types of questions
and helps you better understand exactly what is going on.
</para>
<para>
Following is the complete "Hello World" example.
</para>
<orderedlist>
<listitem><para><emphasis>Create a Project Directory:</emphasis>
First, set up a directory for the "Hello World" project.
Here is how you can do so in your home directory:
<literallayout class='monospaced'>
$ mkdir ~/hello
$ cd ~/hello
</literallayout>
This is the directory that BitBake will use to do all of
its work.
You can use this directory to keep all the metafiles needed
by BitBake.
Having a project directory is a good way to isolate your
project.
</para></listitem>
<listitem><para><emphasis>Run Bitbake:</emphasis>
At this point, you have nothing but a project directory.
Run the <filename>bitbake</filename> command and see what
it does:
<literallayout class='monospaced'>
$ bitbake
The BBPATH variable is not set and bitbake did not
find a conf/bblayers.conf file in the expected location.
Maybe you accidentally invoked bitbake from the wrong directory?
DEBUG: Removed the following variables from the environment:
GNOME_DESKTOP_SESSION_ID, XDG_CURRENT_DESKTOP,
GNOME_KEYRING_CONTROL, DISPLAY, SSH_AGENT_PID, LANG, no_proxy,
XDG_SESSION_PATH, XAUTHORITY, SESSION_MANAGER, SHLVL,
MANDATORY_PATH, COMPIZ_CONFIG_PROFILE, WINDOWID, EDITOR,
GPG_AGENT_INFO, SSH_AUTH_SOCK, GDMSESSION, GNOME_KEYRING_PID,
XDG_SEAT_PATH, XDG_CONFIG_DIRS, LESSOPEN, DBUS_SESSION_BUS_ADDRESS,
_, XDG_SESSION_COOKIE, DESKTOP_SESSION, LESSCLOSE, DEFAULTS_PATH,
UBUNTU_MENUPROXY, OLDPWD, XDG_DATA_DIRS, COLORTERM, LS_COLORS
</literallayout>
The majority of this output is specific to environment variables
that are not directly relevant to BitBake.
However, the very first message regarding the
<filename>BBPATH</filename> variable and the
<filename>conf/bblayers.conf</filename> file
is relevant.</para>
<para>
When you run BitBake, it begins looking for metadata files.
The
<link linkend='var-BBPATH'><filename>BBPATH</filename></link>
variable is what tells BitBake where to look for those files.
<filename>BBPATH</filename> is not set and you need to set it.
Without <filename>BBPATH</filename>, Bitbake cannot
find any configuration files (<filename>.conf</filename>)
or recipe files (<filename>.bb</filename>) at all.
BitBake also cannot find the <filename>bitbake.conf</filename>
file.
</para></listitem>
<listitem><para><emphasis>Setting <filename>BBPATH</filename>:</emphasis>
For this example, you can set <filename>BBPATH</filename>
in the same manner that you set <filename>PATH</filename>
earlier in the appendix.
You should realize, though, that it is much more flexible to set the
<filename>BBPATH</filename> variable up in a configuration
file for each project.</para>
<para>From your shell, enter the following commands to set and
export the <filename>BBPATH</filename> variable:
<literallayout class='monospaced'>
$ BBPATH="<replaceable>projectdirectory</replaceable>"
$ export BBPATH
</literallayout>
Use your actual project directory in the command.
BitBake uses that directory to find the metadata it needs for
your project.
<note>
When specifying your project directory, do not use the
tilde ("~") character as BitBake does not expand that character
as the shell would.
</note>
</para></listitem>
<listitem><para><emphasis>Run Bitbake:</emphasis>
Now that you have <filename>BBPATH</filename> defined, run
the <filename>bitbake</filename> command again:
<literallayout class='monospaced'>
$ bitbake
ERROR: Traceback (most recent call last):
File "/home/scott-lenovo/bitbake/lib/bb/cookerdata.py", line 163, in wrapped
return func(fn, *args)
File "/home/scott-lenovo/bitbake/lib/bb/cookerdata.py", line 173, in parse_config_file
return bb.parse.handle(fn, data, include)
File "/home/scott-lenovo/bitbake/lib/bb/parse/__init__.py", line 99, in handle
return h['handle'](fn, data, include)
File "/home/scott-lenovo/bitbake/lib/bb/parse/parse_py/ConfHandler.py", line 120, in handle
abs_fn = resolve_file(fn, data)
File "/home/scott-lenovo/bitbake/lib/bb/parse/__init__.py", line 117, in resolve_file
raise IOError("file %s not found in %s" % (fn, bbpath))
IOError: file conf/bitbake.conf not found in /home/scott-lenovo/hello
ERROR: Unable to parse conf/bitbake.conf: file conf/bitbake.conf not found in /home/scott-lenovo/hello
</literallayout>
This sample output shows that BitBake could not find the
<filename>conf/bitbake.conf</filename> file in the project
directory.
This file is the first thing BitBake must find in order
to build a target.
And, since the project directory for this example is
empty, you need to provide a <filename>conf/bitbake.conf</filename>
file.
</para></listitem>
<listitem><para><emphasis>Creating <filename>conf/bitbake.conf</filename>:</emphasis>
The <filename>conf/bitbake.conf</filename> includes a number of
configuration variables BitBake uses for metadata and recipe
files.
For this example, you need to create the file in your project directory
and define some key BitBake variables.
For more information on the <filename>bitbake.conf</filename>,
see
<ulink url='http://hambedded.org/blog/2012/11/24/from-bitbake-hello-world-to-an-image/#an-overview-of-bitbakeconf'></ulink>
</para>
<para>Use the following commands to create the <filename>conf</filename>
directory in the project directory:
<literallayout class='monospaced'>
$ mkdir conf
</literallayout>
From within the <filename>conf</filename> directory, use
some editor to create the <filename>bitbake.conf</filename>
so that it contains the following:
<literallayout class='monospaced'>
TMPDIR = "${<link linkend='var-TOPDIR'>TOPDIR</link>}/tmp"
<link linkend='var-CACHE'>CACHE</link> = "${TMPDIR}/cache"
<link linkend='var-STAMP'>STAMP</link> = "${TMPDIR}/stamps"
<link linkend='var-T'>T</link> = "${TMPDIR}/work"
<link linkend='var-B'>B</link> = "${TMPDIR}"
</literallayout>
The <filename>TMPDIR</filename> variable establishes a directory
that BitBake uses for build output and intermediate files (other
than the cached information used by the
<link linkend='setscene'>Setscene</link> process.
Here, the <filename>TMPDIR</filename> directory is set to
<filename>hello/tmp</filename>.
<note><title>Tip</title>
You can always safely delete the <filename>tmp</filename>
directory in order to rebuild a BitBake target.
The build process creates the directory for you
when you run BitBake.
</note></para>
<para>For information about each of the other variables defined in this
example, click on the links to take you to the definitions in
the glossary.
</para></listitem>
<listitem><para><emphasis>Run Bitbake:</emphasis>
After making sure that the <filename>conf/bitbake.conf</filename>
file exists, you can run the <filename>bitbake</filename>
command again:
<literallayout class='monospaced'>
$ bitbake
ERROR: Traceback (most recent call last):
File "/home/scott-lenovo/bitbake/lib/bb/cookerdata.py", line 163, in wrapped
return func(fn, *args)
File "/home/scott-lenovo/bitbake/lib/bb/cookerdata.py", line 177, in _inherit
bb.parse.BBHandler.inherit(bbclass, "configuration INHERITs", 0, data)
File "/home/scott-lenovo/bitbake/lib/bb/parse/parse_py/BBHandler.py", line 92, in inherit
include(fn, file, lineno, d, "inherit")
File "/home/scott-lenovo/bitbake/lib/bb/parse/parse_py/ConfHandler.py", line 100, in include
raise ParseError("Could not %(error_out)s file %(fn)s" % vars(), oldfn, lineno)
ParseError: ParseError in configuration INHERITs: Could not inherit file classes/base.bbclass
ERROR: Unable to parse base: ParseError in configuration INHERITs: Could not inherit file classes/base.bbclass
</literallayout>
In the sample output, BitBake could not find the
<filename>classes/base.bbclass</filename> file.
You need to create that file next.
</para></listitem>
<listitem><para><emphasis>Creating <filename>classes/base.bbclass</filename>:</emphasis>
BitBake uses class files to provide common code and functionality.
The minimally required class for BitBake is the
<filename>classes/base.bbclass</filename> file.
The <filename>base</filename> class is implicitly inherited by
every recipe.
BitBake looks for the class in the <filename>classes</filename>
directory of the project (i.e <filename>hello/classes</filename>
in this example).
</para>
<para>Create the <filename>classes</filename> directory as follows:
<literallayout class='monospaced'>
$ cd $HOME/hello
$ mkdir classes
</literallayout>
Move to the <filename>classes</filename> directory and then
create the <filename>base.bbclass</filename> file by inserting
this single line:
<literallayout class='monospaced'>
addtask build
</literallayout>
The minimal task that BitBake runs is the
<filename>do_build</filename> task.
This is all the example needs in order to build the project.
Of course, the <filename>base.bbclass</filename> can have much
more depending on which build environments BitBake is
supporting.
For more information on the <filename>base.bbclass</filename> file,
you can look at
<ulink url='http://hambedded.org/blog/2012/11/24/from-bitbake-hello-world-to-an-image/#tasks'></ulink>.
</para></listitem>
<listitem><para><emphasis>Run Bitbake:</emphasis>
After making sure that the <filename>classes/base.bbclass</filename>
file exists, you can run the <filename>bitbake</filename>
command again:
<literallayout class='monospaced'>
$ bitbake
Nothing to do. Use 'bitbake world' to build everything, or run 'bitbake --help' for usage information.
</literallayout>
BitBake is finally reporting no errors.
However, you can see that it really does not have anything
to do.
You need to create a recipe that gives BitBake something to do.
</para></listitem>
<listitem><para><emphasis>Creating a Layer:</emphasis>
While it is not really necessary for such a small example,
it is good practice to create a layer in which to keep your
code separate from the general metadata used by BitBake.
Thus, this example creates and uses a layer called "mylayer".
<note>
You can find additional information on adding a layer at
<ulink url='http://hambedded.org/blog/2012/11/24/from-bitbake-hello-world-to-an-image/#adding-an-example-layer'></ulink>.
</note>
</para>
<para>Minimally, you need a recipe file and a layer configuration
file in your layer.
The configuration file needs to be in the <filename>conf</filename>
directory inside the layer.
Use these commands to set up the layer and the <filename>conf</filename>
directory:
<literallayout class='monospaced'>
$ cd $HOME
$ mkdir mylayer
$ cd mylayer
$ mkdir conf
</literallayout>
Move to the <filename>conf</filename> directory and create a
<filename>layer.conf</filename> file that has the following:
<literallayout class='monospaced'>
BBPATH .= ":${<link linkend='var-LAYERDIR'>LAYERDIR</link>}"
<link linkend='var-BBFILES'>BBFILES</link> += "${LAYERDIR}/*.bb"
<link linkend='var-BBFILE_COLLECTIONS'>BBFILE_COLLECTIONS</link> += "mylayer"
<link linkend='var-BBFILE_PATTERN'>BBFILE_PATTERN_mylayer</link> := "^${LAYERDIR_RE}/"
</literallayout>
For information on these variables, click the links
to go to the definitions in the glossary.</para>
<para>You need to create the recipe file next.
Inside your layer at the top-level, use an editor and create
a recipe file named <filename>printhello.bb</filename> that
has the following:
<literallayout class='monospaced'>
<link linkend='var-DESCRIPTION'>DESCRIPTION</link> = "Prints Hello World"
<link linkend='var-PN'>PN</link> = 'printhello'
<link linkend='var-PV'>PV</link> = '1'
python do_build() {
bb.plain("********************");
bb.plain("* *");
bb.plain("* Hello, World! *");
bb.plain("* *");
bb.plain("********************");
}
</literallayout>
The recipe file simply provides a description of the
recipe, the name, version, and the <filename>do_build</filename>
task, which prints out "Hello World" to the console.
For more information on these variables, follow the links
to the glossary.
</para></listitem>
<listitem><para><emphasis>Run Bitbake With a Target:</emphasis>
Now that a BitBake target exists, run the command and provide
that target:
<literallayout class='monospaced'>
$ cd $HOME/hello
$ bitbake printhello
ERROR: no recipe files to build, check your BBPATH and BBFILES?
Summary: There was 1 ERROR message shown, returning a non-zero exit code.
</literallayout>
We have created the layer with the recipe and the layer
configuration file but it still seems that BitBake cannot
find the recipe.
BitBake needs a <filename>conf/bblayers.conf</filename> that
lists the layers for the project.
Without this file, BitBake cannot find the recipe.
</para></listitem>
<listitem><para><emphasis>Creating <filename>conf/bblayers.conf</filename>:</emphasis>
BitBake uses the <filename>conf/bblayers.conf</filename> file
to locate layers needed for the project.
This file must reside in the <filename>conf</filename> directory
of the project (i.e. <filename>hello/conf</filename> for this
example).</para>
<para>Set your working directory to the <filename>hello/conf</filename>
directory and then create the <filename>bblayers.conf</filename>
file so that it contains the following:
<literallayout class='monospaced'>
BBLAYERS ?= " \
/home/&lt;you&gt;/mylayer \
"
</literallayout>
You need to provide your own information for
<filename>you</filename> in the file.
</para></listitem>
<listitem><para><emphasis>Run Bitbake With a Target:</emphasis>
Now that you have supplied the <filename>bblayers.conf</filename>
file, run the <filename>bitbake</filename> command and provide
the target:
<literallayout class='monospaced'>
$ bitbake printhello
Parsing recipes: 100% |##################################################################################|
Time: 00:00:00
Parsing of 1 .bb files complete (0 cached, 1 parsed). 1 targets, 0 skipped, 0 masked, 0 errors.
NOTE: Resolving any missing task queue dependencies
NOTE: Preparing RunQueue
NOTE: Executing RunQueue Tasks
********************
* *
* Hello, World! *
* *
********************
NOTE: Tasks Summary: Attempted 1 tasks of which 0 didn't need to be rerun and all succeeded.
</literallayout>
BitBake finds the <filename>printhello</filename> recipe and
successfully runs the task.
<note>
After the first execution, re-running
<filename>bitbake printhello</filename> again will not
result in a BitBake run that prints the same console
output.
The reason for this is that the first time the
<filename>printhello.bb</filename> recipe's
<filename>do_build</filename> task executes
successfully, BitBake writes a stamp file for the task.
Thus, the next time you attempt to run the task
using that same <filename>bitbake</filename> command,
BitBake notices the stamp and therefore determines
that the task does not need to be re-run.
If you delete the <filename>tmp</filename> directory
or run <filename>bitbake -c clean printhello</filename>
and then re-run the build, the "Hello, World!" message will
be printed again.
</note>
</para></listitem>
</orderedlist>
</section>
</appendix>

View File

@@ -0,0 +1,721 @@
<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
"http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd">
<chapter id="bitbake-user-manual-intro">
<title>Overview</title>
<para>
Welcome to the BitBake User Manual.
This manual provides information on the BitBake tool.
The information attempts to be as independent as possible regarding
systems that use BitBake, such as OpenEmbedded and the
Yocto Project.
In some cases, scenarios or examples within the context of
a build system are used in the manual to help with understanding.
For these cases, the manual clearly states the context.
</para>
<section id="intro">
<title>Introduction</title>
<para>
Fundamentally, BitBake is a generic task execution
engine that allows shell and Python tasks to be run
efficiently and in parallel while working within
complex inter-task dependency constraints.
One of BitBake's main users, OpenEmbedded, takes this core
and builds embedded Linux software stacks using
a task-oriented approach.
</para>
<para>
Conceptually, BitBake is similar to GNU Make in
some regards but has significant differences:
<itemizedlist>
<listitem><para>
BitBake executes tasks according to provided
metadata that builds up the tasks.
Metadata is stored in recipe (<filename>.bb</filename>)
and related recipe "append" (<filename>.bbappend</filename>)
files, configuration (<filename>.conf</filename>) and
underlying include (<filename>.inc</filename>) files, and
in class (<filename>.bbclass</filename>) files.
The metadata provides
BitBake with instructions on what tasks to run and
the dependencies between those tasks.
</para></listitem>
<listitem><para>
BitBake includes a fetcher library for obtaining source
code from various places such as local files, source control
systems, or websites.
</para></listitem>
<listitem><para>
The instructions for each unit to be built (e.g. a piece
of software) are known as "recipe" files and
contain all the information about the unit
(dependencies, source file locations, checksums, description
and so on).
</para></listitem>
<listitem><para>
BitBake includes a client/server abstraction and can
be used from a command line or used as a service over
XML-RPC and has several different user interfaces.
</para></listitem>
</itemizedlist>
</para>
</section>
<section id="history-and-goals">
<title>History and Goals</title>
<para>
BitBake was originally a part of the OpenEmbedded project.
It was inspired by the Portage package management system
used by the Gentoo Linux distribution.
On December 7, 2004, OpenEmbedded project team member
Chris Larson split the project into two distinct pieces:
<itemizedlist>
<listitem><para>BitBake, a generic task executor</para></listitem>
<listitem><para>OpenEmbedded, a metadata set utilized by
BitBake</para></listitem>
</itemizedlist>
Today, BitBake is the primary basis of the
<ulink url="http://www.openembedded.org/">OpenEmbedded</ulink>
project, which is being used to build and maintain Linux
distributions such as the
<ulink url='http://www.angstrom-distribution.org/'>Angstrom Distribution</ulink>,
and which is also being used as the build tool for Linux projects
such as the
<ulink url='http://www.yoctoproject.org'>Yocto Project</ulink>.
</para>
<para>
Prior to BitBake, no other build tool adequately met the needs of
an aspiring embedded Linux distribution.
All of the build systems used by traditional desktop Linux
distributions lacked important functionality, and none of the
ad hoc Buildroot-based systems, prevalent in the
embedded space, were scalable or maintainable.
</para>
<para>
Some important original goals for BitBake were:
<itemizedlist>
<listitem><para>
Handle cross-compilation.
</para></listitem>
<listitem><para>
Handle inter-package dependencies (build time on
target architecture, build time on native
architecture, and runtime).
</para></listitem>
<listitem><para>
Support running any number of tasks within a given
package, including, but not limited to, fetching
upstream sources, unpacking them, patching them,
configuring them, and so forth.
</para></listitem>
<listitem><para>
Be Linux distribution agnostic for both build and
target systems.
</para></listitem>
<listitem><para>
Be architecture agnostic.
</para></listitem>
<listitem><para>
Support multiple build and target operating systems
(e.g. Cygwin, the BSDs, and so forth).
</para></listitem>
<listitem><para>
Be self contained, rather than tightly
integrated into the build machine's root
filesystem.
</para></listitem>
<listitem><para>
Handle conditional metadata on the target architecture,
operating system, distribution, and machine.
</para></listitem>
<listitem><para>
Be easy to use the tools to supply local metadata and packages
against which to operate.
</para></listitem>
<listitem><para>
Be easy to use BitBake to collaborate between multiple
projects for their builds.
</para></listitem>
<listitem><para>
Provide an inheritance mechanism to share
common metadata between many packages.
</para></listitem>
</itemizedlist>
Over time it became apparent that some further requirements
were necessary:
<itemizedlist>
<listitem><para>
Handle variants of a base recipe (e.g. native, sdk,
and multilib).
</para></listitem>
<listitem><para>
Split metadata into layers and allow layers
to enhance or override other layers.
</para></listitem>
<listitem><para>
Allow representation of a given set of input variables
to a task as a checksum.
Based on that checksum, allow acceleration of builds
with prebuilt components.
</para></listitem>
</itemizedlist>
BitBake satisfies all the original requirements and many more
with extensions being made to the basic functionality to
reflect the additional requirements.
Flexibility and power have always been the priorities.
BitBake is highly extensible and supports embedded Python code and
execution of any arbitrary tasks.
</para>
</section>
<section id="Concepts">
<title>Concepts</title>
<para>
BitBake is a program written in the Python language.
At the highest level, BitBake interprets metadata, decides
what tasks are required to run, and executes those tasks.
Similar to GNU Make, BitBake controls how software is
built.
GNU Make achieves its control through "makefiles", while
BitBake uses "recipes".
</para>
<para>
BitBake extends the capabilities of a simple
tool like GNU Make by allowing for the definition of much more
complex tasks, such as assembling entire embedded Linux
distributions.
</para>
<para>
The remainder of this section introduces several concepts
that should be understood in order to better leverage
the power of BitBake.
</para>
<section id='recipes'>
<title>Recipes</title>
<para>
BitBake Recipes, which are denoted by the file extension
<filename>.bb</filename>, are the most basic metadata files.
These recipe files provide BitBake with the following:
<itemizedlist>
<listitem><para>Descriptive information about the
package (author, homepage, license, and so on)</para></listitem>
<listitem><para>The version of the recipe</para></listitem>
<listitem><para>Existing dependencies (both build
and runtime dependencies)</para></listitem>
<listitem><para>Where the source code resides and
how to fetch it</para></listitem>
<listitem><para>Whether the source code requires
any patches, where to find them, and how to apply
them</para></listitem>
<listitem><para>How to configure and compile the
source code</para></listitem>
<listitem><para>Where on the target machine to install the
package or packages created</para></listitem>
</itemizedlist>
</para>
<para>
Within the context of BitBake, or any project utilizing BitBake
as its build system, files with the <filename>.bb</filename>
extension are referred to as recipes.
<note>
The term "package" is also commonly used to describe recipes.
However, since the same word is used to describe packaged
output from a project, it is best to maintain a single
descriptive term - "recipes".
Put another way, a single "recipe" file is quite capable
of generating a number of related but separately installable
"packages".
In fact, that ability is fairly common.
</note>
</para>
</section>
<section id='configuration-files'>
<title>Configuration Files</title>
<para>
Configuration files, which are denoted by the
<filename>.conf</filename> extension, define
various configuration variables that govern the project's build
process.
These files fall into several areas that define
machine configuration options, distribution configuration
options, compiler tuning options, general common
configuration options, and user configuration options.
The main configuration file is the sample
<filename>bitbake.conf</filename> file, which is
located within the BitBake source tree
<filename>conf</filename> directory.
</para>
</section>
<section id='classes'>
<title>Classes</title>
<para>
Class files, which are denoted by the
<filename>.bbclass</filename> extension, contain
information that is useful to share between metadata files.
The BitBake source tree currently comes with one class metadata file
called <filename>base.bbclass</filename>.
You can find this file in the
<filename>classes</filename> directory.
The <filename>base.bbclass</filename> class files is special since it
is always included automatically for all recipes
and classes.
This class contains definitions for standard basic tasks such
as fetching, unpacking, configuring (empty by default),
compiling (runs any Makefile present), installing (empty by
default) and packaging (empty by default).
These tasks are often overridden or extended by other classes
added during the project development process.
</para>
</section>
<section id='layers'>
<title>Layers</title>
<para>
Layers allow you to isolate different types of
customizations from each other.
While you might find it tempting to keep everything in one layer
when working on a single project, the more modular you organize
your metadata, the easier it is to cope with future changes.
</para>
<para>
To illustrate how you can use layers to keep things modular,
consider customizations you might make to support a specific target machine.
These types of customizations typically reside in a special layer,
rather than a general layer, called a Board Support Package (BSP)
Layer.
Furthermore, the machine customizations should be isolated from
recipes and metadata that support a new GUI environment, for
example.
This situation gives you a couple of layers: one for the machine
configurations and one for the GUI environment.
It is important to understand, however, that the BSP layer can still
make machine-specific additions to recipes within
the GUI environment layer without polluting the GUI layer itself
with those machine-specific changes.
You can accomplish this through a recipe that is a BitBake append
(<filename>.bbappend</filename>) file.
</para>
</section>
<section id='append-bbappend-files'>
<title>Append Files</title>
<para>
Append files, which are files that have the
<filename>.bbappend</filename> file extension, extend or
override information in an existing recipe file.
</para>
<para>
BitBake expects every append file to have a corresponding recipe file.
Furthermore, the append file and corresponding recipe file
must use the same root filename.
The filenames can differ only in the file type suffix used
(e.g. <filename>formfactor_0.0.bb</filename> and
<filename>formfactor_0.0.bbappend</filename>).
</para>
<para>
Information in append files extends or
overrides the information in the underlying,
similarly-named recipe files.
</para>
<para>
When you name an append file, you can use the
wildcard character (%) to allow for matching recipe names.
For example, suppose you have an append file named
as follows:
<literallayout class='monospaced'>
busybox_1.21.%.bbappend
</literallayout>
That append file would match any <filename>busybox_1.21.x.bb</filename>
version of the recipe.
So, the append file would match the following recipe names:
<literallayout class='monospaced'>
busybox_1.21.1.bb
busybox_1.21.2.bb
busybox_1.21.3.bb
</literallayout>
If the <filename>busybox</filename> recipe was updated to
<filename>busybox_1.3.0.bb</filename>, the append name would not
match.
However, if you named the append file
<filename>busybox_1.%.bbappend</filename>, then you would have a match.
</para>
<para>
In the most general case, you could name the append file something as
simple as <filename>busybox_%.bbappend</filename> to be entirely
version independent.
</para>
</section>
</section>
<section id='obtaining-bitbake'>
<title>Obtaining BitBake</title>
<para>
You can obtain BitBake several different ways:
<itemizedlist>
<listitem><para><emphasis>Cloning BitBake:</emphasis>
Using Git to clone the BitBake source code repository
is the recommended method for obtaining BitBake.
Cloning the repository makes it easy to get bug fixes
and have access to stable branches and the master
branch.
Once you have cloned BitBake, you should use
the latest stable
branch for development since the master branch is for
BitBake development and might contain less stable changes.
</para>
<para>You usually need a version of BitBake
that matches the metadata you are using.
The metadata is generally backwards compatible but
not forward compatible.</para>
<para>Here is an example that clones the BitBake repository:
<literallayout class='monospaced'>
$ git clone git://git.openembedded.org/bitbake
</literallayout>
This command clones the BitBake Git repository into a
directory called <filename>bitbake</filename>.
Alternatively, you can
designate a directory after the
<filename>git clone</filename> command
if you want to call the new directory something
other than <filename>bitbake</filename>.
Here is an example that names the directory
<filename>bbdev</filename>:
<literallayout class='monospaced'>
$ git clone git://git.openembedded.org/bitbake bbdev
</literallayout></para></listitem>
<listitem><para><emphasis>Installation using your Distribution
Package Management System:</emphasis>
This method is not
recommended because the BitBake version that is
provided by your distribution, in most cases,
is several
releases behind a snapshot of the BitBake repository.
</para></listitem>
<listitem><para><emphasis>Taking a snapshot of BitBake:</emphasis>
Downloading a snapshot of BitBake from the
source code repository gives you access to a known
branch or release of BitBake.
<note>
Cloning the Git repository, as described earlier,
is the preferred method for getting BitBake.
Cloning the repository makes it easier to update as
patches are added to the stable branches.
</note></para>
<para>The following example downloads a snapshot of
BitBake version 1.17.0:
<literallayout class='monospaced'>
$ wget http://git.openembedded.org/bitbake/snapshot/bitbake-1.17.0.tar.gz
$ tar zxpvf bitbake-1.17.0.tar.gz
</literallayout>
After extraction of the tarball using the tar utility,
you have a directory entitled
<filename>bitbake-1.17.0</filename>.
</para></listitem>
<listitem><para><emphasis>Using the BitBake that Comes With Your
Build Checkout:</emphasis>
A final possibility for getting a copy of BitBake is that it
already comes with your checkout of a larger Bitbake-based build
system, such as Poky or Yocto Project.
Rather than manually checking out individual layers and
gluing them together yourself, you can check
out an entire build system.
The checkout will already include a version of BitBake that
has been thoroughly tested for compatibility with the other
components.
For information on how to check out a particular BitBake-based
build system, consult that build system's supporting documentation.
</para></listitem>
</itemizedlist>
</para>
</section>
<section id="bitbake-user-manual-command">
<title>The BitBake Command</title>
<para>
The <filename>bitbake</filename> command is the primary interface
to the BitBake tool.
This section presents the BitBake command syntax and provides
several execution examples.
</para>
<section id='usage-and-syntax'>
<title>Usage and syntax</title>
<para>
Following is the usage and syntax for BitBake:
<literallayout class='monospaced'>
$ bitbake -h
Usage: bitbake [options] [recipename/target recipe:do_task ...]
Executes the specified task (default is 'build') for a given set of target recipes (.bb files).
It is assumed there is a conf/bblayers.conf available in cwd or in BBPATH which
will provide the layer, BBFILES and other configuration information.
Options:
--version show program's version number and exit
-h, --help show this help message and exit
-b BUILDFILE, --buildfile=BUILDFILE
Execute tasks from a specific .bb recipe directly.
WARNING: Does not handle any dependencies from other
recipes.
-k, --continue Continue as much as possible after an error. While the
target that failed and anything depending on it cannot
be built, as much as possible will be built before
stopping.
-a, --tryaltconfigs Continue with builds by trying to use alternative
providers where possible.
-f, --force Force the specified targets/task to run (invalidating
any existing stamp file).
-c CMD, --cmd=CMD Specify the task to execute. The exact options
available depend on the metadata. Some examples might
be 'compile' or 'populate_sysroot' or 'listtasks' may
give a list of the tasks available.
-C INVALIDATE_STAMP, --clear-stamp=INVALIDATE_STAMP
Invalidate the stamp for the specified task such as
'compile' and then run the default task for the
specified target(s).
-r PREFILE, --read=PREFILE
Read the specified file before bitbake.conf.
-R POSTFILE, --postread=POSTFILE
Read the specified file after bitbake.conf.
-v, --verbose Enable tracing of shell tasks (with 'set -x').
Also print bb.note(...) messages to stdout (in
addition to writing them to ${T}/log.do_&lt;task&gt;).
-D, --debug Increase the debug level. You can specify this
more than once. -D sets the debug level to 1,
where only bb.debug(1, ...) messages are printed
to stdout; -DD sets the debug level to 2, where
both bb.debug(1, ...) and bb.debug(2, ...)
messages are printed; etc. Without -D, no debug
messages are printed. Note that -D only affects
output to stdout. All debug messages are written
to ${T}/log.do_taskname, regardless of the debug
level.
-n, --dry-run Don't execute, just go through the motions.
-S SIGNATURE_HANDLER, --dump-signatures=SIGNATURE_HANDLER
Dump out the signature construction information, with
no task execution. The SIGNATURE_HANDLER parameter is
passed to the handler. Two common values are none and
printdiff but the handler may define more/less. none
means only dump the signature, printdiff means compare
the dumped signature with the cached one.
-p, --parse-only Quit after parsing the BB recipes.
-s, --show-versions Show current and preferred versions of all recipes.
-e, --environment Show the global or per-recipe environment complete
with information about where variables were
set/changed.
-g, --graphviz Save dependency tree information for the specified
targets in the dot syntax.
-I EXTRA_ASSUME_PROVIDED, --ignore-deps=EXTRA_ASSUME_PROVIDED
Assume these dependencies don't exist and are already
provided (equivalent to ASSUME_PROVIDED). Useful to
make dependency graphs more appealing
-l DEBUG_DOMAINS, --log-domains=DEBUG_DOMAINS
Show debug logging for the specified logging domains
-P, --profile Profile the command and save reports.
-u UI, --ui=UI The user interface to use (taskexp, knotty or
ncurses - default knotty).
-t SERVERTYPE, --servertype=SERVERTYPE
Choose which server type to use (process or xmlrpc -
default process).
--token=XMLRPCTOKEN Specify the connection token to be used when
connecting to a remote server.
--revisions-changed Set the exit code depending on whether upstream
floating revisions have changed or not.
--server-only Run bitbake without a UI, only starting a server
(cooker) process.
-B BIND, --bind=BIND The name/address for the bitbake server to bind to.
--no-setscene Do not run any setscene tasks. sstate will be ignored
and everything needed, built.
--setscene-only Only run setscene tasks, don't run any real tasks.
--remote-server=REMOTE_SERVER
Connect to the specified server.
-m, --kill-server Terminate the remote server.
--observe-only Connect to a server as an observing-only client.
--status-only Check the status of the remote bitbake server.
-w WRITEEVENTLOG, --write-log=WRITEEVENTLOG
Writes the event log of the build to a bitbake event
json file. Use '' (empty string) to assign the name
automatically.
</literallayout>
</para>
</section>
<section id='bitbake-examples'>
<title>Examples</title>
<para>
This section presents some examples showing how to use BitBake.
</para>
<section id='example-executing-a-task-against-a-single-recipe'>
<title>Executing a Task Against a Single Recipe</title>
<para>
Executing tasks for a single recipe file is relatively simple.
You specify the file in question, and BitBake parses
it and executes the specified task.
If you do not specify a task, BitBake executes the default
task, which is "build”.
BitBake obeys inter-task dependencies when doing
so.
</para>
<para>
The following command runs the build task, which is
the default task, on the <filename>foo_1.0.bb</filename>
recipe file:
<literallayout class='monospaced'>
$ bitbake -b foo_1.0.bb
</literallayout>
The following command runs the clean task on the
<filename>foo.bb</filename> recipe file:
<literallayout class='monospaced'>
$ bitbake -b foo.bb -c clean
</literallayout>
<note>
The "-b" option explicitly does not handle recipe
dependencies.
Other than for debugging purposes, it is instead
recommended that you use the syntax presented in the
next section.
</note>
</para>
</section>
<section id='executing-tasks-against-a-set-of-recipe-files'>
<title>Executing Tasks Against a Set of Recipe Files</title>
<para>
There are a number of additional complexities introduced
when one wants to manage multiple <filename>.bb</filename>
files.
Clearly there needs to be a way to tell BitBake what
files are available and, of those, which you
want to execute.
There also needs to be a way for each recipe
to express its dependencies, both for build-time and
runtime.
There must be a way for you to express recipe preferences
when multiple recipes provide the same functionality, or when
there are multiple versions of a recipe.
</para>
<para>
The <filename>bitbake</filename> command, when not using
"--buildfile" or "-b" only accepts a "PROVIDES".
You cannot provide anything else.
By default, a recipe file generally "PROVIDES" its
"packagename" as shown in the following example:
<literallayout class='monospaced'>
$ bitbake foo
</literallayout>
This next example "PROVIDES" the package name and also uses
the "-c" option to tell BitBake to just execute the
<filename>do_clean</filename> task:
<literallayout class='monospaced'>
$ bitbake -c clean foo
</literallayout>
</para>
</section>
<section id='executing-a-list-of-task-and-recipe-combinations'>
<title>Executing a List of Task and Recipe Combinations</title>
<para>
The BitBake command line supports specifying different
tasks for individual targets when you specify multiple
targets.
For example, suppose you had two targets (or recipes)
<filename>myfirstrecipe</filename> and
<filename>mysecondrecipe</filename> and you needed
BitBake to run <filename>taskA</filename> for the first
recipe and <filename>taskB</filename> for the second
recipe:
<literallayout class='monospaced'>
$ bitbake myfirstrecipe:do_taskA mysecondrecipe:do_taskB
</literallayout>
</para>
</section>
<section id='generating-dependency-graphs'>
<title>Generating Dependency Graphs</title>
<para>
BitBake is able to generate dependency graphs using
the <filename>dot</filename> syntax.
You can convert these graphs into images using the
<filename>dot</filename> tool from
<ulink url='http://www.graphviz.org'>Graphviz</ulink>.
</para>
<para>
When you generate a dependency graph, BitBake writes three files
to the current working directory:
<itemizedlist>
<listitem><para>
<emphasis><filename>recipe-depends.dot</filename>:</emphasis>
Shows dependencies between recipes (i.e. a collapsed version of
<filename>task-depends.dot</filename>).
</para></listitem>
<listitem><para>
<emphasis><filename>task-depends.dot</filename>:</emphasis>
Shows dependencies between tasks.
These dependencies match BitBake's internal task execution list.
</para></listitem>
<listitem><para>
<emphasis><filename>pn-buildlist</filename>:</emphasis>
Shows a simple list of targets that are to be built.
</para></listitem>
</itemizedlist>
</para>
<para>
To stop depending on common depends, use the "-I" depend
option and BitBake omits them from the graph.
Leaving this information out can produce more readable graphs.
This way, you can remove from the graph
<filename>DEPENDS</filename> from inherited classes
such as <filename>base.bbclass</filename>.
</para>
<para>
Here are two examples that create dependency graphs.
The second example omits depends common in OpenEmbedded from
the graph:
<literallayout class='monospaced'>
$ bitbake -g foo
$ bitbake -g -I virtual/kernel -I eglibc foo
</literallayout>
</para>
</section>
</section>
</section>
</chapter>

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,984 @@
/*
Generic XHTML / DocBook XHTML CSS Stylesheet.
Browser wrangling and typographic design by
Oyvind Kolas / pippin@gimp.org
Customised for Poky by
Matthew Allum / mallum@o-hand.com
Thanks to:
Liam R. E. Quin
William Skaggs
Jakub Steiner
Structure
---------
The stylesheet is divided into the following sections:
Positioning
Margins, paddings, width, font-size, clearing.
Decorations
Borders, style
Colors
Colors
Graphics
Graphical backgrounds
Nasty IE tweaks
Workarounds needed to make it work in internet explorer,
currently makes the stylesheet non validating, but up until
this point it is validating.
Mozilla extensions
Transparency for footer
Rounded corners on boxes
*/
/*************** /
/ Positioning /
/ ***************/
body {
font-family: Verdana, Sans, sans-serif;
min-width: 640px;
width: 80%;
margin: 0em auto;
padding: 2em 5em 5em 5em;
color: #333;
}
h1,h2,h3,h4,h5,h6,h7 {
font-family: Arial, Sans;
color: #00557D;
clear: both;
}
h1 {
font-size: 2em;
text-align: left;
padding: 0em 0em 0em 0em;
margin: 2em 0em 0em 0em;
}
h2.subtitle {
margin: 0.10em 0em 3.0em 0em;
padding: 0em 0em 0em 0em;
font-size: 1.8em;
padding-left: 20%;
font-weight: normal;
font-style: italic;
}
h2 {
margin: 2em 0em 0.66em 0em;
padding: 0.5em 0em 0em 0em;
font-size: 1.5em;
font-weight: bold;
}
h3.subtitle {
margin: 0em 0em 1em 0em;
padding: 0em 0em 0em 0em;
font-size: 142.14%;
text-align: right;
}
h3 {
margin: 1em 0em 0.5em 0em;
padding: 1em 0em 0em 0em;
font-size: 140%;
font-weight: bold;
}
h4 {
margin: 1em 0em 0.5em 0em;
padding: 1em 0em 0em 0em;
font-size: 120%;
font-weight: bold;
}
h5 {
margin: 1em 0em 0.5em 0em;
padding: 1em 0em 0em 0em;
font-size: 110%;
font-weight: bold;
}
h6 {
margin: 1em 0em 0em 0em;
padding: 1em 0em 0em 0em;
font-size: 110%;
font-weight: bold;
}
.authorgroup {
background-color: transparent;
background-repeat: no-repeat;
padding-top: 256px;
background-image: url("figures/bitbake-title.png");
background-position: left top;
margin-top: -256px;
padding-right: 50px;
margin-left: 0px;
text-align: right;
width: 740px;
}
h3.author {
margin: 0em 0me 0em 0em;
padding: 0em 0em 0em 0em;
font-weight: normal;
font-size: 100%;
color: #333;
clear: both;
}
.author tt.email {
font-size: 66%;
}
.titlepage hr {
width: 0em;
clear: both;
}
.revhistory {
padding-top: 2em;
clear: both;
}
.toc,
.list-of-tables,
.list-of-examples,
.list-of-figures {
padding: 1.33em 0em 2.5em 0em;
color: #00557D;
}
.toc p,
.list-of-tables p,
.list-of-figures p,
.list-of-examples p {
padding: 0em 0em 0em 0em;
padding: 0em 0em 0.3em;
margin: 1.5em 0em 0em 0em;
}
.toc p b,
.list-of-tables p b,
.list-of-figures p b,
.list-of-examples p b{
font-size: 100.0%;
font-weight: bold;
}
.toc dl,
.list-of-tables dl,
.list-of-figures dl,
.list-of-examples dl {
margin: 0em 0em 0.5em 0em;
padding: 0em 0em 0em 0em;
}
.toc dt {
margin: 0em 0em 0em 0em;
padding: 0em 0em 0em 0em;
}
.toc dd {
margin: 0em 0em 0em 2.6em;
padding: 0em 0em 0em 0em;
}
div.glossary dl,
div.variablelist dl {
}
.glossary dl dt,
.variablelist dl dt,
.variablelist dl dt span.term {
font-weight: normal;
width: 20em;
text-align: right;
}
.variablelist dl dt {
margin-top: 0.5em;
}
.glossary dl dd,
.variablelist dl dd {
margin-top: -1em;
margin-left: 25.5em;
}
.glossary dd p,
.variablelist dd p {
margin-top: 0em;
margin-bottom: 1em;
}
div.calloutlist table td {
padding: 0em 0em 0em 0em;
margin: 0em 0em 0em 0em;
}
div.calloutlist table td p {
margin-top: 0em;
margin-bottom: 1em;
}
div p.copyright {
text-align: left;
}
div.legalnotice p.legalnotice-title {
margin-bottom: 0em;
}
p {
line-height: 1.5em;
margin-top: 0em;
}
dl {
padding-top: 0em;
}
hr {
border: solid 1px;
}
.mediaobject,
.mediaobjectco {
text-align: center;
}
img {
border: none;
}
ul {
padding: 0em 0em 0em 1.5em;
}
ul li {
padding: 0em 0em 0em 0em;
}
ul li p {
text-align: left;
}
table {
width :100%;
}
th {
padding: 0.25em;
text-align: left;
font-weight: normal;
vertical-align: top;
}
td {
padding: 0.25em;
vertical-align: top;
}
p a[id] {
margin: 0px;
padding: 0px;
display: inline;
background-image: none;
}
a {
text-decoration: underline;
color: #444;
}
pre {
overflow: auto;
}
a:hover {
text-decoration: underline;
/*font-weight: bold;*/
}
/* This style defines how the permalink character
appears by itself and when hovered over with
the mouse. */
[alt='Permalink'] { color: #eee; }
[alt='Permalink']:hover { color: black; }
div.informalfigure,
div.informalexample,
div.informaltable,
div.figure,
div.table,
div.example {
margin: 1em 0em;
padding: 1em;
page-break-inside: avoid;
}
div.informalfigure p.title b,
div.informalexample p.title b,
div.informaltable p.title b,
div.figure p.title b,
div.example p.title b,
div.table p.title b{
padding-top: 0em;
margin-top: 0em;
font-size: 100%;
font-weight: normal;
}
.mediaobject .caption,
.mediaobject .caption p {
text-align: center;
font-size: 80%;
padding-top: 0.5em;
padding-bottom: 0.5em;
}
.epigraph {
padding-left: 55%;
margin-bottom: 1em;
}
.epigraph p {
text-align: left;
}
.epigraph .quote {
font-style: italic;
}
.epigraph .attribution {
font-style: normal;
text-align: right;
}
span.application {
font-style: italic;
}
.programlisting {
font-family: monospace;
font-size: 80%;
white-space: pre;
margin: 1.33em 0em;
padding: 1.33em;
}
.tip,
.warning,
.caution,
.note {
margin-top: 1em;
margin-bottom: 1em;
}
/* force full width of table within div */
.tip table,
.warning table,
.caution table,
.note table {
border: none;
width: 100%;
}
.tip table th,
.warning table th,
.caution table th,
.note table th {
padding: 0.8em 0.0em 0.0em 0.0em;
margin : 0em 0em 0em 0em;
}
.tip p,
.warning p,
.caution p,
.note p {
margin-top: 0.5em;
margin-bottom: 0.5em;
padding-right: 1em;
text-align: left;
}
.acronym {
text-transform: uppercase;
}
b.keycap,
.keycap {
padding: 0.09em 0.3em;
margin: 0em;
}
.itemizedlist li {
clear: none;
}
.filename {
font-size: medium;
font-family: Courier, monospace;
}
div.navheader, div.heading{
position: absolute;
left: 0em;
top: 0em;
width: 100%;
background-color: #cdf;
width: 100%;
}
div.navfooter, div.footing{
position: fixed;
left: 0em;
bottom: 0em;
background-color: #eee;
width: 100%;
}
div.navheader td,
div.navfooter td {
font-size: 66%;
}
div.navheader table th {
/*font-family: Georgia, Times, serif;*/
/*font-size: x-large;*/
font-size: 80%;
}
div.navheader table {
border-left: 0em;
border-right: 0em;
border-top: 0em;
width: 100%;
}
div.navfooter table {
border-left: 0em;
border-right: 0em;
border-bottom: 0em;
width: 100%;
}
div.navheader table td a,
div.navfooter table td a {
color: #777;
text-decoration: none;
}
/* normal text in the footer */
div.navfooter table td {
color: black;
}
div.navheader table td a:visited,
div.navfooter table td a:visited {
color: #444;
}
/* links in header and footer */
div.navheader table td a:hover,
div.navfooter table td a:hover {
text-decoration: underline;
background-color: transparent;
color: #33a;
}
div.navheader hr,
div.navfooter hr {
display: none;
}
.qandaset tr.question td p {
margin: 0em 0em 1em 0em;
padding: 0em 0em 0em 0em;
}
.qandaset tr.answer td p {
margin: 0em 0em 1em 0em;
padding: 0em 0em 0em 0em;
}
.answer td {
padding-bottom: 1.5em;
}
.emphasis {
font-weight: bold;
}
/************* /
/ decorations /
/ *************/
.titlepage {
}
.part .title {
}
.subtitle {
border: none;
}
/*
h1 {
border: none;
}
h2 {
border-top: solid 0.2em;
border-bottom: solid 0.06em;
}
h3 {
border-top: 0em;
border-bottom: solid 0.06em;
}
h4 {
border: 0em;
border-bottom: solid 0.06em;
}
h5 {
border: 0em;
}
*/
.programlisting {
border: solid 1px;
}
div.figure,
div.table,
div.informalfigure,
div.informaltable,
div.informalexample,
div.example {
border: 1px solid;
}
.tip,
.warning,
.caution,
.note {
border: 1px solid;
}
.tip table th,
.warning table th,
.caution table th,
.note table th {
border-bottom: 1px solid;
}
.question td {
border-top: 1px solid black;
}
.answer {
}
b.keycap,
.keycap {
border: 1px solid;
}
div.navheader, div.heading{
border-bottom: 1px solid;
}
div.navfooter, div.footing{
border-top: 1px solid;
}
/********* /
/ colors /
/ *********/
body {
color: #333;
background: white;
}
a {
background: transparent;
}
a:hover {
background-color: #dedede;
}
h1,
h2,
h3,
h4,
h5,
h6,
h7,
h8 {
background-color: transparent;
}
hr {
border-color: #aaa;
}
.tip, .warning, .caution, .note {
border-color: #fff;
}
.tip table th,
.warning table th,
.caution table th,
.note table th {
border-bottom-color: #fff;
}
.warning {
background-color: #f0f0f2;
}
.caution {
background-color: #f0f0f2;
}
.tip {
background-color: #f0f0f2;
}
.note {
background-color: #f0f0f2;
}
.glossary dl dt,
.variablelist dl dt,
.variablelist dl dt span.term {
color: #044;
}
div.figure,
div.table,
div.example,
div.informalfigure,
div.informaltable,
div.informalexample {
border-color: #aaa;
}
pre.programlisting {
color: black;
background-color: #fff;
border-color: #aaa;
border-width: 2px;
}
.guimenu,
.guilabel,
.guimenuitem {
background-color: #eee;
}
b.keycap,
.keycap {
background-color: #eee;
border-color: #999;
}
div.navheader {
border-color: black;
}
div.navfooter {
border-color: black;
}
/*********** /
/ graphics /
/ ***********/
/*
body {
background-image: url("images/body_bg.jpg");
background-attachment: fixed;
}
.navheader,
.note,
.tip {
background-image: url("images/note_bg.jpg");
background-attachment: fixed;
}
.warning,
.caution {
background-image: url("images/warning_bg.jpg");
background-attachment: fixed;
}
.figure,
.informalfigure,
.example,
.informalexample,
.table,
.informaltable {
background-image: url("images/figure_bg.jpg");
background-attachment: fixed;
}
*/
h1,
h2,
h3,
h4,
h5,
h6,
h7{
}
/*
Example of how to stick an image as part of the title.
div.article .titlepage .title
{
background-image: url("figures/white-on-black.png");
background-position: center;
background-repeat: repeat-x;
}
*/
div.preface .titlepage .title,
div.colophon .title,
div.chapter .titlepage .title,
div.article .titlepage .title
{
}
div.section div.section .titlepage .title,
div.sect2 .titlepage .title {
background: none;
}
h1.title {
background-color: transparent;
background-repeat: no-repeat;
height: 256px;
text-indent: -9000px;
overflow:hidden;
}
h2.subtitle {
background-color: transparent;
text-indent: -9000px;
overflow:hidden;
width: 0px;
display: none;
}
/*************************************** /
/ pippin.gimp.org specific alterations /
/ ***************************************/
/*
div.heading, div.navheader {
color: #777;
font-size: 80%;
padding: 0;
margin: 0;
text-align: left;
position: absolute;
top: 0px;
left: 0px;
width: 100%;
height: 50px;
background: url('/gfx/heading_bg.png') transparent;
background-repeat: repeat-x;
background-attachment: fixed;
border: none;
}
div.heading a {
color: #444;
}
div.footing, div.navfooter {
border: none;
color: #ddd;
font-size: 80%;
text-align:right;
width: 100%;
padding-top: 10px;
position: absolute;
bottom: 0px;
left: 0px;
background: url('/gfx/footing_bg.png') transparent;
}
*/
/****************** /
/ nasty ie tweaks /
/ ******************/
/*
div.heading, div.navheader {
width:expression(document.body.clientWidth + "px");
}
div.footing, div.navfooter {
width:expression(document.body.clientWidth + "px");
margin-left:expression("-5em");
}
body {
padding:expression("4em 5em 0em 5em");
}
*/
/**************************************** /
/ mozilla vendor specific css extensions /
/ ****************************************/
/*
div.navfooter, div.footing{
-moz-opacity: 0.8em;
}
div.figure,
div.table,
div.informalfigure,
div.informaltable,
div.informalexample,
div.example,
.tip,
.warning,
.caution,
.note {
-moz-border-radius: 0.5em;
}
b.keycap,
.keycap {
-moz-border-radius: 0.3em;
}
*/
table tr td table tr td {
display: none;
}
hr {
display: none;
}
table {
border: 0em;
}
.photo {
float: right;
margin-left: 1.5em;
margin-bottom: 1.5em;
margin-top: 0em;
max-width: 17em;
border: 1px solid gray;
padding: 3px;
background: white;
}
.seperator {
padding-top: 2em;
clear: both;
}
#validators {
margin-top: 5em;
text-align: right;
color: #777;
}
@media print {
body {
font-size: 8pt;
}
.noprint {
display: none;
}
}
.tip,
.note {
background: #f0f0f2;
color: #333;
padding: 20px;
margin: 20px;
}
.tip h3,
.note h3 {
padding: 0em;
margin: 0em;
font-size: 2em;
font-weight: bold;
color: #333;
}
.tip a,
.note a {
color: #333;
text-decoration: underline;
}
.footnote {
font-size: small;
color: #333;
}
/* Changes the announcement text */
.tip h3,
.warning h3,
.caution h3,
.note h3 {
font-size:large;
color: #00557D;
}

View File

@@ -0,0 +1,88 @@
<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
"http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd">
<book id='bitbake-user-manual' lang='en'
xmlns:xi="http://www.w3.org/2003/XInclude"
xmlns="http://docbook.org/ns/docbook"
>
<bookinfo>
<mediaobject>
<imageobject>
<imagedata fileref='figures/bitbake-title.png'
format='SVG'
align='left' scalefit='1' width='100%'/>
</imageobject>
</mediaobject>
<title>
BitBake User Manual
</title>
<authorgroup>
<author>
<firstname>Richard Purdie, Chris Larson, and </firstname> <surname>Phil Blundell</surname>
<affiliation>
<orgname>BitBake Community</orgname>
</affiliation>
<email>bitbake-devel@lists.openembedded.org</email>
</author>
</authorgroup>
<!--
# Add in some revision history if we want it here.
<revhistory>
<revision>
<revnumber>x.x</revnumber>
<date>dd month year</date>
<revremark>Some relevent comment</revremark>
</revision>
<revision>
<revnumber>x.x</revnumber>
<date>dd month year</date>
<revremark>Some relevent comment</revremark>
</revision>
<revision>
<revnumber>x.x</revnumber>
<date>dd month year</date>
<revremark>Some relevent comment</revremark>
</revision>
<revision>
<revnumber>x.x</revnumber>
<date>dd month year</date>
<revremark>Some relevent comment</revremark>
</revision>
</revhistory>
-->
<copyright>
<year>2004-2016</year>
<holder>Richard Purdie</holder>
<holder>Chris Larson</holder>
<holder>and Phil Blundell</holder>
</copyright>
<legalnotice>
<para>
This work is licensed under the Creative Commons Attribution License.
To view a copy of this license, visit
<ulink url="http://creativecommons.org/licenses/by/2.5/">http://creativecommons.org/licenses/by/2.5/</ulink>
or send a letter to Creative Commons, 444 Castro Street,
Suite 900, Mountain View, California 94041, USA.
</para>
</legalnotice>
</bookinfo>
<xi:include href="bitbake-user-manual-intro.xml"/>
<xi:include href="bitbake-user-manual-execution.xml"/>
<xi:include href="bitbake-user-manual-metadata.xml"/>
<xi:include href="bitbake-user-manual-fetching.xml"/>
<xi:include href="bitbake-user-manual-ref-variables.xml"/>
<xi:include href="bitbake-user-manual-hello.xml"/>
</book>

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.0 KiB

View File

@@ -0,0 +1,281 @@
/* Feuille de style DocBook du projet Traduc.org */
/* DocBook CSS stylesheet of the Traduc.org project */
/* (c) Jean-Philippe Gu<47>rard - 14 ao<61>t 2004 */
/* (c) Jean-Philippe Gu<47>rard - 14 August 2004 */
/* Cette feuille de style est libre, vous pouvez la */
/* redistribuer et la modifier selon les termes de la Licence */
/* Art Libre. Vous trouverez un exemplaire de cette Licence sur */
/* http://tigreraye.org/Petit-guide-du-traducteur.html#licence-art-libre */
/* This work of art is free, you can redistribute it and/or */
/* modify it according to terms of the Free Art license. You */
/* will find a specimen of this license on the Copyleft */
/* Attitude web site: http://artlibre.org as well as on other */
/* sites. */
/* Please note that the French version of this licence as shown */
/* on http://tigreraye.org/Petit-guide-du-traducteur.html#licence-art-libre */
/* is only official licence of this document. The English */
/* is only provided to help you understand this licence. */
/* La derni<6E>re version de cette feuille de style est toujours */
/* disponible sur<75>: http://tigreraye.org/style.css */
/* Elle est <20>galement disponible sur<75>: */
/* http://www.traduc.org/docs/HOWTO/lecture/style.css */
/* The latest version of this stylesheet is available from: */
/* http://tigreraye.org/style.css */
/* It is also available on: */
/* http://www.traduc.org/docs/HOWTO/lecture/style.css */
/* N'h<>sitez pas <20> envoyer vos commentaires et corrections <20> */
/* Jean-Philippe Gu<47>rard <jean-philippe.guerard@tigreraye.org> */
/* Please send feedback and bug reports to */
/* Jean-Philippe Gu<47>rard <jean-philippe.guerard@tigreraye.org> */
/* $Id: style.css,v 1.14 2004/09/10 20:12:09 fevrier Exp fevrier $ */
/* Pr<50>sentation g<>n<EFBFBD>rale du document */
/* Overall document presentation */
body {
/*
font-family: Apolline, "URW Palladio L", Garamond, jGaramond,
"Bitstream Cyberbit", "Palatino Linotype", serif;
*/
margin: 7%;
background-color: white;
}
/* Taille du texte */
/* Text size */
* { font-size: 100%; }
/* Gestion des textes mis en relief imbriqu<71>s */
/* Embedded emphasis */
em { font-style: italic; }
em em { font-style: normal; }
em em em { font-style: italic; }
/* Titres */
/* Titles */
h1 { font-size: 200%; font-weight: 900; }
h2 { font-size: 160%; font-weight: 900; }
h3 { font-size: 130%; font-weight: bold; }
h4 { font-size: 115%; font-weight: bold; }
h5 { font-size: 108%; font-weight: bold; }
h6 { font-weight: bold; }
/* Nom de famille en petites majuscules (uniquement en fran<61>ais) */
/* Last names in small caps (for French only) */
*[class~="surname"]:lang(fr) { font-variant: small-caps; }
/* Blocs de citation */
/* Quotation blocs */
div[class~="blockquote"] {
border: solid 2px #AAA;
padding: 5px;
margin: 5px;
}
div[class~="blockquote"] > table {
border: none;
}
/* Blocs lit<69>raux<75>: fond gris clair */
/* Literal blocs: light gray background */
*[class~="literallayout"] {
background: #f0f0f0;
padding: 5px;
margin: 5px;
}
/* Programmes et captures texte<74>: fond bleu clair */
/* Listing and text screen snapshots: light blue background */
*[class~="programlisting"], *[class~="screen"] {
background: #f0f0ff;
padding: 5px;
margin: 5px;
}
/* Les textes <20> remplacer sont surlign<67>s en vert p<>le */
/* Replaceable text in highlighted in pale green */
*[class~="replaceable"] {
background-color: #98fb98;
font-style: normal; }
/* Tables<65>: fonds gris clair & bords simples */
/* Tables: light gray background and solid borders */
*[class~="table"] *[class~="title"] { width:100%; border: 0px; }
table {
border: 1px solid #aaa;
border-collapse: collapse;
padding: 2px;
margin: 5px;
}
/* Listes simples en style table */
/* Simples lists in table presentation */
table[class~="simplelist"] {
background-color: #F0F0F0;
margin: 5px;
border: solid 1px #AAA;
}
table[class~="simplelist"] td {
border: solid 1px #AAA;
}
/* Les tables */
/* Tables */
*[class~="table"] table {
background-color: #F0F0F0;
border: solid 1px #AAA;
}
*[class~="informaltable"] table { background-color: #F0F0F0; }
th,td {
vertical-align: baseline;
text-align: left;
padding: 0.1em 0.3em;
empty-cells: show;
}
/* Alignement des colonnes */
/* Colunms alignment */
td[align=center] , th[align=center] { text-align: center; }
td[align=right] , th[align=right] { text-align: right; }
td[align=left] , th[align=left] { text-align: left; }
td[align=justify] , th[align=justify] { text-align: justify; }
/* Pas de marge autour des images */
/* No inside margins for images */
img { border: 0; }
/* Les liens ne sont pas soulign<67>s */
/* No underlines for links */
:link , :visited , :active { text-decoration: none; }
/* Prudence<63>: cadre jaune et fond jaune clair */
/* Caution: yellow border and light yellow background */
*[class~="caution"] {
border: solid 2px yellow;
background-color: #ffffe0;
padding: 1em 6px 1em ;
margin: 5px;
}
*[class~="caution"] th {
vertical-align: middle
}
*[class~="caution"] table {
background-color: #ffffe0;
border: none;
}
/* Note importante<74>: cadre jaune et fond jaune clair */
/* Important: yellow border and light yellow background */
*[class~="important"] {
border: solid 2px yellow;
background-color: #ffffe0;
padding: 1em 6px 1em;
margin: 5px;
}
*[class~="important"] th {
vertical-align: middle
}
*[class~="important"] table {
background-color: #ffffe0;
border: none;
}
/* Mise en <20>vidence<63>: texte l<>g<EFBFBD>rement plus grand */
/* Highlights: slightly larger texts */
*[class~="highlights"] {
font-size: 110%;
}
/* Note<74>: cadre bleu et fond bleu clair */
/* Notes: blue border and light blue background */
*[class~="note"] {
border: solid 2px #7099C5;
background-color: #f0f0ff;
padding: 1em 6px 1em ;
margin: 5px;
}
*[class~="note"] th {
vertical-align: middle
}
*[class~="note"] table {
background-color: #f0f0ff;
border: none;
}
/* Astuce<63>: cadre vert et fond vert clair */
/* Tip: green border and light green background */
*[class~="tip"] {
border: solid 2px #00ff00;
background-color: #f0ffff;
padding: 1em 6px 1em ;
margin: 5px;
}
*[class~="tip"] th {
vertical-align: middle;
}
*[class~="tip"] table {
background-color: #f0ffff;
border: none;
}
/* Avertissement<6E>: cadre rouge et fond rouge clair */
/* Warning: red border and light red background */
*[class~="warning"] {
border: solid 2px #ff0000;
background-color: #fff0f0;
padding: 1em 6px 1em ;
margin: 5px;
}
*[class~="warning"] th {
vertical-align: middle;
}
*[class~="warning"] table {
background-color: #fff0f0;
border: none;
}
/* Fin */
/* The End */

142
bitbake/doc/bitbake.1 Normal file
View File

@@ -0,0 +1,142 @@
.\" Hey, EMACS: -*- nroff -*-
.\" First parameter, NAME, should be all caps
.\" Second parameter, SECTION, should be 1-8, maybe w/ subsection
.\" other parameters are allowed: see man(7), man(1)
.TH BITBAKE 1 "November 19, 2006"
.\" Please adjust this date whenever revising the manpage.
.\"
.\" Some roff macros, for reference:
.\" .nh disable hyphenation
.\" .hy enable hyphenation
.\" .ad l left justify
.\" .ad b justify to both left and right margins
.\" .nf disable filling
.\" .fi enable filling
.\" .br insert line break
.\" .sp <n> insert n+1 empty lines
.\" for manpage-specific macros, see man(7)
.SH NAME
BitBake \- simple tool for the execution of tasks
.SH SYNOPSIS
.B bitbake
.RI [ options ] " packagenames"
.br
.SH DESCRIPTION
This manual page documents briefly the
.B bitbake
command.
.PP
.\" TeX users may be more comfortable with the \fB<whatever>\fP and
.\" \fI<whatever>\fP escape sequences to invode bold face and italics,
.\" respectively.
\fBbitbake\fP is a program that executes the specified task (default is 'build')
for a given set of BitBake files.
.br
It expects that BBFILES is defined, which is a space separated list of files to
be executed. BBFILES does support wildcards.
.br
Default BBFILES are the .bb files in the current directory.
.SH OPTIONS
This program follow the usual GNU command line syntax, with long
options starting with two dashes (`-').
.TP
.B \-h, \-\-help
Show summary of options.
.TP
.B \-\-version
Show version of program.
.TP
.B \-bBUILDFILE, \-\-buildfile=BUILDFILE
execute the task against this .bb file, rather than a package from BBFILES.
.TP
.B \-k, \-\-continue
continue as much as possible after an error. While the target that failed, and
those that depend on it, cannot be remade, the other dependencies of these
targets can be processed all the same.
.TP
.B \-a, \-\-tryaltconfigs
continue with builds by trying to use alternative providers where possible.
.TP
.B \-f, \-\-force
force run of specified cmd, regardless of stamp status
.TP
.B \-i, \-\-interactive
drop into the interactive mode also called the BitBake shell.
.TP
.B \-cCMD, \-\-cmd=CMD
Specify task to execute. Note that this only executes the specified task for
the providee and the packages it depends on, i.e. 'compile' does not implicitly
call stage for the dependencies (IOW: use only if you know what you are doing).
Depending on the base.bbclass a listtasks task is defined and will show
available tasks.
.TP
.B \-rFILE, \-\-read=FILE
read the specified file before bitbake.conf
.TP
.B \-v, \-\-verbose
output more chit-chat to the terminal
.TP
.B \-D, \-\-debug
Increase the debug level. You can specify this more than once.
.TP
.B \-n, \-\-dry-run
don't execute, just go through the motions
.TP
.B \-p, \-\-parse-only
quit after parsing the BB files (developers only)
.TP
.B \-s, \-\-show-versions
show current and preferred versions of all packages
.TP
.B \-e, \-\-environment
show the global or per-recipe environment (this is what used to be bbread)
.TP
.B \-g, \-\-graphviz
emit the dependency trees of the specified packages in the dot syntax
.TP
.B \-IIGNORED\_DOT\_DEPS, \-\-ignore-deps=IGNORED_DOT_DEPS
Stop processing at the given list of dependencies when generating dependency
graphs. This can help to make the graph more appealing
.TP
.B \-lDEBUG_DOMAINS, \-\-log-domains=DEBUG_DOMAINS
Show debug logging for the specified logging domains
.TP
.B \-P, \-\-profile
profile the command and print a report
.TP
.B \-uUI, \-\-ui=UI
User interface to use. Currently, knotty, taskexp or ncurses can be specified as UI.
.TP
.B \-tSERVERTYPE, \-\-servertype=SERVERTYPE
Choose which server to use, none, process or xmlrpc.
.TP
.B \-\-revisions-changed
Set the exit code depending on whether upstream floating revisions have changed or not.
.TP
.B \-\-server-only
Run bitbake without UI, the frontend can connect with bitbake server itself.
.TP
.B \-BBIND, \-\-bind=BIND
The name/address for the bitbake server to bind to.
.TP
.B \-\-no\-setscene
Do not run any setscene tasks, forces builds.
.SH ENVIRONMENT VARIABLES
bitbake uses the following environment variables to control its
operation:
.TP
.B BITBAKE_UI
The bitbake user interface; overridden by the \fB-u\fP commandline option.
.SH AUTHORS
BitBake was written by
Phil Blundell,
Holger Freyther,
Chris Larson,
Mickey Lauer,
Richard Purdie,
Holger Schurig
.PP
This manual page was written by Marcin Juszkiewicz <marcin@hrw.one.pl>
for the Debian project (but may be used by others).

59
bitbake/doc/poky.ent Normal file
View File

@@ -0,0 +1,59 @@
<!ENTITY DISTRO "1.4">
<!ENTITY DISTRO_NAME "tbd">
<!ENTITY YOCTO_DOC_VERSION "1.4">
<!ENTITY POKYVERSION "8.0">
<!ENTITY YOCTO_POKY "poky-&DISTRO_NAME;-&POKYVERSION;">
<!ENTITY COPYRIGHT_YEAR "2010-2013">
<!ENTITY YOCTO_DL_URL "http://downloads.yoctoproject.org">
<!ENTITY YOCTO_HOME_URL "http://www.yoctoproject.org">
<!ENTITY YOCTO_LISTS_URL "http://lists.yoctoproject.org">
<!ENTITY YOCTO_BUGZILLA_URL "http://bugzilla.yoctoproject.org">
<!ENTITY YOCTO_WIKI_URL "https://wiki.yoctoproject.org">
<!ENTITY YOCTO_AB_URL "http://autobuilder.yoctoproject.org">
<!ENTITY YOCTO_GIT_URL "http://git.yoctoproject.org">
<!ENTITY YOCTO_ADTREPO_URL "http://adtrepo.yoctoproject.org">
<!ENTITY OE_HOME_URL "http://www.openembedded.org">
<!ENTITY OE_LISTS_URL "http://lists.linuxtogo.org/cgi-bin/mailman">
<!ENTITY OE_DOCS_URL "http://docs.openembedded.org">
<!ENTITY OH_HOME_URL "http://o-hand.com">
<!ENTITY BITBAKE_HOME_URL "http://developer.berlios.de/projects/bitbake/">
<!ENTITY ECLIPSE_MAIN_URL "http://www.eclipse.org/downloads">
<!ENTITY ECLIPSE_DL_URL "http://download.eclipse.org">
<!ENTITY ECLIPSE_DL_PLUGIN_URL "&YOCTO_DL_URL;/releases/eclipse-plugin/&DISTRO;">
<!ENTITY ECLIPSE_UPDATES_URL "&ECLIPSE_DL_URL;/tm/updates/3.3">
<!ENTITY ECLIPSE_INDIGO_URL "&ECLIPSE_DL_URL;/releases/indigo">
<!ENTITY ECLIPSE_JUNO_URL "&ECLIPSE_DL_URL;/releases/juno">
<!ENTITY ECLIPSE_INDIGO_CDT_URL "&ECLIPSE_DL_URL;tools/cdt/releases/indigo">
<!ENTITY YOCTO_DOCS_URL "&YOCTO_HOME_URL;/docs">
<!ENTITY YOCTO_SOURCES_URL "&YOCTO_HOME_URL;/sources/">
<!ENTITY YOCTO_AB_PORT_URL "&YOCTO_AB_URL;:8010">
<!ENTITY YOCTO_AB_NIGHTLY_URL "&YOCTO_AB_URL;/nightly/">
<!ENTITY YOCTO_POKY_URL "&YOCTO_DL_URL;/releases/poky/">
<!ENTITY YOCTO_RELEASE_DL_URL "&YOCTO_DL_URL;/releases/yocto/yocto-&DISTRO;">
<!ENTITY YOCTO_TOOLCHAIN_DL_URL "&YOCTO_RELEASE_DL_URL;/toolchain/">
<!ENTITY YOCTO_ECLIPSE_DL_URL "&YOCTO_RELEASE_DL_URL;/eclipse-plugin/indigo;">
<!ENTITY YOCTO_ADTINSTALLER_DL_URL "&YOCTO_RELEASE_DL_URL;/adt_installer">
<!ENTITY YOCTO_POKY_DL_URL "&YOCTO_RELEASE_DL_URL;/&YOCTO_POKY;.tar.bz2">
<!ENTITY YOCTO_MACHINES_DL_URL "&YOCTO_RELEASE_DL_URL;/machines">
<!ENTITY YOCTO_QEMU_DL_URL "&YOCTO_MACHINES_DL_URL;/qemu">
<!ENTITY YOCTO_PYTHON-i686_DL_URL "&YOCTO_DL_URL;/releases/miscsupport/python-nativesdk-standalone-i686.tar.bz2">
<!ENTITY YOCTO_PYTHON-x86_64_DL_URL "&YOCTO_DL_URL;/releases/miscsupport/python-nativesdk-standalone-x86_64.tar.bz2">
<!ENTITY YOCTO_DOCS_QS_URL "&YOCTO_DOCS_URL;/&YOCTO_DOC_VERSION;/yocto-project-qs/yocto-project-qs.html">
<!ENTITY YOCTO_DOCS_ADT_URL "&YOCTO_DOCS_URL;/&YOCTO_DOC_VERSION;/adt-manual/adt-manual.html">
<!ENTITY YOCTO_DOCS_REF_URL "&YOCTO_DOCS_URL;/&YOCTO_DOC_VERSION;/ref-manual/ref-manual.html">
<!ENTITY YOCTO_DOCS_BSP_URL "&YOCTO_DOCS_URL;/&YOCTO_DOC_VERSION;/bsp-guide/bsp-guide.html">
<!ENTITY YOCTO_DOCS_DEV_URL "&YOCTO_DOCS_URL;/&YOCTO_DOC_VERSION;/dev-manual/dev-manual.html">
<!ENTITY YOCTO_DOCS_KERNEL_URL "&YOCTO_DOCS_URL;/&YOCTO_DOC_VERSION;/kernel-manual/kernel-manual.html">
<!ENTITY YOCTO_ADTPATH_DIR "/opt/poky/&DISTRO;">
<!ENTITY YOCTO_POKY_TARBALL "&YOCTO_POKY;.tar.bz2">
<!ENTITY OE_INIT_PATH "&YOCTO_POKY;/oe-init-build-env">
<!ENTITY OE_INIT_FILE "oe-init-build-env">
<!ENTITY UBUNTU_HOST_PACKAGES_ESSENTIAL "gawk wget git-core diffstat unzip texinfo \
build-essential chrpath">
<!ENTITY FEDORA_HOST_PACKAGES_ESSENTIAL "gawk make wget tar bzip2 gzip python unzip perl patch \
diffutils diffstat git cpp gcc gcc-c++ eglibc-devel texinfo chrpath \
ccache">
<!ENTITY OPENSUSE_HOST_PACKAGES_ESSENTIAL "python gcc gcc-c++ git chrpath make wget python-xml \
diffstat texinfo python-curses">
<!ENTITY CENTOS_HOST_PACKAGES_ESSENTIAL "gawk make wget tar bzip2 gzip python unzip perl patch \
diffutils diffstat git cpp gcc gcc-c++ glibc-devel texinfo chrpath">

BIN
bitbake/doc/template/Vera.ttf vendored Normal file

Binary file not shown.

1
bitbake/doc/template/Vera.xml vendored Normal file

File diff suppressed because one or more lines are too long

BIN
bitbake/doc/template/VeraMoBd.ttf vendored Normal file

Binary file not shown.

1
bitbake/doc/template/VeraMoBd.xml vendored Normal file

File diff suppressed because one or more lines are too long

BIN
bitbake/doc/template/VeraMono.ttf vendored Normal file

Binary file not shown.

1
bitbake/doc/template/VeraMono.xml vendored Normal file

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,39 @@
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:d="http://docbook.org/ns/docbook"
xmlns="http://www.w3.org/1999/xhtml"
exclude-result-prefixes="d">
<xsl:template name="component.title">
<xsl:param name="node" select="."/>
<xsl:variable name="level">
<xsl:choose>
<xsl:when test="ancestor::d:section">
<xsl:value-of select="count(ancestor::d:section)+1"/>
</xsl:when>
<xsl:when test="ancestor::d:sect5">6</xsl:when>
<xsl:when test="ancestor::d:sect4">5</xsl:when>
<xsl:when test="ancestor::d:sect3">4</xsl:when>
<xsl:when test="ancestor::d:sect2">3</xsl:when>
<xsl:when test="ancestor::d:sect1">2</xsl:when>
<xsl:otherwise>1</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:element name="h{$level+1}" namespace="http://www.w3.org/1999/xhtml">
<xsl:attribute name="class">title</xsl:attribute>
<xsl:if test="$generate.id.attributes = 0">
<xsl:call-template name="anchor">
<xsl:with-param name="node" select="$node"/>
<xsl:with-param name="conditional" select="0"/>
</xsl:call-template>
</xsl:if>
<xsl:apply-templates select="$node" mode="object.title.markup">
<xsl:with-param name="allow-anchors" select="1"/>
</xsl:apply-templates>
<xsl:call-template name="permalink">
<xsl:with-param name="node" select="$node"/>
</xsl:call-template>
</xsl:element>
</xsl:template>
</xsl:stylesheet>

64
bitbake/doc/template/db-pdf.xsl vendored Normal file
View File

@@ -0,0 +1,64 @@
<?xml version='1.0'?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns="http://www.w3.org/1999/xhtml" xmlns:fo="http://www.w3.org/1999/XSL/Format" version="1.0">
<xsl:import href="http://docbook.sourceforge.net/release/xsl/current/fo/docbook.xsl" />
<!-- check project-plan.sh for how this is generated, needed to tweak
the cover page
-->
<xsl:include href="/tmp/titlepage.xsl"/>
<!-- To force a page break in document, i.e per section add a
<?hard-pagebreak?> tag.
-->
<xsl:template match="processing-instruction('hard-pagebreak')">
<fo:block break-before='page' />
</xsl:template>
<!--Fix for defualt indent getting TOC all wierd..
See http://sources.redhat.com/ml/docbook-apps/2005-q1/msg00455.html
FIXME: must be a better fix
-->
<xsl:param name="body.start.indent" select="'0'"/>
<!--<xsl:param name="title.margin.left" select="'0'"/>-->
<!-- stop long-ish header titles getting wrapped -->
<xsl:param name="header.column.widths">1 10 1</xsl:param>
<!-- customise headers and footers a little -->
<xsl:template name="head.sep.rule">
<xsl:if test="$header.rule != 0">
<xsl:attribute name="border-bottom-width">0.5pt</xsl:attribute>
<xsl:attribute name="border-bottom-style">solid</xsl:attribute>
<xsl:attribute name="border-bottom-color">#cccccc</xsl:attribute>
</xsl:if>
</xsl:template>
<xsl:template name="foot.sep.rule">
<xsl:if test="$footer.rule != 0">
<xsl:attribute name="border-top-width">0.5pt</xsl:attribute>
<xsl:attribute name="border-top-style">solid</xsl:attribute>
<xsl:attribute name="border-top-color">#cccccc</xsl:attribute>
</xsl:if>
</xsl:template>
<xsl:attribute-set name="header.content.properties">
<xsl:attribute name="color">#cccccc</xsl:attribute>
</xsl:attribute-set>
<xsl:attribute-set name="footer.content.properties">
<xsl:attribute name="color">#cccccc</xsl:attribute>
</xsl:attribute-set>
<!-- general settings -->
<xsl:param name="fop1.extensions" select="1"></xsl:param>
<xsl:param name="paper.type" select="'A4'"></xsl:param>
<xsl:param name="section.autolabel" select="1"></xsl:param>
<xsl:param name="body.font.family" select="'verasans'"></xsl:param>
<xsl:param name="title.font.family" select="'verasans'"></xsl:param>
<xsl:param name="monospace.font.family" select="'veramono'"></xsl:param>
</xsl:stylesheet>

25
bitbake/doc/template/division.title.xsl vendored Normal file
View File

@@ -0,0 +1,25 @@
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:d="http://docbook.org/ns/docbook"
xmlns="http://www.w3.org/1999/xhtml"
exclude-result-prefixes="d">
<xsl:template name="division.title">
<xsl:param name="node" select="."/>
<h1>
<xsl:attribute name="class">title</xsl:attribute>
<xsl:call-template name="anchor">
<xsl:with-param name="node" select="$node"/>
<xsl:with-param name="conditional" select="0"/>
</xsl:call-template>
<xsl:apply-templates select="$node" mode="object.title.markup">
<xsl:with-param name="allow-anchors" select="1"/>
</xsl:apply-templates>
<xsl:call-template name="permalink">
<xsl:with-param name="node" select="$node"/>
</xsl:call-template>
</h1>
</xsl:template>
</xsl:stylesheet>

BIN
bitbake/doc/template/draft.png vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

58
bitbake/doc/template/fop-config.xml vendored Normal file
View File

@@ -0,0 +1,58 @@
<fop version="1.0">
<!-- Strict user configuration -->
<strict-configuration>true</strict-configuration>
<!-- Strict FO validation -->
<strict-validation>true</strict-validation>
<!--
Set the baseDir so common/openedhand.svg references in plans still
work ok. Note, relative file references to current dir should still work.
-->
<base>../template</base>
<font-base>../template</font-base>
<!-- Source resolution in dpi (dots/pixels per inch) for determining the
size of pixels in SVG and bitmap images, default: 72dpi -->
<!-- <source-resolution>72</source-resolution> -->
<!-- Target resolution in dpi (dots/pixels per inch) for specifying the
target resolution for generated bitmaps, default: 72dpi -->
<!-- <target-resolution>72</target-resolution> -->
<!-- default page-height and page-width, in case
value is specified as auto -->
<default-page-settings height="11in" width="8.26in"/>
<!-- <use-cache>false</use-cache> -->
<renderers>
<renderer mime="application/pdf">
<fonts>
<font metrics-file="VeraMono.xml"
kerning="yes"
embed-url="VeraMono.ttf">
<font-triplet name="veramono" style="normal" weight="normal"/>
</font>
<font metrics-file="VeraMoBd.xml"
kerning="yes"
embed-url="VeraMoBd.ttf">
<font-triplet name="veramono" style="normal" weight="bold"/>
</font>
<font metrics-file="Vera.xml"
kerning="yes"
embed-url="Vera.ttf">
<font-triplet name="verasans" style="normal" weight="normal"/>
<font-triplet name="verasans" style="normal" weight="bold"/>
<font-triplet name="verasans" style="italic" weight="normal"/>
<font-triplet name="verasans" style="italic" weight="bold"/>
</font>
<auto-detect/>
</fonts>
</renderer>
</renderers>
</fop>

View File

@@ -0,0 +1,21 @@
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:d="http://docbook.org/ns/docbook"
xmlns="http://www.w3.org/1999/xhtml"
exclude-result-prefixes="d">
<xsl:template name="formal.object.heading">
<xsl:param name="object" select="."/>
<xsl:param name="title">
<xsl:apply-templates select="$object" mode="object.title.markup">
<xsl:with-param name="allow-anchors" select="1"/>
</xsl:apply-templates>
</xsl:param>
<p class="title">
<b><xsl:copy-of select="$title"/></b>
<xsl:call-template name="permalink">
<xsl:with-param name="node" select="$object"/>
</xsl:call-template>
</p>
</xsl:template>
</xsl:stylesheet>

View File

@@ -0,0 +1,14 @@
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:d="http://docbook.org/ns/docbook"
xmlns="http://www.w3.org/1999/xhtml">
<xsl:template match="glossentry/glossterm">
<xsl:apply-imports/>
<xsl:if test="$generate.permalink != 0">
<xsl:call-template name="permalink">
<xsl:with-param name="node" select=".."/>
</xsl:call-template>
</xsl:if>
</xsl:template>
</xsl:stylesheet>

25
bitbake/doc/template/permalinks.xsl vendored Normal file
View File

@@ -0,0 +1,25 @@
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
xmlns="http://www.w3.org/1999/xhtml"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:param name="generate.permalink" select="1"/>
<xsl:param name="permalink.text"></xsl:param>
<xsl:template name="permalink">
<xsl:param name="node"/>
<xsl:if test="$generate.permalink != '0'">
<span class="permalink">
<a alt="Permalink" title="Permalink">
<xsl:attribute name="href">
<xsl:call-template name="href.target">
<xsl:with-param name="object" select="$node"/>
</xsl:call-template>
</xsl:attribute>
<xsl:copy-of select="$permalink.text"/>
</a>
</span>
</xsl:if>
</xsl:template>
</xsl:stylesheet>

55
bitbake/doc/template/section.title.xsl vendored Normal file
View File

@@ -0,0 +1,55 @@
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:d="http://docbook.org/ns/docbook"
xmlns="http://www.w3.org/1999/xhtml" exclude-result-prefixes="d">
<xsl:template name="section.title">
<xsl:variable name="section"
select="(ancestor::section |
ancestor::simplesect|
ancestor::sect1|
ancestor::sect2|
ancestor::sect3|
ancestor::sect4|
ancestor::sect5)[last()]"/>
<xsl:variable name="renderas">
<xsl:choose>
<xsl:when test="$section/@renderas = 'sect1'">1</xsl:when>
<xsl:when test="$section/@renderas = 'sect2'">2</xsl:when>
<xsl:when test="$section/@renderas = 'sect3'">3</xsl:when>
<xsl:when test="$section/@renderas = 'sect4'">4</xsl:when>
<xsl:when test="$section/@renderas = 'sect5'">5</xsl:when>
<xsl:otherwise><xsl:value-of select="''"/></xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:variable name="level">
<xsl:choose>
<xsl:when test="$renderas != ''">
<xsl:value-of select="$renderas"/>
</xsl:when>
<xsl:otherwise>
<xsl:call-template name="section.level">
<xsl:with-param name="node" select="$section"/>
</xsl:call-template>
</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:call-template name="section.heading">
<xsl:with-param name="section" select="$section"/>
<xsl:with-param name="level" select="$level"/>
<xsl:with-param name="title">
<xsl:apply-templates select="$section" mode="object.title.markup">
<xsl:with-param name="allow-anchors" select="1"/>
</xsl:apply-templates>
<xsl:if test="$level &gt; 0">
<xsl:call-template name="permalink">
<xsl:with-param name="node" select="$section"/>
</xsl:call-template>
</xsl:if>
</xsl:with-param>
</xsl:call-template>
</xsl:template>
</xsl:stylesheet>

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,51 @@
#!/bin/sh
if [ -z "$1" -o -z "$2" ]; then
echo "usage: [-v] $0 <docbook file> <templatedir>"
echo
echo "*NOTE* you need xsltproc, fop and nwalsh docbook stylesheets"
echo " installed for this to work!"
echo
exit 0
fi
FO=`echo $1 | sed s/.xml/.fo/` || exit 1
PDF=`echo $1 | sed s/.xml/.pdf/` || exit 1
TEMPLATEDIR=$2
##
# These URI should be rewritten by your distribution's xml catalog to
# match your localy installed XSL stylesheets.
XSL_BASE_URI="http://docbook.sourceforge.net/release/xsl/current"
# Creates a temporary XSL stylesheet based on titlepage.xsl
xsltproc -o /tmp/titlepage.xsl \
--xinclude \
$XSL_BASE_URI/template/titlepage.xsl \
$TEMPLATEDIR/titlepage.templates.xml || exit 1
# Creates the file needed for FOP
xsltproc --xinclude \
--stringparam hyphenate false \
--stringparam formal.title.placement "figure after" \
--stringparam ulink.show 1 \
--stringparam body.font.master 9 \
--stringparam title.font.master 11 \
--stringparam draft.watermark.image "$TEMPLATEDIR/draft.png" \
--stringparam chapter.autolabel 1 \
--stringparam appendix.autolabel A \
--stringparam section.autolabel 1 \
--stringparam section.label.includes.component.label 1 \
--output $FO \
$TEMPLATEDIR/db-pdf.xsl \
$1 || exit 1
# Invokes the Java version of FOP. Uses the additional configuration file common/fop-config.xml
fop -c $TEMPLATEDIR/fop-config.xml -fo $FO -pdf $PDF || exit 1
rm -f $FO
rm -f /tmp/titlepage.xsl
echo
echo " #### Success! $PDF ready. ####"
echo

319
bitbake/lib/bb/COW.py Normal file
View File

@@ -0,0 +1,319 @@
# ex:ts=4:sw=4:sts=4:et
# -*- tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*-
#
# This is a copy on write dictionary and set which abuses classes to try and be nice and fast.
#
# Copyright (C) 2006 Tim Amsell
#
# 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.
#
#Please Note:
# Be careful when using mutable types (ie Dict and Lists) - operations involving these are SLOW.
# Assign a file to __warn__ to get warnings about slow operations.
#
import copy
import types
ImmutableTypes = (
bool,
complex,
float,
int,
tuple,
frozenset,
str
)
MUTABLE = "__mutable__"
class COWMeta(type):
pass
class COWDictMeta(COWMeta):
__warn__ = False
__hasmutable__ = False
__marker__ = tuple()
def __str__(cls):
# FIXME: I have magic numbers!
return "<COWDict Level: %i Current Keys: %i>" % (cls.__count__, len(cls.__dict__) - 3)
__repr__ = __str__
def cow(cls):
class C(cls):
__count__ = cls.__count__ + 1
return C
copy = cow
__call__ = cow
def __setitem__(cls, key, value):
if value is not None and not isinstance(value, ImmutableTypes):
if not isinstance(value, COWMeta):
cls.__hasmutable__ = True
key += MUTABLE
setattr(cls, key, value)
def __getmutable__(cls, key, readonly=False):
nkey = key + MUTABLE
try:
return cls.__dict__[nkey]
except KeyError:
pass
value = getattr(cls, nkey)
if readonly:
return value
if not cls.__warn__ is False and not isinstance(value, COWMeta):
print("Warning: Doing a copy because %s is a mutable type." % key, file=cls.__warn__)
try:
value = value.copy()
except AttributeError as e:
value = copy.copy(value)
setattr(cls, nkey, value)
return value
__getmarker__ = []
def __getreadonly__(cls, key, default=__getmarker__):
"""\
Get a value (even if mutable) which you promise not to change.
"""
return cls.__getitem__(key, default, True)
def __getitem__(cls, key, default=__getmarker__, readonly=False):
try:
try:
value = getattr(cls, key)
except AttributeError:
value = cls.__getmutable__(key, readonly)
# This is for values which have been deleted
if value is cls.__marker__:
raise AttributeError("key %s does not exist." % key)
return value
except AttributeError as e:
if not default is cls.__getmarker__:
return default
raise KeyError(str(e))
def __delitem__(cls, key):
cls.__setitem__(key, cls.__marker__)
def __revertitem__(cls, key):
if key not in cls.__dict__:
key += MUTABLE
delattr(cls, key)
def __contains__(cls, key):
return cls.has_key(key)
def has_key(cls, key):
value = cls.__getreadonly__(key, cls.__marker__)
if value is cls.__marker__:
return False
return True
def iter(cls, type, readonly=False):
for key in dir(cls):
if key.startswith("__"):
continue
if key.endswith(MUTABLE):
key = key[:-len(MUTABLE)]
if type == "keys":
yield key
try:
if readonly:
value = cls.__getreadonly__(key)
else:
value = cls[key]
except KeyError:
continue
if type == "values":
yield value
if type == "items":
yield (key, value)
raise StopIteration()
def iterkeys(cls):
return cls.iter("keys")
def itervalues(cls, readonly=False):
if not cls.__warn__ is False and cls.__hasmutable__ and readonly is False:
print("Warning: If you arn't going to change any of the values call with True.", file=cls.__warn__)
return cls.iter("values", readonly)
def iteritems(cls, readonly=False):
if not cls.__warn__ is False and cls.__hasmutable__ and readonly is False:
print("Warning: If you arn't going to change any of the values call with True.", file=cls.__warn__)
return cls.iter("items", readonly)
class COWSetMeta(COWDictMeta):
def __str__(cls):
# FIXME: I have magic numbers!
return "<COWSet Level: %i Current Keys: %i>" % (cls.__count__, len(cls.__dict__) -3)
__repr__ = __str__
def cow(cls):
class C(cls):
__count__ = cls.__count__ + 1
return C
def add(cls, value):
COWDictMeta.__setitem__(cls, repr(hash(value)), value)
def remove(cls, value):
COWDictMeta.__delitem__(cls, repr(hash(value)))
def __in__(cls, value):
return repr(hash(value)) in COWDictMeta
def iterkeys(cls):
raise TypeError("sets don't have keys")
def iteritems(cls):
raise TypeError("sets don't have 'items'")
# These are the actual classes you use!
class COWDictBase(object, metaclass = COWDictMeta):
__count__ = 0
class COWSetBase(object, metaclass = COWSetMeta):
__count__ = 0
if __name__ == "__main__":
import sys
COWDictBase.__warn__ = sys.stderr
a = COWDictBase()
print("a", a)
a['a'] = 'a'
a['b'] = 'b'
a['dict'] = {}
b = a.copy()
print("b", b)
b['c'] = 'b'
print()
print("a", a)
for x in a.iteritems():
print(x)
print("--")
print("b", b)
for x in b.iteritems():
print(x)
print()
b['dict']['a'] = 'b'
b['a'] = 'c'
print("a", a)
for x in a.iteritems():
print(x)
print("--")
print("b", b)
for x in b.iteritems():
print(x)
print()
try:
b['dict2']
except KeyError as e:
print("Okay!")
a['set'] = COWSetBase()
a['set'].add("o1")
a['set'].add("o1")
a['set'].add("o2")
print("a", a)
for x in a['set'].itervalues():
print(x)
print("--")
print("b", b)
for x in b['set'].itervalues():
print(x)
print()
b['set'].add('o3')
print("a", a)
for x in a['set'].itervalues():
print(x)
print("--")
print("b", b)
for x in b['set'].itervalues():
print(x)
print()
a['set2'] = set()
a['set2'].add("o1")
a['set2'].add("o1")
a['set2'].add("o2")
print("a", a)
for x in a.iteritems():
print(x)
print("--")
print("b", b)
for x in b.iteritems(readonly=True):
print(x)
print()
del b['b']
try:
print(b['b'])
except KeyError:
print("Yay! deleted key raises error")
if 'b' in b:
print("Boo!")
else:
print("Yay - has_key with delete works!")
print("a", a)
for x in a.iteritems():
print(x)
print("--")
print("b", b)
for x in b.iteritems(readonly=True):
print(x)
print()
b.__revertitem__('b')
print("a", a)
for x in a.iteritems():
print(x)
print("--")
print("b", b)
for x in b.iteritems(readonly=True):
print(x)
print()
b.__revertitem__('dict')
print("a", a)
for x in a.iteritems():
print(x)
print("--")
print("b", b)
for x in b.iteritems(readonly=True):
print(x)
print()

144
bitbake/lib/bb/__init__.py Normal file
View File

@@ -0,0 +1,144 @@
# ex:ts=4:sw=4:sts=4:et
# -*- tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*-
#
# BitBake Build System Python Library
#
# Copyright (C) 2003 Holger Schurig
# Copyright (C) 2003, 2004 Chris Larson
#
# Based on Gentoo's portage.py.
#
# 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.
__version__ = "1.34.0"
import sys
if sys.version_info < (3, 4, 0):
raise RuntimeError("Sorry, python 3.4.0 or later is required for this version of bitbake")
class BBHandledException(Exception):
"""
The big dilemma for generic bitbake code is what information to give the user
when an exception occurs. Any exception inheriting this base exception class
has already provided information to the user via some 'fired' message type such as
an explicitly fired event using bb.fire, or a bb.error message. If bitbake
encounters an exception derived from this class, no backtrace or other information
will be given to the user, its assumed the earlier event provided the relevant information.
"""
pass
import os
import logging
class NullHandler(logging.Handler):
def emit(self, record):
pass
Logger = logging.getLoggerClass()
class BBLogger(Logger):
def __init__(self, name):
if name.split(".")[0] == "BitBake":
self.debug = self.bbdebug
Logger.__init__(self, name)
def bbdebug(self, level, msg, *args, **kwargs):
return self.log(logging.DEBUG - level + 1, msg, *args, **kwargs)
def plain(self, msg, *args, **kwargs):
return self.log(logging.INFO + 1, msg, *args, **kwargs)
def verbose(self, msg, *args, **kwargs):
return self.log(logging.INFO - 1, msg, *args, **kwargs)
logging.raiseExceptions = False
logging.setLoggerClass(BBLogger)
logger = logging.getLogger("BitBake")
logger.addHandler(NullHandler())
logger.setLevel(logging.DEBUG - 2)
mainlogger = logging.getLogger("BitBake.Main")
# This has to be imported after the setLoggerClass, as the import of bb.msg
# can result in construction of the various loggers.
import bb.msg
from bb import fetch2 as fetch
sys.modules['bb.fetch'] = sys.modules['bb.fetch2']
# Messaging convenience functions
def plain(*args):
mainlogger.plain(''.join(args))
def debug(lvl, *args):
if isinstance(lvl, str):
mainlogger.warning("Passed invalid debug level '%s' to bb.debug", lvl)
args = (lvl,) + args
lvl = 1
mainlogger.debug(lvl, ''.join(args))
def note(*args):
mainlogger.info(''.join(args))
def warn(*args):
mainlogger.warning(''.join(args))
def error(*args, **kwargs):
mainlogger.error(''.join(args), extra=kwargs)
def fatal(*args, **kwargs):
mainlogger.critical(''.join(args), extra=kwargs)
raise BBHandledException()
def deprecated(func, name=None, advice=""):
"""This is a decorator which can be used to mark functions
as deprecated. It will result in a warning being emitted
when the function is used."""
import warnings
if advice:
advice = ": %s" % advice
if name is None:
name = func.__name__
def newFunc(*args, **kwargs):
warnings.warn("Call to deprecated function %s%s." % (name,
advice),
category=DeprecationWarning,
stacklevel=2)
return func(*args, **kwargs)
newFunc.__name__ = func.__name__
newFunc.__doc__ = func.__doc__
newFunc.__dict__.update(func.__dict__)
return newFunc
# For compatibility
def deprecate_import(current, modulename, fromlist, renames = None):
"""Import objects from one module into another, wrapping them with a DeprecationWarning"""
import sys
module = __import__(modulename, fromlist = fromlist)
for position, objname in enumerate(fromlist):
obj = getattr(module, objname)
newobj = deprecated(obj, "{0}.{1}".format(current, objname),
"Please use {0}.{1} instead".format(modulename, objname))
if renames:
newname = renames[position]
else:
newname = objname
setattr(sys.modules[current], newname, newobj)

907
bitbake/lib/bb/build.py Normal file
View File

@@ -0,0 +1,907 @@
# ex:ts=4:sw=4:sts=4:et
# -*- tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*-
#
# BitBake 'Build' implementation
#
# Core code for function execution and task handling in the
# BitBake build tools.
#
# Copyright (C) 2003, 2004 Chris Larson
#
# Based on Gentoo's portage.py.
#
# 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.
#
# Based on functions from the base bb module, Copyright 2003 Holger Schurig
import os
import sys
import logging
import shlex
import glob
import time
import stat
import bb
import bb.msg
import bb.process
import bb.progress
from bb import data, event, utils
bblogger = logging.getLogger('BitBake')
logger = logging.getLogger('BitBake.Build')
NULL = open(os.devnull, 'r+')
__mtime_cache = {}
def cached_mtime_noerror(f):
if f not in __mtime_cache:
try:
__mtime_cache[f] = os.stat(f)[stat.ST_MTIME]
except OSError:
return 0
return __mtime_cache[f]
def reset_cache():
global __mtime_cache
__mtime_cache = {}
# When we execute a Python function, we'd like certain things
# in all namespaces, hence we add them to __builtins__.
# If we do not do this and use the exec globals, they will
# not be available to subfunctions.
if hasattr(__builtins__, '__setitem__'):
builtins = __builtins__
else:
builtins = __builtins__.__dict__
builtins['bb'] = bb
builtins['os'] = os
class FuncFailed(Exception):
def __init__(self, name = None, logfile = None):
self.logfile = logfile
self.name = name
if name:
self.msg = 'Function failed: %s' % name
else:
self.msg = "Function failed"
def __str__(self):
if self.logfile and os.path.exists(self.logfile):
msg = ("%s (log file is located at %s)" %
(self.msg, self.logfile))
else:
msg = self.msg
return msg
class TaskBase(event.Event):
"""Base class for task events"""
def __init__(self, t, logfile, d):
self._task = t
self._package = d.getVar("PF")
self._mc = d.getVar("BB_CURRENT_MC")
self.taskfile = d.getVar("FILE")
self.taskname = self._task
self.logfile = logfile
self.time = time.time()
event.Event.__init__(self)
self._message = "recipe %s: task %s: %s" % (d.getVar("PF"), t, self.getDisplayName())
def getTask(self):
return self._task
def setTask(self, task):
self._task = task
def getDisplayName(self):
return bb.event.getName(self)[4:]
task = property(getTask, setTask, None, "task property")
class TaskStarted(TaskBase):
"""Task execution started"""
def __init__(self, t, logfile, taskflags, d):
super(TaskStarted, self).__init__(t, logfile, d)
self.taskflags = taskflags
class TaskSucceeded(TaskBase):
"""Task execution completed"""
class TaskFailed(TaskBase):
"""Task execution failed"""
def __init__(self, task, logfile, metadata, errprinted = False):
self.errprinted = errprinted
super(TaskFailed, self).__init__(task, logfile, metadata)
class TaskFailedSilent(TaskBase):
"""Task execution failed (silently)"""
def getDisplayName(self):
# Don't need to tell the user it was silent
return "Failed"
class TaskInvalid(TaskBase):
def __init__(self, task, metadata):
super(TaskInvalid, self).__init__(task, None, metadata)
self._message = "No such task '%s'" % task
class TaskProgress(event.Event):
"""
Task made some progress that could be reported to the user, usually in
the form of a progress bar or similar.
NOTE: this class does not inherit from TaskBase since it doesn't need
to - it's fired within the task context itself, so we don't have any of
the context information that you do in the case of the other events.
The event PID can be used to determine which task it came from.
The progress value is normally 0-100, but can also be negative
indicating that progress has been made but we aren't able to determine
how much.
The rate is optional, this is simply an extra string to display to the
user if specified.
"""
def __init__(self, progress, rate=None):
self.progress = progress
self.rate = rate
event.Event.__init__(self)
class LogTee(object):
def __init__(self, logger, outfile):
self.outfile = outfile
self.logger = logger
self.name = self.outfile.name
def write(self, string):
self.logger.plain(string)
self.outfile.write(string)
def __enter__(self):
self.outfile.__enter__()
return self
def __exit__(self, *excinfo):
self.outfile.__exit__(*excinfo)
def __repr__(self):
return '<LogTee {0}>'.format(self.name)
def flush(self):
self.outfile.flush()
#
# pythonexception allows the python exceptions generated to be raised
# as the real exceptions (not FuncFailed) and without a backtrace at the
# origin of the failure.
#
def exec_func(func, d, dirs = None, pythonexception=False):
"""Execute a BB 'function'"""
try:
oldcwd = os.getcwd()
except:
oldcwd = None
flags = d.getVarFlags(func)
cleandirs = flags.get('cleandirs') if flags else None
if cleandirs:
for cdir in d.expand(cleandirs).split():
bb.utils.remove(cdir, True)
bb.utils.mkdirhier(cdir)
if flags and dirs is None:
dirs = flags.get('dirs')
if dirs:
dirs = d.expand(dirs).split()
if dirs:
for adir in dirs:
bb.utils.mkdirhier(adir)
adir = dirs[-1]
else:
adir = None
body = d.getVar(func, False)
if not body:
if body is None:
logger.warning("Function %s doesn't exist", func)
return
ispython = flags.get('python')
lockflag = flags.get('lockfiles')
if lockflag:
lockfiles = [f for f in d.expand(lockflag).split()]
else:
lockfiles = None
tempdir = d.getVar('T')
# or func allows items to be executed outside of the normal
# task set, such as buildhistory
task = d.getVar('BB_RUNTASK') or func
if task == func:
taskfunc = task
else:
taskfunc = "%s.%s" % (task, func)
runfmt = d.getVar('BB_RUNFMT') or "run.{func}.{pid}"
runfn = runfmt.format(taskfunc=taskfunc, task=task, func=func, pid=os.getpid())
runfile = os.path.join(tempdir, runfn)
bb.utils.mkdirhier(os.path.dirname(runfile))
# Setup the courtesy link to the runfn, only for tasks
# we create the link 'just' before the run script is created
# if we create it after, and if the run script fails, then the
# link won't be created as an exception would be fired.
if task == func:
runlink = os.path.join(tempdir, 'run.{0}'.format(task))
if runlink:
bb.utils.remove(runlink)
try:
os.symlink(runfn, runlink)
except OSError:
pass
with bb.utils.fileslocked(lockfiles):
if ispython:
exec_func_python(func, d, runfile, cwd=adir, pythonexception=pythonexception)
else:
exec_func_shell(func, d, runfile, cwd=adir)
try:
curcwd = os.getcwd()
except:
curcwd = None
if oldcwd and curcwd != oldcwd:
try:
bb.warn("Task %s changed cwd to %s" % (func, curcwd))
os.chdir(oldcwd)
except:
pass
_functionfmt = """
{function}(d)
"""
logformatter = bb.msg.BBLogFormatter("%(levelname)s: %(message)s")
def exec_func_python(func, d, runfile, cwd=None, pythonexception=False):
"""Execute a python BB 'function'"""
code = _functionfmt.format(function=func)
bb.utils.mkdirhier(os.path.dirname(runfile))
with open(runfile, 'w') as script:
bb.data.emit_func_python(func, script, d)
if cwd:
try:
olddir = os.getcwd()
except OSError as e:
bb.warn("%s: Cannot get cwd: %s" % (func, e))
olddir = None
os.chdir(cwd)
bb.debug(2, "Executing python function %s" % func)
try:
text = "def %s(d):\n%s" % (func, d.getVar(func, False))
fn = d.getVarFlag(func, "filename", False)
lineno = int(d.getVarFlag(func, "lineno", False))
bb.methodpool.insert_method(func, text, fn, lineno - 1)
comp = utils.better_compile(code, func, "exec_python_func() autogenerated")
utils.better_exec(comp, {"d": d}, code, "exec_python_func() autogenerated", pythonexception=pythonexception)
except (bb.parse.SkipRecipe, bb.build.FuncFailed):
raise
except:
if pythonexception:
raise
raise FuncFailed(func, None)
finally:
bb.debug(2, "Python function %s finished" % func)
if cwd and olddir:
try:
os.chdir(olddir)
except OSError as e:
bb.warn("%s: Cannot restore cwd %s: %s" % (func, olddir, e))
def shell_trap_code():
return '''#!/bin/sh\n
# Emit a useful diagnostic if something fails:
bb_exit_handler() {
ret=$?
case $ret in
0) ;;
*) case $BASH_VERSION in
"") echo "WARNING: exit code $ret from a shell command.";;
*) echo "WARNING: ${BASH_SOURCE[0]}:${BASH_LINENO[0]} exit $ret from '$BASH_COMMAND'";;
esac
exit $ret
esac
}
trap 'bb_exit_handler' 0
set -e
'''
def exec_func_shell(func, d, runfile, cwd=None):
"""Execute a shell function from the metadata
Note on directory behavior. The 'dirs' varflag should contain a list
of the directories you need created prior to execution. The last
item in the list is where we will chdir/cd to.
"""
# Don't let the emitted shell script override PWD
d.delVarFlag('PWD', 'export')
with open(runfile, 'w') as script:
script.write(shell_trap_code())
bb.data.emit_func(func, script, d)
if bb.msg.loggerVerboseLogs:
script.write("set -x\n")
if cwd:
script.write("cd '%s'\n" % cwd)
script.write("%s\n" % func)
script.write('''
# cleanup
ret=$?
trap '' 0
exit $ret
''')
os.chmod(runfile, 0o775)
cmd = runfile
if d.getVarFlag(func, 'fakeroot', False):
fakerootcmd = d.getVar('FAKEROOT')
if fakerootcmd:
cmd = [fakerootcmd, runfile]
if bb.msg.loggerDefaultVerbose:
logfile = LogTee(logger, sys.stdout)
else:
logfile = sys.stdout
progress = d.getVarFlag(func, 'progress')
if progress:
if progress == 'percent':
# Use default regex
logfile = bb.progress.BasicProgressHandler(d, outfile=logfile)
elif progress.startswith('percent:'):
# Use specified regex
logfile = bb.progress.BasicProgressHandler(d, regex=progress.split(':', 1)[1], outfile=logfile)
elif progress.startswith('outof:'):
# Use specified regex
logfile = bb.progress.OutOfProgressHandler(d, regex=progress.split(':', 1)[1], outfile=logfile)
else:
bb.warn('%s: invalid task progress varflag value "%s", ignoring' % (func, progress))
fifobuffer = bytearray()
def readfifo(data):
nonlocal fifobuffer
fifobuffer.extend(data)
while fifobuffer:
message, token, nextmsg = fifobuffer.partition(b"\00")
if token:
splitval = message.split(b' ', 1)
cmd = splitval[0].decode("utf-8")
if len(splitval) > 1:
value = splitval[1].decode("utf-8")
else:
value = ''
if cmd == 'bbplain':
bb.plain(value)
elif cmd == 'bbnote':
bb.note(value)
elif cmd == 'bbwarn':
bb.warn(value)
elif cmd == 'bberror':
bb.error(value)
elif cmd == 'bbfatal':
# The caller will call exit themselves, so bb.error() is
# what we want here rather than bb.fatal()
bb.error(value)
elif cmd == 'bbfatal_log':
bb.error(value, forcelog=True)
elif cmd == 'bbdebug':
splitval = value.split(' ', 1)
level = int(splitval[0])
value = splitval[1]
bb.debug(level, value)
else:
bb.warn("Unrecognised command '%s' on FIFO" % cmd)
fifobuffer = nextmsg
else:
break
tempdir = d.getVar('T')
fifopath = os.path.join(tempdir, 'fifo.%s' % os.getpid())
if os.path.exists(fifopath):
os.unlink(fifopath)
os.mkfifo(fifopath)
with open(fifopath, 'r+b', buffering=0) as fifo:
try:
bb.debug(2, "Executing shell function %s" % func)
try:
with open(os.devnull, 'r+') as stdin:
bb.process.run(cmd, shell=False, stdin=stdin, log=logfile, extrafiles=[(fifo,readfifo)])
except bb.process.CmdError:
logfn = d.getVar('BB_LOGFILE')
raise FuncFailed(func, logfn)
finally:
os.unlink(fifopath)
bb.debug(2, "Shell function %s finished" % func)
def _task_data(fn, task, d):
localdata = bb.data.createCopy(d)
localdata.setVar('BB_FILENAME', fn)
localdata.setVar('BB_CURRENTTASK', task[3:])
localdata.setVar('OVERRIDES', 'task-%s:%s' %
(task[3:].replace('_', '-'), d.getVar('OVERRIDES', False)))
localdata.finalize()
bb.data.expandKeys(localdata)
return localdata
def _exec_task(fn, task, d, quieterr):
"""Execute a BB 'task'
Execution of a task involves a bit more setup than executing a function,
running it with its own local metadata, and with some useful variables set.
"""
if not d.getVarFlag(task, 'task', False):
event.fire(TaskInvalid(task, d), d)
logger.error("No such task: %s" % task)
return 1
logger.debug(1, "Executing task %s", task)
localdata = _task_data(fn, task, d)
tempdir = localdata.getVar('T')
if not tempdir:
bb.fatal("T variable not set, unable to build")
# Change nice level if we're asked to
nice = localdata.getVar("BB_TASK_NICE_LEVEL")
if nice:
curnice = os.nice(0)
nice = int(nice) - curnice
newnice = os.nice(nice)
logger.debug(1, "Renice to %s " % newnice)
ionice = localdata.getVar("BB_TASK_IONICE_LEVEL")
if ionice:
try:
cls, prio = ionice.split(".", 1)
bb.utils.ioprio_set(os.getpid(), int(cls), int(prio))
except:
bb.warn("Invalid ionice level %s" % ionice)
bb.utils.mkdirhier(tempdir)
# Determine the logfile to generate
logfmt = localdata.getVar('BB_LOGFMT') or 'log.{task}.{pid}'
logbase = logfmt.format(task=task, pid=os.getpid())
# Document the order of the tasks...
logorder = os.path.join(tempdir, 'log.task_order')
try:
with open(logorder, 'a') as logorderfile:
logorderfile.write('{0} ({1}): {2}\n'.format(task, os.getpid(), logbase))
except OSError:
logger.exception("Opening log file '%s'", logorder)
pass
# Setup the courtesy link to the logfn
loglink = os.path.join(tempdir, 'log.{0}'.format(task))
logfn = os.path.join(tempdir, logbase)
if loglink:
bb.utils.remove(loglink)
try:
os.symlink(logbase, loglink)
except OSError:
pass
prefuncs = localdata.getVarFlag(task, 'prefuncs', expand=True)
postfuncs = localdata.getVarFlag(task, 'postfuncs', expand=True)
class ErrorCheckHandler(logging.Handler):
def __init__(self):
self.triggered = False
logging.Handler.__init__(self, logging.ERROR)
def emit(self, record):
if getattr(record, 'forcelog', False):
self.triggered = False
else:
self.triggered = True
# Handle logfiles
si = open('/dev/null', 'r')
try:
bb.utils.mkdirhier(os.path.dirname(logfn))
logfile = open(logfn, 'w')
except OSError:
logger.exception("Opening log file '%s'", logfn)
pass
# Dup the existing fds so we dont lose them
osi = [os.dup(sys.stdin.fileno()), sys.stdin.fileno()]
oso = [os.dup(sys.stdout.fileno()), sys.stdout.fileno()]
ose = [os.dup(sys.stderr.fileno()), sys.stderr.fileno()]
# Replace those fds with our own
os.dup2(si.fileno(), osi[1])
os.dup2(logfile.fileno(), oso[1])
os.dup2(logfile.fileno(), ose[1])
# Ensure Python logging goes to the logfile
handler = logging.StreamHandler(logfile)
handler.setFormatter(logformatter)
# Always enable full debug output into task logfiles
handler.setLevel(logging.DEBUG - 2)
bblogger.addHandler(handler)
errchk = ErrorCheckHandler()
bblogger.addHandler(errchk)
localdata.setVar('BB_LOGFILE', logfn)
localdata.setVar('BB_RUNTASK', task)
localdata.setVar('BB_TASK_LOGGER', bblogger)
flags = localdata.getVarFlags(task)
try:
try:
event.fire(TaskStarted(task, logfn, flags, localdata), localdata)
except (bb.BBHandledException, SystemExit):
return 1
except FuncFailed as exc:
logger.error(str(exc))
return 1
try:
for func in (prefuncs or '').split():
exec_func(func, localdata)
exec_func(task, localdata)
for func in (postfuncs or '').split():
exec_func(func, localdata)
except FuncFailed as exc:
if quieterr:
event.fire(TaskFailedSilent(task, logfn, localdata), localdata)
else:
errprinted = errchk.triggered
logger.error(str(exc))
event.fire(TaskFailed(task, logfn, localdata, errprinted), localdata)
return 1
except bb.BBHandledException:
event.fire(TaskFailed(task, logfn, localdata, True), localdata)
return 1
finally:
sys.stdout.flush()
sys.stderr.flush()
bblogger.removeHandler(handler)
# Restore the backup fds
os.dup2(osi[0], osi[1])
os.dup2(oso[0], oso[1])
os.dup2(ose[0], ose[1])
# Close the backup fds
os.close(osi[0])
os.close(oso[0])
os.close(ose[0])
si.close()
logfile.close()
if os.path.exists(logfn) and os.path.getsize(logfn) == 0:
logger.debug(2, "Zero size logfn %s, removing", logfn)
bb.utils.remove(logfn)
bb.utils.remove(loglink)
event.fire(TaskSucceeded(task, logfn, localdata), localdata)
if not localdata.getVarFlag(task, 'nostamp', False) and not localdata.getVarFlag(task, 'selfstamp', False):
make_stamp(task, localdata)
return 0
def exec_task(fn, task, d, profile = False):
try:
quieterr = False
if d.getVarFlag(task, "quieterrors", False) is not None:
quieterr = True
if profile:
profname = "profile-%s.log" % (d.getVar("PN") + "-" + task)
try:
import cProfile as profile
except:
import profile
prof = profile.Profile()
ret = profile.Profile.runcall(prof, _exec_task, fn, task, d, quieterr)
prof.dump_stats(profname)
bb.utils.process_profilelog(profname)
return ret
else:
return _exec_task(fn, task, d, quieterr)
except Exception:
from traceback import format_exc
if not quieterr:
logger.error("Build of %s failed" % (task))
logger.error(format_exc())
failedevent = TaskFailed(task, None, d, True)
event.fire(failedevent, d)
return 1
def stamp_internal(taskname, d, file_name, baseonly=False, noextra=False):
"""
Internal stamp helper function
Makes sure the stamp directory exists
Returns the stamp path+filename
In the bitbake core, d can be a CacheData and file_name will be set.
When called in task context, d will be a data store, file_name will not be set
"""
taskflagname = taskname
if taskname.endswith("_setscene") and taskname != "do_setscene":
taskflagname = taskname.replace("_setscene", "")
if file_name:
stamp = d.stamp[file_name]
extrainfo = d.stamp_extrainfo[file_name].get(taskflagname) or ""
else:
stamp = d.getVar('STAMP')
file_name = d.getVar('BB_FILENAME')
extrainfo = d.getVarFlag(taskflagname, 'stamp-extra-info') or ""
if baseonly:
return stamp
if noextra:
extrainfo = ""
if not stamp:
return
stamp = bb.parse.siggen.stampfile(stamp, file_name, taskname, extrainfo)
stampdir = os.path.dirname(stamp)
if cached_mtime_noerror(stampdir) == 0:
bb.utils.mkdirhier(stampdir)
return stamp
def stamp_cleanmask_internal(taskname, d, file_name):
"""
Internal stamp helper function to generate stamp cleaning mask
Returns the stamp path+filename
In the bitbake core, d can be a CacheData and file_name will be set.
When called in task context, d will be a data store, file_name will not be set
"""
taskflagname = taskname
if taskname.endswith("_setscene") and taskname != "do_setscene":
taskflagname = taskname.replace("_setscene", "")
if file_name:
stamp = d.stampclean[file_name]
extrainfo = d.stamp_extrainfo[file_name].get(taskflagname) or ""
else:
stamp = d.getVar('STAMPCLEAN')
file_name = d.getVar('BB_FILENAME')
extrainfo = d.getVarFlag(taskflagname, 'stamp-extra-info') or ""
if not stamp:
return []
cleanmask = bb.parse.siggen.stampcleanmask(stamp, file_name, taskname, extrainfo)
return [cleanmask, cleanmask.replace(taskflagname, taskflagname + "_setscene")]
def make_stamp(task, d, file_name = None):
"""
Creates/updates a stamp for a given task
(d can be a data dict or dataCache)
"""
cleanmask = stamp_cleanmask_internal(task, d, file_name)
for mask in cleanmask:
for name in glob.glob(mask):
# Preserve sigdata files in the stamps directory
if "sigdata" in name or "sigbasedata" in name:
continue
# Preserve taint files in the stamps directory
if name.endswith('.taint'):
continue
os.unlink(name)
stamp = stamp_internal(task, d, file_name)
# Remove the file and recreate to force timestamp
# change on broken NFS filesystems
if stamp:
bb.utils.remove(stamp)
open(stamp, "w").close()
# If we're in task context, write out a signature file for each task
# as it completes
if not task.endswith("_setscene") and task != "do_setscene" and not file_name:
stampbase = stamp_internal(task, d, None, True)
file_name = d.getVar('BB_FILENAME')
bb.parse.siggen.dump_sigtask(file_name, task, stampbase, True)
def del_stamp(task, d, file_name = None):
"""
Removes a stamp for a given task
(d can be a data dict or dataCache)
"""
stamp = stamp_internal(task, d, file_name)
bb.utils.remove(stamp)
def write_taint(task, d, file_name = None):
"""
Creates a "taint" file which will force the specified task and its
dependents to be re-run the next time by influencing the value of its
taskhash.
(d can be a data dict or dataCache)
"""
import uuid
if file_name:
taintfn = d.stamp[file_name] + '.' + task + '.taint'
else:
taintfn = d.getVar('STAMP') + '.' + task + '.taint'
bb.utils.mkdirhier(os.path.dirname(taintfn))
# The specific content of the taint file is not really important,
# we just need it to be random, so a random UUID is used
with open(taintfn, 'w') as taintf:
taintf.write(str(uuid.uuid4()))
def stampfile(taskname, d, file_name = None, noextra=False):
"""
Return the stamp for a given task
(d can be a data dict or dataCache)
"""
return stamp_internal(taskname, d, file_name, noextra=noextra)
def add_tasks(tasklist, d):
task_deps = d.getVar('_task_deps', False)
if not task_deps:
task_deps = {}
if not 'tasks' in task_deps:
task_deps['tasks'] = []
if not 'parents' in task_deps:
task_deps['parents'] = {}
for task in tasklist:
task = d.expand(task)
d.setVarFlag(task, 'task', 1)
if not task in task_deps['tasks']:
task_deps['tasks'].append(task)
flags = d.getVarFlags(task)
def getTask(name):
if not name in task_deps:
task_deps[name] = {}
if name in flags:
deptask = d.expand(flags[name])
task_deps[name][task] = deptask
getTask('depends')
getTask('rdepends')
getTask('deptask')
getTask('rdeptask')
getTask('recrdeptask')
getTask('recideptask')
getTask('nostamp')
getTask('fakeroot')
getTask('noexec')
getTask('umask')
task_deps['parents'][task] = []
if 'deps' in flags:
for dep in flags['deps']:
dep = d.expand(dep)
task_deps['parents'][task].append(dep)
# don't assume holding a reference
d.setVar('_task_deps', task_deps)
def addtask(task, before, after, d):
if task[:3] != "do_":
task = "do_" + task
d.setVarFlag(task, "task", 1)
bbtasks = d.getVar('__BBTASKS', False) or []
if task not in bbtasks:
bbtasks.append(task)
d.setVar('__BBTASKS', bbtasks)
existing = d.getVarFlag(task, "deps", False) or []
if after is not None:
# set up deps for function
for entry in after.split():
if entry not in existing:
existing.append(entry)
d.setVarFlag(task, "deps", existing)
if before is not None:
# set up things that depend on this func
for entry in before.split():
existing = d.getVarFlag(entry, "deps", False) or []
if task not in existing:
d.setVarFlag(entry, "deps", [task] + existing)
def deltask(task, d):
if task[:3] != "do_":
task = "do_" + task
bbtasks = d.getVar('__BBTASKS', False) or []
if task in bbtasks:
bbtasks.remove(task)
d.delVarFlag(task, 'task')
d.setVar('__BBTASKS', bbtasks)
d.delVarFlag(task, 'deps')
for bbtask in d.getVar('__BBTASKS', False) or []:
deps = d.getVarFlag(bbtask, 'deps', False) or []
if task in deps:
deps.remove(task)
d.setVarFlag(bbtask, 'deps', deps)
def preceedtask(task, with_recrdeptasks, d):
"""
Returns a set of tasks in the current recipe which were specified as
precondition by the task itself ("after") or which listed themselves
as precondition ("before"). Preceeding tasks specified via the
"recrdeptask" are included in the result only if requested. Beware
that this may lead to the task itself being listed.
"""
preceed = set()
preceed.update(d.getVarFlag(task, 'deps') or [])
if with_recrdeptasks:
recrdeptask = d.getVarFlag(task, 'recrdeptask')
if recrdeptask:
preceed.update(recrdeptask.split())
return preceed
def tasksbetween(task_start, task_end, d):
"""
Return the list of tasks between two tasks in the current recipe,
where task_start is to start at and task_end is the task to end at
(and task_end has a dependency chain back to task_start).
"""
outtasks = []
tasks = list(filter(lambda k: d.getVarFlag(k, "task"), d.keys()))
def follow_chain(task, endtask, chain=None):
if not chain:
chain = []
chain.append(task)
for othertask in tasks:
if othertask == task:
continue
if task == endtask:
for ctask in chain:
if ctask not in outtasks:
outtasks.append(ctask)
else:
deps = d.getVarFlag(othertask, 'deps', False)
if task in deps:
follow_chain(othertask, endtask, chain)
chain.pop()
follow_chain(task_start, task_end)
return outtasks

889
bitbake/lib/bb/cache.py Normal file
View File

@@ -0,0 +1,889 @@
# ex:ts=4:sw=4:sts=4:et
# -*- tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*-
#
# BitBake Cache implementation
#
# Caching of bitbake variables before task execution
# Copyright (C) 2006 Richard Purdie
# Copyright (C) 2012 Intel Corporation
# but small sections based on code from bin/bitbake:
# Copyright (C) 2003, 2004 Chris Larson
# Copyright (C) 2003, 2004 Phil Blundell
# Copyright (C) 2003 - 2005 Michael 'Mickey' Lauer
# Copyright (C) 2005 Holger Hans Peter Freyther
# Copyright (C) 2005 ROAD GmbH
#
# 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 logging
import pickle
from collections import defaultdict
import bb.utils
logger = logging.getLogger("BitBake.Cache")
__cache_version__ = "151"
def getCacheFile(path, filename, data_hash):
return os.path.join(path, filename + "." + data_hash)
# RecipeInfoCommon defines common data retrieving methods
# from meta data for caches. CoreRecipeInfo as well as other
# Extra RecipeInfo needs to inherit this class
class RecipeInfoCommon(object):
@classmethod
def listvar(cls, var, metadata):
return cls.getvar(var, metadata).split()
@classmethod
def intvar(cls, var, metadata):
return int(cls.getvar(var, metadata) or 0)
@classmethod
def depvar(cls, var, metadata):
return bb.utils.explode_deps(cls.getvar(var, metadata))
@classmethod
def pkgvar(cls, var, packages, metadata):
return dict((pkg, cls.depvar("%s_%s" % (var, pkg), metadata))
for pkg in packages)
@classmethod
def taskvar(cls, var, tasks, metadata):
return dict((task, cls.getvar("%s_task-%s" % (var, task), metadata))
for task in tasks)
@classmethod
def flaglist(cls, flag, varlist, metadata, squash=False):
out_dict = dict((var, metadata.getVarFlag(var, flag))
for var in varlist)
if squash:
return dict((k,v) for (k,v) in out_dict.items() if v)
else:
return out_dict
@classmethod
def getvar(cls, var, metadata, expand = True):
return metadata.getVar(var, expand) or ''
class CoreRecipeInfo(RecipeInfoCommon):
__slots__ = ()
cachefile = "bb_cache.dat"
def __init__(self, filename, metadata):
self.file_depends = metadata.getVar('__depends', False)
self.timestamp = bb.parse.cached_mtime(filename)
self.variants = self.listvar('__VARIANTS', metadata) + ['']
self.appends = self.listvar('__BBAPPEND', metadata)
self.nocache = self.getvar('BB_DONT_CACHE', metadata)
self.skipreason = self.getvar('__SKIPPED', metadata)
if self.skipreason:
self.pn = self.getvar('PN', metadata) or bb.parse.BBHandler.vars_from_file(filename,metadata)[0]
self.skipped = True
self.provides = self.depvar('PROVIDES', metadata)
self.rprovides = self.depvar('RPROVIDES', metadata)
return
self.tasks = metadata.getVar('__BBTASKS', False)
self.pn = self.getvar('PN', metadata)
self.packages = self.listvar('PACKAGES', metadata)
if not self.pn in self.packages:
self.packages.append(self.pn)
self.basetaskhashes = self.taskvar('BB_BASEHASH', self.tasks, metadata)
self.hashfilename = self.getvar('BB_HASHFILENAME', metadata)
self.task_deps = metadata.getVar('_task_deps', False) or {'tasks': [], 'parents': {}}
self.skipped = False
self.pe = self.getvar('PE', metadata)
self.pv = self.getvar('PV', metadata)
self.pr = self.getvar('PR', metadata)
self.defaultpref = self.intvar('DEFAULT_PREFERENCE', metadata)
self.not_world = self.getvar('EXCLUDE_FROM_WORLD', metadata)
self.stamp = self.getvar('STAMP', metadata)
self.stampclean = self.getvar('STAMPCLEAN', metadata)
self.stamp_extrainfo = self.flaglist('stamp-extra-info', self.tasks, metadata)
self.file_checksums = self.flaglist('file-checksums', self.tasks, metadata, True)
self.packages_dynamic = self.listvar('PACKAGES_DYNAMIC', metadata)
self.depends = self.depvar('DEPENDS', metadata)
self.provides = self.depvar('PROVIDES', metadata)
self.rdepends = self.depvar('RDEPENDS', metadata)
self.rprovides = self.depvar('RPROVIDES', metadata)
self.rrecommends = self.depvar('RRECOMMENDS', metadata)
self.rprovides_pkg = self.pkgvar('RPROVIDES', self.packages, metadata)
self.rdepends_pkg = self.pkgvar('RDEPENDS', self.packages, metadata)
self.rrecommends_pkg = self.pkgvar('RRECOMMENDS', self.packages, metadata)
self.inherits = self.getvar('__inherit_cache', metadata, expand=False)
self.fakerootenv = self.getvar('FAKEROOTENV', metadata)
self.fakerootdirs = self.getvar('FAKEROOTDIRS', metadata)
self.fakerootnoenv = self.getvar('FAKEROOTNOENV', metadata)
self.extradepsfunc = self.getvar('calculate_extra_depends', metadata)
@classmethod
def init_cacheData(cls, cachedata):
# CacheData in Core RecipeInfo Class
cachedata.task_deps = {}
cachedata.pkg_fn = {}
cachedata.pkg_pn = defaultdict(list)
cachedata.pkg_pepvpr = {}
cachedata.pkg_dp = {}
cachedata.stamp = {}
cachedata.stampclean = {}
cachedata.stamp_extrainfo = {}
cachedata.file_checksums = {}
cachedata.fn_provides = {}
cachedata.pn_provides = defaultdict(list)
cachedata.all_depends = []
cachedata.deps = defaultdict(list)
cachedata.packages = defaultdict(list)
cachedata.providers = defaultdict(list)
cachedata.rproviders = defaultdict(list)
cachedata.packages_dynamic = defaultdict(list)
cachedata.rundeps = defaultdict(lambda: defaultdict(list))
cachedata.runrecs = defaultdict(lambda: defaultdict(list))
cachedata.possible_world = []
cachedata.universe_target = []
cachedata.hashfn = {}
cachedata.basetaskhash = {}
cachedata.inherits = {}
cachedata.fakerootenv = {}
cachedata.fakerootnoenv = {}
cachedata.fakerootdirs = {}
cachedata.extradepsfunc = {}
def add_cacheData(self, cachedata, fn):
cachedata.task_deps[fn] = self.task_deps
cachedata.pkg_fn[fn] = self.pn
cachedata.pkg_pn[self.pn].append(fn)
cachedata.pkg_pepvpr[fn] = (self.pe, self.pv, self.pr)
cachedata.pkg_dp[fn] = self.defaultpref
cachedata.stamp[fn] = self.stamp
cachedata.stampclean[fn] = self.stampclean
cachedata.stamp_extrainfo[fn] = self.stamp_extrainfo
cachedata.file_checksums[fn] = self.file_checksums
provides = [self.pn]
for provide in self.provides:
if provide not in provides:
provides.append(provide)
cachedata.fn_provides[fn] = provides
for provide in provides:
cachedata.providers[provide].append(fn)
if provide not in cachedata.pn_provides[self.pn]:
cachedata.pn_provides[self.pn].append(provide)
for dep in self.depends:
if dep not in cachedata.deps[fn]:
cachedata.deps[fn].append(dep)
if dep not in cachedata.all_depends:
cachedata.all_depends.append(dep)
rprovides = self.rprovides
for package in self.packages:
cachedata.packages[package].append(fn)
rprovides += self.rprovides_pkg[package]
for rprovide in rprovides:
if fn not in cachedata.rproviders[rprovide]:
cachedata.rproviders[rprovide].append(fn)
for package in self.packages_dynamic:
cachedata.packages_dynamic[package].append(fn)
# Build hash of runtime depends and recommends
for package in self.packages + [self.pn]:
cachedata.rundeps[fn][package] = list(self.rdepends) + self.rdepends_pkg[package]
cachedata.runrecs[fn][package] = list(self.rrecommends) + self.rrecommends_pkg[package]
# Collect files we may need for possible world-dep
# calculations
if self.not_world:
logger.debug(1, "EXCLUDE FROM WORLD: %s", fn)
else:
cachedata.possible_world.append(fn)
# create a collection of all targets for sanity checking
# tasks, such as upstream versions, license, and tools for
# task and image creation.
cachedata.universe_target.append(self.pn)
cachedata.hashfn[fn] = self.hashfilename
for task, taskhash in self.basetaskhashes.items():
identifier = '%s.%s' % (fn, task)
cachedata.basetaskhash[identifier] = taskhash
cachedata.inherits[fn] = self.inherits
cachedata.fakerootenv[fn] = self.fakerootenv
cachedata.fakerootnoenv[fn] = self.fakerootnoenv
cachedata.fakerootdirs[fn] = self.fakerootdirs
cachedata.extradepsfunc[fn] = self.extradepsfunc
def virtualfn2realfn(virtualfn):
"""
Convert a virtual file name to a real one + the associated subclass keyword
"""
mc = ""
if virtualfn.startswith('multiconfig:'):
elems = virtualfn.split(':')
mc = elems[1]
virtualfn = ":".join(elems[2:])
fn = virtualfn
cls = ""
if virtualfn.startswith('virtual:'):
elems = virtualfn.split(':')
cls = ":".join(elems[1:-1])
fn = elems[-1]
return (fn, cls, mc)
def realfn2virtual(realfn, cls, mc):
"""
Convert a real filename + the associated subclass keyword to a virtual filename
"""
if cls:
realfn = "virtual:" + cls + ":" + realfn
if mc:
realfn = "multiconfig:" + mc + ":" + realfn
return realfn
def variant2virtual(realfn, variant):
"""
Convert a real filename + the associated subclass keyword to a virtual filename
"""
if variant == "":
return realfn
if variant.startswith("multiconfig:"):
elems = variant.split(":")
if elems[2]:
return "multiconfig:" + elems[1] + ":virtual:" + ":".join(elems[2:]) + ":" + realfn
return "multiconfig:" + elems[1] + ":" + realfn
return "virtual:" + variant + ":" + realfn
def parse_recipe(bb_data, bbfile, appends, mc=''):
"""
Parse a recipe
"""
chdir_back = False
bb_data.setVar("__BBMULTICONFIG", mc)
# expand tmpdir to include this topdir
bb_data.setVar('TMPDIR', bb_data.getVar('TMPDIR') or "")
bbfile_loc = os.path.abspath(os.path.dirname(bbfile))
oldpath = os.path.abspath(os.getcwd())
bb.parse.cached_mtime_noerror(bbfile_loc)
# The ConfHandler first looks if there is a TOPDIR and if not
# then it would call getcwd().
# Previously, we chdir()ed to bbfile_loc, called the handler
# and finally chdir()ed back, a couple of thousand times. We now
# just fill in TOPDIR to point to bbfile_loc if there is no TOPDIR yet.
if not bb_data.getVar('TOPDIR', False):
chdir_back = True
bb_data.setVar('TOPDIR', bbfile_loc)
try:
if appends:
bb_data.setVar('__BBAPPEND', " ".join(appends))
bb_data = bb.parse.handle(bbfile, bb_data)
if chdir_back:
os.chdir(oldpath)
return bb_data
except:
if chdir_back:
os.chdir(oldpath)
raise
class NoCache(object):
def __init__(self, databuilder):
self.databuilder = databuilder
self.data = databuilder.data
def loadDataFull(self, virtualfn, appends):
"""
Return a complete set of data for fn.
To do this, we need to parse the file.
"""
logger.debug(1, "Parsing %s (full)" % virtualfn)
(fn, virtual, mc) = virtualfn2realfn(virtualfn)
bb_data = self.load_bbfile(virtualfn, appends, virtonly=True)
return bb_data[virtual]
def load_bbfile(self, bbfile, appends, virtonly = False):
"""
Load and parse one .bb build file
Return the data and whether parsing resulted in the file being skipped
"""
if virtonly:
(bbfile, virtual, mc) = virtualfn2realfn(bbfile)
bb_data = self.databuilder.mcdata[mc].createCopy()
bb_data.setVar("__ONLYFINALISE", virtual or "default")
datastores = parse_recipe(bb_data, bbfile, appends, mc)
return datastores
bb_data = self.data.createCopy()
datastores = parse_recipe(bb_data, bbfile, appends)
for mc in self.databuilder.mcdata:
if not mc:
continue
bb_data = self.databuilder.mcdata[mc].createCopy()
newstores = parse_recipe(bb_data, bbfile, appends, mc)
for ns in newstores:
datastores["multiconfig:%s:%s" % (mc, ns)] = newstores[ns]
return datastores
class Cache(NoCache):
"""
BitBake Cache implementation
"""
def __init__(self, databuilder, data_hash, caches_array):
super().__init__(databuilder)
data = databuilder.data
# Pass caches_array information into Cache Constructor
# It will be used later for deciding whether we
# need extra cache file dump/load support
self.caches_array = caches_array
self.cachedir = data.getVar("CACHE")
self.clean = set()
self.checked = set()
self.depends_cache = {}
self.data_fn = None
self.cacheclean = True
self.data_hash = data_hash
if self.cachedir in [None, '']:
self.has_cache = False
logger.info("Not using a cache. "
"Set CACHE = <directory> to enable.")
return
self.has_cache = True
self.cachefile = getCacheFile(self.cachedir, "bb_cache.dat", self.data_hash)
logger.debug(1, "Using cache in '%s'", self.cachedir)
bb.utils.mkdirhier(self.cachedir)
cache_ok = True
if self.caches_array:
for cache_class in self.caches_array:
cachefile = getCacheFile(self.cachedir, cache_class.cachefile, self.data_hash)
cache_ok = cache_ok and os.path.exists(cachefile)
cache_class.init_cacheData(self)
if cache_ok:
self.load_cachefile()
elif os.path.isfile(self.cachefile):
logger.info("Out of date cache found, rebuilding...")
def load_cachefile(self):
cachesize = 0
previous_progress = 0
previous_percent = 0
# Calculate the correct cachesize of all those cache files
for cache_class in self.caches_array:
cachefile = getCacheFile(self.cachedir, cache_class.cachefile, self.data_hash)
with open(cachefile, "rb") as cachefile:
cachesize += os.fstat(cachefile.fileno()).st_size
bb.event.fire(bb.event.CacheLoadStarted(cachesize), self.data)
for cache_class in self.caches_array:
cachefile = getCacheFile(self.cachedir, cache_class.cachefile, self.data_hash)
with open(cachefile, "rb") as cachefile:
pickled = pickle.Unpickler(cachefile)
# Check cache version information
try:
cache_ver = pickled.load()
bitbake_ver = pickled.load()
except Exception:
logger.info('Invalid cache, rebuilding...')
return
if cache_ver != __cache_version__:
logger.info('Cache version mismatch, rebuilding...')
return
elif bitbake_ver != bb.__version__:
logger.info('Bitbake version mismatch, rebuilding...')
return
# Load the rest of the cache file
current_progress = 0
while cachefile:
try:
key = pickled.load()
value = pickled.load()
except Exception:
break
if not isinstance(key, str):
bb.warn("%s from extras cache is not a string?" % key)
break
if not isinstance(value, RecipeInfoCommon):
bb.warn("%s from extras cache is not a RecipeInfoCommon class?" % value)
break
if key in self.depends_cache:
self.depends_cache[key].append(value)
else:
self.depends_cache[key] = [value]
# only fire events on even percentage boundaries
current_progress = cachefile.tell() + previous_progress
if current_progress > cachesize:
# we might have calculated incorrect total size because a file
# might've been written out just after we checked its size
cachesize = current_progress
current_percent = 100 * current_progress / cachesize
if current_percent > previous_percent:
previous_percent = current_percent
bb.event.fire(bb.event.CacheLoadProgress(current_progress, cachesize),
self.data)
previous_progress += current_progress
# Note: depends cache number is corresponding to the parsing file numbers.
# The same file has several caches, still regarded as one item in the cache
bb.event.fire(bb.event.CacheLoadCompleted(cachesize,
len(self.depends_cache)),
self.data)
def parse(self, filename, appends):
"""Parse the specified filename, returning the recipe information"""
logger.debug(1, "Parsing %s", filename)
infos = []
datastores = self.load_bbfile(filename, appends)
depends = []
variants = []
# Process the "real" fn last so we can store variants list
for variant, data in sorted(datastores.items(),
key=lambda i: i[0],
reverse=True):
virtualfn = variant2virtual(filename, variant)
variants.append(variant)
depends = depends + (data.getVar("__depends", False) or [])
if depends and not variant:
data.setVar("__depends", depends)
if virtualfn == filename:
data.setVar("__VARIANTS", " ".join(variants))
info_array = []
for cache_class in self.caches_array:
info = cache_class(filename, data)
info_array.append(info)
infos.append((virtualfn, info_array))
return infos
def load(self, filename, appends):
"""Obtain the recipe information for the specified filename,
using cached values if available, otherwise parsing.
Note that if it does parse to obtain the info, it will not
automatically add the information to the cache or to your
CacheData. Use the add or add_info method to do so after
running this, or use loadData instead."""
cached = self.cacheValid(filename, appends)
if cached:
infos = []
# info_array item is a list of [CoreRecipeInfo, XXXRecipeInfo]
info_array = self.depends_cache[filename]
for variant in info_array[0].variants:
virtualfn = variant2virtual(filename, variant)
infos.append((virtualfn, self.depends_cache[virtualfn]))
else:
return self.parse(filename, appends, configdata, self.caches_array)
return cached, infos
def loadData(self, fn, appends, cacheData):
"""Load the recipe info for the specified filename,
parsing and adding to the cache if necessary, and adding
the recipe information to the supplied CacheData instance."""
skipped, virtuals = 0, 0
cached, infos = self.load(fn, appends)
for virtualfn, info_array in infos:
if info_array[0].skipped:
logger.debug(1, "Skipping %s: %s", virtualfn, info_array[0].skipreason)
skipped += 1
else:
self.add_info(virtualfn, info_array, cacheData, not cached)
virtuals += 1
return cached, skipped, virtuals
def cacheValid(self, fn, appends):
"""
Is the cache valid for fn?
Fast version, no timestamps checked.
"""
if fn not in self.checked:
self.cacheValidUpdate(fn, appends)
# Is cache enabled?
if not self.has_cache:
return False
if fn in self.clean:
return True
return False
def cacheValidUpdate(self, fn, appends):
"""
Is the cache valid for fn?
Make thorough (slower) checks including timestamps.
"""
# Is cache enabled?
if not self.has_cache:
return False
self.checked.add(fn)
# File isn't in depends_cache
if not fn in self.depends_cache:
logger.debug(2, "Cache: %s is not cached", fn)
return False
mtime = bb.parse.cached_mtime_noerror(fn)
# Check file still exists
if mtime == 0:
logger.debug(2, "Cache: %s no longer exists", fn)
self.remove(fn)
return False
info_array = self.depends_cache[fn]
# Check the file's timestamp
if mtime != info_array[0].timestamp:
logger.debug(2, "Cache: %s changed", fn)
self.remove(fn)
return False
# Check dependencies are still valid
depends = info_array[0].file_depends
if depends:
for f, old_mtime in depends:
fmtime = bb.parse.cached_mtime_noerror(f)
# Check if file still exists
if old_mtime != 0 and fmtime == 0:
logger.debug(2, "Cache: %s's dependency %s was removed",
fn, f)
self.remove(fn)
return False
if (fmtime != old_mtime):
logger.debug(2, "Cache: %s's dependency %s changed",
fn, f)
self.remove(fn)
return False
if hasattr(info_array[0], 'file_checksums'):
for _, fl in info_array[0].file_checksums.items():
fl = fl.strip()
while fl:
# A .split() would be simpler but means spaces or colons in filenames would break
a = fl.find(":True")
b = fl.find(":False")
if ((a < 0) and b) or ((b > 0) and (b < a)):
f = fl[:b+6]
fl = fl[b+7:]
elif ((b < 0) and a) or ((a > 0) and (a < b)):
f = fl[:a+5]
fl = fl[a+6:]
else:
break
fl = fl.strip()
if "*" in f:
continue
f, exist = f.split(":")
if (exist == "True" and not os.path.exists(f)) or (exist == "False" and os.path.exists(f)):
logger.debug(2, "Cache: %s's file checksum list file %s changed",
fn, f)
self.remove(fn)
return False
if appends != info_array[0].appends:
logger.debug(2, "Cache: appends for %s changed", fn)
logger.debug(2, "%s to %s" % (str(appends), str(info_array[0].appends)))
self.remove(fn)
return False
invalid = False
for cls in info_array[0].variants:
virtualfn = variant2virtual(fn, cls)
self.clean.add(virtualfn)
if virtualfn not in self.depends_cache:
logger.debug(2, "Cache: %s is not cached", virtualfn)
invalid = True
elif len(self.depends_cache[virtualfn]) != len(self.caches_array):
logger.debug(2, "Cache: Extra caches missing for %s?" % virtualfn)
invalid = True
# If any one of the variants is not present, mark as invalid for all
if invalid:
for cls in info_array[0].variants:
virtualfn = variant2virtual(fn, cls)
if virtualfn in self.clean:
logger.debug(2, "Cache: Removing %s from cache", virtualfn)
self.clean.remove(virtualfn)
if fn in self.clean:
logger.debug(2, "Cache: Marking %s as not clean", fn)
self.clean.remove(fn)
return False
self.clean.add(fn)
return True
def remove(self, fn):
"""
Remove a fn from the cache
Called from the parser in error cases
"""
if fn in self.depends_cache:
logger.debug(1, "Removing %s from cache", fn)
del self.depends_cache[fn]
if fn in self.clean:
logger.debug(1, "Marking %s as unclean", fn)
self.clean.remove(fn)
def sync(self):
"""
Save the cache
Called from the parser when complete (or exiting)
"""
if not self.has_cache:
return
if self.cacheclean:
logger.debug(2, "Cache is clean, not saving.")
return
for cache_class in self.caches_array:
cache_class_name = cache_class.__name__
cachefile = getCacheFile(self.cachedir, cache_class.cachefile, self.data_hash)
with open(cachefile, "wb") as f:
p = pickle.Pickler(f, pickle.HIGHEST_PROTOCOL)
p.dump(__cache_version__)
p.dump(bb.__version__)
for key, info_array in self.depends_cache.items():
for info in info_array:
if isinstance(info, RecipeInfoCommon) and info.__class__.__name__ == cache_class_name:
p.dump(key)
p.dump(info)
del self.depends_cache
@staticmethod
def mtime(cachefile):
return bb.parse.cached_mtime_noerror(cachefile)
def add_info(self, filename, info_array, cacheData, parsed=None, watcher=None):
if isinstance(info_array[0], CoreRecipeInfo) and (not info_array[0].skipped):
cacheData.add_from_recipeinfo(filename, info_array)
if watcher:
watcher(info_array[0].file_depends)
if not self.has_cache:
return
if (info_array[0].skipped or 'SRCREVINACTION' not in info_array[0].pv) and not info_array[0].nocache:
if parsed:
self.cacheclean = False
self.depends_cache[filename] = info_array
def add(self, file_name, data, cacheData, parsed=None):
"""
Save data we need into the cache
"""
realfn = virtualfn2realfn(file_name)[0]
info_array = []
for cache_class in self.caches_array:
info_array.append(cache_class(realfn, data))
self.add_info(file_name, info_array, cacheData, parsed)
def init(cooker):
"""
The Objective: Cache the minimum amount of data possible yet get to the
stage of building packages (i.e. tryBuild) without reparsing any .bb files.
To do this, we intercept getVar calls and only cache the variables we see
being accessed. We rely on the cache getVar calls being made for all
variables bitbake might need to use to reach this stage. For each cached
file we need to track:
* Its mtime
* The mtimes of all its dependencies
* Whether it caused a parse.SkipRecipe exception
Files causing parsing errors are evicted from the cache.
"""
return Cache(cooker.configuration.data, cooker.configuration.data_hash)
class CacheData(object):
"""
The data structures we compile from the cached data
"""
def __init__(self, caches_array):
self.caches_array = caches_array
for cache_class in self.caches_array:
if not issubclass(cache_class, RecipeInfoCommon):
bb.error("Extra cache data class %s should subclass RecipeInfoCommon class" % cache_class)
cache_class.init_cacheData(self)
# Direct cache variables
self.task_queues = {}
self.preferred = {}
self.tasks = {}
# Indirect Cache variables (set elsewhere)
self.ignored_dependencies = []
self.world_target = set()
self.bbfile_priority = {}
def add_from_recipeinfo(self, fn, info_array):
for info in info_array:
info.add_cacheData(self, fn)
class MultiProcessCache(object):
"""
BitBake multi-process cache implementation
Used by the codeparser & file checksum caches
"""
def __init__(self):
self.cachefile = None
self.cachedata = self.create_cachedata()
self.cachedata_extras = self.create_cachedata()
def init_cache(self, d, cache_file_name=None):
cachedir = (d.getVar("PERSISTENT_DIR") or
d.getVar("CACHE"))
if cachedir in [None, '']:
return
bb.utils.mkdirhier(cachedir)
self.cachefile = os.path.join(cachedir,
cache_file_name or self.__class__.cache_file_name)
logger.debug(1, "Using cache in '%s'", self.cachefile)
glf = bb.utils.lockfile(self.cachefile + ".lock")
try:
with open(self.cachefile, "rb") as f:
p = pickle.Unpickler(f)
data, version = p.load()
except:
bb.utils.unlockfile(glf)
return
bb.utils.unlockfile(glf)
if version != self.__class__.CACHE_VERSION:
return
self.cachedata = data
def create_cachedata(self):
data = [{}]
return data
def save_extras(self):
if not self.cachefile:
return
glf = bb.utils.lockfile(self.cachefile + ".lock", shared=True)
i = os.getpid()
lf = None
while not lf:
lf = bb.utils.lockfile(self.cachefile + ".lock." + str(i), retry=False)
if not lf or os.path.exists(self.cachefile + "-" + str(i)):
if lf:
bb.utils.unlockfile(lf)
lf = None
i = i + 1
continue
with open(self.cachefile + "-" + str(i), "wb") as f:
p = pickle.Pickler(f, -1)
p.dump([self.cachedata_extras, self.__class__.CACHE_VERSION])
bb.utils.unlockfile(lf)
bb.utils.unlockfile(glf)
def merge_data(self, source, dest):
for j in range(0,len(dest)):
for h in source[j]:
if h not in dest[j]:
dest[j][h] = source[j][h]
def save_merge(self):
if not self.cachefile:
return
glf = bb.utils.lockfile(self.cachefile + ".lock")
data = self.cachedata
for f in [y for y in os.listdir(os.path.dirname(self.cachefile)) if y.startswith(os.path.basename(self.cachefile) + '-')]:
f = os.path.join(os.path.dirname(self.cachefile), f)
try:
with open(f, "rb") as fd:
p = pickle.Unpickler(fd)
extradata, version = p.load()
except (IOError, EOFError):
os.unlink(f)
continue
if version != self.__class__.CACHE_VERSION:
os.unlink(f)
continue
self.merge_data(extradata, data)
os.unlink(f)
with open(self.cachefile, "wb") as f:
p = pickle.Pickler(f, -1)
p.dump([data, self.__class__.CACHE_VERSION])
bb.utils.unlockfile(glf)

View File

@@ -0,0 +1,75 @@
# ex:ts=4:sw=4:sts=4:et
# -*- tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*-
#
# Extra RecipeInfo will be all defined in this file. Currently,
# Only Hob (Image Creator) Requests some extra fields. So
# HobRecipeInfo is defined. It's named HobRecipeInfo because it
# is introduced by 'hob'. Users could also introduce other
# RecipeInfo or simply use those already defined RecipeInfo.
# In the following patch, this newly defined new extra RecipeInfo
# will be dynamically loaded and used for loading/saving the extra
# cache fields
# Copyright (C) 2011, Intel Corporation. All rights reserved.
# 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.
from bb.cache import RecipeInfoCommon
class HobRecipeInfo(RecipeInfoCommon):
__slots__ = ()
classname = "HobRecipeInfo"
# please override this member with the correct data cache file
# such as (bb_cache.dat, bb_extracache_hob.dat)
cachefile = "bb_extracache_" + classname +".dat"
# override this member with the list of extra cache fields
# that this class will provide
cachefields = ['summary', 'license', 'section',
'description', 'homepage', 'bugtracker',
'prevision', 'files_info']
def __init__(self, filename, metadata):
self.summary = self.getvar('SUMMARY', metadata)
self.license = self.getvar('LICENSE', metadata)
self.section = self.getvar('SECTION', metadata)
self.description = self.getvar('DESCRIPTION', metadata)
self.homepage = self.getvar('HOMEPAGE', metadata)
self.bugtracker = self.getvar('BUGTRACKER', metadata)
self.prevision = self.getvar('PR', metadata)
self.files_info = self.getvar('FILES_INFO', metadata)
@classmethod
def init_cacheData(cls, cachedata):
# CacheData in Hob RecipeInfo Class
cachedata.summary = {}
cachedata.license = {}
cachedata.section = {}
cachedata.description = {}
cachedata.homepage = {}
cachedata.bugtracker = {}
cachedata.prevision = {}
cachedata.files_info = {}
def add_cacheData(self, cachedata, fn):
cachedata.summary[fn] = self.summary
cachedata.license[fn] = self.license
cachedata.section[fn] = self.section
cachedata.description[fn] = self.description
cachedata.homepage[fn] = self.homepage
cachedata.bugtracker[fn] = self.bugtracker
cachedata.prevision[fn] = self.prevision
cachedata.files_info[fn] = self.files_info

134
bitbake/lib/bb/checksum.py Normal file
View File

@@ -0,0 +1,134 @@
# Local file checksum cache implementation
#
# Copyright (C) 2012 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 glob
import operator
import os
import stat
import pickle
import bb.utils
import logging
from bb.cache import MultiProcessCache
logger = logging.getLogger("BitBake.Cache")
# mtime cache (non-persistent)
# based upon the assumption that files do not change during bitbake run
class FileMtimeCache(object):
cache = {}
def cached_mtime(self, f):
if f not in self.cache:
self.cache[f] = os.stat(f)[stat.ST_MTIME]
return self.cache[f]
def cached_mtime_noerror(self, f):
if f not in self.cache:
try:
self.cache[f] = os.stat(f)[stat.ST_MTIME]
except OSError:
return 0
return self.cache[f]
def update_mtime(self, f):
self.cache[f] = os.stat(f)[stat.ST_MTIME]
return self.cache[f]
def clear(self):
self.cache.clear()
# Checksum + mtime cache (persistent)
class FileChecksumCache(MultiProcessCache):
cache_file_name = "local_file_checksum_cache.dat"
CACHE_VERSION = 1
def __init__(self):
self.mtime_cache = FileMtimeCache()
MultiProcessCache.__init__(self)
def get_checksum(self, f):
entry = self.cachedata[0].get(f)
cmtime = self.mtime_cache.cached_mtime(f)
if entry:
(mtime, hashval) = entry
if cmtime == mtime:
return hashval
else:
bb.debug(2, "file %s changed mtime, recompute checksum" % f)
hashval = bb.utils.md5_file(f)
self.cachedata_extras[0][f] = (cmtime, hashval)
return hashval
def merge_data(self, source, dest):
for h in source[0]:
if h in dest:
(smtime, _) = source[0][h]
(dmtime, _) = dest[0][h]
if smtime > dmtime:
dest[0][h] = source[0][h]
else:
dest[0][h] = source[0][h]
def get_checksums(self, filelist, pn):
"""Get checksums for a list of files"""
def checksum_file(f):
try:
checksum = self.get_checksum(f)
except OSError as e:
bb.warn("Unable to get checksum for %s SRC_URI entry %s: %s" % (pn, os.path.basename(f), e))
return None
return checksum
def checksum_dir(pth):
# Handle directories recursively
dirchecksums = []
for root, dirs, files in os.walk(pth):
for name in files:
fullpth = os.path.join(root, name)
checksum = checksum_file(fullpth)
if checksum:
dirchecksums.append((fullpth, checksum))
return dirchecksums
checksums = []
for pth in filelist.split():
exist = pth.split(":")[1]
if exist == "False":
continue
pth = pth.split(":")[0]
if '*' in pth:
# Handle globs
for f in glob.glob(pth):
if os.path.isdir(f):
if not os.path.islink(f):
checksums.extend(checksum_dir(f))
else:
checksum = checksum_file(f)
if checksum:
checksums.append((f, checksum))
elif os.path.isdir(pth):
if not os.path.islink(pth):
checksums.extend(checksum_dir(pth))
else:
checksum = checksum_file(pth)
if checksum:
checksums.append((pth, checksum))
checksums.sort(key=operator.itemgetter(1))
return checksums

View File

@@ -0,0 +1,476 @@
"""
BitBake code parser
Parses actual code (i.e. python and shell) for functions and in-line
expressions. Used mainly to determine dependencies on other functions
and variables within the BitBake metadata. Also provides a cache for
this information in order to speed up processing.
(Not to be confused with the code that parses the metadata itself,
see lib/bb/parse/ for that).
NOTE: if you change how the parsers gather information you will almost
certainly need to increment CodeParserCache.CACHE_VERSION below so that
any existing codeparser cache gets invalidated. Additionally you'll need
to increment __cache_version__ in cache.py in order to ensure that old
recipe caches don't trigger "Taskhash mismatch" errors.
"""
import ast
import sys
import codegen
import logging
import pickle
import bb.pysh as pysh
import os.path
import bb.utils, bb.data
import hashlib
from itertools import chain
from bb.pysh import pyshyacc, pyshlex, sherrors
from bb.cache import MultiProcessCache
logger = logging.getLogger('BitBake.CodeParser')
def bbhash(s):
return hashlib.md5(s.encode("utf-8")).hexdigest()
def check_indent(codestr):
"""If the code is indented, add a top level piece of code to 'remove' the indentation"""
i = 0
while codestr[i] in ["\n", "\t", " "]:
i = i + 1
if i == 0:
return codestr
if codestr[i-1] == "\t" or codestr[i-1] == " ":
if codestr[0] == "\n":
# Since we're adding a line, we need to remove one line of any empty padding
# to ensure line numbers are correct
codestr = codestr[1:]
return "if 1:\n" + codestr
return codestr
# Basically pickle, in python 2.7.3 at least, does badly with data duplication
# upon pickling and unpickling. Combine this with duplicate objects and things
# are a mess.
#
# When the sets are originally created, python calls intern() on the set keys
# which significantly improves memory usage. Sadly the pickle/unpickle process
# doesn't call intern() on the keys and results in the same strings being duplicated
# in memory. This also means pickle will save the same string multiple times in
# the cache file.
#
# By having shell and python cacheline objects with setstate/getstate, we force
# the object creation through our own routine where we can call intern (via internSet).
#
# We also use hashable frozensets and ensure we use references to these so that
# duplicates can be removed, both in memory and in the resulting pickled data.
#
# By playing these games, the size of the cache file shrinks dramatically
# meaning faster load times and the reloaded cache files also consume much less
# memory. Smaller cache files, faster load times and lower memory usage is good.
#
# A custom getstate/setstate using tuples is actually worth 15% cachesize by
# avoiding duplication of the attribute names!
class SetCache(object):
def __init__(self):
self.setcache = {}
def internSet(self, items):
new = []
for i in items:
new.append(sys.intern(i))
s = frozenset(new)
h = hash(s)
if h in self.setcache:
return self.setcache[h]
self.setcache[h] = s
return s
codecache = SetCache()
class pythonCacheLine(object):
def __init__(self, refs, execs, contains):
self.refs = codecache.internSet(refs)
self.execs = codecache.internSet(execs)
self.contains = {}
for c in contains:
self.contains[c] = codecache.internSet(contains[c])
def __getstate__(self):
return (self.refs, self.execs, self.contains)
def __setstate__(self, state):
(refs, execs, contains) = state
self.__init__(refs, execs, contains)
def __hash__(self):
l = (hash(self.refs), hash(self.execs))
for c in sorted(self.contains.keys()):
l = l + (c, hash(self.contains[c]))
return hash(l)
def __repr__(self):
return " ".join([str(self.refs), str(self.execs), str(self.contains)])
class shellCacheLine(object):
def __init__(self, execs):
self.execs = codecache.internSet(execs)
def __getstate__(self):
return (self.execs)
def __setstate__(self, state):
(execs) = state
self.__init__(execs)
def __hash__(self):
return hash(self.execs)
def __repr__(self):
return str(self.execs)
class CodeParserCache(MultiProcessCache):
cache_file_name = "bb_codeparser.dat"
# NOTE: you must increment this if you change how the parsers gather information,
# so that an existing cache gets invalidated. Additionally you'll need
# to increment __cache_version__ in cache.py in order to ensure that old
# recipe caches don't trigger "Taskhash mismatch" errors.
CACHE_VERSION = 9
def __init__(self):
MultiProcessCache.__init__(self)
self.pythoncache = self.cachedata[0]
self.shellcache = self.cachedata[1]
self.pythoncacheextras = self.cachedata_extras[0]
self.shellcacheextras = self.cachedata_extras[1]
# To avoid duplication in the codeparser cache, keep
# a lookup of hashes of objects we already have
self.pythoncachelines = {}
self.shellcachelines = {}
def newPythonCacheLine(self, refs, execs, contains):
cacheline = pythonCacheLine(refs, execs, contains)
h = hash(cacheline)
if h in self.pythoncachelines:
return self.pythoncachelines[h]
self.pythoncachelines[h] = cacheline
return cacheline
def newShellCacheLine(self, execs):
cacheline = shellCacheLine(execs)
h = hash(cacheline)
if h in self.shellcachelines:
return self.shellcachelines[h]
self.shellcachelines[h] = cacheline
return cacheline
def init_cache(self, d):
# Check if we already have the caches
if self.pythoncache:
return
MultiProcessCache.init_cache(self, d)
# cachedata gets re-assigned in the parent
self.pythoncache = self.cachedata[0]
self.shellcache = self.cachedata[1]
def create_cachedata(self):
data = [{}, {}]
return data
codeparsercache = CodeParserCache()
def parser_cache_init(d):
codeparsercache.init_cache(d)
def parser_cache_save():
codeparsercache.save_extras()
def parser_cache_savemerge():
codeparsercache.save_merge()
Logger = logging.getLoggerClass()
class BufferedLogger(Logger):
def __init__(self, name, level=0, target=None):
Logger.__init__(self, name)
self.setLevel(level)
self.buffer = []
self.target = target
def handle(self, record):
self.buffer.append(record)
def flush(self):
for record in self.buffer:
if self.target.isEnabledFor(record.levelno):
self.target.handle(record)
self.buffer = []
class PythonParser():
getvars = (".getVar", ".appendVar", ".prependVar")
getvarflags = (".getVarFlag", ".appendVarFlag", ".prependVarFlag")
containsfuncs = ("bb.utils.contains", "base_contains")
containsanyfuncs = ("bb.utils.contains_any", "bb.utils.filter")
execfuncs = ("bb.build.exec_func", "bb.build.exec_task")
def warn(self, func, arg):
"""Warn about calls of bitbake APIs which pass a non-literal
argument for the variable name, as we're not able to track such
a reference.
"""
try:
funcstr = codegen.to_source(func)
argstr = codegen.to_source(arg)
except TypeError:
self.log.debug(2, 'Failed to convert function and argument to source form')
else:
self.log.debug(1, self.unhandled_message % (funcstr, argstr))
def visit_Call(self, node):
name = self.called_node_name(node.func)
if name and (name.endswith(self.getvars) or name.endswith(self.getvarflags) or name in self.containsfuncs or name in self.containsanyfuncs):
if isinstance(node.args[0], ast.Str):
varname = node.args[0].s
if name in self.containsfuncs and isinstance(node.args[1], ast.Str):
if varname not in self.contains:
self.contains[varname] = set()
self.contains[varname].add(node.args[1].s)
elif name in self.containsanyfuncs and isinstance(node.args[1], ast.Str):
if varname not in self.contains:
self.contains[varname] = set()
self.contains[varname].update(node.args[1].s.split())
elif name.endswith(self.getvarflags):
if isinstance(node.args[1], ast.Str):
self.references.add('%s[%s]' % (varname, node.args[1].s))
else:
self.warn(node.func, node.args[1])
else:
self.references.add(varname)
else:
self.warn(node.func, node.args[0])
elif name and name.endswith(".expand"):
if isinstance(node.args[0], ast.Str):
value = node.args[0].s
d = bb.data.init()
parser = d.expandWithRefs(value, self.name)
self.references |= parser.references
self.execs |= parser.execs
for varname in parser.contains:
if varname not in self.contains:
self.contains[varname] = set()
self.contains[varname] |= parser.contains[varname]
elif name in self.execfuncs:
if isinstance(node.args[0], ast.Str):
self.var_execs.add(node.args[0].s)
else:
self.warn(node.func, node.args[0])
elif name and isinstance(node.func, (ast.Name, ast.Attribute)):
self.execs.add(name)
def called_node_name(self, node):
"""Given a called node, return its original string form"""
components = []
while node:
if isinstance(node, ast.Attribute):
components.append(node.attr)
node = node.value
elif isinstance(node, ast.Name):
components.append(node.id)
return '.'.join(reversed(components))
else:
break
def __init__(self, name, log):
self.name = name
self.var_execs = set()
self.contains = {}
self.execs = set()
self.references = set()
self.log = BufferedLogger('BitBake.Data.PythonParser', logging.DEBUG, log)
self.unhandled_message = "in call of %s, argument '%s' is not a string literal"
self.unhandled_message = "while parsing %s, %s" % (name, self.unhandled_message)
def parse_python(self, node, lineno=0, filename="<string>"):
if not node or not node.strip():
return
h = bbhash(str(node))
if h in codeparsercache.pythoncache:
self.references = set(codeparsercache.pythoncache[h].refs)
self.execs = set(codeparsercache.pythoncache[h].execs)
self.contains = {}
for i in codeparsercache.pythoncache[h].contains:
self.contains[i] = set(codeparsercache.pythoncache[h].contains[i])
return
if h in codeparsercache.pythoncacheextras:
self.references = set(codeparsercache.pythoncacheextras[h].refs)
self.execs = set(codeparsercache.pythoncacheextras[h].execs)
self.contains = {}
for i in codeparsercache.pythoncacheextras[h].contains:
self.contains[i] = set(codeparsercache.pythoncacheextras[h].contains[i])
return
# We can't add to the linenumbers for compile, we can pad to the correct number of blank lines though
node = "\n" * int(lineno) + node
code = compile(check_indent(str(node)), filename, "exec",
ast.PyCF_ONLY_AST)
for n in ast.walk(code):
if n.__class__.__name__ == "Call":
self.visit_Call(n)
self.execs.update(self.var_execs)
codeparsercache.pythoncacheextras[h] = codeparsercache.newPythonCacheLine(self.references, self.execs, self.contains)
class ShellParser():
def __init__(self, name, log):
self.funcdefs = set()
self.allexecs = set()
self.execs = set()
self.log = BufferedLogger('BitBake.Data.%s' % name, logging.DEBUG, log)
self.unhandled_template = "unable to handle non-literal command '%s'"
self.unhandled_template = "while parsing %s, %s" % (name, self.unhandled_template)
def parse_shell(self, value):
"""Parse the supplied shell code in a string, returning the external
commands it executes.
"""
h = bbhash(str(value))
if h in codeparsercache.shellcache:
self.execs = set(codeparsercache.shellcache[h].execs)
return self.execs
if h in codeparsercache.shellcacheextras:
self.execs = set(codeparsercache.shellcacheextras[h].execs)
return self.execs
self._parse_shell(value)
self.execs = set(cmd for cmd in self.allexecs if cmd not in self.funcdefs)
codeparsercache.shellcacheextras[h] = codeparsercache.newShellCacheLine(self.execs)
return self.execs
def _parse_shell(self, value):
try:
tokens, _ = pyshyacc.parse(value, eof=True, debug=False)
except pyshlex.NeedMore:
raise sherrors.ShellSyntaxError("Unexpected EOF")
self.process_tokens(tokens)
def process_tokens(self, tokens):
"""Process a supplied portion of the syntax tree as returned by
pyshyacc.parse.
"""
def function_definition(value):
self.funcdefs.add(value.name)
return [value.body], None
def case_clause(value):
# Element 0 of each item in the case is the list of patterns, and
# Element 1 of each item in the case is the list of commands to be
# executed when that pattern matches.
words = chain(*[item[0] for item in value.items])
cmds = chain(*[item[1] for item in value.items])
return cmds, words
def if_clause(value):
main = chain(value.cond, value.if_cmds)
rest = value.else_cmds
if isinstance(rest, tuple) and rest[0] == "elif":
return chain(main, if_clause(rest[1]))
else:
return chain(main, rest)
def simple_command(value):
return None, chain(value.words, (assign[1] for assign in value.assigns))
token_handlers = {
"and_or": lambda x: ((x.left, x.right), None),
"async": lambda x: ([x], None),
"brace_group": lambda x: (x.cmds, None),
"for_clause": lambda x: (x.cmds, x.items),
"function_definition": function_definition,
"if_clause": lambda x: (if_clause(x), None),
"pipeline": lambda x: (x.commands, None),
"redirect_list": lambda x: ([x.cmd], None),
"subshell": lambda x: (x.cmds, None),
"while_clause": lambda x: (chain(x.condition, x.cmds), None),
"until_clause": lambda x: (chain(x.condition, x.cmds), None),
"simple_command": simple_command,
"case_clause": case_clause,
}
def process_token_list(tokens):
for token in tokens:
if isinstance(token, list):
process_token_list(token)
continue
name, value = token
try:
more_tokens, words = token_handlers[name](value)
except KeyError:
raise NotImplementedError("Unsupported token type " + name)
if more_tokens:
self.process_tokens(more_tokens)
if words:
self.process_words(words)
process_token_list(tokens)
def process_words(self, words):
"""Process a set of 'words' in pyshyacc parlance, which includes
extraction of executed commands from $() blocks, as well as grabbing
the command name argument.
"""
words = list(words)
for word in list(words):
wtree = pyshlex.make_wordtree(word[1])
for part in wtree:
if not isinstance(part, list):
continue
if part[0] in ('`', '$('):
command = pyshlex.wordtree_as_string(part[1:-1])
self._parse_shell(command)
if word[0] in ("cmd_name", "cmd_word"):
if word in words:
words.remove(word)
usetoken = False
for word in words:
if word[0] in ("cmd_name", "cmd_word") or \
(usetoken and word[0] == "TOKEN"):
if "=" in word[1]:
usetoken = True
continue
cmd = word[1]
if cmd.startswith("$"):
self.log.debug(1, self.unhandled_template % cmd)
elif cmd == "eval":
command = " ".join(word for _, word in words[1:])
self._parse_shell(command)
else:
self.allexecs.add(cmd)
break

766
bitbake/lib/bb/command.py Normal file
View File

@@ -0,0 +1,766 @@
"""
BitBake 'Command' module
Provide an interface to interact with the bitbake server through 'commands'
"""
# Copyright (C) 2006-2007 Richard Purdie
#
# 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.
"""
The bitbake server takes 'commands' from its UI/commandline.
Commands are either synchronous or asynchronous.
Async commands return data to the client in the form of events.
Sync commands must only return data through the function return value
and must not trigger events, directly or indirectly.
Commands are queued in a CommandQueue
"""
from collections import OrderedDict, defaultdict
import bb.event
import bb.cooker
import bb.remotedata
class DataStoreConnectionHandle(object):
def __init__(self, dsindex=0):
self.dsindex = dsindex
class CommandCompleted(bb.event.Event):
pass
class CommandExit(bb.event.Event):
def __init__(self, exitcode):
bb.event.Event.__init__(self)
self.exitcode = int(exitcode)
class CommandFailed(CommandExit):
def __init__(self, message):
self.error = message
CommandExit.__init__(self, 1)
class CommandError(Exception):
pass
class Command:
"""
A queue of asynchronous commands for bitbake
"""
def __init__(self, cooker):
self.cooker = cooker
self.cmds_sync = CommandsSync()
self.cmds_async = CommandsAsync()
self.remotedatastores = bb.remotedata.RemoteDatastores(cooker)
# FIXME Add lock for this
self.currentAsyncCommand = None
def runCommand(self, commandline, ro_only = False):
command = commandline.pop(0)
if hasattr(CommandsSync, command):
# Can run synchronous commands straight away
command_method = getattr(self.cmds_sync, command)
if ro_only:
if not hasattr(command_method, 'readonly') or False == getattr(command_method, 'readonly'):
return None, "Not able to execute not readonly commands in readonly mode"
try:
if getattr(command_method, 'needconfig', False):
self.cooker.updateCacheSync()
result = command_method(self, commandline)
except CommandError as exc:
return None, exc.args[0]
except (Exception, SystemExit):
import traceback
return None, traceback.format_exc()
else:
return result, None
if self.currentAsyncCommand is not None:
return None, "Busy (%s in progress)" % self.currentAsyncCommand[0]
if command not in CommandsAsync.__dict__:
return None, "No such command"
self.currentAsyncCommand = (command, commandline)
self.cooker.configuration.server_register_idlecallback(self.cooker.runCommands, self.cooker)
return True, None
def runAsyncCommand(self):
try:
if self.cooker.state in (bb.cooker.state.error, bb.cooker.state.shutdown, bb.cooker.state.forceshutdown):
# updateCache will trigger a shutdown of the parser
# and then raise BBHandledException triggering an exit
self.cooker.updateCache()
return False
if self.currentAsyncCommand is not None:
(command, options) = self.currentAsyncCommand
commandmethod = getattr(CommandsAsync, command)
needcache = getattr( commandmethod, "needcache" )
if needcache and self.cooker.state != bb.cooker.state.running:
self.cooker.updateCache()
return True
else:
commandmethod(self.cmds_async, self, options)
return False
else:
return False
except KeyboardInterrupt as exc:
self.finishAsyncCommand("Interrupted")
return False
except SystemExit as exc:
arg = exc.args[0]
if isinstance(arg, str):
self.finishAsyncCommand(arg)
else:
self.finishAsyncCommand("Exited with %s" % arg)
return False
except Exception as exc:
import traceback
if isinstance(exc, bb.BBHandledException):
self.finishAsyncCommand("")
else:
self.finishAsyncCommand(traceback.format_exc())
return False
def finishAsyncCommand(self, msg=None, code=None):
if msg or msg == "":
bb.event.fire(CommandFailed(msg), self.cooker.data)
elif code:
bb.event.fire(CommandExit(code), self.cooker.data)
else:
bb.event.fire(CommandCompleted(), self.cooker.data)
self.currentAsyncCommand = None
self.cooker.finishcommand()
def split_mc_pn(pn):
if pn.startswith("multiconfig:"):
_, mc, pn = pn.split(":", 2)
return (mc, pn)
return ('', pn)
class CommandsSync:
"""
A class of synchronous commands
These should run quickly so as not to hurt interactive performance.
These must not influence any running synchronous command.
"""
def stateShutdown(self, command, params):
"""
Trigger cooker 'shutdown' mode
"""
command.cooker.shutdown(False)
def stateForceShutdown(self, command, params):
"""
Stop the cooker
"""
command.cooker.shutdown(True)
def getAllKeysWithFlags(self, command, params):
"""
Returns a dump of the global state. Call with
variable flags to be retrieved as params.
"""
flaglist = params[0]
return command.cooker.getAllKeysWithFlags(flaglist)
getAllKeysWithFlags.readonly = True
def getVariable(self, command, params):
"""
Read the value of a variable from data
"""
varname = params[0]
expand = True
if len(params) > 1:
expand = (params[1] == "True")
return command.cooker.data.getVar(varname, expand)
getVariable.readonly = True
def setVariable(self, command, params):
"""
Set the value of variable in data
"""
varname = params[0]
value = str(params[1])
command.cooker.extraconfigdata[varname] = value
command.cooker.data.setVar(varname, value)
def getSetVariable(self, command, params):
"""
Read the value of a variable from data and set it into the datastore
which effectively expands and locks the value.
"""
varname = params[0]
result = self.getVariable(command, params)
command.cooker.data.setVar(varname, result)
return result
def setConfig(self, command, params):
"""
Set the value of variable in configuration
"""
varname = params[0]
value = str(params[1])
setattr(command.cooker.configuration, varname, value)
def enableDataTracking(self, command, params):
"""
Enable history tracking for variables
"""
command.cooker.enableDataTracking()
def disableDataTracking(self, command, params):
"""
Disable history tracking for variables
"""
command.cooker.disableDataTracking()
def setPrePostConfFiles(self, command, params):
prefiles = params[0].split()
postfiles = params[1].split()
command.cooker.configuration.prefile = prefiles
command.cooker.configuration.postfile = postfiles
setPrePostConfFiles.needconfig = False
def getCpuCount(self, command, params):
"""
Get the CPU count on the bitbake server
"""
return bb.utils.cpu_count()
getCpuCount.readonly = True
getCpuCount.needconfig = False
def matchFile(self, command, params):
fMatch = params[0]
return command.cooker.matchFile(fMatch)
matchFile.needconfig = False
def generateNewImage(self, command, params):
image = params[0]
base_image = params[1]
package_queue = params[2]
timestamp = params[3]
description = params[4]
return command.cooker.generateNewImage(image, base_image,
package_queue, timestamp, description)
def ensureDir(self, command, params):
directory = params[0]
bb.utils.mkdirhier(directory)
ensureDir.needconfig = False
def setVarFile(self, command, params):
"""
Save a variable in a file; used for saving in a configuration file
"""
var = params[0]
val = params[1]
default_file = params[2]
op = params[3]
command.cooker.modifyConfigurationVar(var, val, default_file, op)
setVarFile.needconfig = False
def removeVarFile(self, command, params):
"""
Remove a variable declaration from a file
"""
var = params[0]
command.cooker.removeConfigurationVar(var)
removeVarFile.needconfig = False
def createConfigFile(self, command, params):
"""
Create an extra configuration file
"""
name = params[0]
command.cooker.createConfigFile(name)
createConfigFile.needconfig = False
def setEventMask(self, command, params):
handlerNum = params[0]
llevel = params[1]
debug_domains = params[2]
mask = params[3]
return bb.event.set_UIHmask(handlerNum, llevel, debug_domains, mask)
setEventMask.needconfig = False
setEventMask.readonly = True
def setFeatures(self, command, params):
"""
Set the cooker features to include the passed list of features
"""
features = params[0]
command.cooker.setFeatures(features)
setFeatures.needconfig = False
# although we change the internal state of the cooker, this is transparent since
# we always take and leave the cooker in state.initial
setFeatures.readonly = True
def updateConfig(self, command, params):
options = params[0]
environment = params[1]
cmdline = params[2]
command.cooker.updateConfigOpts(options, environment, cmdline)
updateConfig.needconfig = False
def parseConfiguration(self, command, params):
"""Instruct bitbake to parse its configuration
NOTE: it is only necessary to call this if you aren't calling any normal action
(otherwise parsing is taken care of automatically)
"""
command.cooker.parseConfiguration()
parseConfiguration.needconfig = False
def getLayerPriorities(self, command, params):
ret = []
# regex objects cannot be marshalled by xmlrpc
for collection, pattern, regex, pri in command.cooker.bbfile_config_priorities:
ret.append((collection, pattern, regex.pattern, pri))
return ret
getLayerPriorities.readonly = True
def getRecipes(self, command, params):
try:
mc = params[0]
except IndexError:
mc = ''
return list(command.cooker.recipecaches[mc].pkg_pn.items())
getRecipes.readonly = True
def getRecipeDepends(self, command, params):
try:
mc = params[0]
except IndexError:
mc = ''
return list(command.cooker.recipecaches[mc].deps.items())
getRecipeDepends.readonly = True
def getRecipeVersions(self, command, params):
try:
mc = params[0]
except IndexError:
mc = ''
return command.cooker.recipecaches[mc].pkg_pepvpr
getRecipeVersions.readonly = True
def getRuntimeDepends(self, command, params):
ret = []
try:
mc = params[0]
except IndexError:
mc = ''
rundeps = command.cooker.recipecaches[mc].rundeps
for key, value in rundeps.items():
if isinstance(value, defaultdict):
value = dict(value)
ret.append((key, value))
return ret
getRuntimeDepends.readonly = True
def getRuntimeRecommends(self, command, params):
ret = []
try:
mc = params[0]
except IndexError:
mc = ''
runrecs = command.cooker.recipecaches[mc].runrecs
for key, value in runrecs.items():
if isinstance(value, defaultdict):
value = dict(value)
ret.append((key, value))
return ret
getRuntimeRecommends.readonly = True
def getRecipeInherits(self, command, params):
try:
mc = params[0]
except IndexError:
mc = ''
return command.cooker.recipecaches[mc].inherits
getRecipeInherits.readonly = True
def getBbFilePriority(self, command, params):
try:
mc = params[0]
except IndexError:
mc = ''
return command.cooker.recipecaches[mc].bbfile_priority
getBbFilePriority.readonly = True
def getDefaultPreference(self, command, params):
try:
mc = params[0]
except IndexError:
mc = ''
return command.cooker.recipecaches[mc].pkg_dp
getDefaultPreference.readonly = True
def getSkippedRecipes(self, command, params):
# Return list sorted by reverse priority order
import bb.cache
skipdict = OrderedDict(sorted(command.cooker.skiplist.items(),
key=lambda x: (-command.cooker.collection.calc_bbfile_priority(bb.cache.virtualfn2realfn(x[0])[0]), x[0])))
return list(skipdict.items())
getSkippedRecipes.readonly = True
def getOverlayedRecipes(self, command, params):
return list(command.cooker.collection.overlayed.items())
getOverlayedRecipes.readonly = True
def getFileAppends(self, command, params):
fn = params[0]
return command.cooker.collection.get_file_appends(fn)
getFileAppends.readonly = True
def getAllAppends(self, command, params):
return command.cooker.collection.bbappends
getAllAppends.readonly = True
def findProviders(self, command, params):
return command.cooker.findProviders()
findProviders.readonly = True
def findBestProvider(self, command, params):
(mc, pn) = split_mc_pn(params[0])
return command.cooker.findBestProvider(pn, mc)
findBestProvider.readonly = True
def allProviders(self, command, params):
try:
mc = params[0]
except IndexError:
mc = ''
return list(bb.providers.allProviders(command.cooker.recipecaches[mc]).items())
allProviders.readonly = True
def getRuntimeProviders(self, command, params):
rprovide = params[0]
try:
mc = params[1]
except IndexError:
mc = ''
all_p = bb.providers.getRuntimeProviders(command.cooker.recipecaches[mc], rprovide)
if all_p:
best = bb.providers.filterProvidersRunTime(all_p, rprovide,
command.cooker.data,
command.cooker.recipecaches[mc])[0][0]
else:
best = None
return all_p, best
getRuntimeProviders.readonly = True
def dataStoreConnectorFindVar(self, command, params):
dsindex = params[0]
name = params[1]
datastore = command.remotedatastores[dsindex]
value, overridedata = datastore._findVar(name)
if value:
content = value.get('_content', None)
if isinstance(content, bb.data_smart.DataSmart):
# Value is a datastore (e.g. BB_ORIGENV) - need to handle this carefully
idx = command.remotedatastores.check_store(content, True)
return {'_content': DataStoreConnectionHandle(idx),
'_connector_origtype': 'DataStoreConnectionHandle',
'_connector_overrides': overridedata}
elif isinstance(content, set):
return {'_content': list(content),
'_connector_origtype': 'set',
'_connector_overrides': overridedata}
else:
value['_connector_overrides'] = overridedata
else:
value = {}
value['_connector_overrides'] = overridedata
return value
dataStoreConnectorFindVar.readonly = True
def dataStoreConnectorGetKeys(self, command, params):
dsindex = params[0]
datastore = command.remotedatastores[dsindex]
return list(datastore.keys())
dataStoreConnectorGetKeys.readonly = True
def dataStoreConnectorGetVarHistory(self, command, params):
dsindex = params[0]
name = params[1]
datastore = command.remotedatastores[dsindex]
return datastore.varhistory.variable(name)
dataStoreConnectorGetVarHistory.readonly = True
def dataStoreConnectorExpandPythonRef(self, command, params):
config_data_dict = params[0]
varname = params[1]
expr = params[2]
config_data = command.remotedatastores.receive_datastore(config_data_dict)
varparse = bb.data_smart.VariableParse(varname, config_data)
return varparse.python_sub(expr)
def dataStoreConnectorRelease(self, command, params):
dsindex = params[0]
if dsindex <= 0:
raise CommandError('dataStoreConnectorRelease: invalid index %d' % dsindex)
command.remotedatastores.release(dsindex)
def dataStoreConnectorSetVarFlag(self, command, params):
dsindex = params[0]
name = params[1]
flag = params[2]
value = params[3]
datastore = command.remotedatastores[dsindex]
datastore.setVarFlag(name, flag, value)
def dataStoreConnectorDelVar(self, command, params):
dsindex = params[0]
name = params[1]
datastore = command.remotedatastores[dsindex]
if len(params) > 2:
flag = params[2]
datastore.delVarFlag(name, flag)
else:
datastore.delVar(name)
def dataStoreConnectorRenameVar(self, command, params):
dsindex = params[0]
name = params[1]
newname = params[2]
datastore = command.remotedatastores[dsindex]
datastore.renameVar(name, newname)
def parseRecipeFile(self, command, params):
"""
Parse the specified recipe file (with or without bbappends)
and return a datastore object representing the environment
for the recipe.
"""
fn = params[0]
appends = params[1]
appendlist = params[2]
if len(params) > 3:
config_data_dict = params[3]
config_data = command.remotedatastores.receive_datastore(config_data_dict)
else:
config_data = None
if appends:
if appendlist is not None:
appendfiles = appendlist
else:
appendfiles = command.cooker.collection.get_file_appends(fn)
else:
appendfiles = []
# We are calling bb.cache locally here rather than on the server,
# but that's OK because it doesn't actually need anything from
# the server barring the global datastore (which we have a remote
# version of)
if config_data:
# We have to use a different function here if we're passing in a datastore
# NOTE: we took a copy above, so we don't do it here again
envdata = bb.cache.parse_recipe(config_data, fn, appendfiles)['']
else:
# Use the standard path
parser = bb.cache.NoCache(command.cooker.databuilder)
envdata = parser.loadDataFull(fn, appendfiles)
idx = command.remotedatastores.store(envdata)
return DataStoreConnectionHandle(idx)
parseRecipeFile.readonly = True
class CommandsAsync:
"""
A class of asynchronous commands
These functions communicate via generated events.
Any function that requires metadata parsing should be here.
"""
def buildFile(self, command, params):
"""
Build a single specified .bb file
"""
bfile = params[0]
task = params[1]
if len(params) > 2:
hidewarning = params[2]
else:
hidewarning = False
command.cooker.buildFile(bfile, task, hidewarning)
buildFile.needcache = False
def buildTargets(self, command, params):
"""
Build a set of targets
"""
pkgs_to_build = params[0]
task = params[1]
command.cooker.buildTargets(pkgs_to_build, task)
buildTargets.needcache = True
def generateDepTreeEvent(self, command, params):
"""
Generate an event containing the dependency information
"""
pkgs_to_build = params[0]
task = params[1]
command.cooker.generateDepTreeEvent(pkgs_to_build, task)
command.finishAsyncCommand()
generateDepTreeEvent.needcache = True
def generateDotGraph(self, command, params):
"""
Dump dependency information to disk as .dot files
"""
pkgs_to_build = params[0]
task = params[1]
command.cooker.generateDotGraphFiles(pkgs_to_build, task)
command.finishAsyncCommand()
generateDotGraph.needcache = True
def generateTargetsTree(self, command, params):
"""
Generate a tree of buildable targets.
If klass is provided ensure all recipes that inherit the class are
included in the package list.
If pkg_list provided use that list (plus any extras brought in by
klass) rather than generating a tree for all packages.
"""
klass = params[0]
pkg_list = params[1]
command.cooker.generateTargetsTree(klass, pkg_list)
command.finishAsyncCommand()
generateTargetsTree.needcache = True
def findCoreBaseFiles(self, command, params):
"""
Find certain files in COREBASE directory. i.e. Layers
"""
subdir = params[0]
filename = params[1]
command.cooker.findCoreBaseFiles(subdir, filename)
command.finishAsyncCommand()
findCoreBaseFiles.needcache = False
def findConfigFiles(self, command, params):
"""
Find config files which provide appropriate values
for the passed configuration variable. i.e. MACHINE
"""
varname = params[0]
command.cooker.findConfigFiles(varname)
command.finishAsyncCommand()
findConfigFiles.needcache = False
def findFilesMatchingInDir(self, command, params):
"""
Find implementation files matching the specified pattern
in the requested subdirectory of a BBPATH
"""
pattern = params[0]
directory = params[1]
command.cooker.findFilesMatchingInDir(pattern, directory)
command.finishAsyncCommand()
findFilesMatchingInDir.needcache = False
def findConfigFilePath(self, command, params):
"""
Find the path of the requested configuration file
"""
configfile = params[0]
command.cooker.findConfigFilePath(configfile)
command.finishAsyncCommand()
findConfigFilePath.needcache = False
def showVersions(self, command, params):
"""
Show the currently selected versions
"""
command.cooker.showVersions()
command.finishAsyncCommand()
showVersions.needcache = True
def showEnvironmentTarget(self, command, params):
"""
Print the environment of a target recipe
(needs the cache to work out which recipe to use)
"""
pkg = params[0]
command.cooker.showEnvironment(None, pkg)
command.finishAsyncCommand()
showEnvironmentTarget.needcache = True
def showEnvironment(self, command, params):
"""
Print the standard environment
or if specified the environment for a specified recipe
"""
bfile = params[0]
command.cooker.showEnvironment(bfile)
command.finishAsyncCommand()
showEnvironment.needcache = False
def parseFiles(self, command, params):
"""
Parse the .bb files
"""
command.cooker.updateCache()
command.finishAsyncCommand()
parseFiles.needcache = True
def compareRevisions(self, command, params):
"""
Parse the .bb files
"""
if bb.fetch.fetcher_compare_revisions(command.cooker.data):
command.finishAsyncCommand(code=1)
else:
command.finishAsyncCommand()
compareRevisions.needcache = True
def triggerEvent(self, command, params):
"""
Trigger a certain event
"""
event = params[0]
bb.event.fire(eval(event), command.cooker.data)
command.currentAsyncCommand = None
triggerEvent.needcache = False
def resetCooker(self, command, params):
"""
Reset the cooker to its initial state, thus forcing a reparse for
any async command that has the needcache property set to True
"""
command.cooker.reset()
command.finishAsyncCommand()
resetCooker.needcache = False
def clientComplete(self, command, params):
"""
Do the right thing when the controlling client exits
"""
command.cooker.clientComplete()
command.finishAsyncCommand()
clientComplete.needcache = False

6
bitbake/lib/bb/compat.py Normal file
View File

@@ -0,0 +1,6 @@
"""Code pulled from future python versions, here for compatibility"""
from collections import MutableMapping, KeysView, ValuesView, ItemsView, OrderedDict
from functools import total_ordering

2351
bitbake/lib/bb/cooker.py Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,381 @@
#!/usr/bin/env python
# ex:ts=4:sw=4:sts=4:et
# -*- tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*-
#
# Copyright (C) 2003, 2004 Chris Larson
# Copyright (C) 2003, 2004 Phil Blundell
# Copyright (C) 2003 - 2005 Michael 'Mickey' Lauer
# Copyright (C) 2005 Holger Hans Peter Freyther
# Copyright (C) 2005 ROAD GmbH
# Copyright (C) 2006 Richard Purdie
#
# 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 logging
import os
import re
import sys
from functools import wraps
import bb
from bb import data
import bb.parse
logger = logging.getLogger("BitBake")
parselog = logging.getLogger("BitBake.Parsing")
class ConfigParameters(object):
def __init__(self, argv=sys.argv):
self.options, targets = self.parseCommandLine(argv)
self.environment = self.parseEnvironment()
self.options.pkgs_to_build = targets or []
self.options.tracking = False
if hasattr(self.options, "show_environment") and self.options.show_environment:
self.options.tracking = True
for key, val in self.options.__dict__.items():
setattr(self, key, val)
def parseCommandLine(self, argv=sys.argv):
raise Exception("Caller must implement commandline option parsing")
def parseEnvironment(self):
return os.environ.copy()
def updateFromServer(self, server):
if not self.options.cmd:
defaulttask, error = server.runCommand(["getVariable", "BB_DEFAULT_TASK"])
if error:
raise Exception("Unable to get the value of BB_DEFAULT_TASK from the server: %s" % error)
self.options.cmd = defaulttask or "build"
_, error = server.runCommand(["setConfig", "cmd", self.options.cmd])
if error:
raise Exception("Unable to set configuration option 'cmd' on the server: %s" % error)
if not self.options.pkgs_to_build:
bbpkgs, error = server.runCommand(["getVariable", "BBTARGETS"])
if error:
raise Exception("Unable to get the value of BBTARGETS from the server: %s" % error)
if bbpkgs:
self.options.pkgs_to_build.extend(bbpkgs.split())
def updateToServer(self, server, environment):
options = {}
for o in ["abort", "tryaltconfigs", "force", "invalidate_stamp",
"verbose", "debug", "dry_run", "dump_signatures",
"debug_domains", "extra_assume_provided", "profile",
"prefile", "postfile"]:
options[o] = getattr(self.options, o)
ret, error = server.runCommand(["updateConfig", options, environment, sys.argv])
if error:
raise Exception("Unable to update the server configuration with local parameters: %s" % error)
def parseActions(self):
# Parse any commandline into actions
action = {'action':None, 'msg':None}
if self.options.show_environment:
if 'world' in self.options.pkgs_to_build:
action['msg'] = "'world' is not a valid target for --environment."
elif 'universe' in self.options.pkgs_to_build:
action['msg'] = "'universe' is not a valid target for --environment."
elif len(self.options.pkgs_to_build) > 1:
action['msg'] = "Only one target can be used with the --environment option."
elif self.options.buildfile and len(self.options.pkgs_to_build) > 0:
action['msg'] = "No target should be used with the --environment and --buildfile options."
elif len(self.options.pkgs_to_build) > 0:
action['action'] = ["showEnvironmentTarget", self.options.pkgs_to_build]
else:
action['action'] = ["showEnvironment", self.options.buildfile]
elif self.options.buildfile is not None:
action['action'] = ["buildFile", self.options.buildfile, self.options.cmd]
elif self.options.revisions_changed:
action['action'] = ["compareRevisions"]
elif self.options.show_versions:
action['action'] = ["showVersions"]
elif self.options.parse_only:
action['action'] = ["parseFiles"]
elif self.options.dot_graph:
if self.options.pkgs_to_build:
action['action'] = ["generateDotGraph", self.options.pkgs_to_build, self.options.cmd]
else:
action['msg'] = "Please specify a package name for dependency graph generation."
else:
if self.options.pkgs_to_build:
action['action'] = ["buildTargets", self.options.pkgs_to_build, self.options.cmd]
else:
#action['msg'] = "Nothing to do. Use 'bitbake world' to build everything, or run 'bitbake --help' for usage information."
action = None
self.options.initialaction = action
return action
class CookerConfiguration(object):
"""
Manages build options and configurations for one run
"""
def __init__(self):
self.debug_domains = []
self.extra_assume_provided = []
self.prefile = []
self.postfile = []
self.prefile_server = []
self.postfile_server = []
self.debug = 0
self.cmd = None
self.abort = True
self.force = False
self.profile = False
self.nosetscene = False
self.setsceneonly = False
self.invalidate_stamp = False
self.dump_signatures = []
self.dry_run = False
self.tracking = False
self.interface = []
self.writeeventlog = False
self.server_only = False
self.limited_deps = False
self.runall = None
self.env = {}
def setConfigParameters(self, parameters):
for key in self.__dict__.keys():
if key in parameters.options.__dict__:
setattr(self, key, parameters.options.__dict__[key])
self.env = parameters.environment.copy()
self.tracking = parameters.tracking
def setServerRegIdleCallback(self, srcb):
self.server_register_idlecallback = srcb
def __getstate__(self):
state = {}
for key in self.__dict__.keys():
if key == "server_register_idlecallback":
state[key] = None
else:
state[key] = getattr(self, key)
return state
def __setstate__(self,state):
for k in state:
setattr(self, k, state[k])
def catch_parse_error(func):
"""Exception handling bits for our parsing"""
@wraps(func)
def wrapped(fn, *args):
try:
return func(fn, *args)
except IOError as exc:
import traceback
parselog.critical(traceback.format_exc())
parselog.critical("Unable to parse %s: %s" % (fn, exc))
sys.exit(1)
except bb.data_smart.ExpansionError as exc:
import traceback
bbdir = os.path.dirname(__file__) + os.sep
exc_class, exc, tb = sys.exc_info()
for tb in iter(lambda: tb.tb_next, None):
# Skip frames in bitbake itself, we only want the metadata
fn, _, _, _ = traceback.extract_tb(tb, 1)[0]
if not fn.startswith(bbdir):
break
parselog.critical("Unable to parse %s" % fn, exc_info=(exc_class, exc, tb))
sys.exit(1)
except bb.parse.ParseError as exc:
parselog.critical(str(exc))
sys.exit(1)
return wrapped
@catch_parse_error
def parse_config_file(fn, data, include=True):
return bb.parse.handle(fn, data, include)
@catch_parse_error
def _inherit(bbclass, data):
bb.parse.BBHandler.inherit(bbclass, "configuration INHERITs", 0, data)
return data
def findConfigFile(configfile, data):
search = []
bbpath = data.getVar("BBPATH")
if bbpath:
for i in bbpath.split(":"):
search.append(os.path.join(i, "conf", configfile))
path = os.getcwd()
while path != "/":
search.append(os.path.join(path, "conf", configfile))
path, _ = os.path.split(path)
for i in search:
if os.path.exists(i):
return i
return None
class CookerDataBuilder(object):
def __init__(self, cookercfg, worker = False):
self.prefiles = cookercfg.prefile
self.postfiles = cookercfg.postfile
self.tracking = cookercfg.tracking
bb.utils.set_context(bb.utils.clean_context())
bb.event.set_class_handlers(bb.event.clean_class_handlers())
self.basedata = bb.data.init()
if self.tracking:
self.basedata.enableTracking()
# Keep a datastore of the initial environment variables and their
# values from when BitBake was launched to enable child processes
# to use environment variables which have been cleaned from the
# BitBake processes env
self.savedenv = bb.data.init()
for k in cookercfg.env:
self.savedenv.setVar(k, cookercfg.env[k])
filtered_keys = bb.utils.approved_variables()
bb.data.inheritFromOS(self.basedata, self.savedenv, filtered_keys)
self.basedata.setVar("BB_ORIGENV", self.savedenv)
if worker:
self.basedata.setVar("BB_WORKERCONTEXT", "1")
self.data = self.basedata
self.mcdata = {}
def parseBaseConfiguration(self):
try:
bb.parse.init_parser(self.basedata)
self.data = self.parseConfigurationFiles(self.prefiles, self.postfiles)
if self.data.getVar("BB_WORKERCONTEXT", False) is None:
bb.fetch.fetcher_init(self.data)
bb.codeparser.parser_cache_init(self.data)
bb.event.fire(bb.event.ConfigParsed(), self.data)
reparse_cnt = 0
while self.data.getVar("BB_INVALIDCONF", False) is True:
if reparse_cnt > 20:
logger.error("Configuration has been re-parsed over 20 times, "
"breaking out of the loop...")
raise Exception("Too deep config re-parse loop. Check locations where "
"BB_INVALIDCONF is being set (ConfigParsed event handlers)")
self.data.setVar("BB_INVALIDCONF", False)
self.data = self.parseConfigurationFiles(self.prefiles, self.postfiles)
reparse_cnt += 1
bb.event.fire(bb.event.ConfigParsed(), self.data)
bb.parse.init_parser(self.data)
self.data_hash = self.data.get_hash()
self.mcdata[''] = self.data
multiconfig = (self.data.getVar("BBMULTICONFIG") or "").split()
for config in multiconfig:
mcdata = self.parseConfigurationFiles(self.prefiles, self.postfiles, config)
bb.event.fire(bb.event.ConfigParsed(), mcdata)
self.mcdata[config] = mcdata
except (SyntaxError, bb.BBHandledException):
raise bb.BBHandledException
except bb.data_smart.ExpansionError as e:
logger.error(str(e))
raise bb.BBHandledException
except Exception:
logger.exception("Error parsing configuration files")
raise bb.BBHandledException
def _findLayerConf(self, data):
return findConfigFile("bblayers.conf", data)
def parseConfigurationFiles(self, prefiles, postfiles, mc = "default"):
data = bb.data.createCopy(self.basedata)
data.setVar("BB_CURRENT_MC", mc)
# Parse files for loading *before* bitbake.conf and any includes
for f in prefiles:
data = parse_config_file(f, data)
layerconf = self._findLayerConf(data)
if layerconf:
parselog.debug(2, "Found bblayers.conf (%s)", layerconf)
# By definition bblayers.conf is in conf/ of TOPDIR.
# We may have been called with cwd somewhere else so reset TOPDIR
data.setVar("TOPDIR", os.path.dirname(os.path.dirname(layerconf)))
data = parse_config_file(layerconf, data)
layers = (data.getVar('BBLAYERS') or "").split()
data = bb.data.createCopy(data)
approved = bb.utils.approved_variables()
for layer in layers:
if not os.path.isdir(layer):
parselog.critical("Layer directory '%s' does not exist! "
"Please check BBLAYERS in %s" % (layer, layerconf))
sys.exit(1)
parselog.debug(2, "Adding layer %s", layer)
if 'HOME' in approved and '~' in layer:
layer = os.path.expanduser(layer)
if layer.endswith('/'):
layer = layer.rstrip('/')
data.setVar('LAYERDIR', layer)
data.setVar('LAYERDIR_RE', re.escape(layer))
data = parse_config_file(os.path.join(layer, "conf", "layer.conf"), data)
data.expandVarref('LAYERDIR')
data.expandVarref('LAYERDIR_RE')
data.delVar('LAYERDIR_RE')
data.delVar('LAYERDIR')
if not data.getVar("BBPATH"):
msg = "The BBPATH variable is not set"
if not layerconf:
msg += (" and bitbake did not find a conf/bblayers.conf file in"
" the expected location.\nMaybe you accidentally"
" invoked bitbake from the wrong directory?")
raise SystemExit(msg)
data = parse_config_file(os.path.join("conf", "bitbake.conf"), data)
# Parse files for loading *after* bitbake.conf and any includes
for p in postfiles:
data = parse_config_file(p, data)
# Handle any INHERITs and inherit the base class
bbclasses = ["base"] + (data.getVar('INHERIT') or "").split()
for bbclass in bbclasses:
data = _inherit(bbclass, data)
# Nomally we only register event handlers at the end of parsing .bb files
# We register any handlers we've found so far here...
for var in data.getVar('__BBHANDLERS', False) or []:
handlerfn = data.getVarFlag(var, "filename", False)
if not handlerfn:
parselog.critical("Undefined event handler function '%s'" % var)
sys.exit(1)
handlerln = int(data.getVarFlag(var, "lineno", False))
bb.event.register(var, data.getVar(var, False), (data.getVarFlag(var, "eventmask") or "").split(), handlerfn, handlerln)
data.setVar('BBINCLUDED',bb.parse.get_file_depends(data))
return data

193
bitbake/lib/bb/daemonize.py Normal file
View File

@@ -0,0 +1,193 @@
"""
Python Daemonizing helper
Configurable daemon behaviors:
1.) The current working directory set to the "/" directory.
2.) The current file creation mode mask set to 0.
3.) Close all open files (1024).
4.) Redirect standard I/O streams to "/dev/null".
A failed call to fork() now raises an exception.
References:
1) Advanced Programming in the Unix Environment: W. Richard Stevens
http://www.apuebook.com/apue3e.html
2) The Linux Programming Interface: Michael Kerrisk
http://man7.org/tlpi/index.html
3) Unix Programming Frequently Asked Questions:
http://www.faqs.org/faqs/unix-faq/programmer/faq/
Modified to allow a function to be daemonized and return for
bitbake use by Richard Purdie
"""
__author__ = "Chad J. Schroeder"
__copyright__ = "Copyright (C) 2005 Chad J. Schroeder"
__version__ = "0.2"
# Standard Python modules.
import os # Miscellaneous OS interfaces.
import sys # System-specific parameters and functions.
# Default daemon parameters.
# File mode creation mask of the daemon.
# For BitBake's children, we do want to inherit the parent umask.
UMASK = None
# Default maximum for the number of available file descriptors.
MAXFD = 1024
# The standard I/O file descriptors are redirected to /dev/null by default.
if (hasattr(os, "devnull")):
REDIRECT_TO = os.devnull
else:
REDIRECT_TO = "/dev/null"
def createDaemon(function, logfile):
"""
Detach a process from the controlling terminal and run it in the
background as a daemon, returning control to the caller.
"""
try:
# Fork a child process so the parent can exit. This returns control to
# the command-line or shell. It also guarantees that the child will not
# be a process group leader, since the child receives a new process ID
# and inherits the parent's process group ID. This step is required
# to insure that the next call to os.setsid is successful.
pid = os.fork()
except OSError as e:
raise Exception("%s [%d]" % (e.strerror, e.errno))
if (pid == 0): # The first child.
# To become the session leader of this new session and the process group
# leader of the new process group, we call os.setsid(). The process is
# also guaranteed not to have a controlling terminal.
os.setsid()
# Is ignoring SIGHUP necessary?
#
# It's often suggested that the SIGHUP signal should be ignored before
# the second fork to avoid premature termination of the process. The
# reason is that when the first child terminates, all processes, e.g.
# the second child, in the orphaned group will be sent a SIGHUP.
#
# "However, as part of the session management system, there are exactly
# two cases where SIGHUP is sent on the death of a process:
#
# 1) When the process that dies is the session leader of a session that
# is attached to a terminal device, SIGHUP is sent to all processes
# in the foreground process group of that terminal device.
# 2) When the death of a process causes a process group to become
# orphaned, and one or more processes in the orphaned group are
# stopped, then SIGHUP and SIGCONT are sent to all members of the
# orphaned group." [2]
#
# The first case can be ignored since the child is guaranteed not to have
# a controlling terminal. The second case isn't so easy to dismiss.
# The process group is orphaned when the first child terminates and
# POSIX.1 requires that every STOPPED process in an orphaned process
# group be sent a SIGHUP signal followed by a SIGCONT signal. Since the
# second child is not STOPPED though, we can safely forego ignoring the
# SIGHUP signal. In any case, there are no ill-effects if it is ignored.
#
# import signal # Set handlers for asynchronous events.
# signal.signal(signal.SIGHUP, signal.SIG_IGN)
try:
# Fork a second child and exit immediately to prevent zombies. This
# causes the second child process to be orphaned, making the init
# process responsible for its cleanup. And, since the first child is
# a session leader without a controlling terminal, it's possible for
# it to acquire one by opening a terminal in the future (System V-
# based systems). This second fork guarantees that the child is no
# longer a session leader, preventing the daemon from ever acquiring
# a controlling terminal.
pid = os.fork() # Fork a second child.
except OSError as e:
raise Exception("%s [%d]" % (e.strerror, e.errno))
if (pid == 0): # The second child.
# We probably don't want the file mode creation mask inherited from
# the parent, so we give the child complete control over permissions.
if UMASK is not None:
os.umask(UMASK)
else:
# Parent (the first child) of the second child.
os._exit(0)
else:
# exit() or _exit()?
# _exit is like exit(), but it doesn't call any functions registered
# with atexit (and on_exit) or any registered signal handlers. It also
# closes any open file descriptors. Using exit() may cause all stdio
# streams to be flushed twice and any temporary files may be unexpectedly
# removed. It's therefore recommended that child branches of a fork()
# and the parent branch(es) of a daemon use _exit().
return
# Close all open file descriptors. This prevents the child from keeping
# open any file descriptors inherited from the parent. There is a variety
# of methods to accomplish this task. Three are listed below.
#
# Try the system configuration variable, SC_OPEN_MAX, to obtain the maximum
# number of open file descriptors to close. If it doesn't exist, use
# the default value (configurable).
#
# try:
# maxfd = os.sysconf("SC_OPEN_MAX")
# except (AttributeError, ValueError):
# maxfd = MAXFD
#
# OR
#
# if (os.sysconf_names.has_key("SC_OPEN_MAX")):
# maxfd = os.sysconf("SC_OPEN_MAX")
# else:
# maxfd = MAXFD
#
# OR
#
# Use the getrlimit method to retrieve the maximum file descriptor number
# that can be opened by this process. If there is no limit on the
# resource, use the default value.
#
import resource # Resource usage information.
maxfd = resource.getrlimit(resource.RLIMIT_NOFILE)[1]
if (maxfd == resource.RLIM_INFINITY):
maxfd = MAXFD
# Iterate through and close all file descriptors.
# for fd in range(0, maxfd):
# try:
# os.close(fd)
# except OSError: # ERROR, fd wasn't open to begin with (ignored)
# pass
# Redirect the standard I/O file descriptors to the specified file. Since
# the daemon has no controlling terminal, most daemons redirect stdin,
# stdout, and stderr to /dev/null. This is done to prevent side-effects
# from reads and writes to the standard I/O file descriptors.
# This call to open is guaranteed to return the lowest file descriptor,
# which will be 0 (stdin), since it was closed above.
# os.open(REDIRECT_TO, os.O_RDWR) # standard input (0)
# Duplicate standard input to standard output and standard error.
# os.dup2(0, 1) # standard output (1)
# os.dup2(0, 2) # standard error (2)
si = open('/dev/null', 'r')
so = open(logfile, 'w')
se = so
# Replace those fds with our own
os.dup2(si.fileno(), sys.stdin.fileno())
os.dup2(so.fileno(), sys.stdout.fileno())
os.dup2(se.fileno(), sys.stderr.fileno())
function()
os._exit(0)

403
bitbake/lib/bb/data.py Normal file
View File

@@ -0,0 +1,403 @@
# ex:ts=4:sw=4:sts=4:et
# -*- tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*-
"""
BitBake 'Data' implementations
Functions for interacting with the data structure used by the
BitBake build tools.
The expandKeys and update_data are the most expensive
operations. At night the cookie monster came by and
suggested 'give me cookies on setting the variables and
things will work out'. Taking this suggestion into account
applying the skills from the not yet passed 'Entwurf und
Analyse von Algorithmen' lecture and the cookie
monster seems to be right. We will track setVar more carefully
to have faster update_data and expandKeys operations.
This is a trade-off between speed and memory again but
the speed is more critical here.
"""
# Copyright (C) 2003, 2004 Chris Larson
# Copyright (C) 2005 Holger Hans Peter Freyther
#
# 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.
#
# Based on functions from the base bb module, Copyright 2003 Holger Schurig
import sys, os, re
if sys.argv[0][-5:] == "pydoc":
path = os.path.dirname(os.path.dirname(sys.argv[1]))
else:
path = os.path.dirname(os.path.dirname(sys.argv[0]))
sys.path.insert(0, path)
from itertools import groupby
from bb import data_smart
from bb import codeparser
import bb
logger = data_smart.logger
_dict_type = data_smart.DataSmart
def init():
"""Return a new object representing the Bitbake data"""
return _dict_type()
def init_db(parent = None):
"""Return a new object representing the Bitbake data,
optionally based on an existing object"""
if parent is not None:
return parent.createCopy()
else:
return _dict_type()
def createCopy(source):
"""Link the source set to the destination
If one does not find the value in the destination set,
search will go on to the source set to get the value.
Value from source are copy-on-write. i.e. any try to
modify one of them will end up putting the modified value
in the destination set.
"""
return source.createCopy()
def initVar(var, d):
"""Non-destructive var init for data structure"""
d.initVar(var)
def keys(d):
"""Return a list of keys in d"""
return d.keys()
__expand_var_regexp__ = re.compile(r"\${[^{}]+}")
__expand_python_regexp__ = re.compile(r"\${@.+?}")
def expand(s, d, varname = None):
"""Variable expansion using the data store"""
return d.expand(s, varname)
def expandKeys(alterdata, readdata = None):
if readdata == None:
readdata = alterdata
todolist = {}
for key in alterdata:
if not '${' in key:
continue
ekey = expand(key, readdata)
if key == ekey:
continue
todolist[key] = ekey
# These two for loops are split for performance to maximise the
# usefulness of the expand cache
for key in sorted(todolist):
ekey = todolist[key]
newval = alterdata.getVar(ekey, False)
if newval is not None:
val = alterdata.getVar(key, False)
if val is not None:
bb.warn("Variable key %s (%s) replaces original key %s (%s)." % (key, val, ekey, newval))
alterdata.renameVar(key, ekey)
def inheritFromOS(d, savedenv, permitted):
"""Inherit variables from the initial environment."""
exportlist = bb.utils.preserved_envvars_exported()
for s in savedenv.keys():
if s in permitted:
try:
d.setVar(s, savedenv.getVar(s), op = 'from env')
if s in exportlist:
d.setVarFlag(s, "export", True, op = 'auto env export')
except TypeError:
pass
def emit_var(var, o=sys.__stdout__, d = init(), all=False):
"""Emit a variable to be sourced by a shell."""
func = d.getVarFlag(var, "func", False)
if d.getVarFlag(var, 'python', False) and func:
return False
export = d.getVarFlag(var, "export", False)
unexport = d.getVarFlag(var, "unexport", False)
if not all and not export and not unexport and not func:
return False
try:
if all:
oval = d.getVar(var, False)
val = d.getVar(var)
except (KeyboardInterrupt, bb.build.FuncFailed):
raise
except Exception as exc:
o.write('# expansion of %s threw %s: %s\n' % (var, exc.__class__.__name__, str(exc)))
return False
if all:
d.varhistory.emit(var, oval, val, o, d)
if (var.find("-") != -1 or var.find(".") != -1 or var.find('{') != -1 or var.find('}') != -1 or var.find('+') != -1) and not all:
return False
varExpanded = d.expand(var)
if unexport:
o.write('unset %s\n' % varExpanded)
return False
if val is None:
return False
val = str(val)
if varExpanded.startswith("BASH_FUNC_"):
varExpanded = varExpanded[10:-2]
val = val[3:] # Strip off "() "
o.write("%s() %s\n" % (varExpanded, val))
o.write("export -f %s\n" % (varExpanded))
return True
if func:
# NOTE: should probably check for unbalanced {} within the var
val = val.rstrip('\n')
o.write("%s() {\n%s\n}\n" % (varExpanded, val))
return 1
if export:
o.write('export ')
# if we're going to output this within doublequotes,
# to a shell, we need to escape the quotes in the var
alter = re.sub('"', '\\"', val)
alter = re.sub('\n', ' \\\n', alter)
alter = re.sub('\\$', '\\\\$', alter)
o.write('%s="%s"\n' % (varExpanded, alter))
return False
def emit_env(o=sys.__stdout__, d = init(), all=False):
"""Emits all items in the data store in a format such that it can be sourced by a shell."""
isfunc = lambda key: bool(d.getVarFlag(key, "func", False))
keys = sorted((key for key in d.keys() if not key.startswith("__")), key=isfunc)
grouped = groupby(keys, isfunc)
for isfunc, keys in grouped:
for key in sorted(keys):
emit_var(key, o, d, all and not isfunc) and o.write('\n')
def exported_keys(d):
return (key for key in d.keys() if not key.startswith('__') and
d.getVarFlag(key, 'export', False) and
not d.getVarFlag(key, 'unexport', False))
def exported_vars(d):
k = list(exported_keys(d))
for key in k:
try:
value = d.getVar(key)
except Exception as err:
bb.warn("%s: Unable to export ${%s}: %s" % (d.getVar("FILE"), key, err))
continue
if value is not None:
yield key, str(value)
def emit_func(func, o=sys.__stdout__, d = init()):
"""Emits all items in the data store in a format such that it can be sourced by a shell."""
keys = (key for key in d.keys() if not key.startswith("__") and not d.getVarFlag(key, "func", False))
for key in sorted(keys):
emit_var(key, o, d, False)
o.write('\n')
emit_var(func, o, d, False) and o.write('\n')
newdeps = bb.codeparser.ShellParser(func, logger).parse_shell(d.getVar(func))
newdeps |= set((d.getVarFlag(func, "vardeps") or "").split())
seen = set()
while newdeps:
deps = newdeps
seen |= deps
newdeps = set()
for dep in deps:
if d.getVarFlag(dep, "func", False) and not d.getVarFlag(dep, "python", False):
emit_var(dep, o, d, False) and o.write('\n')
newdeps |= bb.codeparser.ShellParser(dep, logger).parse_shell(d.getVar(dep))
newdeps |= set((d.getVarFlag(dep, "vardeps") or "").split())
newdeps -= seen
_functionfmt = """
def {function}(d):
{body}"""
def emit_func_python(func, o=sys.__stdout__, d = init()):
"""Emits all items in the data store in a format such that it can be sourced by a shell."""
def write_func(func, o, call = False):
body = d.getVar(func, False)
if not body.startswith("def"):
body = _functionfmt.format(function=func, body=body)
o.write(body.strip() + "\n\n")
if call:
o.write(func + "(d)" + "\n\n")
write_func(func, o, True)
pp = bb.codeparser.PythonParser(func, logger)
pp.parse_python(d.getVar(func, False))
newdeps = pp.execs
newdeps |= set((d.getVarFlag(func, "vardeps") or "").split())
seen = set()
while newdeps:
deps = newdeps
seen |= deps
newdeps = set()
for dep in deps:
if d.getVarFlag(dep, "func", False) and d.getVarFlag(dep, "python", False):
write_func(dep, o)
pp = bb.codeparser.PythonParser(dep, logger)
pp.parse_python(d.getVar(dep, False))
newdeps |= pp.execs
newdeps |= set((d.getVarFlag(dep, "vardeps") or "").split())
newdeps -= seen
def update_data(d):
"""Performs final steps upon the datastore, including application of overrides"""
d.finalize(parent = True)
def build_dependencies(key, keys, shelldeps, varflagsexcl, d):
deps = set()
try:
if key[-1] == ']':
vf = key[:-1].split('[')
value = d.getVarFlag(vf[0], vf[1], False)
parser = d.expandWithRefs(value, key)
deps |= parser.references
deps = deps | (keys & parser.execs)
return deps, value
varflags = d.getVarFlags(key, ["vardeps", "vardepvalue", "vardepsexclude", "exports", "postfuncs", "prefuncs", "lineno", "filename"]) or {}
vardeps = varflags.get("vardeps")
value = d.getVar(key, False)
def handle_contains(value, contains, d):
newvalue = ""
for k in sorted(contains):
l = (d.getVar(k) or "").split()
for item in sorted(contains[k]):
for word in item.split():
if not word in l:
newvalue += "\n%s{%s} = Unset" % (k, item)
break
else:
newvalue += "\n%s{%s} = Set" % (k, item)
if not newvalue:
return value
if not value:
return newvalue
return value + newvalue
if "vardepvalue" in varflags:
value = varflags.get("vardepvalue")
elif varflags.get("func"):
if varflags.get("python"):
parser = bb.codeparser.PythonParser(key, logger)
if value and "\t" in value:
logger.warning("Variable %s contains tabs, please remove these (%s)" % (key, d.getVar("FILE")))
parser.parse_python(value, filename=varflags.get("filename"), lineno=varflags.get("lineno"))
deps = deps | parser.references
deps = deps | (keys & parser.execs)
value = handle_contains(value, parser.contains, d)
else:
parsedvar = d.expandWithRefs(value, key)
parser = bb.codeparser.ShellParser(key, logger)
parser.parse_shell(parsedvar.value)
deps = deps | shelldeps
deps = deps | parsedvar.references
deps = deps | (keys & parser.execs) | (keys & parsedvar.execs)
value = handle_contains(value, parsedvar.contains, d)
if vardeps is None:
parser.log.flush()
if "prefuncs" in varflags:
deps = deps | set(varflags["prefuncs"].split())
if "postfuncs" in varflags:
deps = deps | set(varflags["postfuncs"].split())
if "exports" in varflags:
deps = deps | set(varflags["exports"].split())
else:
parser = d.expandWithRefs(value, key)
deps |= parser.references
deps = deps | (keys & parser.execs)
value = handle_contains(value, parser.contains, d)
if "vardepvalueexclude" in varflags:
exclude = varflags.get("vardepvalueexclude")
for excl in exclude.split('|'):
if excl:
value = value.replace(excl, '')
# Add varflags, assuming an exclusion list is set
if varflagsexcl:
varfdeps = []
for f in varflags:
if f not in varflagsexcl:
varfdeps.append('%s[%s]' % (key, f))
if varfdeps:
deps |= set(varfdeps)
deps |= set((vardeps or "").split())
deps -= set(varflags.get("vardepsexclude", "").split())
except bb.parse.SkipRecipe:
raise
except Exception as e:
bb.warn("Exception during build_dependencies for %s" % key)
raise
return deps, value
#bb.note("Variable %s references %s and calls %s" % (key, str(deps), str(execs)))
#d.setVarFlag(key, "vardeps", deps)
def generate_dependencies(d):
keys = set(key for key in d if not key.startswith("__"))
shelldeps = set(key for key in d.getVar("__exportlist", False) if d.getVarFlag(key, "export", False) and not d.getVarFlag(key, "unexport", False))
varflagsexcl = d.getVar('BB_SIGNATURE_EXCLUDE_FLAGS')
deps = {}
values = {}
tasklist = d.getVar('__BBTASKS', False) or []
for task in tasklist:
deps[task], values[task] = build_dependencies(task, keys, shelldeps, varflagsexcl, d)
newdeps = deps[task]
seen = set()
while newdeps:
nextdeps = newdeps
seen |= nextdeps
newdeps = set()
for dep in nextdeps:
if dep not in deps:
deps[dep], values[dep] = build_dependencies(dep, keys, shelldeps, varflagsexcl, d)
newdeps |= deps[dep]
newdeps -= seen
#print "For %s: %s" % (task, str(deps[task]))
return tasklist, deps, values
def inherits_class(klass, d):
val = d.getVar('__inherit_cache', False) or []
needle = os.path.join('classes', '%s.bbclass' % klass)
for v in val:
if v.endswith(needle):
return True
return False

1037
bitbake/lib/bb/data_smart.py Normal file

File diff suppressed because it is too large Load Diff

786
bitbake/lib/bb/event.py Normal file
View File

@@ -0,0 +1,786 @@
# ex:ts=4:sw=4:sts=4:et
# -*- tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*-
"""
BitBake 'Event' implementation
Classes and functions for manipulating 'events' in the
BitBake build tools.
"""
# Copyright (C) 2003, 2004 Chris Larson
#
# 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, sys
import warnings
import pickle
import logging
import atexit
import traceback
import ast
import threading
import bb.utils
import bb.compat
import bb.exceptions
# This is the pid for which we should generate the event. This is set when
# the runqueue forks off.
worker_pid = 0
worker_fire = None
logger = logging.getLogger('BitBake.Event')
class Event(object):
"""Base class for events"""
def __init__(self):
self.pid = worker_pid
class HeartbeatEvent(Event):
"""Triggered at regular time intervals of 10 seconds. Other events can fire much more often
(runQueueTaskStarted when there are many short tasks) or not at all for long periods
of time (again runQueueTaskStarted, when there is just one long-running task), so this
event is more suitable for doing some task-independent work occassionally."""
def __init__(self, time):
Event.__init__(self)
self.time = time
Registered = 10
AlreadyRegistered = 14
def get_class_handlers():
return _handlers
def set_class_handlers(h):
global _handlers
_handlers = h
def clean_class_handlers():
return bb.compat.OrderedDict()
# Internal
_handlers = clean_class_handlers()
_ui_handlers = {}
_ui_logfilters = {}
_ui_handler_seq = 0
_event_handler_map = {}
_catchall_handlers = {}
_eventfilter = None
_uiready = False
_thread_lock = threading.Lock()
_thread_lock_enabled = False
if hasattr(__builtins__, '__setitem__'):
builtins = __builtins__
else:
builtins = __builtins__.__dict__
def enable_threadlock():
global _thread_lock_enabled
_thread_lock_enabled = True
def disable_threadlock():
global _thread_lock_enabled
_thread_lock_enabled = False
def execute_handler(name, handler, event, d):
event.data = d
addedd = False
if 'd' not in builtins:
builtins['d'] = d
addedd = True
try:
ret = handler(event)
except (bb.parse.SkipRecipe, bb.BBHandledException):
raise
except Exception:
etype, value, tb = sys.exc_info()
logger.error("Execution of event handler '%s' failed" % name,
exc_info=(etype, value, tb.tb_next))
raise
except SystemExit as exc:
if exc.code != 0:
logger.error("Execution of event handler '%s' failed" % name)
raise
finally:
del event.data
if addedd:
del builtins['d']
def fire_class_handlers(event, d):
if isinstance(event, logging.LogRecord):
return
eid = str(event.__class__)[8:-2]
evt_hmap = _event_handler_map.get(eid, {})
for name, handler in list(_handlers.items()):
if name in _catchall_handlers or name in evt_hmap:
if _eventfilter:
if not _eventfilter(name, handler, event, d):
continue
execute_handler(name, handler, event, d)
ui_queue = []
@atexit.register
def print_ui_queue():
"""If we're exiting before a UI has been spawned, display any queued
LogRecords to the console."""
logger = logging.getLogger("BitBake")
if not _uiready:
from bb.msg import BBLogFormatter
stdout = logging.StreamHandler(sys.stdout)
stderr = logging.StreamHandler(sys.stderr)
formatter = BBLogFormatter("%(levelname)s: %(message)s")
stdout.setFormatter(formatter)
stderr.setFormatter(formatter)
# First check to see if we have any proper messages
msgprint = False
for event in ui_queue[:]:
if isinstance(event, logging.LogRecord):
if event.levelno > logging.DEBUG:
if event.levelno >= logging.WARNING:
logger.addHandler(stderr)
else:
logger.addHandler(stdout)
logger.handle(event)
msgprint = True
if msgprint:
return
# Nope, so just print all of the messages we have (including debug messages)
logger.addHandler(stdout)
for event in ui_queue[:]:
if isinstance(event, logging.LogRecord):
logger.handle(event)
def fire_ui_handlers(event, d):
global _thread_lock
global _thread_lock_enabled
if not _uiready:
# No UI handlers registered yet, queue up the messages
ui_queue.append(event)
return
if _thread_lock_enabled:
_thread_lock.acquire()
errors = []
for h in _ui_handlers:
#print "Sending event %s" % event
try:
if not _ui_logfilters[h].filter(event):
continue
# We use pickle here since it better handles object instances
# which xmlrpc's marshaller does not. Events *must* be serializable
# by pickle.
if hasattr(_ui_handlers[h].event, "sendpickle"):
_ui_handlers[h].event.sendpickle((pickle.dumps(event)))
else:
_ui_handlers[h].event.send(event)
except:
errors.append(h)
for h in errors:
del _ui_handlers[h]
if _thread_lock_enabled:
_thread_lock.release()
def fire(event, d):
"""Fire off an Event"""
# We can fire class handlers in the worker process context and this is
# desired so they get the task based datastore.
# UI handlers need to be fired in the server context so we defer this. They
# don't have a datastore so the datastore context isn't a problem.
fire_class_handlers(event, d)
if worker_fire:
worker_fire(event, d)
else:
fire_ui_handlers(event, d)
def fire_from_worker(event, d):
fire_ui_handlers(event, d)
noop = lambda _: None
def register(name, handler, mask=None, filename=None, lineno=None):
"""Register an Event handler"""
# already registered
if name in _handlers:
return AlreadyRegistered
if handler is not None:
# handle string containing python code
if isinstance(handler, str):
tmp = "def %s(e):\n%s" % (name, handler)
try:
code = bb.methodpool.compile_cache(tmp)
if not code:
if filename is None:
filename = "%s(e)" % name
code = compile(tmp, filename, "exec", ast.PyCF_ONLY_AST)
if lineno is not None:
ast.increment_lineno(code, lineno-1)
code = compile(code, filename, "exec")
bb.methodpool.compile_cache_add(tmp, code)
except SyntaxError:
logger.error("Unable to register event handler '%s':\n%s", name,
''.join(traceback.format_exc(limit=0)))
_handlers[name] = noop
return
env = {}
bb.utils.better_exec(code, env)
func = bb.utils.better_eval(name, env)
_handlers[name] = func
else:
_handlers[name] = handler
if not mask or '*' in mask:
_catchall_handlers[name] = True
else:
for m in mask:
if _event_handler_map.get(m, None) is None:
_event_handler_map[m] = {}
_event_handler_map[m][name] = True
return Registered
def remove(name, handler):
"""Remove an Event handler"""
_handlers.pop(name)
def get_handlers():
return _handlers
def set_handlers(handlers):
global _handlers
_handlers = handlers
def set_eventfilter(func):
global _eventfilter
_eventfilter = func
def register_UIHhandler(handler, mainui=False):
if mainui:
global _uiready
_uiready = True
bb.event._ui_handler_seq = bb.event._ui_handler_seq + 1
_ui_handlers[_ui_handler_seq] = handler
level, debug_domains = bb.msg.constructLogOptions()
_ui_logfilters[_ui_handler_seq] = UIEventFilter(level, debug_domains)
return _ui_handler_seq
def unregister_UIHhandler(handlerNum):
if handlerNum in _ui_handlers:
del _ui_handlers[handlerNum]
return
# Class to allow filtering of events and specific filtering of LogRecords *before* we put them over the IPC
class UIEventFilter(object):
def __init__(self, level, debug_domains):
self.update(None, level, debug_domains)
def update(self, eventmask, level, debug_domains):
self.eventmask = eventmask
self.stdlevel = level
self.debug_domains = debug_domains
def filter(self, event):
if isinstance(event, logging.LogRecord):
if event.levelno >= self.stdlevel:
return True
if event.name in self.debug_domains and event.levelno >= self.debug_domains[event.name]:
return True
return False
eid = str(event.__class__)[8:-2]
if self.eventmask and eid not in self.eventmask:
return False
return True
def set_UIHmask(handlerNum, level, debug_domains, mask):
if not handlerNum in _ui_handlers:
return False
if '*' in mask:
_ui_logfilters[handlerNum].update(None, level, debug_domains)
else:
_ui_logfilters[handlerNum].update(mask, level, debug_domains)
return True
def getName(e):
"""Returns the name of a class or class instance"""
if getattr(e, "__name__", None) == None:
return e.__class__.__name__
else:
return e.__name__
class OperationStarted(Event):
"""An operation has begun"""
def __init__(self, msg = "Operation Started"):
Event.__init__(self)
self.msg = msg
class OperationCompleted(Event):
"""An operation has completed"""
def __init__(self, total, msg = "Operation Completed"):
Event.__init__(self)
self.total = total
self.msg = msg
class OperationProgress(Event):
"""An operation is in progress"""
def __init__(self, current, total, msg = "Operation in Progress"):
Event.__init__(self)
self.current = current
self.total = total
self.msg = msg + ": %s/%s" % (current, total);
class ConfigParsed(Event):
"""Configuration Parsing Complete"""
class RecipeEvent(Event):
def __init__(self, fn):
self.fn = fn
Event.__init__(self)
class RecipePreFinalise(RecipeEvent):
""" Recipe Parsing Complete but not yet finialised"""
class RecipeTaskPreProcess(RecipeEvent):
"""
Recipe Tasks about to be finalised
The list of tasks should be final at this point and handlers
are only able to change interdependencies
"""
def __init__(self, fn, tasklist):
self.fn = fn
self.tasklist = tasklist
Event.__init__(self)
class RecipeParsed(RecipeEvent):
""" Recipe Parsing Complete """
class StampUpdate(Event):
"""Trigger for any adjustment of the stamp files to happen"""
def __init__(self, targets, stampfns):
self._targets = targets
self._stampfns = stampfns
Event.__init__(self)
def getStampPrefix(self):
return self._stampfns
def getTargets(self):
return self._targets
stampPrefix = property(getStampPrefix)
targets = property(getTargets)
class BuildBase(Event):
"""Base class for bitbake build events"""
def __init__(self, n, p, failures = 0):
self._name = n
self._pkgs = p
Event.__init__(self)
self._failures = failures
def getPkgs(self):
return self._pkgs
def setPkgs(self, pkgs):
self._pkgs = pkgs
def getName(self):
return self._name
def setName(self, name):
self._name = name
def getCfg(self):
return self.data
def setCfg(self, cfg):
self.data = cfg
def getFailures(self):
"""
Return the number of failed packages
"""
return self._failures
pkgs = property(getPkgs, setPkgs, None, "pkgs property")
name = property(getName, setName, None, "name property")
cfg = property(getCfg, setCfg, None, "cfg property")
class BuildInit(BuildBase):
"""buildFile or buildTargets was invoked"""
def __init__(self, p=[]):
name = None
BuildBase.__init__(self, name, p)
class BuildStarted(BuildBase, OperationStarted):
"""Event when builds start"""
def __init__(self, n, p, failures = 0):
OperationStarted.__init__(self, "Building Started")
BuildBase.__init__(self, n, p, failures)
class BuildCompleted(BuildBase, OperationCompleted):
"""Event when builds have completed"""
def __init__(self, total, n, p, failures=0, interrupted=0):
if not failures:
OperationCompleted.__init__(self, total, "Building Succeeded")
else:
OperationCompleted.__init__(self, total, "Building Failed")
self._interrupted = interrupted
BuildBase.__init__(self, n, p, failures)
class DiskFull(Event):
"""Disk full case build aborted"""
def __init__(self, dev, type, freespace, mountpoint):
Event.__init__(self)
self._dev = dev
self._type = type
self._free = freespace
self._mountpoint = mountpoint
class DiskUsageSample:
def __init__(self, available_bytes, free_bytes, total_bytes):
# Number of bytes available to non-root processes.
self.available_bytes = available_bytes
# Number of bytes available to root processes.
self.free_bytes = free_bytes
# Total capacity of the volume.
self.total_bytes = total_bytes
class MonitorDiskEvent(Event):
"""If BB_DISKMON_DIRS is set, then this event gets triggered each time disk space is checked.
Provides information about devices that are getting monitored."""
def __init__(self, disk_usage):
Event.__init__(self)
# hash of device root path -> DiskUsageSample
self.disk_usage = disk_usage
class NoProvider(Event):
"""No Provider for an Event"""
def __init__(self, item, runtime=False, dependees=None, reasons=None, close_matches=None):
Event.__init__(self)
self._item = item
self._runtime = runtime
self._dependees = dependees
self._reasons = reasons
self._close_matches = close_matches
def getItem(self):
return self._item
def isRuntime(self):
return self._runtime
class MultipleProviders(Event):
"""Multiple Providers"""
def __init__(self, item, candidates, runtime = False):
Event.__init__(self)
self._item = item
self._candidates = candidates
self._is_runtime = runtime
def isRuntime(self):
"""
Is this a runtime issue?
"""
return self._is_runtime
def getItem(self):
"""
The name for the to be build item
"""
return self._item
def getCandidates(self):
"""
Get the possible Candidates for a PROVIDER.
"""
return self._candidates
class ParseStarted(OperationStarted):
"""Recipe parsing for the runqueue has begun"""
def __init__(self, total):
OperationStarted.__init__(self, "Recipe parsing Started")
self.total = total
class ParseCompleted(OperationCompleted):
"""Recipe parsing for the runqueue has completed"""
def __init__(self, cached, parsed, skipped, masked, virtuals, errors, total):
OperationCompleted.__init__(self, total, "Recipe parsing Completed")
self.cached = cached
self.parsed = parsed
self.skipped = skipped
self.virtuals = virtuals
self.masked = masked
self.errors = errors
self.sofar = cached + parsed
class ParseProgress(OperationProgress):
"""Recipe parsing progress"""
def __init__(self, current, total):
OperationProgress.__init__(self, current, total, "Recipe parsing")
class CacheLoadStarted(OperationStarted):
"""Loading of the dependency cache has begun"""
def __init__(self, total):
OperationStarted.__init__(self, "Loading cache Started")
self.total = total
class CacheLoadProgress(OperationProgress):
"""Cache loading progress"""
def __init__(self, current, total):
OperationProgress.__init__(self, current, total, "Loading cache")
class CacheLoadCompleted(OperationCompleted):
"""Cache loading is complete"""
def __init__(self, total, num_entries):
OperationCompleted.__init__(self, total, "Loading cache Completed")
self.num_entries = num_entries
class TreeDataPreparationStarted(OperationStarted):
"""Tree data preparation started"""
def __init__(self):
OperationStarted.__init__(self, "Preparing tree data Started")
class TreeDataPreparationProgress(OperationProgress):
"""Tree data preparation is in progress"""
def __init__(self, current, total):
OperationProgress.__init__(self, current, total, "Preparing tree data")
class TreeDataPreparationCompleted(OperationCompleted):
"""Tree data preparation completed"""
def __init__(self, total):
OperationCompleted.__init__(self, total, "Preparing tree data Completed")
class DepTreeGenerated(Event):
"""
Event when a dependency tree has been generated
"""
def __init__(self, depgraph):
Event.__init__(self)
self._depgraph = depgraph
class TargetsTreeGenerated(Event):
"""
Event when a set of buildable targets has been generated
"""
def __init__(self, model):
Event.__init__(self)
self._model = model
class ReachableStamps(Event):
"""
An event listing all stamps reachable after parsing
which the metadata may use to clean up stale data
"""
def __init__(self, stamps):
Event.__init__(self)
self.stamps = stamps
class FilesMatchingFound(Event):
"""
Event when a list of files matching the supplied pattern has
been generated
"""
def __init__(self, pattern, matches):
Event.__init__(self)
self._pattern = pattern
self._matches = matches
class CoreBaseFilesFound(Event):
"""
Event when a list of appropriate config files has been generated
"""
def __init__(self, paths):
Event.__init__(self)
self._paths = paths
class ConfigFilesFound(Event):
"""
Event when a list of appropriate config files has been generated
"""
def __init__(self, variable, values):
Event.__init__(self)
self._variable = variable
self._values = values
class ConfigFilePathFound(Event):
"""
Event when a path for a config file has been found
"""
def __init__(self, path):
Event.__init__(self)
self._path = path
class MsgBase(Event):
"""Base class for messages"""
def __init__(self, msg):
self._message = msg
Event.__init__(self)
class MsgDebug(MsgBase):
"""Debug Message"""
class MsgNote(MsgBase):
"""Note Message"""
class MsgWarn(MsgBase):
"""Warning Message"""
class MsgError(MsgBase):
"""Error Message"""
class MsgFatal(MsgBase):
"""Fatal Message"""
class MsgPlain(MsgBase):
"""General output"""
class LogExecTTY(Event):
"""Send event containing program to spawn on tty of the logger"""
def __init__(self, msg, prog, sleep_delay, retries):
Event.__init__(self)
self.msg = msg
self.prog = prog
self.sleep_delay = sleep_delay
self.retries = retries
class LogHandler(logging.Handler):
"""Dispatch logging messages as bitbake events"""
def emit(self, record):
if record.exc_info:
etype, value, tb = record.exc_info
if hasattr(tb, 'tb_next'):
tb = list(bb.exceptions.extract_traceback(tb, context=3))
# Need to turn the value into something the logging system can pickle
record.bb_exc_info = (etype, value, tb)
record.bb_exc_formatted = bb.exceptions.format_exception(etype, value, tb, limit=5)
value = str(value)
record.exc_info = None
fire(record, None)
def filter(self, record):
record.taskpid = worker_pid
return True
class RequestPackageInfo(Event):
"""
Event to request package information
"""
class PackageInfo(Event):
"""
Package information for GUI
"""
def __init__(self, pkginfolist):
Event.__init__(self)
self._pkginfolist = pkginfolist
class MetadataEvent(Event):
"""
Generic event that target for OE-Core classes
to report information during asynchrous execution
"""
def __init__(self, eventtype, eventdata):
Event.__init__(self)
self.type = eventtype
self._localdata = eventdata
class ProcessStarted(Event):
"""
Generic process started event (usually part of the initial startup)
where further progress events will be delivered
"""
def __init__(self, processname, total):
Event.__init__(self)
self.processname = processname
self.total = total
class ProcessProgress(Event):
"""
Generic process progress event (usually part of the initial startup)
"""
def __init__(self, processname, progress):
Event.__init__(self)
self.processname = processname
self.progress = progress
class ProcessFinished(Event):
"""
Generic process finished event (usually part of the initial startup)
"""
def __init__(self, processname):
Event.__init__(self)
self.processname = processname
class SanityCheck(Event):
"""
Event to run sanity checks, either raise errors or generate events as return status.
"""
def __init__(self, generateevents = True):
Event.__init__(self)
self.generateevents = generateevents
class SanityCheckPassed(Event):
"""
Event to indicate sanity check has passed
"""
class SanityCheckFailed(Event):
"""
Event to indicate sanity check has failed
"""
def __init__(self, msg, network_error=False):
Event.__init__(self)
self._msg = msg
self._network_error = network_error
class NetworkTest(Event):
"""
Event to run network connectivity tests, either raise errors or generate events as return status.
"""
def __init__(self, generateevents = True):
Event.__init__(self)
self.generateevents = generateevents
class NetworkTestPassed(Event):
"""
Event to indicate network test has passed
"""
class NetworkTestFailed(Event):
"""
Event to indicate network test has failed
"""

View File

@@ -0,0 +1,91 @@
import inspect
import traceback
import bb.namedtuple_with_abc
from collections import namedtuple
class TracebackEntry(namedtuple.abc):
"""Pickleable representation of a traceback entry"""
_fields = 'filename lineno function args code_context index'
_header = ' File "{0.filename}", line {0.lineno}, in {0.function}{0.args}'
def format(self, formatter=None):
if not self.code_context:
return self._header.format(self) + '\n'
formatted = [self._header.format(self) + ':\n']
for lineindex, line in enumerate(self.code_context):
if formatter:
line = formatter(line)
if lineindex == self.index:
formatted.append(' >%s' % line)
else:
formatted.append(' %s' % line)
return formatted
def __str__(self):
return ''.join(self.format())
def _get_frame_args(frame):
"""Get the formatted arguments and class (if available) for a frame"""
arginfo = inspect.getargvalues(frame)
try:
if not arginfo.args:
return '', None
# There have been reports from the field of python 2.6 which doesn't
# return a namedtuple here but simply a tuple so fallback gracefully if
# args isn't present.
except AttributeError:
return '', None
firstarg = arginfo.args[0]
if firstarg == 'self':
self = arginfo.locals['self']
cls = self.__class__.__name__
arginfo.args.pop(0)
del arginfo.locals['self']
else:
cls = None
formatted = inspect.formatargvalues(*arginfo)
return formatted, cls
def extract_traceback(tb, context=1):
frames = inspect.getinnerframes(tb, context)
for frame, filename, lineno, function, code_context, index in frames:
formatted_args, cls = _get_frame_args(frame)
if cls:
function = '%s.%s' % (cls, function)
yield TracebackEntry(filename, lineno, function, formatted_args,
code_context, index)
def format_extracted(extracted, formatter=None, limit=None):
if limit:
extracted = extracted[-limit:]
formatted = []
for tracebackinfo in extracted:
formatted.extend(tracebackinfo.format(formatter))
return formatted
def format_exception(etype, value, tb, context=1, limit=None, formatter=None):
formatted = ['Traceback (most recent call last):\n']
if hasattr(tb, 'tb_next'):
tb = extract_traceback(tb, context)
formatted.extend(format_extracted(tb, formatter, limit))
formatted.extend(traceback.format_exception_only(etype, value))
return formatted
def to_string(exc):
if isinstance(exc, SystemExit):
if not isinstance(exc.code, str):
return 'Exited with "%d"' % exc.code
return str(exc)

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,139 @@
"""
BitBake 'Fetch' implementation for bzr.
"""
# Copyright (C) 2007 Ross Burton
# Copyright (C) 2007 Richard Purdie
#
# Classes for obtaining upstream sources for the
# BitBake build tools.
# Copyright (C) 2003, 2004 Chris Larson
#
# 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 logging
import bb
from bb.fetch2 import FetchMethod
from bb.fetch2 import FetchError
from bb.fetch2 import runfetchcmd
from bb.fetch2 import logger
class Bzr(FetchMethod):
def supports(self, ud, d):
return ud.type in ['bzr']
def urldata_init(self, ud, d):
"""
init bzr specific variable within url data
"""
# Create paths to bzr checkouts
relpath = self._strip_leading_slashes(ud.path)
ud.pkgdir = os.path.join(d.expand('${BZRDIR}'), ud.host, relpath)
ud.setup_revisions(d)
if not ud.revision:
ud.revision = self.latest_revision(ud, d)
ud.localfile = d.expand('bzr_%s_%s_%s.tar.gz' % (ud.host, ud.path.replace('/', '.'), ud.revision))
def _buildbzrcommand(self, ud, d, command):
"""
Build up an bzr commandline based on ud
command is "fetch", "update", "revno"
"""
basecmd = d.expand('${FETCHCMD_bzr}')
proto = ud.parm.get('protocol', 'http')
bzrroot = ud.host + ud.path
options = []
if command == "revno":
bzrcmd = "%s revno %s %s://%s" % (basecmd, " ".join(options), proto, bzrroot)
else:
if ud.revision:
options.append("-r %s" % ud.revision)
if command == "fetch":
bzrcmd = "%s branch %s %s://%s" % (basecmd, " ".join(options), proto, bzrroot)
elif command == "update":
bzrcmd = "%s pull %s --overwrite" % (basecmd, " ".join(options))
else:
raise FetchError("Invalid bzr command %s" % command, ud.url)
return bzrcmd
def download(self, ud, d):
"""Fetch url"""
if os.access(os.path.join(ud.pkgdir, os.path.basename(ud.pkgdir), '.bzr'), os.R_OK):
bzrcmd = self._buildbzrcommand(ud, d, "update")
logger.debug(1, "BZR Update %s", ud.url)
bb.fetch2.check_network_access(d, bzrcmd, ud.url)
runfetchcmd(bzrcmd, d, workdir=os.path.join(ud.pkgdir, os.path.basename(ud.path)))
else:
bb.utils.remove(os.path.join(ud.pkgdir, os.path.basename(ud.pkgdir)), True)
bzrcmd = self._buildbzrcommand(ud, d, "fetch")
bb.fetch2.check_network_access(d, bzrcmd, ud.url)
logger.debug(1, "BZR Checkout %s", ud.url)
bb.utils.mkdirhier(ud.pkgdir)
logger.debug(1, "Running %s", bzrcmd)
runfetchcmd(bzrcmd, d, workdir=ud.pkgdir)
scmdata = ud.parm.get("scmdata", "")
if scmdata == "keep":
tar_flags = ""
else:
tar_flags = "--exclude='.bzr' --exclude='.bzrtags'"
# tar them up to a defined filename
runfetchcmd("tar %s -czf %s %s" % (tar_flags, ud.localpath, os.path.basename(ud.pkgdir)),
d, cleanup=[ud.localpath], workdir=ud.pkgdir)
def supports_srcrev(self):
return True
def _revision_key(self, ud, d, name):
"""
Return a unique key for the url
"""
return "bzr:" + ud.pkgdir
def _latest_revision(self, ud, d, name):
"""
Return the latest upstream revision number
"""
logger.debug(2, "BZR fetcher hitting network for %s", ud.url)
bb.fetch2.check_network_access(d, self._buildbzrcommand(ud, d, "revno"), ud.url)
output = runfetchcmd(self._buildbzrcommand(ud, d, "revno"), d, True)
return output.strip()
def sortable_revision(self, ud, d, name):
"""
Return a sortable revision number which in our case is the revision number
"""
return False, self._build_revision(ud, d)
def _build_revision(self, ud, d):
return ud.revision

View File

@@ -0,0 +1,260 @@
# ex:ts=4:sw=4:sts=4:et
# -*- tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*-
"""
BitBake 'Fetch' clearcase implementation
The clearcase fetcher is used to retrieve files from a ClearCase repository.
Usage in the recipe:
SRC_URI = "ccrc://cc.example.org/ccrc;vob=/example_vob;module=/example_module"
SRCREV = "EXAMPLE_CLEARCASE_TAG"
PV = "${@d.getVar("SRCREV", False).replace("/", "+")}"
The fetcher uses the rcleartool or cleartool remote client, depending on which one is available.
Supported SRC_URI options are:
- vob
(required) The name of the clearcase VOB (with prepending "/")
- module
The module in the selected VOB (with prepending "/")
The module and vob parameters are combined to create
the following load rule in the view config spec:
load <vob><module>
- proto
http or https
Related variables:
CCASE_CUSTOM_CONFIG_SPEC
Write a config spec to this variable in your recipe to use it instead
of the default config spec generated by this fetcher.
Please note that the SRCREV loses its functionality if you specify
this variable. SRCREV is still used to label the archive after a fetch,
but it doesn't define what's fetched.
User credentials:
cleartool:
The login of cleartool is handled by the system. No special steps needed.
rcleartool:
In order to use rcleartool with authenticated users an `rcleartool login` is
necessary before using the fetcher.
"""
# Copyright (C) 2014 Siemens AG
#
# 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 shutil
import bb
from bb.fetch2 import FetchMethod
from bb.fetch2 import FetchError
from bb.fetch2 import runfetchcmd
from bb.fetch2 import logger
from distutils import spawn
class ClearCase(FetchMethod):
"""Class to fetch urls via 'clearcase'"""
def init(self, d):
pass
def supports(self, ud, d):
"""
Check to see if a given url can be fetched with Clearcase.
"""
return ud.type in ['ccrc']
def debug(self, msg):
logger.debug(1, "ClearCase: %s", msg)
def urldata_init(self, ud, d):
"""
init ClearCase specific variable within url data
"""
ud.proto = "https"
if 'protocol' in ud.parm:
ud.proto = ud.parm['protocol']
if not ud.proto in ('http', 'https'):
raise fetch2.ParameterError("Invalid protocol type", ud.url)
ud.vob = ''
if 'vob' in ud.parm:
ud.vob = ud.parm['vob']
else:
msg = ud.url+": vob must be defined so the fetcher knows what to get."
raise MissingParameterError('vob', msg)
if 'module' in ud.parm:
ud.module = ud.parm['module']
else:
ud.module = ""
ud.basecmd = d.getVar("FETCHCMD_ccrc") or spawn.find_executable("cleartool") or spawn.find_executable("rcleartool")
if d.getVar("SRCREV") == "INVALID":
raise FetchError("Set a valid SRCREV for the clearcase fetcher in your recipe, e.g. SRCREV = \"/main/LATEST\" or any other label of your choice.")
ud.label = d.getVar("SRCREV", False)
ud.customspec = d.getVar("CCASE_CUSTOM_CONFIG_SPEC")
ud.server = "%s://%s%s" % (ud.proto, ud.host, ud.path)
ud.identifier = "clearcase-%s%s-%s" % ( ud.vob.replace("/", ""),
ud.module.replace("/", "."),
ud.label.replace("/", "."))
ud.viewname = "%s-view%s" % (ud.identifier, d.getVar("DATETIME", d, True))
ud.csname = "%s-config-spec" % (ud.identifier)
ud.ccasedir = os.path.join(d.getVar("DL_DIR"), ud.type)
ud.viewdir = os.path.join(ud.ccasedir, ud.viewname)
ud.configspecfile = os.path.join(ud.ccasedir, ud.csname)
ud.localfile = "%s.tar.gz" % (ud.identifier)
self.debug("host = %s" % ud.host)
self.debug("path = %s" % ud.path)
self.debug("server = %s" % ud.server)
self.debug("proto = %s" % ud.proto)
self.debug("type = %s" % ud.type)
self.debug("vob = %s" % ud.vob)
self.debug("module = %s" % ud.module)
self.debug("basecmd = %s" % ud.basecmd)
self.debug("label = %s" % ud.label)
self.debug("ccasedir = %s" % ud.ccasedir)
self.debug("viewdir = %s" % ud.viewdir)
self.debug("viewname = %s" % ud.viewname)
self.debug("configspecfile = %s" % ud.configspecfile)
self.debug("localfile = %s" % ud.localfile)
ud.localfile = os.path.join(d.getVar("DL_DIR"), ud.localfile)
def _build_ccase_command(self, ud, command):
"""
Build up a commandline based on ud
command is: mkview, setcs, rmview
"""
options = []
if "rcleartool" in ud.basecmd:
options.append("-server %s" % ud.server)
basecmd = "%s %s" % (ud.basecmd, command)
if command is 'mkview':
if not "rcleartool" in ud.basecmd:
# Cleartool needs a -snapshot view
options.append("-snapshot")
options.append("-tag %s" % ud.viewname)
options.append(ud.viewdir)
elif command is 'rmview':
options.append("-force")
options.append("%s" % ud.viewdir)
elif command is 'setcs':
options.append("-overwrite")
options.append(ud.configspecfile)
else:
raise FetchError("Invalid ccase command %s" % command)
ccasecmd = "%s %s" % (basecmd, " ".join(options))
self.debug("ccasecmd = %s" % ccasecmd)
return ccasecmd
def _write_configspec(self, ud, d):
"""
Create config spec file (ud.configspecfile) for ccase view
"""
config_spec = ""
custom_config_spec = d.getVar("CCASE_CUSTOM_CONFIG_SPEC", d)
if custom_config_spec is not None:
for line in custom_config_spec.split("\\n"):
config_spec += line+"\n"
bb.warn("A custom config spec has been set, SRCREV is only relevant for the tarball name.")
else:
config_spec += "element * CHECKEDOUT\n"
config_spec += "element * %s\n" % ud.label
config_spec += "load %s%s\n" % (ud.vob, ud.module)
logger.info("Using config spec: \n%s" % config_spec)
with open(ud.configspecfile, 'w') as f:
f.write(config_spec)
def _remove_view(self, ud, d):
if os.path.exists(ud.viewdir):
cmd = self._build_ccase_command(ud, 'rmview');
logger.info("cleaning up [VOB=%s label=%s view=%s]", ud.vob, ud.label, ud.viewname)
bb.fetch2.check_network_access(d, cmd, ud.url)
output = runfetchcmd(cmd, d, workdir=ud.ccasedir)
logger.info("rmview output: %s", output)
def need_update(self, ud, d):
if ("LATEST" in ud.label) or (ud.customspec and "LATEST" in ud.customspec):
ud.identifier += "-%s" % d.getVar("DATETIME",d, True)
return True
if os.path.exists(ud.localpath):
return False
return True
def supports_srcrev(self):
return True
def sortable_revision(self, ud, d, name):
return False, ud.identifier
def download(self, ud, d):
"""Fetch url"""
# Make a fresh view
bb.utils.mkdirhier(ud.ccasedir)
self._write_configspec(ud, d)
cmd = self._build_ccase_command(ud, 'mkview')
logger.info("creating view [VOB=%s label=%s view=%s]", ud.vob, ud.label, ud.viewname)
bb.fetch2.check_network_access(d, cmd, ud.url)
try:
runfetchcmd(cmd, d)
except FetchError as e:
if "CRCLI2008E" in e.msg:
raise FetchError("%s\n%s\n" % (e.msg, "Call `rcleartool login` in your console to authenticate to the clearcase server before running bitbake."))
else:
raise e
# Set configspec: Setting the configspec effectively fetches the files as defined in the configspec
cmd = self._build_ccase_command(ud, 'setcs');
logger.info("fetching data [VOB=%s label=%s view=%s]", ud.vob, ud.label, ud.viewname)
bb.fetch2.check_network_access(d, cmd, ud.url)
output = runfetchcmd(cmd, d, workdir=ud.viewdir)
logger.info("%s", output)
# Copy the configspec to the viewdir so we have it in our source tarball later
shutil.copyfile(ud.configspecfile, os.path.join(ud.viewdir, ud.csname))
# Clean clearcase meta-data before tar
runfetchcmd('tar -czf "%s" .' % (ud.localpath), d, cleanup = [ud.localpath])
# Clean up so we can create a new view next time
self.clean(ud, d);
def clean(self, ud, d):
self._remove_view(ud, d)
bb.utils.remove(ud.configspecfile)

View File

@@ -0,0 +1,172 @@
# ex:ts=4:sw=4:sts=4:et
# -*- tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*-
"""
BitBake 'Fetch' implementations
Classes for obtaining upstream sources for the
BitBake build tools.
"""
# Copyright (C) 2003, 2004 Chris Larson
#
# 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.
#
#Based on functions from the base bb module, Copyright 2003 Holger Schurig
#
import os
import logging
import bb
from bb.fetch2 import FetchMethod, FetchError, MissingParameterError, logger
from bb.fetch2 import runfetchcmd
class Cvs(FetchMethod):
"""
Class to fetch a module or modules from cvs repositories
"""
def supports(self, ud, d):
"""
Check to see if a given url can be fetched with cvs.
"""
return ud.type in ['cvs']
def urldata_init(self, ud, d):
if not "module" in ud.parm:
raise MissingParameterError("module", ud.url)
ud.module = ud.parm["module"]
ud.tag = ud.parm.get('tag', "")
# Override the default date in certain cases
if 'date' in ud.parm:
ud.date = ud.parm['date']
elif ud.tag:
ud.date = ""
norecurse = ''
if 'norecurse' in ud.parm:
norecurse = '_norecurse'
fullpath = ''
if 'fullpath' in ud.parm:
fullpath = '_fullpath'
ud.localfile = d.expand('%s_%s_%s_%s%s%s.tar.gz' % (ud.module.replace('/', '.'), ud.host, ud.tag, ud.date, norecurse, fullpath))
def need_update(self, ud, d):
if (ud.date == "now"):
return True
if not os.path.exists(ud.localpath):
return True
return False
def download(self, ud, d):
method = ud.parm.get('method', 'pserver')
localdir = ud.parm.get('localdir', ud.module)
cvs_port = ud.parm.get('port', '')
cvs_rsh = None
if method == "ext":
if "rsh" in ud.parm:
cvs_rsh = ud.parm["rsh"]
if method == "dir":
cvsroot = ud.path
else:
cvsroot = ":" + method
cvsproxyhost = d.getVar('CVS_PROXY_HOST')
if cvsproxyhost:
cvsroot += ";proxy=" + cvsproxyhost
cvsproxyport = d.getVar('CVS_PROXY_PORT')
if cvsproxyport:
cvsroot += ";proxyport=" + cvsproxyport
cvsroot += ":" + ud.user
if ud.pswd:
cvsroot += ":" + ud.pswd
cvsroot += "@" + ud.host + ":" + cvs_port + ud.path
options = []
if 'norecurse' in ud.parm:
options.append("-l")
if ud.date:
# treat YYYYMMDDHHMM specially for CVS
if len(ud.date) == 12:
options.append("-D \"%s %s:%s UTC\"" % (ud.date[0:8], ud.date[8:10], ud.date[10:12]))
else:
options.append("-D \"%s UTC\"" % ud.date)
if ud.tag:
options.append("-r %s" % ud.tag)
cvsbasecmd = d.getVar("FETCHCMD_cvs")
cvscmd = cvsbasecmd + " '-d" + cvsroot + "' co " + " ".join(options) + " " + ud.module
cvsupdatecmd = cvsbasecmd + " '-d" + cvsroot + "' update -d -P " + " ".join(options)
if cvs_rsh:
cvscmd = "CVS_RSH=\"%s\" %s" % (cvs_rsh, cvscmd)
cvsupdatecmd = "CVS_RSH=\"%s\" %s" % (cvs_rsh, cvsupdatecmd)
# create module directory
logger.debug(2, "Fetch: checking for module directory")
pkg = d.getVar('PN')
pkgdir = os.path.join(d.getVar('CVSDIR'), pkg)
moddir = os.path.join(pkgdir, localdir)
workdir = None
if os.access(os.path.join(moddir, 'CVS'), os.R_OK):
logger.info("Update " + ud.url)
bb.fetch2.check_network_access(d, cvsupdatecmd, ud.url)
# update sources there
workdir = moddir
cmd = cvsupdatecmd
else:
logger.info("Fetch " + ud.url)
# check out sources there
bb.utils.mkdirhier(pkgdir)
workdir = pkgdir
logger.debug(1, "Running %s", cvscmd)
bb.fetch2.check_network_access(d, cvscmd, ud.url)
cmd = cvscmd
runfetchcmd(cmd, d, cleanup=[moddir], workdir=workdir)
if not os.access(moddir, os.R_OK):
raise FetchError("Directory %s was not readable despite sucessful fetch?!" % moddir, ud.url)
scmdata = ud.parm.get("scmdata", "")
if scmdata == "keep":
tar_flags = ""
else:
tar_flags = "--exclude='CVS'"
# tar them up to a defined filename
workdir = None
if 'fullpath' in ud.parm:
workdir = pkgdir
cmd = "tar %s -czf %s %s" % (tar_flags, ud.localpath, localdir)
else:
workdir = os.path.dirname(os.path.realpath(moddir))
cmd = "tar %s -czf %s %s" % (tar_flags, ud.localpath, os.path.basename(moddir))
runfetchcmd(cmd, d, cleanup=[ud.localpath], workdir=workdir)
def clean(self, ud, d):
""" Clean CVS Files and tarballs """
pkg = d.getVar('PN')
pkgdir = os.path.join(d.getVar("CVSDIR"), pkg)
bb.utils.remove(pkgdir, True)
bb.utils.remove(ud.localpath)

View File

@@ -0,0 +1,500 @@
# ex:ts=4:sw=4:sts=4:et
# -*- tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*-
"""
BitBake 'Fetch' git implementation
git fetcher support the SRC_URI with format of:
SRC_URI = "git://some.host/somepath;OptionA=xxx;OptionB=xxx;..."
Supported SRC_URI options are:
- branch
The git branch to retrieve from. The default is "master"
This option also supports multiple branch fetching, with branches
separated by commas. In multiple branches case, the name option
must have the same number of names to match the branches, which is
used to specify the SRC_REV for the branch
e.g:
SRC_URI="git://some.host/somepath;branch=branchX,branchY;name=nameX,nameY"
SRCREV_nameX = "xxxxxxxxxxxxxxxxxxxx"
SRCREV_nameY = "YYYYYYYYYYYYYYYYYYYY"
- tag
The git tag to retrieve. The default is "master"
- protocol
The method to use to access the repository. Common options are "git",
"http", "https", "file", "ssh" and "rsync". The default is "git".
- rebaseable
rebaseable indicates that the upstream git repo may rebase in the future,
and current revision may disappear from upstream repo. This option will
remind fetcher to preserve local cache carefully for future use.
The default value is "0", set rebaseable=1 for rebaseable git repo.
- nocheckout
Don't checkout source code when unpacking. set this option for the recipe
who has its own routine to checkout code.
The default is "0", set nocheckout=1 if needed.
- bareclone
Create a bare clone of the source code and don't checkout the source code
when unpacking. Set this option for the recipe who has its own routine to
checkout code and tracking branch requirements.
The default is "0", set bareclone=1 if needed.
- nobranch
Don't check the SHA validation for branch. set this option for the recipe
referring to commit which is valid in tag instead of branch.
The default is "0", set nobranch=1 if needed.
- usehead
For local git:// urls to use the current branch HEAD as the revision for use with
AUTOREV. Implies nobranch.
"""
#Copyright (C) 2005 Richard Purdie
#
# 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 errno
import os
import re
import bb
import errno
import bb.progress
from bb.fetch2 import FetchMethod
from bb.fetch2 import runfetchcmd
from bb.fetch2 import logger
class GitProgressHandler(bb.progress.LineFilterProgressHandler):
"""Extract progress information from git output"""
def __init__(self, d):
self._buffer = ''
self._count = 0
super(GitProgressHandler, self).__init__(d)
# Send an initial progress event so the bar gets shown
self._fire_progress(-1)
def write(self, string):
self._buffer += string
stages = ['Counting objects', 'Compressing objects', 'Receiving objects', 'Resolving deltas']
stage_weights = [0.2, 0.05, 0.5, 0.25]
stagenum = 0
for i, stage in reversed(list(enumerate(stages))):
if stage in self._buffer:
stagenum = i
self._buffer = ''
break
self._status = stages[stagenum]
percs = re.findall(r'(\d+)%', string)
if percs:
progress = int(round((int(percs[-1]) * stage_weights[stagenum]) + (sum(stage_weights[:stagenum]) * 100)))
rates = re.findall(r'([\d.]+ [a-zA-Z]*/s+)', string)
if rates:
rate = rates[-1]
else:
rate = None
self.update(progress, rate)
else:
if stagenum == 0:
percs = re.findall(r': (\d+)', string)
if percs:
count = int(percs[-1])
if count > self._count:
self._count = count
self._fire_progress(-count)
super(GitProgressHandler, self).write(string)
class Git(FetchMethod):
"""Class to fetch a module or modules from git repositories"""
def init(self, d):
pass
def supports(self, ud, d):
"""
Check to see if a given url can be fetched with git.
"""
return ud.type in ['git']
def supports_checksum(self, urldata):
return False
def urldata_init(self, ud, d):
"""
init git specific variable within url data
so that the git method like latest_revision() can work
"""
if 'protocol' in ud.parm:
ud.proto = ud.parm['protocol']
elif not ud.host:
ud.proto = 'file'
else:
ud.proto = "git"
if not ud.proto in ('git', 'file', 'ssh', 'http', 'https', 'rsync'):
raise bb.fetch2.ParameterError("Invalid protocol type", ud.url)
ud.nocheckout = ud.parm.get("nocheckout","0") == "1"
ud.rebaseable = ud.parm.get("rebaseable","0") == "1"
ud.nobranch = ud.parm.get("nobranch","0") == "1"
# usehead implies nobranch
ud.usehead = ud.parm.get("usehead","0") == "1"
if ud.usehead:
if ud.proto != "file":
raise bb.fetch2.ParameterError("The usehead option is only for use with local ('protocol=file') git repositories", ud.url)
ud.nobranch = 1
# bareclone implies nocheckout
ud.bareclone = ud.parm.get("bareclone","0") == "1"
if ud.bareclone:
ud.nocheckout = 1
ud.unresolvedrev = {}
branches = ud.parm.get("branch", "master").split(',')
if len(branches) != len(ud.names):
raise bb.fetch2.ParameterError("The number of name and branch parameters is not balanced", ud.url)
ud.branches = {}
for pos, name in enumerate(ud.names):
branch = branches[pos]
ud.branches[name] = branch
ud.unresolvedrev[name] = branch
if ud.usehead:
ud.unresolvedrev['default'] = 'HEAD'
ud.basecmd = d.getVar("FETCHCMD_git") or "git -c core.fsyncobjectfiles=0"
ud.write_tarballs = ((d.getVar("BB_GENERATE_MIRROR_TARBALLS") or "0") != "0") or ud.rebaseable
ud.setup_revisions(d)
for name in ud.names:
# Ensure anything that doesn't look like a sha256 checksum/revision is translated into one
if not ud.revisions[name] or len(ud.revisions[name]) != 40 or (False in [c in "abcdef0123456789" for c in ud.revisions[name]]):
if ud.revisions[name]:
ud.unresolvedrev[name] = ud.revisions[name]
ud.revisions[name] = self.latest_revision(ud, d, name)
gitsrcname = '%s%s' % (ud.host.replace(':', '.'), ud.path.replace('/', '.').replace('*', '.'))
if gitsrcname.startswith('.'):
gitsrcname = gitsrcname[1:]
# for rebaseable git repo, it is necessary to keep mirror tar ball
# per revision, so that even the revision disappears from the
# upstream repo in the future, the mirror will remain intact and still
# contains the revision
if ud.rebaseable:
for name in ud.names:
gitsrcname = gitsrcname + '_' + ud.revisions[name]
ud.mirrortarball = 'git2_%s.tar.gz' % gitsrcname
ud.fullmirror = os.path.join(d.getVar("DL_DIR"), ud.mirrortarball)
gitdir = d.getVar("GITDIR") or (d.getVar("DL_DIR") + "/git2/")
ud.clonedir = os.path.join(gitdir, gitsrcname)
ud.localfile = ud.clonedir
def localpath(self, ud, d):
return ud.clonedir
def need_update(self, ud, d):
if not os.path.exists(ud.clonedir):
return True
for name in ud.names:
if not self._contains_ref(ud, d, name, ud.clonedir):
return True
if ud.write_tarballs and not os.path.exists(ud.fullmirror):
return True
return False
def try_premirror(self, ud, d):
# If we don't do this, updating an existing checkout with only premirrors
# is not possible
if d.getVar("BB_FETCH_PREMIRRORONLY") is not None:
return True
if os.path.exists(ud.clonedir):
return False
return True
def download(self, ud, d):
"""Fetch url"""
# If the checkout doesn't exist and the mirror tarball does, extract it
if not os.path.exists(ud.clonedir) and os.path.exists(ud.fullmirror):
bb.utils.mkdirhier(ud.clonedir)
runfetchcmd("tar -xzf %s" % ud.fullmirror, d, workdir=ud.clonedir)
repourl = self._get_repo_url(ud)
# If the repo still doesn't exist, fallback to cloning it
if not os.path.exists(ud.clonedir):
# We do this since git will use a "-l" option automatically for local urls where possible
if repourl.startswith("file://"):
repourl = repourl[7:]
clone_cmd = "LANG=C %s clone --bare --mirror %s %s --progress" % (ud.basecmd, repourl, ud.clonedir)
if ud.proto.lower() != 'file':
bb.fetch2.check_network_access(d, clone_cmd, ud.url)
progresshandler = GitProgressHandler(d)
runfetchcmd(clone_cmd, d, log=progresshandler)
# Update the checkout if needed
needupdate = False
for name in ud.names:
if not self._contains_ref(ud, d, name, ud.clonedir):
needupdate = True
if needupdate:
try:
runfetchcmd("%s remote rm origin" % ud.basecmd, d, workdir=ud.clonedir)
except bb.fetch2.FetchError:
logger.debug(1, "No Origin")
runfetchcmd("%s remote add --mirror=fetch origin %s" % (ud.basecmd, repourl), d, workdir=ud.clonedir)
fetch_cmd = "LANG=C %s fetch -f --prune --progress %s refs/*:refs/*" % (ud.basecmd, repourl)
if ud.proto.lower() != 'file':
bb.fetch2.check_network_access(d, fetch_cmd, ud.url)
progresshandler = GitProgressHandler(d)
runfetchcmd(fetch_cmd, d, log=progresshandler, workdir=ud.clonedir)
runfetchcmd("%s prune-packed" % ud.basecmd, d, workdir=ud.clonedir)
runfetchcmd("%s pack-redundant --all | xargs -r rm" % ud.basecmd, d, workdir=ud.clonedir)
try:
os.unlink(ud.fullmirror)
except OSError as exc:
if exc.errno != errno.ENOENT:
raise
for name in ud.names:
if not self._contains_ref(ud, d, name, ud.clonedir):
raise bb.fetch2.FetchError("Unable to find revision %s in branch %s even from upstream" % (ud.revisions[name], ud.branches[name]))
def build_mirror_data(self, ud, d):
# Generate a mirror tarball if needed
if ud.write_tarballs and not os.path.exists(ud.fullmirror):
# it's possible that this symlink points to read-only filesystem with PREMIRROR
if os.path.islink(ud.fullmirror):
os.unlink(ud.fullmirror)
logger.info("Creating tarball of git repository")
runfetchcmd("tar -czf %s ." % ud.fullmirror, d, workdir=ud.clonedir)
runfetchcmd("touch %s.done" % ud.fullmirror, d)
def unpack(self, ud, destdir, d):
""" unpack the downloaded src to destdir"""
subdir = ud.parm.get("subpath", "")
if subdir != "":
readpathspec = ":%s" % subdir
def_destsuffix = "%s/" % os.path.basename(subdir.rstrip('/'))
else:
readpathspec = ""
def_destsuffix = "git/"
destsuffix = ud.parm.get("destsuffix", def_destsuffix)
destdir = ud.destdir = os.path.join(destdir, destsuffix)
if os.path.exists(destdir):
bb.utils.prunedir(destdir)
cloneflags = "-s -n"
if ud.bareclone:
cloneflags += " --mirror"
runfetchcmd("%s clone %s %s/ %s" % (ud.basecmd, cloneflags, ud.clonedir, destdir), d)
repourl = self._get_repo_url(ud)
runfetchcmd("%s remote set-url origin %s" % (ud.basecmd, repourl), d, workdir=destdir)
if not ud.nocheckout:
if subdir != "":
runfetchcmd("%s read-tree %s%s" % (ud.basecmd, ud.revisions[ud.names[0]], readpathspec), d,
workdir=destdir)
runfetchcmd("%s checkout-index -q -f -a" % ud.basecmd, d, workdir=destdir)
elif not ud.nobranch:
branchname = ud.branches[ud.names[0]]
runfetchcmd("%s checkout -B %s %s" % (ud.basecmd, branchname, \
ud.revisions[ud.names[0]]), d, workdir=destdir)
runfetchcmd("%s branch %s --set-upstream-to origin/%s" % (ud.basecmd, branchname, \
branchname), d, workdir=destdir)
else:
runfetchcmd("%s checkout %s" % (ud.basecmd, ud.revisions[ud.names[0]]), d, workdir=destdir)
return True
def clean(self, ud, d):
""" clean the git directory """
bb.utils.remove(ud.localpath, True)
bb.utils.remove(ud.fullmirror)
bb.utils.remove(ud.fullmirror + ".done")
def supports_srcrev(self):
return True
def _contains_ref(self, ud, d, name, wd):
cmd = ""
if ud.nobranch:
cmd = "%s log --pretty=oneline -n 1 %s -- 2> /dev/null | wc -l" % (
ud.basecmd, ud.revisions[name])
else:
cmd = "%s branch --contains %s --list %s 2> /dev/null | wc -l" % (
ud.basecmd, ud.revisions[name], ud.branches[name])
try:
output = runfetchcmd(cmd, d, quiet=True, workdir=wd)
except bb.fetch2.FetchError:
return False
if len(output.split()) > 1:
raise bb.fetch2.FetchError("The command '%s' gave output with more then 1 line unexpectedly, output: '%s'" % (cmd, output))
return output.split()[0] != "0"
def _get_repo_url(self, ud):
"""
Return the repository URL
"""
if ud.user:
username = ud.user + '@'
else:
username = ""
return "%s://%s%s%s" % (ud.proto, username, ud.host, ud.path)
def _revision_key(self, ud, d, name):
"""
Return a unique key for the url
"""
return "git:" + ud.host + ud.path.replace('/', '.') + ud.unresolvedrev[name]
def _lsremote(self, ud, d, search):
"""
Run git ls-remote with the specified search string
"""
# Prevent recursion e.g. in OE if SRCPV is in PV, PV is in WORKDIR,
# and WORKDIR is in PATH (as a result of RSS), our call to
# runfetchcmd() exports PATH so this function will get called again (!)
# In this scenario the return call of the function isn't actually
# important - WORKDIR isn't needed in PATH to call git ls-remote
# anyway.
if d.getVar('_BB_GIT_IN_LSREMOTE', False):
return ''
d.setVar('_BB_GIT_IN_LSREMOTE', '1')
try:
repourl = self._get_repo_url(ud)
cmd = "%s ls-remote %s %s" % \
(ud.basecmd, repourl, search)
if ud.proto.lower() != 'file':
bb.fetch2.check_network_access(d, cmd, repourl)
output = runfetchcmd(cmd, d, True)
if not output:
raise bb.fetch2.FetchError("The command %s gave empty output unexpectedly" % cmd, ud.url)
finally:
d.delVar('_BB_GIT_IN_LSREMOTE')
return output
def _latest_revision(self, ud, d, name):
"""
Compute the HEAD revision for the url
"""
output = self._lsremote(ud, d, "")
# Tags of the form ^{} may not work, need to fallback to other form
if ud.unresolvedrev[name][:5] == "refs/" or ud.usehead:
head = ud.unresolvedrev[name]
tag = ud.unresolvedrev[name]
else:
head = "refs/heads/%s" % ud.unresolvedrev[name]
tag = "refs/tags/%s" % ud.unresolvedrev[name]
for s in [head, tag + "^{}", tag]:
for l in output.strip().split('\n'):
sha1, ref = l.split()
if s == ref:
return sha1
raise bb.fetch2.FetchError("Unable to resolve '%s' in upstream git repository in git ls-remote output for %s" % \
(ud.unresolvedrev[name], ud.host+ud.path))
def latest_versionstring(self, ud, d):
"""
Compute the latest release name like "x.y.x" in "x.y.x+gitHASH"
by searching through the tags output of ls-remote, comparing
versions and returning the highest match.
"""
pupver = ('', '')
tagregex = re.compile(d.getVar('UPSTREAM_CHECK_GITTAGREGEX') or "(?P<pver>([0-9][\.|_]?)+)")
try:
output = self._lsremote(ud, d, "refs/tags/*")
except bb.fetch2.FetchError or bb.fetch2.NetworkAccess:
return pupver
verstring = ""
revision = ""
for line in output.split("\n"):
if not line:
break
tag_head = line.split("/")[-1]
# Ignore non-released branches
m = re.search("(alpha|beta|rc|final)+", tag_head)
if m:
continue
# search for version in the line
tag = tagregex.search(tag_head)
if tag == None:
continue
tag = tag.group('pver')
tag = tag.replace("_", ".")
if verstring and bb.utils.vercmp(("0", tag, ""), ("0", verstring, "")) < 0:
continue
verstring = tag
revision = line.split()[0]
pupver = (verstring, revision)
return pupver
def _build_revision(self, ud, d, name):
return ud.revisions[name]
def gitpkgv_revision(self, ud, d, name):
"""
Return a sortable revision number by counting commits in the history
Based on gitpkgv.bblass in meta-openembedded
"""
rev = self._build_revision(ud, d, name)
localpath = ud.localpath
rev_file = os.path.join(localpath, "oe-gitpkgv_" + rev)
if not os.path.exists(localpath):
commits = None
else:
if not os.path.exists(rev_file) or not os.path.getsize(rev_file):
from pipes import quote
commits = bb.fetch2.runfetchcmd(
"git rev-list %s -- | wc -l" % quote(rev),
d, quiet=True).strip().lstrip('0')
if commits:
open(rev_file, "w").write("%d\n" % int(commits))
else:
commits = open(rev_file, "r").readline(128).strip()
if commits:
return False, "%s+%s" % (commits, rev[:7])
else:
return True, str(rev)
def checkstatus(self, fetch, ud, d):
try:
self._lsremote(ud, d, "")
return True
except bb.fetch2.FetchError:
return False

View File

@@ -0,0 +1,74 @@
# ex:ts=4:sw=4:sts=4:et
# -*- tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*-
"""
BitBake 'Fetch' git annex implementation
"""
# Copyright (C) 2014 Otavio Salvador
# Copyright (C) 2014 O.S. Systems Software LTDA.
#
# 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 bb
from bb.fetch2.git import Git
from bb.fetch2 import runfetchcmd
from bb.fetch2 import logger
class GitANNEX(Git):
def supports(self, ud, d):
"""
Check to see if a given url can be fetched with git.
"""
return ud.type in ['gitannex']
def uses_annex(self, ud, d, wd):
for name in ud.names:
try:
runfetchcmd("%s rev-list git-annex" % (ud.basecmd), d, quiet=True, workdir=wd)
return True
except bb.fetch.FetchError:
pass
return False
def update_annex(self, ud, d, wd):
try:
runfetchcmd("%s annex get --all" % (ud.basecmd), d, quiet=True, workdir=wd)
except bb.fetch.FetchError:
return False
runfetchcmd("chmod u+w -R %s/annex" % (ud.clonedir), d, quiet=True, workdir=wd)
return True
def download(self, ud, d):
Git.download(self, ud, d)
annex = self.uses_annex(ud, d, ud.clonedir)
if annex:
self.update_annex(ud, d, ud.clonedir)
def unpack(self, ud, destdir, d):
Git.unpack(self, ud, destdir, d)
try:
runfetchcmd("%s annex init" % (ud.basecmd), d, workdir=ud.destdir)
except bb.fetch.FetchError:
pass
annex = self.uses_annex(ud, d, ud.destdir)
if annex:
runfetchcmd("%s annex get" % (ud.basecmd), d, workdir=ud.destdir)
runfetchcmd("chmod u+w -R %s/.git/annex" % (ud.destdir), d, quiet=True, workdir=ud.destdir)

View File

@@ -0,0 +1,130 @@
# ex:ts=4:sw=4:sts=4:et
# -*- tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*-
"""
BitBake 'Fetch' git submodules implementation
Inherits from and extends the Git fetcher to retrieve submodules of a git repository
after cloning.
SRC_URI = "gitsm://<see Git fetcher for syntax>"
See the Git fetcher, git://, for usage documentation.
NOTE: Switching a SRC_URI from "git://" to "gitsm://" requires a clean of your recipe.
"""
# Copyright (C) 2013 Richard Purdie
#
# 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 bb
from bb.fetch2.git import Git
from bb.fetch2 import runfetchcmd
from bb.fetch2 import logger
class GitSM(Git):
def supports(self, ud, d):
"""
Check to see if a given url can be fetched with git.
"""
return ud.type in ['gitsm']
def uses_submodules(self, ud, d, wd):
for name in ud.names:
try:
runfetchcmd("%s show %s:.gitmodules" % (ud.basecmd, ud.revisions[name]), d, quiet=True, workdir=wd)
return True
except bb.fetch.FetchError:
pass
return False
def _set_relative_paths(self, repopath):
"""
Fix submodule paths to be relative instead of absolute,
so that when we move the repo it doesn't break
(In Git 1.7.10+ this is done automatically)
"""
submodules = []
with open(os.path.join(repopath, '.gitmodules'), 'r') as f:
for line in f.readlines():
if line.startswith('[submodule'):
submodules.append(line.split('"')[1])
for module in submodules:
repo_conf = os.path.join(repopath, module, '.git')
if os.path.exists(repo_conf):
with open(repo_conf, 'r') as f:
lines = f.readlines()
newpath = ''
for i, line in enumerate(lines):
if line.startswith('gitdir:'):
oldpath = line.split(': ')[-1].rstrip()
if oldpath.startswith('/'):
newpath = '../' * (module.count('/') + 1) + '.git/modules/' + module
lines[i] = 'gitdir: %s\n' % newpath
break
if newpath:
with open(repo_conf, 'w') as f:
for line in lines:
f.write(line)
repo_conf2 = os.path.join(repopath, '.git', 'modules', module, 'config')
if os.path.exists(repo_conf2):
with open(repo_conf2, 'r') as f:
lines = f.readlines()
newpath = ''
for i, line in enumerate(lines):
if line.lstrip().startswith('worktree = '):
oldpath = line.split(' = ')[-1].rstrip()
if oldpath.startswith('/'):
newpath = '../' * (module.count('/') + 3) + module
lines[i] = '\tworktree = %s\n' % newpath
break
if newpath:
with open(repo_conf2, 'w') as f:
for line in lines:
f.write(line)
def update_submodules(self, ud, d):
# We have to convert bare -> full repo, do the submodule bit, then convert back
tmpclonedir = ud.clonedir + ".tmp"
gitdir = tmpclonedir + os.sep + ".git"
bb.utils.remove(tmpclonedir, True)
os.mkdir(tmpclonedir)
os.rename(ud.clonedir, gitdir)
runfetchcmd("sed " + gitdir + "/config -i -e 's/bare.*=.*true/bare = false/'", d)
runfetchcmd(ud.basecmd + " reset --hard", d, workdir=tmpclonedir)
runfetchcmd(ud.basecmd + " checkout -f " + ud.revisions[ud.names[0]], d, workdir=tmpclonedir)
runfetchcmd(ud.basecmd + " submodule update --init --recursive", d, workdir=tmpclonedir)
self._set_relative_paths(tmpclonedir)
runfetchcmd("sed " + gitdir + "/config -i -e 's/bare.*=.*false/bare = true/'", d, workdir=tmpclonedir)
os.rename(gitdir, ud.clonedir,)
bb.utils.remove(tmpclonedir, True)
def download(self, ud, d):
Git.download(self, ud, d)
submodules = self.uses_submodules(ud, d, ud.clonedir)
if submodules:
self.update_submodules(ud, d)
def unpack(self, ud, destdir, d):
Git.unpack(self, ud, destdir, d)
submodules = self.uses_submodules(ud, d, ud.destdir)
if submodules:
runfetchcmd(ud.basecmd + " checkout " + ud.revisions[ud.names[0]], d, workdir=ud.destdir)
runfetchcmd(ud.basecmd + " submodule update --init --recursive", d, workdir=ud.destdir)

269
bitbake/lib/bb/fetch2/hg.py Normal file
View File

@@ -0,0 +1,269 @@
# ex:ts=4:sw=4:sts=4:et
# -*- tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*-
"""
BitBake 'Fetch' implementation for mercurial DRCS (hg).
"""
# Copyright (C) 2003, 2004 Chris Larson
# Copyright (C) 2004 Marcin Juszkiewicz
# Copyright (C) 2007 Robert Schuster
#
# 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.
#
# Based on functions from the base bb module, Copyright 2003 Holger Schurig
import os
import sys
import logging
import bb
import errno
from bb.fetch2 import FetchMethod
from bb.fetch2 import FetchError
from bb.fetch2 import MissingParameterError
from bb.fetch2 import runfetchcmd
from bb.fetch2 import logger
class Hg(FetchMethod):
"""Class to fetch from mercurial repositories"""
def supports(self, ud, d):
"""
Check to see if a given url can be fetched with mercurial.
"""
return ud.type in ['hg']
def supports_checksum(self, urldata):
"""
Don't require checksums for local archives created from
repository checkouts.
"""
return False
def urldata_init(self, ud, d):
"""
init hg specific variable within url data
"""
if not "module" in ud.parm:
raise MissingParameterError('module', ud.url)
ud.module = ud.parm["module"]
if 'protocol' in ud.parm:
ud.proto = ud.parm['protocol']
elif not ud.host:
ud.proto = 'file'
else:
ud.proto = "hg"
ud.setup_revisions(d)
if 'rev' in ud.parm:
ud.revision = ud.parm['rev']
elif not ud.revision:
ud.revision = self.latest_revision(ud, d)
# Create paths to mercurial checkouts
hgsrcname = '%s_%s_%s' % (ud.module.replace('/', '.'), \
ud.host, ud.path.replace('/', '.'))
ud.mirrortarball = 'hg_%s.tar.gz' % hgsrcname
ud.fullmirror = os.path.join(d.getVar("DL_DIR"), ud.mirrortarball)
hgdir = d.getVar("HGDIR") or (d.getVar("DL_DIR") + "/hg/")
ud.pkgdir = os.path.join(hgdir, hgsrcname)
ud.moddir = os.path.join(ud.pkgdir, ud.module)
ud.localfile = ud.moddir
ud.basecmd = d.getVar("FETCHCMD_hg") or "/usr/bin/env hg"
ud.write_tarballs = d.getVar("BB_GENERATE_MIRROR_TARBALLS")
def need_update(self, ud, d):
revTag = ud.parm.get('rev', 'tip')
if revTag == "tip":
return True
if not os.path.exists(ud.localpath):
return True
return False
def try_premirror(self, ud, d):
# If we don't do this, updating an existing checkout with only premirrors
# is not possible
if d.getVar("BB_FETCH_PREMIRRORONLY") is not None:
return True
if os.path.exists(ud.moddir):
return False
return True
def _buildhgcommand(self, ud, d, command):
"""
Build up an hg commandline based on ud
command is "fetch", "update", "info"
"""
proto = ud.parm.get('protocol', 'http')
host = ud.host
if proto == "file":
host = "/"
ud.host = "localhost"
if not ud.user:
hgroot = host + ud.path
else:
if ud.pswd:
hgroot = ud.user + ":" + ud.pswd + "@" + host + ud.path
else:
hgroot = ud.user + "@" + host + ud.path
if command == "info":
return "%s identify -i %s://%s/%s" % (ud.basecmd, proto, hgroot, ud.module)
options = [];
# Don't specify revision for the fetch; clone the entire repo.
# This avoids an issue if the specified revision is a tag, because
# the tag actually exists in the specified revision + 1, so it won't
# be available when used in any successive commands.
if ud.revision and command != "fetch":
options.append("-r %s" % ud.revision)
if command == "fetch":
if ud.user and ud.pswd:
cmd = "%s --config auth.default.prefix=* --config auth.default.username=%s --config auth.default.password=%s --config \"auth.default.schemes=%s\" clone %s %s://%s/%s %s" % (ud.basecmd, ud.user, ud.pswd, proto, " ".join(options), proto, hgroot, ud.module, ud.module)
else:
cmd = "%s clone %s %s://%s/%s %s" % (ud.basecmd, " ".join(options), proto, hgroot, ud.module, ud.module)
elif command == "pull":
# do not pass options list; limiting pull to rev causes the local
# repo not to contain it and immediately following "update" command
# will crash
if ud.user and ud.pswd:
cmd = "%s --config auth.default.prefix=* --config auth.default.username=%s --config auth.default.password=%s --config \"auth.default.schemes=%s\" pull" % (ud.basecmd, ud.user, ud.pswd, proto)
else:
cmd = "%s pull" % (ud.basecmd)
elif command == "update":
if ud.user and ud.pswd:
cmd = "%s --config auth.default.prefix=* --config auth.default.username=%s --config auth.default.password=%s --config \"auth.default.schemes=%s\" update -C %s" % (ud.basecmd, ud.user, ud.pswd, proto, " ".join(options))
else:
cmd = "%s update -C %s" % (ud.basecmd, " ".join(options))
else:
raise FetchError("Invalid hg command %s" % command, ud.url)
return cmd
def download(self, ud, d):
"""Fetch url"""
logger.debug(2, "Fetch: checking for module directory '" + ud.moddir + "'")
# If the checkout doesn't exist and the mirror tarball does, extract it
if not os.path.exists(ud.pkgdir) and os.path.exists(ud.fullmirror):
bb.utils.mkdirhier(ud.pkgdir)
runfetchcmd("tar -xzf %s" % (ud.fullmirror), d, workdir=ud.pkgdir)
if os.access(os.path.join(ud.moddir, '.hg'), os.R_OK):
# Found the source, check whether need pull
updatecmd = self._buildhgcommand(ud, d, "update")
logger.debug(1, "Running %s", updatecmd)
try:
runfetchcmd(updatecmd, d, workdir=ud.moddir)
except bb.fetch2.FetchError:
# Runnning pull in the repo
pullcmd = self._buildhgcommand(ud, d, "pull")
logger.info("Pulling " + ud.url)
# update sources there
logger.debug(1, "Running %s", pullcmd)
bb.fetch2.check_network_access(d, pullcmd, ud.url)
runfetchcmd(pullcmd, d, workdir=ud.moddir)
try:
os.unlink(ud.fullmirror)
except OSError as exc:
if exc.errno != errno.ENOENT:
raise
# No source found, clone it.
if not os.path.exists(ud.moddir):
fetchcmd = self._buildhgcommand(ud, d, "fetch")
logger.info("Fetch " + ud.url)
# check out sources there
bb.utils.mkdirhier(ud.pkgdir)
logger.debug(1, "Running %s", fetchcmd)
bb.fetch2.check_network_access(d, fetchcmd, ud.url)
runfetchcmd(fetchcmd, d, workdir=ud.pkgdir)
# Even when we clone (fetch), we still need to update as hg's clone
# won't checkout the specified revision if its on a branch
updatecmd = self._buildhgcommand(ud, d, "update")
logger.debug(1, "Running %s", updatecmd)
runfetchcmd(updatecmd, d, workdir=ud.moddir)
def clean(self, ud, d):
""" Clean the hg dir """
bb.utils.remove(ud.localpath, True)
bb.utils.remove(ud.fullmirror)
bb.utils.remove(ud.fullmirror + ".done")
def supports_srcrev(self):
return True
def _latest_revision(self, ud, d, name):
"""
Compute tip revision for the url
"""
bb.fetch2.check_network_access(d, self._buildhgcommand(ud, d, "info"), ud.url)
output = runfetchcmd(self._buildhgcommand(ud, d, "info"), d)
return output.strip()
def _build_revision(self, ud, d, name):
return ud.revision
def _revision_key(self, ud, d, name):
"""
Return a unique key for the url
"""
return "hg:" + ud.moddir
def build_mirror_data(self, ud, d):
# Generate a mirror tarball if needed
if ud.write_tarballs == "1" and not os.path.exists(ud.fullmirror):
# it's possible that this symlink points to read-only filesystem with PREMIRROR
if os.path.islink(ud.fullmirror):
os.unlink(ud.fullmirror)
logger.info("Creating tarball of hg repository")
runfetchcmd("tar -czf %s %s" % (ud.fullmirror, ud.module), d, workdir=ud.pkgdir)
runfetchcmd("touch %s.done" % (ud.fullmirror), d, workdir=ud.pkgdir)
def localpath(self, ud, d):
return ud.pkgdir
def unpack(self, ud, destdir, d):
"""
Make a local clone or export for the url
"""
revflag = "-r %s" % ud.revision
subdir = ud.parm.get("destsuffix", ud.module)
codir = "%s/%s" % (destdir, subdir)
scmdata = ud.parm.get("scmdata", "")
if scmdata != "nokeep":
if not os.access(os.path.join(codir, '.hg'), os.R_OK):
logger.debug(2, "Unpack: creating new hg repository in '" + codir + "'")
runfetchcmd("%s init %s" % (ud.basecmd, codir), d)
logger.debug(2, "Unpack: updating source in '" + codir + "'")
runfetchcmd("%s pull %s" % (ud.basecmd, ud.moddir), d, workdir=codir)
runfetchcmd("%s up -C %s" % (ud.basecmd, revflag), d, workdir=codir)
else:
logger.debug(2, "Unpack: extracting source to '" + codir + "'")
runfetchcmd("%s archive -t files %s %s" % (ud.basecmd, revflag, codir), d, workdir=ud.moddir)

View File

@@ -0,0 +1,119 @@
# ex:ts=4:sw=4:sts=4:et
# -*- tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*-
"""
BitBake 'Fetch' implementations
Classes for obtaining upstream sources for the
BitBake build tools.
"""
# Copyright (C) 2003, 2004 Chris Larson
#
# 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.
#
# Based on functions from the base bb module, Copyright 2003 Holger Schurig
import os
import urllib.request, urllib.parse, urllib.error
import bb
import bb.utils
from bb.fetch2 import FetchMethod, FetchError
from bb.fetch2 import logger
class Local(FetchMethod):
def supports(self, urldata, d):
"""
Check to see if a given url represents a local fetch.
"""
return urldata.type in ['file']
def urldata_init(self, ud, d):
# We don't set localfile as for this fetcher the file is already local!
ud.decodedurl = urllib.parse.unquote(ud.url.split("://")[1].split(";")[0])
ud.basename = os.path.basename(ud.decodedurl)
ud.basepath = ud.decodedurl
ud.needdonestamp = False
return
def localpath(self, urldata, d):
"""
Return the local filename of a given url assuming a successful fetch.
"""
return self.localpaths(urldata, d)[-1]
def localpaths(self, urldata, d):
"""
Return the local filename of a given url assuming a successful fetch.
"""
searched = []
path = urldata.decodedurl
newpath = path
if path[0] == "/":
return [path]
filespath = d.getVar('FILESPATH')
if filespath:
logger.debug(2, "Searching for %s in paths:\n %s" % (path, "\n ".join(filespath.split(":"))))
newpath, hist = bb.utils.which(filespath, path, history=True)
searched.extend(hist)
if (not newpath or not os.path.exists(newpath)) and path.find("*") != -1:
# For expressions using '*', best we can do is take the first directory in FILESPATH that exists
newpath, hist = bb.utils.which(filespath, ".", history=True)
searched.extend(hist)
logger.debug(2, "Searching for %s in path: %s" % (path, newpath))
return searched
if not os.path.exists(newpath):
dldirfile = os.path.join(d.getVar("DL_DIR"), path)
logger.debug(2, "Defaulting to %s for %s" % (dldirfile, path))
bb.utils.mkdirhier(os.path.dirname(dldirfile))
searched.append(dldirfile)
return searched
return searched
def need_update(self, ud, d):
if ud.url.find("*") != -1:
return False
if os.path.exists(ud.localpath):
return False
return True
def download(self, urldata, d):
"""Fetch urls (no-op for Local method)"""
# no need to fetch local files, we'll deal with them in place.
if self.supports_checksum(urldata) and not os.path.exists(urldata.localpath):
locations = []
filespath = d.getVar('FILESPATH')
if filespath:
locations = filespath.split(":")
locations.append(d.getVar("DL_DIR"))
msg = "Unable to find file " + urldata.url + " anywhere. The paths that were searched were:\n " + "\n ".join(locations)
raise FetchError(msg)
return True
def checkstatus(self, fetch, urldata, d):
"""
Check the status of the url
"""
if urldata.localpath.find("*") != -1:
logger.info("URL %s looks like a glob and was therefore not checked.", urldata.url)
return True
if os.path.exists(urldata.localpath):
return True
return False
def clean(self, urldata, d):
return

View File

@@ -0,0 +1,305 @@
# ex:ts=4:sw=4:sts=4:et
# -*- tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*-
"""
BitBake 'Fetch' NPM implementation
The NPM fetcher is used to retrieve files from the npmjs repository
Usage in the recipe:
SRC_URI = "npm://registry.npmjs.org/;name=${PN};version=${PV}"
Suported SRC_URI options are:
- name
- version
npm://registry.npmjs.org/${PN}/-/${PN}-${PV}.tgz would become npm://registry.npmjs.org;name=${PN};version=${PV}
The fetcher all triggers off the existence of ud.localpath. If that exists and has the ".done" stamp, its assumed the fetch is good/done
"""
import os
import sys
import urllib.request, urllib.parse, urllib.error
import json
import subprocess
import signal
import bb
from bb.fetch2 import FetchMethod
from bb.fetch2 import FetchError
from bb.fetch2 import ChecksumError
from bb.fetch2 import runfetchcmd
from bb.fetch2 import logger
from bb.fetch2 import UnpackError
from bb.fetch2 import ParameterError
from distutils import spawn
def subprocess_setup():
# Python installs a SIGPIPE handler by default. This is usually not what
# non-Python subprocesses expect.
# SIGPIPE errors are known issues with gzip/bash
signal.signal(signal.SIGPIPE, signal.SIG_DFL)
class Npm(FetchMethod):
"""Class to fetch urls via 'npm'"""
def init(self, d):
pass
def supports(self, ud, d):
"""
Check to see if a given url can be fetched with npm
"""
return ud.type in ['npm']
def debug(self, msg):
logger.debug(1, "NpmFetch: %s", msg)
def clean(self, ud, d):
logger.debug(2, "Calling cleanup %s" % ud.pkgname)
bb.utils.remove(ud.localpath, False)
bb.utils.remove(ud.pkgdatadir, True)
bb.utils.remove(ud.fullmirror, False)
def urldata_init(self, ud, d):
"""
init NPM specific variable within url data
"""
if 'downloadfilename' in ud.parm:
ud.basename = ud.parm['downloadfilename']
else:
ud.basename = os.path.basename(ud.path)
# can't call it ud.name otherwise fetcher base class will start doing sha1stuff
# TODO: find a way to get an sha1/sha256 manifest of pkg & all deps
ud.pkgname = ud.parm.get("name", None)
if not ud.pkgname:
raise ParameterError("NPM fetcher requires a name parameter", ud.url)
ud.version = ud.parm.get("version", None)
if not ud.version:
raise ParameterError("NPM fetcher requires a version parameter", ud.url)
ud.bbnpmmanifest = "%s-%s.deps.json" % (ud.pkgname, ud.version)
ud.bbnpmmanifest = ud.bbnpmmanifest.replace('/', '-')
ud.registry = "http://%s" % (ud.url.replace('npm://', '', 1).split(';'))[0]
prefixdir = "npm/%s" % ud.pkgname
ud.pkgdatadir = d.expand("${DL_DIR}/%s" % prefixdir)
if not os.path.exists(ud.pkgdatadir):
bb.utils.mkdirhier(ud.pkgdatadir)
ud.localpath = d.expand("${DL_DIR}/npm/%s" % ud.bbnpmmanifest)
self.basecmd = d.getVar("FETCHCMD_wget") or "/usr/bin/env wget -O -t 2 -T 30 -nv --passive-ftp --no-check-certificate "
ud.prefixdir = prefixdir
ud.write_tarballs = ((d.getVar("BB_GENERATE_MIRROR_TARBALLS") or "0") != "0")
ud.mirrortarball = 'npm_%s-%s.tar.xz' % (ud.pkgname, ud.version)
ud.mirrortarball = ud.mirrortarball.replace('/', '-')
ud.fullmirror = os.path.join(d.getVar("DL_DIR"), ud.mirrortarball)
def need_update(self, ud, d):
if os.path.exists(ud.localpath):
return False
return True
def _runwget(self, ud, d, command, quiet):
logger.debug(2, "Fetching %s using command '%s'" % (ud.url, command))
bb.fetch2.check_network_access(d, command, ud.url)
dldir = d.getVar("DL_DIR")
runfetchcmd(command, d, quiet, workdir=dldir)
def _unpackdep(self, ud, pkg, data, destdir, dldir, d):
file = data[pkg]['tgz']
logger.debug(2, "file to extract is %s" % file)
if file.endswith('.tgz') or file.endswith('.tar.gz') or file.endswith('.tar.Z'):
cmd = 'tar xz --strip 1 --no-same-owner --warning=no-unknown-keyword -f %s/%s' % (dldir, file)
else:
bb.fatal("NPM package %s downloaded not a tarball!" % file)
# Change to subdir before executing command
if not os.path.exists(destdir):
os.makedirs(destdir)
path = d.getVar('PATH')
if path:
cmd = "PATH=\"%s\" %s" % (path, cmd)
bb.note("Unpacking %s to %s/" % (file, destdir))
ret = subprocess.call(cmd, preexec_fn=subprocess_setup, shell=True, cwd=destdir)
if ret != 0:
raise UnpackError("Unpack command %s failed with return value %s" % (cmd, ret), ud.url)
if 'deps' not in data[pkg]:
return
for dep in data[pkg]['deps']:
self._unpackdep(ud, dep, data[pkg]['deps'], "%s/node_modules/%s" % (destdir, dep), dldir, d)
def unpack(self, ud, destdir, d):
dldir = d.getVar("DL_DIR")
with open("%s/npm/%s" % (dldir, ud.bbnpmmanifest)) as datafile:
workobj = json.load(datafile)
dldir = "%s/%s" % (os.path.dirname(ud.localpath), ud.pkgname)
if 'subdir' in ud.parm:
unpackdir = '%s/%s' % (destdir, ud.parm.get('subdir'))
else:
unpackdir = '%s/npmpkg' % destdir
self._unpackdep(ud, ud.pkgname, workobj, unpackdir, dldir, d)
def _parse_view(self, output):
'''
Parse the output of npm view --json; the last JSON result
is assumed to be the one that we're interested in.
'''
pdata = None
outdeps = {}
datalines = []
bracelevel = 0
for line in output.splitlines():
if bracelevel:
datalines.append(line)
elif '{' in line:
datalines = []
datalines.append(line)
bracelevel = bracelevel + line.count('{') - line.count('}')
if datalines:
pdata = json.loads('\n'.join(datalines))
return pdata
def _getdependencies(self, pkg, data, version, d, ud, optional=False, fetchedlist=None):
if fetchedlist is None:
fetchedlist = []
pkgfullname = pkg
if version != '*' and not '/' in version:
pkgfullname += "@'%s'" % version
logger.debug(2, "Calling getdeps on %s" % pkg)
fetchcmd = "npm view %s --json --registry %s" % (pkgfullname, ud.registry)
output = runfetchcmd(fetchcmd, d, True)
pdata = self._parse_view(output)
if not pdata:
raise FetchError("The command '%s' returned no output" % fetchcmd)
if optional:
pkg_os = pdata.get('os', None)
if pkg_os:
if not isinstance(pkg_os, list):
pkg_os = [pkg_os]
blacklist = False
for item in pkg_os:
if item.startswith('!'):
blacklist = True
break
if (not blacklist and 'linux' not in pkg_os) or '!linux' in pkg_os:
logger.debug(2, "Skipping %s since it's incompatible with Linux" % pkg)
return
#logger.debug(2, "Output URL is %s - %s - %s" % (ud.basepath, ud.basename, ud.localfile))
outputurl = pdata['dist']['tarball']
data[pkg] = {}
data[pkg]['tgz'] = os.path.basename(outputurl)
if not outputurl in fetchedlist:
self._runwget(ud, d, "%s --directory-prefix=%s %s" % (self.basecmd, ud.prefixdir, outputurl), False)
fetchedlist.append(outputurl)
dependencies = pdata.get('dependencies', {})
optionalDependencies = pdata.get('optionalDependencies', {})
dependencies.update(optionalDependencies)
depsfound = {}
optdepsfound = {}
data[pkg]['deps'] = {}
for dep in dependencies:
if dep in optionalDependencies:
optdepsfound[dep] = dependencies[dep]
else:
depsfound[dep] = dependencies[dep]
for dep, version in optdepsfound.items():
self._getdependencies(dep, data[pkg]['deps'], version, d, ud, optional=True, fetchedlist=fetchedlist)
for dep, version in depsfound.items():
self._getdependencies(dep, data[pkg]['deps'], version, d, ud, fetchedlist=fetchedlist)
def _getshrinkeddependencies(self, pkg, data, version, d, ud, lockdown, manifest, toplevel=True):
logger.debug(2, "NPM shrinkwrap file is %s" % data)
if toplevel:
name = data.get('name', None)
if name and name != pkg:
for obj in data.get('dependencies', []):
if obj == pkg:
self._getshrinkeddependencies(obj, data['dependencies'][obj], data['dependencies'][obj]['version'], d, ud, lockdown, manifest, False)
return
outputurl = "invalid"
if ('resolved' not in data) or (not data['resolved'].startswith('http')):
# will be the case for ${PN}
fetchcmd = "npm view %s@%s dist.tarball --registry %s" % (pkg, version, ud.registry)
logger.debug(2, "Found this matching URL: %s" % str(fetchcmd))
outputurl = runfetchcmd(fetchcmd, d, True)
else:
outputurl = data['resolved']
self._runwget(ud, d, "%s --directory-prefix=%s %s" % (self.basecmd, ud.prefixdir, outputurl), False)
manifest[pkg] = {}
manifest[pkg]['tgz'] = os.path.basename(outputurl).rstrip()
manifest[pkg]['deps'] = {}
if pkg in lockdown:
sha1_expected = lockdown[pkg][version]
sha1_data = bb.utils.sha1_file("npm/%s/%s" % (ud.pkgname, manifest[pkg]['tgz']))
if sha1_expected != sha1_data:
msg = "\nFile: '%s' has %s checksum %s when %s was expected" % (manifest[pkg]['tgz'], 'sha1', sha1_data, sha1_expected)
raise ChecksumError('Checksum mismatch!%s' % msg)
else:
logger.debug(2, "No lockdown data for %s@%s" % (pkg, version))
if 'dependencies' in data:
for obj in data['dependencies']:
logger.debug(2, "Found dep is %s" % str(obj))
self._getshrinkeddependencies(obj, data['dependencies'][obj], data['dependencies'][obj]['version'], d, ud, lockdown, manifest[pkg]['deps'], False)
def download(self, ud, d):
"""Fetch url"""
jsondepobj = {}
shrinkobj = {}
lockdown = {}
if not os.listdir(ud.pkgdatadir) and os.path.exists(ud.fullmirror):
dest = d.getVar("DL_DIR")
bb.utils.mkdirhier(dest)
runfetchcmd("tar -xJf %s" % (ud.fullmirror), d, workdir=dest)
return
shwrf = d.getVar('NPM_SHRINKWRAP')
logger.debug(2, "NPM shrinkwrap file is %s" % shwrf)
if shwrf:
try:
with open(shwrf) as datafile:
shrinkobj = json.load(datafile)
except Exception as e:
raise FetchError('Error loading NPM_SHRINKWRAP file "%s" for %s: %s' % (shwrf, ud.pkgname, str(e)))
elif not ud.ignore_checksums:
logger.warning('Missing shrinkwrap file in NPM_SHRINKWRAP for %s, this will lead to unreliable builds!' % ud.pkgname)
lckdf = d.getVar('NPM_LOCKDOWN')
logger.debug(2, "NPM lockdown file is %s" % lckdf)
if lckdf:
try:
with open(lckdf) as datafile:
lockdown = json.load(datafile)
except Exception as e:
raise FetchError('Error loading NPM_LOCKDOWN file "%s" for %s: %s' % (lckdf, ud.pkgname, str(e)))
elif not ud.ignore_checksums:
logger.warning('Missing lockdown file in NPM_LOCKDOWN for %s, this will lead to unreproducible builds!' % ud.pkgname)
if ('name' not in shrinkobj):
self._getdependencies(ud.pkgname, jsondepobj, ud.version, d, ud)
else:
self._getshrinkeddependencies(ud.pkgname, shrinkobj, ud.version, d, ud, lockdown, jsondepobj)
with open(ud.localpath, 'w') as outfile:
json.dump(jsondepobj, outfile)
def build_mirror_data(self, ud, d):
# Generate a mirror tarball if needed
if ud.write_tarballs and not os.path.exists(ud.fullmirror):
# it's possible that this symlink points to read-only filesystem with PREMIRROR
if os.path.islink(ud.fullmirror):
os.unlink(ud.fullmirror)
dldir = d.getVar("DL_DIR")
logger.info("Creating tarball of npm data")
runfetchcmd("tar -cJf %s npm/%s npm/%s" % (ud.fullmirror, ud.bbnpmmanifest, ud.pkgname), d,
workdir=dldir)
runfetchcmd("touch %s.done" % (ud.fullmirror), d, workdir=dldir)

View File

@@ -0,0 +1,132 @@
# ex:ts=4:sw=4:sts=4:et
# -*- tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*-
"""
Bitbake "Fetch" implementation for osc (Opensuse build service client).
Based on the svn "Fetch" implementation.
"""
import os
import sys
import logging
import bb
from bb.fetch2 import FetchMethod
from bb.fetch2 import FetchError
from bb.fetch2 import MissingParameterError
from bb.fetch2 import runfetchcmd
class Osc(FetchMethod):
"""Class to fetch a module or modules from Opensuse build server
repositories."""
def supports(self, ud, d):
"""
Check to see if a given url can be fetched with osc.
"""
return ud.type in ['osc']
def urldata_init(self, ud, d):
if not "module" in ud.parm:
raise MissingParameterError('module', ud.url)
ud.module = ud.parm["module"]
# Create paths to osc checkouts
relpath = self._strip_leading_slashes(ud.path)
ud.pkgdir = os.path.join(d.getVar('OSCDIR'), ud.host)
ud.moddir = os.path.join(ud.pkgdir, relpath, ud.module)
if 'rev' in ud.parm:
ud.revision = ud.parm['rev']
else:
pv = d.getVar("PV", False)
rev = bb.fetch2.srcrev_internal_helper(ud, d)
if rev and rev != True:
ud.revision = rev
else:
ud.revision = ""
ud.localfile = d.expand('%s_%s_%s.tar.gz' % (ud.module.replace('/', '.'), ud.path.replace('/', '.'), ud.revision))
def _buildosccommand(self, ud, d, command):
"""
Build up an ocs commandline based on ud
command is "fetch", "update", "info"
"""
basecmd = d.expand('${FETCHCMD_osc}')
proto = ud.parm.get('protocol', 'ocs')
options = []
config = "-c %s" % self.generate_config(ud, d)
if ud.revision:
options.append("-r %s" % ud.revision)
coroot = self._strip_leading_slashes(ud.path)
if command == "fetch":
osccmd = "%s %s co %s/%s %s" % (basecmd, config, coroot, ud.module, " ".join(options))
elif command == "update":
osccmd = "%s %s up %s" % (basecmd, config, " ".join(options))
else:
raise FetchError("Invalid osc command %s" % command, ud.url)
return osccmd
def download(self, ud, d):
"""
Fetch url
"""
logger.debug(2, "Fetch: checking for module directory '" + ud.moddir + "'")
if os.access(os.path.join(d.getVar('OSCDIR'), ud.path, ud.module), os.R_OK):
oscupdatecmd = self._buildosccommand(ud, d, "update")
logger.info("Update "+ ud.url)
# update sources there
logger.debug(1, "Running %s", oscupdatecmd)
bb.fetch2.check_network_access(d, oscupdatecmd, ud.url)
runfetchcmd(oscupdatecmd, d, workdir=ud.moddir)
else:
oscfetchcmd = self._buildosccommand(ud, d, "fetch")
logger.info("Fetch " + ud.url)
# check out sources there
bb.utils.mkdirhier(ud.pkgdir)
logger.debug(1, "Running %s", oscfetchcmd)
bb.fetch2.check_network_access(d, oscfetchcmd, ud.url)
runfetchcmd(oscfetchcmd, d, workdir=ud.pkgdir)
# tar them up to a defined filename
runfetchcmd("tar -czf %s %s" % (ud.localpath, ud.module), d,
cleanup=[ud.localpath], workdir=os.path.join(ud.pkgdir + ud.path))
def supports_srcrev(self):
return False
def generate_config(self, ud, d):
"""
Generate a .oscrc to be used for this run.
"""
config_path = os.path.join(d.getVar('OSCDIR'), "oscrc")
if (os.path.exists(config_path)):
os.remove(config_path)
f = open(config_path, 'w')
f.write("[general]\n")
f.write("apisrv = %s\n" % ud.host)
f.write("scheme = http\n")
f.write("su-wrapper = su -c\n")
f.write("build-root = %s\n" % d.getVar('WORKDIR'))
f.write("urllist = %s\n" % d.getVar("OSCURLLIST"))
f.write("extra-pkgs = gzip\n")
f.write("\n")
f.write("[%s]\n" % ud.host)
f.write("user = %s\n" % ud.parm["user"])
f.write("pass = %s\n" % ud.parm["pswd"])
f.close()
return config_path

View File

@@ -0,0 +1,209 @@
# ex:ts=4:sw=4:sts=4:et
# -*- tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*-
"""
BitBake 'Fetch' implementation for perforce
"""
# Copyright (C) 2003, 2004 Chris Larson
# Copyright (C) 2016 Kodak Alaris, Inc.
#
# 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.
#
# Based on functions from the base bb module, Copyright 2003 Holger Schurig
import os
import logging
import bb
from bb.fetch2 import FetchMethod
from bb.fetch2 import FetchError
from bb.fetch2 import logger
from bb.fetch2 import runfetchcmd
class Perforce(FetchMethod):
""" Class to fetch from perforce repositories """
def supports(self, ud, d):
""" Check to see if a given url can be fetched with perforce. """
return ud.type in ['p4']
def urldata_init(self, ud, d):
"""
Initialize perforce specific variables within url data. If P4CONFIG is
provided by the env, use it. If P4PORT is specified by the recipe, use
its values, which may override the settings in P4CONFIG.
"""
ud.basecmd = d.getVar('FETCHCMD_p4')
if not ud.basecmd:
ud.basecmd = "/usr/bin/env p4"
ud.dldir = d.getVar('P4DIR')
if not ud.dldir:
ud.dldir = '%s/%s' % (d.getVar('DL_DIR'), 'p4')
path = ud.url.split('://')[1]
path = path.split(';')[0]
delim = path.find('@');
if delim != -1:
(ud.user, ud.pswd) = path.split('@')[0].split(':')
ud.path = path.split('@')[1]
else:
ud.path = path
ud.usingp4config = False
p4port = d.getVar('P4PORT')
if p4port:
logger.debug(1, 'Using recipe provided P4PORT: %s' % p4port)
ud.host = p4port
else:
logger.debug(1, 'Trying to use P4CONFIG to automatically set P4PORT...')
ud.usingp4config = True
p4cmd = '%s info | grep "Server address"' % ud.basecmd
bb.fetch2.check_network_access(d, p4cmd, ud.url)
ud.host = runfetchcmd(p4cmd, d, True)
ud.host = ud.host.split(': ')[1].strip()
logger.debug(1, 'Determined P4PORT to be: %s' % ud.host)
if not ud.host:
raise FetchError('Could not determine P4PORT from P4CONFIG')
if ud.path.find('/...') >= 0:
ud.pathisdir = True
else:
ud.pathisdir = False
cleanedpath = ud.path.replace('/...', '').replace('/', '.')
cleanedhost = ud.host.replace(':', '.')
ud.pkgdir = os.path.join(ud.dldir, cleanedhost, cleanedpath)
ud.setup_revisions(d)
ud.localfile = d.expand('%s_%s_%s.tar.gz' % (cleanedhost, cleanedpath, ud.revision))
def _buildp4command(self, ud, d, command, depot_filename=None):
"""
Build a p4 commandline. Valid commands are "changes", "print", and
"files". depot_filename is the full path to the file in the depot
including the trailing '#rev' value.
"""
p4opt = ""
if ud.user:
p4opt += ' -u "%s"' % (ud.user)
if ud.pswd:
p4opt += ' -P "%s"' % (ud.pswd)
if ud.host and not ud.usingp4config:
p4opt += ' -p %s' % (ud.host)
if hasattr(ud, 'revision') and ud.revision:
pathnrev = '%s@%s' % (ud.path, ud.revision)
else:
pathnrev = '%s' % (ud.path)
if depot_filename:
if ud.pathisdir: # Remove leading path to obtain filename
filename = depot_filename[len(ud.path)-1:]
else:
filename = depot_filename[depot_filename.rfind('/'):]
filename = filename[:filename.find('#')] # Remove trailing '#rev'
if command == 'changes':
p4cmd = '%s%s changes -m 1 //%s' % (ud.basecmd, p4opt, pathnrev)
elif command == 'print':
if depot_filename != None:
p4cmd = '%s%s print -o "p4/%s" "%s"' % (ud.basecmd, p4opt, filename, depot_filename)
else:
raise FetchError('No depot file name provided to p4 %s' % command, ud.url)
elif command == 'files':
p4cmd = '%s%s files //%s' % (ud.basecmd, p4opt, pathnrev)
else:
raise FetchError('Invalid p4 command %s' % command, ud.url)
return p4cmd
def _p4listfiles(self, ud, d):
"""
Return a list of the file names which are present in the depot using the
'p4 files' command, including trailing '#rev' file revision indicator
"""
p4cmd = self._buildp4command(ud, d, 'files')
bb.fetch2.check_network_access(d, p4cmd, ud.url)
p4fileslist = runfetchcmd(p4cmd, d, True)
p4fileslist = [f.rstrip() for f in p4fileslist.splitlines()]
if not p4fileslist:
raise FetchError('Unable to fetch listing of p4 files from %s@%s' % (ud.host, ud.path))
count = 0
filelist = []
for filename in p4fileslist:
item = filename.split(' - ')
lastaction = item[1].split()
logger.debug(1, 'File: %s Last Action: %s' % (item[0], lastaction[0]))
if lastaction[0] == 'delete':
continue
filelist.append(item[0])
return filelist
def download(self, ud, d):
""" Get the list of files, fetch each one """
filelist = self._p4listfiles(ud, d)
if not filelist:
raise FetchError('No files found in depot %s@%s' % (ud.host, ud.path))
bb.utils.remove(ud.pkgdir, True)
bb.utils.mkdirhier(ud.pkgdir)
for afile in filelist:
p4fetchcmd = self._buildp4command(ud, d, 'print', afile)
bb.fetch2.check_network_access(d, p4fetchcmd, ud.url)
runfetchcmd(p4fetchcmd, d, workdir=ud.pkgdir)
runfetchcmd('tar -czf %s p4' % (ud.localpath), d, cleanup=[ud.localpath], workdir=ud.pkgdir)
def clean(self, ud, d):
""" Cleanup p4 specific files and dirs"""
bb.utils.remove(ud.localpath)
bb.utils.remove(ud.pkgdir, True)
def supports_srcrev(self):
return True
def _revision_key(self, ud, d, name):
""" Return a unique key for the url """
return 'p4:%s' % ud.pkgdir
def _latest_revision(self, ud, d, name):
""" Return the latest upstream scm revision number """
p4cmd = self._buildp4command(ud, d, "changes")
bb.fetch2.check_network_access(d, p4cmd, ud.url)
tip = runfetchcmd(p4cmd, d, True)
if not tip:
raise FetchError('Could not determine the latest perforce changelist')
tipcset = tip.split(' ')[1]
logger.debug(1, 'p4 tip found to be changelist %s' % tipcset)
return tipcset
def sortable_revision(self, ud, d, name):
""" Return a sortable revision number """
return False, self._build_revision(ud, d)
def _build_revision(self, ud, d):
return ud.revision

View File

@@ -0,0 +1,96 @@
# ex:ts=4:sw=4:sts=4:et
# -*- tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*-
"""
BitBake "Fetch" repo (git) implementation
"""
# Copyright (C) 2009 Tom Rini <trini@embeddedalley.com>
#
# Based on git.py which is:
#Copyright (C) 2005 Richard Purdie
#
# 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 bb
from bb.fetch2 import FetchMethod
from bb.fetch2 import runfetchcmd
class Repo(FetchMethod):
"""Class to fetch a module or modules from repo (git) repositories"""
def supports(self, ud, d):
"""
Check to see if a given url can be fetched with repo.
"""
return ud.type in ["repo"]
def urldata_init(self, ud, d):
"""
We don"t care about the git rev of the manifests repository, but
we do care about the manifest to use. The default is "default".
We also care about the branch or tag to be used. The default is
"master".
"""
ud.proto = ud.parm.get('protocol', 'git')
ud.branch = ud.parm.get('branch', 'master')
ud.manifest = ud.parm.get('manifest', 'default.xml')
if not ud.manifest.endswith('.xml'):
ud.manifest += '.xml'
ud.localfile = d.expand("repo_%s%s_%s_%s.tar.gz" % (ud.host, ud.path.replace("/", "."), ud.manifest, ud.branch))
def download(self, ud, d):
"""Fetch url"""
if os.access(os.path.join(d.getVar("DL_DIR"), ud.localfile), os.R_OK):
logger.debug(1, "%s already exists (or was stashed). Skipping repo init / sync.", ud.localpath)
return
gitsrcname = "%s%s" % (ud.host, ud.path.replace("/", "."))
repodir = d.getVar("REPODIR") or os.path.join(d.getVar("DL_DIR"), "repo")
codir = os.path.join(repodir, gitsrcname, ud.manifest)
if ud.user:
username = ud.user + "@"
else:
username = ""
repodir = os.path.join(codir, "repo")
bb.utils.mkdirhier(repodir)
if not os.path.exists(os.path.join(repodir, ".repo")):
bb.fetch2.check_network_access(d, "repo init -m %s -b %s -u %s://%s%s%s" % (ud.manifest, ud.branch, ud.proto, username, ud.host, ud.path), ud.url)
runfetchcmd("repo init -m %s -b %s -u %s://%s%s%s" % (ud.manifest, ud.branch, ud.proto, username, ud.host, ud.path), d, workdir=repodir)
bb.fetch2.check_network_access(d, "repo sync %s" % ud.url, ud.url)
runfetchcmd("repo sync", d, workdir=repodir)
scmdata = ud.parm.get("scmdata", "")
if scmdata == "keep":
tar_flags = ""
else:
tar_flags = "--exclude='.repo' --exclude='.git'"
# Create a cache
runfetchcmd("tar %s -czf %s %s" % (tar_flags, ud.localpath, os.path.join(".", "*") ), d, workdir=codir)
def supports_srcrev(self):
return False
def _build_revision(self, ud, d):
return ud.manifest
def _want_sortable_revision(self, ud, d):
return False

View File

@@ -0,0 +1,98 @@
# ex:ts=4:sw=4:sts=4:et
# -*- tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*-
"""
BitBake 'Fetch' implementation for Amazon AWS S3.
Class for fetching files from Amazon S3 using the AWS Command Line Interface.
The aws tool must be correctly installed and configured prior to use.
"""
# Copyright (C) 2017, Andre McCurdy <armccurdy@gmail.com>
#
# Based in part on bb.fetch2.wget:
# Copyright (C) 2003, 2004 Chris Larson
#
# 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.
#
# Based on functions from the base bb module, Copyright 2003 Holger Schurig
import os
import bb
import urllib.request, urllib.parse, urllib.error
from bb.fetch2 import FetchMethod
from bb.fetch2 import FetchError
from bb.fetch2 import runfetchcmd
class S3(FetchMethod):
"""Class to fetch urls via 'aws s3'"""
def supports(self, ud, d):
"""
Check to see if a given url can be fetched with s3.
"""
return ud.type in ['s3']
def recommends_checksum(self, urldata):
return True
def urldata_init(self, ud, d):
if 'downloadfilename' in ud.parm:
ud.basename = ud.parm['downloadfilename']
else:
ud.basename = os.path.basename(ud.path)
ud.localfile = d.expand(urllib.parse.unquote(ud.basename))
ud.basecmd = d.getVar("FETCHCMD_s3") or "/usr/bin/env aws s3"
def download(self, ud, d):
"""
Fetch urls
Assumes localpath was called first
"""
cmd = '%s cp s3://%s%s %s' % (ud.basecmd, ud.host, ud.path, ud.localpath)
bb.fetch2.check_network_access(d, cmd, ud.url)
runfetchcmd(cmd, d)
# Additional sanity checks copied from the wget class (although there
# are no known issues which mean these are required, treat the aws cli
# tool with a little healthy suspicion).
if not os.path.exists(ud.localpath):
raise FetchError("The aws cp command returned success for s3://%s%s but %s doesn't exist?!" % (ud.host, ud.path, ud.localpath))
if os.path.getsize(ud.localpath) == 0:
os.remove(ud.localpath)
raise FetchError("The aws cp command for s3://%s%s resulted in a zero size file?! Deleting and failing since this isn't right." % (ud.host, ud.path))
return True
def checkstatus(self, fetch, ud, d):
"""
Check the status of a URL
"""
cmd = '%s ls s3://%s%s' % (ud.basecmd, ud.host, ud.path)
bb.fetch2.check_network_access(d, cmd, ud.url)
output = runfetchcmd(cmd, d)
# "aws s3 ls s3://mybucket/foo" will exit with success even if the file
# is not found, so check output of the command to confirm success.
if not output:
raise FetchError("The aws ls command for s3://%s%s gave empty output" % (ud.host, ud.path))
return True

View File

@@ -0,0 +1,125 @@
# ex:ts=4:sw=4:sts=4:et
# -*- tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*-
"""
BitBake SFTP Fetch implementation
Class for fetching files via SFTP. It tries to adhere to the (now
expired) IETF Internet Draft for "Uniform Resource Identifier (URI)
Scheme for Secure File Transfer Protocol (SFTP) and Secure Shell
(SSH)" (SECSH URI).
It uses SFTP (as to adhere to the SECSH URI specification). It only
supports key based authentication, not password. This class, unlike
the SSH fetcher, does not support fetching a directory tree from the
remote.
http://tools.ietf.org/html/draft-ietf-secsh-scp-sftp-ssh-uri-04
https://www.iana.org/assignments/uri-schemes/prov/sftp
https://tools.ietf.org/html/draft-ietf-secsh-filexfer-13
Please note that '/' is used as host path seperator, and not ":"
as you may be used to from the scp/sftp commands. You can use a
~ (tilde) to specify a path relative to your home directory.
(The /~user/ syntax, for specyfing a path relative to another
user's home directory is not supported.) Note that the tilde must
still follow the host path seperator ("/"). See exampels below.
Example SRC_URIs:
SRC_URI = "sftp://host.example.com/dir/path.file.txt"
A path relative to your home directory.
SRC_URI = "sftp://host.example.com/~/dir/path.file.txt"
You can also specify a username (specyfing password in the
URI is not supported, use SSH keys to authenticate):
SRC_URI = "sftp://user@host.example.com/dir/path.file.txt"
"""
# Copyright (C) 2013, Olof Johansson <olof.johansson@axis.com>
#
# Based in part on bb.fetch2.wget:
# Copyright (C) 2003, 2004 Chris Larson
#
# 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.
#
# Based on functions from the base bb module, Copyright 2003 Holger Schurig
import os
import bb
import urllib.request, urllib.parse, urllib.error
from bb.fetch2 import URI
from bb.fetch2 import FetchMethod
from bb.fetch2 import runfetchcmd
class SFTP(FetchMethod):
"""Class to fetch urls via 'sftp'"""
def supports(self, ud, d):
"""
Check to see if a given url can be fetched with sftp.
"""
return ud.type in ['sftp']
def recommends_checksum(self, urldata):
return True
def urldata_init(self, ud, d):
if 'protocol' in ud.parm and ud.parm['protocol'] == 'git':
raise bb.fetch2.ParameterError(
"Invalid protocol - if you wish to fetch from a " +
"git repository using ssh, you need to use the " +
"git:// prefix with protocol=ssh", ud.url)
if 'downloadfilename' in ud.parm:
ud.basename = ud.parm['downloadfilename']
else:
ud.basename = os.path.basename(ud.path)
ud.localfile = d.expand(urllib.parse.unquote(ud.basename))
def download(self, ud, d):
"""Fetch urls"""
urlo = URI(ud.url)
basecmd = 'sftp -oBatchMode=yes'
port = ''
if urlo.port:
port = '-P %d' % urlo.port
urlo.port = None
dldir = d.getVar('DL_DIR')
lpath = os.path.join(dldir, ud.localfile)
user = ''
if urlo.userinfo:
user = urlo.userinfo + '@'
path = urlo.path
# Supoprt URIs relative to the user's home directory, with
# the tilde syntax. (E.g. <sftp://example.com/~/foo.diff>).
if path[:3] == '/~/':
path = path[3:]
remote = '%s%s:%s' % (user, urlo.hostname, path)
cmd = '%s %s %s %s' % (basecmd, port, remote, lpath)
bb.fetch2.check_network_access(d, cmd, ud.url)
runfetchcmd(cmd, d)
return True

View File

@@ -0,0 +1,125 @@
# ex:ts=4:sw=4:sts=4:et
# -*- tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*-
'''
BitBake 'Fetch' implementations
This implementation is for Secure Shell (SSH), and attempts to comply with the
IETF secsh internet draft:
http://tools.ietf.org/wg/secsh/draft-ietf-secsh-scp-sftp-ssh-uri/
Currently does not support the sftp parameters, as this uses scp
Also does not support the 'fingerprint' connection parameter.
Please note that '/' is used as host, path separator not ':' as you may
be used to, also '~' can be used to specify user HOME, but again after '/'
Example SRC_URI:
SRC_URI = "ssh://user@host.example.com/dir/path/file.txt"
SRC_URI = "ssh://user@host.example.com/~/file.txt"
'''
# Copyright (C) 2006 OpenedHand Ltd.
#
#
# Based in part on svk.py:
# Copyright (C) 2006 Holger Hans Peter Freyther
# Based on svn.py:
# Copyright (C) 2003, 2004 Chris Larson
# Based on functions from the base bb module:
# Copyright 2003 Holger Schurig
#
#
# 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 re, os
from bb.fetch2 import FetchMethod
from bb.fetch2 import FetchError
from bb.fetch2 import logger
from bb.fetch2 import runfetchcmd
__pattern__ = re.compile(r'''
\s* # Skip leading whitespace
ssh:// # scheme
( # Optional username/password block
(?P<user>\S+) # username
(:(?P<pass>\S+))? # colon followed by the password (optional)
)?
(?P<cparam>(;[^;]+)*)? # connection parameters block (optional)
@
(?P<host>\S+?) # non-greedy match of the host
(:(?P<port>[0-9]+))? # colon followed by the port (optional)
/
(?P<path>[^;]+) # path on the remote system, may be absolute or relative,
# and may include the use of '~' to reference the remote home
# directory
(?P<sparam>(;[^;]+)*)? # parameters block (optional)
$
''', re.VERBOSE)
class SSH(FetchMethod):
'''Class to fetch a module or modules via Secure Shell'''
def supports(self, urldata, d):
return __pattern__.match(urldata.url) != None
def supports_checksum(self, urldata):
return False
def urldata_init(self, urldata, d):
if 'protocol' in urldata.parm and urldata.parm['protocol'] == 'git':
raise bb.fetch2.ParameterError(
"Invalid protocol - if you wish to fetch from a git " +
"repository using ssh, you need to use " +
"git:// prefix with protocol=ssh", urldata.url)
m = __pattern__.match(urldata.url)
path = m.group('path')
host = m.group('host')
urldata.localpath = os.path.join(d.getVar('DL_DIR'),
os.path.basename(os.path.normpath(path)))
def download(self, urldata, d):
dldir = d.getVar('DL_DIR')
m = __pattern__.match(urldata.url)
path = m.group('path')
host = m.group('host')
port = m.group('port')
user = m.group('user')
password = m.group('pass')
if port:
portarg = '-P %s' % port
else:
portarg = ''
if user:
fr = user
if password:
fr += ':%s' % password
fr += '@%s' % host
else:
fr = host
fr += ':%s' % path
cmd = 'scp -B -r %s %s %s/' % (
portarg,
fr,
dldir
)
bb.fetch2.check_network_access(d, cmd, urldata.url)
runfetchcmd(cmd, d)

View File

@@ -0,0 +1,193 @@
# ex:ts=4:sw=4:sts=4:et
# -*- tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*-
"""
BitBake 'Fetch' implementation for svn.
"""
# Copyright (C) 2003, 2004 Chris Larson
# Copyright (C) 2004 Marcin Juszkiewicz
#
# 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.
#
# Based on functions from the base bb module, Copyright 2003 Holger Schurig
import os
import sys
import logging
import bb
import re
from bb.fetch2 import FetchMethod
from bb.fetch2 import FetchError
from bb.fetch2 import MissingParameterError
from bb.fetch2 import runfetchcmd
from bb.fetch2 import logger
class Svn(FetchMethod):
"""Class to fetch a module or modules from svn repositories"""
def supports(self, ud, d):
"""
Check to see if a given url can be fetched with svn.
"""
return ud.type in ['svn']
def urldata_init(self, ud, d):
"""
init svn specific variable within url data
"""
if not "module" in ud.parm:
raise MissingParameterError('module', ud.url)
ud.basecmd = d.getVar('FETCHCMD_svn')
ud.module = ud.parm["module"]
if not "path_spec" in ud.parm:
ud.path_spec = ud.module
else:
ud.path_spec = ud.parm["path_spec"]
# Create paths to svn checkouts
relpath = self._strip_leading_slashes(ud.path)
ud.pkgdir = os.path.join(d.expand('${SVNDIR}'), ud.host, relpath)
ud.moddir = os.path.join(ud.pkgdir, ud.module)
ud.setup_revisions(d)
if 'rev' in ud.parm:
ud.revision = ud.parm['rev']
ud.localfile = d.expand('%s_%s_%s_%s_.tar.gz' % (ud.module.replace('/', '.'), ud.host, ud.path.replace('/', '.'), ud.revision))
def _buildsvncommand(self, ud, d, command):
"""
Build up an svn commandline based on ud
command is "fetch", "update", "info"
"""
proto = ud.parm.get('protocol', 'svn')
svn_ssh = None
if proto == "svn+ssh" and "ssh" in ud.parm:
svn_ssh = ud.parm["ssh"]
svnroot = ud.host + ud.path
options = []
options.append("--no-auth-cache")
if ud.user:
options.append("--username %s" % ud.user)
if ud.pswd:
options.append("--password %s" % ud.pswd)
if command == "info":
svncmd = "%s info %s %s://%s/%s/" % (ud.basecmd, " ".join(options), proto, svnroot, ud.module)
elif command == "log1":
svncmd = "%s log --limit 1 %s %s://%s/%s/" % (ud.basecmd, " ".join(options), proto, svnroot, ud.module)
else:
suffix = ""
if ud.revision:
options.append("-r %s" % ud.revision)
suffix = "@%s" % (ud.revision)
if command == "fetch":
transportuser = ud.parm.get("transportuser", "")
svncmd = "%s co %s %s://%s%s/%s%s %s" % (ud.basecmd, " ".join(options), proto, transportuser, svnroot, ud.module, suffix, ud.path_spec)
elif command == "update":
svncmd = "%s update %s" % (ud.basecmd, " ".join(options))
else:
raise FetchError("Invalid svn command %s" % command, ud.url)
if svn_ssh:
svncmd = "SVN_SSH=\"%s\" %s" % (svn_ssh, svncmd)
return svncmd
def download(self, ud, d):
"""Fetch url"""
logger.debug(2, "Fetch: checking for module directory '" + ud.moddir + "'")
if os.access(os.path.join(ud.moddir, '.svn'), os.R_OK):
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", "")
if scmdata == "keep":
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)
def clean(self, ud, d):
""" Clean SVN specific files and dirs """
bb.utils.remove(ud.localpath)
bb.utils.remove(ud.moddir, True)
def supports_srcrev(self):
return True
def _revision_key(self, ud, d, name):
"""
Return a unique key for the url
"""
return "svn:" + ud.moddir
def _latest_revision(self, ud, d, name):
"""
Return the latest upstream revision number
"""
bb.fetch2.check_network_access(d, self._buildsvncommand(ud, d, "log1"), ud.url)
output = runfetchcmd("LANG=C LC_ALL=C " + self._buildsvncommand(ud, d, "log1"), d, True)
# skip the first line, as per output of svn log
# then we expect the revision on the 2nd line
revision = re.search('^r([0-9]*)', output.splitlines()[1]).group(1)
return revision
def sortable_revision(self, ud, d, name):
"""
Return a sortable revision number which in our case is the revision number
"""
return False, self._build_revision(ud, d)
def _build_revision(self, ud, d):
return ud.revision

View File

@@ -0,0 +1,614 @@
# ex:ts=4:sw=4:sts=4:et
# -*- tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*-
"""
BitBake 'Fetch' implementations
Classes for obtaining upstream sources for the
BitBake build tools.
"""
# Copyright (C) 2003, 2004 Chris Larson
#
# 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.
#
# Based on functions from the base bb module, Copyright 2003 Holger Schurig
import re
import tempfile
import subprocess
import os
import logging
import bb
import bb.progress
import urllib.request, urllib.parse, urllib.error
from bb.fetch2 import FetchMethod
from bb.fetch2 import FetchError
from bb.fetch2 import logger
from bb.fetch2 import runfetchcmd
from bb.utils import export_proxies
from bs4 import BeautifulSoup
from bs4 import SoupStrainer
class WgetProgressHandler(bb.progress.LineFilterProgressHandler):
"""
Extract progress information from wget output.
Note: relies on --progress=dot (with -v or without -q/-nv) being
specified on the wget command line.
"""
def __init__(self, d):
super(WgetProgressHandler, self).__init__(d)
# Send an initial progress event so the bar gets shown
self._fire_progress(0)
def writeline(self, line):
percs = re.findall(r'(\d+)%\s+([\d.]+[A-Z])', line)
if percs:
progress = int(percs[-1][0])
rate = percs[-1][1] + '/s'
self.update(progress, rate)
return False
return True
class Wget(FetchMethod):
"""Class to fetch urls via 'wget'"""
def supports(self, ud, d):
"""
Check to see if a given url can be fetched with wget.
"""
return ud.type in ['http', 'https', 'ftp']
def recommends_checksum(self, urldata):
return True
def urldata_init(self, ud, d):
if 'protocol' in ud.parm:
if ud.parm['protocol'] == 'git':
raise bb.fetch2.ParameterError("Invalid protocol - if you wish to fetch from a git repository using http, you need to instead use the git:// prefix with protocol=http", ud.url)
if 'downloadfilename' in ud.parm:
ud.basename = ud.parm['downloadfilename']
else:
ud.basename = os.path.basename(ud.path)
ud.localfile = d.expand(urllib.parse.unquote(ud.basename))
if not ud.localfile:
ud.localfile = d.expand(urllib.parse.unquote(ud.host + ud.path).replace("/", "."))
self.basecmd = d.getVar("FETCHCMD_wget") or "/usr/bin/env wget -t 2 -T 30 --passive-ftp --no-check-certificate"
def _runwget(self, ud, d, command, quiet):
progresshandler = WgetProgressHandler(d)
logger.debug(2, "Fetching %s using command '%s'" % (ud.url, command))
bb.fetch2.check_network_access(d, command, ud.url)
runfetchcmd(command + ' --progress=dot -v', d, quiet, log=progresshandler)
def download(self, ud, d):
"""Fetch urls"""
fetchcmd = self.basecmd
if 'downloadfilename' in ud.parm:
dldir = d.getVar("DL_DIR")
bb.utils.mkdirhier(os.path.dirname(dldir + os.sep + ud.localfile))
fetchcmd += " -O " + dldir + os.sep + ud.localfile
if ud.user and ud.pswd:
fetchcmd += " --user=%s --password=%s --auth-no-challenge" % (ud.user, ud.pswd)
uri = ud.url.split(";")[0]
if os.path.exists(ud.localpath):
# file exists, but we didnt complete it.. trying again..
fetchcmd += d.expand(" -c -P ${DL_DIR} '%s'" % uri)
else:
fetchcmd += d.expand(" -P ${DL_DIR} '%s'" % uri)
self._runwget(ud, d, fetchcmd, False)
# Sanity check since wget can pretend it succeed when it didn't
# Also, this used to happen if sourceforge sent us to the mirror page
if not os.path.exists(ud.localpath):
raise FetchError("The fetch command returned success for url %s but %s doesn't exist?!" % (uri, ud.localpath), uri)
if os.path.getsize(ud.localpath) == 0:
os.remove(ud.localpath)
raise FetchError("The fetch of %s resulted in a zero size file?! Deleting and failing since this isn't right." % (uri), uri)
return True
def checkstatus(self, fetch, ud, d, try_again=True):
import urllib.request, urllib.error, urllib.parse, socket, http.client
from urllib.response import addinfourl
from bb.fetch2 import FetchConnectionCache
class HTTPConnectionCache(http.client.HTTPConnection):
if fetch.connection_cache:
def connect(self):
"""Connect to the host and port specified in __init__."""
sock = fetch.connection_cache.get_connection(self.host, self.port)
if sock:
self.sock = sock
else:
self.sock = socket.create_connection((self.host, self.port),
self.timeout, self.source_address)
fetch.connection_cache.add_connection(self.host, self.port, self.sock)
if self._tunnel_host:
self._tunnel()
class CacheHTTPHandler(urllib.request.HTTPHandler):
def http_open(self, req):
return self.do_open(HTTPConnectionCache, req)
def do_open(self, http_class, req):
"""Return an addinfourl object for the request, using http_class.
http_class must implement the HTTPConnection API from httplib.
The addinfourl return value is a file-like object. It also
has methods and attributes including:
- info(): return a mimetools.Message object for the headers
- geturl(): return the original request URL
- code: HTTP status code
"""
host = req.host
if not host:
raise urlllib2.URLError('no host given')
h = http_class(host, timeout=req.timeout) # will parse host:port
h.set_debuglevel(self._debuglevel)
headers = dict(req.unredirected_hdrs)
headers.update(dict((k, v) for k, v in list(req.headers.items())
if k not in headers))
# We want to make an HTTP/1.1 request, but the addinfourl
# class isn't prepared to deal with a persistent connection.
# It will try to read all remaining data from the socket,
# which will block while the server waits for the next request.
# So make sure the connection gets closed after the (only)
# request.
# Don't close connection when connection_cache is enabled,
if fetch.connection_cache is None:
headers["Connection"] = "close"
else:
headers["Connection"] = "Keep-Alive" # Works for HTTP/1.0
headers = dict(
(name.title(), val) for name, val in list(headers.items()))
if req._tunnel_host:
tunnel_headers = {}
proxy_auth_hdr = "Proxy-Authorization"
if proxy_auth_hdr in headers:
tunnel_headers[proxy_auth_hdr] = headers[proxy_auth_hdr]
# Proxy-Authorization should not be sent to origin
# server.
del headers[proxy_auth_hdr]
h.set_tunnel(req._tunnel_host, headers=tunnel_headers)
try:
h.request(req.get_method(), req.selector, req.data, headers)
except socket.error as err: # XXX what error?
# Don't close connection when cache is enabled.
if fetch.connection_cache is None:
h.close()
raise urllib.error.URLError(err)
else:
try:
r = h.getresponse(buffering=True)
except TypeError: # buffering kw not supported
r = h.getresponse()
# Pick apart the HTTPResponse object to get the addinfourl
# object initialized properly.
# Wrap the HTTPResponse object in socket's file object adapter
# for Windows. That adapter calls recv(), so delegate recv()
# to read(). This weird wrapping allows the returned object to
# have readline() and readlines() methods.
# XXX It might be better to extract the read buffering code
# out of socket._fileobject() and into a base class.
r.recv = r.read
# no data, just have to read
r.read()
class fp_dummy(object):
def read(self):
return ""
def readline(self):
return ""
def close(self):
pass
resp = addinfourl(fp_dummy(), r.msg, req.get_full_url())
resp.code = r.status
resp.msg = r.reason
# Close connection when server request it.
if fetch.connection_cache is not None:
if 'Connection' in r.msg and r.msg['Connection'] == 'close':
fetch.connection_cache.remove_connection(h.host, h.port)
return resp
class HTTPMethodFallback(urllib.request.BaseHandler):
"""
Fallback to GET if HEAD is not allowed (405 HTTP error)
"""
def http_error_405(self, req, fp, code, msg, headers):
fp.read()
fp.close()
newheaders = dict((k,v) for k,v in list(req.headers.items())
if k.lower() not in ("content-length", "content-type"))
return self.parent.open(urllib.request.Request(req.get_full_url(),
headers=newheaders,
origin_req_host=req.origin_req_host,
unverifiable=True))
"""
Some servers (e.g. GitHub archives, hosted on Amazon S3) return 403
Forbidden when they actually mean 405 Method Not Allowed.
"""
http_error_403 = http_error_405
"""
Some servers (e.g. FusionForge) returns 406 Not Acceptable when they
actually mean 405 Method Not Allowed.
"""
http_error_406 = http_error_405
class FixedHTTPRedirectHandler(urllib.request.HTTPRedirectHandler):
"""
urllib2.HTTPRedirectHandler resets the method to GET on redirect,
when we want to follow redirects using the original method.
"""
def redirect_request(self, req, fp, code, msg, headers, newurl):
newreq = urllib.request.HTTPRedirectHandler.redirect_request(self, req, fp, code, msg, headers, newurl)
newreq.get_method = lambda: req.get_method()
return newreq
exported_proxies = export_proxies(d)
handlers = [FixedHTTPRedirectHandler, HTTPMethodFallback]
if export_proxies:
handlers.append(urllib.request.ProxyHandler())
handlers.append(CacheHTTPHandler())
# XXX: Since Python 2.7.9 ssl cert validation is enabled by default
# see PEP-0476, this causes verification errors on some https servers
# so disable by default.
import ssl
if hasattr(ssl, '_create_unverified_context'):
handlers.append(urllib.request.HTTPSHandler(context=ssl._create_unverified_context()))
opener = urllib.request.build_opener(*handlers)
try:
uri = ud.url.split(";")[0]
r = urllib.request.Request(uri)
r.get_method = lambda: "HEAD"
def add_basic_auth(login_str, request):
'''Adds Basic auth to http request, pass in login:password as string'''
import base64
encodeuser = base64.b64encode(login_str.encode('utf-8')).decode("utf-8")
authheader = "Basic %s" % encodeuser
r.add_header("Authorization", authheader)
if ud.user:
add_basic_auth(ud.user, r)
try:
import netrc, urllib.parse
n = netrc.netrc()
login, unused, password = n.authenticators(urllib.parse.urlparse(uri).hostname)
add_basic_auth("%s:%s" % (login, password), r)
except (TypeError, ImportError, IOError, netrc.NetrcParseError):
pass
opener.open(r)
except urllib.error.URLError as e:
if try_again:
logger.debug(2, "checkstatus: trying again")
return self.checkstatus(fetch, ud, d, False)
else:
# debug for now to avoid spamming the logs in e.g. remote sstate searches
logger.debug(2, "checkstatus() urlopen failed: %s" % e)
return False
return True
def _parse_path(self, regex, s):
"""
Find and group name, version and archive type in the given string s
"""
m = regex.search(s)
if m:
pname = ''
pver = ''
ptype = ''
mdict = m.groupdict()
if 'name' in mdict.keys():
pname = mdict['name']
if 'pver' in mdict.keys():
pver = mdict['pver']
if 'type' in mdict.keys():
ptype = mdict['type']
bb.debug(3, "_parse_path: %s, %s, %s" % (pname, pver, ptype))
return (pname, pver, ptype)
return None
def _modelate_version(self, version):
if version[0] in ['.', '-']:
if version[1].isdigit():
version = version[1] + version[0] + version[2:len(version)]
else:
version = version[1:len(version)]
version = re.sub('-', '.', version)
version = re.sub('_', '.', version)
version = re.sub('(rc)+', '.1000.', version)
version = re.sub('(beta)+', '.100.', version)
version = re.sub('(alpha)+', '.10.', version)
if version[0] == 'v':
version = version[1:len(version)]
return version
def _vercmp(self, old, new):
"""
Check whether 'new' is newer than 'old' version. We use existing vercmp() for the
purpose. PE is cleared in comparison as it's not for build, and PR is cleared too
for simplicity as it's somehow difficult to get from various upstream format
"""
(oldpn, oldpv, oldsuffix) = old
(newpn, newpv, newsuffix) = new
"""
Check for a new suffix type that we have never heard of before
"""
if (newsuffix):
m = self.suffix_regex_comp.search(newsuffix)
if not m:
bb.warn("%s has a possible unknown suffix: %s" % (newpn, newsuffix))
return False
"""
Not our package so ignore it
"""
if oldpn != newpn:
return False
oldpv = self._modelate_version(oldpv)
newpv = self._modelate_version(newpv)
return bb.utils.vercmp(("0", oldpv, ""), ("0", newpv, ""))
def _fetch_index(self, uri, ud, d):
"""
Run fetch checkstatus to get directory information
"""
f = tempfile.NamedTemporaryFile()
agent = "Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.2.12) Gecko/20101027 Ubuntu/9.10 (karmic) Firefox/3.6.12"
fetchcmd = self.basecmd
fetchcmd += " -O " + f.name + " --user-agent='" + agent + "' '" + uri + "'"
try:
self._runwget(ud, d, fetchcmd, True)
fetchresult = f.read()
except bb.fetch2.BBFetchException:
fetchresult = ""
f.close()
return fetchresult
def _check_latest_version(self, url, package, package_regex, current_version, ud, d):
"""
Return the latest version of a package inside a given directory path
If error or no version, return ""
"""
valid = 0
version = ['', '', '']
bb.debug(3, "VersionURL: %s" % (url))
soup = BeautifulSoup(self._fetch_index(url, ud, d), "html.parser", parse_only=SoupStrainer("a"))
if not soup:
bb.debug(3, "*** %s NO SOUP" % (url))
return ""
for line in soup.find_all('a', href=True):
bb.debug(3, "line['href'] = '%s'" % (line['href']))
bb.debug(3, "line = '%s'" % (str(line)))
newver = self._parse_path(package_regex, line['href'])
if not newver:
newver = self._parse_path(package_regex, str(line))
if newver:
bb.debug(3, "Upstream version found: %s" % newver[1])
if valid == 0:
version = newver
valid = 1
elif self._vercmp(version, newver) < 0:
version = newver
pupver = re.sub('_', '.', version[1])
bb.debug(3, "*** %s -> UpstreamVersion = %s (CurrentVersion = %s)" %
(package, pupver or "N/A", current_version[1]))
if valid:
return pupver
return ""
def _check_latest_version_by_dir(self, dirver, package, package_regex,
current_version, ud, d):
"""
Scan every directory in order to get upstream version.
"""
version_dir = ['', '', '']
version = ['', '', '']
dirver_regex = re.compile("(?P<pfx>\D*)(?P<ver>(\d+[\.\-_])+(\d+))")
s = dirver_regex.search(dirver)
if s:
version_dir[1] = s.group('ver')
else:
version_dir[1] = dirver
dirs_uri = bb.fetch.encodeurl([ud.type, ud.host,
ud.path.split(dirver)[0], ud.user, ud.pswd, {}])
bb.debug(3, "DirURL: %s, %s" % (dirs_uri, package))
soup = BeautifulSoup(self._fetch_index(dirs_uri, ud, d), "html.parser", parse_only=SoupStrainer("a"))
if not soup:
return version[1]
for line in soup.find_all('a', href=True):
s = dirver_regex.search(line['href'].strip("/"))
if s:
sver = s.group('ver')
# When prefix is part of the version directory it need to
# ensure that only version directory is used so remove previous
# directories if exists.
#
# Example: pfx = '/dir1/dir2/v' and version = '2.5' the expected
# result is v2.5.
spfx = s.group('pfx').split('/')[-1]
version_dir_new = ['', sver, '']
if self._vercmp(version_dir, version_dir_new) <= 0:
dirver_new = spfx + sver
path = ud.path.replace(dirver, dirver_new, True) \
.split(package)[0]
uri = bb.fetch.encodeurl([ud.type, ud.host, path,
ud.user, ud.pswd, {}])
pupver = self._check_latest_version(uri,
package, package_regex, current_version, ud, d)
if pupver:
version[1] = pupver
version_dir = version_dir_new
return version[1]
def _init_regexes(self, package, ud, d):
"""
Match as many patterns as possible such as:
gnome-common-2.20.0.tar.gz (most common format)
gtk+-2.90.1.tar.gz
xf86-input-synaptics-12.6.9.tar.gz
dri2proto-2.3.tar.gz
blktool_4.orig.tar.gz
libid3tag-0.15.1b.tar.gz
unzip552.tar.gz
icu4c-3_6-src.tgz
genext2fs_1.3.orig.tar.gz
gst-fluendo-mp3
"""
# match most patterns which uses "-" as separator to version digits
pn_prefix1 = "[a-zA-Z][a-zA-Z0-9]*([-_][a-zA-Z]\w+)*\+?[-_]"
# a loose pattern such as for unzip552.tar.gz
pn_prefix2 = "[a-zA-Z]+"
# a loose pattern such as for 80325-quicky-0.4.tar.gz
pn_prefix3 = "[0-9]+[-]?[a-zA-Z]+"
# Save the Package Name (pn) Regex for use later
pn_regex = "(%s|%s|%s)" % (pn_prefix1, pn_prefix2, pn_prefix3)
# match version
pver_regex = "(([A-Z]*\d+[a-zA-Z]*[\.\-_]*)+)"
# match arch
parch_regex = "-source|_all_"
# src.rpm extension was added only for rpm package. Can be removed if the rpm
# packaged will always be considered as having to be manually upgraded
psuffix_regex = "(tar\.gz|tgz|tar\.bz2|zip|xz|tar\.lz|rpm|bz2|orig\.tar\.gz|tar\.xz|src\.tar\.gz|src\.tgz|svnr\d+\.tar\.bz2|stable\.tar\.gz|src\.rpm)"
# match name, version and archive type of a package
package_regex_comp = re.compile("(?P<name>%s?\.?v?)(?P<pver>%s)(?P<arch>%s)?[\.-](?P<type>%s$)"
% (pn_regex, pver_regex, parch_regex, psuffix_regex))
self.suffix_regex_comp = re.compile(psuffix_regex)
# compile regex, can be specific by package or generic regex
pn_regex = d.getVar('UPSTREAM_CHECK_REGEX')
if pn_regex:
package_custom_regex_comp = re.compile(pn_regex)
else:
version = self._parse_path(package_regex_comp, package)
if version:
package_custom_regex_comp = re.compile(
"(?P<name>%s)(?P<pver>%s)(?P<arch>%s)?[\.-](?P<type>%s)" %
(re.escape(version[0]), pver_regex, parch_regex, psuffix_regex))
else:
package_custom_regex_comp = None
return package_custom_regex_comp
def latest_versionstring(self, ud, d):
"""
Manipulate the URL and try to obtain the latest package version
sanity check to ensure same name and type.
"""
package = ud.path.split("/")[-1]
current_version = ['', d.getVar('PV'), '']
"""possible to have no version in pkg name, such as spectrum-fw"""
if not re.search("\d+", package):
current_version[1] = re.sub('_', '.', current_version[1])
current_version[1] = re.sub('-', '.', current_version[1])
return (current_version[1], '')
package_regex = self._init_regexes(package, ud, d)
if package_regex is None:
bb.warn("latest_versionstring: package %s don't match pattern" % (package))
return ('', '')
bb.debug(3, "latest_versionstring, regex: %s" % (package_regex.pattern))
uri = ""
regex_uri = d.getVar("UPSTREAM_CHECK_URI")
if not regex_uri:
path = ud.path.split(package)[0]
# search for version matches on folders inside the path, like:
# "5.7" in http://download.gnome.org/sources/${PN}/5.7/${PN}-${PV}.tar.gz
dirver_regex = re.compile("(?P<dirver>[^/]*(\d+\.)*\d+([-_]r\d+)*)/")
m = dirver_regex.search(path)
if m:
pn = d.getVar('PN')
dirver = m.group('dirver')
dirver_pn_regex = re.compile("%s\d?" % (re.escape(pn)))
if not dirver_pn_regex.search(dirver):
return (self._check_latest_version_by_dir(dirver,
package, package_regex, current_version, ud, d), '')
uri = bb.fetch.encodeurl([ud.type, ud.host, path, ud.user, ud.pswd, {}])
else:
uri = regex_uri
return (self._check_latest_version(uri, package, package_regex,
current_version, ud, d), '')

552
bitbake/lib/bb/main.py Executable file
View File

@@ -0,0 +1,552 @@
#!/usr/bin/env python
# ex:ts=4:sw=4:sts=4:et
# -*- tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*-
#
# Copyright (C) 2003, 2004 Chris Larson
# Copyright (C) 2003, 2004 Phil Blundell
# Copyright (C) 2003 - 2005 Michael 'Mickey' Lauer
# Copyright (C) 2005 Holger Hans Peter Freyther
# Copyright (C) 2005 ROAD GmbH
# Copyright (C) 2006 Richard Purdie
#
# 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 logging
import optparse
import warnings
import fcntl
import bb
from bb import event
import bb.msg
from bb import cooker
from bb import ui
from bb import server
from bb import cookerdata
logger = logging.getLogger("BitBake")
class BBMainException(Exception):
pass
def present_options(optionlist):
if len(optionlist) > 1:
return ' or '.join([', '.join(optionlist[:-1]), optionlist[-1]])
else:
return optionlist[0]
class BitbakeHelpFormatter(optparse.IndentedHelpFormatter):
def format_option(self, option):
# We need to do this here rather than in the text we supply to
# add_option() because we don't want to call list_extension_modules()
# on every execution (since it imports all of the modules)
# Note also that we modify option.help rather than the returned text
# - this is so that we don't have to re-format the text ourselves
if option.dest == 'ui':
valid_uis = list_extension_modules(bb.ui, 'main')
option.help = option.help.replace('@CHOICES@', present_options(valid_uis))
elif option.dest == 'servertype':
valid_server_types = list_extension_modules(bb.server, 'BitBakeServer')
option.help = option.help.replace('@CHOICES@', present_options(valid_server_types))
return optparse.IndentedHelpFormatter.format_option(self, option)
def list_extension_modules(pkg, checkattr):
"""
Lists extension modules in a specific Python package
(e.g. UIs, servers). NOTE: Calling this function will import all of the
submodules of the specified module in order to check for the specified
attribute; this can have unusual side-effects. As a result, this should
only be called when displaying help text or error messages.
Parameters:
pkg: previously imported Python package to list
checkattr: attribute to look for in module to determine if it's valid
as the type of extension you are looking for
"""
import pkgutil
pkgdir = os.path.dirname(pkg.__file__)
modules = []
for _, modulename, _ in pkgutil.iter_modules([pkgdir]):
if os.path.isdir(os.path.join(pkgdir, modulename)):
# ignore directories
continue
try:
module = __import__(pkg.__name__, fromlist=[modulename])
except:
# If we can't import it, it's not valid
continue
module_if = getattr(module, modulename)
if getattr(module_if, 'hidden_extension', False):
continue
if not checkattr or hasattr(module_if, checkattr):
modules.append(modulename)
return modules
def import_extension_module(pkg, modulename, checkattr):
try:
# Dynamically load the UI based on the ui name. Although we
# suggest a fixed set this allows you to have flexibility in which
# ones are available.
module = __import__(pkg.__name__, fromlist=[modulename])
return getattr(module, modulename)
except AttributeError:
modules = present_options(list_extension_modules(pkg, checkattr))
raise BBMainException('FATAL: Unable to import extension module "%s" from %s. '
'Valid extension modules: %s' % (modulename, pkg.__name__, modules))
# Display bitbake/OE warnings via the BitBake.Warnings logger, ignoring others"""
warnlog = logging.getLogger("BitBake.Warnings")
_warnings_showwarning = warnings.showwarning
def _showwarning(message, category, filename, lineno, file=None, line=None):
if file is not None:
if _warnings_showwarning is not None:
_warnings_showwarning(message, category, filename, lineno, file, line)
else:
s = warnings.formatwarning(message, category, filename, lineno)
warnlog.warning(s)
warnings.showwarning = _showwarning
warnings.filterwarnings("ignore")
warnings.filterwarnings("default", module="(<string>$|(oe|bb)\.)")
warnings.filterwarnings("ignore", category=PendingDeprecationWarning)
warnings.filterwarnings("ignore", category=ImportWarning)
warnings.filterwarnings("ignore", category=DeprecationWarning, module="<string>$")
warnings.filterwarnings("ignore", message="With-statements now directly support multiple context managers")
class BitBakeConfigParameters(cookerdata.ConfigParameters):
def parseCommandLine(self, argv=sys.argv):
parser = optparse.OptionParser(
formatter=BitbakeHelpFormatter(),
version="BitBake Build Tool Core version %s" % bb.__version__,
usage="""%prog [options] [recipename/target recipe:do_task ...]
Executes the specified task (default is 'build') for a given set of target recipes (.bb files).
It is assumed there is a conf/bblayers.conf available in cwd or in BBPATH which
will provide the layer, BBFILES and other configuration information.""")
parser.add_option("-b", "--buildfile", action="store", dest="buildfile", default=None,
help="Execute tasks from a specific .bb recipe directly. WARNING: Does "
"not handle any dependencies from other recipes.")
parser.add_option("-k", "--continue", action="store_false", dest="abort", default=True,
help="Continue as much as possible after an error. While the target that "
"failed and anything depending on it cannot be built, as much as "
"possible will be built before stopping.")
parser.add_option("-a", "--tryaltconfigs", action="store_true",
dest="tryaltconfigs", default=False,
help="Continue with builds by trying to use alternative providers "
"where possible.")
parser.add_option("-f", "--force", action="store_true", dest="force", default=False,
help="Force the specified targets/task to run (invalidating any "
"existing stamp file).")
parser.add_option("-c", "--cmd", action="store", dest="cmd",
help="Specify the task to execute. The exact options available "
"depend on the metadata. Some examples might be 'compile'"
" or 'populate_sysroot' or 'listtasks' may give a list of "
"the tasks available.")
parser.add_option("-C", "--clear-stamp", action="store", dest="invalidate_stamp",
help="Invalidate the stamp for the specified task such as 'compile' "
"and then run the default task for the specified target(s).")
parser.add_option("-r", "--read", action="append", dest="prefile", default=[],
help="Read the specified file before bitbake.conf.")
parser.add_option("-R", "--postread", action="append", dest="postfile", default=[],
help="Read the specified file after bitbake.conf.")
parser.add_option("-v", "--verbose", action="store_true", dest="verbose", default=False,
help="Enable tracing of shell tasks (with 'set -x'). "
"Also print bb.note(...) messages to stdout (in "
"addition to writing them to ${T}/log.do_<task>).")
parser.add_option("-D", "--debug", action="count", dest="debug", default=0,
help="Increase the debug level. You can specify this "
"more than once. -D sets the debug level to 1, "
"where only bb.debug(1, ...) messages are printed "
"to stdout; -DD sets the debug level to 2, where "
"both bb.debug(1, ...) and bb.debug(2, ...) "
"messages are printed; etc. Without -D, no debug "
"messages are printed. Note that -D only affects "
"output to stdout. All debug messages are written "
"to ${T}/log.do_taskname, regardless of the debug "
"level.")
parser.add_option("-q", "--quiet", action="count", dest="quiet", default=0,
help="Output less log message data to the terminal. You can specify this more than once.")
parser.add_option("-n", "--dry-run", action="store_true", dest="dry_run", default=False,
help="Don't execute, just go through the motions.")
parser.add_option("-S", "--dump-signatures", action="append", dest="dump_signatures",
default=[], metavar="SIGNATURE_HANDLER",
help="Dump out the signature construction information, with no task "
"execution. The SIGNATURE_HANDLER parameter is passed to the "
"handler. Two common values are none and printdiff but the handler "
"may define more/less. none means only dump the signature, printdiff"
" means compare the dumped signature with the cached one.")
parser.add_option("-p", "--parse-only", action="store_true",
dest="parse_only", default=False,
help="Quit after parsing the BB recipes.")
parser.add_option("-s", "--show-versions", action="store_true",
dest="show_versions", default=False,
help="Show current and preferred versions of all recipes.")
parser.add_option("-e", "--environment", action="store_true",
dest="show_environment", default=False,
help="Show the global or per-recipe environment complete with information"
" about where variables were set/changed.")
parser.add_option("-g", "--graphviz", action="store_true", dest="dot_graph", default=False,
help="Save dependency tree information for the specified "
"targets in the dot syntax.")
parser.add_option("-I", "--ignore-deps", action="append",
dest="extra_assume_provided", default=[],
help="Assume these dependencies don't exist and are already provided "
"(equivalent to ASSUME_PROVIDED). Useful to make dependency "
"graphs more appealing")
parser.add_option("-l", "--log-domains", action="append", dest="debug_domains", default=[],
help="Show debug logging for the specified logging domains")
parser.add_option("-P", "--profile", action="store_true", dest="profile", default=False,
help="Profile the command and save reports.")
# @CHOICES@ is substituted out by BitbakeHelpFormatter above
parser.add_option("-u", "--ui", action="store", dest="ui",
default=os.environ.get('BITBAKE_UI', 'knotty'),
help="The user interface to use (@CHOICES@ - default %default).")
# @CHOICES@ is substituted out by BitbakeHelpFormatter above
parser.add_option("-t", "--servertype", action="store", dest="servertype",
default=["process", "xmlrpc"]["BBSERVER" in os.environ],
help="Choose which server type to use (@CHOICES@ - default %default).")
parser.add_option("", "--token", action="store", dest="xmlrpctoken",
default=os.environ.get("BBTOKEN"),
help="Specify the connection token to be used when connecting "
"to a remote server.")
parser.add_option("", "--revisions-changed", action="store_true",
dest="revisions_changed", default=False,
help="Set the exit code depending on whether upstream floating "
"revisions have changed or not.")
parser.add_option("", "--server-only", action="store_true",
dest="server_only", default=False,
help="Run bitbake without a UI, only starting a server "
"(cooker) process.")
parser.add_option("", "--foreground", action="store_true",
help="Run bitbake server in foreground.")
parser.add_option("-B", "--bind", action="store", dest="bind", default=False,
help="The name/address for the bitbake server to bind to.")
parser.add_option("-T", "--idle-timeout", type=int,
default=int(os.environ.get("BBTIMEOUT", "0")),
help="Set timeout to unload bitbake server due to inactivity")
parser.add_option("", "--no-setscene", action="store_true",
dest="nosetscene", default=False,
help="Do not run any setscene tasks. sstate will be ignored and "
"everything needed, built.")
parser.add_option("", "--setscene-only", action="store_true",
dest="setsceneonly", default=False,
help="Only run setscene tasks, don't run any real tasks.")
parser.add_option("", "--remote-server", action="store", dest="remote_server",
default=os.environ.get("BBSERVER"),
help="Connect to the specified server.")
parser.add_option("-m", "--kill-server", action="store_true",
dest="kill_server", default=False,
help="Terminate the remote server.")
parser.add_option("", "--observe-only", action="store_true",
dest="observe_only", default=False,
help="Connect to a server as an observing-only client.")
parser.add_option("", "--status-only", action="store_true",
dest="status_only", default=False,
help="Check the status of the remote bitbake server.")
parser.add_option("-w", "--write-log", action="store", dest="writeeventlog",
default=os.environ.get("BBEVENTLOG"),
help="Writes the event log of the build to a bitbake event json file. "
"Use '' (empty string) to assign the name automatically.")
parser.add_option("", "--runall", action="store", dest="runall",
help="Run the specified task for all build targets and their dependencies.")
options, targets = parser.parse_args(argv)
if options.quiet and options.verbose:
parser.error("options --quiet and --verbose are mutually exclusive")
if options.quiet and options.debug:
parser.error("options --quiet and --debug are mutually exclusive")
# use configuration files from environment variables
if "BBPRECONF" in os.environ:
options.prefile.append(os.environ["BBPRECONF"])
if "BBPOSTCONF" in os.environ:
options.postfile.append(os.environ["BBPOSTCONF"])
# fill in proper log name if not supplied
if options.writeeventlog is not None and len(options.writeeventlog) == 0:
from datetime import datetime
eventlog = "bitbake_eventlog_%s.json" % datetime.now().strftime("%Y%m%d%H%M%S")
options.writeeventlog = eventlog
# if BBSERVER says to autodetect, let's do that
if options.remote_server:
port = -1
if options.remote_server != 'autostart':
host, port = options.remote_server.split(":", 2)
port = int(port)
# use automatic port if port set to -1, means read it from
# the bitbake.lock file; this is a bit tricky, but we always expect
# to be in the base of the build directory if we need to have a
# chance to start the server later, anyway
if port == -1:
lock_location = "./bitbake.lock"
# we try to read the address at all times; if the server is not started,
# we'll try to start it after the first connect fails, below
try:
lf = open(lock_location, 'r')
remotedef = lf.readline()
[host, port] = remotedef.split(":")
port = int(port)
lf.close()
options.remote_server = remotedef
except Exception as e:
if options.remote_server != 'autostart':
raise BBMainException("Failed to read bitbake.lock (%s), invalid port" % str(e))
return options, targets[1:]
def start_server(servermodule, configParams, configuration, features):
server = servermodule.BitBakeServer()
single_use = not configParams.server_only and os.getenv('BBSERVER') != 'autostart'
if configParams.bind:
(host, port) = configParams.bind.split(':')
server.initServer((host, int(port)), single_use=single_use,
idle_timeout=configParams.idle_timeout)
configuration.interface = [server.serverImpl.host, server.serverImpl.port]
else:
server.initServer(single_use=single_use)
configuration.interface = []
try:
configuration.setServerRegIdleCallback(server.getServerIdleCB())
cooker = bb.cooker.BBCooker(configuration, features)
server.addcooker(cooker)
server.saveConnectionDetails()
except Exception as e:
while hasattr(server, "event_queue"):
import queue
try:
event = server.event_queue.get(block=False)
except (queue.Empty, IOError):
break
if isinstance(event, logging.LogRecord):
logger.handle(event)
raise
if not configParams.foreground:
server.detach()
cooker.shutdown()
cooker.lock.close()
return server
def bitbake_main(configParams, configuration):
# Python multiprocessing requires /dev/shm on Linux
if sys.platform.startswith('linux') and not os.access('/dev/shm', os.W_OK | os.X_OK):
raise BBMainException("FATAL: /dev/shm does not exist or is not writable")
# Unbuffer stdout to avoid log truncation in the event
# of an unorderly exit as well as to provide timely
# updates to log files for use with tail
try:
if sys.stdout.name == '<stdout>':
# Reopen with O_SYNC (unbuffered)
fl = fcntl.fcntl(sys.stdout.fileno(), fcntl.F_GETFL)
fl |= os.O_SYNC
fcntl.fcntl(sys.stdout.fileno(), fcntl.F_SETFL, fl)
except:
pass
configuration.setConfigParameters(configParams)
if configParams.server_only:
if configParams.servertype != "xmlrpc":
raise BBMainException("FATAL: If '--server-only' is defined, we must set the "
"servertype as 'xmlrpc'.\n")
if not configParams.bind:
raise BBMainException("FATAL: The '--server-only' option requires a name/address "
"to bind to with the -B option.\n")
else:
try:
#Checking that the port is a number
int(configParams.bind.split(":")[1])
except (ValueError,IndexError):
raise BBMainException(
"FATAL: Malformed host:port bind parameter")
if configParams.remote_server:
raise BBMainException("FATAL: The '--server-only' option conflicts with %s.\n" %
("the BBSERVER environment variable" if "BBSERVER" in os.environ \
else "the '--remote-server' option"))
elif configParams.foreground:
raise BBMainException("FATAL: The '--foreground' option can only be used "
"with --server-only.\n")
if configParams.bind and configParams.servertype != "xmlrpc":
raise BBMainException("FATAL: If '-B' or '--bind' is defined, we must "
"set the servertype as 'xmlrpc'.\n")
if configParams.remote_server and configParams.servertype != "xmlrpc":
raise BBMainException("FATAL: If '--remote-server' is defined, we must "
"set the servertype as 'xmlrpc'.\n")
if configParams.observe_only and (not configParams.remote_server or configParams.bind):
raise BBMainException("FATAL: '--observe-only' can only be used by UI clients "
"connecting to a server.\n")
if configParams.kill_server and not configParams.remote_server:
raise BBMainException("FATAL: '--kill-server' can only be used to "
"terminate a remote server")
if "BBDEBUG" in os.environ:
level = int(os.environ["BBDEBUG"])
if level > configuration.debug:
configuration.debug = level
bb.msg.init_msgconfig(configParams.verbose, configuration.debug,
configuration.debug_domains)
server, server_connection, ui_module = setup_bitbake(configParams, configuration)
if server_connection is None and configParams.kill_server:
return 0
if not configParams.server_only:
if configParams.status_only:
server_connection.terminate()
return 0
try:
return ui_module.main(server_connection.connection, server_connection.events,
configParams)
finally:
bb.event.ui_queue = []
server_connection.terminate()
else:
print("Bitbake server address: %s, server port: %s" % (server.serverImpl.host,
server.serverImpl.port))
if configParams.foreground:
server.serverImpl.serve_forever()
return 0
return 1
def setup_bitbake(configParams, configuration, extrafeatures=None):
# Ensure logging messages get sent to the UI as events
handler = bb.event.LogHandler()
if not configParams.status_only:
# In status only mode there are no logs and no UI
logger.addHandler(handler)
# Clear away any spurious environment variables while we stoke up the cooker
cleanedvars = bb.utils.clean_environment()
if configParams.server_only:
featureset = []
ui_module = None
else:
ui_module = import_extension_module(bb.ui, configParams.ui, 'main')
# Collect the feature set for the UI
featureset = getattr(ui_module, "featureSet", [])
if configParams.server_only:
for param in ('prefile', 'postfile'):
value = getattr(configParams, param)
if value:
setattr(configuration, "%s_server" % param, value)
param = "%s_server" % param
if extrafeatures:
for feature in extrafeatures:
if not feature in featureset:
featureset.append(feature)
servermodule = import_extension_module(bb.server,
configParams.servertype,
'BitBakeServer')
if configParams.remote_server:
if os.getenv('BBSERVER') == 'autostart':
if configParams.remote_server == 'autostart' or \
not servermodule.check_connection(configParams.remote_server, timeout=2):
configParams.bind = 'localhost:0'
srv = start_server(servermodule, configParams, configuration, featureset)
configParams.remote_server = '%s:%d' % tuple(configuration.interface)
bb.event.ui_queue = []
# we start a stub server that is actually a XMLRPClient that connects to a real server
from bb.server.xmlrpc import BitBakeXMLRPCClient
server = servermodule.BitBakeXMLRPCClient(configParams.observe_only,
configParams.xmlrpctoken)
server.saveConnectionDetails(configParams.remote_server)
else:
# we start a server with a given configuration
server = start_server(servermodule, configParams, configuration, featureset)
bb.event.ui_queue = []
if configParams.server_only:
server_connection = None
else:
try:
server_connection = server.establishConnection(featureset)
except Exception as e:
bb.fatal("Could not connect to server %s: %s" % (configParams.remote_server, str(e)))
if configParams.kill_server:
server_connection.connection.terminateServer()
bb.event.ui_queue = []
return None, None, None
server_connection.setupEventQueue()
# Restore the environment in case the UI needs it
for k in cleanedvars:
os.environ[k] = cleanedvars[k]
logger.removeHandler(handler)
return server, server_connection, ui_module

View File

@@ -0,0 +1,40 @@
# ex:ts=4:sw=4:sts=4:et
# -*- tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*-
#
#
# Copyright (C) 2006 Holger Hans Peter Freyther
#
# 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.
from bb.utils import better_compile, better_exec
def insert_method(modulename, code, fn, lineno):
"""
Add code of a module should be added. The methods
will be simply added, no checking will be done
"""
comp = better_compile(code, modulename, fn, lineno=lineno)
better_exec(comp, None, code, fn)
compilecache = {}
def compile_cache(code):
h = hash(code)
if h in compilecache:
return compilecache[h]
return None
def compile_cache_add(code, compileobj):
h = hash(code)
compilecache[h] = compileobj

View File

@@ -0,0 +1,268 @@
#!/usr/bin/env python
# ex:ts=4:sw=4:sts=4:et
# -*- tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*-
#
# Copyright (C) 2012 Robert Yang
#
# 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, logging, re, sys
import bb
logger = logging.getLogger("BitBake.Monitor")
def printErr(info):
logger.error("%s\n Disk space monitor will NOT be enabled" % info)
def convertGMK(unit):
""" Convert the space unit G, M, K, the unit is case-insensitive """
unitG = re.match('([1-9][0-9]*)[gG]\s?$', unit)
if unitG:
return int(unitG.group(1)) * (1024 ** 3)
unitM = re.match('([1-9][0-9]*)[mM]\s?$', unit)
if unitM:
return int(unitM.group(1)) * (1024 ** 2)
unitK = re.match('([1-9][0-9]*)[kK]\s?$', unit)
if unitK:
return int(unitK.group(1)) * 1024
unitN = re.match('([1-9][0-9]*)\s?$', unit)
if unitN:
return int(unitN.group(1))
else:
return None
def getMountedDev(path):
""" Get the device mounted at the path, uses /proc/mounts """
# Get the mount point of the filesystem containing path
# st_dev is the ID of device containing file
parentDev = os.stat(path).st_dev
currentDev = parentDev
# When the current directory's device is different from the
# parent's, then the current directory is a mount point
while parentDev == currentDev:
mountPoint = path
# Use dirname to get the parent's directory
path = os.path.dirname(path)
# Reach the "/"
if path == mountPoint:
break
parentDev= os.stat(path).st_dev
try:
with open("/proc/mounts", "r") as ifp:
for line in ifp:
procLines = line.rstrip('\n').split()
if procLines[1] == mountPoint:
return procLines[0]
except EnvironmentError:
pass
return None
def getDiskData(BBDirs, configuration):
"""Prepare disk data for disk space monitor"""
# Save the device IDs, need the ID to be unique (the dictionary's key is
# unique), so that when more than one directory is located on the same
# device, we just monitor it once
devDict = {}
for pathSpaceInode in BBDirs.split():
# The input format is: "dir,space,inode", dir is a must, space
# and inode are optional
pathSpaceInodeRe = re.match('([^,]*),([^,]*),([^,]*),?(.*)', pathSpaceInode)
if not pathSpaceInodeRe:
printErr("Invalid value in BB_DISKMON_DIRS: %s" % pathSpaceInode)
return None
action = pathSpaceInodeRe.group(1)
if action not in ("ABORT", "STOPTASKS", "WARN"):
printErr("Unknown disk space monitor action: %s" % action)
return None
path = os.path.realpath(pathSpaceInodeRe.group(2))
if not path:
printErr("Invalid path value in BB_DISKMON_DIRS: %s" % pathSpaceInode)
return None
# The disk space or inode is optional, but it should have a correct
# value once it is specified
minSpace = pathSpaceInodeRe.group(3)
if minSpace:
minSpace = convertGMK(minSpace)
if not minSpace:
printErr("Invalid disk space value in BB_DISKMON_DIRS: %s" % pathSpaceInodeRe.group(3))
return None
else:
# None means that it is not specified
minSpace = None
minInode = pathSpaceInodeRe.group(4)
if minInode:
minInode = convertGMK(minInode)
if not minInode:
printErr("Invalid inode value in BB_DISKMON_DIRS: %s" % pathSpaceInodeRe.group(4))
return None
else:
# None means that it is not specified
minInode = None
if minSpace is None and minInode is None:
printErr("No disk space or inode value in found BB_DISKMON_DIRS: %s" % pathSpaceInode)
return None
# mkdir for the directory since it may not exist, for example the
# DL_DIR may not exist at the very beginning
if not os.path.exists(path):
bb.utils.mkdirhier(path)
dev = getMountedDev(path)
# Use path/action as the key
devDict[(path, action)] = [dev, minSpace, minInode]
return devDict
def getInterval(configuration):
""" Get the disk space interval """
# The default value is 50M and 5K.
spaceDefault = 50 * 1024 * 1024
inodeDefault = 5 * 1024
interval = configuration.getVar("BB_DISKMON_WARNINTERVAL")
if not interval:
return spaceDefault, inodeDefault
else:
# The disk space or inode interval is optional, but it should
# have a correct value once it is specified
intervalRe = re.match('([^,]*),?\s*(.*)', interval)
if intervalRe:
intervalSpace = intervalRe.group(1)
if intervalSpace:
intervalSpace = convertGMK(intervalSpace)
if not intervalSpace:
printErr("Invalid disk space interval value in BB_DISKMON_WARNINTERVAL: %s" % intervalRe.group(1))
return None, None
else:
intervalSpace = spaceDefault
intervalInode = intervalRe.group(2)
if intervalInode:
intervalInode = convertGMK(intervalInode)
if not intervalInode:
printErr("Invalid disk inode interval value in BB_DISKMON_WARNINTERVAL: %s" % intervalRe.group(2))
return None, None
else:
intervalInode = inodeDefault
return intervalSpace, intervalInode
else:
printErr("Invalid interval value in BB_DISKMON_WARNINTERVAL: %s" % interval)
return None, None
class diskMonitor:
"""Prepare the disk space monitor data"""
def __init__(self, configuration):
self.enableMonitor = False
self.configuration = configuration
BBDirs = configuration.getVar("BB_DISKMON_DIRS") or None
if BBDirs:
self.devDict = getDiskData(BBDirs, configuration)
if self.devDict:
self.spaceInterval, self.inodeInterval = getInterval(configuration)
if self.spaceInterval and self.inodeInterval:
self.enableMonitor = True
# These are for saving the previous disk free space and inode, we
# use them to avoid printing too many warning messages
self.preFreeS = {}
self.preFreeI = {}
# This is for STOPTASKS and ABORT, to avoid printing the message
# repeatedly while waiting for the tasks to finish
self.checked = {}
for k in self.devDict:
self.preFreeS[k] = 0
self.preFreeI[k] = 0
self.checked[k] = False
if self.spaceInterval is None and self.inodeInterval is None:
self.enableMonitor = False
def check(self, rq):
""" Take action for the monitor """
if self.enableMonitor:
diskUsage = {}
for k, attributes in self.devDict.items():
path, action = k
dev, minSpace, minInode = attributes
st = os.statvfs(path)
# The available free space, integer number
freeSpace = st.f_bavail * st.f_frsize
# Send all relevant information in the event.
freeSpaceRoot = st.f_bfree * st.f_frsize
totalSpace = st.f_blocks * st.f_frsize
diskUsage[dev] = bb.event.DiskUsageSample(freeSpace, freeSpaceRoot, totalSpace)
if minSpace and freeSpace < minSpace:
# Always show warning, the self.checked would always be False if the action is WARN
if self.preFreeS[k] == 0 or self.preFreeS[k] - freeSpace > self.spaceInterval and not self.checked[k]:
logger.warning("The free space of %s (%s) is running low (%.3fGB left)" % \
(path, dev, freeSpace / 1024 / 1024 / 1024.0))
self.preFreeS[k] = freeSpace
if action == "STOPTASKS" and not self.checked[k]:
logger.error("No new tasks can be executed since the disk space monitor action is \"STOPTASKS\"!")
self.checked[k] = True
rq.finish_runqueue(False)
bb.event.fire(bb.event.DiskFull(dev, 'disk', freeSpace, path), self.configuration)
elif action == "ABORT" and not self.checked[k]:
logger.error("Immediately abort since the disk space monitor action is \"ABORT\"!")
self.checked[k] = True
rq.finish_runqueue(True)
bb.event.fire(bb.event.DiskFull(dev, 'disk', freeSpace, path), self.configuration)
# The free inodes, integer number
freeInode = st.f_favail
if minInode and freeInode < minInode:
# Some filesystems use dynamic inodes so can't run out
# (e.g. btrfs). This is reported by the inode count being 0.
if st.f_files == 0:
self.devDict[k][2] = None
continue
# Always show warning, the self.checked would always be False if the action is WARN
if self.preFreeI[k] == 0 or self.preFreeI[k] - freeInode > self.inodeInterval and not self.checked[k]:
logger.warning("The free inode of %s (%s) is running low (%.3fK left)" % \
(path, dev, freeInode / 1024.0))
self.preFreeI[k] = freeInode
if action == "STOPTASKS" and not self.checked[k]:
logger.error("No new tasks can be executed since the disk space monitor action is \"STOPTASKS\"!")
self.checked[k] = True
rq.finish_runqueue(False)
bb.event.fire(bb.event.DiskFull(dev, 'inode', freeInode, path), self.configuration)
elif action == "ABORT" and not self.checked[k]:
logger.error("Immediately abort since the disk space monitor action is \"ABORT\"!")
self.checked[k] = True
rq.finish_runqueue(True)
bb.event.fire(bb.event.DiskFull(dev, 'inode', freeInode, path), self.configuration)
bb.event.fire(bb.event.MonitorDiskEvent(diskUsage), self.configuration)
return

218
bitbake/lib/bb/msg.py Normal file
View File

@@ -0,0 +1,218 @@
# ex:ts=4:sw=4:sts=4:et
# -*- tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*-
"""
BitBake 'msg' implementation
Message handling infrastructure for bitbake
"""
# Copyright (C) 2006 Richard Purdie
#
# 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 sys
import copy
import logging
import collections
from itertools import groupby
import warnings
import bb
import bb.event
class BBLogFormatter(logging.Formatter):
"""Formatter which ensures that our 'plain' messages (logging.INFO + 1) are used as is"""
DEBUG3 = logging.DEBUG - 2
DEBUG2 = logging.DEBUG - 1
DEBUG = logging.DEBUG
VERBOSE = logging.INFO - 1
NOTE = logging.INFO
PLAIN = logging.INFO + 1
ERROR = logging.ERROR
WARNING = logging.WARNING
CRITICAL = logging.CRITICAL
levelnames = {
DEBUG3 : 'DEBUG',
DEBUG2 : 'DEBUG',
DEBUG : 'DEBUG',
VERBOSE: 'NOTE',
NOTE : 'NOTE',
PLAIN : '',
WARNING : 'WARNING',
ERROR : 'ERROR',
CRITICAL: 'ERROR',
}
color_enabled = False
BASECOLOR, BLACK, RED, GREEN, YELLOW, BLUE, MAGENTA, CYAN, WHITE = list(range(29,38))
COLORS = {
DEBUG3 : CYAN,
DEBUG2 : CYAN,
DEBUG : CYAN,
VERBOSE : BASECOLOR,
NOTE : BASECOLOR,
PLAIN : BASECOLOR,
WARNING : YELLOW,
ERROR : RED,
CRITICAL: RED,
}
BLD = '\033[1;%dm'
STD = '\033[%dm'
RST = '\033[0m'
def getLevelName(self, levelno):
try:
return self.levelnames[levelno]
except KeyError:
self.levelnames[levelno] = value = 'Level %d' % levelno
return value
def format(self, record):
record.levelname = self.getLevelName(record.levelno)
if record.levelno == self.PLAIN:
msg = record.getMessage()
else:
if self.color_enabled:
record = self.colorize(record)
msg = logging.Formatter.format(self, record)
if hasattr(record, 'bb_exc_formatted'):
msg += '\n' + ''.join(record.bb_exc_formatted)
elif hasattr(record, 'bb_exc_info'):
etype, value, tb = record.bb_exc_info
formatted = bb.exceptions.format_exception(etype, value, tb, limit=5)
msg += '\n' + ''.join(formatted)
return msg
def colorize(self, record):
color = self.COLORS[record.levelno]
if self.color_enabled and color is not None:
record = copy.copy(record)
record.levelname = "".join([self.BLD % color, record.levelname, self.RST])
record.msg = "".join([self.STD % color, record.msg, self.RST])
return record
def enable_color(self):
self.color_enabled = True
class BBLogFilter(object):
def __init__(self, handler, level, debug_domains):
self.stdlevel = level
self.debug_domains = debug_domains
loglevel = level
for domain in debug_domains:
if debug_domains[domain] < loglevel:
loglevel = debug_domains[domain]
handler.setLevel(loglevel)
handler.addFilter(self)
def filter(self, record):
if record.levelno >= self.stdlevel:
return True
if record.name in self.debug_domains and record.levelno >= self.debug_domains[record.name]:
return True
return False
class BBLogFilterStdErr(BBLogFilter):
def filter(self, record):
if not BBLogFilter.filter(self, record):
return False
if record.levelno >= logging.ERROR:
return True
return False
class BBLogFilterStdOut(BBLogFilter):
def filter(self, record):
if not BBLogFilter.filter(self, record):
return False
if record.levelno < logging.ERROR:
return True
return False
# Message control functions
#
loggerDefaultDebugLevel = 0
loggerDefaultVerbose = False
loggerVerboseLogs = False
loggerDefaultDomains = []
def init_msgconfig(verbose, debug, debug_domains=None):
"""
Set default verbosity and debug levels config the logger
"""
bb.msg.loggerDefaultDebugLevel = debug
bb.msg.loggerDefaultVerbose = verbose
if verbose:
bb.msg.loggerVerboseLogs = True
if debug_domains:
bb.msg.loggerDefaultDomains = debug_domains
else:
bb.msg.loggerDefaultDomains = []
def constructLogOptions():
debug = loggerDefaultDebugLevel
verbose = loggerDefaultVerbose
domains = loggerDefaultDomains
if debug:
level = BBLogFormatter.DEBUG - debug + 1
elif verbose:
level = BBLogFormatter.VERBOSE
else:
level = BBLogFormatter.NOTE
debug_domains = {}
for (domainarg, iterator) in groupby(domains):
dlevel = len(tuple(iterator))
debug_domains["BitBake.%s" % domainarg] = logging.DEBUG - dlevel + 1
return level, debug_domains
def addDefaultlogFilter(handler, cls = BBLogFilter, forcelevel=None):
level, debug_domains = constructLogOptions()
if forcelevel is not None:
level = forcelevel
cls(handler, level, debug_domains)
#
# Message handling functions
#
def fatal(msgdomain, msg):
if msgdomain:
logger = logging.getLogger("BitBake.%s" % msgdomain)
else:
logger = logging.getLogger("BitBake")
logger.critical(msg)
sys.exit(1)
def logger_create(name, output=sys.stderr, level=logging.INFO, preserve_handlers=False, color='auto'):
"""Standalone logger creation function"""
logger = logging.getLogger(name)
console = logging.StreamHandler(output)
format = bb.msg.BBLogFormatter("%(levelname)s: %(message)s")
if color == 'always' or (color == 'auto' and output.isatty()):
format.enable_color()
console.setFormatter(format)
if preserve_handlers:
logger.addHandler(console)
else:
logger.handlers = [console]
logger.setLevel(level)
return logger

View File

@@ -0,0 +1,255 @@
# http://code.activestate.com/recipes/577629-namedtupleabc-abstract-base-class-mix-in-for-named/
#!/usr/bin/env python
# Copyright (c) 2011 Jan Kaliszewski (zuo). Available under the MIT License.
"""
namedtuple_with_abc.py:
* named tuple mix-in + ABC (abstract base class) recipe,
* works under Python 2.6, 2.7 as well as 3.x.
Import this module to patch collections.namedtuple() factory function
-- enriching it with the 'abc' attribute (an abstract base class + mix-in
for named tuples) and decorating it with a wrapper that registers each
newly created named tuple as a subclass of namedtuple.abc.
How to import:
import collections, namedtuple_with_abc
or:
import namedtuple_with_abc
from collections import namedtuple
# ^ in this variant you must import namedtuple function
# *after* importing namedtuple_with_abc module
or simply:
from namedtuple_with_abc import namedtuple
Simple usage example:
class Credentials(namedtuple.abc):
_fields = 'username password'
def __str__(self):
return ('{0.__class__.__name__}'
'(username={0.username}, password=...)'.format(self))
print(Credentials("alice", "Alice's password"))
For more advanced examples -- see below the "if __name__ == '__main__':".
"""
import collections
from abc import ABCMeta, abstractproperty
from functools import wraps
from sys import version_info
__all__ = ('namedtuple',)
_namedtuple = collections.namedtuple
class _NamedTupleABCMeta(ABCMeta):
'''The metaclass for the abstract base class + mix-in for named tuples.'''
def __new__(mcls, name, bases, namespace):
fields = namespace.get('_fields')
for base in bases:
if fields is not None:
break
fields = getattr(base, '_fields', None)
if not isinstance(fields, abstractproperty):
basetuple = _namedtuple(name, fields)
bases = (basetuple,) + bases
namespace.pop('_fields', None)
namespace.setdefault('__doc__', basetuple.__doc__)
namespace.setdefault('__slots__', ())
return ABCMeta.__new__(mcls, name, bases, namespace)
exec(
# Python 2.x metaclass declaration syntax
"""class _NamedTupleABC(object):
'''The abstract base class + mix-in for named tuples.'''
__metaclass__ = _NamedTupleABCMeta
_fields = abstractproperty()""" if version_info[0] < 3 else
# Python 3.x metaclass declaration syntax
"""class _NamedTupleABC(metaclass=_NamedTupleABCMeta):
'''The abstract base class + mix-in for named tuples.'''
_fields = abstractproperty()"""
)
_namedtuple.abc = _NamedTupleABC
#_NamedTupleABC.register(type(version_info)) # (and similar, in the future...)
@wraps(_namedtuple)
def namedtuple(*args, **kwargs):
'''Named tuple factory with namedtuple.abc subclass registration.'''
cls = _namedtuple(*args, **kwargs)
_NamedTupleABC.register(cls)
return cls
collections.namedtuple = namedtuple
if __name__ == '__main__':
'''Examples and explanations'''
# Simple usage
class MyRecord(namedtuple.abc):
_fields = 'x y z' # such form will be transformed into ('x', 'y', 'z')
def _my_custom_method(self):
return list(self._asdict().items())
# (the '_fields' attribute belongs to the named tuple public API anyway)
rec = MyRecord(1, 2, 3)
print(rec)
print(rec._my_custom_method())
print(rec._replace(y=222))
print(rec._replace(y=222)._my_custom_method())
# Custom abstract classes...
class MyAbstractRecord(namedtuple.abc):
def _my_custom_method(self):
return list(self._asdict().items())
try:
MyAbstractRecord() # (abstract classes cannot be instantiated)
except TypeError as exc:
print(exc)
class AnotherAbstractRecord(MyAbstractRecord):
def __str__(self):
return '<<<{0}>>>'.format(super(AnotherAbstractRecord,
self).__str__())
# ...and their non-abstract subclasses
class MyRecord2(MyAbstractRecord):
_fields = 'a, b'
class MyRecord3(AnotherAbstractRecord):
_fields = 'p', 'q', 'r'
rec2 = MyRecord2('foo', 'bar')
print(rec2)
print(rec2._my_custom_method())
print(rec2._replace(b=222))
print(rec2._replace(b=222)._my_custom_method())
rec3 = MyRecord3('foo', 'bar', 'baz')
print(rec3)
print(rec3._my_custom_method())
print(rec3._replace(q=222))
print(rec3._replace(q=222)._my_custom_method())
# You can also subclass non-abstract ones...
class MyRecord33(MyRecord3):
def __str__(self):
return '< {0!r}, ..., {0!r} >'.format(self.p, self.r)
rec33 = MyRecord33('foo', 'bar', 'baz')
print(rec33)
print(rec33._my_custom_method())
print(rec33._replace(q=222))
print(rec33._replace(q=222)._my_custom_method())
# ...and even override the magic '_fields' attribute again
class MyRecord345(MyRecord3):
_fields = 'e f g h i j k'
rec345 = MyRecord345(1, 2, 3, 4, 3, 2, 1)
print(rec345)
print(rec345._my_custom_method())
print(rec345._replace(f=222))
print(rec345._replace(f=222)._my_custom_method())
# Mixing-in some other classes is also possible:
class MyMixIn(object):
def method(self):
return "MyMixIn.method() called"
def _my_custom_method(self):
return "MyMixIn._my_custom_method() called"
def count(self, item):
return "MyMixIn.count({0}) called".format(item)
def _asdict(self): # (cannot override a namedtuple method, see below)
return "MyMixIn._asdict() called"
class MyRecord4(MyRecord33, MyMixIn): # mix-in on the right
_fields = 'j k l x'
class MyRecord5(MyMixIn, MyRecord33): # mix-in on the left
_fields = 'j k l x y'
rec4 = MyRecord4(1, 2, 3, 2)
print(rec4)
print(rec4.method())
print(rec4._my_custom_method()) # MyRecord33's
print(rec4.count(2)) # tuple's
print(rec4._replace(k=222))
print(rec4._replace(k=222).method())
print(rec4._replace(k=222)._my_custom_method()) # MyRecord33's
print(rec4._replace(k=222).count(8)) # tuple's
rec5 = MyRecord5(1, 2, 3, 2, 1)
print(rec5)
print(rec5.method())
print(rec5._my_custom_method()) # MyMixIn's
print(rec5.count(2)) # MyMixIn's
print(rec5._replace(k=222))
print(rec5._replace(k=222).method())
print(rec5._replace(k=222)._my_custom_method()) # MyMixIn's
print(rec5._replace(k=222).count(2)) # MyMixIn's
# Note that behavior: the standard namedtuple methods cannot be
# overridden by a foreign mix-in -- even if the mix-in is declared
# as the leftmost base class (but, obviously, you can override them
# in the defined class or its subclasses):
print(rec4._asdict()) # (returns a dict, not "MyMixIn._asdict() called")
print(rec5._asdict()) # (returns a dict, not "MyMixIn._asdict() called")
class MyRecord6(MyRecord33):
_fields = 'j k l x y z'
def _asdict(self):
return "MyRecord6._asdict() called"
rec6 = MyRecord6(1, 2, 3, 1, 2, 3)
print(rec6._asdict()) # (this returns "MyRecord6._asdict() called")
# All that record classes are real subclasses of namedtuple.abc:
assert issubclass(MyRecord, namedtuple.abc)
assert issubclass(MyAbstractRecord, namedtuple.abc)
assert issubclass(AnotherAbstractRecord, namedtuple.abc)
assert issubclass(MyRecord2, namedtuple.abc)
assert issubclass(MyRecord3, namedtuple.abc)
assert issubclass(MyRecord33, namedtuple.abc)
assert issubclass(MyRecord345, namedtuple.abc)
assert issubclass(MyRecord4, namedtuple.abc)
assert issubclass(MyRecord5, namedtuple.abc)
assert issubclass(MyRecord6, namedtuple.abc)
# ...but abstract ones are not subclasses of tuple
# (and this is what you probably want):
assert not issubclass(MyAbstractRecord, tuple)
assert not issubclass(AnotherAbstractRecord, tuple)
assert issubclass(MyRecord, tuple)
assert issubclass(MyRecord2, tuple)
assert issubclass(MyRecord3, tuple)
assert issubclass(MyRecord33, tuple)
assert issubclass(MyRecord345, tuple)
assert issubclass(MyRecord4, tuple)
assert issubclass(MyRecord5, tuple)
assert issubclass(MyRecord6, tuple)
# Named tuple classes created with namedtuple() factory function
# (in the "traditional" way) are registered as "virtual" subclasses
# of namedtuple.abc:
MyTuple = namedtuple('MyTuple', 'a b c')
mt = MyTuple(1, 2, 3)
assert issubclass(MyTuple, namedtuple.abc)
assert isinstance(mt, namedtuple.abc)

Some files were not shown because too many files have changed in this diff Show More