Skip to contentSkip to conversation

dtc: broken for static builds

PATCH New Vicente Olivert Riera 4 participants 9 messages Jan 7, 2014 – Feb 3, 2014

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 dtc: broken for static builds

dtc package has hardcoded shared lib link options in the Makefile, so it will fail if you try to build it on a static lib environment.

---
 package/dtc/Config.in |    4 ++++
 1 files changed, 4 insertions(+), 0 deletions(-)
package/dtc/Config.in +4 -0
index fac6ab2..aa9f2b1 100644
@@ -1,5 +1,6 @@
 config BR2_PACKAGE_DTC
 	bool "dtc (libfdt)"
+	depends on !BR2_PREFER_STATIC_LIB
 	help
 	  The Device Tree Compiler, dtc, takes as input a device-tree in
 	  a given format and outputs a device-tree in another format.
@@ -9,6 +10,9 @@ config BR2_PACKAGE_DTC
 
 	  http://git.jdl.com/gitweb/?p=dtc.git  (no home page)
 
+comment "dtc needs a toolchain w/ dynamic library"
+	depends on BR2_PREFER_STATIC_LIB
+
 if BR2_PACKAGE_DTC
 
 config BR2_PACKAGE_DTC_PROGRAMS
Signature · 1 line
1.7.1
#1 lore raw

PATCH 1/1 dtc: broken for static builds

Quoted 4 lines
Quoted 1 line
Quoted 1 line
Quoted 1 line
Quoted 1 line

"Vicente" == Vicente Olivert Riera <[email protected]> writes:

dtc package has hardcoded shared lib link options in the Makefile, so it will fail if you try to build it on a static lib environment.

Really? I just did a quick test build and it seems to work here:

file output/target/usr/bin/dtc
output/target/usr/bin/dtc: ELF 32-bit LSB executable, ARM, version 1 (SYSV), statically linked, stripped

Signature · 1 line
Bye, Peter Korsgaard
#2 lore raw

PATCH 1/1 dtc: broken for static builds

Quoted 11 lines · Peter Korsgaard
Quoted 4 lines
Quoted 1 line
Quoted 1 line
Quoted 1 line
Quoted 1 line

"Vicente" == Vicente Olivert Riera <[email protected]> writes:

dtc package has hardcoded shared lib link options in the Makefile, so it will fail if you try to build it on a static lib environment.

Really? I just did a quick test build and it seems to work here:

file output/target/usr/bin/dtc
output/target/usr/bin/dtc: ELF 32-bit LSB executable, ARM, version 1 (SYSV), statically linked, stripped

I have tried right now with a simple buildroot configuration for x86_64 and it fails. Please, try to reproduce it following these steps:

-make clean
-make distclean
-make menuconfig
(choose x86_64 target)
(choose prefer static libs)
(choose dtc package)
-save changes
-make

Signature · 1 line
Vincent
#3 lore raw

PATCH 1/1 dtc: broken for static builds

Quoted 24 lines
Quoted 1 line
Quoted 1 line
Quoted 1 line
Quoted 1 line

"Vicente" == Vicente Olivert Riera <[email protected]> writes:

Quoted 10 lines · Peter Korsgaard
Quoted 4 lines
Quoted 1 line
Quoted 1 line
Quoted 1 line
Quoted 1 line

"Vicente" == Vicente Olivert Riera <[email protected]> writes:

dtc package has hardcoded shared lib link options in the Makefile, so it will fail if you try to build it on a static lib environment.

Really? I just did a quick test build and it seems to work here:

file output/target/usr/bin/dtc
output/target/usr/bin/dtc: ELF 32-bit LSB executable, ARM, version 1 (SYSV), statically linked, stripped

I have tried right now with a simple buildroot configuration for x86_64 and it fails. Please, try to reproduce it following these steps:

(quoted diff) +0 -3
-make clean
-make distclean
-make menuconfig

(choose x86_64 target)
(choose prefer static libs)
(choose dtc package)

Review

Quoted 2 lines
(quoted diff) +0 -2
-save changes
-make

Ahh yes, I do see it on x86-64. Thanks.

Signature · 1 line
Bye, Peter Korsgaard
#4 lore raw

PATCH 1/1 dtc: broken for static builds

Dear Peter Korsgaard,

Quoted 4 lines · Peter Korsgaard
Quoted 3 lines

I have tried right now with a simple buildroot configuration for x86_64 and it fails. Please, try to reproduce it following these steps:

Quoted 10 lines

Review

Quoted 8 lines
(quoted diff) +0 -3
-make clean
-make distclean
-make menuconfig

(choose x86_64 target)
(choose prefer static libs)
(choose dtc package)

(quoted diff) +0 -2
-save changes
-make

Ahh yes, I do see it on x86-64. Thanks.

What did you see on x86-64 exactly? Wasn't it related to libstdc++.a not being generated by the internal toolchain backend?

Thomas

Signature · 3 lines
Thomas Petazzoni, CTO, Free Electrons
Embedded Linux, Kernel and Android engineering
http://free-electrons.com
#5 lore raw

PATCH 1/1 dtc: broken for static builds

Quoted 17 lines · Thomas Petazzoni

Dear Peter Korsgaard,

Quoted 13 lines · Peter Korsgaard
Quoted 12 lines

I have tried right now with a simple buildroot configuration for x86_64 and it fails. Please, try to reproduce it following these steps:

(quoted diff) +0 -3
-make clean
-make distclean
-make menuconfig

(choose x86_64 target)
(choose prefer static libs)
(choose dtc package)

(quoted diff) +0 -2
-save changes
-make
Quoted 4 lines
Quoted 1 line

Ahh yes, I do see it on x86-64. Thanks.

What did you see on x86-64 exactly? Wasn't it related to libstdc++.a not being generated by the internal toolchain backend?

Hello Thomas,

here you have the log: http://www.pastebin.ca/2601975

Best wishes,

--
Vincent

#6 lore raw

PATCH 1/1 dtc: broken for static builds

In reply to Thomas Petazzoni
Quoted 1 line
Quoted 1 line
Quoted 1 line
Quoted 1 line
Quoted 1 line

"Thomas" == Thomas Petazzoni <[email protected]> writes:

Hi,

Quoted 4 lines
Quoted 1 line

Ahh yes, I do see it on x86-64. Thanks.

What did you see on x86-64 exactly? Wasn't it related to libstdc++.a not being generated by the internal toolchain backend?

Sorry, I don't recall the details, but I think the issue was with it trying to create a shared library and not building the object files with fPIC.

Signature · 1 line
Bye, Peter Korsgaard
#7 lore raw

PATCH 1/1 dtc: broken for static builds

Hi Peter,

Quoted 8 lines · Peter Korsgaard
Quoted 5 lines
Quoted 2 lines
Quoted 1 line
Quoted 1 line
Quoted 1 line

"Thomas" == Thomas Petazzoni <[email protected]> writes:

Ahh yes, I do see it on x86-64. Thanks.

What did you see on x86-64 exactly? Wasn't it related to libstdc++.a not being generated by the internal toolchain backend?

Sorry, I don't recall the details, but I think the issue was with it trying to create a shared library and not building the object files with fPIC.

I guess Thomas refers to 7d6c79ed887e (Compile static versions of gcc libraries). Before that libstdc++.a was not provided by the internal toolchain.

baruch

Signature · 3 lines
     http://baruch.siach.name/blog/                  ~. .~   Tk Open Systems
=}------------------------------------------------ooO--U--Ooo------------{=
   - baruch at tkos.co.il - tel: +972.2.679.5364, http://www.tkos.co.il -
#8 lore raw

PATCH 1/1 dtc: broken for static builds

In reply to Vicente Olivert Riera
Quoted 22 lines
Quoted 1 line
Quoted 1 line
Quoted 1 line
Quoted 1 line

"Vicente" == Vicente Olivert Riera <[email protected]> writes:

dtc package has hardcoded shared lib link options in the Makefile, so it will fail if you try to build it on a static lib environment.

---
 package/dtc/Config.in |    4 ++++
 1 files changed, 4 insertions(+), 0 deletions(-)
package/dtc/Config.in +1 -0
index fac6ab2..aa9f2b1 100644
@@ -1,5 +1,6 @@
 config BR2_PACKAGE_DTC
 	bool "dtc (libfdt)"
+	depends on !BR2_PREFER_STATIC_LIB
 	help
 	  The Device Tree Compiler, dtc, takes as input a device-tree in
 	  a given format and outputs a device-tree in another format.

package/dtc/Config.in config BR2_PACKAGE_DTC · line 15

Quoted 6 lines
package/dtc/Config.in +3 -0
@@ -9,6 +10,9 @@ config BR2_PACKAGE_DTC
 
 	  http://git.jdl.com/gitweb/?p=dtc.git  (no home page)
 
+comment "dtc needs a toolchain w/ dynamic library"
+	depends on BR2_PREFER_STATIC_LIB
+

Committed with the comment moved below the DTC_PROGRAMS suboption so that one get indented correctly in menuconfig, thanks.

Quoted 11 lines
package/dtc/Config.in +0 -0
 if BR2_PACKAGE_DTC
 
 config BR2_PACKAGE_DTC_PROGRAMS
Signature · 7 lines
1.7.1


_______________________________________________
buildroot mailing list
buildroot at busybox.net
http://lists.busybox.net/mailman/listinfo/buildroot
Signature · 1 line
Bye, Peter Korsgaard