Commit graph

774 commits

Author SHA1 Message Date
Peter Korsgaard 0ab737207b Update for 2016.05-rc1
Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
2016-05-10 23:26:50 +02:00
Trent Piepho bbe29b9896 purge-locales: Handle empty locale directories better
If a locale directory is empty, shell code like "for langdir in
$$dir/*;" will loop once with langdir set to "path/to/dir/*", rather
than not looping at all, which would obviously be the desired
behavior.

Then "grep -qx $${langdir##*/}" ungoes two shell expansions (how?)
that transform the expression from "${langdir##*/}" to "*" to "list of
all files in buildroot root dir".  Which is most certainly not what
this command was supposed to do.

If one of those files happens to be an 8GB flash image, grep consumes
all available memory and crashes trying to search it.

Signed-off-by: Trent Piepho <tpiepho@kymetacorp.com>
Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
2016-04-28 23:48:09 +02:00
Yann E. MORIN 2658b82353 Revert "core: add the possibility to provide help for custom rules"
This reverts commit 84c825f8e8.

Turns out that the custom help is not available when the $(O) directory
has not been configure yet (i.e. when there is no .config already
filled).

Rather than trying to work around this limitation with dirty hacks, just
revert this feature. After all, this will not prevent an external.mk
from providing custom help anyway; it's just not gonna be advertised nor
displayed with the main help.

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>
Cc: Jérôme Pouiller <jezz@sysmic.org>
Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
2016-04-17 10:55:37 +02:00
Yann E. MORIN a49b81ed69 Revert "core: also display the custom help with our main help"
This reverts commit 0a767deba0.

Turns out that the custom help is not available when the $(O) directory
has not been configure yet (i.e. when there is no .config already
filled).

Rather than trying to work around this limitation with dirty hacks, just
revert this feature. After all, this will not prevent an external.mk
from providing custom help anyway; it's just not gonna be advertised nor
displayed with the main help.

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>
Cc: Jérôme Pouiller <jezz@sysmic.org>
Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
2016-04-17 10:55:23 +02:00
Nicolas Dichtel 376737d99d Makefile: reset LD and AR environment variables
The goal is to fix the compilation of perf (from linux) when LD or AR
variables are inherited from the environment.
After the linux upstream commits 5ef7bbb09f7b ("perf tools: Allow to
specify custom linker command") and 3c71ba3f80bb ("perf tools: Really allow
to specify custom CC, AR or LD") CC, AR, and LD variables are not overridden
if they are inherited.

In case of a cross compilation, it results in an inconsistent state: CC is
overridden but not LD and AR.

Linux-patch: http://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=5ef7bbb09f7b
Linux-patch: http://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=3c71ba3f80bb

Signed-off-by: Nicolas Dichtel <nicolas.dichtel@6wind.com>
Reviewed-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
2016-04-15 09:48:56 +02:00
Yann E. MORIN 0a767deba0 core: also display the custom help with our main help
The patch merges the custom help, introduced in the previous patch, at
the end of our internal help.

Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
Cc: Jérôme Pouiller <jezz@sysmic.org>
Cc: Arnout Vandecappelle <arnout@mind.be>
Cc: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
2016-03-19 16:41:26 +01:00
Yann E. MORIN 84c825f8e8 core: add the possibility to provide help for custom rules
When using a br2-external tree, it is possible (as stated in our manual)
to implement whatever arbitrary extra make rules (such as flashing a
board, or extracting the rootfs in an NFS export...). Some of those
extra rules might be exposed to the user as new entry points that the
user can call by itself.

However, there is no way for the br2-external to advertise those new
rules in the help text.

We add the possibility to do so, by adding a new make rule, called
help-custom, advertised in our own help info.

It is up to the br2-external tree to provide whatever help text is
deemed necessary. The format of the help is completely free-form.

Note that we need to provide an empty, dummy help-custom rule, since it
is always advertised (making it .PHONY does not work). Since this rule
is empty, make gently reports that there is "Nothing to be done for
`help-local'", which is pretty well fitting when help-local was not
provided (either because there's no br2-external tree, or when the
br2-external tree does not provide it.

Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
Cc: Jérôme Pouiller <jezz@sysmic.org>
Cc: Arnout Vandecappelle <arnout@mind.be>
Cc: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
2016-03-19 16:41:22 +01:00
Samuel Martin e049994086 core: use $(CURDIR) to set TOPDIR
This changes saves a shell call and uses a variable automatically set
by make [1].

[1] http://www.gnu.org/software/make/manual/make.html#Quick-Reference

Signed-off-by: Samuel Martin <s.martin49@gmail.com>
Acked-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
2016-03-10 23:49:46 +01:00
Peter Korsgaard 13222c0729 Kickoff 2016.05 cycle
Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
2016-03-02 21:09:15 +01:00
Peter Korsgaard aaf6c28a5c Update for 2016.02
Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
2016-03-01 21:47:30 +01:00
Peter Korsgaard 100ba0f6d6 Update for 2016.02-rc3
Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
2016-02-27 23:50:51 +01:00
Ignacy Gawędzki 093a116885 Makefile: Add help to nobuild_targets
Signed-off-by: Ignacy Gawędzki <ignacy.gawedzki@green-communications.fr>
Acked-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
2016-02-27 16:25:33 +01:00
Peter Korsgaard 6cd8cbc6fa Update for 2016.02-rc2
Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
2016-02-18 15:34:16 +01:00
Peter Korsgaard ecf55c3f02 Update for 2016.02-rc1
Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
2016-02-10 08:12:57 +01:00
Yann E. MORIN 9dac986696 core: add a make target to check the dependencies
Add a make target that will checks the dependencies of all packages.
This will currently only detect circular dependencies, but more tests
can be added later if need be.

This can then be used in the autobuilders to automatically report
dependency issues.

Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
Cc: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
2016-02-07 23:21:55 +01:00
Yann E. MORIN 5e7020ef64 core: catch failures in graph-depends
Currently, we generate the dependency graph in a single command, piping
the stdout of support/scripts/.graph-depends to the stdin of dot.

Unfortunately, this means we can't catch a failure of graph-depends, as
the shell can only treturn the exit code of the last command in a pipe.

Still, we do want to keep the output of graph-depends, and we in fact do
keep it by mean of a tee.

graph-depends has just gained the ability to generate its output to a
file, so we break the pipe in two differnet commands, so we can bail out
on graph-depends errors.

Do that for the two call sites.

Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
Cc: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
2016-02-07 23:16:11 +01:00
Luca Ceresoli 9af3d3f086 Update copyright year
Signed-off-by: Luca Ceresoli <luca@lucaceresoli.net>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
2016-02-01 19:51:33 +01:00
Romain Naour 86229d64eb core: override the user's locale while setting HOSTARCH
At least with French user's locale HOSTARCH is empty since
'Target' is not present in gcc output.

gcc -v 2>&1
Utilisation des specs internes.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/libexec/gcc/x86_64-redhat-linux/5.3.1/lto-wrapper
Cible : x86_64-redhat-linux

Override the user's local with LC_ALL=C.

Signed-off-by: Romain Naour <romain.naour@gmail.com>
Cc: "Yann E. MORIN" <yann.morin.1998@free.fr>
Cc: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Acked-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
2016-01-20 23:00:01 +01:00
Thomas De Schampheleire 50a93866f0 skeleton: move LIB_SYMLINK definition from Makefile
Commit 7a6b83a211 introduced the skeleton
package, which took over the lib32/lib64 -> lib symlink creation from the
main Makefile.
However, the definition of the LIB_SYMLINK variable did not move along, for
no real reason.

Signed-off-by: Thomas De Schampheleire <thomas.de.schampheleire@gmail.com>
Cc: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Cc: Arnout Vandecappelle <arnout@mind.be>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
2016-01-20 21:49:14 +01:00
Yann E. MORIN 91ea933127 core: fix setting of HOSTARCH
Currently, we set HOSTARCH to the output of `uname -m`. This gives us
the architecture as seen by the running kernel. For example, we would
end up with 'x86_64' for a 64-bit kernel running on an x86_64 processor.

We use that value to determine whether we can run some binary tools,
like our pre-configured external toolchains.

However, one may be running a userland in a different bitness than that
of the running kernel. For example, one may run in a 32-bit chroot, even
though the kernel is running in 64-bit.

Up until recently, this was not an issue because the pre-configured
external toolchains were all requiring an i386 (x86 in Buildroot
parlance).

But since we introduced the latest Linaro toolchains, we now have
toolchains that require a 64-bit userland.

So, when running on a 64-bit kernel, we believe those toolchains are
available, even when the user is running a 32-bit userland. This causes
build failures for our autobuilders, like so:

    http://autobuild.buildroot.org/results/9cd/9cdf10ec5b31144b2e03ea09cf128702339895b3/

with the following symptoms:

    >>> toolchain-external undefined Configuring
    Cannot execute cross-compiler '/home/test/autobuild/instance-3/output/host/opt/ext-toolchain/bin/aarch64-linux-gnu-gcc'

So, instead of relying on the output of `uname -r`, look for the host
gcc and extract the target it was configured to generate code for.

Fixes:
    http://autobuild.buildroot.org/results/9cd/9cdf10ec5b31144b2e03ea09cf128702339895b3/  (aarch64)
    http://autobuild.buildroot.org/results/888/8889aa7d9fb48370e4760a6edbc6d3ae945f02f2/  (arm)
    and many more...

Besides fixing those issues, it will also allow us to add the 64-bit
variants of toolchains when they exist, like the upcoming Codescape
MTI and IMG toolchains for MIPS from Imagination Technologies.

[Peter: use HOSTCC_NOCCACHE]
Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
Cc: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Cc: Vicente Olivert Riera <Vincent.Riera@imgtec.com>
Reviewed-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>
Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
2016-01-20 00:12:41 +01:00
Thomas Petazzoni 3e1b33a534 pkg-generic: improve incorrectly used package detection
Currently, the check that packages we build are indeed enabled is done
at the time a package is configured.

This can come quite late in the build process, and does not provide
direct knowledge of the real culprit for the incorrect dependency.

However, we can improve these two issues quite easily, albeit at the
expense of a very slightly more complicated make code.

First, the check can not be done at the time we define the package, i.e.
in the inner-generic-pacakge, because all its dependencies might have
not been parsed yet, so we can't yet know whether it is enabled or not
(because we can't match the package name of the dependency to its
Kconfig variable yet).

But then, we know we have all packages definitions after we scanned the
the bundled packages, kernel, bootloaders and toolchains, as well as the
br2-external tree (if any).

So, at this location, we iterate through the list of enabled packages,
and check that the packages they each depend on are indeed enabled.

This allows us to:
 1- do the check very early, before any build action,
 2- report on the exact offending package very easily.

Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
Cc: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
2016-01-03 22:09:17 +01:00
Thomas Petazzoni 9c40723489 Makefile: drop ldconfig handling
The ldconfig handling in the main Makefile is utterly broken, as it
calls the build machine ldconfig to generate the ld.so.cache of the
target. Unfortunately, the format of the ld.so.cache is architecture
specific, and therefore the build machine ldconfig cannot be used
as-is.

This patch therefore simply drops using ldconfig entirely, and removes
/etc/ld.so.conf.d/ from the target skeleton. The idea is that all
libraries that should be loaded by the dynamic linker must be
installed in paths where the dynamic linker searches them by default
(typically /lib or /usr/lib).

This might potentially break a few packages, but the only way to know
is to actually stop handling ldconfig.

In order to be notified of such cases, we add a check in
target-finalize to verify that there is no /etc/ld.so.conf file as
well as no /etc/ld.so.conf.d directory.

Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Acked-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
2016-01-03 21:46:07 +01:00
Arnout Vandecappelle 12825f7af5 Config.in: add symbols for BR2_HOST_GCC_AT_LEAST_X_Y
Some host packages need a recent gcc version. Add symbols to Config.in
to specify the HOSTCC version. The values are passed through the
environment, and this environment is generated in a new support script.

Also update the documentation to mention the new symbols.

[Thomas: simplify by using only make logic instead of an external
shell script.]

Signed-off-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
2015-12-31 10:32:10 +01:00
Tom Rini 344c5a20cc Makefile: Add RANLIB to the list of critical variables to unexport
If RANLIB is set and we're trying to build binutils, binutils will pick
this up and potentially fail to build.

Signed-off-by: Tom Rini <trini@konsulko.com>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
2015-12-22 11:07:08 +01:00
Peter Seiderer 1edb4c51de Makefile: valgrind needs non-stripped dynamic linker library
Fixes the following valgrind error (tested on freescale imx6):

valgrind:  Fatal error at startup: a function redirection
valgrind:  which is mandatory for this platform-tool combination
valgrind:  cannot be set up.  Details of the redirection are:
valgrind:
valgrind:  A must-be-redirected function
valgrind:  whose name matches the pattern:      strcmp
valgrind:  in an object with soname matching:   ld-linux-armhf.so.3
valgrind:  was not found whilst processing
valgrind:  symbols from the object with soname: ld-linux-armhf.so.3
valgrind:
valgrind:  Possible fixes: (1, short term): install glibc's debuginfo
valgrind:  package on this machine.  (2, longer term): ask the packagers
valgrind:  for your Linux distribution to please in future ship a non-
valgrind:  stripped ld.so (or whatever the dynamic linker .so is called)
valgrind:  that exports the above-named function using the standard
valgrind:  calling conventions for this platform.  The package you need
valgrind:  to install for fix (1) is called

Note that we can still strip the dynamic linker, but only strip the
debugging symbols and nothing else.

[Thomas: slightly adjust comment in the code.]

Signed-off-by: Peter Seiderer <ps.report@gmx.net>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
2015-12-17 23:21:17 +01:00
Peter Korsgaard ac2071b864 Makefile: fix copyright year
It is no longer 2014.

Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
2015-12-03 14:25:01 +01:00
Peter Korsgaard cc257ee493 Merge branch 'next'
Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
2015-12-01 23:24:07 +01:00
Peter Korsgaard 2318c29e80 Kickoff 2016.02 cycle
Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
2015-12-01 22:05:46 +01:00
Peter Korsgaard 3f90e532ff Update for 2015.11
Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
2015-11-30 23:13:41 +01:00
Yann E. MORIN 376fda8f99 core/printvars: allow dumping a set of variables
Dumping our 176164 variables can take quite some time (~12s here). What
takes the most time is sorting the variables (~9s), followed by the
parsing of our Makefiles (~3s), with the actual printing in the noise.

However, sometimes only one or a few variables are needed. For example,
one may want to retrieve the Linux build dir from a post-build hook (to
get the Linux' actual .config after our fixups and check for various
features).

Add the possibility to only dump the variables listed in $(VAR) which
must be passed as a make argument, like so:

    $ make -s printvars VARS="LINUX_DIR TOPDIR O"
    LINUX_DIR=/home/ymorin/dev/buildroot/O/build/linux-4.3 ($(BUILD_DIR)/$(LINUX_BASE_NAME))
    O=/home/ymorin/dev/buildroot/O/. (/home/ymorin/dev/buildroot/O/.)
    TOPDIR=/home/ymorin/dev/buildroot/buildroot (/home/ymorin/dev/buildroot/buildroot)

It is also possible to use make-appterns, like:

    $ make -s printvars VARS="BUSYBOX_%"

This is much faster (the time is just about the time it takes to parse
our Makefiles, 3s here) and easier to parse.

[Thomas: improve comment above the printvars target.]

Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
Cc: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
2015-11-29 19:04:53 +01:00
Yann E. MORIN cb34ea5d6a package/skeleton: also handle merged /usr in the staging
When the target uses a merged /usr setup, gdbserver will only report
paths in /lib to the remote gdb, which in turn will only look for
libraries in staging/lib and never in staging/usr/lib.

So. the merged (or non-merged) /usr setup must be replicated in the
staging.

The best solution where to do so is in the skeleton package, since it
is guaranteed to come before any package that installs things in the
staging, and even before the (internal or external) toolchain as well.

Reported-by: Pieterjan Camerlynck <pieterjan.camerlynck@gmail.com>
Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
Cc: Pieterjan Camerlynck <pieterjan.camerlynck@gmail.com>
Cc: Maxime Hadjinlian <maxime.hadjinlian@gmail.com>
Cc: Peter Korsgaard <jacmet@uclibc.org>
Cc: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Reviewed-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>
Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
2015-11-28 23:08:33 +01:00
Peter Korsgaard 610f3fa03d Update for 2015.11-rc3
Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
2015-11-26 23:06:02 +01:00
Peter Korsgaard bfaed966af Update for 2015.11-rc2
Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
2015-11-19 13:31:31 +01:00
Thomas Petazzoni 2f8a720791 Kickoff 2016.02 cycle
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
2015-11-09 21:27:13 +01:00
Thomas Petazzoni e1da0eff54 Update for 2015.11-rc1
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
2015-11-07 22:43:57 +01:00
Yann E. MORIN f8c0e45d32 core: remove .br-external on distclean
distclean is supposed to return the current directory, whether in-tree
or out-of-tree, into pristine conditions, which means we should also
forget about any br2-external tree on distclean.

Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
Cc: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Cc: Peter Korsgaard <jacmet@uclibc.org>
Cc: Thomas De Schampheleire <patrickdepinguin@gmail.com>
Cc: Arnout Vandecappelle <arnout@mind.be>
Acked-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
2015-11-03 23:41:53 +01:00
Yann E. MORIN 0ea851c0c0 core: do not accept multiple definitions of a package
One of the selling points for br2-external is to provide a mean to add
new packages. However, it is not supported that a package be defined by
Buildroot and then redefined in a br2-external tree.

This situation may occur without the user noticing or even willing to
redefine the package, for example:
  - br2-external is first created against a version of Buildroot
  - a package (missing in Buildroot) is added to that br2-external tree
  - upstream Buildroot adds this package
  - user updates to the new Buildroot

In this case, the result in undefined, and we can't make any guarantee
on the result (working or not).

Add a sanity check so that a package redefinition gets caught.

Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
Cc: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Cc: Peter Korsgaard <jacmet@uclibc.org>
Cc: Arnout Vandecappelle <arnout@mind.be>
Reviewed-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>
Reviewed-by: Samuel Martin <s.martin49@gmail.com>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
2015-11-03 23:41:11 +01:00
Cédric Marie 474d39a1ff Makefile: Remove 'quiet' variable
'quiet' variable is set and exported, but it is not used. We can safely
remove it.

This variable is inherited from the Makefile of the Linux kernel, and
is not used in Buildroot.

In support/scripts/mkmakefile, 'quiet' value is checked, but the test
is always true ('quiet' is never set to silent_), so the test can be
removed as well.

Signed-off-by: Cédric Marie <cedric.marie@openmailbox.org>
Reviewed-by: "James Knight" <james.d.knight@live.com>
Reviewed-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>
Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
2015-10-29 00:04:05 +01:00
Gustavo Zacarias 3901cb5157 ccache: allow for BR2_CCACHE_DIR environment override
Allow the BR2_CCACHE_DIR .config option to be overriden by the
BR2_CCACHE_DIR env variable.
This is useful for big projects where in some cases the developers home
directory might be a NFS mount (slow) and real production builds aren't.

Update documentation accordingly as well.

Signed-off-by: Gustavo Zacarias <gustavo.zacarias@free-electrons.com>
Acked-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
2015-10-17 16:32:41 +02:00
Thomas Petazzoni 24c75fbb38 Makefile: implement a graph-size target
This commit implements a graph-size target that calls the script of
the same name to generate the graph and CSV files related to package
and file sizes.

Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Reviewed-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
Tested-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
2015-10-17 16:13:05 +02:00
Arnout Vandecappelle 792f1278e3 toolchain-wrapper: support change of BR2_CCACHE
By moving the ccache call to the toolchain wrapper, the following
scenario no longer works:

make foo-dirclean all BR2_CCACHE=

That's a sometimes useful call to check if some failure is perhaps
caused by ccache.

We can enable this scenario again by exporting BR_NO_CCACHE when
BR2_CCACHE is not set, and by handling this in the toolchain wrapper.

Signed-off-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>
Tested-by: Romain Naour <romain.naour@openwide.fr>
Reviewed-by: Romain Naour <romain.naour@openwide.fr>
Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
2015-10-04 18:22:20 +02:00
Luca Ceresoli b9f4727ff4 legal-info: allow to declare the actual sources for binary packages
The FOO_SITE/FOO_SOURCE variables usually point to a tarball containing
source code.

For the downloaded external toolchains this is not true, the "source"
tarball actually contains binaries. This is fine for making Buildroot
work, but for legal-info we really want to ship real source code, not
binaries.

Luckily, some (hopefully all) toolchain vendors publish a downloadable
tarball containing the source code counterpart for their binary
packages.

Here we allow the user to declare the URL of this other tarball in the
pair of variables FOO_ACTUAL_SOURCE_TARBALL (by default equal to
FOO_SOURCE) and FOO_ACTUAL_SOURCE_SITE (by default equal to FOO_SITE).
If the "actual source" package can be downloaded from the same
directory as the binary package, then only FOO_ACTUAL_SOURCE_TARBALL
needs to be set.

Note this change is not strictly toolchain-specific: it might be useful
for other packages that happen to ship binaries in the same way.

[Thomas:
  - remove "the source code has not been saved" warning that could
    never be triggered due to how the conditions were
    organized. Discussed with Luca live during the meeting.]

Signed-off-by: Luca Ceresoli <luca@lucaceresoli.net>
Cc: Thomas De Schampheleire <patrickdepinguin@gmail.com>
Cc: Arnout Vandecappelle <arnout@mind.be>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
2015-10-04 16:59:05 +01:00
Herve Codina 87f3edecc6 target-finalize: remove extra /usr/libexec/{*.a,*.la} files
Some packages, sudo for instance, install .a and .la files in
$(TARGET_DIR)/usr/libexec. These files are not needed on target.

This patch refactors the existing "find" invocations in
target-finalize into a single one removing all .a and .la files from
lib, usr/lib and usr/libexec.

[Thomas: rework to use a single "find" invocation, and adjusted the
commit log accordingly.]

Signed-off-by: Herve Codina <Herve.CODINA@celad.com>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
2015-09-19 14:59:46 +02:00
Luca Ceresoli 466382e1fa make help: remove <pkg>-legal-info
The <pkg>-legal-info target is only a component of the top-level
legal-info target, it is not meant to be used alone.

For example, calling twice 'make busybox-legal-info' produces duplicate
entries in licenses.txt and manifest.csv.

Signed-off-by: Luca Ceresoli <luca@lucaceresoli.net>
Cc: Baruch Siach <baruch@tkos.co.il>
Cc: Arnout Vandecappelle <arnout@mind.be>
Reviewed-by: Baruch Siach <baruch@tkos.co.il>
Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
2015-09-04 11:45:49 +02:00
Peter Korsgaard 70874e321d Kickoff 2015.11 cycle
Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
2015-09-01 09:58:29 +02:00
Peter Korsgaard 20a36cd877 Update for 2015.08
Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
2015-08-31 23:06:58 +02:00
Thomas Petazzoni 985b46be0c Update for 2015.08-rc2
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
2015-08-24 22:20:16 +02:00
Thomas Petazzoni 7b1e9d5244 Update for 2015.08-rc1
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
2015-08-05 15:50:27 +02:00
Guido Martínez 2e32330c4a Makefile: unexport O
After bee5745ccc ("Makefile: don't depend on the umask"), any use
of "make O=<dir>" would leak $O into the enviroment for submakes,
and it's inherited by package makefiles. Some package makefiles have
protections to make sure they don't use the value of $O if it comes from
the enviroment (Linux), but some don't (uClibc).

This caused build failures when using a different output dir.

Fix this by unconditionally unexporting the O variable, since we never
need to have it set in the environment for packages, it should be only
internally used by BR.

Signed-off-by: Guido Martínez <guido@vanguardiasur.com.ar>
Acked-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
Acked-by: Romain Naour <romain.naour@openwide.fr>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
2015-07-26 15:06:55 +02:00
Guido Martínez 1e9f604716 Makefile: fix performance regression caused by the umask handling
Commit bee5745c introduced an extra level of 'make' when the umask is
different from 0022. However, when several targets were specified on
the command line, a new make instance would be called for each target.
This introduces a huge performance overhead when many targets are
specified on the command line.

To fix this, use the same approach as used in the mkmakefile script:
an addition target on which the MAKECMDGOALS depend, so that this
target is run only once.

Note that the mkmakefile script contains a special exception for
Makefile, because the Makefile in the output directory is generated.
Since the top-level Makefile is not generated, this exception is not
needed here.

While we're at it, also fix the whitespace in the UMASK assignment.

Signed-off-by: Guido Martínez <guido@vanguardiasur.com.ar>
Signed-off-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>
[yann.morin.1998@free.fr: aggregate patches from Arnout and Guido]
Signed-off-by: Yann E. MORIN <yann.morin.1998@free.fr>
Acked-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
2015-07-18 11:31:38 +02:00