Message ID | 1415366931-6870-14-git-send-email-johan.oudinet@gmail.com |
---|---|
State | Superseded |
Headers | show |
Johan, All, On 2014-11-07 14:28 +0100, Johan Oudinet spake thusly: > Signed-off-by: Johan Oudinet <johan.oudinet@gmail.com> > --- > package/Config.in | 1 + > package/erlang-p1-iconv/Config.in | 6 ++++++ > package/erlang-p1-iconv/erlang-p1-iconv.mk | 17 +++++++++++++++++ > 3 files changed, 24 insertions(+) > create mode 100644 package/erlang-p1-iconv/Config.in > create mode 100644 package/erlang-p1-iconv/erlang-p1-iconv.mk [--SNIP--] While I was reviewing the other patches, I got a build failure with this package (long lines may have got split in the copy-paste): Compiling c_src/iconv.c /home/ymorin/x-tools/armv6-rpi-linux-gnueabihf/lib/gcc/armv6-rpi-linux-gnueabihf/4.9.1/../../../../armv6-rpi-linux-gnueabihf/bin/ld.bfd: cannot find -lerl_interface /home/ymorin/x-tools/armv6-rpi-linux-gnueabihf/lib/gcc/armv6-rpi-linux-gnueabihf/4.9.1/../../../../armv6-rpi-linux-gnueabihf/bin/ld.bfd: cannot find -lei /home/ymorin/x-tools/armv6-rpi-linux-gnueabihf/lib/gcc/armv6-rpi-linux-gnueabihf/4.9.1/../../../../armv6-rpi-linux-gnueabihf/bin/ld.bfd: cannot find -lerl_interface /home/ymorin/x-tools/armv6-rpi-linux-gnueabihf/lib/gcc/armv6-rpi-linux-gnueabihf/4.9.1/../../../../armv6-rpi-linux-gnueabihf/bin/ld.bfd: cannot find -lei collect2: error: ld returned 1 exit status ERROR: sh(/home/ymorin/dev/buildroot/O/host/usr/bin/armv6-rpi-linux-gnueabihf-gcc c_src/iconv.o -L/home/ymorin/dev/buildroot/O/target/usr/lib/erlang/lib/erl_interface-/lib -lerl_interface -lei -shared -L/home/ymorin/dev/buildroot/O/target/usr/lib/erlang/lib/erl_interface-/lib -lerl_interface -lei -o priv/lib/iconv.so) failed with return code 1 and the following output: /home/ymorin/x-tools/armv6-rpi-linux-gnueabihf/lib/gcc/armv6-rpi-linux-gnueabihf/4.9.1/../../../../armv6-rpi-linux-gnueabihf/bin/ld.bfd: cannot find -lerl_interface /home/ymorin/x-tools/armv6-rpi-linux-gnueabihf/lib/gcc/armv6-rpi-linux-gnueabihf/4.9.1/../../../../armv6-rpi-linux-gnueabihf/bin/ld.bfd: cannot find -lei /home/ymorin/x-tools/armv6-rpi-linux-gnueabihf/lib/gcc/armv6-rpi-linux-gnueabihf/4.9.1/../../../../armv6-rpi-linux-gnueabihf/bin/ld.bfd: cannot find -lerl_interface /home/ymorin/x-tools/armv6-rpi-linux-gnueabihf/lib/gcc/armv6-rpi-linux-gnueabihf/4.9.1/../../../../armv6-rpi-linux-gnueabihf/bin/ld.bfd: cannot find -lei collect2: error: ld returned 1 exit status ERROR: compile failed while processing /home/ymorin/dev/buildroot/O/build/erlang-p1-iconv-dff5ee5: rebar_abort Here is my defconfig file: BR2_armeb=y BR2_arm1176jzf_s=y BR2_ARM_EABIHF=y BR2_TOOLCHAIN_EXTERNAL=y BR2_TOOLCHAIN_EXTERNAL_PATH="/home/ymorin/x-tools/armv6-rpi-linux-gnueabihf" BR2_TOOLCHAIN_EXTERNAL_CUSTOM_PREFIX="armv6-rpi-linux-gnueabihf" BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_12=y BR2_TOOLCHAIN_EXTERNAL_CUSTOM_GLIBC=y # BR2_TOOLCHAIN_EXTERNAL_INET_RPC is not set BR2_TOOLCHAIN_EXTERNAL_CXX=y BR2_PACKAGE_ERLANG=y BR2_PACKAGE_EJABBERD=y Since I'm using a local toolchain, you won't be able to reproduce. I'll try to use one of the pre-built toolchains. Regards, Yann E. MORIN.
Johan, All, On 2014-11-10 17:37 +0100, Yann E. MORIN spake thusly: > On 2014-11-07 14:28 +0100, Johan Oudinet spake thusly: > > Signed-off-by: Johan Oudinet <johan.oudinet@gmail.com> > > --- > > package/Config.in | 1 + > > package/erlang-p1-iconv/Config.in | 6 ++++++ > > package/erlang-p1-iconv/erlang-p1-iconv.mk | 17 +++++++++++++++++ > > 3 files changed, 24 insertions(+) > > create mode 100644 package/erlang-p1-iconv/Config.in > > create mode 100644 package/erlang-p1-iconv/erlang-p1-iconv.mk > [--SNIP--] > > While I was reviewing the other patches, I got a build failure with this > package (long lines may have got split in the copy-paste): > > Compiling c_src/iconv.c > /home/ymorin/x-tools/armv6-rpi-linux-gnueabihf/lib/gcc/armv6-rpi-linux-gnueabihf/4.9.1/../../../../armv6-rpi-linux-gnueabihf/bin/ld.bfd: > cannot find -lerl_interface > /home/ymorin/x-tools/armv6-rpi-linux-gnueabihf/lib/gcc/armv6-rpi-linux-gnueabihf/4.9.1/../../../../armv6-rpi-linux-gnueabihf/bin/ld.bfd: > cannot find -lei > /home/ymorin/x-tools/armv6-rpi-linux-gnueabihf/lib/gcc/armv6-rpi-linux-gnueabihf/4.9.1/../../../../armv6-rpi-linux-gnueabihf/bin/ld.bfd: > cannot find -lerl_interface > /home/ymorin/x-tools/armv6-rpi-linux-gnueabihf/lib/gcc/armv6-rpi-linux-gnueabihf/4.9.1/../../../../armv6-rpi-linux-gnueabihf/bin/ld.bfd: > cannot find -lei > collect2: error: ld returned 1 exit status > ERROR: sh(/home/ymorin/dev/buildroot/O/host/usr/bin/armv6-rpi-linux-gnueabihf-gcc > c_src/iconv.o > -L/home/ymorin/dev/buildroot/O/target/usr/lib/erlang/lib/erl_interface-/lib > -lerl_interface -lei -shared > -L/home/ymorin/dev/buildroot/O/target/usr/lib/erlang/lib/erl_interface-/lib > -lerl_interface -lei -o priv/lib/iconv.so) > failed with return code 1 and the following output: > /home/ymorin/x-tools/armv6-rpi-linux-gnueabihf/lib/gcc/armv6-rpi-linux-gnueabihf/4.9.1/../../../../armv6-rpi-linux-gnueabihf/bin/ld.bfd: > cannot find -lerl_interface > /home/ymorin/x-tools/armv6-rpi-linux-gnueabihf/lib/gcc/armv6-rpi-linux-gnueabihf/4.9.1/../../../../armv6-rpi-linux-gnueabihf/bin/ld.bfd: > cannot find -lei > /home/ymorin/x-tools/armv6-rpi-linux-gnueabihf/lib/gcc/armv6-rpi-linux-gnueabihf/4.9.1/../../../../armv6-rpi-linux-gnueabihf/bin/ld.bfd: > cannot find -lerl_interface > /home/ymorin/x-tools/armv6-rpi-linux-gnueabihf/lib/gcc/armv6-rpi-linux-gnueabihf/4.9.1/../../../../armv6-rpi-linux-gnueabihf/bin/ld.bfd: > cannot find -lei > collect2: error: ld returned 1 exit status > > ERROR: compile failed while processing > /home/ymorin/dev/buildroot/O/build/erlang-p1-iconv-dff5ee5: rebar_abort > > Here is my defconfig file: > > BR2_armeb=y > BR2_arm1176jzf_s=y > BR2_ARM_EABIHF=y > BR2_TOOLCHAIN_EXTERNAL=y > BR2_TOOLCHAIN_EXTERNAL_PATH="/home/ymorin/x-tools/armv6-rpi-linux-gnueabihf" > BR2_TOOLCHAIN_EXTERNAL_CUSTOM_PREFIX="armv6-rpi-linux-gnueabihf" > BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_12=y > BR2_TOOLCHAIN_EXTERNAL_CUSTOM_GLIBC=y > # BR2_TOOLCHAIN_EXTERNAL_INET_RPC is not set > BR2_TOOLCHAIN_EXTERNAL_CXX=y > BR2_PACKAGE_ERLANG=y > BR2_PACKAGE_EJABBERD=y I still get the same error with this defconfig: BR2_armeb=y BR2_cortex_a9=y BR2_ARM_EABIHF=y BR2_TOOLCHAIN_EXTERNAL=y BR2_INIT_NONE=y BR2_SYSTEM_BIN_SH_NONE=y # BR2_PACKAGE_BUSYBOX is not set BR2_PACKAGE_ERLANG=y BR2_PACKAGE_EJABBERD=y But I can see the missing libs to be present, except the path to them is not specified in the compile line: staging/usr/lib/erlang/usr/lib/liberl_interface.a staging/usr/lib/erlang/usr/lib/libei.a Except it seems weird to have ".../erlang/usr/lib/..." to begin with. Regards, Yann E. MORIN.
Yann, All, On Mon, Nov 10, 2014 at 6:30 PM, Yann E. MORIN <yann.morin.1998@free.fr> wrote: >> Compiling c_src/iconv.c >> /home/ymorin/x-tools/armv6-rpi-linux-gnueabihf/lib/gcc/armv6-rpi-linux-gnueabihf/4.9.1/../../../../armv6-rpi-linux-gnueabihf/bin/ld.bfd: >> cannot find -lerl_interface >> /home/ymorin/x-tools/armv6-rpi-linux-gnueabihf/lib/gcc/armv6-rpi-linux-gnueabihf/4.9.1/../../../../armv6-rpi-linux-gnueabihf/bin/ld.bfd: >> cannot find -lei >> /home/ymorin/x-tools/armv6-rpi-linux-gnueabihf/lib/gcc/armv6-rpi-linux-gnueabihf/4.9.1/../../../../armv6-rpi-linux-gnueabihf/bin/ld.bfd: >> cannot find -lerl_interface >> /home/ymorin/x-tools/armv6-rpi-linux-gnueabihf/lib/gcc/armv6-rpi-linux-gnueabihf/4.9.1/../../../../armv6-rpi-linux-gnueabihf/bin/ld.bfd: >> cannot find -lei >> collect2: error: ld returned 1 exit status >> ERROR: sh(/home/ymorin/dev/buildroot/O/host/usr/bin/armv6-rpi-linux-gnueabihf-gcc >> c_src/iconv.o >> -L/home/ymorin/dev/buildroot/O/target/usr/lib/erlang/lib/erl_interface-/lib >> -lerl_interface -lei -shared >> -L/home/ymorin/dev/buildroot/O/target/usr/lib/erlang/lib/erl_interface-/lib >> -lerl_interface -lei -o priv/lib/iconv.so) >> failed with return code 1 and the following output: >> /home/ymorin/x-tools/armv6-rpi-linux-gnueabihf/lib/gcc/armv6-rpi-linux-gnueabihf/4.9.1/../../../../armv6-rpi-linux-gnueabihf/bin/ld.bfd: >> cannot find -lerl_interface >> /home/ymorin/x-tools/armv6-rpi-linux-gnueabihf/lib/gcc/armv6-rpi-linux-gnueabihf/4.9.1/../../../../armv6-rpi-linux-gnueabihf/bin/ld.bfd: >> cannot find -lei >> /home/ymorin/x-tools/armv6-rpi-linux-gnueabihf/lib/gcc/armv6-rpi-linux-gnueabihf/4.9.1/../../../../armv6-rpi-linux-gnueabihf/bin/ld.bfd: >> cannot find -lerl_interface >> /home/ymorin/x-tools/armv6-rpi-linux-gnueabihf/lib/gcc/armv6-rpi-linux-gnueabihf/4.9.1/../../../../armv6-rpi-linux-gnueabihf/bin/ld.bfd: >> cannot find -lei >> collect2: error: ld returned 1 exit status I've seen this error few times when compiling several rebar packages. As a workaround, I run `make erlang-dirclean'. I'm not 100% sure of the reason for this error but I suspect that old versions of rebar remove such libraries after compiling, which leads to an error on the next compilation.
On 2014-11-11 04:30 +0100, Johan Oudinet spake thusly: > Yann, All, > > On Mon, Nov 10, 2014 at 6:30 PM, Yann E. MORIN <yann.morin.1998@free.fr> wrote: > >> Compiling c_src/iconv.c > >> /home/ymorin/x-tools/armv6-rpi-linux-gnueabihf/lib/gcc/armv6-rpi-linux-gnueabihf/4.9.1/../../../../armv6-rpi-linux-gnueabihf/bin/ld.bfd: > >> cannot find -lerl_interface > >> /home/ymorin/x-tools/armv6-rpi-linux-gnueabihf/lib/gcc/armv6-rpi-linux-gnueabihf/4.9.1/../../../../armv6-rpi-linux-gnueabihf/bin/ld.bfd: > >> cannot find -lei > >> /home/ymorin/x-tools/armv6-rpi-linux-gnueabihf/lib/gcc/armv6-rpi-linux-gnueabihf/4.9.1/../../../../armv6-rpi-linux-gnueabihf/bin/ld.bfd: > >> cannot find -lerl_interface > >> /home/ymorin/x-tools/armv6-rpi-linux-gnueabihf/lib/gcc/armv6-rpi-linux-gnueabihf/4.9.1/../../../../armv6-rpi-linux-gnueabihf/bin/ld.bfd: > >> cannot find -lei > >> collect2: error: ld returned 1 exit status > >> ERROR: sh(/home/ymorin/dev/buildroot/O/host/usr/bin/armv6-rpi-linux-gnueabihf-gcc > >> c_src/iconv.o > >> -L/home/ymorin/dev/buildroot/O/target/usr/lib/erlang/lib/erl_interface-/lib > >> -lerl_interface -lei -shared > >> -L/home/ymorin/dev/buildroot/O/target/usr/lib/erlang/lib/erl_interface-/lib > >> -lerl_interface -lei -o priv/lib/iconv.so) > >> failed with return code 1 and the following output: > >> /home/ymorin/x-tools/armv6-rpi-linux-gnueabihf/lib/gcc/armv6-rpi-linux-gnueabihf/4.9.1/../../../../armv6-rpi-linux-gnueabihf/bin/ld.bfd: > >> cannot find -lerl_interface > >> /home/ymorin/x-tools/armv6-rpi-linux-gnueabihf/lib/gcc/armv6-rpi-linux-gnueabihf/4.9.1/../../../../armv6-rpi-linux-gnueabihf/bin/ld.bfd: > >> cannot find -lei > >> /home/ymorin/x-tools/armv6-rpi-linux-gnueabihf/lib/gcc/armv6-rpi-linux-gnueabihf/4.9.1/../../../../armv6-rpi-linux-gnueabihf/bin/ld.bfd: > >> cannot find -lerl_interface > >> /home/ymorin/x-tools/armv6-rpi-linux-gnueabihf/lib/gcc/armv6-rpi-linux-gnueabihf/4.9.1/../../../../armv6-rpi-linux-gnueabihf/bin/ld.bfd: > >> cannot find -lei > >> collect2: error: ld returned 1 exit status > > I've seen this error few times when compiling several rebar packages. > As a workaround, I run `make erlang-dirclean'. > I'm not 100% sure of the reason for this error but I suspect that old > versions of rebar remove such libraries after compiling, which leads > to an error on the next compilation. Well, that error happened from a completely clean build dir, so it is not OK do have to rebuild erlang in this case (it might have been OK when doing rebuilds, but even so, we'd prefer to avoid that). And now I suspect I know why it hapenned: I am building out-of-tree, so the comment I made on your patch 2/2 might be kicking in: ---8<--- > +EI_VSN_FILE=output/build/erlang-$ERLANG_VSN/lib/erl_interface/vsn.mk That does not work for out-of-tree builds. You should use something like: EI_VSN_FILE="${O}/build/erlang-$ERLANG_VSN/lib/erl_interface/vsn.mk" ---8<--- Anyway, I'll continue investigating this series. Regards, Yann E. MORIN.
diff --git a/package/Config.in b/package/Config.in index 8abd6a6..bda3674 100644 --- a/package/Config.in +++ b/package/Config.in @@ -395,6 +395,7 @@ if BR2_PACKAGE_ERLANG menu "Erlang libraries/modules" source "package/erlang-goldrush/Config.in" source "package/erlang-lager/Config.in" + source "package/erlang-p1-iconv/Config.in" source "package/erlang-p1-sip/Config.in" source "package/erlang-p1-stringprep/Config.in" source "package/erlang-p1-stun/Config.in" diff --git a/package/erlang-p1-iconv/Config.in b/package/erlang-p1-iconv/Config.in new file mode 100644 index 0000000..53876bf --- /dev/null +++ b/package/erlang-p1-iconv/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_ERLANG_P1_ICONV + bool "erlang-p1-iconv" + depends on BR2_PACKAGE_ERLANG + select BR2_PACKAGE_LIBICONV if !BR2_ENABLE_LOCALE + help + Erlang interface to libiconv diff --git a/package/erlang-p1-iconv/erlang-p1-iconv.mk b/package/erlang-p1-iconv/erlang-p1-iconv.mk new file mode 100644 index 0000000..e810a9d --- /dev/null +++ b/package/erlang-p1-iconv/erlang-p1-iconv.mk @@ -0,0 +1,17 @@ +################################################################################ +# +# erlang-p1-iconv +# +################################################################################ + +ERLANG_P1_ICONV_VERSION = dff5ee5 +ERLANG_P1_ICONV_SITE = $(call github,processone,eiconv,$(ERLANG_P1_ICONV_VERSION)) +ERLANG_P1_ICONV_LICENSE = GPLv2+ +ERLANG_P1_ICONV_LICENSE_FILES = COPYING +ERLANG_P1_ICONV_DEPENDENCIES = erlang + +ifeq ($(BR2_PACKAGE_LIBICONV),y) +ERLANG_P1_ICONV_DEPENDENCIES += libiconv +endif + +$(eval $(rebar-package))
Signed-off-by: Johan Oudinet <johan.oudinet@gmail.com> --- package/Config.in | 1 + package/erlang-p1-iconv/Config.in | 6 ++++++ package/erlang-p1-iconv/erlang-p1-iconv.mk | 17 +++++++++++++++++ 3 files changed, 24 insertions(+) create mode 100644 package/erlang-p1-iconv/Config.in create mode 100644 package/erlang-p1-iconv/erlang-p1-iconv.mk