diff mbox

libselinux: use correct definition of ARCH

Message ID 1442398203-46701-1-git-send-email-Vincent.Riera@imgtec.com
State Accepted
Headers show

Commit Message

Vicente Olivert Riera Sept. 16, 2015, 10:10 a.m. UTC
The Makefile of libselinux performs the following check:

ARCH := $(patsubst i%86,i386,$(shell uname -m))
ifneq (,$(filter i386,$(ARCH)))
TLSFLAGS += -mno-tls-direct-seg-refs
endif

Which means that if the host machine is an x86, then TLSFLAGS will
contain -mno-tls-direct-seg-refs. That command line option causes
libselinux to fail when building it for target architectures where the
compiler doesn't support that option, i.e. MIPS:

mips-img-linux-gnu-gcc: error: unrecognized command line option
‘-mno-tls-direct-seg-refs’

So to fix that problem we can set the ARCH variable to $(KERNEL_ARCH),
and then append it to the LIBSELINUX_MAKE_OPTS.

Signed-off-by: Vicente Olivert Riera <Vincent.Riera@imgtec.com>
---
 package/libselinux/libselinux.mk |    3 ++-
 1 files changed, 2 insertions(+), 1 deletions(-)

Comments

Thomas Petazzoni Sept. 16, 2015, 10:39 a.m. UTC | #1
Dear Vicente Olivert Riera,

On Wed, 16 Sep 2015 11:10:03 +0100, Vicente Olivert Riera wrote:
> The Makefile of libselinux performs the following check:
> 
> ARCH := $(patsubst i%86,i386,$(shell uname -m))
> ifneq (,$(filter i386,$(ARCH)))
> TLSFLAGS += -mno-tls-direct-seg-refs
> endif
> 
> Which means that if the host machine is an x86, then TLSFLAGS will
> contain -mno-tls-direct-seg-refs. That command line option causes
> libselinux to fail when building it for target architectures where the
> compiler doesn't support that option, i.e. MIPS:
> 
> mips-img-linux-gnu-gcc: error: unrecognized command line option
> ‘-mno-tls-direct-seg-refs’
> 
> So to fix that problem we can set the ARCH variable to $(KERNEL_ARCH),
> and then append it to the LIBSELINUX_MAKE_OPTS.
> 
> Signed-off-by: Vicente Olivert Riera <Vincent.Riera@imgtec.com>

Looks good to me:

Reviewed-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>

I'm surprised we never caught this through the autobuilder testing, but
I guess all autobuilder machines are x86_64 based, which will not
exhibit the problem.

Thanks!

Thomas
Vicente Olivert Riera Sept. 16, 2015, 10:46 a.m. UTC | #2
Dear Thomas Petazzoni,

On 09/16/2015 11:39 AM, Thomas Petazzoni wrote:
> Dear Vicente Olivert Riera,
> 
> On Wed, 16 Sep 2015 11:10:03 +0100, Vicente Olivert Riera wrote:
>> The Makefile of libselinux performs the following check:
>>
>> ARCH := $(patsubst i%86,i386,$(shell uname -m))
>> ifneq (,$(filter i386,$(ARCH)))
>> TLSFLAGS += -mno-tls-direct-seg-refs
>> endif
>>
>> Which means that if the host machine is an x86, then TLSFLAGS will
>> contain -mno-tls-direct-seg-refs. That command line option causes
>> libselinux to fail when building it for target architectures where the
>> compiler doesn't support that option, i.e. MIPS:
>>
>> mips-img-linux-gnu-gcc: error: unrecognized command line option
>> ‘-mno-tls-direct-seg-refs’
>>
>> So to fix that problem we can set the ARCH variable to $(KERNEL_ARCH),
>> and then append it to the LIBSELINUX_MAKE_OPTS.
>>
>> Signed-off-by: Vicente Olivert Riera <Vincent.Riera@imgtec.com>
> 
> Looks good to me:
> 
> Reviewed-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
> 
> I'm surprised we never caught this through the autobuilder testing, but
> I guess all autobuilder machines are x86_64 based, which will not
> exhibit the problem.

Yeah, I set a new autobuilder to run only MIPS builds since currently
there aren't many autobuild failures to look at (I needed more!), and I
put it on a x86 virtual machine just to also catch possible issues due
to building on a 32-bit host machine, and because I already had another
autobuilder running on a x86_64 host. And look, I have already catch one! :D

Thanks for the review.

Regards,

Vincent.

> Thanks!
> 
> Thomas
>
Thomas Petazzoni Sept. 16, 2015, 11:41 a.m. UTC | #3
Hello,

On Wed, 16 Sep 2015 11:46:41 +0100, Vicente Olivert Riera wrote:

> > I'm surprised we never caught this through the autobuilder testing, but
> > I guess all autobuilder machines are x86_64 based, which will not
> > exhibit the problem.
> 
> Yeah, I set a new autobuilder to run only MIPS builds since currently
> there aren't many autobuild failures to look at (I needed more!), and I
> put it on a x86 virtual machine just to also catch possible issues due
> to building on a 32-bit host machine, and because I already had another
> autobuilder running on a x86_64 host. And look, I have already catch one! :D

Great! Do you want an account to submit your build results
automatically to autobuild.buildroot.org?

Best regards,

Thomas
Vicente Olivert Riera Sept. 16, 2015, 2:25 p.m. UTC | #4
Hi Thomas,

On 09/16/2015 12:41 PM, Thomas Petazzoni wrote:
> Hello,
> 
> On Wed, 16 Sep 2015 11:46:41 +0100, Vicente Olivert Riera wrote:
> 
>>> I'm surprised we never caught this through the autobuilder testing, but
>>> I guess all autobuilder machines are x86_64 based, which will not
>>> exhibit the problem.
>>
>> Yeah, I set a new autobuilder to run only MIPS builds since currently
>> there aren't many autobuild failures to look at (I needed more!), and I
>> put it on a x86 virtual machine just to also catch possible issues due
>> to building on a 32-bit host machine, and because I already had another
>> autobuilder running on a x86_64 host. And look, I have already catch one! :D
> 
> Great! Do you want an account to submit your build results
> automatically to autobuild.buildroot.org?

yes, please.

Thanks,

Vincent.

> Best regards,
> 
> Thomas
>
Thomas Petazzoni Sept. 16, 2015, 8:19 p.m. UTC | #5
Dear Vicente Olivert Riera,

On Wed, 16 Sep 2015 11:10:03 +0100, Vicente Olivert Riera wrote:
> The Makefile of libselinux performs the following check:
> 
> ARCH := $(patsubst i%86,i386,$(shell uname -m))
> ifneq (,$(filter i386,$(ARCH)))
> TLSFLAGS += -mno-tls-direct-seg-refs
> endif
> 
> Which means that if the host machine is an x86, then TLSFLAGS will
> contain -mno-tls-direct-seg-refs. That command line option causes
> libselinux to fail when building it for target architectures where the
> compiler doesn't support that option, i.e. MIPS:
> 
> mips-img-linux-gnu-gcc: error: unrecognized command line option
> ‘-mno-tls-direct-seg-refs’
> 
> So to fix that problem we can set the ARCH variable to $(KERNEL_ARCH),
> and then append it to the LIBSELINUX_MAKE_OPTS.
> 
> Signed-off-by: Vicente Olivert Riera <Vincent.Riera@imgtec.com>
> ---
>  package/libselinux/libselinux.mk |    3 ++-
>  1 files changed, 2 insertions(+), 1 deletions(-)

Applied, thanks.

Thomas
diff mbox

Patch

diff --git a/package/libselinux/libselinux.mk b/package/libselinux/libselinux.mk
index e6a7c6b..d4b96c4 100644
--- a/package/libselinux/libselinux.mk
+++ b/package/libselinux/libselinux.mk
@@ -15,7 +15,8 @@  LIBSELINUX_INSTALL_STAGING = YES
 
 LIBSELINUX_MAKE_OPTS = \
 	$(TARGET_CONFIGURE_OPTS) \
-	LDFLAGS="$(TARGET_LDFLAGS) -lpcre -lpthread"
+	LDFLAGS="$(TARGET_LDFLAGS) -lpcre -lpthread" \
+	ARCH=$(KERNEL_ARCH)
 
 define LIBSELINUX_BUILD_CMDS
 	# DESTDIR is needed during the compile to compute library and