buildroot 使用 autotools 从 github 添加包

buildroot add package from github with autotools

我一直在寻找,但找不到答案。 我目前正在研究 buildroot,它一直很棒,直到这个。

我正在尝试将 Coova Chilli 添加为一个程序包。

这是我的 .mk 文件。

#############################################################
#
# coovachilli
#
#############################################################
COOVACHILLI_VERSION = 1.4
COOVACHILLI_SOURCE = $(COOVACHILLI_VERSION).tar.gz
COOVACHILLI_SITE = https://github.com/coova/coova-chilli/archive
COOVACHILLI_INSTALL_STAGING = YES
COOVACHILLI_INSTALL_TARGET = NO
COOVACHILLI_CONF_OPTS = --prefix=/usr --libdir=/usr/lib --localstatedir=/var --sysconfdir=/etc --enable-miniportal --with-openssl --enable-libjson --enable-useragent --enable-sessionstate --enable-sessionid --enable-chilliredir --enable-binstatusfile --enable-statusfile --disable-static --enable-shared --enable-largelimits --enable-proxyvsa --enable-chilliproxy --enable-chilliradsec --with-poll  --enable-dhcpopt --enable-sessgarden --enable-ipwhitelist --enable-redirdnsreq --enable-miniconfig --enable-layer3 --enable-chilliscript --enable-eapol --enable-uamdomainfile --enable-modules --enable-multiroute
COOVACHILLI_DEPENDENCIES = openssl make libtool


$(eval $(autotools-package))

一直在学习一些教程以及 this one

但是无论我做什么,包含这个包我总是以:
/bin/bash: ./configure: No such file or directory

我试过取消选择这个包,make成功了。
我卡在 >>> coovachilli 1.4 Configuring 那个错误部分。

我检查了 buildroot > dl 文件夹,可以看到它成功下载了文件。
同样在 buildroot > output > build 上,我可以看到 coovachilli-1.4 文件夹,里面有文件。

But whatever I do, with this package included I always end up with:

/bin/bash: ./configure: No such file or directory

这似乎是因为您使用的 tarball 确实不包含 configure 脚本。该项目的 GitHub 源存储库和从那里可用的发布 tarball 不包含一个,也不包含其他各种 Autotools 生成的文件,而是提供一个“bootstrap”脚本,该脚本 运行 是 Autotools生产它们。

该方法遵循不将派生文件提交到源存储库的理念,但这是对 Autotools 的一种有点简单的分析,因为

  • Autotools 的一个关键设计点是它们是包维护者的工具,而不是为那些只想构建包的人准备的工具。 运行 Autotools 不打算成为构建过程的正常部分。

  • 因此,基于 Automake 的构建系统构建的分发包确实包含构成构建系统的所有生成文件。期望您将基于 Autotools 的分发包交给他们的第三方工具期望包含这些工具是正确的。

  • 此外,Autotools 生成的脚本和其他文件比生成它们的 Autotools 输入文件更具可移植性。特别是,Autotools 输入并不总是与不同版本的 Autotools 完全兼容,而不是为它们编写的。

无论如何,假设您使用 GitHub 提供的 tarball,您需要 运行 bootstrap 脚本在解压和启动到 configure 之间。请注意,从 buildroot 的角度来看,这会将(至少)Autoconf 和 A​​utomake 的依赖项引入到您的构建中。

@John 的回答让我走上了正确的道路。另外,我接受他的回答。

#############################################################
#
# coovachilli
#
#############################################################
COOVACHILLI_VERSION = 1.4
COOVACHILLI_SOURCE = $(COOVACHILLI_VERSION).tar.gz
COOVACHILLI_SITE = https://github.com/coova/coova-chilli/archive
COOVACHILLI_INSTALL_TARGET = YES
COOVACHILLI_CONF_OPTS = --prefix=/usr --libdir=/usr/lib --localstatedir=/var --sysconfdir=/etc --enable-miniportal --with-openssl --enable-libjson --enable-useragent --enable-sessionstate --enable-sessionid --enable-chilliredir --enable-binstatusfile --enable-statusfile --disable-static --enable-shared --enable-largelimits --enable-proxyvsa --enable-chilliproxy --enable-chilliradsec --with-poll  --enable-dhcpopt --enable-sessgarden --enable-ipwhitelist --enable-redirdnsreq --enable-miniconfig --enable-layer3 --enable-chilliscript --enable-eapol --enable-uamdomainfile --enable-modules --enable-multiroute
COOVACHILLI_DEPENDENCIES = openssl make libtool

define COOVACHILLI_PRE_CONFIGURE_BOOTSTRAP
    cd $(@D)/ && ./bootstrap

endef

COOVACHILLI_PRE_CONFIGURE_HOOKS += COOVACHILLI_PRE_CONFIGURE_BOOTSTRAP

$(eval $(autotools-package))

我只需添加 PRE_CONFIGURE_HOOKS 即可调用 bootstrap,一切顺利。