This commit introduces the BR2_EXTERNAL environment variable, which
will allow to keep Buildroot customization (board-specific
configuration files or root filesystem overlays, package Config.in and
makefiles, as well as defconfigs) outside of the Buildroot tree.
This commit only introduces the variable itself, and ensures that it
is available within Config.in options. This allows us to use
$BR2_EXTERNAL in a 'source' statement in Config.in.
Following patches extend the usage of BR2_EXTERNAL to other areas
(packages and defconfigs).
In details, this commit:
* Introduces the BR2_EXTERNAL Kconfig option. This option has no
prompt, and is therefore not visible to the user and also not
stored in the .config file. It is automatically set to the value of
the BR2_EXTERNAL environment variable. The only purpose of this
BR2_EXTERNAL Kconfig option is to allow $BR2_EXTERNAL to be
properly expanded when used inside Kconfig source statements.
* Calculates the BR2_EXTERNAL value to use. If passed on the command
line, then this value is taken in priority, and saved to a
.br-external hidden file in the output directory. If not passed on
the command line, then we read the .br-external file from the
output directory. This allows the user to not pass the BR2_EXTERNAL
value at each make invocation. If no BR2_EXTERNAL value is passed,
we define it to support/dummy-external, so that the kconfig code
finds an existing $(BR2_EXTERNAL)/package/Config.in file to
include.
* Passes the BR2_EXTERNAL into the *config environment, so that its
value is found when parsing/evaluating Config.in files and .config
values.
Samuel Martin [Thu, 5 Dec 2013 19:11:09 +0000 (20:11 +0100)]
manual: fix manual generation in preparation for BR2_EXTERNAL support
This patch fixes an issue that occurs during the manual build process
which will occur when BR2_EXTERNAL is introduced.
During the package list generation, the python script using kconfiglib
module reads and parses the Config.in files. So, symbols, including
environment variables, got expanded and/or resolved. In
kconfiglib.py, this patch fixes the regex that did not allow to use
numbers in the environment variable names, so '$BR2_EXTERNAL' got
wrongly expanded like it was '${BR}2_EXTERNAL':
<snip>
>>> Updating the manual lists...
Traceback (most recent call last):
File "/opt/buildroot/master/support/scripts/gen-manual-lists.py", line 375, in <module>
buildroot = Buildroot()
File "/opt/buildroot/master/support/scripts/gen-manual-lists.py", line 216, in __init__
self.root_config))
File "/opt/buildroot/master/support/scripts/kconfiglib.py", line 214, in __init__
self.top_block = self._parse_file(filename, None, None, None)
File "/opt/src/buildroot/master/support/scripts/kconfiglib.py", line 919, in _parse_file
return self._parse_block(line_feeder, None, parent, deps, visible_if_deps, res)
File "/opt/buildroot/master/support/scripts/kconfiglib.py", line 1114, in _parse_block
self.base_dir))
IOError: /opt/buildroot/master/Config.in:490: sourced file "$BR2_EXTERNAL/Config.in" (expands to
"2_EXTERNAL/Config.in") not found. Perhaps base_dir
(argument to Config.__init__(), currently
"/opt/buildroot/master") is set to the wrong value.
docs/manual/manual.mk:2: recipe for target 'manual-update-lists' failed
make: *** [manual-update-lists] Error 1
</snip>
Jerzy Grzegorek [Mon, 2 Dec 2013 08:00:03 +0000 (09:00 +0100)]
package: unification of name <pkg>_VERSION_MINOR variable
Currently there are two different names of the minor version variable:
<PKG>_MINOR_VERSION and <PKG>_VERSION_MINOR
This patch unifies them to <PKG>_VERSION_MINOR
Jerzy Grzegorek [Mon, 2 Dec 2013 08:00:02 +0000 (09:00 +0100)]
package: unification of name <pkg>_VERSION_MAJOR variable
Currently there are two different names of the major version variable:
<PKG>_MAJOR_VERSION and <PKG>_VERSION_MAJOR
This patch unifies them to <PKG>_VERSION_MAJOR
Yegor Yefremov [Thu, 5 Dec 2013 09:08:01 +0000 (10:08 +0100)]
python-dialog: add new package
[Peter: Propagate dialog dependencies, show comment if not available] Signed-off-by: Yegor Yefremov <[email protected]> Signed-off-by: Peter Korsgaard <[email protected]>
xlib_libX11, one of the main libraries of X.org, uses dlfcn.h and dlopen.
To avoid having to add a dependency on !BR2_PREFER_STATIC_LIB on tons of
packages, we promote this dependency to X.org itself (similar to how thread
support is handled in X.org).
Just like for binutils, gdb versions pulled from Git want to
regenerate their documentation, and none of the MAKEINFO tricks we've
tried worked properly, so we're simply adding host-texinfo as a
dependency.
binutils: add missing dependencies for Git versions
When the binutils source code is pulled from a Git repository, a
number of generated files are not present, and need to be
re-generated. Those files are generated by flex, bison, and texinfo,
so we need to pull the corresponding dependencies.
Notice that we tried avoiding the texinfo dependency by doing a number
of MAKEINFO tricks, but none of them worked properly, so we've instead
chosen to depend on host-texinfo.
This commit allows to build an internal toolchain for the Microblaze
architecture, with either glibc or eglibc.
Note that we add an explicit list of architectures that are supported
by uClibc, and Microblaze is not part of them, because it currently
doesn't build for this architecture.
[Thomas: add better commit log, add architecture dependencies on
uClibc, to avoid selecting uClibc on Microblaze]
Mischa Jonker [Thu, 5 Dec 2013 17:20:44 +0000 (18:20 +0100)]
infra: introduce github helper function
In order to make it easier to cope with changes in github download-URL's,
this patch introduces the github helper function. It generates the site
URL of a github repository. It's usage is $(call github,user,pkg,version).
[Thomas: extracted from Mischa original commit, macro moved to
pkg-download.mk]
Thomas Pedersen [Fri, 6 Dec 2013 20:46:46 +0000 (12:46 -0800)]
pandaboard: fix defconf build with recent kernels
The patch "pandaboard: Fix defconfig build" locked the
default pandaboard kernel to 3.8.11. This is inconvenient,
since the boot process has changed since kernel > 3.8.
Update the default kernel to 3.12.2 and fix the boot image
configuration, but remain compatible with legacy U-Boot
versions by using appended flattened device tree uImage.
This change *should* keep future kernels compatible with a
fixed U-Boot version.
Note the default device tree is now for the pandaboard-ES,
so users of other board revisions will need to set the
correct DTS_NAME.
[Peter: use custom kernel headers version (3.12.2)] Signed-off-by: Thomas Pedersen <[email protected]> Signed-off-by: Peter Korsgaard <[email protected]>
Yann E. MORIN [Fri, 6 Dec 2013 20:04:37 +0000 (21:04 +0100)]
board/raspberrypi: bump to use Linux 3.10
The new 'stable' branch of the Raspberry Pi kernel is now based
on the Linux 3.10 branch (currently 3.10.22), so bump both the
kernel version for the toolchain headers, and for the target.
Yann E. MORIN [Thu, 5 Dec 2013 23:41:57 +0000 (00:41 +0100)]
manual: do not generate .pyc files
Python saves a pre-compiled support/scripts/kconfiglib.pyc file
side-to-side with the corresponding .py file.
This does not work if the Buildroot source tree is read-only (but
this is not an error for Python, which keep going OK).
But this may cause issues for out-of-tree builds in case the same
Buildroot source tree is shared by many builds.
Also, 'make clean' currently does not clean this file, and out-of-tree
builds can remove it either, at the risk of causing issues for other
out-of-tree builds running at the same time.
Just tell Python not to generate .pyc files:
- call the script via python, don't use the sha-bang
- thus, make the script non-executable, and remove the sha-bang
Markos Chandras [Mon, 2 Dec 2013 10:51:05 +0000 (10:51 +0000)]
glibc: Backport upstream patch to accept make-4.0 or newer
Upstream patch (28d708c44bc47b56f6551ff285f78edcf61c208a) added support for
make-4.0 or newer. We backport this patch to allow glibc to build on hosts
running the latest version of 'make'.
[Peter: keep clean comment as pointed out by Arnout] Signed-off-by: Thomas De Schampheleire <[email protected]> Signed-off-by: Peter Korsgaard <[email protected]>
freetype 2.5.1 moved headers from /usr/include/freetype2/freetype to
/usr/include/freetype2.
Some packages use a non-recommended header inclusion of <freetype/x.h>
instead of using the recommended ft2build.h method, so until it's fixed
across the board upstream for packages that break do a symlink.
A 3.11 release is expected shortly; in the interim, switch to a recent Git
snapshot in which the most serious build problems appear to have been fixed.
Yann E. MORIN [Thu, 5 Dec 2013 21:46:49 +0000 (22:46 +0100)]
package/openssl: fix coding style
Currently, openssl defines three conditional hooks, but two do not
follow our coding rules:
- for PRE_CONFIGURE, the hook is defined in the if-block, but
the _HOOK variable is always set
- for POST_INSTALL_TARGET, the hook is always defined, but the
_HOOK variable is set in the if-block
Fix that:
- define the hook in the if-block
- assign the _HOOK variable in the if-block
At the same time, get rid of extra empty lines that make it more
difficult to read.
LFTP is a sophisticated ftp/http client, and a file transfer program
supporting a number of network protocols. Like BASH, it has job
control and uses the readline library for input. It has bookmarks,
a built-in mirror command, and can transfer several files in parallel.
It was designed with reliability in mind.
grub: force -m32 so we build grub 32 bits on 64 bits architecture
As reported by Matthew Weber, Grub doesn't build on 64 bits build
machines, because the host compiler produces 64 bits binaries by
default, while Grub should be built 32 bits. Therefore, this commit
passes -m32 to the Grub CFLAGS, so that 32 bits binaries are always
produced.
[Peter: tweak 004-dont-run-compiled-code.patch description as pointed out by Thomas] Signed-off-by: "Yann E. MORIN" <[email protected]> Cc: Thomas Petazzoni <[email protected]> Signed-off-by: Peter Korsgaard <[email protected]>
Note that the propagation of the thread dependency to the oprofile
package is a little bit non standard, because oprofile selects libpfm4
only on the PowerPC architecture. So we ensure the thread dependency
is only enforced on PowerPC, and a separate comment is displayed when
thread support is not available, but the PowerPC architecture is used.
Yann E. MORIN [Mon, 2 Dec 2013 20:49:27 +0000 (21:49 +0100)]
docs/manual: limit the depth of the TOC in the HTML output
The current TOC level is set to 4, which does not mean 'a 4-level deep TOC',
but really means 'a TOC deep to the 4th level', with the first level being
level 0, which means we have:
12. Appendix
12.1. Makedev syntax documentation
12.2. Makeuser syntax documentation
12.3. Partition table layout description syntax
12.3.1. The global section
Properties for the global section
Which a bit too much. And yet, the fifth level is not shown, since we
don't have any! :-/
Limit the depth of the TOC to three levels, which is just enough to be
usefull, yet not cluttered by low-level titles.
Install syslogd/klogd to /sbin instead of /usr/sbin to really win over
busybox and avoid the ugly noise when booting without busybox installed.
Also drop uninstall hook and manpage installation.
Gustavo Zacarias [Thu, 28 Nov 2013 17:22:27 +0000 (14:22 -0300)]
util-linux: install PAM configuration files
Install PAM configuration files for su (with "su -" variant) and login
when the tools are enabled.
This finally fixes bug #5366 and now we can login with an util-linux
/bin/login.
The makeinfo/missing logic is botched leading to failures such as:
http://autobuild.buildroot.net/results/5f0/5f0e8f62be86b56813f5fc0510e83289ed2b0410/
Just disable documentation build the hard way.
Peter Korsgaard [Mon, 2 Dec 2013 12:11:31 +0000 (13:11 +0100)]
package: add rtptools
Notice that the license is quite special. It is basically MIT with the
difference that it only allows use for:
'research and educational purpose and without fee ... Use of this software
in whole or in parts for direct commercial advantage requires explicit
prior permission'