[Jool-list] It seems to me like the build system ignores EXTRA_FLAGS?

Alberto Leiva ydahhrk at gmail.com
Wed Nov 30 16:42:54 CST 2016


Woops

I meant

    $ ./autogen.sh
    $ ./configure

On Wed, Nov 30, 2016 at 4:31 PM, Alberto Leiva <ydahhrk at gmail.com> wrote:

> Well, I'm going to risk looking like a complete dumb bag by admitting that
> I've always wondered why argp doesn't seem to need to be linked. Perhaps we
> should anyway.
>
> Yes, from your build log, it does look like it ignores EXTRA_FLAGS.
> Autoconf is the one normally supposed to take care of the -l<whatever>s.
> Don't know if you've tried this: Open usr/configure.ac and add
>
>     AC_SEARCH_LIBS([argp_parse], [argp])
>
> , preferably along the other AC_SEARCH_LIBS. If autoconf realizes the
> function does not exist, it should append -largp I suppose.
>
> That does seem to want to do something, but since I don't need it, it
> becomes a no-op in my system:
>
>     $ ./autoconf.sh
>     $ ./configure
>     ...
>     checking for pow... no
>     checking for library containing pow... -lm
>     checking for library containing pthread_create... -lpthread
>     checking for library containing argp_parse... none required <---- This
>     ...
>
> Perhaps it will do something useful in yours?
>
> You might want to send a pull request if it works.
>
>
> On Wed, Nov 30, 2016 at 3:23 PM, Dan Lüdtke <mail at danrl.com> wrote:
>
>> Hi,
>>
>> I am working on a Jool package for LEDE and I am having trouble building
>> the user space binaries for Jool SIIT/NAT64. It is missing `argp` AFAIK.
>>
>> > ../common/jool-jool.o: In function `main':
>> > jool.c:(.text.startup+0x89): undefined reference to `argp_parse'
>> > collect2: error: ld returned 1 exit status
>> > Makefile:504: recipe for target 'jool' failed
>> > make[6]: *** [jool] Error 1
>>
>> However, my build depends on argp-standalone and I also added argp to the
>> EXTRA_CFLAGS (and out of desperation also to EXTRA_LDFLAGS).
>>
>> This affects the toolchain using musl. If the toolchain uses glibc the
>> packet builds just fine.
>>
>> Can someone please help me spot the mistake?
>> I am also not very confident that I understood how the LEDE build system
>> invokes ./configure and automake, any hints there are appreciated, too.
>>
>> Cheers!
>>
>> Dan
>>
>> Build Log: https://paste.fedoraproject.org/494383/14805388/
>> Makefile:  https://paste.fedoraproject.org/494385/05389191/
>>
>>
>> ==Build log==
>> Also here: https://paste.fedoraproject.org/494383/14805388/
>>
>> x86_64-openwrt-linux-musl-gcc -DPACKAGE_NAME=\"Jool\"
>> -DPACKAGE_TARNAME=\"jool\" -DPACKAGE_VERSION=\"3.5.1\"
>> -DPACKAGE_STRING=\"Jool\ 3.5.1\" -DPACKAGE_BUGREPORT=\"jool at nic.mx\"
>> -DPACKAGE_URL=\"\" -DPACKAGE=\"jool\" -DVERSION=\"3.5.1\" -DSTDC_HEADERS=1
>> -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1
>> -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1
>> -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 -DHAVE_ARPA_INET_H=1 -DHAVE_STDLIB_H=1
>> -DHAVE_STRING_H=1 -DHAVE_UNISTD_H=1 -DHAVE__BOOL=1 -DHAVE_INET_NTOA=1
>> -DHAVE_MEMSET=1 -DHAVE_STRCASECMP=1 -DHAVE_STRTOL=1 -I.    -Wall -O2
>> -I./../../include -I/home/danrl/lede/nat64/sourc
>> e/staging_dir/target-x86_64_musl-1.1.15/usr/include/libnl3   -MT
>> ../common/target/jool-session.o -MD -MP -MF
>> ../common/target/.deps/jool-session.Tpo -c -o
>> ../common/target/jool-session.o `test -f '../common/target/session.c' ||
>> echo './'`../common/target/session.c
>> mv -f ../common/target/.deps/jool-session.Tpo
>> ../common/target/.deps/jool-session.Po
>> x86_64-openwrt-linux-musl-gcc -Wall -O2 -I./../../include
>> -I/home/danrl/lede/nat64/source/staging_dir/target-x86_64_
>> musl-1.1.15/usr/include/libnl3     -o jool ../../common/netlink/jool-config.o
>> ../../common/stateful/jool-xlat.o ../common/jool-cJSON.o
>> ../common/jool-dns.o ../common/jool-file.o ../common/jool-jool.o
>> ../common/jool-netlink2.o ../common/jool-str_utils.o
>> ../common/argp/jool-options.o ../common/nl/jool-buffer.o
>> ../common/target/jool-bib.o ../common/target/jool-eam.o
>> ../common/target/jool-global.o ../common/target/jool-instance.o
>> ../common/target/jool-joold.o ../common/target/jool-json.o
>> ../common/target/jool-log_time.o ../common/target/jool-pool.o
>> ../common/target/jool-pool4.o ../common/target/jool-pool6.o
>> ../common/target/jool-session.o -L/home/danrl/lede/nat64/sourc
>> e/staging_dir/target-x86_64_musl-1.1.15/usr/lib -lnl-genl-3 -lnl-3
>> -lpthread -lm
>> ../common/jool-jool.o: In function `main':
>> jool.c:(.text.startup+0x89): undefined reference to `argp_parse'
>> collect2: error: ld returned 1 exit status
>> Makefile:504: recipe for target 'jool' failed
>> make[6]: *** [jool] Error 1
>> make[6]: Leaving directory '/home/danrl/lede/nat64/source
>> /build_dir/target-x86_64_musl-1.1.15/jool-a37b795993c59fb246
>> e93ada49d0ead0775daa69/usr/stateful'
>> Makefile:345: recipe for target 'all-recursive' failed
>> make[5]: *** [all-recursive] Error 1
>> make[5]: Leaving directory '/home/danrl/lede/nat64/source
>> /build_dir/target-x86_64_musl-1.1.15/jool-a37b795993c59fb246
>> e93ada49d0ead0775daa69/usr'
>> Makefile:124: recipe for target '/home/danrl/lede/nat64/source
>> /build_dir/target-x86_64_musl-1.1.15/jool-a37b795993c59fb246e93ada49d0ead0775daa69/.built'
>> failed
>> make[4]: *** [/home/danrl/lede/nat64/source/build_dir/target-x86_64_musl-
>> 1.1.15/jool-a37b795993c59fb246e93ada49d0ead0775daa69/.built] Error 2
>> make[4]: Leaving directory '/home/danrl/lede/nat64/source
>> /feeds/sixfw/net/jool'
>> package/Makefile:127: recipe for target 'package/feeds/sixfw/jool/compile'
>> failed
>> make[3]: *** [package/feeds/sixfw/jool/compile] Error 2
>> make[3]: Leaving directory '/home/danrl/lede/nat64/source'
>> package/Makefile:124: recipe for target '/home/danrl/lede/nat64/source
>> /staging_dir/target-x86_64_musl-1.1.15/stamp/.package_compile' failed
>> make[2]: *** [/home/danrl/lede/nat64/source/staging_dir/target-x86_64_
>> musl-1.1.15/stamp/.package_compile] Error 2
>> make[2]: Leaving directory '/home/danrl/lede/nat64/source'
>> /home/danrl/lede/nat64/source/include/toplevel.mk:194: recipe for target
>> 'world' failed
>> make[1]: *** [world] Error 2
>> make[1]: Leaving directory '/home/danrl/lede/nat64/source'
>> Makefile:29: recipe for target 'verbose' failed
>> make: *** [verbose] Error 2
>>
>>
>> ==Makefile==
>> Also here: https://paste.fedoraproject.org/494385/05389191/
>>
>> #
>> # Copyright (C) 2016 Dan Luedtke <mail at danrl.com>
>> #
>> # This is free software, licensed under the GNU General Public License v2.
>> # See /LICENSE for more information.
>>
>> include $(TOPDIR)/rules.mk
>>
>> PKG_NAME:=jool
>> PKG_VERSION:=3.5.1
>> PKG_RELEASE:=1
>>
>> PKG_LICENSE:=GPL-3.0
>> PKG_LICENSE_FILES:=COPYING
>>
>> PKG_SOURCE_PROTO:=git
>> PKG_SOURCE_URL:=https://github.com/sixfw/Jool.git
>> PKG_SOURCE_VERSION:=a37b795993c59fb246e93ada49d0ead0775daa69
>> PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_SOURCE_VERSION)
>> PKG_SOURCE:=$(PKG_NAME)-$(PKG_SOURCE_VERSION).tar.gz
>> PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_SOURCE_SUBDIR)
>> PKG_BUILD_PARALLEL:=1
>> PKG_BUILD_DEPENDS:=+argp-standalone
>> PKG_AUTOMAKE_PATHS:=usr
>> PKG_FIXUP:=autoreconf
>> MAKE_PATH:=usr
>>
>> # does not work
>> #EXTRA_CFLAGS:=-largp-standalone
>> #EXTRA_LDFLAGS:=-largp-standalone
>>
>> # does not work either
>> EXTRA_CFLAGS:=-largp
>> EXTRA_LDFLAGS:=-largp
>>
>> include $(INCLUDE_DIR)/kernel.mk
>> include $(INCLUDE_DIR)/package.mk
>>
>> define Package/jool/Default
>>         SECTION:=net
>>         CATEGORY:=Network
>>         URL:=https://www.jool.mx
>>         MAINTAINER:=Dan Luedtke <mail at danrl.com>
>> endef
>>
>> define Package/jool/Default/description
>>         Jool is an Open Source SIIT and NAT64 for Linux.
>> endef
>>
>> define Package/jool
>>         $(call Package/jool/Default)
>>         TITLE:=Jool meta-package
>>         DEPENDS:=+kmod-jool +jool-tools
>> endef
>>
>> define Package/jool/description
>>         $(call Package/jool/Default/description)
>> endef
>>
>> include $(INCLUDE_DIR)/kernel-defaults.mk
>> include $(INCLUDE_DIR)/package-defaults.mk
>>
>> define KernelPackage/jool
>>         SECTION:=kernel
>>         CATEGORY:=Kernel modules
>>         SUBMENU:=Network Support
>>         TITLE:=Jool kernel module
>>         DEPENDS:= \
>>                 @IPV6 \
>>                 +kmod-crypto-md5 \
>>                 +kmod-nf-conntrack \
>>                 +kmod-nf-conntrack6
>>         FILES:= \
>>                 $(PKG_BUILD_DIR)/mod/stateful/jool.$(LINUX_KMOD_SUFFIX) \
>>                 $(PKG_BUILD_DIR)/mod/stateless/jool_siit.$(LINUX_KMOD_
>> SUFFIX)
>> endef
>>
>> define KernelPackage/jool/description
>>         $(call Package/jool/Default/description)
>>
>>         This package provides the kernel module for Jool.
>> endef
>>
>> define Package/jool-tools
>>         $(call Package/jool/Default)
>>         TITLE:=Jool userspace control programs
>>         DEPENDS:=+libnl +ethtool
>> endef
>>
>> define Package/jool-tools/description
>>         $(call Package/jool/Default/description)
>>
>>         This package provides the userspace control programs for Jool.
>> endef
>>
>> define Package/jool-tools/install
>>         $(INSTALL_DIR) $(1)/usr/sbin/
>>         $(INSTALL_BIN) $(PKG_BUILD_DIR)/usr/stateful/jool
>>  $(1)/usr/sbin/
>>         $(INSTALL_BIN) $(PKG_BUILD_DIR)/usr/stateless/jool_siit
>> $(1)/usr/sbin/
>> endef
>>
>> define Build/Configure
>>         ( cd $(PKG_BUILD_DIR)/usr; ./configure )
>> endef
>>
>> define Build/Compile
>>         $(MAKE) -C "$(LINUX_DIR)" \
>>                 KERNEL_DIR="$(LINUX_DIR)" \
>>                 ARCH="$(LINUX_KARCH)" \
>>                 CROSS_COMPILE="$(TARGET_CROSS)" \
>>                 SUBDIRS="$(PKG_BUILD_DIR)/mod/stateful" \
>>                 V="$(V)" \
>>                 modules
>>         $(MAKE) -C "$(LINUX_DIR)" \
>>                 KERNEL_DIR="$(LINUX_DIR)" \
>>                 ARCH="$(LINUX_KARCH)" \
>>                 CROSS_COMPILE="$(TARGET_CROSS)" \
>>                 SUBDIRS="$(PKG_BUILD_DIR)/mod/stateless" \
>>                 V="$(V)" \
>>                 modules
>>         $(call Build/Compile/Default)
>> endef
>>
>> $(eval $(call BuildPackage,jool))
>> $(eval $(call KernelPackage,jool))
>> $(eval $(call BuildPackage,jool-tools))
>>
>> _______________________________________________
>> Jool-list mailing list
>> Jool-list at nic.mx
>> https://mail-lists.nic.mx/listas/listinfo/jool-list
>>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail-lists.nic.mx/pipermail/jool-list/attachments/20161130/daa2354a/attachment.html>


More information about the Jool-list mailing list