infra: centralize rsync exclude list for VCS files
Buildroot has three places where rsync is used:
1. to copy the target skeleton
2. to copy the rootfs overlay(s)
3. to copy overridden package sources
In all of these cases, we want to exclude version control files by default.
Place 1 and 2 used an identical set of explicit --exclude options, while
place 3 used the option --cvs-exclude. This last option, however, not only
excludes version control files, but also binary files (.o, .so) and any file
or directory named 'core' (a problem for the linux kernel that has several
directories with this name). Moreover, the exact list of excluded files when
using --cvs-exclude depends on the version of rsync.
This patch creates one global variable RSYNC_VCS_EXCLUSIONS that can be used
by the various rsync commands. It excludes the version control files of
svn, git, hg, cvs and bzr.
One of the use cases is for the 'local packages' to restore
the SCM info. Some packages use this information to generate
version info during build time. In this case, the local package
can have this hook to restore it by symbolic link for example.
For configurations using a toolchain that is preinstalled on
the host, <pkg>_SITE and <pkg>_SOURCE variables must be kept
empty to avoid downloading any toolchain package.
The actual implementation has been proposed by Thomas Petazzoni.
Config.in files: add missing dependencies to toolchain option comments
When a package A depends on config option B and toolchain option C, then
the comment that is given when C is not fulfilled should also depend on B.
For example:
config BR2_PACKAGE_A
depends on BR2_B
depends on BR2_LARGEFILE
depends on BR2_WCHAR
comment "A needs a toolchain w/ largefile, wchar"
depends on !BR2_LARGEFILE || !BR2_WCHAR
This comment should actually be:
comment "A needs a toolchain w/ largefile, wchar"
depends on BR2_B
depends on !BR2_LARGEFILE || !BR2_WCHAR
or if possible (typically when B is a package config option declared in that
same Config.in file):
if BR2_B
comment "A needs a toolchain w/ largefile, wchar"
depends on !BR2_LARGEFILE || !BR2_WCHAR
[other config options depending on B]
endif
Otherwise, the comment would be visible even though the other dependencies
are not met.
This patch adds such missing dependencies, and changes existing such
dependencies from
depends on BR2_BASE_DEP && !BR2_TOOLCHAIN_USES_GLIBC
to
depends on BR2_BASE_DEP
depends on !BR2_TOOLCHAIN_USES_GLIBC
so that (positive) base dependencies are separate from the (negative)
toolchain dependencies. This strategy makes it easier to write such comments
(because one can simply copy the base dependency from the actual package
config option), but also avoids complex and long boolean expressions.
Jerzy Grzegorek [Sat, 9 Nov 2013 00:21:21 +0000 (01:21 +0100)]
xorg: needs thread support
libpthread-stubs, libX11, and a few more xorg packages use threads. Since
almost all xorg packages depend on libX11 directory or indirectly, and
since the remaining ones are pretty useless on their own, just require
threads for xorg as a whole.
The thread dependency is kept in libpthread-stubs, because that package
will move out of the x11r7 directory later (pending patch by Spenser
Gilliland), so the dependency on threads will be required then.
Thierry Bultel [Sun, 10 Nov 2013 17:32:52 +0000 (18:32 +0100)]
Generation of locales: made call to tr more robust and added LOWERCASE macro
When calling 'tr' without quoting braces, bash can make really weird things
if there are existing 'single-letter-named' directories
eg:
thierry@thierry-desktop:~$ echo AAA | tr [A-Z] [a-z]
aaa
thierry@thierry-desktop:~$ mkdir m
thierry@thierry-desktop:~$ echo AAA | tr [A-Z] [a-z]
AAA
The (quick) analysis is that the callee (tr) argvs then
contain 'm' thus the translation does not work
Using quotes works around it:
thierry@thierry-desktop:~$ echo AAA | tr '[A-Z]' '[a-z]'
aaa
Thomas Petazzoni [Sun, 10 Nov 2013 15:01:42 +0000 (16:01 +0100)]
uclibc: fix MIPS variables
The BR2_UCLIBC_MIPS_ISA hidden Config.in variable defines which uClibc
config option should be enabled for a given MIPS architecture
variant. Therefore, using lower case names doesn't work: they should
be upper case, to match uClibc config option names. This commit makes
sure the mips32, mips32r2 and mips64 builds select the appropriate
uClibc configuration.
Peter Korsgaard [Sun, 10 Nov 2013 21:17:29 +0000 (22:17 +0100)]
openssh: bump version
From the announcement:
This release fixes a security bug:
* sshd(8): fix a memory corruption problem triggered during rekeying
when an AES-GCM cipher is selected. Full details of the vulnerability
are available at: http://www.openssh.com/txt/gcmrekey.adv
Config.in.legacy: select BR2_LEGACY for module-init-tools legacy option
Commit 94c72087f3 ("module-init-tools: remove package") removed the
module-init-tools package and therefore added the corresponding config
option in Config.in.legacy. However, the commit forgot to add the
"select BR2_LEGACY" that ensures the build cannot proceed until the
user has acknowledged the change (i.e kmod replacing
module-init-tools).
This commit adds this missing "select BR2_LEGACY".
qt: remove the BR2_PACKAGE_QT_JAVASCRIPTCORE option
The BR2_PACKAGE_QT_JAVASCRIPTCORE option was available to force the
activation or disabling of the JIT compiler in the Qt Javascript
interpreter. However, the JIT compiler is not available for all
architectures, so forcing its activation does not always
work. Moreover, Qt knows by itself for which architectures JIT support
is possible, and will automatically enable it if possible.
Therefore, this option was in fact useless, and causing build problems
when enabled on architectures for which the JIT support was not
available. This commit removes this option and there is no
replacement: Qt will enable JIT at compile time when possible.
Chris Zankel [Thu, 7 Nov 2013 22:22:12 +0000 (14:22 -0800)]
uclibc-snapshot: enable option UCLIBC_HAS_OBSTACK
Prior to uClibc commit f143f920694c, uClibc used to always include the
gnu obstack extension, which is used and required by many tools, such as
binutils.
Because of the change mentioned above, obstack is now optional, and got
disabled per default, so enable it in the uClibc snapshot configuration file.
Simon Dawson [Fri, 8 Nov 2013 09:42:03 +0000 (09:42 +0000)]
avr32: fix uclibc build using recent kernel headers
Using kernel headers newer than 3.6.x, uclibc 0.9.31.1 fails to build:
In file included from output/host/usr/avr32-buildroot-linux-uclibc/sysroot/usr/include/linux/rtnetlink.h:6,
from libc/inet/netlinkaccess.h:34,
from libc/inet/if_index.c:36:
output/host/usr/avr32-buildroot-linux-uclibc/sysroot/usr/include/linux/if_link.h:314: error: expected specifier-qualifier-list before '__be16'
make[1]: *** [libc/inet/if_index.os] Error 1
make[1]: Leaving directory `output/build/uclibc-0.9.31.1'
make: *** [output/build/uclibc-0.9.31.1/.stamp_built] Error 2
This patch adjusts the system type definitions in the netlinkaccess.h
header, updating the types to match those used in uClibc 0.9.33.2.
openpgm: disable for AVR32, not its Buildroot-built toolchain
OpenPGM builds incorrectly on AVR32 with gcc-4.2.2-avr32-2.1.5.
Since it is presumed to be the only GCC version used by Buildroot
for AVR32, this patch disables openpgm for all cases when AVR32
is selected as the target architecture, including when a toolchain
is downloaded or preinstalled (this is what Buildroot autobuilders
do).
Disable mplayer for anything lower than a v5 ARM core.
The support is broken and it's kind of pointless anyway. Fixes:
http://autobuild.buildroot.net/results/8f946e28b11b2ab1ba0d9688286c665488de0486/
openpgm doesn't build correctly on AVR32 using
gcc-4.2.2-avr32-2.1.5 toolchain: it is configured to call
intrinsic atomic functions not provided by the toolchain,
so they are propagated as unresolved external symbols in the
built openpgm libraries. This breaks programs that try to link
openpgm, because they do not know where to get those either. For
instance, it breaks building zeromq tests when PGM support is
selected.
This commit disables openpgm on AVR32 due to apparent absence of
interest in this package on that architecture and it breaking too
many test builds.
Yann E. MORIN [Tue, 5 Nov 2013 23:28:20 +0000 (00:28 +0100)]
Makefile: fix out-of-tree builds with multiple targets with 'all'
For out-of-tree builds, this use-case fails to build:
$ make clean all
This is because 'all' is filtered-out in the Makefile wrapper, since
the wrapper itself has a 'all' target.
The 'all' target is just the usual naming for the default target in a
Makefile. In fact, the first target is the default one, so we can name
it whatever we want.
Rename the Makefile wrapper 'all' target to avoid name-clashing.
Simon Dawson [Wed, 6 Nov 2013 19:45:10 +0000 (19:45 +0000)]
avr32: pass target arch to gcc
As suggested by Alexander Lukichev and Thomas Petazzoni on the mailing list,
only one of the two avr32 microarchitectures is relevant for Buildroot:
avr32 Linux implies the avr32b microarchitecure, as used in the ap7000.
Javier Viguera [Wed, 6 Nov 2013 10:00:56 +0000 (11:00 +0100)]
busybox: minor fixes to S01logging bootscript
* The PID file is not created unless the '-m' option is passed to
start-stop-daemon.
* Remove the mark '-m 0' option as it's not supported by busybox's
syslogd.
* Syslogd and Klogd forks to background by default giving as a result
that the pid stored in the PID file is not correct. Let the
background job be done by 'start-stop-daemon' by passing '-n'
(foreground) to the daemons and '-b' to start-stop-daemon. This
way the pid stored in the PID files is correct.
[Peter: pass TARGET_LDFLAGS as well, append -lintl in gettext case] Signed-off-by: Simon Dawson <[email protected]> Signed-off-by: Peter Korsgaard <[email protected]>
Simon Dawson [Tue, 5 Nov 2013 07:43:29 +0000 (07:43 +0000)]
libsigsegv: fix avr32 build
The libsigsegv configure step fails to correctly figure out the direction of
stack growth for avr32. This leads to a zero STACK_DIRECTION definition, and
build failures such as the following.
qt: don't allow building WebKit on some architectures
WebKit has some architecture specific support, and therefore is not
necessarily available for all architectures. Make sure the Qt WebKit
option cannot be selected on those architectures that are not
supported.
dhcpcd fails to build on non-MMU platforms, even with the
--disable-fork option:
bind.o: In function `_daemonise':
bind.c:(.text+0x62): undefined reference to `_fork'
collect2: ld returned 1 exit status
Therefore, we make dhcpcd depend on MMU support, and remove the
non-MMU condition in the .mk file. More recent versions of dhcpcd do
support non-MMU properly, but this commit intends to be only a fix.
libnl: do not allow to build tools on static lib configs
Building the libnl tools requires the <dlfcn.h> header, which is not
compatible with static only builds. Therefore, this commit makes the
libnl tools option depend on !BR2_PREFER_STATIC_LIB.
libnl: simplify makefile by using --{enable, disable}-cli
The libnl configure script has a --{enable,disable}-cli options that
allows to enable or disable the compilation of the libnl tools. Use
this option instead of compiling everything and then removing the
installed programs.
Note that we also get rid of the uninstall command, which is planned
to be globally removed in Buildroot.
This is due to the fact that it still tries to build a shared
library. This commit fixes that by adding a patch that makes libcap
provide install-shared/install-static targets. We also now only build
the $(@D)/libcap subdirectory, so removing the build of the progs
subdirectory is no longer needed.
libcap currently has one patch, but it is named using the old naming
strategy, which includes the package version, but not a patch
number. This commit switches this to use the new patch naming
strategy.
According to the documentation, chapter
6.2.8.2 How to add a package from github
"
[...]
FOO_VERSION = tag or full commit ID
FOO_SITE = http://github.com/<user>/<package>/tarball/$(FOO_VERSION)
[...]
- The tarball name generated by github matches the default one from
Buildroot (...),
so it is not necessary to specify it in the +.mk+ file.
"
This commit makes the appropriate changes.
There is no benefit in using the shortened git revision hash. On the
contrary: the shorter the hash, the higher the risk of having collisions
with another commit.
Denis Mingulov [Wed, 16 Oct 2013 13:13:37 +0000 (16:13 +0300)]
rsync: use system zlib and popt, also do not lose debug options
rsync by default compiles statically its own zlib and popt
libraries, it is better to use system wide libraries instead -
both for disk and memory consumption. Change rsync package
accordingly.
Also previously a debug configure option has been lost, as
overwritten by '--with-included-popt' option - fixed.
For example, on ARMv5 rsync binary size is reduced by about 25%.
manual generation: rename manual-txt into manual-text
The output extension and the generation messages refer to 'text', but the make
target was confusingly 'txt'. This patch changes the make target for
consistency.
To generate the manual, you need a few tools. If these are not present,
pretty cryptic error messages are given.
This patch adds a simple check for these dependencies, before attempting to
build the manual.
Axel Lin [Mon, 21 Oct 2013 05:53:02 +0000 (13:53 +0800)]
cppzmq/czmq: Update comment for needs threads support
Comment 7e37d235f "zeromq: needs threads" adds BR2_TOOLCHAIN_HAS_THREADS
dependency but forgot to add corresponding comment for cppzmq and czmq. Fix it.
Thomas Petazzoni [Wed, 30 Oct 2013 22:41:45 +0000 (23:41 +0100)]
xenomai: use install-user to remove patch
As noted by "George" in bug #6416, the xenomai-do-not-install-devices
patch is not needed, since Xenomai provides a "install-user" target to
only install the libraries/headers and not the device files. This
patch changes xenomai.mk to use 'install-user' and removes the useless
patch.
Config.in files: add/update comments on (e)glibc dependencies
This patch adds missing comments about (e)glibc dependencies and updates the
text of existing comments.
Additionally, it splits dependency expressions for the touched packages from
depends on BR2_BASE_DEP && !BR2_TOOLCHAIN_USES_GLIBC
to
depends on BR2_BASE_DEP
depends on !BR2_TOOLCHAIN_USES_GLIBC
so that (positive) base dependencies are separate from the (negative)
toolchain dependencies. This strategy makes it easier to write such comments
(because one can simply copy the base dependency from the actual package
config option), but also avoids complex and long boolean expressions.
util-linux: Add --without-ncurses to host-util-linux
Ncurses not necessary when building host-util-linux, so passing
--without-ncurses avoids from misdetecting an installed host ncurses
on the build machine.
Gustavo Zacarias [Fri, 25 Oct 2013 13:10:22 +0000 (10:10 -0300)]
arch/Config.in: introduce BR2_KERNEL_64_USERLAND_32 symbol
On some architectures one can be running a 64-bit kernel with a 32-bit
userland. Such is the case for sparc64 (unsupported) for example and
mips64 with n32 ABI.
Some tools that interface directly with the kernel need to be built
specially for this, so introduce this symbol to tweak their build in
one central kludge to be future-proof.
Romain Naour [Wed, 30 Oct 2013 21:39:52 +0000 (22:39 +0100)]
trace-cmd: fix ptrace detection
Ptrace support detection is ignored when CFLAGS is set by
buildroot. Use override in Makefile to add -DWARN_NO_PTRACE and
-DNO_PTRACE in CFLAGS if ptrace is not available.
Thomas Petazzoni [Tue, 29 Oct 2013 20:54:02 +0000 (21:54 +0100)]
glibc, toolchain-external: copy libthread_db when gdb is enabled
As Samuel Martin noticed, libthread_db is not only needed when
cross-gdb+gdbserver is used, but also when the native gdb is used on
the target. As a consequence, this patch modifies the glibc package
and the external toolchain logic to ensure that libthread_db is copied
to the target either when the native gdb or gdbserver is enabled, by
relying on the BR2_PACKAGE_GDB option, which is enabled when native
gdb and/or gdbserver are enabled.
Thomas Petazzoni [Tue, 29 Oct 2013 20:54:01 +0000 (21:54 +0100)]
toolchain-external: fix visibility and length of Linaro toolchain comment
Maxime Ripard reported that the Linaro toolchains were not visible
when selecting a Cortex-A, but forgetting to set the EABI to
EABIhf. While this is expected, Buildroot should normally should a
comment in this case. However, the comment is only visible when the
selected ARM architecture is not ARMv7 *and* the EABI is not
EABIhf. Instead, make the comment visible when either the selected
architecture is not ARMv7 *or* when the selected EABI is not EABIhf.
While we're at it, reword the comment text so that it actually fits
within the limits of the menuconfig screen.
Thomas Petazzoni [Tue, 29 Oct 2013 20:54:00 +0000 (21:54 +0100)]
toolchain-external: add missing symlink for Linaro toolchains
In 11ec38b6950 ("toolchain-external: fix Linaro ARM toolchain
support"), we fixed the support for Linaro EABIhf toolchains by adding
a /lib/arm-linux-gnueabihf -> /lib symbolic link. This is needed
because the dynamic loader looks for libraries in
/lib/arm-linux-gnueabihf rather than the usual /lib, but Buildroot
installs all libraries in /lib.
However, we forgot that the dynamic loader also loads libraries from
/usr/lib/arm-linux-gnueabihf rather than /usr/lib, so this patch fixes
that by adding the necessary symbolic link.
Fixes the following compile warning:
./confdata.c: In function ‘conf_split_config’:
./confdata.c:849:6: warning: assignment makes pointer from integer
without a cast
Markos Chandras [Mon, 14 Oct 2013 09:52:25 +0000 (10:52 +0100)]
ext-toolchain: MIPS: Select correct endianness for the target
Previously, an external-toolchain on a mipsel/mips64el target
didn't select the appriopriate endianness but
it asked the user to set the correct CFLAGS on his/her own.
We fix this by appending "-EL" to the toolchain wrapper options
if the user has selected a mipsel/mips64el target.
[Thomas: remove unneeded test on BR2_ENDIAN, since mipsel and mips64el
are always little-endian, and add the corresponding big endian case.]
The failure is related to bundled libpng conflicting with system libpng.
Which was a problem even before the libpng bump because the bundled
version for the previous fltk version has several security
vulnerabilities.
So disable bundled libraries and use global ones.