2012-07-23 24 views
6

我對cygport包中源代碼的結構有疑問。如何從CygPort建立src?

這裏是一個Cygports源文件的內容:

  • 爲項目(tar.gz的,TAR.BZ2等)
  • 的任何數量的* .patch文件實際的源代碼包。
  • 一個.cygport文件

我試圖建立從cygports庫的gedit-3.4.2。

.cygport文件如何幫助我在./configure中運行適當的選項?

例如,在gedit中,如果我沒有指定--disable-spell,它將不會由於錯誤而繼續。如何獲得構建cygport時用於構建項目的./configure選項列表?

有什麼辦法可以使用cygport可執行文件來構建cygport並更改前綴嗎?

這裏是gedit-3.4.2-1.cygport內容:從Cygwin的ports郵件列表

inherit python gnome2 

DESCRIPTION="GNOME text editor" 

PATCH_URI="3.4.2-cygwin.patch" 

DEPEND="gnome-common gtk-doc 
    girepository(Gtk-3.0) 
    pkgconfig(enchant) 
    pkgconfig(gtksourceview-3.0) 
    pkgconfig(libpeas-gtk-1.0)" 

PKG_NAMES="${PN} ${PN}-devel" 
PKG_HINTS="setup devel" 
gedit_CONTENTS="--exclude=gtk-doc --exclude=libgedit* etc/ usr/bin/ usr/lib/gedit/ ${PYTHON_SITELIB#/} usr/share/" 
gedit_devel_CONTENTS="usr/include/ usr/lib/gedit/libgedit* usr/lib/pkgconfig/ usr/share/gtk-doc/" 

DIFF_EXCLUDES="*.desktop.in *.schemas.in *-marshal.h" 

CYGCONF_ARGS="--libexecdir=/usr/lib --enable-python" 

KEEP_LA_FILES="none" 

編輯有人說:

「配置選項是

--libexecdir=/usr/lib --enable-python 

這是從CYGCONF_ARGS。 「

回答

16

這裏是一個Cygports源文件的內容:

你會做更好的把它看作一個Cygwin的包的源文件。

cygport只是一個用於自動創建Cygwin二進制和源代碼包的工具。它是可用的主要工具,但與其他一些包裝系統不同,實際上並沒有任何東西強迫您使用它。完全可以手工構建一個Cygwin包,因爲Cygwin的setup.exe實際上只是一個解壓到Cygwin根目錄(通常爲c:\cygwin)的壓縮包,並且期望這會將包的文件放在合理的位置。

cygport之前,人們確實建立了自己的特設的包裝系統。許多Cygwin包維護者仍然使用他們創建的這些工具。 (此致包括;二是我三個包的使用cygport,但第三仍然採用了自定義生成系統。)

最後,你想讀的cygport說明書,/usr/share/doc/cygport/manual.html

(是的,我知道,「RTFM」的答案在這裏皺起了眉頭。但是,作爲一個誰目前維持兩個cygport基於包在官方Cygwin包庫,請相信我,當我告訴你,手動還是這個主題提供的最好的資源。)

如何進行。 cygport文件幫助我在./configure中運行正確的選項?

當你通過其他資源的發現,你首先需要在.cygport文件編輯CYGCONF_ARGS值。

之後最簡單的步驟是cygport gedit-3.4.2-1.cygport all。這試圖在一個步驟中重建所有的二進制包。它還構建了一個新的源包,包含更新的.cygport和補丁文件。

如果all構建過程中出現問題,切換到使用all包含的子命令通常會更快,而不是完全重新啓動該過程。 all步驟僅爲您運行prep,compile,install,packagefinish。例如,如果all在編譯步驟中失敗,則可能不需要重複步驟prep

(這是cygport或一個健全的構建系統非常少見,破壞構建樹,迫使你重新運行prep,遠遠更常見的是,你最終需要重新做prep當你手動沉船建立樹,同時試圖獲得一個新的包第一次建立,需要重新開始。)

例如,在gedit中,如果我沒有指定--disable-spell它不會繼續到期錯誤。

你或許可以修復由官方Cygwin包庫與setup.exe安裝libaspell-devel包。我個人不會禁用任何功能,除非它意味着安裝非官方軟件包,例如Cygwin Ports項目中的軟件包。[*] Cygwin Ports存儲庫很好,但是因爲它包含了很多軟件包,所以安裝了一個可能會導致創建一個「安裝世界」的情況:程序包A依賴於程序包B,C和D,而C依賴於E,F,G,H和G,這取決於I,J,K和...依賴項Cygwin軟件包回購協議中的層次結構比Cygports回購協議中的層次結構更扁平和更窄。

有什麼方法可以使用cygport可執行文件來構建cygport並更改前綴嗎?

你已經猜到你只是加--prefix=/my/private/program/treeCYGCONF_ARGS,我相信。


[*]如果你感到困惑「的Cygwin端口」和cygport,命名相似並非巧合。 cygport是Yaakov Selkowitz在創建Cygwin Ports軟件包存儲庫時爲自己創建的工具。後來,它在其他Cygwin軟件包維護者中變得非常流行,它推出了大部分競爭的構建系統。

+1

真的很棒的答案。已經使用過5次了。 – 2013-07-01 20:05:23