diff mbox

host-fakeroot: re-run autotools to fix build on ppc64le host

Message ID 1456984671-10123-1-git-send-email-stewart@linux.vnet.ibm.com
State Rejected
Headers show

Commit Message

Stewart Smith March 3, 2016, 5:57 a.m. UTC
When building on ppc64le host (notably Ubuntu 14.04, where this was
reported), the configure/libtool combination in fakeroot would
incorrectly detect that ld doesn't know how to build shared libraries.
Instead of checking for ppc64le libs, it was checking if we could build
*big* endian libraries, which the native Ubuntu toolchain on Ubuntu 14.04
cannot. The end result would be that you wouldn't get libfakeroot.so,
causing a build failure later on.

However, if we rerun autotools, this works. Additionally, due to
the strange way that fakeroot builds, we need to mkdir build-aux as
this directory does not exist in the original source package.

With this patch, you can now successfully build OpenPower firmware
(which uses buildroot infrastructure) on an Ubuntu 14.04 ppc64le
system.

Fixes: https://github.com/open-power/op-build/issues/194
Signed-off-by: Stewart Smith <stewart@linux.vnet.ibm.com>
---
 package/fakeroot/fakeroot.mk | 7 +++++++
 1 file changed, 7 insertions(+)

Comments

Thomas Petazzoni March 3, 2016, 11:15 a.m. UTC | #1
Dear Stewart Smith,

On Thu,  3 Mar 2016 16:57:51 +1100, Stewart Smith wrote:
> When building on ppc64le host (notably Ubuntu 14.04, where this was
> reported), the configure/libtool combination in fakeroot would
> incorrectly detect that ld doesn't know how to build shared libraries.
> Instead of checking for ppc64le libs, it was checking if we could build
> *big* endian libraries, which the native Ubuntu toolchain on Ubuntu 14.04
> cannot. The end result would be that you wouldn't get libfakeroot.so,
> causing a build failure later on.
> 
> However, if we rerun autotools, this works. Additionally, due to
> the strange way that fakeroot builds, we need to mkdir build-aux as
> this directory does not exist in the original source package.
> 
> With this patch, you can now successfully build OpenPower firmware
> (which uses buildroot infrastructure) on an Ubuntu 14.04 ppc64le
> system.
> 
> Fixes: https://github.com/open-power/op-build/issues/194
> Signed-off-by: Stewart Smith <stewart@linux.vnet.ibm.com>

I understand the issue, but I don't really like the solution, because
it means that from now on, host-autoconf, host-automake and
host-libtool are always going to be built as dependencies of
host-fakeroot, making a "minimal" build longer.

Unfortunately, I don't have a lot of other proposals to make, except
maybe seeing if there is a more recent version of fakeroot that has
an already re-generated configure script that works for you.

Best regards,

Thomas
Joel Stanley May 11, 2016, 3:28 a.m. UTC | #2
Hello Thomas,

On Thu, Mar 3, 2016 at 9:45 PM, Thomas Petazzoni
<thomas.petazzoni@free-electrons.com> wrote:
> On Thu,  3 Mar 2016 16:57:51 +1100, Stewart Smith wrote:
>> When building on ppc64le host (notably Ubuntu 14.04, where this was
>> reported), the configure/libtool combination in fakeroot would
>> incorrectly detect that ld doesn't know how to build shared libraries.
>> Instead of checking for ppc64le libs, it was checking if we could build
>> *big* endian libraries, which the native Ubuntu toolchain on Ubuntu 14.04
>> cannot. The end result would be that you wouldn't get libfakeroot.so,
>> causing a build failure later on.
>>
>> However, if we rerun autotools, this works. Additionally, due to
>> the strange way that fakeroot builds, we need to mkdir build-aux as
>> this directory does not exist in the original source package.
>>
>> With this patch, you can now successfully build OpenPower firmware
>> (which uses buildroot infrastructure) on an Ubuntu 14.04 ppc64le
>> system.
>>
>> Fixes: https://github.com/open-power/op-build/issues/194
>> Signed-off-by: Stewart Smith <stewart@linux.vnet.ibm.com>
>
> I understand the issue, but I don't really like the solution, because
> it means that from now on, host-autoconf, host-automake and
> host-libtool are always going to be built as dependencies of
> host-fakeroot, making a "minimal" build longer.
>
> Unfortunately, I don't have a lot of other proposals to make, except
> maybe seeing if there is a more recent version of fakeroot that has
> an already re-generated configure script that works for you.

I'm updating the OpenPower firmware builds to use 2016.05 and came
across Stewarts patch in our tree. It would be good to get a fix
upstream.

Would you take a patch to update the autotools generated files in
fakeroot? This way we can build our firmware on the systems that they
run on, without anyone having to spend the extra time building.

Cheers,

Joel
diff mbox

Patch

diff --git a/package/fakeroot/fakeroot.mk b/package/fakeroot/fakeroot.mk
index 3f1c803..1f485f4 100644
--- a/package/fakeroot/fakeroot.mk
+++ b/package/fakeroot/fakeroot.mk
@@ -9,5 +9,12 @@  FAKEROOT_SOURCE = fakeroot_$(FAKEROOT_VERSION).orig.tar.bz2
 FAKEROOT_SITE = http://snapshot.debian.org/archive/debian/20141023T043132Z/pool/main/f/fakeroot
 FAKEROOT_LICENSE = GPLv3+
 FAKEROOT_LICENSE_FILES = COPYING
+HOST_FAKEROOT_AUTORECONF=YES
+
+define HOST_FAKEROOT_POST_PATCH_FIXUP
+	mkdir $(HOST_FAKEROOT_DIR)/build-aux
+endef
+
+HOST_FAKEROOT_POST_PATCH_HOOKS += HOST_FAKEROOT_POST_PATCH_FIXUP
 
 $(eval $(host-autotools-package))