<feed xmlns='http://www.w3.org/2005/Atom'>
<title>buildroot/linux/Config.tools.in, branch 2017.08</title>
<subtitle>OpenPOWER buildroot sources</subtitle>
<id>https://git.raptorcs.com/git/buildroot/atom?h=2017.08</id>
<link rel='self' href='https://git.raptorcs.com/git/buildroot/atom?h=2017.08'/>
<link rel='alternate' type='text/html' href='https://git.raptorcs.com/git/buildroot/'/>
<updated>2016-09-22T10:32:34+00:00</updated>
<entry>
<title>linux/tools: make it a real, separate package</title>
<updated>2016-09-22T10:32:34+00:00</updated>
<author>
<name>Yann E. MORIN</name>
<email>yann.morin.1998@free.fr</email>
</author>
<published>2016-09-06T14:29:14+00:00</published>
<link rel='alternate' type='text/html' href='https://git.raptorcs.com/git/buildroot/commit/?id=20b144666909e5173d8531b3bb0e179d2254e6d7'/>
<id>urn:sha1:20b144666909e5173d8531b3bb0e179d2254e6d7</id>
<content type='text'>
The kernel source tree also contains the sources for various userland
tools, of which cpupower, perf or selftests.

Currently, we have support for building those tools as part of the
kernel build procedure. This looked the correct thing to do so far,
because, well, they *are* part of the kernel source tree and some
really have to be the same version as the kernel that will run.

However, this is causing quite a non-trivial-to-break circular
dependency in some configurations. For example, this defconfig fails to
build (similar to the one reported by Paul):

    BR2_arm=y
    BR2_cortex_a7=y
    BR2_ARM_FPU_NEON_VFPV4=y
    BR2_TOOLCHAIN_EXTERNAL=y
    BR2_INIT_SYSTEMD=y
    BR2_LINUX_KERNEL=y
    BR2_LINUX_KERNEL_CUSTOM_GIT=y
    BR2_LINUX_KERNEL_CUSTOM_REPO_URL="https://github.com/raspberrypi/linux.git"
    BR2_LINUX_KERNEL_CUSTOM_REPO_VERSION="26f3b72a9c049be10e6af196252283e1f6ab9d1f"
    BR2_LINUX_KERNEL_DEFCONFIG="bcm2709"
    BR2_PACKAGE_LINUX_TOOLS_CPUPOWER=y
    BR2_PACKAGE_CRYPTODEV=y
    BR2_PACKAGE_OPENSSL=y
    BR2_PACKAGE_LIBCURL=y

This causes a circular dependency, as explained by Thomas:

 - When libcurl is enabled, systemd depends on it

 - When OpenSSL is enabled, obviously, will use it for SSL support

 - When cryptodev-linux is enabled, OpenSSL will depend on it to use
   crypto accelerators supported in the kernel via cryptodev-linux.

 - cryptodev-linux being a kernel module, it depends on linux

 - linux by itself (the kernel) does not depend on pciutils, but the
   linux tool "cpupower" (managed in linux-tool-cpupower) depends on
   pciutils

 - pciutils depends on udev when available

 - udev is provided by systemd.

And indeed, during the build, we can see that make warns (it's only
reported as a *warning*, not as an actual error):

    [...]
    make[1]: Circular /home/ymorin/dev/buildroot/O/build/openssl-1.0.2h/.stamp_configured
    &lt;- cryptodev-linux dependency dropped.
    &gt;&gt;&gt; openssl 1.0.2h Downloading
    [...]

So the build fails later on, when openssl is actually built:

    eng_cryptodev.c:57:31: fatal error: crypto/cryptodev.h: No such file or directory
    compilation terminated.
    &lt;builtin&gt;: recipe for target 'eng_cryptodev.o' failed

Furthermore, graph-depends also detects the circular dependency, but
treats it as a hard-error:

    Recursion detected for  : cryptodev-linux
    which is a dependency of: openssl
    which is a dependency of: libcurl
    which is a dependency of: systemd
    which is a dependency of: udev
    which is a dependency of: pciutils
    which is a dependency of: linux
    which is a dependency of: cryptodev-linux
    Makefile:738: recipe for target 'graph-depends' failed

Of course, there is no way to break the loop without losing
functionality in either one of the involved packages *and* keep
our infrastructure and packages as-is.

The only solution is to break the loop at the linux-tools level, by
moving them away into their own package, so that the linux package will
no longer have the opportunity to depend on another package via a
dependency of one the tools.

All three linux tools are thus moved away to their own package.

The package infrastructure only knows of three types of packages: those
in package/ , in boot/ , in toolchain/ and the one in linux/ . So we
create that new linux-tools package in package/ so that we don't have to
fiddle with yet another special case in the infra. Still, we want its
configure options to appear in the kernel's sub-menu.

So, we make it a prompt-less package, with only the tools visible as
options of that package, but without the usual dependency on their
master symbol; they only depend on the Linux kernel.

Furthermore, because the kernel is such a huge pile of code, we would
not be very happy to extract it a second time just for the sake of a few
tools. We can't extract only the tools/ sub-directory from the kernel
source either, because some tools have hard-coded path to includes from
the kernel (arch and stuff).

Instead, we just use the linux source tree as our own build tree, and
ensure the linux tree is extracted and patched before linux-tools is
configured and built.

Signed-off-by: "Yann E. MORIN" &lt;yann.morin.1998@free.fr&gt;
Cc: Thomas Petazzoni &lt;thomas.petazzoni@free-electrons.com&gt;
Cc: Paul Ashford &lt;paul.ashford@zurria.co.uk&gt;
[Thomas:
 - fix typo #(@D) -&gt; $(@D)
 - fix the inclusion of the per-tool .mk files.]
Signed-off-by: Thomas Petazzoni &lt;thomas.petazzoni@free-electrons.com&gt;
</content>
</entry>
<entry>
<title>linux: cpupower needs gettext</title>
<updated>2016-08-19T09:26:43+00:00</updated>
<author>
<name>Yann E. MORIN</name>
<email>yann.morin.1998@free.fr</email>
</author>
<published>2016-08-19T09:09:53+00:00</published>
<link rel='alternate' type='text/html' href='https://git.raptorcs.com/git/buildroot/commit/?id=f55adea434876cf1ee2604abe367ed1b6c555faf'/>
<id>urn:sha1:f55adea434876cf1ee2604abe367ed1b6c555faf</id>
<content type='text'>
The cpupower linux tool needs gettext, always (even without locales).

We need to disable NLS, otherwise it tries to compile the .po files.
We also need to pass -lintl, otherwise it forgets to link with it
(because, the world is glibc-only, you did not know? And glibc does not
need we link with -lintl, so why would we? Oh, yes, we also reinvented
our super intelligent one-off Makefile rather than use one of the
standard buildsystems).

Fixes #9181:

      CC       utils/helpers/sysfs.o
    In file included from utils/helpers/amd.c:9:0: ./utils/helpers/helpers.h:13:21: fatal error: libintl.h: No such file or directory
     #include &lt;libintl.h&gt;
                         ^

Without NLS=false (yes, we could depend on host-gettext):

      MSGFMT   po/de.gmo
    make[3]: msgfmt: Command not found

Without LDFLAGS=-lintl:

      CC       cpupower
    ./utils/cpupower.o: In function `main':
    cpupower.c:(.text.startup+0x1a4): undefined reference to `libintl_textdomain'
    ./utils/idle_monitor/cpupower-monitor.o: In function `list_monitors':
    cpupower-monitor.c:(.text+0x5dc): undefined reference to `libintl_gettext'
    ./utils/cpupower-set.o: In function `cmd_set':
    cpupower-set.c:(.text+0x38): undefined reference to `libintl_textdomain'
    ./utils/cpupower-info.o: In function `cmd_info':
    cpupower-info.c:(.text+0x20): undefined reference to `libintl_textdomain'
    collect2: error: ld returned 1 exit status

Reported-by: Joergen Pihlflyckt &lt;Jorgen.Pihlflyckt@ajeco.fi&gt;
Signed-off-by: "Yann E. MORIN" &lt;yann.morin.1998@free.fr&gt;
Cc: Joergen Pihlflyckt &lt;Jorgen.Pihlflyckt@ajeco.fi&gt;
Signed-off-by: Thomas Petazzoni &lt;thomas.petazzoni@free-electrons.com&gt;
</content>
</entry>
<entry>
<title>linux: build and install kernel selftests</title>
<updated>2016-03-20T21:04:47+00:00</updated>
<author>
<name>Cyril Bur</name>
<email>cyrilbur@gmail.com</email>
</author>
<published>2016-03-16T03:26:33+00:00</published>
<link rel='alternate' type='text/html' href='https://git.raptorcs.com/git/buildroot/commit/?id=8143721c3eeb20bdee76d41d0b0cfc08dfb57717'/>
<id>urn:sha1:8143721c3eeb20bdee76d41d0b0cfc08dfb57717</id>
<content type='text'>
This patch adds the ability to compile and install the kernel
selftests into the target at /usr/lib/kselftests. The rationale behind
/usr/lib is that the selftests have subdirectories where they are
installed which makes them unsuitable to be placed in /usr/sbin as
this would result in /usr/sbin/kselftests/x/y/z. While the selftests
aren't libraries either, they don't achieve much as a standalone
binary so they can be considered to be a 'library of tests' making
/usr/lib sensible.

The selftests require that the kernel headers be installed into the
kernel build tree as some of the selftests have a hardcoded CFLAGS to
include kernel headers (CFLAGS += -I../../../../usr/include/). This is
most easily achieved by using the make ... headers_install inside the
kernel build dir.

This is likely to be a rarely used debugging/performance feature for
development and unlikely to be used in a production configuration.

Signed-off-by: Cyril Bur &lt;cyrilbur@gmail.com&gt;
Reviewed-by: "Yann E. MORIN" &lt;yann.morin.1998@free.fr&gt;
Tested-by: "Yann E. MORIN" &lt;yann.morin.1998@free.fr&gt;
[Thomas:
 - remove bash as a build dependency, it is only a runtime dependency.
 - fix typo in the Config.in help text, and rewrap
 - add missing 'depends on BR2_USE_MMU' dependency for the comment.]
Signed-off-by: Thomas Petazzoni &lt;thomas.petazzoni@free-electrons.com&gt;
</content>
</entry>
<entry>
<title>package/perf: migrate perf to use the new linux-tools infrastructure</title>
<updated>2015-07-14T21:28:06+00:00</updated>
<author>
<name>Romain Naour</name>
<email>romain.naour@openwide.fr</email>
</author>
<published>2015-07-14T17:35:14+00:00</published>
<link rel='alternate' type='text/html' href='https://git.raptorcs.com/git/buildroot/commit/?id=1326e7618571e1a27247e3aa4ef61dcd69f87c3e'/>
<id>urn:sha1:1326e7618571e1a27247e3aa4ef61dcd69f87c3e</id>
<content type='text'>
Remove the perf package and add legacy handling.

[Thomas:
  - improve the Config.in.legacy help text
  - improve the comment explaining why we pass O= when building perf]

Signed-off-by: Romain Naour &lt;romain.naour@openwide.fr&gt;
Reviewed-by: "Yann E. MORIN" &lt;yann.morin.1998@free.fr&gt;
Signed-off-by: Thomas Petazzoni &lt;thomas.petazzoni@free-electrons.com&gt;
</content>
</entry>
<entry>
<title>linux-tools: add cpupower</title>
<updated>2015-07-14T21:22:58+00:00</updated>
<author>
<name>Romain Naour</name>
<email>romain.naour@openwide.fr</email>
</author>
<published>2015-07-14T17:35:13+00:00</published>
<link rel='alternate' type='text/html' href='https://git.raptorcs.com/git/buildroot/commit/?id=f1863ede94c29e120d7ce900f7cce211f1e8633a'/>
<id>urn:sha1:f1863ede94c29e120d7ce900f7cce211f1e8633a</id>
<content type='text'>
This patch is based on the patch send by James Knight:
http://lists.busybox.net/pipermail/buildroot/2015-May/128754.html

Signed-off-by: Romain Naour &lt;romain.naour@openwide.fr&gt;
Cc: James Knight &lt;james.knight@rockwellcollins.com&gt;
Reviewed-by: "Yann E. MORIN" &lt;yann.morin.1998@free.fr&gt;
Signed-off-by: Thomas Petazzoni &lt;thomas.petazzoni@free-electrons.com&gt;
</content>
</entry>
</feed>
