Make:从工作目录名称中提取数字(Debian打包规则)

时间:2011-12-06 17:20:01

标签: debian gnu-make deb

我想帮助解决以下问题:

我每天都使用Launchpad的Recipes功能构建一个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

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

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

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

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

如果您唯一需要的是修订号(在您的示例中为5066),则可以按如下方式提取:

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