Currently, if there is a circular dependency in the packages, the
graph-depends script just errors out with a Python RuntimeError which is
not caught, resulting in a very-long backtrace which does not provide
any hint as what the real issue is (even if "RuntimeError: maximum
recursion depth exceeded" is a pretty good hint at it).
We fix that by recursing the dependency chain of each package, until we
either end up with a package with no dependency, or with a package
already seen along the current dependency chain.
We need to introduce a new function, check_circular_deps(), because we
can't re-use the existing ones:
- remove_mandatory_deps() does not iterate,
- remove_transitive_deps() does iterate, but we do not call it for the
top-level package if it is not 'all'
- it does not make sense to use those functions anyway, as they were
not designed to _check_ but to _act_ on the dependency chain.
Since we've had time-related issues in the past, we do not want to
introduce yet another time-hog, so here are timings with the circular
dependency check:
$ time python -m cProfile -s cumtime support/scripts/graph-depends
[...]
28352654 function calls (20323050 primitive calls) in 87.292 seconds
Ordered by: cumulative time
ncalls tottime percall cumtime percall filename:lineno(function)
1 0.012 0.012 87.292 87.292 graph-depends:24(<module>)
21 0.000 0.000 73.685 3.509 subprocess.py:473(_eintr_retry_call)
7 0.000 0.000 73.655 10.522 subprocess.py:768(communicate)
7 73.653 10.522 73.653 10.522 {method 'read' of 'file' objects}
5/1 0.027 0.005 43.488 43.488 graph-depends:164(get_all_depends)
5 0.003 0.001 43.458 8.692 graph-depends:135(get_depends)
1 0.001 0.001 25.712 25.712 graph-depends:98(get_version)
1 0.001 0.001 13.457 13.457 graph-depends:337(remove_extra_deps)
1717 1.672 0.001 13.050 0.008 graph-depends:290(remove_transitive_deps)
9784086/2672326 5.079 0.000 11.363 0.000 graph-depends:274(is_dep)
2883343/1980154 2.650 0.000 6.942 0.000 graph-depends:262(is_dep_uncached)
1 0.000 0.000 4.529 4.529 graph-depends:121(get_targets)
2883343 1.123 0.000 1.851 0.000 graph-depends:246(is_dep_cache_insert)
9784086 1.783 0.000 1.783 0.000 graph-depends:255(is_dep_cache_lookup)
2881580 0.728 0.000 0.728 0.000 {method 'update' of 'dict' objects}
1 0.001 0.001 0.405 0.405 graph-depends:311(check_circular_deps)
12264/1717 0.290 0.000 0.404 0.000 graph-depends:312(recurse)
[...]
real 1m27.371s
user 1m15.075s
sys 0m12.673s
The cumulative time spent in check_circular_deps is just below 0.5s,
which is largely less than 1% of the total run time.
Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
Cc: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Cc: Samuel Martin <s.martin49@gmail.com>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
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>
Currently, graph-depends outputs the dotfile program to stdout, and uses
stderr to trace the dependencies it is currently looking for.
Redirection was done because the output was directly piped into the dot
program to generate the final PDF/SVG/... dependency graph, but that
meant that an error in the graph-depends script was never caught
(because shell pipes only return the final command exit status, and an
empty dot program is perfectly valid so dot would not complain).
Add an option to tell graph-depends where to store the generated dot
program, and keep stdout as the default if not specified.
Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
Cc: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Cc: Samuel Martin <s.martin49@gmail.com>
[Thomas: rename metavar from DOT_FILE to OUT_FILE for consistency with
the rest of the new option naming.]
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
We currently have two circular dependency chains:
avahi -> libglade -> libgtk2 -> cups -> avahi
avahi -> libgtk3 -> cups -> avahi
The cups -> avahi dependency makes sense, as cups would be able to use
Bonjour and mDNS to find printers, so we want to keep that dependency.
The libgtk2 -> cups and libgtk3 -> cups dependencies also make sense, to
be able to offer cups in the print dialogs.
However, the avahi -> libglade and avahi -> libgtk3 dependencies do not
really make sense. As Thomas puts it:
The avahi GUI programs seem really useless to me. On Debian/Ubuntu
distributions, they are not even packaged within the main avahi
packages, but as separate packages, probably indicating that they
are not very commonly used.
So, we drop the avahi -> libglade and avahi -> libgtk3 dependencies, to
break the circular dependency chain.
Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
Cc: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
[Thomas: add comment in the .mk file.]
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
According to the discussion on the mailing-list [1], rename
the libatomic_ops supported architectures Kconfig symbol.
[1] http://lists.busybox.net/pipermail/buildroot/2016-February/152146.html
Signed-off-by: Romain Naour <romain.naour@gmail.com>
Cc: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Cc: Frank Hunleth <fhunleth@troodon-software.com>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
This commit adds two patches needed to fix musl related build issues
in musepack: a missing <sys/select.h> inclusion, and an inclusion of
<fpu_control.h> that should be made conditional on __GLIBC__.
Fixes:
http://autobuild.buildroot.net/results/6eb/6ebc9cbee3fc48f4f5b658d11b040ad62fb6607f/
Signed-off-by: Bernd Kuhls <bernd.kuhls@t-online.de>
[Thomas: split the patch in two patches, add proper patch
description.]
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Keep arm_nuri on 3.10.x for the usual reasons.
Keep mips & mipsel (32 bits) on 4.3.x because 4.4.x fails to boot
properly (kernel stuck after the CPU cache info).
Results table:
Defconfig Kernel Qemu Network Status
--------------------------------------------------------------
aarch64_virt 4.4.1 2.3.0 YES OK
arm_nuri 3.10.96 2.3.0 YES(1) OK most times(2)
arm_versatile 4.4.1 2.3.0 YES OK
arm_vexpress 4.4.1 2.3.0 YES OK
microblazebe 4.4.1 2.3.0 YES OK
microblazeel 4.4.1 2.3.0 YES OK
mips64el_malta 4.4.1 2.3.0 YES OK
mips64_malta 4.4.1 2.3.0 YES OK
mipsel_malta 4.3.5 2.3.0 YES OK (4)
mips_malta 4.3.5 2.3.0 YES OK (4)
ppc_g3beige 4.4.1 2.3.0 YES OK
ppc_mpc8544ds 4.4.1 2.3.0 YES OK
ppc_virtex_ml507 4.4.1 2.3.0 NO OK
ppc64_pseries 4.4.1 2.3.0 YES OK
sh4 4.4.1 2.3.0 YES OK
sh4eb 4.4.1 2.3.0 NO(3) OK
sparc_ss10 4.4.1 2.3.0 YES OK
sparc64_sun4u 4.4.1 2.3.0 YES OK
sparc_sun4u 4.4.1 2.3.0 YES OK
x86 4.4.1 2.3.0 YES OK
x86_64 4.4.1 2.3.0 YES OK
xtensa_lx60 4.4.1 2.3.0 YES OK
(1) - Supposed to work but broken, probably Qemu emulation issue
(2) - In like 1/3 starts it fails to work properly
(3) - Probably an endian issue with 8139 emulation/driver
(4) - Kernel stuck at cpu cache details from 4.4 - 4.4.1
Signed-off-by: Gustavo Zacarias <gustavo@zacarias.com.ar>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
The file that is actually produced is called u-boot-spl.bin, not
uboot-spl.bin.
Signed-off-by: Luca Ceresoli <luca@lucaceresoli.net>
Acked-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
mpd uses __atomic_*() built-ins, but forgets to link with -latomic
when needed, so this commit adds a patch that ensures it will link
with libatomic, and adds a dependency on BR2_TOOLCHAIN_HAS_ATOMIC.
Fixes:
http://autobuild.buildroot.net/results/e2207280f3a177e12dba502b1c01f5aeb431d04c/
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
This commit replaces 0002-musl-gcc5-fixes.patch by a backport of 3
upstream commits. It also renames
0001-thread-Name-include-stdio.h-for-prctl-as-well.patch to have the
sequence number 0004, so that it applies after the backported upstream
patches (since this patch is not upstream yet).
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
The tarball contains a working configure script, therefore removed
autoreconf.
Signed-off-by: Bernd Kuhls <bernd.kuhls@t-online.de>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
From [1]:
With version 2.0, the source code has been cleanly split into
an application-oriented user library and a time-critical stack
driver. The latter may be moved to a dedicated communication
processor or into a kernel module to deliver enhanced
performance while still keeping the API in user space.
This new version break the API used in the v1.x but
this is a complete rewrite of the Powerlink EPSG DS 301
implementation. The v1.x is deprecated anyway.
The new build system has been split in several CMake projects
which makes it difficult to package with the Buildroot CMake
infra. So add a top level CMakeLists.txt to build each
openpowerlink component without having to package each of them
in a separate Buildroot packages. Also we need to fix the
build system to support the top level CMake build.
[1] http://sourceforge.net/projects/openpowerlink/
Signed-off-by: Romain Naour <romain.naour@gmail.com>
[Thomas:
- rename patches to not contain the [FIX] part in their title.
- rewrap Config.in help text
- rename "openPOWERLINK stack type" to "stack type"
- rename ""openpowerlink demos" to "demos"]
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
kbd currently doesn't build against musl, due to some issues which
have already been fixed upstream. This commit therefore bumps to the
latest upstream version 2.0.3 to fix the musl build. In order to do
so, this commit also:
- backports a patch that makes building tests optional, which allows
to avoid a dependency on the check package
- updates the libintl patch to work with the latest upstream
Fixes:
http://autobuild.buildroot.net/results/535/5357953e763a1ac4f17332abac54ce2946629a41/
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
The build error was not yet found by the autobuilders:
output_alsa.c: In function ‘output_init_alsa’:
output_alsa.c:865:10: error: ‘M_TRIM_THRESHOLD’ undeclared (first use in this function)
mallopt(M_TRIM_THRESHOLD, -1);
^
output_alsa.c:865:10: note: each undeclared identifier is reported only once for each function it appears in
output_alsa.c:866:10: error: ‘M_MMAP_MAX’ undeclared (first use in this function)
mallopt(M_MMAP_MAX, 0);
^
This commit adds a patch fixing this build error by making the
mallopt() usage conditional on __GLIBC__.
Signed-off-by: Bernd Kuhls <bernd.kuhls@t-online.de>
[Thomas: only enclose the mallopt() call in __GLIBC__, use Git to
format the patch, improve the commit log.]
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
This patch also fixes the broken download of the previous version.
Signed-off-by: Bernd Kuhls <bernd.kuhls@t-online.de>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Leverage the CSV files produces by size-stats (make graph-size) to allow
for a comparison of rootfs size between two different buildroot
compilations.
The script takes the file-size CSV files of two compilations as input, and
produces a textual report of the differences per package.
Using the -d/--detail flag, the report will show the file size changes
instead of package size changes.
The -t/--threshold option allows to ignore file size differences smaller
or equal than the given threshold (in bytes).
Example output is:
Size difference per package (bytes), threshold = 0
--------------------------------------------------------------------------------
-8192 busybox
228572 added dmalloc
301584 added jq
--------------------------------------------------------------------------------
521964 TOTAL
or with detailed view:
Size difference per file (bytes), threshold = 0
--------------------------------------------------------------------------------
-8192 bin/busybox
18152 added usr/bin/jq
39252 added usr/bin/dmalloc
46968 added usr/lib/libdmalloc.so
47288 added usr/lib/libdmallocxx.so
47316 added usr/lib/libdmallocth.so
47748 added usr/lib/libdmallocthcxx.so
283432 added usr/lib/libjq.so.1.0.4
--------------------------------------------------------------------------------
521964 TOTAL
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
setup3.py will be automatically invoked from setup.py,
if executing on Python 3 platform.
Signed-off-by: Yegor Yefremov <yegorslists@googlemail.com>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
According to http://sourceforge.net/projects/libcue the project moved
to github.com, all source tarballs were removed from Sourceforge.
Adjust project and download URLs, update hash and remove
0001-_unused-fix.patch because there is no trace of "__unused" in the
upstream tarball anymore, the patch fails to apply.
Add autoreconf because the new upstream tarball does not contain a
configure script, autoreconf also needs a tweak because it fails when
config/ is not present.
Signed-off-by: Bernd Kuhls <bernd.kuhls@t-online.de>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
The build error is known upstream
http://sourceforge.net/p/openipmi/patches/26/
and was not yet caught by our autobuilders:
ui.c: In function ‘get_ip_addr’:
ui.c:340:5: error: unknown type name ‘u_int32_t’
u_int32_t addr;
Signed-off-by: Bernd Kuhls <bernd.kuhls@t-online.de>
Reviewed-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Add upstream commit fixing a build error not yet been found by the
autobuilders:
pstree.c: In function ‘get_threadname’:
pstree.c:798:15: error: ‘PATH_MAX’ undeclared (first use in this function)
char path[PATH_MAX + 1];
^
pstree.c:798:15: note: each undeclared identifier is reported only once for each function it appears in
pstree.c:798:10: warning: unused variable ‘path’ [-Wunused-variable]
char path[PATH_MAX + 1];
^
Signed-off-by: Bernd Kuhls <bernd.kuhls@t-online.de>
Reviewed-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
The build error was not yet found by the autobuilders:
In file included from main.c:46:0:
rand.h:31:9: error: unknown type name ‘u_int32_t’
typedef u_int32_t u_rand_t;
^
<builtin>: recipe for target 'main.o' failed
Signed-off-by: Bernd Kuhls <bernd.kuhls@t-online.de>
Reviewed-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
This commit adds a patch to the iprutils to fix the build with the
musl C library.
Signed-off-by: Bernd Kuhls <bernd.kuhls@t-online.de>
[Thomas: reformatted the patch with Git, added a better commit log.]
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Upstream now provides a new autoconf-based build system, therefore
our patches for Makefile are not needed anymore.
We adapt the gettext patch to make sure that the configure script
doesn't check for libintl.h, and we add an additional patch to fix the
libm check.
Signed-off-by: Bernd Kuhls <bernd.kuhls@t-online.de>
[Thomas: rework patches.]
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
samba4 uses the __sync_fetch_and_add_4() atomic built-in, so it should
depend on BR2_TOOLCHAIN_HAS_SYNC_4 in order to avoid build failures on
architectures not providing this atomic built-in.
Fixes:
http://autobuild.buildroot.org/results/0d0fd9d2a132a40a840bea5df59c35d8573ebf45/
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Having the host version may allow post-image scripts to encrypt the
resulting image with aespipe (and decrypt it in the update tool on the
target).
Signed-off-by: Ariel D'Alessandro <ariel@vanguardiasur.com.ar>
[Thomas: rewrap Config.in help text, tweak commit title.]
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Also switch upstream URL to new host as mentioned on old site.
Signed-off-by: Bernd Kuhls <bernd.kuhls@t-online.de>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
The build error has not yet been found by the autobuilders:
operf.cpp: In function ‘int __delete_old_previous_sample_data(const char*, const stat*, int, FTW*)’:
operf.cpp:862:10: error: ‘FTW_STOP’ was not declared in this scope
return FTW_STOP;
^
operf.cpp:864:10: error: ‘FTW_CONTINUE’ was not declared in this scope
return FTW_CONTINUE;
^
operf.cpp: In function ‘void convert_sample_data()’:
operf.cpp:899:41: error: ‘FTW_ACTIONRETVAL’ was not declared in this scope
int flags = FTW_DEPTH | FTW_ACTIONRETVAL;
Signed-off-by: Bernd Kuhls <bernd.kuhls@t-online.de>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Upstream source repo switched to github.com. Since the last release
dating back to 2014 no new tarball was released so we switch to the
latest github commit.
Signed-off-by: Bernd Kuhls <bernd.kuhls@t-online.de>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
The boost package adds a dependency on the libiconv package when
boost-locale is selected but locale support is not available in the
toolchain. However, it forgets to select BR2_PACKAGE_LIBICONV in this
situation, causing the following build failure:
http://autobuild.buildroot.org/results/ab1809f4fa8cf29208f9503edd90aca87fe397c2/
This commit fixes this mistake by adding the necessary select
BR2_PACKAGE_LIBICONV.
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>