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 和 Automake 的依赖项引入到您的构建中。
@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,一切顺利。
我一直在寻找,但找不到答案。 我目前正在研究 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 和 Automake 的依赖项引入到您的构建中。
@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,一切顺利。