【问题标题】:Make: Extracting a number from working directory name (Debian packaging rules)Make:从工作目录名称中提取数字(Debian 打包规则)
【发布时间】:2011-12-06 17:20:01
【问题描述】:

我需要一些帮助来解决以下问题:

我有一个每天使用 Launchpad 的食谱功能构建的 debian 软件包。版本名称(和源目录的名称)是自动生成的,包括当前的修订号。我想修改 debian/rules 文件以提取修订号并将其传递给 CMake。

到目前为止它不起作用 - 似乎将一个空字符串传递给 CMake。我不知道问题出在我的 make 代码中还是其他原因。

规则文件:

#!/usr/bin/make -f

# Uncomment this to turn on verbose mode.
export DH_VERBOSE=1

%:
    dh $@ --parallel --list-missing

# Try to detect the Bazaar revision number from the directory name
ifneq ($(findstring bzr,$(PWD)),)
COMPONENTS := $(PWD)
COMPONENTSL := $(subst -,' ',COMPONENTS)
COMPONENTSLL := $(subst ~,' ',COMPONENTSL)
BZRVER := $(filter bzr%,COMPONENTSLL)
BZRVERN := $(subst bzr,,$(BZRVER))
override_dh_auto_configure:
    dh_auto_configure -- -DRELEASE_BUILD=0 -DBZR_REVISION=$(BZRVERN)
endif

构建日志的相关部分:

make[1]: Entering directory `/build/buildd/stellarium-0.11.2~bzr5066'
dh_auto_configure -- -DRELEASE_BUILD=0 -DBZR_REVISION=
    mkdir -p obj-i686-linux-gnu
    cd obj-i686-linux-gnu
    cmake .. -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_VERBOSE_MAKEFILE=ON -DRELEASE_BUILD=0 -DBZR_REVISION=

完整的日志在这里: https://launchpadlibrarian.net/86783083/buildlog_ubuntu-natty-i386.stellarium_0.11.2~bzr5066-0ubuntu0~natty1_BUILDING.txt.gz

有什么想法吗?

【问题讨论】:

    标签: debian gnu-make deb


    【解决方案1】:

    至少在这些方面你犯了一个错误:

    COMPONENTSL := $(subst -,' ',COMPONENTS)
    COMPONENTSLL := $(subst ~,' ',COMPONENTSL)
    BZRVER := $(filter bzr%,COMPONENTSLL)
    

    您必须对COMPONENTSXX 变量的实际值进行更改,因此它们的名称应包含在$(...) 中。

    如果您只需要修订号(在您的示例中为 5066),则可以提取如下:

    BZR_REVISION := $(lastword $(subst ~bzr, ,$(PWD)))
    

    【讨论】:

    • 明显的侮辱,不是吗? :)
    • 除此之外,在空格周围使用单引号会在结果字符串中插入它们和空格。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-09-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-11
    • 2022-06-12
    • 1970-01-01
    相关资源
    最近更新 更多