This commit add an infrastructure to build linux kernel
tools available in the kernel sources.
Currently, the only linux kernel tool packaged in Buildroot
is perf and it's packaged as a separate generic package.
This is a problem for licence information raised in this
thread [1].
Since these tools require to build a Linux kernel, we can
use some hooks in linux package like we did for linux
extensions [2] and remove the perf package.
Steven Noonan [Tue, 14 Jul 2015 17:35:11 +0000 (19:35 +0200)]
package/perf: use correct definition of ARCH on x86_64
LINUX_MAKE_FLAGS defines ARCH=$(KERNEL_ARCH), and KERNEL_ARCH is x86_64 on
a 64-bit x86 kernel build. The perf Makefiles expect that the ARCH will be
"x86" on both 32-bit x86 and 64-bit x86.
I didn't experience issues with the Linux 3.14.x version of perf, but this
issue cropped up once I started building 3.19.x.
Thomas Petazzoni [Tue, 14 Jul 2015 16:17:09 +0000 (18:17 +0200)]
package: include package/skeleton/Config.in
This was missing from the patch introducing the skeleton package. It
was working fine, except that the skeleton package was not in the
global variable PACKAGES.
The main Makefile is modified to remove the skeleton support.
The 'dirs' target, will create the $(TARGET_DIR).
The file 'output/target/.root' doesn't exists anymore, as there's no
Make rule to statisfy.
The infrastructure are modified to filter host-skeleton.
It's needed becauses the host-dependencies are derived from the
dependencies of the target package where 'host-' is preprended to the
depedency name.
In the pkg-generic we add skeleton as a dependency to every package.
The whole system/system.mk is now removed at the profit of
package/skeleton/skeleton.mk
[Thomas:
- rebase on top of master and fix some minor conflicts
- remove the 'select BR2_PACKAGE_SKELETON' in
BR2_ROOTFS_SKELETON_DEFAULT and BR2_ROOTFS_SKELETON_CUSTOM, since
anyway the skeleton package is always enabled.
- fixup a few mistakes in the getty handling due to misnamed
variables.]
qpid-proton is using constructs that are not valid in python3, so we
must use a host python2 interpreter. To make this happen this commit
adds a dependency on host-python and explicitly tells CMake to use
$(HOST_DIR)/usr/bin/python2.
Alex Suykov [Sat, 23 May 2015 10:06:47 +0000 (13:06 +0300)]
ptpd2: systemd support
Following package and sysv initscript naming scheme,
the service is "ptpd2" instead of just "ptpd" version 2.
[Thomas:
- use relative symlink instead of an absolute symlink
- remove the -s option, which redirects stdout, since systemd will
take care of it
- add the -g option, to be consistent with what the init script is
using.]
Alex Suykov [Sat, 23 May 2015 10:06:21 +0000 (13:06 +0300)]
ptpd: systemd support
[Thomas:
- use relative symbolic link instead of absolute one
- remove the -S option, since redirecting stdout is not needed,
it's already taken care of by systemd. Suggested by Maxime
Hadjinlian.]
boot/barebox: check for config file before calling kconfig-package
If we check that the user provides a config file after we call to the
kconfig-package infra, the error message we get is the one for the
kconfig-package infra, not the custom error message we want to show to
the user.
So, only call kconfig-package after we do the check.
boot/at91boostrap3: check for config file before calling kconfig-package
If we check that the user provides a config file after we call to the
kconfig-package infra, the error message we get is the one for the
kconfig-package infra, not the custom error message we want to show to
the user.
So, only call kconfig-package after we do the check.
package/linux: check for config file before calling kconfig-package
If we check that the user provides a config file after we call to the
kconfig-package infra, the error message we get is the one for the
kconfig-package infra, not the custom error message we want to show to
the user.
So, only call kconfig-package after we do the check. Move the check with
the existing checks for the DTS, for consistency.
[Thomas: put the checks together, but right before the kconfig-package
call, rather than in the middle of the code, were the DTS related
tests were located.]
package/linux: don't enforce check for DTS when not building
Currently, this is triggering the error message:
make randconfig
make source
Limit the checks that enforce a DTS is set and at most one DTB is
appended to when we are actually building, like is done for the
configuration-file variables.
Following the introduction of the initscripts package in commit 89d39fc7a392530be043bac541ade0bef746edb6 ("initscripts: new package"),
the /etc/inittab file is no longer part of the skeleton, and therefore
is not always installed.
However, system/system.mk tweaks the inittab for getty and filesystem
remount as rw, without taking the precautions of whether the init
system is Busybox or SysV. This commit fixes that by adding the
necessary conditions around the code adjusting the inittab file.
Thomas Petazzoni [Mon, 13 Jul 2015 10:56:14 +0000 (12:56 +0200)]
toolchain-external: fix support of uClibc-ng toolchains
The uClibc-ng dynamic loader is called ld-uClibc.so.1, but gcc is not
patched specifically for uClibc-ng, so it continues to generate
binaries that expect the dynamic loader to be named ld-uClibc.so.0,
like with the original uClibc.
Therefore, when a uClibc-ng toolchain is used as an external
toolchain, we need to create an additional symbolic link to make
uClibc-ng systems work properly.
Currently, when one enables the "Only allow downloads from primary"
option, all the other mirror options are hidden (expected!) but the
LuaRocks and CPAN mirrors (bad!).
Thomas Petazzoni [Tue, 14 Jul 2015 00:23:59 +0000 (02:23 +0200)]
rpcbind: add missing dependency on host-pkgconf
rpcbind depends on libtirpc, which used to depend on
host-pkgconf. However, since commit aee57627b09d0955270a562b8adaa0ff88ef523b, the dependency of libtirpc
on host-pkgconf has been removed, because libtirpc no longer uses
PKG_CHECK_MODULES().
However, rpcbind does use PKG_CHECK_MODULES(). It used to work because
host-pkgconf was brought into the build by the dependency on libtirpc,
but that's no longer the case. Bottom line: we need to make rpcbind
depend on host-pkgconf, which is exactly what this commit does.
The /usr/share/X11/locale/locale.dir file is needed by libX11.
Removing it breaks locale support in X11. However, make removes
not only directories but also all files, which are not listed
in the BR2_ENABLE_LOCALE_WHITELIST.
This re-creates locale.dir database file where needed.
Signed-off-by: Valentine Barshak <[email protected]> Signed-off-by: Arnout Vandecappelle (Essensium/Mind) <[email protected]>
[Arnout: use a separate loop, and add some explanatory comments] Signed-off-by: Thomas Petazzoni <[email protected]>
The folder init.d is currently installed by default since it's part of
our skeleton.
This patch creates a package out of it and make busybox/sysvinit depends
on it.
This way, if you chose another init, you don't end up with a useless
init.d folder.
[Thomas:
- make the initscripts package selectable via a hidden bool
- remove some unneeded changes in sysvinit.mk.]
fs/iso9660: change the name of the tmp dir to be consistent
Currently, the generated rootfs will be called rootfs.iso9660, but the
temporary directory we create while building it is called
rootfs-iso9660.tmp. They are in different directories so it's not so
obvious, but still to be consistent it's better to call the temp dir
rootfs.iso9660.tmp.
package/dropbear: fix generating keys on RO file systems
dropbear generates its keys at the first connection, and wants to save
them in /etc/dropbear (not configurable).
Currently, our /etc/dropbear is a directory.
When the filesystem is read-only, dropbear can't save its keys, so
refuses all connections.
Fix that with:
- at build time, create /etc/dropbear as a symlink to
/var/run/dropbear
- at runtime, if the filesystem is RW (we can rm /etc/dropbear),
we replace the symlink with an actual directory; otherwise,
when the filesystem is RO (we can't rm /etc/dropbear), we create
/var/run/dropbear so the symlink points to an existing directory
Add /etc/profile.d/locale.sh script from Arch Linux to /etc/profile.
This script looks for locale.conf, sources it, and exports the LANG and
LC_* variables.
[Arnout: put in /etc/profile in the skeleton rather than making it
systemd specific.]
gcc5 defaults to -std=gnu11 which changes the inline semantics. This leads to
multiple definition error with 'extern inline'. See
https://gcc.gnu.org/gcc-5/porting_to.html for the details.
Be coherent with all the other ifeq check where there's no space.
>From the doc of Make, it should not cause any trouble, but coherence has
its own merit.
Vivien Didelot [Mon, 13 Jul 2015 18:50:45 +0000 (20:50 +0200)]
board/wandboard: add a genimage config
This patch adds a genimage config file and a post-image script for the
Wandboard, to generate a medium image "sdcard.img", ready to be booted.
The image contains the layout explained in the board readme.txt file:
U-Boot, its environment, and an Ext2 rootfs partition.
The defconfig has been slightly changed to enable this feature. Also
lighten the readme file since the config file is documented and simpler.
Tested on a Wandboard Solo.
Signed-off-by: Vivien Didelot <[email protected]> Signed-off-by: Arnout Vandecappelle (Essensium/Mind) <[email protected]>
[Arnout: change the name of the tmp dir, and remove it before using
it.] Signed-off-by: Thomas Petazzoni <[email protected]>
Sam bobroff [Tue, 19 May 2015 05:59:56 +0000 (15:59 +1000)]
powerpc-utils: optionally use librtas
Now that librtas is available, optionally use it with powerpc-utils to
enable it's RTAS dependant functionality. It is used by default, as
most distros do, but made optional because it adds several new programs
and significantly increases the size of the installed package.
[Thomas: propagate the glibc dependency from the librtas package, as
suggested by Romain Naour.]
Sam bobroff [Tue, 19 May 2015 05:59:55 +0000 (15:59 +1000)]
librtas: new package
[Thomas:
- make the package depend on glibc, since it needs execinfo.h
- use TARGET_CONFIGURE_OPTS instead of defining manually CC and LD
- add hash file
- remove useless empty newline.
Thanks to Romain Naour for the review!]
Thomas Petazzoni [Sun, 22 Feb 2015 13:39:00 +0000 (14:39 +0100)]
linux: adjust fixup logic for ktap
The ktap package requires some parts of the kernel tracing
infrastructure to be enabled, especially
CONFIG_EVENT_TRACING. However, this option is a blind option in the
kernel, so enabling it in linux.mk has no effect: we need to enable a
non-blind option that selects CONFIG_EVENT_TRACING. We've chosen to
select CONFIG_ENABLE_DEFAULT_TRACERS.
This fixes the build of ktap.
[Thomas: use CONFIG_ENABLE_DEFAULT_TRACERS as suggested by Arnout.]
Alex Suykov [Sat, 23 May 2015 10:02:24 +0000 (13:02 +0300)]
chrony: systemd support
systemd has its own NTP daemon, which must be disabled before
starting chrony. Possible (but unlikely) conflict with openntpd
is not marked in either package.
Thomas Petazzoni [Sat, 11 Jul 2015 12:52:52 +0000 (14:52 +0200)]
binutils: use binutils 2.24 by default on the target
When binutils is not built for the host, binutils.mk decides of the
version to be used when building binutils for the target. We're still
using the old 2.22 binutils version, but it's time to bump up to 2.24,
which we already use as the default version for the host.
The toolchain from the Cavium Networks Octeon SDK provides a sysroot
with library directories lib32, lib32-fp, lib64 and lib64-fp. The -fp
variants are used for processors with hardware floating point unit, such
as the Octeon III variants.
When specifying -march=octeon3 in BR2_TARGET_OPTIMIZATION, the toolchain
will use lib32-fp, but currently Buildroot does not accept that pattern.
This patch improves the matching by accepting lib(32|64)?([^/]*)? as lib
directory name.
Signed-off-by: Bai Yingjie <[email protected]>
[ThomasDS: update commit message] Signed-off-by: Thomas De Schampheleire <[email protected]>
[Thomas: add comment above the function being modified to illustrate
the various cases we try to handle.] Signed-off-by: Thomas Petazzoni <[email protected]>
Guido Martínez [Fri, 21 Nov 2014 16:19:03 +0000 (13:19 -0300)]
pkg-generic.mk: don't depend on external package permissions
Reset permissions for rsynced packages (when using OVERRIDE_SRCDIR) to
755/644. We do this under the assumption that source files shouldn't
care about their permissions, except possibly for the exec bit.
This guarantees that if a package uses 'rsync -a' or 'cp -p' to copy
a file from its build dir to the target, it'll end up with the same
permissions on the target every time.
Since the rsync of skeleton or rootfs now changes the permissions of
the copied files and directories, this may break existing setups that
rely on these permissions being kept. So add a release note explaining
how it should be done.
[Thomas: fixup commit log as suggested by Baruch.]
Guido Martínez [Fri, 21 Nov 2014 16:19:01 +0000 (13:19 -0300)]
Makefile: don't depend on current skeleton/overlay permissions
We use 'rsync -a' to copy the skeleton and overlays, so the target ends
up with the exact same permissions as on the repo. The problem is we
don't track these permissions, since Git doesn't allow for that (except
for the exec bit). This means users with different umasks at the time of
cloning could end up with different target permissions.
Fix this by using --chmod on rsync calls so we don't depend on the
current permission set for the skeleton and overlays. We do depend on
the exec bit, but that's fine since that one is tracked by Git.
If target has connection to the network it might be pretty useful to
have telnet connection to it instead of serial console or even in
addition to serial console.
This changes makes the busybox package automatically install an init
script, and tune the securetty file to make telnetd work when
CONFIG_FEATURE_TELNETD_STANDALONE is enabled in the Busybox
configuration.
[Thomas:
- don't create a new Buildroot Config.in option, just test if
CONFIG_FEATURE_TELNETD_STANDALONE is enabled or not in the Busybox
configuration
- move the securetty tuning in busybox.mk instead of system.mk
- use start-stop-daemon in the init script, in order to properly
implement the stop and restart actions
- misc other minor improvements in the init script.]
[[email protected]:
- don't use securetty
- drop stray variable BUSYBOX_SET_STANDALONE_TELNETD]
securetty is supposed to restrict the terminals root is allowed to
login from. As it happens, login from busybox (w/ securetty support)
is actually enforcing use of securetty, while login from util-linux
is completely ignoring securetty altogether.
Remove securetty from our skeleton altogether and stop worrying about
it.
Guido Martínez [Fri, 21 Nov 2014 16:19:00 +0000 (13:19 -0300)]
Makefile: don't depend on the umask
Some packages and BR itself create files and directories on the target
with cp/mkdir/etc which depend on the umask at the time of building.
To fix this, use a trick inside the Makefile which wraps all rules when
the umask is not 0022. This sets the umask at the top level, and then
the building process continues as usual.
[Thomas: add --no-print-directory, as suggested by Arnout.]
Also, change source of the package to git repository (and remove the hash,
sourceforce is clearly not a platform which can be trusted nowadays)
Rework the startup script to accomodate new rpc.statd
The startup scripts now uses rcp.statd -F for a startup in foreground,
also we avoid starting it twice, it makes rcp.statd crash the whole
script.
[Thomas: add patch to fix rpc.statd foreground/daemon mode backported
from upstream, and fix the S60nfs init script to not use the -F option
of rpc.statd.]
Document the 72 char limit on package description.
While describing a package I though that the tab and 2 spaces was
already doing the margin for wrapping the help test (ie 70 char when
wrapping to 80) but apparently the full text need to fit 72 columns.
So this patch propose to document that fact in the two places where
the Config.in format is described.