介绍
我有一个源码包(使用 下载apt source ...
),我想使用它来探索标签在代码编辑器中。执行此操作的标准方法是试运行由构建系统生成的 makefile,以便rtags
它可以使用这些命令(重新)构建其上下文源代码导航和自动完成数据库。
问题
通常情况下,我只需要autogen
/ autoconf
/configure
来获取一个 makefile,然后使用它来空运行构建make -nk
。
但是,由于我正在使用 Debian 软件包,因此我需要使用 Debian 特定的配置命令dpkg-buildpackage
或dpkg-source
以便源代码导航反映官方构建中使用的相同构建选项。
我查看了buildpackage
手册页,但找不到任何可以在此./configure
步骤之后、在执行任何实际构建命令之前停止构建的选项。虽然它做有--build=source
(-S
)选项,但它并没有按照我的要求运行:它应用了 Ubuntu 特定的补丁,然后停止前运行automake
/ configure
。这是不可接受的,因为我还希望执行automake
/步骤。configure
问题
如何dpkg-buildpackage
在运行之后autogen
但automake
在configure
运行之前停止make
?
建议的方法应该适用于dnsutils
源包。
答案1
如果您查看dpkg-buildpackage
手册页,您会发现它没有区分configure
步骤和make
步骤 - 就它而言,有一个build
步骤和一个binary
步骤。虽然./configure; make; make install
很常见,但它并没有被认定为唯一真正的构建方法dpkg-buildpackage
;它留给debian/rules
根据需要调用适当的操作。
在 的特定情况下dnsutils
,或者更确切地说bind
,debian/rules
似乎是高度手动的(即使它调用了许多 debhelper 实用程序,它也不依赖于 debhelper 的自动化)。因此,在这里,最简单的方法是利用 中的目标debian/rules
:
$ debian/rules stamps/configure
dh_testdir
if [ ! -d autoreconf-bck ]; then \
mkdir autoreconf-bck; \
cp -pr config.h.in configure libtool.m4 ltmain.sh autoreconf-bck; \
fi
cp -r bin/named bin/named-pkcs11
cp -r bin/dnssec bin/dnssec-pkcs11
cp -r lib/isc lib/isc-pkcs11
cp -r lib/dns lib/dns-pkcs11
patch -p1 < debian/patches/extra-add_native_pkcs11.diff
patching file bin/dnssec-pkcs11/Makefile.in
patching file bin/named-pkcs11/Makefile.in
...
========================================================================
Configuration summary:
------------------------------------------------------------------------
Optional features enabled:
Multiprocessing support (--enable-threads)
GeoIP access control (--with-geoip)
GSS-API (--with-gssapi)
Native PKCS#11/Cryptoki support (--enable-native-pkcs11)
Provider library: ${prefix}/lib/x86_64-linux-gnu/softhsm/libsofthsm2.so
GOST algorithm support (encoding: raw) (--with-gost)
ECDSA algorithm support (--with-ecdsa)
AAAA filtering (--enable-filter-aaaa)
Print backtrace on crash (--enable-backtrace)
Use symbol table for backtrace, named only (--enable-symtable)
Use GNU libtool (--with-libtool)
Dynamically loadable zone (DLZ) drivers:
None
Features disabled or unavailable on this platform:
Large-system tuning (--with-tuning)
Recursive fetch limits for DoS attack mitigation (--enable-fetchlimit)
Source Identity Token support (--enable-sit)
Allow 'fixed' rrset-order (--enable-fixed-rrset)
OpenSSL cryptography/DNSSEC (--with-openssl)
Use libseccomp system call filtering (--enable-seccomp)
Very verbose query trace logging (--enable-querytrace)
Automated Testing Framework (--with-atf)
JSON statistics (--with-libjson)
Unrecognized options:
--enable-rrl
========================================================================
touch stamps/configure
如果它使用 debhelper dh_auto_configure
,另一种方法就是覆盖dh_auto_configure
它,debian/rules
以使其后的构建过程失败。
一般来说,dpkg-buildpackage
对 一无所知configure
,因此没有办法停在那里。