Skip to contentSkip to conversation

libtool-cross: Upbreak and actually use more of it

PATCH In review Richard Purdie 4 participants 6 messages Nov 17, 2011 – Feb 8, 2012

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 libtool-cross: Upbreak and actually use more of it

We should be using libtool-cross for cross compiling but were not. This patch sets datadir so libtoolize ends up containing correct paths. It then installs libtoolize.

The path ltmain.sh was installed to was incorrect and this is fixed.

We also now install all the libtool m4 macros.

---

meta/recipes-devtools/libtool/libtool-cross_2.4.bb +16 -12
index 596528a..4e6e3f2 100644
@@ -1,10 +1,13 @@
 require libtool-${PV}.inc
 
-PR = "r5"
+PR = "r7"
 PACKAGES = ""
 SRC_URI += "file://prefix.patch"
 SRC_URI += "file://fixinstall.patch"
 
+target_datadir := "${datadir}"
+datadir = "${STAGING_DIR_TARGET}${target_datadir}"
+
 do_configure_prepend () {
 	# Remove any existing libtool m4 since old stale versions would break
 	# any upgrade
@@ -13,20 +16,21 @@ do_configure_prepend () {
 }
 
 do_install () {
-	install -d ${D}${bindir}/
-	install -m 0755 ${HOST_SYS}-libtool ${D}${bindir}/${HOST_SYS}-libtool
-	install -d ${D}${datadir}/libtool/
-	install -d ${D}${datadir}/aclocal/
-	install -c ${S}/libltdl/config/config.guess ${D}${datadir}/libtool/
-	install -c ${S}/libltdl/config/config.sub ${D}${datadir}/libtool/
-	install -c -m 0644 ${S}/libltdl/config/ltmain.sh ${D}${datadir}/libtool/
-	install -c -m 0644 ${S}/libltdl/m4/libtool.m4 ${D}${datadir}/aclocal/
-	install -c -m 0644 ${S}/libltdl/m4/ltdl.m4 ${D}${datadir}/aclocal/
+	install -d ${D}${bindir_crossscripts}/
+	install -m 0755 ${HOST_SYS}-libtool ${D}${bindir_crossscripts}/${HOST_SYS}-libtool
+	install -d ${D}${bindir_crossscripts}/
+	install -m 0755 libtoolize ${D}${bindir_crossscripts}/
+	install -d ${D}${target_datadir}/libtool/config/
+	install -d ${D}${target_datadir}/aclocal/
+	install -c ${S}/libltdl/config/config.guess ${D}${target_datadir}/libtool/
+	install -c ${S}/libltdl/config/config.sub ${D}${target_datadir}/libtool/
+	install -c -m 0644 ${S}/libltdl/config/ltmain.sh ${D}${target_datadir}/libtool/config/
+	install -c -m 0644 ${S}/libltdl/m4/*.m4 ${D}${target_datadir}/aclocal/
 }
 
 SYSROOT_PREPROCESS_FUNCS += "libtoolcross_sysroot_preprocess"
 
 libtoolcross_sysroot_preprocess () {
-	install -d ${SYSROOT_DESTDIR}${bindir_crossscripts}
-	install -m 755 ${D}${bindir}/${HOST_SYS}-libtool ${SYSROOT_DESTDIR}${bindir_crossscripts}/${HOST_SYS}-libtool
+	sysroot_stage_dir ${D}${bindir_crossscripts} ${SYSROOT_DESTDIR}${bindir_crossscripts}
+	sysroot_stage_dir ${D}${target_datadir} ${SYSROOT_DESTDIR}${target_datadir}
 }
Reviewed-by on v1 1/1
#1 lore raw

Dear Richard,

Am Donnerstag, den 17.11.2011, 00:13 +0000 schrieb Richard Purdie:

unfortunately I could not find the meaning of upbreak here.

Quoted 2 lines

We should be using libtool-cross for cross compiling but were not.

Is that just a cosmetic thing or did packages break?

Quoted 14 lines

This patch sets datadir so libtoolize ends up containing correct paths. It then installs libtoolize.

The path ltmain.sh was installed to was incorrect and this is fixed.

We also now install all the libtool m4 macros.

---

meta/recipes-devtools/libtool/libtool-cross_2.4.bb +0 -0
index 596528a..4e6e3f2 100644

meta/recipes-devtools/libtool/libtool-cross_2.4.bb line 3

Quoted 4 lines
meta/recipes-devtools/libtool/libtool-cross_2.4.bb +1 -1
@@ -1,10 +1,13 @@
 require libtool-${PV}.inc
 
-PR = "r5"
+PR = "r7"

Increase just by one?

meta/recipes-devtools/libtool/libtool-cross_2.4.bb line 8

Quoted 5 lines
meta/recipes-devtools/libtool/libtool-cross_2.4.bb +1 -0
 PACKAGES = ""
 SRC_URI += "file://prefix.patch"
 SRC_URI += "file://fixinstall.patch"
 
+target_datadir := "${datadir}"

Is not already defined this way in bitbake.conf?

$ git grep target_d ./meta/conf/bitbake.conf
meta/conf/bitbake.conf:target_datadir := "${datadir}"
Quoted 28 lines
meta/recipes-devtools/libtool/libtool-cross_2.4.bb +12 -9
+datadir = "${STAGING_DIR_TARGET}${target_datadir}"
+
 do_configure_prepend () {
 	# Remove any existing libtool m4 since old stale versions would break
 	# any upgrade
@@ -13,20 +16,21 @@ do_configure_prepend () {
 }
 
 do_install () {
-	install -d ${D}${bindir}/
-	install -m 0755 ${HOST_SYS}-libtool ${D}${bindir}/${HOST_SYS}-libtool
-	install -d ${D}${datadir}/libtool/
-	install -d ${D}${datadir}/aclocal/
-	install -c ${S}/libltdl/config/config.guess ${D}${datadir}/libtool/
-	install -c ${S}/libltdl/config/config.sub ${D}${datadir}/libtool/
-	install -c -m 0644 ${S}/libltdl/config/ltmain.sh ${D}${datadir}/libtool/
-	install -c -m 0644 ${S}/libltdl/m4/libtool.m4 ${D}${datadir}/aclocal/
-	install -c -m 0644 ${S}/libltdl/m4/ltdl.m4 ${D}${datadir}/aclocal/
+	install -d ${D}${bindir_crossscripts}/
+	install -m 0755 ${HOST_SYS}-libtool ${D}${bindir_crossscripts}/${HOST_SYS}-libtool
+	install -d ${D}${bindir_crossscripts}/
+	install -m 0755 libtoolize ${D}${bindir_crossscripts}/
+	install -d ${D}${target_datadir}/libtool/config/
+	install -d ${D}${target_datadir}/aclocal/
+	install -c ${S}/libltdl/config/config.guess ${D}${target_datadir}/libtool/
+	install -c ${S}/libltdl/config/config.sub ${D}${target_datadir}/libtool/
+	install -c -m 0644 ${S}/libltdl/config/ltmain.sh ${D}${target_datadir}/libtool/config/
+	install -c -m 0644 ${S}/libltdl/m4/*.m4 ${D}${target_datadir}/aclocal/

meta/recipes-devtools/libtool/libtool-cross_2.4.bb do_configure_prepend () { · line 36

Quoted 10 lines
meta/recipes-devtools/libtool/libtool-cross_2.4.bb +2 -2
 }
 
 SYSROOT_PREPROCESS_FUNCS += "libtoolcross_sysroot_preprocess"
 
 libtoolcross_sysroot_preprocess () {
-	install -d ${SYSROOT_DESTDIR}${bindir_crossscripts}
-	install -m 755 ${D}${bindir}/${HOST_SYS}-libtool ${SYSROOT_DESTDIR}${bindir_crossscripts}/${HOST_SYS}-libtool
+	sysroot_stage_dir ${D}${bindir_crossscripts} ${SYSROOT_DESTDIR}${bindir_crossscripts}
+	sysroot_stage_dir ${D}${target_datadir} ${SYSROOT_DESTDIR}${target_datadir}
 }

Thanks,

Paul

#2 lore raw
Quoted 4 lines · Paul Menzel

Dear Richard,
Am Donnerstag, den 17.11.2011, 00:13 +0000 schrieb Richard Purdie:

unfortunately I could not find the meaning of upbreak here.

Sorry, its a typo and should be "unbreak"

Quoted 5 lines
Quoted 3 lines

We should be using libtool-cross for cross compiling but were not.

Is that just a cosmetic thing or did packages break?

Its currently harmless but when I applied my other libtool changes, things did break.

Quoted 16 lines
Quoted 16 lines

This patch sets datadir so libtoolize ends up containing correct paths. It then installs libtoolize.

The path ltmain.sh was installed to was incorrect and this is fixed.

We also now install all the libtool m4 macros.

---

meta/recipes-devtools/libtool/libtool-cross_2.4.bb +0 -0
index 596528a..4e6e3f2 100644
@@ -1,10 +1,13 @@
 require libtool-${PV}.inc
 
Quoted 4 lines

meta/recipes-devtools/libtool/libtool-cross_2.4.bb line 3

Quoted 2 lines
meta/recipes-devtools/libtool/libtool-cross_2.4.bb +1 -1
-PR = "r5"
+PR = "r7"

Increase just by one?

Ideally I guess, yes.

Quoted 10 lines

meta/recipes-devtools/libtool/libtool-cross_2.4.bb line 8

Quoted 5 lines
meta/recipes-devtools/libtool/libtool-cross_2.4.bb +1 -0
 PACKAGES = ""
 SRC_URI += "file://prefix.patch"
 SRC_URI += "file://fixinstall.patch"
 
+target_datadir := "${datadir}"

Is not already defined this way in bitbake.conf?

$ git grep target_d ./meta/conf/bitbake.conf
meta/conf/bitbake.conf:target_datadir := "${datadir}"

Good catch, I'd forgotten we'd saved this already.

Quoted 1 line

meta/recipes-devtools/libtool/libtool-cross_2.4.bb line 9

Quoted 1 line
meta/recipes-devtools/libtool/libtool-cross_2.4.bb +1 -0
+datadir = "${STAGING_DIR_TARGET}${target_datad

Cheers,

Richard

#3 lore raw
In reply to Richard Purdie
Quoted 3 lines · Richard Purdie

We should be using libtool-cross for cross compiling but were not. This patch sets datadir so libtoolize ends up containing correct paths. It then installs libtoolize.

I have a recipe that no longer works after this (or perhaps the other changes Richard mentions later in the thread.) It's a pretty straightforward recipe that inherits from autotools. Judging by the number of warnings from autoconf the package was probably expecting an older version of automake/autoconf. The configure task fails with:

libtoolize: config/compile' not found in /home/mac/src/oe/build/tmp-eglibc/sysroots/panther/usr/share/libtool'

(continued inside patch)

Quoted 36 lines

The path ltmain.sh was installed to was incorrect and this is fixed.

We also now install all the libtool m4 macros.

---

meta/recipes-devtools/libtool/libtool-cross_2.4.bb +4 -8
index 596528a..4e6e3f2 100644
@@ -1,10 +1,13 @@
 require libtool-${PV}.inc
 
-PR = "r5"
+PR = "r7"
 PACKAGES = ""
 SRC_URI += "file://prefix.patch"
 SRC_URI += "file://fixinstall.patch"
 
+target_datadir := "${datadir}"
+datadir = "${STAGING_DIR_TARGET}${target_datadir}"
+
 do_configure_prepend () {
 	# Remove any existing libtool m4 since old stale versions would break
 	# any upgrade
@@ -13,20 +16,21 @@ do_configure_prepend () {
 }
 
 do_install () {
-	install -d ${D}${bindir}/
-	install -m 0755 ${HOST_SYS}-libtool ${D}${bindir}/${HOST_SYS}-libtool
-	install -d ${D}${datadir}/libtool/
-	install -d ${D}${datadir}/aclocal/
-	install -c ${S}/libltdl/config/config.guess ${D}${datadir}/libtool/
-	install -c ${S}/libltdl/config/config.sub ${D}${datadir}/libtool/
-	install -c -m 0644 ${S}/libltdl/config/ltmain.sh ${D}${datadir}/libtool/

meta/recipes-devtools/libtool/libtool-cross_2.4.bb do_configure_prepend () { · line 26

Quoted 10 lines
meta/recipes-devtools/libtool/libtool-cross_2.4.bb +8 -2
-	install -c -m 0644 ${S}/libltdl/m4/libtool.m4 ${D}${datadir}/aclocal/
-	install -c -m 0644 ${S}/libltdl/m4/ltdl.m4 ${D}${datadir}/aclocal/
+	install -d ${D}${bindir_crossscripts}/
+	install -m 0755 ${HOST_SYS}-libtool ${D}${bindir_crossscripts}/${HOST_SYS}-libtool
+	install -d ${D}${bindir_crossscripts}/
+	install -m 0755 libtoolize ${D}${bindir_crossscripts}/
+	install -d ${D}${target_datadir}/libtool/config/
+	install -d ${D}${target_datadir}/aclocal/
+	install -c ${S}/libltdl/config/config.guess ${D}${target_datadir}/libtool/
+	install -c ${S}/libltdl/config/config.sub ${D}${target_datadir}/libtool/

If I also install "compile", "depcomp" and "missing" here then this solves the immediate problem but then it looks like I also need to add "COPYING.LIB" and probably many other files to ${D}{$target_datadir}/libtool/libltdl too which leads me to think that I'm swimming against the tide and might be going about this the wrong way. Is this the correct approach? If so why not just call "make install" rather than installing everything by hand?

meta/recipes-devtools/libtool/libtool-cross_2.4.bb do_configure_prepend () { · line 36

Quoted 12 lines
meta/recipes-devtools/libtool/libtool-cross_2.4.bb +4 -2
+	install -c -m 0644 ${S}/libltdl/config/ltmain.sh ${D}${target_datadir}/libtool/config/
+	install -c -m 0644 ${S}/libltdl/m4/*.m4 ${D}${target_datadir}/aclocal/
 }
 
 SYSROOT_PREPROCESS_FUNCS += "libtoolcross_sysroot_preprocess"
 
 libtoolcross_sysroot_preprocess () {
-	install -d ${SYSROOT_DESTDIR}${bindir_crossscripts}
-	install -m 755 ${D}${bindir}/${HOST_SYS}-libtool ${SYSROOT_DESTDIR}${bindir_crossscripts}/${HOST_SYS}-libtool
+	sysroot_stage_dir ${D}${bindir_crossscripts} ${SYSROOT_DESTDIR}${bindir_crossscripts}
+	sysroot_stage_dir ${D}${target_datadir} ${SYSROOT_DESTDIR}${target_datadir}
 }

TIA

Mike.

#4 lore raw
Quoted 62 lines · Mike Crowe
Quoted 3 lines · Richard Purdie

We should be using libtool-cross for cross compiling but were not. This patch sets datadir so libtoolize ends up containing correct paths. It then installs libtoolize.

I have a recipe that no longer works after this (or perhaps the other changes Richard mentions later in the thread.) It's a pretty straightforward recipe that inherits from autotools. Judging by the number of warnings from autoconf the package was probably expecting an older version of automake/autoconf. The configure task fails with:

libtoolize: config/compile' not found in /home/mac/src/oe/build/tmp-eglibc/sysroots/panther/usr/share/libtool'

(continued inside patch)

Quoted 36 lines

The path ltmain.sh was installed to was incorrect and this is fixed.

We also now install all the libtool m4 macros.

---

meta/recipes-devtools/libtool/libtool-cross_2.4.bb +4 -8
index 596528a..4e6e3f2 100644
@@ -1,10 +1,13 @@
 require libtool-${PV}.inc
 
-PR = "r5"
+PR = "r7"
 PACKAGES = ""
 SRC_URI += "file://prefix.patch"
 SRC_URI += "file://fixinstall.patch"
 
+target_datadir := "${datadir}"
+datadir = "${STAGING_DIR_TARGET}${target_datadir}"
+
 do_configure_prepend () {
 	# Remove any existing libtool m4 since old stale versions would break
 	# any upgrade
@@ -13,20 +16,21 @@ do_configure_prepend () {
 }
 
 do_install () {
-	install -d ${D}${bindir}/
-	install -m 0755 ${HOST_SYS}-libtool ${D}${bindir}/${HOST_SYS}-libtool
-	install -d ${D}${datadir}/libtool/
-	install -d ${D}${datadir}/aclocal/
-	install -c ${S}/libltdl/config/config.guess ${D}${datadir}/libtool/
-	install -c ${S}/libltdl/config/config.sub ${D}${datadir}/libtool/
-	install -c -m 0644 ${S}/libltdl/config/ltmain.sh ${D}${datadir}/libtool/

meta/recipes-devtools/libtool/libtool-cross_2.4.bb do_configure_prepend () { · line 26

Quoted 10 lines
meta/recipes-devtools/libtool/libtool-cross_2.4.bb +8 -2
-	install -c -m 0644 ${S}/libltdl/m4/libtool.m4 ${D}${datadir}/aclocal/
-	install -c -m 0644 ${S}/libltdl/m4/ltdl.m4 ${D}${datadir}/aclocal/
+	install -d ${D}${bindir_crossscripts}/
+	install -m 0755 ${HOST_SYS}-libtool ${D}${bindir_crossscripts}/${HOST_SYS}-libtool
+	install -d ${D}${bindir_crossscripts}/
+	install -m 0755 libtoolize ${D}${bindir_crossscripts}/
+	install -d ${D}${target_datadir}/libtool/config/
+	install -d ${D}${target_datadir}/aclocal/
+	install -c ${S}/libltdl/config/config.guess ${D}${target_datadir}/libtool/
+	install -c ${S}/libltdl/config/config.sub ${D}${target_datadir}/libtool/
Quoted 7 lines

If I also install "compile", "depcomp" and "missing" here then this solves the immediate problem but then it looks like I also need to add "COPYING.LIB" and probably many other files to ${D}{$target_datadir}/libtool/libltdl too which leads me to think that I'm swimming against the tide and might be going about this the wrong way. Is this the correct approach? If so why not just call "make install" rather than installing everything by hand?

can you just try oe_runmake DESTDIR=${D} install ?
you might need to do some extra bits in there but that can be done additionally

Quoted 22 lines

meta/recipes-devtools/libtool/libtool-cross_2.4.bb do_configure_prepend () { · line 36

Quoted 13 lines
meta/recipes-devtools/libtool/libtool-cross_2.4.bb +4 -2
+	install -c -m 0644 ${S}/libltdl/config/ltmain.sh ${D}${target_datadir}/libtool/config/
+	install -c -m 0644 ${S}/libltdl/m4/*.m4 ${D}${target_datadir}/aclocal/
 }
 
 SYSROOT_PREPROCESS_FUNCS += "libtoolcross_sysroot_preprocess"
 
 libtoolcross_sysroot_preprocess () {
-	install -d ${SYSROOT_DESTDIR}${bindir_crossscripts}
-	install -m 755 ${D}${bindir}/${HOST_SYS}-libtool ${SYSROOT_DESTDIR}${bindir_crossscripts}/${HOST_SYS}-libtool
+	sysroot_stage_dir ${D}${bindir_crossscripts} ${SYSROOT_DESTDIR}${bindir_crossscripts}
+	sysroot_stage_dir ${D}${target_datadir} ${SYSROOT_DESTDIR}${target_datadir}
 }

TIA

Mike.

_______________________________________________
Openembedded-core mailing list
[email protected]
http://lists.linuxtogo.org/cgi-bin/mailman/listinfo/openembedded-core

Signature · 1 line
-Khem
#5 lore raw
Quoted 71 lines · Khem Raj
Quoted 62 lines · Mike Crowe
Quoted 3 lines · Richard Purdie

We should be using libtool-cross for cross compiling but were not. This patch sets datadir so libtoolize ends up containing correct paths. It then installs libtoolize.

I have a recipe that no longer works after this (or perhaps the other changes Richard mentions later in the thread.) It's a pretty straightforward recipe that inherits from autotools. Judging by the number of warnings from autoconf the package was probably expecting an older version of automake/autoconf. The configure task fails with:

libtoolize: config/compile' not found in /home/mac/src/oe/build/tmp-eglibc/sysroots/panther/usr/share/libtool'

(continued inside patch)

Quoted 36 lines

The path ltmain.sh was installed to was incorrect and this is fixed.

We also now install all the libtool m4 macros.

---

meta/recipes-devtools/libtool/libtool-cross_2.4.bb +4 -8
index 596528a..4e6e3f2 100644
@@ -1,10 +1,13 @@
 require libtool-${PV}.inc
 
-PR = "r5"
+PR = "r7"
 PACKAGES = ""
 SRC_URI += "file://prefix.patch"
 SRC_URI += "file://fixinstall.patch"
 
+target_datadir := "${datadir}"
+datadir = "${STAGING_DIR_TARGET}${target_datadir}"
+
 do_configure_prepend () {
 	# Remove any existing libtool m4 since old stale versions would break
 	# any upgrade
@@ -13,20 +16,21 @@ do_configure_prepend () {
 }
 
 do_install () {
-	install -d ${D}${bindir}/
-	install -m 0755 ${HOST_SYS}-libtool ${D}${bindir}/${HOST_SYS}-libtool
-	install -d ${D}${datadir}/libtool/
-	install -d ${D}${datadir}/aclocal/
-	install -c ${S}/libltdl/config/config.guess ${D}${datadir}/libtool/
-	install -c ${S}/libltdl/config/config.sub ${D}${datadir}/libtool/
-	install -c -m 0644 ${S}/libltdl/config/ltmain.sh ${D}${datadir}/libtool/

meta/recipes-devtools/libtool/libtool-cross_2.4.bb do_configure_prepend () { · line 26

Quoted 10 lines
meta/recipes-devtools/libtool/libtool-cross_2.4.bb +8 -2
-	install -c -m 0644 ${S}/libltdl/m4/libtool.m4 ${D}${datadir}/aclocal/
-	install -c -m 0644 ${S}/libltdl/m4/ltdl.m4 ${D}${datadir}/aclocal/
+	install -d ${D}${bindir_crossscripts}/
+	install -m 0755 ${HOST_SYS}-libtool ${D}${bindir_crossscripts}/${HOST_SYS}-libtool
+	install -d ${D}${bindir_crossscripts}/
+	install -m 0755 libtoolize ${D}${bindir_crossscripts}/
+	install -d ${D}${target_datadir}/libtool/config/
+	install -d ${D}${target_datadir}/aclocal/
+	install -c ${S}/libltdl/config/config.guess ${D}${target_datadir}/libtool/
+	install -c ${S}/libltdl/config/config.sub ${D}${target_datadir}/libtool/
Quoted 7 lines

If I also install "compile", "depcomp" and "missing" here then this solves the immediate problem but then it looks like I also need to add "COPYING.LIB" and probably many other files to ${D}{$target_datadir}/libtool/libltdl too which leads me to think that I'm swimming against the tide and might be going about this the wrong way. Is this the correct approach? If so why not just call "make install" rather than installing everything by hand?

Quoted 3 lines

can you just try oe_runmake DESTDIR=${D} install ?
you might need to do some extra bits in there but that can be done additionally

I replaced the whole of do_install with your suggestion and my package now configures and compiles successfully.

I'll try a complete build from clean to see if the change causes any other problems for me. If it does not should I submit a patch for this change?

Thanks for your help.

Mike.

Quoted 21 lines
Quoted 21 lines

meta/recipes-devtools/libtool/libtool-cross_2.4.bb do_configure_prepend () { · line 36

Quoted 12 lines
meta/recipes-devtools/libtool/libtool-cross_2.4.bb +4 -2
+	install -c -m 0644 ${S}/libltdl/config/ltmain.sh ${D}${target_datadir}/libtool/config/
+	install -c -m 0644 ${S}/libltdl/m4/*.m4 ${D}${target_datadir}/aclocal/
 }
 
 SYSROOT_PREPROCESS_FUNCS += "libtoolcross_sysroot_preprocess"
 
 libtoolcross_sysroot_preprocess () {
-	install -d ${SYSROOT_DESTDIR}${bindir_crossscripts}
-	install -m 755 ${D}${bindir}/${HOST_SYS}-libtool ${SYSROOT_DESTDIR}${bindir_crossscripts}/${HOST_SYS}-libtool
+	sysroot_stage_dir ${D}${bindir_crossscripts} ${SYSROOT_DESTDIR}${bindir_crossscripts}
+	sysroot_stage_dir ${D}${target_datadir} ${SYSROOT_DESTDIR}${target_datadir}
 }

TIA

Mike.

_______________________________________________
Openembedded-core mailing list
[email protected]
http://lists.linuxtogo.org/cgi-bin/mailman/listinfo/openembedded-core