| Submitter | Thomas Petazzoni |
|---|---|
| Date | Jan. 6, 2013, 3:22 p.m. |
| Message ID | <cover.1357485747.git.thomas.petazzoni@free-electrons.com> |
| Download | mbox |
| Permalink | /patch/209760/ |
| State | Accepted |
| Headers | show |
Pull-request
git://git.free-electrons.com/users/thomas-petazzoni/buildroot.git perf-elfutilsComments
>>>>> "Thomas" == Thomas Petazzoni <thomas.petazzoni@free-electrons.com> writes:
Thomas> Hello,
Thomas> Here is a set of patches that add the elfutils and perf packages in
Thomas> Buildroot, based on previous efforts from Stefan Fröberg and Kaiwan
Thomas> Billimoria (thanks !).
Thomas> These packages are not trivial because:
Thomas> 1) perf is part of the kernel sources
Thomas> 2) elfutils is a nightmare to build against uClibc
Thomas> I've been working on this for about two days, trying different
Thomas> solutions, the one proposed here appeared to be the most reasonable
Thomas> one in terms of patch size, and maintenability.
Thanks everyone, committed series.
Thomas, please don't forget to (try to) send these patches upstream so
we don't have to maintain them ourselves in the future.
Dear Peter Korsgaard, On Mon, 07 Jan 2013 23:32:56 +0100, Peter Korsgaard wrote: > Thanks everyone, committed series. Thanks for merging them. Hopefully, it won't make the autobuilders explode too much. > Thomas, please don't forget to (try to) send these patches upstream so > we don't have to maintain them ourselves in the future. Which ones exactly? The big fat patches we are downloading from fedorahosted.org? Our patches? All our patches are really specific to uClibc support, and seeing the number of glibc-isms in elfutils, I am not sure the maintainers will be interested in making it uClibc friendly. But it's maybe worth trying. One nice thing that could be done is migrate the linux-kernel-module.c thing to use nftw(), so we could drop the fts() mess. Thomas
>>>>> "Thomas" == Thomas Petazzoni <thomas.petazzoni@free-electrons.com> writes: Hi, >> Thomas, please don't forget to (try to) send these patches upstream so >> we don't have to maintain them ourselves in the future. Thomas> Which ones exactly? The big fat patches we are downloading from Thomas> fedorahosted.org? Our patches? Thomas> All our patches are really specific to uClibc support, and Thomas> seeing the number of glibc-isms in elfutils, I am not sure the Thomas> maintainers will be interested in making it uClibc Thomas> friendly. But it's maybe worth trying. Our own. I would certainly say it's worth a try. Thomas> One nice thing that could be done is migrate the Thomas> linux-kernel-module.c thing to use nftw(), so we could drop the Thomas> fts() mess. Indeed.
Hello, Here is a set of patches that add the elfutils and perf packages in Buildroot, based on previous efforts from Stefan Fröberg and Kaiwan Billimoria (thanks !). These packages are not trivial because: 1) perf is part of the kernel sources 2) elfutils is a nightmare to build against uClibc I've been working on this for about two days, trying different solutions, the one proposed here appeared to be the most reasonable one in terms of patch size, and maintenability. Here is a short description of the patches, and the logic behind the order of the patches: * Patches 1 and 2 make it possible to list several patches in the <pkg>_PATCH variable of a package .mk file. This is used by the elfutils package to apply two big patches that are provided along with elfutils tarball. Compared to the previous proposal from Stefan Fröberg, it avoids the need from merging in Buildroot two fairly large patches (57K and 62K). * Patch 3 adds elfutils as a glibc-only package, to keep things simple. * Patch 4 allows to disable the installation of elfutils. Instead of doing it by removing executable after their installation, I've added a configuration option inside elfutils. This will be useful to support uClibc, as the elfutils tools are causing issues to build with uClibc, and we don't need them to just build the elfutils libraries. * Patch 5 adds a perf package, with no support for libelf. * Patch 6 improves the perf package to use libelf when available (thanks to the elfutils package). * Patch 7 adds error checking to the perf package to catch kernel version problems. * Patch 8 builds argp-standalone as position-independent code. This is needed as it will be used by the elfutils package in some shared library. * Patch 9 to 14 are here to progressively make elfutils buildable on uClibc. Notice that at this point, it is *NOT* possible to select elfutils with a uClibc toolchain. Only the final commit makes that possible. So this split of patches is here only to make things easier to review (but this split also doesn't break the build, as uClibc build of elfutils is not possible until we reach patch 15). Most of the patches are relatively simple. The most annoying one is the one regarding the fts_*() family of functions. I had basically three choices here: (1) Enable fts_*() functions in our default uClibc configuration. But elfutils is apparently the only package to make use of these functions, since even the uClibc help text for those functions mention elfutils as the primary reason for having support for those functions in uClibc. The help text also encourages migrating to the nftw() function instead. So, changing our default uClibc configuration didn't seem like the right choice. (2) Use gnulib to provide fts. This is what Stefan Fröberg initially did. It required a very large (1.5 MB) patch. I improved that by creating a host-gnulib package, and then call gnulib-tool at build time in the elfutils package so that the needed functions are added. But it still required changes to the configure.ac file, Makefile.am and so on. So, a lot better than the 1.5 MB patch, but still not really nice, especially just to get the 'fts' feature. (3) Copy the fts_*() functions from uClibc. This is what I've decided to implement in this proposal. * Patch 15 finally makes elfutils available on uClibc (but only the libraries, not the utilities themselves). The result has been tested on a x86 glibc toolchain, x86 uClibc toolchain and ARM uClibc toolchain. Best regards, Thomas The following changes since commit 66bfe1d4fe2de50aef6ac3fc836a710fa577cdef: xdriver_xf86-video-sunffb: remove package (2013-01-05 14:34:48 +0100) are available in the git repository at: git://git.free-electrons.com/users/thomas-petazzoni/buildroot.git perf-elfutils for you to fetch changes up to 3e9f9e1a1d4de1c948dcf64dffd1a9e6e653d7bd: elfutils: make available on uClibc toolchains (2013-01-06 16:08:29 +0100) ---------------------------------------------------------------- Stefan Fröberg (1): elfutils: new package Thomas Petazzoni (14): package: support multiple patches docs/manual: update to mention the multiple patches support elfutils: make it possible to only install the libraries perf: new package perf: allow build against libelf when available perf: add kernel version checks argp-standlone: build position independent code elfutils: towards uClibc support: argp-standalone usage elfutils: towards uClibc support: solve memcpy problem elfutils: towards uClibc support: requires largefile elfutils: towards uClibc support: gettext elfutils: towards uClibc support: FTS functions elfutils: towards uClibc support: disable po build elfutils: make available on uClibc toolchains docs/manual/adding-packages-generic.txt | 17 +- package/Config.in | 2 + package/argp-standalone/argp-standalone.mk | 3 + package/elfutils/Config.in | 29 + package/elfutils/elfutils-01-disable-progs.patch | 47 + package/elfutils/elfutils-02-argp-support.patch | 92 ++ package/elfutils/elfutils-03-memcpy-def.patch | 24 + package/elfutils/elfutils-04-fts.patch | 1307 ++++++++++++++++++++++ package/elfutils/elfutils-05-disable-po.patch | 22 + package/elfutils/elfutils.mk | 70 ++ package/perf/Config.in | 22 + package/perf/perf.mk | 55 + package/pkg-generic.mk | 17 +- 13 files changed, 1695 insertions(+), 12 deletions(-) create mode 100644 package/elfutils/Config.in create mode 100644 package/elfutils/elfutils-01-disable-progs.patch create mode 100644 package/elfutils/elfutils-02-argp-support.patch create mode 100644 package/elfutils/elfutils-03-memcpy-def.patch create mode 100644 package/elfutils/elfutils-04-fts.patch create mode 100644 package/elfutils/elfutils-05-disable-po.patch create mode 100644 package/elfutils/elfutils.mk create mode 100644 package/perf/Config.in create mode 100644 package/perf/perf.mk Thanks,