When net-tools are build with uClibc-ng and statically linked,
some tools like hostname and route needs to link with -lintl.
Adding -lintl in LDFLAGS place the library before object files:
arm-linux-gcc -O2 -g -Wall -fno-strict-aliasing -static -lintl -Llib -o hostname hostname.o
Add $(LIBS) after object files in the Makefile to place -lintl correctly.
Rework NET_TOOLS_BUILD_CMDS to set LDFLAGS with only TARGET_LDFLAGS and
set LIBS with -lintl when needed.
Fixes:
http://autobuild.buildroot.net/results/134/1345b6d366125320b89512e7ce7f142f1a03acf8
Ref:
http://lists.busybox.net/pipermail/buildroot/2016-May/162216.html
Signed-off-by: Romain Naour <romain.naour@gmail.com>
Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
In 2a87b64 (toolchain-external: align library locations in target and
staging dir), copying the libraries from the sysroot to the target was
changed to a simple find-based solution.
To be sure that the staging directory was entered to find the libraries,
in case the variable was pointing to a symlink, the -L clause to find
was used.
However, that causes extraneous libraries to be copied over.
For example, a ct-ng toolchain would have this sysroot (e.g for an arm
32-bit toolchain):
.../sysroot/lib/
.../sysroot/lib32 -> lib
.../sysroot/lib64 -> lib
.../sysroot/usr/lib/
.../sysroot/usr/lib32 -> lib
.../sysroot/usr/lib64 -> lib
Which we would carry as-is to our own sysroot.
But then, in target, our skeleton creates the /lib/ and /usr/lib
directories, with the necessary lib32 or lib64 symlink pointing to it.
In this case, a lib32->lib symlink is created, but no lib64 symlink
since this is a 32-bit architecture.
To copy the required libraries from staging into target, we scan the
staging directory for all occurences of the required libraries, and copy
them over to target, keeping the same directory layout relative to the
sysroot.
For example:
.../sysroot/usr/lib/libfoo.so --> .../target/usr/lib/libfoo.so
.../sysroot/usr/lib32/libbar.so --> .../target/usr/lib32/libbar.so
.../sysroot/usr/lib64/libbuz.so --> .../target/usr/lib64/libbuz.so
So, when we copy over the libraries from our staging to the target
directory, the "find -L .../sysroot -name libblabla.so.*" would find
multiple instances of libblabla, each in the /usr/lib /usr/lib32 and
/usr/lib64 locations (they are all the exact same file, though).
Since we do have the /usr/lib32->lib symlink, all is OK (but there are
two copies going on, which could be avoided). However, since we do not
have the /usr/lib64->lib symlink, the /usr/lib64/ directory is created.
This was very difficult to observe, as no /lib64/ directory is created,
only the /usr/lib64/ one was. To top it off, this only happens with a
merged /usr, which does not seem like not a common case without systemd.
Since the reason to use -L was to be sure to enter our staging
directory, we just need to ensure that the path ends up with a slash, as
was already talked about in this thread:
http://lists.busybox.net/pipermail/buildroot/2016-April/159737.html
After further discussion, it turns out that the original patch came along
because of the confusion between output/staging (which is a symlink) and
$(STAGING_DIR) which expands to output/host/usr/<tupple>/sysroot (which is
never a symlink), so the symlink handling isn't really needed at all.
[Peter: drop description comment, extend description]
Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
Cc: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Cc: Arnout Vandecappelle <arnout@mind.be>
Cc: Thomas De Schampheleire <patrickdepinguin@gmail.com>
Cc: Peter Korsgaard <peter@korsgaard.com>
Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
Compilation triggers an ICE in gcc with gcc 4.9
../db/dist/../lock/lock_deadlock.c: In function '__lock_detect_rpmdb':
../db/dist/../lock/lock_deadlock.c:354:1: internal compiler error: Segmentation fault
}
^
using this defconfig
BR2_sh=y
BR2_TOOLCHAIN_BUILDROOT_WCHAR=y
BR2_PACKAGE_BUSYBOX_SHOW_OTHERS=y
BR2_PACKAGE_RPM=y
Compiling rpm with gcc5 works fine using this defconfig:
BR2_sh=y
BR2_TOOLCHAIN_BUILDROOT_WCHAR=y
BR2_GCC_VERSION_5_X=y
BR2_PACKAGE_BUSYBOX_SHOW_OTHERS=y
BR2_PACKAGE_RPM=y
This patch adds a dependency to gcc >= 5.x to fix
http://autobuild.buildroot.net/results/e4b/e4b7705e3e148755ae34d498c860a3b9b915e0b0/
[Peter: simpify kconfig, add comment explaining why]
Signed-off-by: Bernd Kuhls <bernd.kuhls@t-online.de>
Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
Compilation triggers an ICE in gcc with gcc <= 4.9 using this defconfig
BR2_sh=y
BR2_TOOLCHAIN_BUILDROOT_WCHAR=y
BR2_PACKAGE_GSTREAMER=y
BR2_PACKAGE_GST_FFMPEG=y
BR2_PACKAGE_GST_FFMPEG_GPL=y
The problem is known upstream, a fix was never committed to gcc <= 4.9:
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65151
Compiling gst-ffmpeg with gcc5 works fine using this defconfig:
BR2_sh=y
BR2_TOOLCHAIN_BUILDROOT_WCHAR=y
BR2_GCC_VERSION_5_X=y
BR2_PACKAGE_GSTREAMER=y
BR2_PACKAGE_GST_FFMPEG=y
BR2_PACKAGE_GST_FFMPEG_GPL=y
This patch adds a dependency to gcc >= 5.x to fix the problem as
suggested by Thomas:
http://lists.busybox.net/pipermail/buildroot/2016-February/152584.html
Fixes
http://autobuild.buildroot.net/results/939/939da0c7771ddd97c05cedc0a7afc0ad34a21312/
[Peter: fix ML link, simplify kconfig, add comment explaining why]
Signed-off-by: Bernd Kuhls <bernd.kuhls@t-online.de>
Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
With some toolchains, using atomics requires to explicitly add -latomic
to the linker flags.
This change adds a patch to pulseview adding this detection and updating
the LDFLAGS when appropriate.
This patch has be sent upstream:
http://article.gmane.org/gmane.comp.debugging.sigrok.devel/2097
Fixes:
http://autobuild.buildroot.org/results/1e3/1e3101261252d5f30fdf842cc99604e4f4c25eef/build-end.log
Cc: Bartosz Golaszewski <bgolaszewski@baylibre.com>
Cc: Romain Naour <romain.naour@gmail.com>
Cc: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Signed-off-by: Samuel Martin <s.martin49@gmail.com>
Reviewed-by: Romain Naour <romain.naour@gmail.com>
Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
This commit improves the handling of the "atomic stuff" in the libdrm
package. libdrm can either use the atomic intrinsics (4 byte variant)
when available, or otherwise can use libatomic_ops. Note that the
dependency on atomic operations is not from libdrm itself, but only
from some specific DRM drivers only.
Amongst other things, it fixes the build of the libdrm package on
SPARCv8, therefore fixing:
http://autobuild.buildroot.org/results/74dd29b5ea146c320fde80a87a2fc910de9b7f60/
This commit does a number of changes that are all related to each
other:
- Removes the dependency of the Intel DRM driver on
libatomic_ops. The Intel DRM driver builds perfectly fine without
libatomic_ops, as long as 4-byte variant __sync operations are
available, which is always the case on x86 and x86_84 (which are
the only architectures on which the Intel DRM driver can be
enabled).
- Adds an hidden Config.in boolean option
BR2_PACKAGE_LIBDRM_HAS_ATOMIC that allows DRM driver that need
atomic operation to know whether atomic support is available
(either through intrinsics or through libatomic_ops).
- Adds an hidden BR2_PACKAGE_LIBDRM_ENABLE_ATOMIC Config.in option
that DRM drivers that need atomic operation should select to ensure
that the relevant dependencies are selected. It simply selects
libatomic_ops if 4-byte atomic intrinsics are not available. We
could let each DRM driver do this, but having an intermediate
option avoids a bit of duplication.
- Adds a patch that defines AO_REQUIRE_CAS before including
<atomic_ops.h>. This is needed because libdrm uses the
AO_compare_and_swap_full() which is only provided on all
architectures when AO_REQUIRE_CAS is defined. The exact same fix
was done in the erlang package in commit
4a9df29424.
- Adds the dependency on libatomic_ops when the package is enabled,
and passes the necessary CFLAGS on SPARCv8 to make the thing build
properly. The same CFLAGS are passed in the nginx package and bdwgc
package.
Cc: Waldemar Brodkorb <wbx@openadk.org>
Cc: Bernd Kuhls <bernd.kuhls@t-online.de>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
This is basically the same change as in 0515fe4566
("Makefile: pass host PKG_CONFIG_PATH at "make menuconfig" time"). That
commit made sure to pass host PKG_CONFIG_PATH when invoking Buildroot's
own menuconfig program. This change ensures that the same is true for
third party menuconfig programs (i.e. Linux, uClibc and Busybox).
This unbreaks "make {linux,uclibc}-menuconfig" for host platforms which
rely on PKG_CONFIG_PATH to find .pc files (e.g. NixOS). (When Busybox
updates to a more recent Kconfig snapshot, one that uses pkg-config to
find ncurses, "make busybox-menuconfig" will also start working.)
Tested on Ubuntu and NixOS:
$ make qemu_arm_versatile_defconfig
$ make linux-menuconfig
$ make
Signed-off-by: Bjørn Forsman <bjorn.forsman@gmail.com>
Acked-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
__P() is used for compatibility with old K&R C compilers. With
ANSI C this macro has no effect.
Unlike for util-linux and ipkg packages where it was easy to remove
each __P() macro, ipsec-tools use it all over the tree and require a
"big" patch to enable musl support.
Since upstream seems not verry active (last release 2014-02-27)
So, disable ipsec-tools with musl based toolchains.
This fixes a compilation error with musl libc because of undeclared
__P.
Fixes:
http://autobuild.buildroot.net/results/42242e3f4485b9e77a916e6fe480c83f70e024e4
While at it, reorder "depends on" and "select" lines in Config.in
Signed-off-by: Romain Naour <romain.naour@gmail.com>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
When iptraf-ng is build with musl, it needs _GNU_SOURCE in CFLAGS to define
the content of "struct tcphdr".
iptraf-ng.mk try to add _GNU_SOURCE in CFLAGS but it's not taken into account.
Add it using IPTRAF_NG_CONF_ENV instead of IPTRAF_NG_MAKE_ENV.
Fixes:
http://autobuild.buildroot.net/results/a1b/a1b18f2e3d075d349c19536a7c5553f24b75a323
Signed-off-by: Romain Naour <romain.naour@gmail.com>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Commit 5c67cb1d04 ("linux: use zImage by default on ARM") changed
the default kernel image, but missed to update Zynq defconfigs.
U-Boot on Zynq boards still loads uImage, so BR2_LINUX_KERNEL_UIMAGE
should be defined to generate uImage.
Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
It can be a little bit misleading to have no init system...
Add a comment that states the user has to provide his own init system,
either via a package or a rootfs overlay.
It is expected that such a user will know what to provide, so we don't
really need to specify that it should be /init or /sbin/init or any
arbitrary executable pointed to by the kernel command line "init=..."
or anything else...
Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
Cc: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Cc: Peter Korsgaard <peter@korsgaard.com>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
The mplayer configure script tries to detect the capabilities of the CPU
used by probing the host CPU. This leads to compilation failures if the
target CPU has lesser features, like missing mmx support for
BR2_x86_i686=y:
Checking for CPU vendor ... GenuineIntel (6:58:9)
Checking for CPU type ... Intel(R) Core(TM) i7-3770S CPU @ 3.10GHz
Checking for kernel support of sse ... yes
Checking for kernel support of sse2 ... yes
Checking for kernel support of sse3 ... yes
Checking for kernel support of ssse3 ... yes
Checking for kernel support of sse4_1 ... yes
Checking for kernel support of sse4_2 ... yes
Checking for kernel support of avx ... yes
For this patch I copied most of ffmpeg configure options for x86 CPUs
because mplayer contains its own copy of ffmpeg.
Fixes
http://autobuild.buildroot.net/results/c5a/c5a722607ec9797c317b63b0fd3235608a340c98/
Signed-off-by: Bernd Kuhls <bernd.kuhls@t-online.de>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
MIPS architecture detection is not accurate and is always detected as
mips64 even if we are using mips64r2 or mips64r6. Due to that, ffmpeg's
build system will pass the -mips64 flag which will conflict with the
-march option that our toolchain wrapper uses, and it will fail to build
showing errors like this one:
error: '-mips64' conflicts with the other architecture options, which
specify a mips64r2 processor
This problem has been already fixed upstream, but we would need to
backport 17 patches plus some changes in the ffmpeg.mk file. This is too
much, so better to just disable ffmpeg for mips64r2 and mips64r6 for the
upcoming Buildroot release.
This commit can be reverted in the next ffmpeg's version bump.
Fixes:
http://autobuild.buildroot.net/results/7fd/7fd8187c0110cdcac622e667f4a81d2db84f11ef/
Signed-off-by: Vicente Olivert Riera <Vincent.Riera@imgtec.com>
Reviewed-by: Bernd Kuhls <bernd.kuhls@t-online.de>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Using double quotes around TARGET_CC/TARGET_CXX is mandatory, since
they are composed of several words when ccache support is enabled.
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Set all file timestamps to prevent the go compiler from rebuilding any
built in packages when programs are built.
Signed-off-by: Geoff Levand <geoff@infradead.org>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
flannel uses the cgo package, so needs a toolchain with thread
support.
Signed-off-by: Geoff Levand <geoff@infradead.org>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
The go compiler's cgo support uses threads. If BR2_TOOLCHAIN_HAS_THREADS is
set, build in cgo support for any go programs that may need it. Note that
any target package needing cgo support must include
'depends on BR2_TOOLCHAIN_HAS_THREADS' in its config file.
Fixes build errors like these:
error: #warning requested reentrant code
http://autobuild.buildroot.net/results/42a8d07101d8d954511d1c884ecb66e8d861899e
Signed-off-by: Geoff Levand <geoff@infradead.org>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Use the newly added HOST_GO_TARGET_ENV variable to pickup the
correct go environment for package builds.
Signed-off-by: Geoff Levand <geoff@infradead.org>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
For the convenience of package makefiles define the new
make variables HOST_GO_TOOLDIR and HOST_GO_TARGET_ENV.
Signed-off-by: Geoff Levand <geoff@infradead.org>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
The go build system doesn't have the notion of cross compiling, but just the
notion of architecture. When the host and target architectures are different
it expects to be given a target cross compiler in CC_FOR_TARGET. When the
architectures are the same it will use CC_FOR_TARGET for both host and target
compilation. To work around this limitation build and install a set of
compiler and tool binaries built with CC_FOR_TARGET set to the host compiler.
Also, the go build system is not compatible with ccache, so use
HOSTCC_NOCCACHE. See https://github.com/golang/go/issues/11685.
Fixes build errors like these:
host/usr/bin/go: No such file or directory
http://autobuild.buildroot.net/results/6664189a6f3a815978e8d0a1d7ef408ca47e2874/
Signed-off-by: Geoff Levand <geoff@infradead.org>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
The Gentoo wiki page is much more informative than the download directory.
This is the official homepage according to top level README.md.
Signed-off-by: Baruch Siach <baruch@tkos.co.il>
Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
The lirc-tools package fails to build once in a while in the
autobuilders. Some quick analysis of the problematic Makefile.am has
revealed one issue. However, since the issue is difficult to
reproduce, we could only check that the new solution continue to work,
and we're not 100% sure it fixes the entire problem: only the
autobuilders can say, over time.
Supposedly fixes:
http://autobuild.buildroot.org/results/eb47d57de8182d25b1dacbf0ac3726ed20063d04/
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
Add a patch available from JamVM's bug tracker to fix the build with
the musl C library. The build was verified with the musl and uClibc C
libraries.
Fixes:
http://autobuild.buildroot.org/results/8292973e9f6f2971d090f02f24d11a31709254cf/
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
libsemanage is the only package depending on ustr, both packages do not
build using a musl-based toolchain, suggested by Thomas:
http://article.gmane.org/gmane.comp.lib.uclibc.buildroot/149138
Signed-off-by: Bernd Kuhls <bernd.kuhls@t-online.de>
Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
Suggested by Thomas:
http://article.gmane.org/gmane.comp.lib.uclibc.buildroot/149138
"getpwent_r() is a glibc-specific extension, so it will most likely not
be implemented by musl."
Signed-off-by: Bernd Kuhls <bernd.kuhls@t-online.de>
Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
The patch
0001-hidtest-dont-use-a-C-source-file-since-it-s-pure-C.patch in the
hidapi package needs to rename a file from .cpp to .c to avoid a
dependency on C++. This renaming currently uses the Git-way of
describing renames in patches. While this is interpreted properly by
recent enough versions of the 'patch' tool, it is ignored and not
understood by older versions of 'patch'. Due to this, with these older
versions of 'patch', the file is not renamed, and it causes a build
failure.
We fix this by not using the Git-like way of describing rename, but
rather using the old-style way of doing renames. It makes the patch
longer, but compatible with older versions of 'patch'.
Fixes:
http://autobuild.buildroot.org/results/d7509d9fdf8f86332a023358a740975f535eafef/
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
In static linking configurations, cups fails to build due to the lack of
Scrt1.o from uClibc toolchains. This Scrt1.o is only needed for PIE
binaries. Since we don't really care about PIE binaries in the context
of Buildroot, this commit solves the problem by patching cups to not
generate a PIE binary.
Fixes:
http://autobuild.buildroot.net/results/445a401da2f63a6c43d7c166516287db6cc977ab/
Cc: Olivier Schonken <olivier.schonken@gmail.com>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
Building an U-Boot image for the i.MX23 or i.MX28 target requires to run the
bootloaders 'mxsimage' tool on the host. As mxsimage needs unconditionally
OpenSSL, building U-Boot for those targets fails if it is not available on
the host:
tools/mxsimage.c:18:25: fatal error: openssl/evp.h: No such file or directory
#include <openssl/evp.h>
Add the required dependency 'host-openssl' to all the different U-Boot image
types used to build a bootloader image for an i.MX23/i.MX28 target.
Also pass HOST_CFLAGS and HOST_LDFLAGS to the U-Boot build process so the right
-I/-L options will be used to find OpenSSL.
Ported from the Armadeus project:
https://sourceforge.net/p/armadeus/mailman/message/33595402/
Signed-off-by: Julien Boibessot <julien.boibessot@armadeus.com>
[Jörg: port to recent Buildroot version]
Signed-off-by: Jörg Krause <joerg.krause@embedded.rocks>
Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
Due to some code imported from gnulib, the time package doesn't build
in static-only configurations. Indeed the gnulib code redefines the
error() and error_at_line() functions, which are also provided by the
C library. Since fixing the gnulib code is really difficult, let's
just disable this package for static-only builds.
Fixes:
http://autobuild.buildroot.org/results/a0e64faba69fa86755c693f575fb258a77e4e9d1/
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Commit c45979c732 marked OProfile as not
available on the Xtensa architecture, due to the lack of memory
barrier operations. This commit does the same for the Microblaze
architecture, for the same reason, which allows to fix the following
autobuilder failure:
http://autobuild.buildroot.org/results/9a872ddc906e9d552d30762e849a1b537b4e5095/
It is worth mentioning that most likely Xtensa and Microblaze are
architectures implementing a strongly-ordered memory model, in which
case we could define the memory barriers as no-ops. But until someone
who actually cares about OProfile on Xtensa and Microblaze shows up,
it's probably better to disable the package on those architectures.
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>