2011-06-08 145 views
16

我有一個.spec文件,它依賴於一個名爲_topdir的變量。構建RPM時,如何使_topdir相對於.spec文件的位置?

現在,當您從git簽出SRPM源代碼時,您必須去更改_topdir指向的位置,以使rpmbuild正常運行。

# We need the following line so that RPM can find the BUILD and SOURCES and RPMS dirs. 
%define _topdir /root/projects/my-project/my-project-srpm/ 

你如何指定讓_topdir沒有硬編碼_topdir應該是相對於.spec文件的位置?

+0

這看起來像一個可怕的spec文件。對於初學者來說,它看起來好像是在由正在尋求麻煩的root構建的。項目的結構是什麼樣的?更好的是,這是公共的git回購嗎? – linuts 2011-06-13 12:20:03

+0

該行必須被編輯指向我從git中檢出的任何地方,我怎樣才能使它在我不需要編輯該行的地方每次我檢查到與版本控制不同的地方 – 2011-06-13 15:02:31

+0

什麼是該項目的結構看起來像? – linuts 2011-06-13 16:53:11

回答

-3

在你的〜/ .rpmmacros文件,這樣做:

%_topdir  %(echo $PWD)/subdir 

我不確定,如果你能做到這一點的規範文件本身裏面,我不明白爲什麼不能,但我不確定如何通知它。

+0

這個答案只是移動什麼文件,我必須編輯,取決於我在哪裏檢查代碼。我不想編輯一個文件來指向永遠不同的地方我檢出要構建的源代碼rpm – 2011-06-24 15:12:09

18

指定,像這樣在命令行上TOPDIR ...

rpmbuild --define "_topdir \`pwd\`" ... 
+0

其中是指定的--define參數?我無法在手冊中找到它,甚至只是在Google上搜索。 – caspian311 2014-07-03 15:26:41

+0

@ caspian311嗯。看起來像'--define'選項被刪除了。也許可以使用'--root'代替。看看http://www.rpm.org/max-rpm-snapshot/rpmbuild.8.html – 2014-07-14 06:03:36

+1

- 定義仍然有效,但它不在手冊頁 – 2017-10-05 10:18:49

10

您可以在規範文件中定義_topdir變量(例如,在頂部)

%define _topdir %(echo $PWD)/ 
+1

使用'pwd'的答案不滿足所述的OP要求 - 沒有保證環境pwd是spec文件的位置 – 2016-03-23 21:26:34

相關問題