运行 configure 后如何让 dpkg-buildpackage 停止?

运行 configure 后如何让 dpkg-buildpackage 停止?

介绍

我有一个源码包(使用 下载apt source ...),我想使用它来探索标签在代码编辑器中。执行此操作的标准方法是试运行由构建系统生成的 makefile,以便rtags它可以使用这些命令(重新)构建其上下文源代码导航和自动完成数据库。

问题

通常情况下,我只需要autogen/ autoconf/configure来获取一个 makefile,然后使用它来空运行构建make -nk

但是,由于我正在使用 Debian 软件包,因此我需要使用 Debian 特定的配置命令dpkg-buildpackagedpkg-source以便源代码导航反映官方构建中使用的相同构建选项。

我查看了buildpackage手册页,但找不到任何可以在此./configure步骤之后、在执行任何实际构建命令之前停止构建的选项。虽然它--build=source-S)选项,但它并没有按照我的要求运行:它应用了 Ubuntu 特定的补丁,然后停止运行automake/ configure。这是不可接受的,因为我还希望执行automake/步骤。configure

问题

如何dpkg-buildpackage在运行之后autogenautomakeconfigure运行之前停止make

建议的方法应该适用于dnsutils源包。

答案1

如果您查看dpkg-buildpackage手册页,您会发现它没有区分configure步骤和make步骤 - 就它而言,有一个build步骤和一个binary步骤。虽然./configure; make; make install很常见,但它并没有被认定为唯一真正的构建方法dpkg-buildpackage;它留给debian/rules根据需要调用适当的操作。

在 的特定情况下dnsutils,或者更确切地说binddebian/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,因此没有办法停在那里。

相关内容